TDE sip4-tqt

From Studiosg
Jump to navigationJump to search

Benvenuti nella pagina Wiki di Simone Giustetti.


Lingue: English - Italiano


SIP4-TQT

TDE - Pacchetti Base

SIP è uno strumento che semplifica la creazione di collegamenti (binding in inglese) tra il linguaggio Python e librerie scritte in linguaggio C o C++. Originariamente scritto per creare PyQt, i binding di Python alle librerie QT, SIP può essere utilizzato per qualsiasi libreria in C o C++. Slackware annovera un pacchetto ufficiale per SIP, che non è purtroppo compatibile con il substrato TQt necessario al funzionamento del Trinity Desktop Environment. Tutti i pacchetti di TDE relativi a Python necessitano SIP per compilare e funzionare una volta installati. Ne consegue sia necessario compilarne una versione dedicata a TQt andando a sostituire quella inclusa nella distribuzione.

Sip4-tqt su Slackware

Il codice sorgente della versione personalizzata di SIP: sip4-tqt, non viene rilasciato sotto forma di pacchetto tgz assieme al resto dell'ambiente desktop. Il codice è reperibile solamente dal repository GIT del progetto; per scaricarlo esistono due modi:

  • Collegarsi al repository attraverso un web browser e scaricare un archivio compresso contenente il codice sorgente dell'ultima versione disponibile dal ramo master. sip4-tqt-master.tar.gz
  • Installando GIT sulla propria macchina ed utilizzando la seguente procedura:
  1. Spostarsi nella directory ove si vogliono scaricare i file
  2. Lanciare il comando: git clone http://anonymous@scm.trinitydesktop.org/scm/git/sip4-tqt
  3. Rinominare la directory principale dei file scaricati: mv sip4-tqt sip4-tqt-master (Operazione necessaria esclusivamente per mantenere la nomenclatura dell'archivio scaricato con il metodo precedente)
  4. Creare un archivio del codice sorgente: tar -zcf sip4-tqt-master.tar.gz sip4-tqt-master

Quale che sia il metodo usato, il risultato sarà il file sip4-tqt-master.tar.gz utilizzabile per compilare un pacchetto come vedremo nel prosieguo dell'articolo.

Trattandosi di un pacchetto ufficiale esiste uno script di compilazione che puè essere utilizzato come riferimento per le operazioni di pacchettizzazione. Il pacchetto generato dovrà andare a sostituire quello standard perciò non sarà possibile utilizzare /opt/trinity come directory root, ma ricorrere a /usr: la directory predefinita del pacchetto ufficiale. Il codice sorgente non usa gli autotools, nè cmake per la configurazione, solo uno script Python: configure.py, che potrà essere lanciato mediante il comando: python configure.py <opzioni> . Eseguita la configurazione si dovrà lanciare immediatamente il comando make quindi make install.

I primi tentativi di compilare SIP si sono rivalati infruttuosi: la compilazione falliva rendendo errori nella ricerca di alcuni file include. Spulciando la documentazione ufficiale è emersa la necessità di aggiungere alcuni percorsi di inclusione al comando di configurazione. Tale accorgimento ha risolto uno dei tre errori resi dal comando make. Per i rimanenti due è stato necessario aggiungere alcuni collegamenti tra directory. Ricapitolando:

Si lanci il comando:

   export SLKCFLAGS="-O2 -march=i486 -mtune=i686 -I/usr/include/tqt"
   export PYTHONVER=$(python -V 2>&1 | cut -f 2 -d' ' | cut -f 1-2 -d.)
   export PYTHONLIB=$( python -c 'from distutils.sysconfig import get_python_lib; print get_python_lib()' )
   
   python configure.py \
      -b "/usr/bin" \
      -d "$PYTHONLIB" \
      -e "/usr/include/python$PYTHONVER" \
      CFLAGS="$SLKCFLAGS" \
      CXXFLAGS="$SLKCFLAGS"

per eseguire la configurazione su una architettura a 32 bit.

Passare l'opzione -I/usr/include/tqt allo script di configurazione si è rivelato fondamentale per risolvere il seguente errore:

  bash-4.2# make
  make[1]: Entering directory `/usr/src/tde/3.5.13.2/sip4-tqt/sip4-tqt-3.5.13.2/sipgen'
  gcc -c -O2 -march=i486 -mtune=i686 -O2 -w -DNDEBUG -I. -o main.o main.c
  In file included from main.c:26:0:
  sip.h:26:17: fatal error: tqt.h: No such file or directory
  compilation terminated.
  make[1]: *** [main.o] Error 1
  make[1]: Leaving directory `/usr/src/tde/3.5.13.2/sip4-tqt/sip4-tqt-3.5.13.2/sipgen'
  make: *** [all] Error 2

Creare il link:

  ln -s /usr/include/tqt /usr/include/tqt4

Risolve un altro errore di compilazione:

  bash-4.2# make
  make[1]: Entering directory `/usr/src/tde/3.5.13.2/sip4-tqt/sip4-tqt-3.5.13.2/sipgen'
  gcc -c -O2 -march=i486 -mtune=i686 -I/usr/include/tqt -O2 -w -DNDEBUG -I. -o main.o main.c
  In file included from sip.h:26:0,
                 from main.c:26:
  /usr/include/tqt/tqt.h:51:21: fatal error: qglobal.h: No such file or directory
  compilation terminated.
  make[1]: *** [main.o] Error 1
  make[1]: Leaving directory `/usr/src/tde/3.5.13.2/sip4-tqt/sip4-tqt-3.5.13.2/sipgen'
  make: *** [all] Error 2

È stato infine necessario creare il link:

  ln -s /opt/trinity/include /usr/include/tqt/QtCore

Per risolvere l'errore:

  bash-4.2# make
  make[1]: Entering directory `/usr/src/tde/3.5.13.2/sip4-tqt/sip4-tqt-3.5.13.2/sipgen'
  gcc -c -O2 -march=i486 -mtune=i686 -I/usr/include/tqt -O2 -w -DNDEBUG -I. -o main.o main.c
  In file included from /usr/include/tqt/tqt.h:51:0,
                 from sip.h:26,
                 from main.c:26:
  /usr/include/tqt/qglobal.h:62:28: fatal error: QtCore/qconfig.h: No such file or directory
  compilation terminated.
  make[1]: *** [main.o] Error 1
  make[1]: Leaving directory `/usr/src/tde/3.5.13.2/sip4-tqt/sip4-tqt-3.5.13.2/sipgen'
  make: *** [all] Error 2

L'aggiunta di opzioni di inclusione alo script configure.py da sola non si è rivelata sufficiente a risolvere tutti i problemi illustrati.

Uno script SlackBuild che includa tutte le istruzioni e gli accorgimenti descritti può essere scaricato al seguente link. Per distinguere il pacchetto modificato da quello ufficiale, lo script aggiunge il suffisso tde al nome.

Una volta ultimata la preparazione del pacchetto sip-tde, prima di installarlo è necessario rimuovere quello predefinito mediante l'istruzione:

  removepkg sip-4.13.2-i486-2

e lanciare quindi il comando

  installpkg sip-tde-i486-1sg.txz

In alternativa è possibile sostituire entrambe le istruzioni con un singolo comando upgradepkg:

  upgradepkg sip-4.13.2-i486-2%sip-tde-i486-1sg.txz

Dopo aver installato sip-tde sarà possibile procedere con la compilazione dei pacchetti Python per TDE.


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


Link esterni





Lingue: English - Italiano