tools: honour --libdir when it is passed to ./configure
authorMatt Wilson <msw@amazon.com>
Thu, 5 Jul 2012 10:00:28 +0000 (11:00 +0100)
committerMatt Wilson <msw@amazon.com>
Thu, 5 Jul 2012 10:00:28 +0000 (11:00 +0100)
Currently shared libraries are automatically installed into /usr/lib
or /usr/lib64, depending on the supplied --prefix value and
$(XEN_TARGET_ARCH). Some systems, like recent Debian and Ubuntu releases,
do not use /usr/lib64, but instead /usr/lib/x86_64-linux-gnu.

With this change, packagers can supply the desired location for shared
libraries on the ./configure command line. Packagers need to note that
the default behaviour on 64-bit Linux systems will be to install shared
libraries in /usr/lib, not /usr/lib64, unless a --libdir value is provided
to ./configure.

Additionally, the libfsimage plugins are now loaded explicitly from
$LIBDIR/fs, removing platform-based decision trees in code.

Signed-off-by: Matt Wilson <msw@amazon.com>
Acked-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
[ ijc -- resolve rejects in configure by rerunning autogen.sh. Dropped changes
to remove m4/default_lib.m4 and update m4/pkg.m4 since they cause LIBDIR=/lib
instead of /usr/lib. Reran ./autogen.sh after that too ]
Committed-by: Ian Campbell <ian.campbell@citrix.com>
Config.mk
config/NetBSD.mk
config/StdGNU.mk
config/SunOS.mk
config/Tools.mk.in
config/x86_64.mk
tools/libfsimage/Rules.mk
tools/libfsimage/common/Makefile
tools/libfsimage/common/fsimage_plugin.c

index 19e14dfc712b7a3501c9d7228533a944301360a8..52149749ff909ff876e9e6d2f02daa2ad200208f 100644 (file)
--- a/Config.mk
+++ b/Config.mk
@@ -67,7 +67,7 @@ $(eval $(call setvar_dir,INITD_DIR,/etc,/rc.d/init.d,/rc.d/init.d,/init.d))
 
 ifneq ($(EXTRA_PREFIX),)
 EXTRA_INCLUDES += $(EXTRA_PREFIX)/include
-EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBLEAFDIR)
+EXTRA_LIB += $(EXTRA_PREFIX)/lib
 endif
 
 PYTHON      ?= python
index 274bfb010726bcaa475a15a692c4ee6e7d1481ab..12c8a349a156f8fd5315b9c7b21562f8c3d79965 100644 (file)
@@ -1,7 +1,6 @@
 include $(XEN_ROOT)/config/StdGNU.mk
 
 # Override settings for this OS
-LIBLEAFDIR_x86_64 = lib
 LIBEXEC = $(PREFIX)/libexec
 PRIVATE_BINDIR = $(BINDIR)
 
index e2f2e1ef3604f26f5a935bcc110de7bd99527602..b6adbbe42238bcb118a82f0d9cd8ccd83ff3e5bd 100644 (file)
@@ -32,19 +32,13 @@ INSTALL_PROG = $(INSTALL) -m0755 -p
 PREFIX ?= /usr
 BINDIR = $(PREFIX)/bin
 INCLUDEDIR = $(PREFIX)/include
-LIBLEAFDIR = lib
-LIBLEAFDIR_x86_32 = lib
-LIBLEAFDIR_x86_64 ?= lib64
-LIBDIR = $(PREFIX)/$(LIBLEAFDIR)
-LIBDIR_x86_32 = $(PREFIX)/$(LIBLEAFDIR_x86_32)
-LIBDIR_x86_64 = $(PREFIX)/$(LIBLEAFDIR_x86_64)
-LIBEXEC = $(LIBDIR_x86_32)/xen/bin
+LIBEXEC = $(PREFIX)/lib/xen/bin
 SHAREDIR = $(PREFIX)/share
 MANDIR = $(SHAREDIR)/man
 MAN1DIR = $(MANDIR)/man1
 MAN8DIR = $(MANDIR)/man8
 SBINDIR = $(PREFIX)/sbin
-XENFIRMWAREDIR = $(LIBDIR_x86_32)/xen/boot
+XENFIRMWAREDIR = $(PREFIX)/lib/xen/boot
 
 PRIVATE_PREFIX = $(LIBDIR)/xen
 PRIVATE_BINDIR = $(PRIVATE_PREFIX)/bin
index ba809f5f5b9160c45ecd5a9006d401b4ecb12047..2c528b7dc45ef98a7d9eb9f557576fed9029f4f2 100644 (file)
@@ -22,10 +22,6 @@ INSTALL_PROG = $(INSTALL) -m0755 -p
 PREFIX ?= /usr
 BINDIR = $(PREFIX)/bin
 INCLUDEDIR = $(PREFIX)/include
-LIBLEAFDIR = lib
-LIBLEAFDIR_x86_64 = lib/amd64
-LIBDIR = $(PREFIX)/$(LIBLEAFDIR)
-LIBDIR_x86_64 = $(PREFIX)/$(LIBLEAFDIR_x86_64)
 MANDIR = $(PREFIX)/share/man
 MAN1DIR = $(MANDIR)/man1
 MAN8DIR = $(MANDIR)/man8
index 5b803599027a4fd09df12bf16c75a5f8afcbb2d6..8a52bccda3ae264f593d6e047502efae19b8697b 100644 (file)
@@ -1,6 +1,7 @@
 # Prefix and install folder
 PREFIX              := @prefix@
-LIBLEAFDIR_x86_64   := @LIB_PATH@
+exec_prefix         := @exec_prefix@
+LIBDIR              := @libdir@
 
 # A debug build of tools?
 debug               := @debug@
index 6f77053df3c329aa74877aa75ff60d5b801215f5..f9b21b14e42998de2ae3b39877d794de849865f1 100644 (file)
@@ -10,9 +10,6 @@ CONFIG_IOEMU := y
 
 CFLAGS += -m64
 
-LIBLEAFDIR = $(LIBLEAFDIR_x86_64)
-LIBDIR = $(LIBDIR_x86_64)
-
 SunOS_LIBDIR = $(SunOS_LIBDIR_x86_64)
 
 # Use only if calling $(LD) directly.
index a65d532a68d244253635370c0c7c455877552d3f..e4b2a9158ef6d5d70767f349b3889631a69b47d3 100644 (file)
@@ -1,17 +1,12 @@
 include $(XEN_ROOT)/tools/Rules.mk
 
-CFLAGS += -Wno-unknown-pragmas -I$(XEN_ROOT)/tools/libfsimage/common/
+CFLAGS += -Wno-unknown-pragmas -I$(XEN_ROOT)/tools/libfsimage/common/ -DFSIMAGE_FSDIR=\"$(FSDIR)\"
 CFLAGS += -Werror -D_GNU_SOURCE
 LDFLAGS += -L../common/
 
 PIC_OBJS := $(patsubst %.c,%.opic,$(LIB_SRCS-y))
 
-FSDIR-$(CONFIG_Linux) = $(LIBDIR)/fs/$(FS)
-FSDIR-$(CONFIG_SunOS)-x86_64 = $(PREFIX)/lib/fs/$(FS)/64
-FSDIR-$(CONFIG_SunOS)-x86_32 = $(PREFIX)/lib/fs/$(FS)/
-FSDIR-$(CONFIG_SunOS) = $(FSDIR-$(CONFIG_SunOS)-$(XEN_TARGET_ARCH))
-FSDIR-$(CONFIG_NetBSD) = $(LIBDIR)/fs/$(FS)
-FSDIR = $(FSDIR-y)
+FSDIR = $(LIBDIR)/fs
 
 FSLIB = fsimage.so
 
@@ -20,8 +15,8 @@ fs-all: $(FSLIB)
 
 .PHONY: fs-install
 fs-install: fs-all
-       $(INSTALL_DIR) $(DESTDIR)$(FSDIR)
-       $(INSTALL_PROG) $(FSLIB) $(DESTDIR)$(FSDIR)
+       $(INSTALL_DIR) $(DESTDIR)$(FSDIR)/$(FS)
+       $(INSTALL_PROG) $(FSLIB) $(DESTDIR)$(FSDIR)/$(FS)
 
 $(FSLIB): $(PIC_OBJS)
        $(CC) $(LDFLAGS) $(SHLIB_LDFLAGS) -o $@ $^ -lfsimage $(FS_LIBDEPS) $(APPEND_LDFLAGS)
index 368491396b3d80fdbfb7f2a0d32c0af46487bf0c..f0ee3ab296b7bc66bb5aaa3e7e3f197f0dd7992e 100644 (file)
@@ -1,5 +1,5 @@
 XEN_ROOT = $(CURDIR)/../../..
-include $(XEN_ROOT)/tools/Rules.mk
+include $(XEN_ROOT)/tools/libfsimage/Rules.mk
 
 MAJOR = 1.0
 MINOR = 0
index 5ee9d746b25502d9cab1add591495da6b0c752b1..3fa06c785c6e2cbc2bb5c869bbe795de785b276b 100644 (file)
@@ -122,7 +122,6 @@ fail:
 static int load_plugins(void)
 {
        const char *fsdir = getenv("FSIMAGE_FSDIR");
-       const char *isadir = "";
        struct dirent *dp = NULL;
        struct dirent *dpp;
        DIR *dir = NULL;
@@ -131,26 +130,8 @@ static int load_plugins(void)
        int err;
        int ret = -1;
 
-#if defined(FSIMAGE_FSDIR)
        if (fsdir == NULL)
                fsdir = FSIMAGE_FSDIR;
-#elif defined(__sun__)
-       if (fsdir == NULL)
-               fsdir = "/usr/lib/fs";
-
-       if (sizeof(void *) == 8)
-               isadir = "64/";
-#elif defined(__ia64__)
-       if (fsdir == NULL)
-               fsdir = "/usr/lib/fs";
-#else
-       if (fsdir == NULL) {
-               if (sizeof(void *) == 8)
-                       fsdir = "/usr/lib64/fs";
-               else
-                       fsdir = "/usr/lib/fs";
-       }
-#endif
 
        if ((name_max = pathconf(fsdir, _PC_NAME_MAX)) == -1)
                goto fail;
@@ -172,8 +153,8 @@ static int load_plugins(void)
                if (strcmp(dpp->d_name, "..") == 0)
                        continue;
 
-               (void) snprintf(tmp, name_max, "%s/%s/%sfsimage.so", fsdir,
-                   dpp->d_name, isadir);
+               (void) snprintf(tmp, name_max, "%s/%s/fsimage.so", fsdir,
+                       dpp->d_name);
 
                if (init_plugin(tmp) != 0)
                        goto fail;