On Wed, May 22, 2013 at 05:05:42PM -0500, Rich Johnston wrote:
> On 05/22/2013 04:22 PM, Eric Sandeen wrote:
> >On 5/22/13 3:58 PM, rjohnston@xxxxxxx wrote:
> >>In the default section of libhandle/Makefile, ltdepend prevented
> >>libhandle.so from being installed properly so remove it.
> >
> >Can you explain how it prevented it?
> >
> >[sandeen@sandeen xfsprogs]$ grep ltdepend */Makefile
> >libdisk/Makefile:default: ltdepend $(LTLIBRARY)
> >libhandle/Makefile:default: ltdepend $(LTLIBRARY)
> >libxcmd/Makefile:default: ltdepend $(LTLIBRARY)
> >libxfs/Makefile:default: crc32selftest ltdepend $(LTLIBRARY)
> >libxlog/Makefile:default: ltdepend $(LTLIBRARY)
> >
> >seems to exist in every subdir, why is this one causing trouble?
> Because libhandle is the only one that is installed. ;)
So, after you've done a builds what does libhandle/.libs contain?
it shoul dlook something lik ethis:
$ ls -l libhandle/.libs/ total 180
-rw-r--r-- 1 dave dave 39416 May 23 08:50 handle.o
-rw-r--r-- 1 dave dave 21936 May 23 08:50 jdm.o
-rw-r--r-- 1 dave dave 61834 May 23 08:50 libhandle.a
lrwxrwxrwx 1 dave dave 15 May 23 08:50 libhandle.la -> ../libhandle.la
-rw-r--r-- 1 dave dave 938 May 23 08:50 libhandle.lai
lrwxrwxrwx 1 dave dave 18 May 23 08:50 libhandle.so -> libhandle.so.1.0.3
lrwxrwxrwx 1 dave dave 18 May 23 08:50 libhandle.so.1 -> libhandle.so.1.0.3
-rwxr-xr-x 1 dave dave 45667 May 23 08:50 libhandle.so.1.0.3
$
And the libhandle.lai should contain:
$ cat libhandle/.libs/libhandle.lai
libhandle.la - a libtool library file
# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1.1
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libhandle.so.1'
# Names of this library.
library_names='libhandle.so.1.0.3 libhandle.so.1 libhandle.so'
# The name of the static archive.
old_library='libhandle.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libhandle.
current=1
age=0
revision=3
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/lib'
$
See $library_names? That should be all the names that are created,
and there are three. The are set up via 'install-sh -T so_????'
options.
So, look at the install rules being run:
> cd ../libhandle/.libs;
Obvious.
> ../../install-sh -o root -g root -m 755 -d /lib64;
Setting owner/perms on /lib64.
> ../../install-sh -o root -g root -m 755 -T so_dot_version libhandle.lai
> /lib64;
"-T so_dot_version" is supposed to copy libhandle.so.1.0.3 to
/lib64/libhandle.so.1.0.3. i.e. install the current library.
> ../../install-sh -o root -g root -T so_dot_current libhandle.lai /lib64
That's supposed to set up the /lib64/libhandle.so.1 link back to
/lib64/libhandle.so.1.0.3.
And that's it. So, what's missing?
Right - there's nothing that sets up /lib64/libhandle.so i.e.
this is missing:
../../install-sh -o root -g root -T so_base libhandle.lai /lib64
which would set up the /lib64/libhandle.so link to
/lib64/libhandle.so.1.
Cheers,
Dave.
--
Dave Chinner
david@xxxxxxxxxxxxx
|