lkml.org 
[lkml]   [2009]   [Jul]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: [ANNOUNCE] util-linux-ng v2.16-rc2
From
Date
On Thu, 2009-07-02 at 22:32 +0200, Kay Sievers wrote:
> On Thu, Jul 2, 2009 at 20:10, Karel Zak<kzak@redhat.com> wrote:
> >
> > The second util-linux-ng 2.16 release candidate is available at
> >
> > ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v2.16/
> >
> > Feedback and bug reports, as always, are welcomed.
>
> It builds fine on the host, but fails to build in a clean chroot:
>
> The hack with moving the devel files around to /usr with an install
> hook breaks the values stored in the libblkid.la file and relinking
> fails, because the lib devel files are now no longer in /lib but
> (silently) moved to /usr/lib:
>
> libtool: relink: gcc -std=gnu99 -shared .libs/cache.o .libs/dev.o
> .libs/devname.o .libs/devno.o .libs/getsize.o .libs/llseek.o
> .libs/probe.o .libs/read.o .libs/resolve.o .libs/save.o .libs/tag.o
> .libs/version.o .libs/verify.o .libs/encode.o .libs/config.o
> .libs/evaluate.o .libs/blkdev.o .libs/linux_version.o
> .libs/canonicalize.o .libs/md5.o -Wl,--whole-archive
> probers/.libs/libblkid_probers.a -Wl,--no-whole-archive
> -L/var/tmp/util-linux-2.16-build/lib64 -L/lib64 -luuid
> -Wl,--version-script=../../../shlibs/blkid/src/blkid.sym -Wl,-soname
> -Wl,libblkid.so.1 -o .libs/libblkid.so.1.0.0
> /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/bin/ld:
> cannot find -luuid
> collect2: ld returned 1 exit status
>
> That the .so is installed in the root is really the implementation
> detail that should be hidden from anything but the ld loader on the
> system. I guess, we want to keep the original --libdir value, and use
> a --rootlibdir as it's own parameter, or something similar, and just
> move the .so image to the root with the install hook (or the spec
> file), instead of moving the devel stuff, faking the .pc files and
> patching the .la files. :)

This seems to make it work in the chroot.

It turns around the logic, and installs the libs in /usr, and moves
the .so to /, so the devel links and the .la files are not changed.

Thanks,
Kay


diff --git a/shlibs/blkid/src/Makefile.am b/shlibs/blkid/src/Makefile.am
index 8b1f46b..b585f0a 100644
--- a/shlibs/blkid/src/Makefile.am
+++ b/shlibs/blkid/src/Makefile.am
@@ -21,7 +21,7 @@ AM_CPPFLAGS += -I$(ul_libblkid_srcdir) $(common_cflags)
blkidincdir = $(includedir)/blkid
blkidinc_HEADERS = blkid.h

-lib_LTLIBRARIES = libblkid.la
+usrlibexec_LTLIBRARIES = libblkid.la
libblkid_la_SOURCES = cache.c dev.c devname.c devno.c getsize.c llseek.c \
probe.c read.c resolve.c save.c tag.c version.c verify.c \
encode.c blkid.h list.h blkidP.h probers/probers.h \
@@ -49,17 +49,15 @@ test_%: %.c
$(COMPILE) -DTEST_PROGRAM $< .libs/libblkid.a -o $@ $(common_ldadd)


-# move devel files from $(libdir) to $(usrlibexecdir) if needed
+# move lib from $(usrlibexecdir) to $(libdir) if needed
install-data-hook:
- rm $(DESTDIR)$(libdir)/$(lib_LTLIBRARIES)
if test "$(usrlibexecdir)" != "$(libdir)"; then \
- mkdir -p $(DESTDIR)$(usrlibexecdir); \
+ mkdir -p $(DESTDIR)$(libdir); \
mv $(DESTDIR)$(libdir)/libblkid.a $(DESTDIR)$(usrlibexecdir)/; \
- so_img_name=$$(readlink $(DESTDIR)$(libdir)/libblkid.so); \
- rm $(DESTDIR)$(libdir)/libblkid.so; \
+ so_img_name=$$(readlink $(DESTDIR)$(usrlibexecdir)/libblkid.so); \
so_img_rel_target=$$(echo $(usrlibexecdir) | sed 's,\(^/\|\)[^/][^/]*,..,g'); \
- ln -sf $$so_img_rel_target$(libdir)/$$so_img_name \
- $(DESTDIR)$(usrlibexecdir)/libblkid.so; \
+ ln -sf $$so_img_rel_target$(libdir)/$$so_img_name $(DESTDIR)$(usrlibexecdir)/libblkid.so; \
+ mv $(DESTDIR)$(usrlibexecdir)/libblkid.so.* $(DESTDIR)$(libdir); \
fi

uninstall-hook:
diff --git a/shlibs/uuid/src/Makefile.am b/shlibs/uuid/src/Makefile.am
index fff1152..cdd51db 100644
--- a/shlibs/uuid/src/Makefile.am
+++ b/shlibs/uuid/src/Makefile.am
@@ -10,7 +10,7 @@ tst_uuid_CFLAGS = -I$(ul_libuuid_srcdir)
uuidincdir = $(includedir)/uuid
uuidinc_HEADERS = uuid.h

-lib_LTLIBRARIES = libuuid.la
+usrlibexec_LTLIBRARIES = libuuid.la
libuuid_la_SOURCES = clear.c compare.c copy.c gen_uuid.c \
isnull.c pack.c parse.c unpack.c unparse.c uuidd.h \
uuidd.h uuidP.h uuid_time.c $(uuidinc_HEADERS)
@@ -30,17 +30,15 @@ test_%: %.c
$(COMPILE) -DTEST_PROGRAM $< .libs/libuuid.a -o $@


-# move devel files from $(libdir) to $(usrlibexecdir) if needed
+# move lib from $(usrlibexecdir) to $(libdir) if needed
install-data-hook:
- rm $(DESTDIR)$(libdir)/$(lib_LTLIBRARIES)
if test "$(usrlibexecdir)" != "$(libdir)"; then \
- mkdir -p $(DESTDIR)$(usrlibexecdir); \
+ mkdir -p $(DESTDIR)$(libdir); \
mv $(DESTDIR)$(libdir)/libuuid.a $(DESTDIR)$(usrlibexecdir)/; \
- so_img_name=$$(readlink $(DESTDIR)$(libdir)/libuuid.so); \
- rm $(DESTDIR)$(libdir)/libuuid.so; \
+ so_img_name=$$(readlink $(DESTDIR)$(usrlibexecdir)/libuuid.so); \
so_img_rel_target=$$(echo $(usrlibexecdir) | sed 's,\(^/\|\)[^/][^/]*,..,g'); \
- ln -sf $$so_img_rel_target$(libdir)/$$so_img_name \
- $(DESTDIR)$(usrlibexecdir)/libuuid.so; \
+ ln -sf $$so_img_rel_target$(libdir)/$$so_img_name $(DESTDIR)$(usrlibexecdir)/libuuid.so; \
+ mv $(DESTDIR)$(usrlibexecdir)/libuuid.so.* $(DESTDIR)$(libdir); \
fi

uninstall-hook:



\
 
 \ /
  Last update: 2009-07-03 11:41    [W:0.063 / U:0.016 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site