xfs
[Top] [All Lists]

Re: [PATCH] xfsprogs: libhandle/Makefile - fix make install

To: Rich Johnston <rjohnston@xxxxxxx>
Subject: Re: [PATCH] xfsprogs: libhandle/Makefile - fix make install
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Thu, 23 May 2013 09:04:30 +1000
Cc: Eric Sandeen <sandeen@xxxxxxxxxxx>, xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <519D4136.6080908@xxxxxxx>
References: <20130522205819.586978467@xxxxxxxxxxxxxxxxxxxxxxx> <519D3716.8080502@xxxxxxxxxxx> <519D4136.6080908@xxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
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

<Prev in Thread] Current Thread [Next in Thread>