My first experience as a libtool user: "A pain in the ar*se"

2007-12-20 Thread bapluda

I was installing 2 packages that use libtool:
The first one I had to hack the Makefile. It was complaining about a library
that WAS there and it said it wasn't.

The second one I don't know what to hack, I have this error:
---
[EMAIL PROTECTED]:~/temp/rcssserver-11.1.2/src> /bin/sh ../libtool --tag=CXX  
--mode=link g++ -W -Wall -I./src -g -O2 -pthread  -L/home/mysql/robocup/lib
-L/home/mysql/boost/lib -o rcssserver hetroplayer.o main.o field.o netif.o
object.o xmlreader.o landmarkreader.o coach.o bodysensor.o player.o
monitor.o audio.o serializer.o serializerplayerstdv1.o
serializerplayerstdv7.o serializerplayerstdv8.o serializercoachstdv1.o
serializercoachstdv7.o serializercoachstdv8.o serializeronlinecoachstdv1.o
serializeronlinecoachstdv6.o serializeronlinecoachstdv7.o
serializeronlinecoachstdv8.o serializercommonstdv1.o serializercommonstdv7.o
serializercommonstdv8.o referee.o visual.o bodysender.o fullstatesender.o
initsender.o libimports.o   -lrcsstimer -lrcssclangparser -lrcsspcomparser
-lrcssresultsaver -lrcssplayerparam -lrcssserverparam -lrcssutil
-lrcssconfparser -lrcsslib -lrcsserror -lrcssnet -lrcssgz -lrcssbase
-lboost_filesystem -lz -lm   -ldl
libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la'
was moved.
libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la'
was moved.
libtool: link: cannot find the library `/home/mysql/lib/librcsserror.la' or
unhandled argument `/home/mysql/lib/librcsserror.la'

--
again the bloody `/home/mysql/robocup/lib/librcsserror.la' is in place. And
why the heck is it searching for `/home/mysql/lib/librcsserror.la' if that
directory doesn't exist and I didn't specify that anywhere?

Really it makes me wonder if this multiplaform building isn't just a cliche,
and it's worse than just making programmers provide a separate package for
each platform.
-- 
View this message in context: 
http://www.nabble.com/My-first-experience-as-a-libtool-user%3A-%22A-pain-in-the-ar*se%22-tp14424239p14424239.html
Sent from the Gnu - Libtool - Discuss mailing list archive at Nabble.com.



___
http://lists.gnu.org/mailman/listinfo/libtool


Re: My first experience as a libtool user: "A pain in the ar*se"

2007-12-20 Thread Ralf Wildenhues
Hello bapluda,

* bapluda wrote on Wed, Dec 19, 2007 at 09:08:21PM CET:
> 
> [EMAIL PROTECTED]:~/temp/rcssserver-11.1.2/src> /bin/sh ../libtool --tag=CXX  
> --mode=link g++ -W -Wall -I./src -g -O2 -pthread  -L/home/mysql/robocup/lib
> -L/home/mysql/boost/lib -o rcssserver hetroplayer.o main.o field.o netif.o
> object.o xmlreader.o landmarkreader.o coach.o bodysensor.o player.o
> monitor.o audio.o serializer.o serializerplayerstdv1.o
> serializerplayerstdv7.o serializerplayerstdv8.o serializercoachstdv1.o
> serializercoachstdv7.o serializercoachstdv8.o serializeronlinecoachstdv1.o
> serializeronlinecoachstdv6.o serializeronlinecoachstdv7.o
> serializeronlinecoachstdv8.o serializercommonstdv1.o serializercommonstdv7.o
> serializercommonstdv8.o referee.o visual.o bodysender.o fullstatesender.o
> initsender.o libimports.o   -lrcsstimer -lrcssclangparser -lrcsspcomparser
> -lrcssresultsaver -lrcssplayerparam -lrcssserverparam -lrcssutil
> -lrcssconfparser -lrcsslib -lrcsserror -lrcssnet -lrcssgz -lrcssbase
> -lboost_filesystem -lz -lm   -ldl
> libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la'
> was moved.
> libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la'
> was moved.
> libtool: link: cannot find the library `/home/mysql/lib/librcsserror.la' or
> unhandled argument `/home/mysql/lib/librcsserror.la'

Typically this happens when librcsserror.la was created with an argument
of
  -rpath /home/mysql/lib

but installed into the directory
  /home/mysql/robocup/lib

instead (that accounts for the "was moved" warning), and there is
another installed libtool library (*.la file) that you link against
which lists
  /home/mysql/lib/librcsserror.la

as its dependency (that accounts for the error).

The solution to both problems is to specify the right to-be-installed
location when creating librcsserror.la in the first place.

If you use Automake, then that should typically work all by itself, if
you don't, then I can likely point at what's wrong if you post the
Makefile bits relevant for creation of librcsserror.la.

Please note that you should list dependent uninstalled libraries (it
doesn't look like you have them, but I can't be sure yet) as
  ../relative/path/libfoo.la

Hope that helps.

Cheers,
Ralf


___
http://lists.gnu.org/mailman/listinfo/libtool


Re: rm -f

2007-12-20 Thread Patrick Welche
On Sun, Dec 16, 2007 at 10:04:59AM +0100, Ralf Wildenhues wrote:
> Hello,
> 
> * Patrick Welche wrote on Fri, Dec 14, 2007 at 08:58:51PM CET:
> > On Fri, Dec 14, 2007 at 12:27:48PM -0700, Eric Blake wrote:
> > > 
> > > The general idiom for this is 'rm -f dummy $files', so that even if $files
> > > is empty, you are still passing an argument to rm, and the -f avoids
> > > failure on the dummy argument.
> > 
> > Elegant!
> 
> Only if you have a dummy file to remove.  In libtool it's easier to just
> add
>   test -z "$files" || $RM $files
> 
> as appropriate.  Which tests are failing for you, Patrick?  I assume
> this is NetBSD?

In fact it seems to come from line 6202/6203 in libltdl/config/ltmain.m4sh:

  6194  if ${skipped_export-false}; then
  6195func_echo "generating symbol list for \`$libname.la'"
  6196export_symbols="$output_objdir/$libname.exp"
  6197$opt_dry_run || $RM $export_symbols
  6198libobjs=$output
  6199# Append the command to create the export file.
  6200test -z "$concat_cmds" || concat_cmds=$concat_cmds~
  6201eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
  6202if test -n "$output"; then
  6203  eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
  6204fi
  6205  fi


Do we want to delete $output or $last_robj?

Cheers,

Patrick


___
http://lists.gnu.org/mailman/listinfo/libtool


Re: My first experience as a libtool user: "A pain in the ar*se"

2007-12-20 Thread bapluda



Ralf Wildenhues wrote:
> 
> Hello bapluda,
> 
> * bapluda wrote on Wed, Dec 19, 2007 at 09:08:21PM CET:
>> 
>> [EMAIL PROTECTED]:~/temp/rcssserver-11.1.2/src> /bin/sh ../libtool --tag=CXX 
>>  
>> --mode=link g++ -W -Wall -I./src -g -O2 -pthread 
>> -L/home/mysql/robocup/lib
>> -L/home/mysql/boost/lib -o rcssserver hetroplayer.o main.o field.o
>> netif.o
>> object.o xmlreader.o landmarkreader.o coach.o bodysensor.o player.o
>> monitor.o audio.o serializer.o serializerplayerstdv1.o
>> serializerplayerstdv7.o serializerplayerstdv8.o serializercoachstdv1.o
>> serializercoachstdv7.o serializercoachstdv8.o
>> serializeronlinecoachstdv1.o
>> serializeronlinecoachstdv6.o serializeronlinecoachstdv7.o
>> serializeronlinecoachstdv8.o serializercommonstdv1.o
>> serializercommonstdv7.o
>> serializercommonstdv8.o referee.o visual.o bodysender.o fullstatesender.o
>> initsender.o libimports.o   -lrcsstimer -lrcssclangparser
>> -lrcsspcomparser
>> -lrcssresultsaver -lrcssplayerparam -lrcssserverparam -lrcssutil
>> -lrcssconfparser -lrcsslib -lrcsserror -lrcssnet -lrcssgz -lrcssbase
>> -lboost_filesystem -lz -lm   -ldl
>> libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la'
>> was moved.
>> libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la'
>> was moved.
>> libtool: link: cannot find the library `/home/mysql/lib/librcsserror.la'
>> or
>> unhandled argument `/home/mysql/lib/librcsserror.la'
> 
> Typically this happens when librcsserror.la was created with an argument
> of
>   -rpath /home/mysql/lib
> 
> but installed into the directory
>   /home/mysql/robocup/lib
> 
> instead (that accounts for the "was moved" warning), and there is
> another installed libtool library (*.la file) that you link against
> which lists
>   /home/mysql/lib/librcsserror.la
> 
> as its dependency (that accounts for the error).
> 
> The solution to both problems is to specify the right to-be-installed
> location when creating librcsserror.la in the first place.
> 
> If you use Automake, then that should typically work all by itself, if
> you don't, then I can likely point at what's wrong if you post the
> Makefile bits relevant for creation of librcsserror.la.
> 
> Please note that you should list dependent uninstalled libraries (it
> doesn't look like you have them, but I can't be sure yet) as
>   ../relative/path/libfoo.la
> 
> Hope that helps.
> 
> Cheers,
> Ralf
> 
> 
> ___
> http://lists.gnu.org/mailman/listinfo/libtool
> 
> 

Hi Ralf
It helped! Thanks very much! First I rebuilt the package that creates
librcsserror.la.
And then I rebuilt the problem package and everything was smooth. But I
still don't know how I could have possibly specified /home/mysql/lib the
first time I built librcsserror.la .
I used this command both times:
./configure --prefix=$RCSSBASE --with-boost=$BOOST_ROOT

And RCSSBASE is set by my .bashrc to "$HOME/robocup"

Cheers

Ian
-- 
View this message in context: 
http://www.nabble.com/My-first-experience-as-a-libtool-user%3A-%22A-pain-in-the-ar*se%22-tp14424239p14443591.html
Sent from the Gnu - Libtool - Discuss mailing list archive at Nabble.com.



___
http://lists.gnu.org/mailman/listinfo/libtool


>> My first experience as a libtool user: "A pain in the ar*se"

2007-12-20 Thread Roebe XXX
> Really it makes me wonder if this multiplaform building isn't just a cliche,
> and it's worse than just making programmers provide a separate package for
> each platform.


I totally understand your opinion and I must admit I am in the camp of 
these to say that I find... that libtool seems to ... complicate issues 
sometimes. :-)

In a way I'd actually love to see libtool and pkg-config join forces 
so that a user only needs "both" of them, and thus only one of these. 
The .la files approach would be better tied together with what 
info a .pc file offers (I mention pkg-config here, because normally 
pkg-config gives me less problems as I just dump all my .pc files into 
one dir, whereas the .la files are scattered right next to the 
various .so files. pkg-config probably does less than libtool
but I am mostly talking from a biased user opinion here)

There however is one great advantage libtool actually has - this is 
helpful people. :-)

Props to them for being able to maintain such a big shell script!


=


-- 
Powered by Outblaze


___
http://lists.gnu.org/mailman/listinfo/libtool