Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 778323

Summary: dev-libs/libpreludedb-5.2.0 - rdlibtool: error logged in slbt_exec_link_create_dep_file(), line 962: path not found: ../../src/.li
Product: Gentoo Linux Reporter: Toralf Förster <toralf>
Component: Current packagesAssignee: No maintainer - Look at https://wiki.gentoo.org/wiki/Project:Proxy_Maintainers if you want to take care of it <maintainer-needed>
Status: RESOLVED FIXED    
Severity: normal CC: orbea
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
See Also: https://bugs.gentoo.org/show_bug.cgi?id=778896
https://bugs.gentoo.org/show_bug.cgi?id=778989
https://bugs.gentoo.org/show_bug.cgi?id=790647
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 765709    
Attachments: emerge-info.txt
dev-libs:libpreludedb-5.2.0:20210326-032006.log
emerge-history.txt
environment
etc.portage.tar.bz2
logs.tar.bz2
temp.tar.bz2

Description Toralf Förster gentoo-dev 2021-03-26 08:04:00 UTC
rdlibtool: lconf: found "/var/tmp/portage/dev-libs/libpreludedb-5.2.0/work/libpreludedb-5.2.0/libtool".
rdlibtool: link: ln -s /dev/null .libs/libpreludedbcpp.a.disabled
rdlibtool: error logged in slbt_exec_link_create_dep_file(), line 962: path not found: ../../src/.libs/.libs/libpreludedb.a.slibtool.deps.
rdlibtool: < returned to > slbt_exec_link_create_library(), line 1291.
rdlibtool: < returned to > slbt_exec_link(), line 1868.
make[4]: *** [Makefile:1246: libpreludedbcpp.la] Error 2

  -------------------------------------------------------------------

  This is an unstable amd64 chroot image at a tinderbox (==build bot)
  name: 17.1_desktop_gnome_systemd-20210318-090503

  -------------------------------------------------------------------

gcc-config -l:
 [1] x86_64-pc-linux-gnu-7.3.1
 [2] x86_64-pc-linux-gnu-10.2.0 *
clang version 11.1.0
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm/11/bin
/usr/lib/llvm/11
11.1.0
Python 3.8.8
Available Ruby profiles:
  [1]   ruby26 (with Rubygems)
  [2]   ruby27 (with Rubygems) *
Available Rust versions:
  [1]   rust-1.50.0 *
The following VMs are available for generation-2:
1)	IcedTea JDK 3.16.0 [icedtea-bin-8]
2)	OpenJDK 8.282_p08 [openjdk-8]
*)	AdoptOpenJDK 8.282_p08 [openjdk-bin-8]
Available Java Virtual Machines:
  [1]   icedtea-bin-8 
  [2]   openjdk-8 
  [3]   openjdk-bin-8  system-vm

The Glorious Glasgow Haskell Compilation System, version 8.10.4

  timestamp(s) of HEAD at this tinderbox image:
/var/db/repos/gentoo	Fri Mar 26 02:35:45 UTC 2021

emerge -qpvO dev-libs/libpreludedb
[ebuild  N    ] dev-libs/libpreludedb-5.2.0  USE="-mysql -postgres -python -sqlite" PYTHON_TARGETS="python3_8 -python3_7"
Comment 1 Toralf Förster gentoo-dev 2021-03-26 08:04:01 UTC
Created attachment 693906 [details]
emerge-info.txt
Comment 2 Toralf Förster gentoo-dev 2021-03-26 08:04:03 UTC
Created attachment 693909 [details]
dev-libs:libpreludedb-5.2.0:20210326-032006.log
Comment 3 Toralf Förster gentoo-dev 2021-03-26 08:04:05 UTC
Created attachment 693912 [details]
emerge-history.txt
Comment 4 Toralf Förster gentoo-dev 2021-03-26 08:04:08 UTC
Created attachment 693915 [details]
environment
Comment 5 Toralf Förster gentoo-dev 2021-03-26 08:04:09 UTC
Created attachment 693918 [details]
etc.portage.tar.bz2
Comment 6 Toralf Förster gentoo-dev 2021-03-26 08:04:11 UTC
Created attachment 693921 [details]
logs.tar.bz2
Comment 7 Toralf Förster gentoo-dev 2021-03-26 08:04:12 UTC
Created attachment 693924 [details]
temp.tar.bz2
Comment 8 orbea 2021-03-26 18:39:06 UTC
dev-libs/libprelude also fails here.
Comment 9 orbea 2021-03-26 18:43:16 UTC
They are both failing because they incorrectly link to foo/.libs/bar.la instead of foo/bar.la. Only the $(LIBTOOL) implementation should touch the .libs directory ideally.
Comment 10 orbea 2021-03-26 19:08:27 UTC
In libprelude: 

  sed -e 's/\.libs//' -i "${S}/bindings/c++/Makefile.am" || die "sed failed"
  sed -e 's/\.libs//' -i "${S}/bindings/lua/Makefile.am" || die "sed failed"

In libpreludedb:

  sed -e 's/\.libs//' -i "${S}/bindings/c++/Makefile.am" || die "sed failed"

And now libpreludedb has another instance of -no-undefined revealing undefined references, anyone understand what should be done to resolve this?

rdlibtool --tag=CXX --mode=link x86_64-pc-linux-gnu-g++ -O2 -pipe -no-undefined -version-info 6:1:4 -Wl,-O1 -Wl,--as-needed -z relro -z now -o libpreludedbcpp.la -rpath /usr/lib64 libpreludedbcpp_la-preludedb.lo libpreludedbcpp_la-preludedb-sql.lo libpreludedbcpp_la-preludedb-error.lo ../../src//libpreludedb.la

rdlibtool: lconf: {.name="libtool"}.
rdlibtool: fdcwd: {.fdcwd=AT_FDCWD, .realpath="/var/tmp/portage/dev-libs/libpreludedb-5.2.0/work/libpreludedb-5.2.0/bindings/c++"}.
rdlibtool: lconf: fstatat(AT_FDCWD,".",...) = 0 {.st_dev = 65026, .st_ino = 140924666}.
rdlibtool: lconf: openat(AT_FDCWD,"libtool",O_RDONLY,0) = -1 [ENOENT].
rdlibtool: lconf: openat(AT_FDCWD,"../",O_DIRECTORY,0) = 5.
rdlibtool: lconf: fstat(5,...) = 0 {.st_dev = 65026, .st_ino = 102418464}.
rdlibtool: lconf: openat(5,"libtool",O_RDONLY,0) = -1 [ENOENT].
rdlibtool: lconf: openat(5,"../",O_DIRECTORY,0) = 6.
rdlibtool: lconf: fstat(6,...) = 0 {.st_dev = 65026, .st_ino = 135568006}.
rdlibtool: lconf: openat(6,"libtool",O_RDONLY,0) = 5.
rdlibtool: lconf: found "/var/tmp/portage/dev-libs/libpreludedb-5.2.0/work/libpreludedb-5.2.0/libtool".
rdlibtool: link: ln -s /dev/null .libs/libpreludedbcpp.a.disabled
rdlibtool: link: x86_64-pc-linux-gnu-g++ .libs/libpreludedbcpp_la-preludedb.o .libs/libpreludedbcpp_la-preludedb-sql.o .libs/libpreludedbcpp_la-preludedb-error.o -O2 -pipe -Wl,-O1 -Wl,--as-needed -z relro -z now -L../../src//.libs -lpreludedb -L/usr/lib64 -lprelude -lgnutls -lpcre -lltdl -ldl -shared -fPIC -Wl,--no-undefined -Wl,-soname -Wl,libpreludedbcpp.so.2 -o .libs/libpreludedbcpp.so.2.4.1
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::ResultValues::ResultValuesRow::get(int)':
preludedb.cxx:(.text+0x55f): undefined reference to `Prelude::IDMEFValue::IDMEFValue(idmef_value*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::ResultValues::ResultValuesRow::toString[abi:cxx11]()':
preludedb.cxx:(.text+0x668): undefined reference to `Prelude::IDMEFValue::isNull() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: preludedb.cxx:(.text+0x6a3): undefined reference to `Prelude::IDMEFValue::~IDMEFValue()'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: preludedb.cxx:(.text+0x6c4): undefined reference to `Prelude::IDMEFValue::getType() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: preludedb.cxx:(.text+0x6db): undefined reference to `Prelude::IDMEFValue::toString[abi:cxx11]() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: preludedb.cxx:(.text+0x710): undefined reference to `Prelude::IDMEFValue::getType() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::getValues(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, Prelude::IDMEFCriteria const*, bool, int, int)':
preludedb.cxx:(.text+0xcd9): undefined reference to `Prelude::IDMEFCriteria::operator idmef_criteria*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::getAlertIdents(Prelude::IDMEFCriteria*, int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)':
preludedb.cxx:(.text+0xda9): undefined reference to `Prelude::IDMEFCriteria::operator idmef_criteria*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::getHeartbeatIdents(Prelude::IDMEFCriteria*, int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)':
preludedb.cxx:(.text+0xe69): undefined reference to `Prelude::IDMEFCriteria::operator idmef_criteria*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::insert(Prelude::IDMEF&)':
preludedb.cxx:(.text+0x10db): undefined reference to `Prelude::IDMEF::operator idmef_object*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::getAlert(unsigned long)':
preludedb.cxx:(.text+0x113b): undefined reference to `Prelude::IDMEF::IDMEF(idmef_object*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::getHeartbeat(unsigned long)':
preludedb.cxx:(.text+0x119b): undefined reference to `Prelude::IDMEF::IDMEF(idmef_object*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::remove(Prelude::IDMEFCriteria*)':
preludedb.cxx:(.text+0x11d0): undefined reference to `Prelude::IDMEFCriteria::operator idmef_criteria*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::updateFromList(std::vector<Prelude::IDMEFPath, std::allocator<Prelude::IDMEFPath> > const&, std::vector<Prelude::IDMEFValue, std::allocator<Prelude::IDMEFValue> > const&, PreludeDB::DB::ResultIdents&)':
preludedb.cxx:(.text+0x13b5): undefined reference to `Prelude::IDMEFPath::operator idmef_path*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: preludedb.cxx:(.text+0x13c9): undefined reference to `Prelude::IDMEFValue::operator idmef_value*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::updateFromList(std::vector<Prelude::IDMEFPath, std::allocator<Prelude::IDMEFPath> > const&, std::vector<Prelude::IDMEFValue, std::allocator<Prelude::IDMEFValue> > const&, std::vector<unsigned long long, std::allocator<unsigned long long> >)':
preludedb.cxx:(.text+0x14d5): undefined reference to `Prelude::IDMEFPath::operator idmef_path*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: preludedb.cxx:(.text+0x14e9): undefined reference to `Prelude::IDMEFValue::operator idmef_value*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::DB::update(std::vector<Prelude::IDMEFPath, std::allocator<Prelude::IDMEFPath> > const&, std::vector<Prelude::IDMEFValue, std::allocator<Prelude::IDMEFValue> > const&, Prelude::IDMEFCriteria*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, int, int)':
preludedb.cxx:(.text+0x15f8): undefined reference to `Prelude::IDMEFCriteria::operator idmef_criteria*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: preludedb.cxx:(.text+0x163d): undefined reference to `Prelude::IDMEFPath::operator idmef_path*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: preludedb.cxx:(.text+0x1651): undefined reference to `Prelude::IDMEFValue::operator idmef_value*() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::PreludeDBError::~PreludeDBError()':
preludedb.cxx:(.text._ZN9PreludeDB14PreludeDBErrorD2Ev[_ZN9PreludeDB14PreludeDBErrorD5Ev]+0x3): undefined reference to `vtable for Prelude::PreludeError'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o: in function `PreludeDB::PreludeDBError::~PreludeDBError()':
preludedb.cxx:(.text._ZN9PreludeDB14PreludeDBErrorD0Ev[_ZN9PreludeDB14PreludeDBErrorD5Ev]+0x3): undefined reference to `vtable for Prelude::PreludeError'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb.o:(.data.rel.ro._ZTIN9PreludeDB14PreludeDBErrorE[_ZTIN9PreludeDB14PreludeDBErrorE]+0x10): undefined reference to `typeinfo for Prelude::PreludeError'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb-error.o: in function `PreludeDB::PreludeDBError::PreludeDBError(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
preludedb-error.cxx:(.text+0xb): undefined reference to `Prelude::PreludeError::PreludeError()'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb-error.o: in function `PreludeDB::PreludeDBError::PreludeDBError(int)':
preludedb-error.cxx:(.text+0x73): undefined reference to `Prelude::PreludeError::PreludeError()'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb-error.o: in function `Prelude::PreludeError::~PreludeError()':
preludedb-error.cxx:(.text._ZN7Prelude12PreludeErrorD2Ev[_ZN7Prelude12PreludeErrorD5Ev]+0x3): undefined reference to `vtable for Prelude::PreludeError'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb-error.o: in function `Prelude::PreludeError::~PreludeError()':
preludedb-error.cxx:(.text._ZN7Prelude12PreludeErrorD0Ev[_ZN7Prelude12PreludeErrorD5Ev]+0x3): undefined reference to `vtable for Prelude::PreludeError'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: .libs/libpreludedbcpp_la-preludedb-error.o:(.data.rel.ro._ZTVN9PreludeDB14PreludeDBErrorE[_ZTVN9PreludeDB14PreludeDBErrorE]+0x20): undefined reference to `Prelude::PreludeError::what() const'
collect2: error: ld returned 1 exit status
rdlibtool: exec error upon slbt_exec_link_create_library(), line 1446: (see child process error messages).
rdlibtool: < returned to > slbt_exec_link(), line 1868.
make[4]: *** [Makefile:1247: libpreludedbcpp.la] Error 2
make[4]: Leaving directory '/var/tmp/portage/dev-libs/libpreludedb-5.2.0/work/libpreludedb-5.2.0/bindings/c++'
make[3]: *** [Makefile:1320: all-recursive] Error 1
make[3]: Leaving directory '/var/tmp/portage/dev-libs/libpreludedb-5.2.0/work/libpreludedb-5.2.0/bindings/c++'
make[2]: *** [Makefile:1145: all-recursive] Error 1
make[2]: Leaving directory '/var/tmp/portage/dev-libs/libpreludedb-5.2.0/work/libpreludedb-5.2.0/bindings'
make[1]: *** [Makefile:1316: all-recursive] Error 1
make[1]: Leaving directory '/var/tmp/portage/dev-libs/libpreludedb-5.2.0/work/libpreludedb-5.2.0'
make: *** [Makefile:1176: all] Error 2
Comment 11 Thomas ANDREJAK 2021-03-26 22:03:29 UTC
What is different from stable portage and make build failed ? New version of GCC ?

Regards
Comment 12 orbea 2021-03-26 23:32:02 UTC
> What is different from stable portage and make build failed ? New version of GCC ?

These are build failures revealed with sys-devel/slibtool, please see this (New) wiki article.

https://wiki.gentoo.org/wiki/Slibtool

In this case libprelude and libpreludedb are failing because they are including '.libs' for the paths found in the automake file which is not correct. GNU libtool is more permissive and allows this, but slibtool expects the paths without. The instances of '.libs' can be just removed like in my sed example.

Additionally libpreludedb is failing because it uses -no-undefined which is something GNU libtool just ignores while slibtool does not. I'm not sure how to fix the actual linking errors which were just hidden before.
Comment 13 Larry the Git Cow gentoo-dev 2022-12-20 14:26:13 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a750b6a419a4ed38314dc2f3441a5d59bba00121

commit a750b6a419a4ed38314dc2f3441a5d59bba00121
Author:     Jakov Smolić <jsmolic@gentoo.org>
AuthorDate: 2022-12-20 13:50:45 +0000
Commit:     Jakov Smolić <jsmolic@gentoo.org>
CommitDate: 2022-12-20 14:25:24 +0000

    dev-libs/libpreludedb: treeclean
    
    Closes: https://bugs.gentoo.org/778323
    Closes: https://bugs.gentoo.org/815457
    Signed-off-by: Jakov Smolić <jsmolic@gentoo.org>

 dev-libs/libpreludedb/Manifest                     |  2 -
 .../libpreludedb-4.0.0-fix-python-bindings.patch   | 39 ---------
 .../files/libpreludedb-5.1.0-fix_gtkdoc_1.32.patch | 13 ---
 dev-libs/libpreludedb/libpreludedb-5.2.0.ebuild    | 93 ----------------------
 dev-libs/libpreludedb/metadata.xml                 | 12 ---
 profiles/package.mask                              |  1 -
 6 files changed, 160 deletions(-)