# [SOLVED] pykde4 non compila

## Spiros

Sto installando KDE4.2 e tra le 350 dipendenze c'è anche pykde4. L'errore della compilazione arriva proprio alla fine:

```

[ 98%] Building CXX object python/pykde4/kpythonpluginfactory/CMakeFiles/kpythonpluginfactory.dir/kpythonpluginfactory_automoc.o

[ 99%] Building CXX object python/pykde4/kpythonpluginfactory/CMakeFiles/kpythonpluginfactory.dir/kpythonpluginfactory.o

[ 99%] Building CXX object python/pykde4/CMakeFiles/python_module_PyKDE4_soprano.dir/sip/soprano/sipsopranopart6.o

In file included from /usr/include/python2.4/Python.h:13,

                 from /usr/include/python2.4/sip.h:28,

                 from /var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4_build/python/pykde4/sip/soprano/sipAPIsoprano.h:11,

                 from /var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4_build/python/pykde4/sip/soprano/sipsopranopart6.cpp:7:

/usr/include/python2.4/pyconfig.h:867:1: warning: "_XOPEN_SOURCE" redefined

<command line>:1:1: warning: this is the location of the previous definition

/usr/include/python2.4/object.h:343: error: expected unqualified-id before ‘;’ token

/usr/include/python2.4/object.h:343: error: abstract declarator ‘PyObject*’ used as declaration

/var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4-4.2.0/python/pykde4/kpythonpluginfactory/kpythonpluginfactory.cpp:111: warning: unused parameter ‘args’

/var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4-4.2.0/python/pykde4/kpythonpluginfactory/kpythonpluginfactory.cpp: In function ‘int kdemain(int, char**)’:

/var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4-4.2.0/python/pykde4/kpythonpluginfactory/kpythonpluginfactory.cpp:320: warning: unused variable ‘pyLib’

make[2]: *** [python/pykde4/kpythonpluginfactory/CMakeFiles/kpythonpluginfactory.dir/kpythonpluginfactory.o] Error 1

make[1]: *** [python/pykde4/kpythonpluginfactory/CMakeFiles/kpythonpluginfactory.dir/all] Error 2

make[1]: *** Waiting for unfinished jobs....

[100%] Building CXX object python/pykde4/CMakeFiles/python_module_PyKDE4_soprano.dir/sip/soprano/sipsopranopart7.o

In file included from /usr/include/python2.4/Python.h:13,

                 from /usr/include/python2.4/sip.h:28,

                 from /var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4_build/python/pykde4/sip/soprano/sipAPIsoprano.h:11,

                 from /var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4_build/python/pykde4/sip/soprano/sipsopranopart7.cpp:7:

/usr/include/python2.4/pyconfig.h:867:1: warning: "_XOPEN_SOURCE" redefined

<command line>:1:1: warning: this is the location of the previous definition

Linking CXX shared library ../../lib/pykde/soprano.so

[100%] Built target python_module_PyKDE4_soprano

Linking CXX shared library ../../lib/pykde/plasma.so

[100%] Built target python_module_PyKDE4_plasma

make: *** [all] Error 2

 * 

 * ERROR: kde-base/pykde4-4.2.0 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_compile

 *             environment, line 4002:  Called kde4-meta_src_compile

 *             environment, line 2957:  Called kde4-base_src_make

 *             environment, line 2720:  Called cmake-utils_src_make

 *             environment, line 1071:  Called die

 * The specific snippet of code:

 *           emake "$@" || die "Make failed!";

 *  The die message:

 *   Make failed!

```

Da quanto sta qui sopra traggo queste due righe:

```

/usr/include/python2.4/object.h:343: error: expected unqualified-id before ‘;’ token

/usr/include/python2.4/object.h:343: error: abstract declarator ‘PyObject*’ used as declaration

```

Sembra che l'errore venga da qui. Per curiosità sono andato a vedere ("->" indica la riga 343):

```

typedef struct _heaptypeobject {

   /* Note: there's a dependency on the order of these members

      in slotptr() in typeobject.c . */

   PyTypeObject type;

   PyNumberMethods as_number;

   PyMappingMethods as_mapping;

   PySequenceMethods as_sequence; /* as_sequence comes after as_mapping,

                 so that the mapping wins when both

                 the mapping and the sequence define

                 a given operator (e.g. __getitem__).

                 see add_operators() in typeobject.c . */

   PyBufferProcs as_buffer;

->   PyObject *name, *slots;

   /* here are optional user slots, followed by the members. */

} PyHeapTypeObject;

```

;

La cosa forte è che il problema riguarda solo il puntatore slots dà problemi. Ho provato a separare le due inizializzazioni e name non dà problemi. Il un'altra struct subito sopra di sono sei inizializzazioni di PyObject* e non danno problemi. Mah...

Comunque, visto che cambiare direttamente quel file di sicuro non è il metodo corretto di procedere... Che cosa posso fare? Di Python ho una sola versione installata, la 2.4. Forse pykde4 richiede la 2.5? No, portage lo saprebbe. Ci sono alcuni errori simili in giro per il forum e per internet, ma uno che si blocca al 100% con questo errore non l'ho trovato. Alcuni hanno risolto unmergendo pykde, emergendo pykde4 e riemergendo pykde, ma non è il mio caso, in quanto non ho installato pykde, perché non sto aggiornando a kde4.2, ma installando da zero.

Idee?

Grazie.

EDIT: risolto passando da python2.4 al 2.5.

----------

## randomaze

Sbaglio oppure è questo bug?

----------

## Spiros

Credo di sì.

Si trova un po' dappertutto, ma da nessuna parte ho trovato una soluzione. Comunque con Python2.5 hanno cambiato i nomi di variabile, in modo che invece di slots ora c'è ht_slots eccetera. In questo modo il conflitto tra un nome riservato delle Qt e una variabile di Python non c'è più.

----------

## makaveli87

Scusa... ho lo stesso problema.. ma non ho capito come hai risolto..

----------

## randomaze

 *makaveli87 wrote:*   

> Scusa... ho lo stesso problema.. ma non ho capito come hai risolto..

 

Seguendo i commenti del bug ci sono due possibilità:

La via meno invasiva é quella di disabilitare il supporto a python in alcuni pacchetti:

```
echo "kde-base/plasma-workspace -python" >> /etc/portage/package.use

echo "kde-base/marble -python" >> /etc/portage/package.use

```

in generale si tratta di vedere quale pacchetto ha tra le dipendenze pykde4 e rimuovergli la USE.

In alternativa qualcuno (tra cui Spiros) ha aggiornato a Python 2.5 (ma sbaglio o Py 2.5 é stabile da un bel po'? Perché lo aggiornate solo adesso?)

----------

## makaveli87

Sto provando ad aggiornare a Python 2.5.

Non l'avevo letto nei commenti al bug.. avevo letto qualcosa tipo installare pykde-3.1.6 (che è anche masked), etc...

In effetti avevo ancora python 2.4.

Il computer è di mio fratello.. ed è rimasto un anno fermo (da giugno)... dovevo fare un emerge world, ma l'avevo posticipato (aggiornando a mano solo alcuni pacchetti) perchè volevo fare un po' di pulizia prima..

EDIT... non va ancora.. proverò a disabilitare la use

----------

## randomaze

 *makaveli87 wrote:*   

> EDIT... non va ancora.. proverò a disabilitare la use

 

A parte che fare degli update selettivi per arrivare a KDE4.2 non mi sembra esattamente la via migliore da seguire.... in ogni caso l'aggiornamento di python non é un semplice emerge, a memoria devi selezionare il nuovo python (con eselect) e aggiornare l'installato (con python-updater). 

Al termine e se tutto va bene puoi rimuovere il vecchio 2.4 (ma a questo punto é facoltativo).

----------

## makaveli87

 *randomaze wrote:*   

> 
> 
> A parte che fare degli update selettivi per arrivare a KDE4.2 non mi sembra esattamente la via migliore da seguire
> 
> 

 

Non avevo neanche KDE...

Semplicemente avevo aggiornato qualcosina.. poi ieri mi è venuta voglia di provare kde 4.2

 *randomaze wrote:*   

> 
> 
> .... in ogni caso l'aggiornamento di python non é un semplice emerge, a memoria devi selezionare il nuovo python (con eselect) e aggiornare l'installato (con python-updater). 
> 
> Al termine e se tutto va bene puoi rimuovere il vecchio 2.4 (ma a questo punto é facoltativo).

 

Fatto.. continua a non andare.

----------

## randomaze

 *makaveli87 wrote:*   

> Fatto.. continua a non andare.

 

Che errore da?

----------

## makaveli87

```

albypc kde-base # emerge -av plasma-workspace

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild  N    ] kde-base/pykde4-4.2.0  USE="-akonadi -debug -kdeprefix -semantic-desktop" 0 kB

[ebuild   R   ] kde-base/plasma-workspace-4.2.0  USE="python* -debug -google-gadgets -htmlhandbook -kdeprefix -xcomposite -xinerama" 0 kB

Total: 2 packages (1 new, 1 reinstall), Size of downloads: 0 kB

Would you like to merge these packages? [Yes/No] y

>>> Verifying ebuild manifests

>>> Starting parallel fetch

>>> Emerging (1 of 2) kde-base/pykde4-4.2.0

 * kdebindings-4.2.0.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                                             [ ok ]

 * checking ebuild checksums ;-) ...                                                                                                     [ ok ]

 * checking auxfile checksums ;-) ...                                                                                                    [ ok ]

 * checking miscfile checksums ;-) ...                                                                                                   [ ok ]

>>> Unpacking source...

 * Unpacking parts of kdebindings-4.2.0.tar.bz2 to /var/tmp/portage/kde-base/pykde4-4.2.0/work ...                                        [ ok ]

>>> Source unpacked.

>>> Configuring source in /var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4-4.2.0 ...

loading initial cache file /var/tmp/portage/kde-base/pykde4-4.2.0/temp/gentoo_common_config.cmake

-- The C compiler identification is GNU

-- The CXX compiler identification is GNU

-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc

-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc -- works

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++

-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++ -- works

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Looking for Q_WS_X11

-- Looking for Q_WS_X11 - found

-- Looking for Q_WS_WIN

-- Looking for Q_WS_WIN - not found.

-- Looking for Q_WS_QWS

-- Looking for Q_WS_QWS - not found.

-- Looking for Q_WS_MAC

-- Looking for Q_WS_MAC - not found.

-- Found Qt-Version 4.4.2 (using /usr/bin/qmake)

-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so;/usr/lib64/libXft.so;/usr/lib64/libXau.so;/usr/lib64/libXdmcp.so;/usr/lib64/libXpm.so

-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so;/usr/lib64/libXft.so;/usr/lib64/libXau.so;/usr/lib64/libXdmcp.so;/usr/lib64/libXpm.so - found

-- Looking for gethostbyname

-- Looking for gethostbyname - found

-- Looking for connect

-- Looking for connect - found

-- Looking for remove

-- Looking for remove - found

-- Looking for shmat

-- Looking for shmat - found

-- Looking for IceConnectionNumber in ICE

-- Looking for IceConnectionNumber in ICE - found

-- Found X11: /usr/lib64/libX11.so

-- Looking for include files CMAKE_HAVE_PTHREAD_H

-- Looking for include files CMAKE_HAVE_PTHREAD_H - found

-- Looking for pthread_create in pthreads

-- Looking for pthread_create in pthreads - not found

-- Looking for pthread_create in pthread

-- Looking for pthread_create in pthread - found

-- Found Threads: TRUE

-- Found Automoc4: /usr/bin/automoc4

-- Found Perl: /usr/bin/perl

-- Performing Test _OFFT_IS_64BIT

-- Performing Test _OFFT_IS_64BIT - Success

-- Performing Test HAVE_FPIE_SUPPORT

-- Performing Test HAVE_FPIE_SUPPORT - Success

-- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL

-- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL - Success

-- Performing Test __KDE_HAVE_GCC_VISIBILITY

-- Performing Test __KDE_HAVE_GCC_VISIBILITY - Success

-- Phonon Version: 4.3.0

-- Found Phonon: /usr/lib64/libphonon.so

-- Found Phonon Includes: /usr/include/KDE;/usr/include

-- Found KDE 4.2 include dir: /usr/include

-- Found KDE 4.2 library dir: /usr/lib64

-- Found the KDE4 kconfig_compiler preprocessor: /usr/bin/kconfig_compiler

-- Found automoc4: /usr/bin/automoc4

-- Phonon Version: 4.3.0

-- cmake package FindOkular.cmake was not found. The package Okular is needed to compile all part of this program.

-- cmake package FindKDevPlatform.cmake was not found. The package KDevPlatform is needed to compile all part of this program.

-- Found PythonInterp: /usr/bin/python2.5

-- Found Python executable: /usr/bin/python2.5

-- Found Python version: 2.5.2

-- Found Python library: /usr/lib64/libpython2.5.so

-- Python Libraries: /usr/lib64/libpython2.5.so

-- Python Include Path: /usr/include/python2.5

-- Build Kross Python... yes

Traceback (most recent call last):

  File "/usr/share/apps/cmake/modules/FindSIP.py", line 8, in <module>

    import sipconfig

ImportError: No module named sipconfig

-- Build PyKDE4... no

-- 

-- Configuring done

-- Generating done

-- Build files have been written to: /var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4_build

>>> Source configured.

>>> Compiling source in /var/tmp/portage/kde-base/pykde4-4.2.0/work/pykde4-4.2.0 ...

make -j2 

>>> Source compiled.

>>> Test phase [not enabled]: kde-base/pykde4-4.2.0

>>> Install pykde4-4.2.0 into /var/tmp/portage/kde-base/pykde4-4.2.0/image/ category kde-base

make -j2 install DESTDIR=/var/tmp/portage/kde-base/pykde4-4.2.0/image/ 

make: *** No rule to make target `install'.  Stop.

 * 

 * ERROR: kde-base/pykde4-4.2.0 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_install

 *             environment, line 4043:  Called kde4-meta_src_install

 *             environment, line 3059:  Called cmake-utils_src_install

 *             environment, line 1072:  Called die

 * The specific snippet of code:

 *       emake install DESTDIR="${D}" || die "Make install failed";

 *  The die message:

 *   Make install failed

 * 

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/var/tmp/portage/kde-base/pykde4-4.2.0/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/kde-base/pykde4-4.2.0/temp/environment'.

 * 

>>> Failed to emerge kde-base/pykde4-4.2.0, Log file:

>>>  '/var/tmp/portage/kde-base/pykde4-4.2.0/temp/build.log'

 * Messages for package kde-base/pykde4-4.2.0:

 * 

 * ERROR: kde-base/pykde4-4.2.0 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_install

 *             environment, line 4043:  Called kde4-meta_src_install

 *             environment, line 3059:  Called cmake-utils_src_install

 *             environment, line 1072:  Called die

 * The specific snippet of code:

 *       emake install DESTDIR="${D}" || die "Make install failed";

 *  The die message:

 *   Make install failed

 * 

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/var/tmp/portage/kde-base/pykde4-4.2.0/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/kde-base/pykde4-4.2.0/temp/environment'.

 * 

```

----------

## randomaze

 *makaveli87 wrote:*   

> 
> 
> ```
> 
> -- Build Kross Python... yes
> ...

 

Direi che il problema é diverso, qui non c'entra più python e come é compilato ma sembra che non trovi qualche dipendenza.

Prova a dare:

```
emerge dev-python/sip
```

----------

## makaveli87

Non me ne sono neanche accorto.. deve essere successo dopo aver aggiornato a python 2.5

```

 Found SIP version: 4.7.9

Traceback (most recent call last):

  File "/usr/share/apps/cmake/modules/FindPyQt.py", line 5, in <module>

    import PyQt4.pyqtconfig

ImportError: No module named PyQt4.pyqtconfig

-- Build PyKDE4... no

-- 

```

----------

## ckx3009

confermo che senza la USE python compilano senza errori sia plasma-workspace-4.2.0 che marble-4.2.0.

quella USE non sembra essere fondamentale al momento.

----------

## makaveli87

Lascerò così allora.. Grazie a tutti

----------

## Spiros

 *randomaze wrote:*   

> 
> 
> A parte che fare degli update selettivi per arrivare a KDE4.2 non mi sembra esattamente la via migliore da seguire.... in ogni caso l'aggiornamento di python non é un semplice emerge, a memoria devi selezionare il nuovo python (con eselect) e aggiornare l'installato (con python-updater). 
> 
> Al termine e se tutto va bene puoi rimuovere il vecchio 2.4 (ma a questo punto é facoltativo).

 

Non mi risulta che per cambiare versione di Python occorra selezionarlo con eselect, se non altro perché la voce python in eselect non c'è neanche:

```

Extra modules:

  bashcomp                  Manage contributed bash-completion scripts

  binutils                  Manage installed versions of sys-devel/binutils

  blas                      Manage installed BLAS implementations

  cblas                     Manage installed CBLAS implementations

  ctags                     Manage /usr/bin/ctags implementations

  env                       Manage environment variables set in /etc/env.d/

  esd                       Select esound daemon or wrapper

  fontconfig                Manage fontconfig /etc/fonts/conf.d/ symlinks

  java-nsplugin             Manage the Java plugin for Netscape-like Browsers

  java-vm                   Manage the Java system and user VM

  kernel                    Manage the /usr/src/linux symlink

  lapack                    Manage installed LAPACK implementations

  mailer                    Manage the mailwrapper profiles in /etc/mail

  news                      Read GLEP 42 news items

  opengl                    Manage the OpenGL implementation used by your system

  profile                   Manage the /etc/make.profile symlink

  rc                        Manage /etc/init.d scripts in runlevels

  vi                        Manage /usr/bin/vi implementations

  wxwidgets                 Manage the system default wxWidgets profile.

```

Credo che basti emergerlo e poi dare python-updater.

Sì, il 2.5 è stabile da un bel pezzo, ma il mio sistema è recente e non mi era ancora venuto in mente di aggiornarlo.

----------

