Changes

31,043 bytes added ,  21:58, 1 March 2015
Aggiunto pagina dedicata alla compilazione dei Prerequisiti di TDE 14.0.0
Benvenuti nella pagina Wiki di Simone Giustetti.


Lingue: [http://www.giustetti.net/wiki/index.php?title=TDE_14.0.0_prerequisites 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 '''[http://www.cmake.org/ 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:

{| style="width: 80%;"
|+ '''SISTEMA DI COMPILAZIONE'''
! Pacchetto !! Tipologia di Pacchetto !! Sistema
|- style="text-align: center;"
| arts || Base || Cmake
|- style="text-align: center;"
| avahi-tqt || Opzionale || Autotools
|- style="text-align: center;"
| dbus-1-tqt || Base || Cmake
|- style="text-align: center;"
| dbus-tqt || Base || Cmake
|- style="text-align: center;"
| libart-lgpl || Opzionale || Autotools
|- style="text-align: center;"
| libcaldav || Opzionale || Autotools
|- style="text-align: center;"
| libcarddav || Opzionale || Autotools
|- style="text-align: center;"
| python-tqt || Opzionale || Script configure.py <br> Richiede un interprete Python
|- style="text-align: center;"
| sip4-tqt || Opzionale || Script configure.py <br> Richiede un interprete Python
|- style="text-align: center;"
| tqca || Opzionale || Autotools
|- style="text-align: center;"
| tqca-tls || Opzionale || Autotools
|- style="text-align: center;"
| tqscintilla || Opzionale || Script qscintilla.pro per qmake <br> Richiede che siano installate le librerie TQt3
|- style="text-align: center;"
| tqt3 || Base || Autotools
|- style="text-align: center;"
| tqtinterface || Base || Cmake
|}

Da cui emerge l'esigenza di avere almeno quattro modelli per lo script di compilazione. La struttura dei modelli sar&agrave; 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&agrave; 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 ([[Trinity_desktop_environment#Prerequisiti]]) sono stati modificati ed aggiornati per l'ultimo rilascio. La struttura &egrave; rimasta pressoch&egrave; 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 &egrave; 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 system's 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 '''[http://www.cmake.org/ 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&agrave; inoltre fornito un link ad uno script SlackBuild per ogni pacchetto in modo da aiutare chi volesse cimentarsi nell'impresa.

==== ARTS ====

'''A'''nalog '''R'''eal '''T'''ime '''S'''ynthesizer &egrave; 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 &egrave; stata rimpiazzata da '''Phonon''' in KDE 4 ed adottata da TDE. Per poter compilare Arts &egrave; necessario impostare l'opzione '''-DCMAKE_SKIP_RPATH="OFF"''' in fase di configurazione. Segue la riga con cui &egrave; invocato '''[http://www.cmake.org/ 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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/arts.tar.gz 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. &Egrave; possibile reperire uno script di compilazione per avahi presso il sito [http://slackbuilds.org slackbuilds.org]. Una volta installata la dipendenza, sar&agrave; 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&egrave; 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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/avahi-tqt.tar.gz indirizzo]. Nota bene: lo script &egrave; 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 '''[http://www.cmake.org/ cmake]''' &egrave; 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&agrave;:
'''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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/dbus-tqt.tar.gz 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&ograve; essere configurato utilizzando '''[http://www.cmake.org/ 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&agrave;:
'''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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/dbus-1-tqt.tar.gz indirizzo].

==== LIBART-LGPL ====

'''Libart''' &egrave; 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 &egrave; 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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/libart-lgpl.tar.gz indirizzo].

==== LIBCALDAV ====

'''Libcaldav''' &egrave; 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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/libcaldav.tar.gz indirizzo].

==== LIBCARDDAV ====

'''Libcarddav''' &egrave; una libreria che implementa il protocollo '''CARDDAV''' utilizzato dal pacchetto base '''tdepim'''. Anche '''libcarddav''' &egrave; un pacchetto opzionale che contiene funzionalit&agrave; 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 &egrave; 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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/libcarddav.tar.gz indirizzo].

==== SIP4-TQT ====

'''Sip''' &egrave; 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&ograve; essere usato per qualsiasi libreria. Come per altri pacchetti precdentemente descritti, sip pu&ograve; 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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/sip4-tqt.tar.gz 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&ograve; 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&agrave; consiste nella variabile impiegata per individuare la directory di installazione dei file binari prodotti: '''INSTALL_ROOT''' anzich&egrave; '''DESTDIR''', usata nella quasi toatlit&agrave; degli altri pacchetti.
'''make''' install INSTALL_ROOT=${PKG}
Impostata quest'ultima variabile, la compilazione pu&ograve; essere avviata lanciando il comando '''make'''.

Un archivio contenente lo script SlackBuild completo ed i file di configurazione pu&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/tqca.tar.gz indirizzo].

==== TQCA-TLS ====

'''Tqca-tls''' &egrave; 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&ugrave; facile gestione dato che lo script di configurazione si preoccupa di calcolare ed impostare i valori di tutte le opzioni. Per compilare '''tqca-tls''' &egrave; 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&agrave; 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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/tqca-tls.tar.gz indirizzo].

==== TQT3 ====

Le librerie '''TQt''' forniscono i controlli di base con cui &egrave; costruito l'intero ambiente desktop TDE e sono pertanto di fondamentale importanza. La compilazione del pacchetto &egrave; onerosa in termini di tempo, ma relativamente facile. Per prima cosa &egrave; 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&agrave; rendendo errore.
Data la complessit&agrave; 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 &egrave; necessario lanciare due volte il comando '''make'''. La seconda volta perch&egrave; 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&egrave; 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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/tqt3.tar.gz indirizzo].

==== TQTINTERFACE ====

La '''Trinity Qt Interface''' &egrave; 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 '''[http://www.cmake.org/ 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&ograve; essere scaricato dal seguente [http://www.giustetti.net/resource/slackbuild/tde/1400/tqtinterface.tar.gz 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
----

* [http://www.trinitydesktop.org/ Home page del progetto TDE (En)]
* [http://www.slackware.com/ Home page di Slackware (En)]
* [http://slackbuilds.org Home page del progetto SlackBuilds.org]

----

Lingue: [http://www.giustetti.net/wiki/index.php?title=TDE_14.0.0_prerequisites English] - '''Italiano'''