Project

General

Profile

Bug #622

compile libprelude à partir des souces avec freebsd

Added by patrick moulin over 8 years ago. Updated over 8 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Target version:
-
Start date:
09/16/2015
Due date:
% Done:

0%

Resolution:

Description

Bonjour,

J'essaye de compiler libprelude 1.2.5 à partir des sources et j'obtiens une erreur au moment de la compilation de libpreludedb. Voici comment j'ai procédé :

Installation des packages suivant :**

gnutls, pkgconf, libgcrypt, wget, perl 5.18 python27, mysql55-server et création du fichier `/usr/local/bin/libgnutls-config` :

Téléchargement des sources puis
./configure

j'obtiens
  • Dumping configuration ***
    - Generate documentation : no
    - LUA binding : no
    - Perl binding : yes
    - Python2.x binding : yes
    - Python3.x binding : no
    - Ruby binding : no
    - Easy bindings : yes

Je fais make puis make install, et tout se passe bien, aucune erreur de compil

j'ai également verifié que le fichier /usr/local/bin/libprelude-config était présent (c'est le cas) et j'ai bien déclaré les variables environnement avec la commande setenv LD_LIBRARY_PATH /usr/local/lib

Les fichiers `libprelude.a`, `libprelude.la`, `libpreludecpp.a` et `libpreludecpp.la` on été crées dans `/usr/local/lib`, et les headers ont bien été placés dans `/usr/local/include`

lorsque je tente l'installation de libpreludedb ou prelude-LML, j'ai systématiquement ce même message d'erreur

checking for libprelude-config... /usr/local/bin/libprelude-config
checking for libprelude - version >= 1.2.5... no
  • Could not run libprelude test program, checking why...
  • The test program failed to compile or link. See the file config.log for the
  • exact error that occured. This usually means LIBPRELUDE was incorrectly installed
  • or that you have moved LIBPRELUDE since it was installed. In the latter case, you
  • may want to edit the libprelude-config script: /usr/local/bin/libprelude-config
    configure: error: Cannot find libprelude: Is libprelude-config in the path?

Si je compile à partir des ports via la commande portmaster, cela fonctionne mais je n'ai que la version 1.0.1 et j'aimerais profité des dernières mises à jour.

Merci

libprelude-config.log View - libprelude.log (1.33 MB) patrick moulin, 09/16/2015 08:21 AM

libpreludedb-config.log View - libpreludedb.log (47.2 KB) patrick moulin, 09/16/2015 08:21 AM

History

#1 Updated by patrick moulin over 8 years ago

Problème réglé. Pour ceux qui rencontreraient le même problème, il suffit d'éditer le fichier libprelude-config et remplacer "thread_set=no" par "thread_set=yes"
Par contre je rencontre un autre soucis quand à l'installation de prewikka qui par ailleurs se deroule parfaitement bien sauf que lorsque je lance

/usr/local/bin/prewikka-httpd

J'obtiens
18 Sep 11:16:15 (process:9371) WARNING: /usr/local/lib/libpreludedb/plugins/formats/classic: file not found.
18 Sep 11:16:15 (process:9371) WARNING: /usr/local/lib/libpreludedb/plugins/formats/libclassic: file not found.
18 Sep 11:16:15 (process:9371) WARNING: /usr/local/lib/libpreludedb/plugins/sql/libmysql: file not found.
18 Sep 11:16:15 (process:9371) WARNING: /usr/local/lib/libpreludedb/plugins/sql/mysql: file not found.
Traceback (most recent call last):
  File "/usr/local/bin/prewikka-httpd", line 162, in <module>
    core = Core.get_core_from_config(config)
  File "/usr/local/lib/python2.7/site-packages/prewikka/Core.py", line 70, in get_core_from_config
    _core_cache[path] = Core(path)
  File "/usr/local/lib/python2.7/site-packages/prewikka/Core.py", line 125, in __init__
    self._initDatabase()
  File "/usr/local/lib/python2.7/site-packages/prewikka/Core.py", line 143, in _initDatabase
    self._env.db = Database.Database(config)
  File "/usr/local/lib/python2.7/site-packages/prewikka/Database.py", line 86, in __init__
    self._sql = preludedb_sql_new(db_type.encode("utf8"), settings)
preludedb.PreludeDBError: Could not load sql plugin 'mysql'

J'ai bien déclaré les varibles :
setenv PYTHONPATH /usr/local/lib/python2.7/site-packages:/usr/local/bin/prewikka-httpd

Dans "/usr/local/lib/libpreludedb/plugins/formats/" j'ai bien les librairies suivantes :
-classic.la
-libclassic.so
Et dans "/usr/local/lib/libpreludedb/plugins/sql"
-mysql.la
-libmysql.so
Merci

#2 Updated by Antoine LUONG over 8 years ago

  • Status changed from New to Assigned
  • Assignee set to Antoine LUONG

Hello,

-- Nous répondons en anglais car il s'agit d'un tracker international. --

Thanks for reporting this error. Could you try using ldd on the .so file?
Please note that the latest Prelude version is 1.2.6.

Regards

#3 Updated by patrick moulin over 8 years ago

Merci pour votre réponse,

Pourriez vous être plus précis concernant cette procédure "Could you try using ldd on the .so file" ?

#4 Updated by patrick moulin over 8 years ago

Bonjour,

Je suis désolé de ne pouvoir vous répondre en anglais, celui ci étant très pauvre. Je pense avoir compris ce message d'erreur tout simplement parce que j'ai le fichier linmysql.so dans "/usr/local/lib/libpreludedb/plugins/sql" alors que je devrai avoir le fichier "mysql.so".
Au moment de la configuration de libpreludedb j'ai bien

Enable MySQL plugin : yes

Il doit me manquer un package mais lequel?

Merci

#5 Updated by patrick moulin over 8 years ago

Edit :
root@patrick:/ # ldd /usr/local/lib/libpreludedb/plugins/sql/libmysql.so
ldd: /usr/local/lib/libpreludedb/plugins/sql/libmysql.so: not a dynamic executable

#6 Updated by Antoine LUONG over 8 years ago

Hello,

Please try to change execution permissions on the file(s).

#7 Updated by patrick moulin over 8 years ago

hello,

J'ai repris l'installation depuis le début considérant que le soucis provenait de libprelude. J'obtiens bien les lignes suivantes :

  • Dumping configuration ***
    - Generate documentation : no
    - LUA binding : no
    - Perl binding : yes
    - Python binding : yes
    - Ruby binding : no
    - Easy bindings : yes

make puis make install, tout se passe bien sans aucune erreur. Ensuite "/sbin/ldconfig -m /usr/local/lib" puis "setenv LD_LIBRARY_PATH /usr/local/lib"

Je vais ensuite regarder mon dossier /usr/local/lib et là je constate que seuls les 4 fichiers suivant sont présents :

libpreludecpp.la
libpreludecpp.a
libprelude.la
libprelude.a

Je décide par ailleurs de faire une autre install mais cette fois avec les ports de freebsd et avec la commande "portmaster" sauf que la version installée est la 1.0.1. .Encore une fois tout se passe bien mais cette fois en vérifiant mon dossier /usr/local/lib j'obtient les fichiers suivants:

libpreludecpp.la
libpreludecpp.a
libprelude.la
libprelude.a
libpreludecpp.so
libpreludecpp.so.0
libprelude.so
libprelude.so.2
libprelude.so.2.19.1

Voila à mon avis ou se situe l'erreur, visiblement la librairie ne s'est pas compilée correctement avec les sources 1.2.6. Si vous avec une idée... Dans l'eventualité ou il s'agirait d'une impossibilité d'installer les dernières sources, est ce que la version 1.0.1 reste encore aujourd'hui suffisamment "actuelle" pour etre installé sur un serveur?

Merci

#8 Updated by Antoine LUONG over 8 years ago

Hello,

Les fichiers .so ont-ils été créés dans l'arborescence de sources ? Si non, pouvez-vous fournir la sortie de la commande make ?

#9 Updated by patrick moulin over 8 years ago

Hello,

Non les fichiers .so n'ont pas été créés et voici ce que me donne le retour de la commande make

root@apache:/tmp/libprelude-1.2.6 # make
make  all-recursive
Making all in libltdl
make  all-am
Making all in libmissing
make  all-recursive
Making all in tests
make  all-recursive
Making all in .
Making all in m4
Making all in src
make  all-recursive
Making all in libprelude-error
make  all-am
Making all in include
Making all in prelude-admin
Making all in bindings
Making all in c++
Making all in include
Making all in lua
Making all in python
CC="c++" /usr/local/bin/python2.7 setup.py build
running build
running build_py
running build_ext
Making all in ruby
Making all in docs
Making all in api
Making all in manpages
Making all in tests
root@apache:/tmp/libprelude-1.2.6 #

Merci

#10 Updated by Antoine LUONG over 8 years ago

Le problème semble venir de ces lignes du configure :

configure:16116: checking if libtool supports shared libraries
configure:16118: result: no
configure:16121: checking whether to build shared libraries
configure:16142: result: no

Voir par exemple http://lists.freebsd.org/pipermail/freebsd-current/2013-March/040460.html pour un problème similaire.

#11 Updated by patrick moulin over 8 years ago

En suivant l'idée et le lien que vous m'avez donné, il semblerait que cela pourrait effectivement venir du configure qui ne prendrait pas en compte la version 10 de freebsd. J'ai donc essayé sur la version 9.3 de freebsd.
./configure
par contre au moment de taper make, j'ai l'erreur suivante :

"Makefile", line 2306: Need an operator
make: fatal errors encountered -- cannot continue

En regardant le fichier Makefile, je constate que c'est la ligne "-include $(top_srcdir)/git.mk" qui pose probleme

J'installe alors gmake puis gmake install cela fonctionne et j'ai enfin ma librairie de fichiers

libpreludecpp.so.3
libpreludecpp.so
libpreludecpp.la
libprelude.so.22
libprelude.so
libprelude.la

Je compile egalement libprelude db et j'ai enfinfin mon plugin "mysql.so" dans "/usr/local/lib/libpreludedb/plugins/sql/"

Enfin lorsque je tape :

root@prelude:/ # ldd /usr/local/lib/libpreludedb/plugins/sql/mysql.so
/usr/local/lib/libpreludedb/plugins/sql/mysql.so:
        libpreludedb.so.4 => /usr/local/lib/libpreludedb.so.4 (0x801204000)
        libprelude.so.22 => /usr/local/lib/libprelude.so.22 (0x801414000)
        libthr.so.3 => /lib/libthr.so.3 (0x8017ec000)
        libgnutls.so.28 => /usr/local/lib/libgnutls.so.28 (0x801a0f000)
        libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801d2c000)
        libgpg-error.so.0 => /usr/local/lib/libgpg-error.so.0 (0x801fd9000)
        libmysqlclient.so.18 => /usr/local/lib/mysql/libmysqlclient.so.18 (0x8021ea000)
        libz.so.6 => /lib/libz.so.6 (0x802729000)
        libm.so.5 => /lib/libm.so.5 (0x80293d000)
        libc.so.7 => /lib/libc.so.7 (0x80081b000)
        libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x802b5e000)
        libp11-kit.so.0 => /usr/local/lib/libp11-kit.so.0 (0x802e5a000)
        libtspi.so.1 => /usr/local/lib/libtspi.so.1 (0x8030ab000)
        libtasn1.so.6 => /usr/local/lib/libtasn1.so.6 (0x80331b000)
        libnettle.so.4 => /usr/local/lib/libnettle.so.4 (0x80352d000)
        libhogweed.so.2 => /usr/local/lib/libhogweed.so.2 (0x80375a000)
        libgmp.so.10 => /usr/local/lib/libgmp.so.10 (0x803988000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x803bfd000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x803e08000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x80410f000)
        libffi.so.6 => /usr/local/lib/libffi.so.6 (0x80431d000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x804524000)

En résumé cela fonctionne avec freebsd 9.3 et gmake et cela ne fonctionne pas avec freebsd 10.1 même avec gmake

Merci

#12 Updated by Antoine LUONG over 8 years ago

  • Status changed from Assigned to Resolved

Also available in: Atom PDF