| Summary: | Build issue: libtqt-perl FTBFS - /usr/bin/ld: cannot find -lsmoketqt (needs smoke/tqt/.libs) | ||
|---|---|---|---|
| Product: | TDE | Reporter: | David C. Rankin <trin> |
| Component: | non-core programs | Assignee: | Timothy Pearson <kb9vqf> |
| Status: | RESOLVED FIXED | ||
| Severity: | blocker | CC: | bugwatch, darrella, michele.calgaro, slavek.banko, trin |
| Priority: | P5 | ||
| Version: | R14.0.0 [Trinity] | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Compiler Version: | TDE Version String: | ||
| Application Version: | Application Name: | ||
| Attachments: | patch correcting incorrect -lsmoke directory | ||
|
Description
David C. Rankin
2014-01-26 01:17:48 CST
This one is really bizarre. The failure is: LD_RUN_PATH="/opt/tqt3/lib:/lib/../lib:/opt/trinity/lib" g++ -shared -Wl,-O1,--sort-common,--as-needed,-z,relro -L/usr/local/lib -fstack-protector TQt.o handlers.o -Wl,--rpath -Wl,/opt/trinity/lib -Wl,--rpath -Wl,/opt/tqt3/lib -o blib/arch/auto/TQt/TQt.so \ -L/opt/tqt3/lib -L/opt/trinity/lib -L/opt/trinity/lib -L/opt/trinity/lib/trinity -lcrypt -ltqt-mt -lpng -lz -lm -lXext -lX11 -lSM -lICE -lpthread -L/build/tde-libtqt-perl/src/libtqt-perl/smoke/qt/.libs -lsmoketqt \ Uugh is was PerlTQt/Makefile.PL.in: my $localsmoke = File::Spec->catdir($abs_topdir,"smoke","qt",".libs"); Should be: my $localsmoke = File::Spec->catdir($abs_topdir,"smoke","tqt",".libs"); I'll attach a patch. "make" runs/builds fine, but "make test" is failing. I'll work on that later. Created attachment 1893 [details]
patch correcting incorrect -lsmoke directory
Patch correcting libtqt-perl/PerlTQt/Makefile.PL.in:
-my $localsmoke = File::Spec->catdir($abs_topdir,"smoke","qt",".libs");
+my $localsmoke = File::Spec->catdir($abs_topdir,"smoke","tqt",".libs");
This is the line causing "make test" to fail. It is attempting to change into PerlTQt before running "perl test.pl", but test.pl is NOT in ./PerlTQt, it is in the base directory of the build. The problem is due to configure.in passing the program name and version to AM_INIT_AUTOMAKE: configure.in:41:AM_INIT_AUTOMAKE(PerlTQt, 3.008) dnl searches for some needed programs The use of AM_INIT_AUTOMAKE($1, $2) is now deprecated in automake 1.14 and will be an error in automake 2. However, the issue here is that passing the program,version information causes 'top_distdir' to be set to PerlTQt instead of '.' which in turn causes the "make test" failure. Originally top_distdir is correctly set: Makefile.in:417:top_distdir = . But is reset somewhere in the tangle of the perl, libtool, autotool jungle used to build this lib.... Other thoughts? I was able to build "make test" by correcting the path in the Makefile after "make" had completed. The operation of "make test" is dubious. It appears to attempt testing the libsmoke shared objects against a set of tests and if it fails, the erases the libsmoke library files from the install?
The Makefile lines in both Makefile.am and Makefile.in that cause "make test" to initially fail to run are:
Makefile.am: cd $(top_distdir) && LD_LIBRARY_PATH="../../smoke/tqt/.libs:@qt_libraries@" PERL_DL_NONLAZY=1 perl test.pl
Makefile.in:662: cd $(top_distdir) && LD_LIBRARY_PATH="../../smoke/tqt/.libs:@qt_libraries@" PERL_DL_NONLAZY=1 perl test.pl
As noted earlier, "make test would fail to call "perl test.pl" due to $(top_distdir) being "PerlTQt-3.008" instead of '.' such that when the cd occurred it failed as there is no PerlTQt-3.008 directory. After patching to get rid of the $VERSION information, "make test" successfully cd'ed into PerlTQt where "make test" calls "perl test.pl" which likewise fails because test.pl is in the top_distdir = libtqt-perl NOT in libtqt-perl/PerlTQt.
This package build through the initial "make" perfectly (after the libsmoke patch is applied), but from there on through "make test", the automake files are FUBAR.
Here is the output of "make test"
==> Starting make test...
cd . && LD_LIBRARY_PATH="../../smoke/tqt/.libs:/opt/tqt3/lib" PERL_DL_NONLAZY=1 perl test.pl
a_loading.t .......... ok
Useless use of left bitshift (<<) in void context at b_nogui.t line 45.
b_nogui.t ............
Failed 4/6 subtests
(less 2 skipped subtests: 0 okay)
c_qapp.t .............
No subtests run
Name "main::a" used only once: possible typo at ca_i18n.t line 5.
--- No method to call for :
TQt::Application()
at ca_i18n.t line 5.
ca_i18n.t ............
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/1 subtests
defined(@array) is deprecated at ../blib/lib/TQt/isa.pm line 48.
(Maybe you should just omit the defined()?)
d_sigslot.t ..........
No subtests run
defined(@array) is deprecated at ../blib/lib/TQt/isa.pm line 48.
(Maybe you should just omit the defined()?)
e_sigslot_inherit.t ..
No subtests run
defined(@array) is deprecated at ../blib/lib/TQt/isa.pm line 48.
(Maybe you should just omit the defined()?)
Can't locate package TQt::TextCodec for @My::SubCodec::ISA at ../blib/lib/TQt/isa.pm line 39.
f_import.t ...........
No subtests run
defined(@array) is deprecated at ../blib/lib/TQt/isa.pm line 48.
(Maybe you should just omit the defined()?)
Undefined subroutine &TQt::StyleFactory::keys called at g_gui.t line 114.
g_gui.t ..............
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/1 subtests
Test Summary Report
-------------------
b_nogui.t (Wstat: 0 Tests: 6 Failed: 4)
Failed tests: 1-4
c_qapp.t (Wstat: 139 Tests: 0 Failed: 0)
Non-zero wait status: 139
Parse errors: No plan found in TAP output
ca_i18n.t (Wstat: 65280 Tests: 0 Failed: 0)
Non-zero exit status: 255
Parse errors: Bad plan. You planned 1 tests but ran 0.
d_sigslot.t (Wstat: 139 Tests: 0 Failed: 0)
Non-zero wait status: 139
Parse errors: No plan found in TAP output
e_sigslot_inherit.t (Wstat: 139 Tests: 0 Failed: 0)
Non-zero wait status: 139
Parse errors: No plan found in TAP output
f_import.t (Wstat: 139 Tests: 0 Failed: 0)
Non-zero wait status: 139
Parse errors: No plan found in TAP output
g_gui.t (Wstat: 65280 Tests: 0 Failed: 0)
Non-zero exit status: 255
Parse errors: Bad plan. You planned 1 tests but ran 0.
Files=8, Tests=7, 1 wallclock secs ( 0.05 usr 0.01 sys + 0.59 cusr 0.14 csys = 0.79 CPU)
Result: FAIL
Failed 7/8 test programs. 4/7 subtests failed.
Makefile:957: recipe for target 'test' failed
make: *** [test] Error 255
Eliminating the "make test" from the build, packaging the results of "make" provides:
04:57 phoinix:/dat_e/tde> tar -tJf pkg/x86_64/tde-libtqt-perl-14.0.0-1-x86_64.pkg.tar.xz
.PKGINFO
.MTREE
opt/
opt/trinity/
opt/trinity/lib/
opt/trinity/bin/
opt/trinity/share/
opt/trinity/include/
opt/trinity/include/smoke.h
opt/trinity/share/man/
opt/trinity/share/man/man1/
opt/trinity/share/man/man1/puic.1
opt/trinity/bin/puic
opt/trinity/lib/libsmoketqt.so
opt/trinity/lib/libsmoketqt.la
opt/trinity/lib/libsmoketqt.so.1.2.1
opt/trinity/lib/libsmoketqt.so.1
usr/
usr/lib/
usr/bin/
usr/share/
usr/share/man/
usr/share/man/man3/
usr/share/man/man3/TQt.3pm.gz
usr/bin/pqtsh
usr/bin/pqtapi
usr/lib/perl5/
usr/lib/perl5/core_perl/
usr/lib/perl5/vendor_perl/
usr/lib/perl5/vendor_perl/auto/
usr/lib/perl5/vendor_perl/TQt/
usr/lib/perl5/vendor_perl/TQt.pm
usr/lib/perl5/vendor_perl/TQt/properties.pm
usr/lib/perl5/vendor_perl/TQt/signals.pm
usr/lib/perl5/vendor_perl/TQt/slots.pm
usr/lib/perl5/vendor_perl/TQt/isa.pm
usr/lib/perl5/vendor_perl/TQt/enumerations.pm
usr/lib/perl5/vendor_perl/TQt/debug.pm
usr/lib/perl5/vendor_perl/TQt/GlobalSpace.pm
usr/lib/perl5/vendor_perl/TQt/constants.pm
usr/lib/perl5/vendor_perl/TQt/attributes.pm
usr/lib/perl5/vendor_perl/auto/TQt/
usr/lib/perl5/vendor_perl/auto/TQt/TQt.so
usr/lib/perl5/vendor_perl/auto/TQt/TQt.bs
Tim, I'm punting to you. I just keep chasing-my-tail through the autofoo jungle.
Comment on attachment 1893 [details]
patch correcting incorrect -lsmoke directory
Pushed to GIT in hash 55d10eed.
In any case, it does not seem like a good idea to build libsmoketqt here because it is already built in tdebindings. In this way I noticed that here has not been updated kalyptus according to latest changes in tdebindgins (fixed in GIT hash a2f400d5).
David, Slavek, so can we close this bug? |