[Pikdev] Headers Kde3, Qt, moc ... (résolu)

Mise à jour / Création /debug de paquetages
Répondre
calve
newbie
Messages : 7
Inscription : mer. 17 févr. 2010, 00:29

[Pikdev] Headers Kde3, Qt, moc ... (résolu)

Message par calve »

Salut tout le monde :)
Je fait un peu d'assembleur pour mon projet de fin de DUT, et j'ai tiqué sur pikdev, qu'a l'air vachement bien foutu ...
Evidemment, si je suis là, c'est pas pour vous dire que tout va bien dans le pays des bisounours ... en effet, Pikdev est développé pour Kde3/Qt3. Et en plus, il a un script d'installation bizarre (vous pouvez en savoir plus sur la page de l'auteur ...) qui n'utilise pas le triptique configure/make/make install.

Extrait de ./src/build_pikdev, la partie qui m'interresse

Code : Tout sélectionner

# Meaning of used symbols:
#
#  KDEINC : where the kde headers are (.h files) 
#  QTINC : where the qt3 headers are (.h files)
#  COMPILER : the (path and) name of your c++ compiler 
#  LINKER: the path and name of your linker
#  COMPILEROPTS: the compiler option for non GUI sources ( .cc files)
#       "non GUI" means that the code does not use KDE nor Qt
#  GUICOMPILEROPTS: the compiler option for  GUI sources ( .cpp files)
#  LINKEROPTS : options for linking non GUI code (ie: pkp)
#  GUILINKEROPTS : options for linking  GUI code (ie: pikdev)
#     these options must include the libs, and path to these libs
#     
# ---------------------------------------------------------------------------
# Change the target variable according to your current config

#target="debian_kde3x"
target="archlinux"

case $target in

debian_kde3x)
KDEINC="-I/usr/include/kde"
QTINC="-I/usr/share/qt3/include"

COMPILER="g++"
LINKER="g++"
MOC="moc"
COMPILEROPTS="-c -O2 -Wall -I."
GUICOMPILEROPTS="-c -O2 -Wall -I. -I.. $KDEINC $QTINC"
LINKEROPTS="-lstdc++"
GUILINKEROPTS="-L/usr/lib -L/usr/share/qt3/lib -L/usr/lib/kde3 -lktexteditor -lkdeprint -lkio -lkutils -lkparts -lkhtml -lkdeui -lstdc++ "
;;

archlinux)
# edit this section to fit your target system

#KDEINC="-I/usr/include/kde"
KDEINC="-I/usr/include"
QTINC="-I/opt/qt/include"

COMPILER="g++"
LINKER="g++"
MOC="moc"
COMPILEROPTS="-c -O2 -Wall -I."
GUICOMPILEROPTS="-c -O2 -Wall -I. -I.. $KDEINC $QTINC"
LINKEROPTS="-lstdc++"
#GUILINKEROPTS="-L/usr/lib -L/usr/share/qt3/lib -L/usr/lib/kde3 -lktexteditor -lkdeprint -lkio -lkutils -lkparts -lkhtml -lkdeui -lstdc++"
GUILINKEROPTS="-L/usr/lib -L/opt/qt/lib -L/opt/kde/lib -lktexteditor -lkdeprint -lkio -lkutils -lkparts -lkhtml -lkdeui -lstdc++"
;;
J'ai déjà trouvé tout seul comme un grand les KDEINC et QTINC, a grand coups de locate. Par contre, la compilation se pète la guele sur moc, je crois ...
D'après le script, il se passe ca :

Code : Tout sélectionner

echo "*** Meta model extraction/compilation ***"

for file in ${MOCSRC[@]}
do
outcpp="`basename $file .h`.moc.cpp"
outobj="`basename $file .h`.moc.o"
docmd "$MOC -o $outcpp $file"
docmd "$COMPILER $GUICOMPILEROPTS $outcpp"
MOCOBJ[${#MOCOBJ[@]}]=$outobj
done
et j'ai une orgie d'erreur :

Code : Tout sélectionner

*** Meta model extraction/compilation ***
moc -o AsmConfigWidget.moc.cpp AsmConfigWidget.h
moc: Cannot create AsmConfigWidget.moc.cpp
g++ -c -O2 -Wall -I. -I.. -I/usr/include -I/opt/qt/include AsmConfigWidget.moc.cpp
AsmConfigWidget.moc.cpp:12:2: erreur: #error "The header file 'AsmConfigWidget.h' doesn't include <QObject>."
AsmConfigWidget.moc.cpp:19:1: erreur: ‘QT_BEGIN_MOC_NAMESPACE’ does not name a type
AsmConfigWidget.moc.cpp:43:36: erreur: ‘const QMetaObject AsmConfigWidget::staticMetaObject’ is not a static member of ‘class AsmConfigWidget’
AsmConfigWidget.moc.cpp:43:36: erreur: variable ‘const QMetaObject AsmConfigWidget::staticMetaObject’ has initializer but incomplete type
AsmConfigWidget.moc.cpp:45:7: erreur: ‘qt_meta_data_AsmConfigWidget’ was not declared in this scope
AsmConfigWidget.moc.cpp:52:20: erreur: prototype for ‘const QMetaObject* AsmConfigWidget::metaObject() const’ does not match any in class ‘AsmConfigWidget’
AsmConfigWidget.h:19:2: erreur: candidate is: virtual QMetaObject* AsmConfigWidget::metaObject() const
AsmConfigWidget.moc.cpp:57:55: erreur: no ‘void* AsmConfigWidget::qt_metacast(const char*)’ member function declared in class ‘AsmConfigWidget’
AsmConfigWidget.moc.cpp:65:47: erreur: ‘int AsmConfigWidget::qt_metacall’ is not a static member of ‘class AsmConfigWidget’
AsmConfigWidget.moc.cpp:65:34: erreur: incomplete type ‘QMetaObject’ used in nested name specifier
AsmConfigWidget.moc.cpp:65:56: erreur: expected primary-expression before ‘int’
AsmConfigWidget.moc.cpp:65:65: erreur: expected primary-expression before ‘void’
AsmConfigWidget.moc.cpp:65:74: erreur: initializer liste d'expressions traitée comme une expression composée
AsmConfigWidget.moc.cpp:66:1: erreur: expected ‘,’ or ‘;’ before ‘{’ token
moc -o BinValueEditor.moc.cpp BinValueEditor.h
moc: Cannot create BinValueEditor.moc.cpp
ce n'est que le début hein, je vous met pas les trois pages d'erreurs :)

Donc voilà, je cherche un peu d'aide pour remplacer ce qu'il faut dans la partie target ... :)
Bon mardi a vous :)
Dernière modification par calve le jeu. 06 mai 2010, 20:39, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Pikdev] Headers Kde3, Qt, moc ...

Message par benjarobin »

Juste comme cela, pourquoi ne pas utiliser le paquet de AUR : http://aur.archlinux.org/packages/pikde ... v/PKGBUILD
J'espère que tu n'as pas passer trop de temps dessus :D
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
calve
newbie
Messages : 7
Inscription : mer. 17 févr. 2010, 00:29

Re: [Pikdev] Headers Kde3, Qt, moc ...

Message par calve »

Parce qu'il ne compile pas.
En fait l'auteur a mit en place ce script chelou a la dernière version, et le pkgbuild a pas l'air d'être mis a jour. En plus, le lien vers l'archive est faux dedans.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Pikdev] Headers Kde3, Qt, moc ...

Message par benjarobin »

As tu installer kdelibs3 ? KDEINC devra pointe vers celui-ci. De plus je pense que l'autotool doit toujours marcher. Il a expliquer pourquoi il a fait ce script... Donc tu peux tenter d'utiliser le paquet de AUR en modifiant en conséquence (Le fichier tar.gz) et si cela ne marche pas, donne les erreurs
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
calve
newbie
Messages : 7
Inscription : mer. 17 févr. 2010, 00:29

Re: [Pikdev] Headers Kde3, Qt, moc ...

Message par calve »

Of course, kdelibs3 est installé ;o
Sans rien touché, yaourt -S pikdev se termine sur

Code : Tout sélectionner

--2010-05-04 17:31:16--  http://pikdev.free.fr/pikdev-1.2.1-1.tar.gz
Résolution de pikdev.free.fr... 212.27.63.124
Connexion vers pikdev.free.fr|212.27.63.124|:80...connecté.
requête HTTP transmise, en attente de la réponse...404 Not Found
2010-05-04 17:31:17 ERREUR 404: Not Found.
Modifions donc le pkgbuild avec le lien et la checksum qui va bien

Code : Tout sélectionner

source=(http://pikdev.free.fr/$pkgname-$pkgver.tar.gz)
md5sums=('12de13c004b4571366762580b67767ab')
ca mouline ... et ...

Code : Tout sélectionner

/tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/./PKGBUILD: line 17: cd: /tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/src/pikdev-1.2.1-1: Aucun fichier ou dossier de ce type
/tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/./PKGBUILD: line 18: ./configure: Aucun fichier ou dossier de ce type
sed: impossible de lire libtool: Aucun fichier ou dossier de ce type
sed: impossible de lire libtool: Aucun fichier ou dossier de ce type
make: *** Pas de cibles spécifiées et aucun makefile n'a été trouvé. Arrêt.
Là, j'avoue que je comprend pas ce qui se passe, et je comprend pas non plus ce que fait le sed dans le pkgbuild ...

Sinon, la compilation avec configure/make se casse aussi la figure :

Code : Tout sélectionner

./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
./configure: line 2019: syntax error near unexpected token `pikdev,'
./configure: line 2019: `AM_INIT_AUTOMAKE(pikdev, 1.2.1)'
Voilà, j'avoue que je suis un peu perdu ... :S
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Pikdev] Headers Kde3, Qt, moc ...

Message par benjarobin »

C'est sur si tu modif a moitie le PKGBUILD cela ne risque pas de marcher...

cd ${srcdir}/${pkgname}-${pkgver}-1
==>
cd ${srcdir}/${pkgname}-${pkgver}

après je ne dis pas que la suite va marcher...
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
calve
newbie
Messages : 7
Inscription : mer. 17 févr. 2010, 00:29

Re: [Pikdev] Headers Kde3, Qt, moc ...

Message par calve »

Arf, quel idiot fais-je :p

Bon, du coup, j'ai l'erreur suivante :

Code : Tout sélectionner

cd . && make -f admin/Makefile.common configure.in ;
make[1]: entrant dans le répertoire « /tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/src/pikdev-1.2.1 »
make[1]: quittant le répertoire « /tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/src/pikdev-1.2.1 »
cd . && /bin/sh /tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/src/pikdev-1.2.1/admin/missing --run aclocal-1.6 
/tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/src/pikdev-1.2.1/admin/missing: line 46: aclocal-1.6 : commande introuvable
WARNING: `aclocal-1.6' is missing on your system.  You should only need it if
         you modified `acinclude.m4' or `configure.in'.  You might want
         to install the `Automake' and `Perl' packages.  Grab them from
         any GNU archive site.
cd . && \
          /bin/sh /tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/src/pikdev-1.2.1/admin/missing --run automake-1.6 --gnu  Makefile
/tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/src/pikdev-1.2.1/admin/missing: line 46: automake-1.6 : commande introuvable
WARNING: `automake-1.6' is missing on your system.  You should only need it if
         you modified `Makefile.am', `acinclude.m4' or `configure.in'.
         You might want to install the `Automake' and `Perl' packages.
         Grab them from any GNU archive site.
cd . && perl admin/am_edit Makefile.in
cd . && rm -f configure
cd . && make -f admin/Makefile.common configure
make[1]: entrant dans le répertoire « /tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/src/pikdev-1.2.1 »
configure.in:39: error: possibly undefined macro: AM_INIT_AUTOMAKE
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.in:44: error: possibly undefined macro: AM_CONFIG_HEADER
configure.in:47: error: possibly undefined macro: AC_CHECK_COMPILERS
configure.in:48: error: possibly undefined macro: AC_ENABLE_SHARED
configure.in:49: error: possibly undefined macro: AC_ENABLE_STATIC
configure.in:54: error: possibly undefined macro: AM_KDE_WITH_NLS
configure.in:57: error: possibly undefined macro: AC_PATH_KDE
configure.in:62: error: possibly undefined macro: AC_CHECK_KDEMAXPATHLEN
make[1]: *** [configure] Erreur 1
make[1]: quittant le répertoire « /tmp/yaourt-tmp-goudale/aur-pikdev/pikdev/src/pikdev-1.2.1 »
make: *** [configure] Erreur 2
A ce que je comprend, c'est parce que j'ai un Automake trop vieux (<1.6). Or, j'ai le dernier disponible dans les dépot ! (1.11)
D'après ce fil ci, c'est parce que le script assume que la version mineure n'est que sur un seul numéro, et trouve donc que 11<6 :S Et le lien vers le patch proposé a l'air cassé ...
J'ai vu sur AUR qu'il se traine un Automake 1.9 ... y'a-t-il un risque si j'enleve mon 1.11 le temps de compiler pikdev ? Ou alors, ca peut le faire si je remplace tout les "aclocal-1.6" par des "aclocal-1.11" ? ca serait trop facile =p

Bon mercredi :)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Pikdev] Headers Kde3, Qt, moc ...

Message par benjarobin »

Je te conseille le remplacement et oui cela marchera (vérifie avant que aclocal-1.11 est bien sur ton système)...
Le .configure laisse a désirer :)
Je ne comprend pas tout son bordel... Regarde cette ligne: am__api_version="1.6"
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
calve
newbie
Messages : 7
Inscription : mer. 17 févr. 2010, 00:29

Re: [Pikdev] Headers Kde3, Qt, moc ...

Message par calve »

Yop !
Ben, ca a compilé tout seul comme un grand :)
Donc en résumé, le bon pkgbuild est (du moins, celui que j'ai utilisé) :

Code : Tout sélectionner

pkgname=pikdev
pkgver=1.2.1
pkgrel=2
pkgdesc="PIC Development IDE for KDE"
license=('GPL')
url="http://pikdev.free.fr/"
depends=('kdelibs3' 'hicolor-icon-theme')
arch=('i686')
install=$pkgname.install
source=(http://pikdev.free.fr/$pkgname-$pkgver.tar.gz)
md5sums=('12de13c004b4571366762580b67767ab')


build() {
  cd ${srcdir}/${pkgname}-${pkgver}
  sed -i 's|^ am__api_version="1.6"| am__api_version="1.11"|g' configure
   ./configure --prefix=/opt/kde --without-arts --disable-rpath
  export KDEDIRS=${pkgdir}/usr:/opt/kde
  # rpath removal
  sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
  sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
  make || return 1
  make prefix=${pkgdir}/usr install || return 1
  rm -rf ${pkgdir}/usr/share/doc/HTML/en/pikdev/common
}
en esperant que ca serve a mon prochain ... :)
steup
newbie
Messages : 1
Inscription : mer. 15 juin 2011, 23:56

Re: [Pikdev] Headers Kde3, Qt, moc ... (résolu)

Message par steup »

Bonjour,

Je ne sais pas pourquoi (j'ai cherché...Sans rien trouver :-( ) mais pour moi la compile se terminait en erreur avec libtool qui ne comprenait pas --hash-style=gnu et --as-needed. ("--hash-style=gnu: Unknown option" ou quelque chose comme ça, suivi de "--as-needed: Unknown option")
Ces deux options se retrouvaient dans le Makefile dans la variable LDFLAGS. Je n'ai pas voulu me casse ma tete a essayer de comprendre comment celui-ci etait généré, j'ai donc "surchargé" LDFLAGS sur la ligne de commande de make, cela dans le PKGBUILD.
Ce qui donne, pour moi, a la ligne 30 du PKGBUILD :
au lieu de :
make
j'ai :
make LDFLAGS=-Wl

Et ca compile nickel.
A adapter sur votre machine, peut-être n'avez vous pas besoin QUE de -Wl

En espérant que ça dépanne.

Edit : Le PKGBUILD inspiré de celui ci-dessus donnerait ça pour "mon" problème :

Code : Tout sélectionner

pkgname=pikdev
pkgver=1.2.1
pkgrel=2
pkgdesc="PIC Development IDE for KDE"
license=('GPL')
url="http://pikdev.free.fr/"
depends=('kdelibs3' 'hicolor-icon-theme')
arch=('i686')
install=$pkgname.install
source=(http://pikdev.free.fr/$pkgname-$pkgver.tar.gz)
md5sums=('12de13c004b4571366762580b67767ab')


build() {
  cd ${srcdir}/${pkgname}-${pkgver}
  sed -i 's|^ am__api_version="1.6"| am__api_version="1.11"|g' configure
   ./configure --prefix=/opt/kde --without-arts --disable-rpath
  export KDEDIRS=${pkgdir}/usr:/opt/kde
  # rpath removal
  sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
  sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
  make LDFLAGS=-Wl || return 1
  make prefix=${pkgdir}/usr install || return 1
  rm -rf ${pkgdir}/usr/share/doc/HTML/en/pikdev/common
}

Répondre