Subject: Re: please build qt3-libs and qt3-tools using buildlink3 (patches provided)
To: Jeremy C. Reed <reed@reedmedia.net>
From: Bang Jun-Young <junyoung@mogua.com>
List: tech-pkg
Date: 07/10/2004 23:51:03
Bang Jun-Young wrote:
> Jeremy C. Reed wrote:
> > In PR #25753, Joachim Kuebart provided some ideas on making qt3-libs
> > build using buildlink3.
> >
> > Early last month, I used these ideas under Linux and NetBSD 1.6.2 to
> > build and install qt3-libs and qt3-tools and a few packages using qt3.
> >
> > Please test the following patches. (It also makes qt3-libs pkgview
> > ready but I did not test that.)
> >
> > In the qmake.conf patch below, it should probably use
> > ${_COMPILER_LD_FLAG}${_OPSYS_RPATH_NAME} instead and the post-patch SED
> > work at bottom of Makefile.common should do that too. (If you can test
> > that instead, please do so.)
> 
> Still doesn't build on FreeBSD 5.2.1. :-(

[Oops, please ignore the last mail from me, which is too long]

On NetBSD:

/usr/pkg/bin/libtool --mode=link g++ [...] -rpath  /usr/pkg/qt3/lib
mkdir ../lib/.libs
g++ -shared -nostdlib /usr/lib/crti.o /usr/lib/crtbeginS.o [...] -o ../lib/.libs/libqt-mt.so.3.3
(cd ../lib/.libs && rm -f libqt-mt.so.3 && ln -s libqt-mt.so.3.3 libqt-mt.so.3)
(cd ../lib/.libs && rm -f libqt-mt.so && ln -s libqt-mt.so.3.3 libqt-mt.so)

On FreeBSD:

/usr/pkg/bin/libtool --mode=link g++ [...] -rpath  /usr/pkg/qt3/lib
mkdir ../lib/.libs
creating reloadable object files...
creating a temporary reloadable object file: ../lib/.libs/../lib/libqt-mt.la-2.o
ld -r -o ../lib/.libs/../lib/libqt-mt.la-1.o .obj/release-shared-mt/.libs/qtaddons_x11.o [...] .obj/release-shared-mt/.libs/moc_qworkspace.o 
/usr/bin/ld: cannot open output file ../lib/.libs/../lib/libqt-mt.la-1.o: No such file or directory

Relevant libtool/ltmain.sh code snippet:

        if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
           test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
          :
        else
          # The command line is too long to link in one step, link piecewise.
          $echo "creating reloadable object files..."

          [... comments snipped ...]
          if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
            save_libobjs=$libobjs
          fi
          save_output=$output

          # Clear the reloadable object creation command queue and
          # initialize k to one.
          test_cmds=
          concat_cmds=
          objlist=
          delfiles=
          last_robj=
          k=1
          output=$output_objdir/$save_output-${k}.$objext
        ...

          $echo "creating a temporary reloadable object file: $output"

What matters above is the value of $output. It should be
../lib/.libs/libqt-mt.la-1.o but ../lib is taking place in the middle of
the path name. Where does ../lib come from?

Jun-Young