TDE 14.0.0 prerequisiti

Benvenuti nella pagina Wiki di Simone Giustetti.


Lingue: English - Italiano


Prerequisiti

Trinity Desktop Environment 14.0.0

I pacchetti raggruppati sotto il nome generico Prerequisiti includono tutte le librerie base utilizzate dall'ambiente desktop ed alcuni componenti addizionali necessari per attivare funzionalità avanzate. Le librerie base includono ovviamente TQt3, la versione di Qt sviluppata e supportata dal progetto Trinity, tqtinterface, libreria che aggiunge un livello di astrazione tra TQt e TDE, arts, il gestore per gli effetti ed i flussi sonori in TDE, dbus-tqt e dbus-1-tqt, che collegano l'ambiente desktop al sottosistema di gestione dello hardware. Le rimanenti librerie: avahi-tqt, libart-lgpl, libcaldav, libcarddav, python-tqt, sip4-tqt, tqca, tqca-tls e tqscintilla sono opzionali. L'ambiente può essere compilato senza di esse rinunciando ad alcune utili funzionalità.

Sistema di Compilazione

Uno degli obiettivi del progetto Trinity consiste nel migrare il sistema di compilazione dei pacchetti da autotools a cmake. Una migrazione ancora in corso, conclusa solo per una parte dei pacchetti elencati in precedenza. Segue l'elenco dei pacchetti ed il sistema di compilazione adottato per ciascuno di essi:

SISTEMA DI COMPILAZIONE
Pacchetto Tipologia di Pacchetto Sistema
arts Base Cmake
avahi-tqt Opzionale Autotools
dbus-1-tqt Base Cmake
dbus-tqt Base Cmake
libart-lgpl Opzionale Autotools
libcaldav Opzionale Autotools
libcarddav Opzionale Autotools
python-tqt Opzionale Script configure.py
Richiede un interprete Python
sip4-tqt Opzionale Script configure.py
Richiede un interprete Python
tqca Opzionale Autotools
tqca-tls Opzionale Autotools
tqscintilla Opzionale Script qscintilla.pro per qmake
Richiede che siano installate le librerie TQt3
tqt3 Base Autotools
tqtinterface Base Cmake

Da cui emerge l'esigenza di avere almeno quattro modelli per lo script di compilazione. La struttura dei modelli sarà per quanto possibile uniforme, ma sicuramente interverranno differenze nella invocazione del processo di compilazione sia per l'impiego di un diverso sistema di compilazione, sia per la presenza di opzioni specifiche per ogni pacchetto. Di seguito verrà descritta la struttura generica di uno script SlackBuild, le opzioni generali ed infine quelle specifiche per ogni pacchetto.

Struttura di uno Script

Gli script per la versione 3.5.13.2 di TDE (Prerequisiti) sono stati modificati ed aggiornati per l'ultimo rilascio. La struttura è rimasta pressochè invariata:

  • Introduzione in cui viene descritto lo scopo del file e la licenza d'uso.
  • Caricamento dei file esterni contenenti i parametri di compilazione globali e quelli locali:
   if [ -r ../../TDE.options ]; then
      . ../../TDE.options
   fi
   PREFIX_TDE=${PREFIX}
   if [ -r ./local.options ]; then
      . ./local.options
   fi
  • Impostazione delle variabili globali dello script:
   ARCHIVE_FORMAT=${ARCHIVE_FORMAT:-"tar.bz2"}
   BUILD=${BUILD:-"1"}
   LD_LIBRARY_PATH=""  # Will be defined later on
   PRGNAM="tqtinterface"
   PREFIX=${PREFIX:-"/usr"}
   MANDIR=${MANDIR:-${PREFIX}/man}
   SOURCE_SUBDIR=${SOURCE_SUBDIR:-"dependencies"}
   SRCVER=${SRCVER:-"R14.0.0"}
   TAG=${TAG:-"sg"}
   TAR_OPTION=${TAR_OPTION:-"-xjvf"}
   VERSION=$(echo ${SRCVER} | tr '-' '.')
   
   DOCS="AUTHORS COPYING HOW.TO.BUILD NAMING README TODO TRINITY.RELEASE tqtinterface.lsm"
Sono state aggiunte variabili rispetto alla versione 3.5.13.2 quali il formato dell'archivio e le opzioni da passare al programma tar. Si spera che queste possano semplificare il processo di compilazione una volta stabilizzato il formato con cui viene rilasciato il codice sorgente.
  • Determinazione dell'architettura per cui si compila il pacchetto ed impostazione dei parametri per il compilatore, il linker, le librerie, ecc.:
   if [ -z "${MARCH}" ]; then
      MARCH=`uname -m`
   fi
   if [ -z "${ARCH}" ]; then
      case "${MARCH}" in
         i?86)
            export ARCH=i486
         ;;
         arm*)
            export ARCH=arm
         ;;
         *)
            export ARCH=${MARCH}
         ;;
      esac
   fi
Il codice è stato aggiornato rispetto alla versione precedente in modo da usare i valori impostati attraverso i parametri globali consentendo l'uso degli script anche per ambienti in chroot.
  • Creazione delle directory utilizzate durante la procedura:
   mkdir -p ${TMP}/tmp-${PRGNAM}  # Location to build the source
   rm -rf ${TMP}/tmp-${PRGNAM}/*  # Remove the remnants of previous build and continue
   mkdir -p ${PKG}                # Place for the package to be built
   rm -rf ${PKG}/*                # We always erase old package's contents
   mkdir -p ${OUTPUT}             # Place for the package to be saved
  • Assegnazione dei permessi ai file:
   chown -R root:root .
   find . \
   \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
   -exec chmod 755 {} \; -o \
   \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
   -exec chmod 644 {} \;
  • Configurazione, compilazione ed installazione del pacchetto.
  • Aggiunta di documentazione, link, file di esempio e tutto quanto serva a rendere funzionale il pacchetto:
   mkdir -p ${PKG}/usr/doc/${PRGNAM}"-"$VERSION
   cp -a ${DOCS} ${PKG}/usr/doc/${PRGNAM}"-"${VERSION}
   chown -R root:root ${PKG}/usr/doc/${PRGNAM}"-"${VERSION}
   find ${PKG}/usr/doc -type f -exec chmod 644 {} \;
   
   # Add a package description.
   mkdir -p ${PKG}/install
   cat ${SRCDIR}/slack-desc > ${PKG}/install/slack-desc
   
   # Set sane permissions for the include files.
   if [ -d ${PKG}/${PREFIX}/include ]; then
      find ${PKG}/${PREFIX}/include -type f -exec chmod 0644 {} \;
   fi
  • Creazione del pacchetto.

Opzioni Generali

Le opzioni di compilazione generiche varieranno solo in funzione del sistema di compilazione adottato. Per i pacchetti che utilizzano Autotools le fasi consistono in:

  • Ricostruzione dei file utilizzati da Autoconf / Automake:
   cp -Rp /usr/share/aclocal/libtool.m4 <pkg_path_build>/admin/libtool.m4.in
   cp -Rp <path to your systems ltmain.sh file> admin/ltmain.sh
   make -f admin/Makefile.common
  • Impostazione delle opzioni per il compilatore ed il linker, impostazione dei percorsi per i file include, le librerie ed i manuali:
   export LD_LIBRARY_PATH=${PREFIX}/lib${LIBDIRSUFFIX}:${PREFIX}/lib${LIBDIRSUFFIX}/trinity:${LD_LIBRARY_PATH}
   export LIBDIR=${PREFIX}/lib${LIBDIRSUFFIX}
   export MANDIR
   export PATH=${PREFIX}/bin:${PATH}
   export PKG_CONFIG_PATH=:${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig:${PKG_CONFIG_PATH}
   export PREFIX
   export QTDIR=${PREFIX}
   export SYSCONFDIR=/etc/trinity
   # Enable only one of the following:
   # export DEBUG_AUTOTOOL_OPT="--enable-debug=full"
   export DEBUG_AUTOTOOL_OPT="--disable-debug"
  • Configurazione del codice sorgente:
   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --mandir=${MANDIR} \
      --build=$ARCH-slackware-linux \
      2>&1 | tee -a ${OUTPUT}/${PRGNAM}_configure.log
  • Compilazione ed installazione:
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
   make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log


Per i pacchetti che utilizzano cmake le fasi consistono in:

  • Pulizia della cache di cmake:
   find . -name CMakeCache.txt -exec rm {} \;
  • Impostazione delle opzioni per il compilatore ed il linker, impostazione dei percorsi per i file include, le librerie ed i manuali:
   export LD_LIBRARY_PATH=${PREFIX}/lib${LIBDIRSUFFIX}:${PREFIX}/lib${LIBDIRSUFFIX}/trinity:${LD_LIBRARY_PATH}
   export LIBDIR=${PREFIX}/lib${LIBDIRSUFFIX}
   export MANDIR
   export PATH=${PREFIX}/bin:${PATH}
   export PKG_CONFIG_PATH=${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig:${PKG_CONFIG_PATH}
   export PREFIX
   export QTDIR=${PREFIX}
   export SYSCONFDIR=/etc/trinity
   # Enable only one of the following:
   # export DEBUG_AUTOTOOL_OPT="--disable-debug"
   export DEBUG_CMAKE_OPT=""
  • Configurazione del codice sorgente:
   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log
  • Compilazione ed installazione:
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
   make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log


I pacchetti python-tqt e sip4-tqt utilizzano script in linguaggio Python per configurare il codice sorgente. Entrambi gli script richiedono solo la configurazione delle opzioni per il compilatore ed il linker.

  • Configurazione del codice sorgente:
   python configure.py \
      CFLAGS="${SLKCFLAGS}" \
      CXXFLAGS="${SLKCFLAGS}" \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log
  • Compilazione ed installazione:
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
   make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log


Infine tqscintilla, l'unico pacchetto ad utilizzare tqmake, richiede anch'esso la definizione dei parametri per il compilatore ed il linker.

  • Configurazione del codice sorgente:
   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS} -fno-exceptions" \
   tqmake qscintilla.pro \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log
  • Compilazione ed installazione:
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
   make install INSTALL_ROOT=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log

Opzioni Specifiche

Avendo esposto quali siano le linee generali impiegate per configurare e compilare i pacchetti appartenenti al gruppo dei prerequisiti, verranno di seguito presentate le opzioni specifiche dei singoli pacchetti ed eventuali accorgimenti necessari per eseguire una compilazione corretta. Verrà inoltre fornito un link ad uno script SlackBuild per ogni pacchetto in modo da aiutare chi volesse cimentarsi nell'impresa.

ARTS

Analog Real Time Synthesizer è una libreria audio che fornisce un sound server integrato, un mixer per i flussi sonori ed alcune applicazioni di configurazione. Utilizzata sin dai tempi di KDE 2, Arts è stata rimpiazzata da Phonon in KDE 4 ed adottata da TDE. Per poter compilare Arts è necessario impostare l'opzione -DCMAKE_SKIP_RPATH="OFF" in fase di configurazione. Segue la riga con cui è invocato cmake:

   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DCMAKE_SKIP_RPATH="OFF" \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

AVAHI-TQT

Una libreria che aggiunge funzioni di ricerca DNS ai pacchetti base tdebase e tdelibs. Per compilare correttamente richiede come dipendenza la libreria avahi che non fa parte della distribuzione Slackware standard. È possibile reperire uno script di compilazione per avahi presso il sito slackbuilds.org. Una volta installata la dipendenza, sarà possibile compilare avahi-tqt impostando le variabili di ambiente:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

Esportando il percorso di installazione delle librerie TQt3:

   export QTDIR=${PREFIX_TDE}

Lanciando lo script autogen.sh perchè generi gli script ed i file di configurazione:

   sh ./autogen.sh

Ed infine eseguendo la configurazione del codice sorgente passando i parametri

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --mandir=${MANDIR} \
      --build=$ARCH-slackware-linux

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo. Nota bene: lo script è fornito solo a titolo di riferimento. Abitualmente non abilito funzioni o pacchetti opzionali potendo farne a meno. Non avendo installato avahi non ho potuto verificare l'efficacia dello script Slackbuild, ma solo la forma e la sintassi.

DBUS-TQT

Librerie di collegamento al demone dbus utilizzato nelle moderne distribuzioni Linux per la gestione dello hardware e per consentire alle applicazioni di comunicare e scambiarsi messaggi. Dbus ha sostituito HAL. Per configurare e compilare il pacchetto utilizzando cmake è richiesto:

Pulire la chache di cmake:

   find . -name CMakeCache.txt -exec rm {} \;

Passare a cmake l'opzione -DCMAKE_SKIP_RPATH="OFF". L'invocazione completa di cmake risulterà:

   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DCMAKE_SKIP_RPATH="OFF" \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

DBUS-1-TQT

Librerie complementari a dbus-tqt. Aggiungono un livello di astrazione tra il demone dbus e le librerie TQt3. Il pacchetto può essere configurato utilizzando cmake. Per farlo:

Pulire la chache ci cmake:

   find . -name CMakeCache.txt -exec rm {} \;

Passare a cmake l'opzione -DCMAKE_SKIP_RPATH="OFF". L'invocazione completa di cmake risulterà:

   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DCMAKE_SKIP_RPATH="OFF" \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

LIBART-LGPL

Libart è una libreria per la gestione ad alte prestazioni della grafica 2-D utilizzata da Gnome, KDE e TDE. La versione della libreria distribuita con TDE differisce da quella standard inclusa in numerose distribuzioni Linux. Si consiglia di sostituire l'eventuale versione installata con quella TDE. Per compilare libart è sufficiente imporre alcune variabili di ambiente per i percorsi:

   PREFIX="/usr"
   MANDIR="/usr/man"

Ed eseguire la configurazione:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --build=$ARCH-slackware-linux

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

LIBCALDAV

Libcaldav è una libreria che implementa il protocollo CALDAV lato client come definito nel documento rfc4791. La libreria viene utilizzata dal calendario condiviso incluso nel pacchetto base tdepim. Trattasi di un pacchetto opzionale. Per compilare libcaldav si impostino le variabili di ambiente:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

Si proceda poi imponendo la locazione delle librerie TQt3:

   export QTDIR=${PREFIX_TDE}

Si lanci lo script autogen.sh per generare gli script ed i file di configurazione:

   sh ./autogen.sh

Si esegua quindi la configurazione del codice sorgente passando i parametri standard:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --mandir=${MANDIR} \
      --build=$ARCH-slackware-linux

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

LIBCARDDAV

Libcarddav è una libreria che implementa il protocollo CARDDAV utilizzato dal pacchetto base tdepim. Anche libcarddav è un pacchetto opzionale che contiene funzionalità aggiuntive. Per compilare libcarddav si impostino le variabili di ambiente:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

E si esporti il percorso delle librerie tqt3:

   export QTDIR=${PREFIX_TDE}

Si lanci lo script autogen.sh per generare gli script ed i file di configurazione:

   sh ./autogen.sh

Si esegua la configurazione del codice sorgente passando i parametri standard:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --mandir=${MANDIR} \
      --build=$ARCH-slackware-linux

Per lo specifico pacchetto è necessario commentare le righe di codice che si occupano di installare le pagine man in quanto rendono un errore facendo fallire tutta la procedura di compilazione.

   # Add man pages (No man page => Comment the following lines to avoid errors)
   # if [ -d ${PKG}/${MANDIR} ]; then
   #   gzip -9 $PKG/${MANDIR}/man?/*
   # fi

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

SIP4-TQT

Sip è uno strumento che semplifica la creazione di collegamenti, bindings in originale, tra il linguaggio Python e librerie scritte in C o C++. Originariamente scritto per legare Python alle librerie Qt, può essere usato per qualsiasi libreria. Come per altri pacchetti precdentemente descritti, sip può essere compilato impostando alcune variabili d'ambiente:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

Configurando il percorso ove installare le pagine man:

   export MANDIR

Aggiungendo alle opzioni per il compilatore alcuni percorsi ove reperire i file include:

   SLKCFLAGS="${SLKCFLAGS} -I/usr/include/tqt -I/opt/trinity/include"

e lanciando infine lo script Python di configurazione:

   python configure.py \
      CFLAGS="${SLKCFLAGS}" \
      CXXFLAGS="${SLKCFLAGS}"

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

TQCA

Una ulteriore libreria opzionale, Tqca (TQt Cryptographic Architecture), contiene una API di facile utilizzo per aggiungere funzioni crittografiche al Trinity Desktop Environment. La libreria di piccole dimensioni può essere compilata utilizzando alcuni accorgimenti specifici del pacchetto.

Dichiarando alcune variabili d'ambiente:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

Imponendo il percorso in cui cercare le librerie TQt:

   export QTDIR=${PREFIX_TDE}

Quindi invocando lo script di configurazione passando dette variabili:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --qtdir=${QTDIR} \

Un'ulteriore particolarità consiste nella variabile impiegata per individuare la directory di installazione dei file binari prodotti: INSTALL_ROOT anzichè DESTDIR, usata nella quasi toatlità degli altri pacchetti.

   make install INSTALL_ROOT=${PKG}

Impostata quest'ultima variabile, la compilazione può essere avviata lanciando il comando make.

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

TQCA-TLS

Tqca-tls è un plug-in che aggiunge il supporto alla trasmissione di dati attraverso un canale crittografato ai programmi che utilizzino la TQt Cryptographic Architecture. Si tratta forse del pacchetto di più facile gestione dato che lo script di configurazione si preoccupa di calcolare ed impostare i valori di tutte le opzioni. Per compilare tqca-tls è sufficiente impostare il percorso ove reperire le librerie TQt:

   export QTDIR=${PREFIX}

Ed eseguire lo script di configurazione:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --qtdir=${QTDIR}

Come per il pacchetto tqca, l'unica particolarità di tqca-tls risiede nel nome della variabile utilizzata per specificare la destinazione dei file compilati: INSTALL_ROOT

   make install INSTALL_ROOT=${PKG}

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

TQT3

Le librerie TQt forniscono i controlli di base con cui è costruito l'intero ambiente desktop TDE e sono pertanto di fondamentale importanza. La compilazione del pacchetto è onerosa in termini di tempo, ma relativamente facile. Per prima cosa è necessario impostare alcune variabili di ambiente:

   export LD_LIBRARY_PATH=/usr/lib${LIBDIRSUFFIX}:${TMP}/tmp-${PRGNAM}/${DIR_SRC}/lib:${TMP}/tmp-${PRGNAM}/build/lib
   export QTDIR=${PREFIX}

La variabile LD_LIBRARY_PATH deve essere assegnata con cura in quanto deve contenere il percorso ove verranno salvati i file binari intermedi utilizzati negli stadi avanzati del processo. Omettendo tale percorso la compilazione fallirà rendendo errore. Data la complessità delle librerie, lo script configure deve essere invocato con una riga di comando fornita di molte opzioni:

   LDFLAGS="${SLKLDFLAGS}" \
   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ../${DIR_SRC}/configure \
      -cups \
      -dlopen-opengl \
      -enable-opengl \
      -I/usr/include/freetype2/freetype \
      -I/usr/include/mysql \
      -inputmethod \
      -ipv6 \
      -L/usr/lib${LIBDIRSUFFIX} \
      -lfontconfig \
      -libdir ${PREFIX}/lib${LIBDIRSUFFIX} \
      -nis \
      -no-g++-exceptions \
      -no-pch \
      -platform linux-g++ \
      -plugin-imgfmt-mng \
      -plugin-sql-mysql \
      -plugin-sql-sqlite \
      -plugin-style-cde \
      -plugin-style-compact \
      -plugin-style-motifplus \
      -plugin-style-platinum \
      -plugin-style-sgi \
      -plugin-style-windows \
      -prefix ${PREFIX} \
      -qt-gif \
      -qt-imgfmt-jpeg \
      -qt-imgfmt-mng \
      -qt-imgfmt-png \
      -qt-style-motif \
      -release \
      -R${TMP}/tmp-${PRGNAM}/lib \
      -shared \
      -sm \
      -stl \
      -system-libjpeg \
      -system-libmng \
      -system-libpng \
      -system-zlib \
      -thread \
      -tablet \
      -v \
      -xcursor \
      -xft \
      -xinerama \
      -xkb \
      -xrandr \
      -xrender \
      -xshape

Ed è necessario lanciare due volte il comando make. La seconda volta perchè si occupoi dei link simbolici ed altri particolari:

   make VERBOSE=1
   make install INSTALL_ROOT=${PKG}
   make -i symlinks sub-src sub-tool
   make install INSTALL_ROOT=${PKG}

Sono infine richieste alcune operazioni per aggiungere link simbolici, script di configurazione ed alcuni file necessari affinchè tutto funzioni senza intoppi:

   # Some configure scripts seem unable to find lib64 => Create a symlink to lib
   if [[ "x86_64" = "${ARCH}" ]]; then
      ln -sf ${PREFIX}/lib${LIBDIRSUFFIX} ${PKG}/${PREFIX}/lib
   fi
   
   # Adding a link to the include folder
   mkdir -p ${PKG}/usr/include
   ln -sf ${PREFIX}/include ${PKG}/usr/include/${PRGNAM}
   
   # Move the qt-mt.pc in the pkgconfig directory
   if [[ ! -f ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig/tqt-mt.pc ]]; then
      mkdir -p ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig
      mv ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/tqt-mt.pc ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig/tqt-mt.pc
   fi
   # Link for qt-mt.pc to the /usr/lib[64] directory
   mkdir -p ${PKG}/usr/lib${LIBDIRSUFFIX}/pkgconfig
   ln -sf ${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig/tqt-mt.pc ${PKG}/usr/lib${LIBDIRSUFFIX}/pkgconfig/tqt-mt.pc
   
   # Fix some bad links
   if [[ -d ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++ ]]; then
      if [[ -L ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++/linux-g++ ]]; then
         unlink ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++/linux-g++
      fi
      ln -sf ${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++ ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++/linux-g++
      if [[ -L ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/default ]]; then
         unlink ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/default
      fi
      ln -sf ${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++ ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/default
   elif [[ -d ${PKG}/${PREFIX}/mkspecs/linux-g++ ]]; then
      if [[ -L ${PKG}/${PREFIX}/mkspecs/linux-g++/linux-g++ ]]; then
         unlink ${PKG}/${PREFIX}/mkspecs/linux-g++/linux-g++
      fi
      ln -sf ${PREFIX}/mkspecs/linux-g++ ${PKG}${PREFIX}/mkspecs/linux-g++/linux-g++
      if [[ -L ${PKG}/${PREFIX}/mkspecs/default ]]; then
         unlink ${PKG}/${PREFIX}/mkspecs/default
      fi
      ln -sf ${PREFIX}/mkspecs/linux-g++ ${PKG}/${PREFIX}/mkspecs/default
   fi
   
   # Create and populate the profile.d directory
   mkdir -p ${PKG}/etc/profile.d
   # Put profile.d scripts in package TQT installation path.
   cat ${SRCDIR}/profile.d/tqt3.sh  | sed -e "s:TDE_PREFIX:${PREFIX}:" > ${PKG}/etc/profile.d/tqt3.sh
   cat ${SRCDIR}/profile.d/tqt3.csh | sed -e "s:TDE_PREFIX:${PREFIX}:" > ${PKG}/etc/profile.d/tqt3.csh
   
   chmod 755 ${PKG}/etc/profile.d/*

Come sempre un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

TQTINTERFACE

La Trinity Qt Interface è una libreria che lavora come strato di astrazione tra TQt e Trinity. Tale strato consentirebbe di utilizzare applicazioni poggianti sia su TQt che Qt4 in maniera trasparente garantendo la coesistenza dei due ambienti. Al momento TQtinterface deve essere installata nella directory /usr per funzionare correttamente. Per compilare il pacchetto si configurino alcune variabili di ambiente:

   PREFIX="/usr"
   MANDIR="/usr/man"

Si invochi quindi cmake con opportune opzioni di configurazione tra cui vale la pena citare -DQT_VERSION=3:

   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DQT_VERSION=3 \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON

Un archivio contenente lo script SlackBuild completo ed i file di configurazione può essere scaricato dal seguente indirizzo.

Conclusioni

Nel corso del presente articolo sono state presentate alcune considerazioni inerenti la compilazione dei pacchetti etichettati come Prerequisiti per il funzionamento del Trinity Desktop Environment. Sono state esposte le linee guida generali adottate per il progetto e quelle specifiche per singolo pacchetto. Sono infine stati forniti i link agli script SlackBuild scritti nel corso della stesura dell'articolo. Gli script sono distribuiti nella speranza che possano essere utili a quegli utenti di Slackware Linux che volessero cimentarsi nell'impresa di compilare da zero l'intero ambiente desktop.


Per commenti, consigli, domande inviate una e-mail all'indirizzo studiosg [chiocciola] giustetti [punto] net.


Link esterni





Lingue: English - Italiano