[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] tools: honour --libdir when it is passed to ./configure



Matt Wilson wrote:
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@xxxxxxxxxx>

Thanks for the patch! The way FSIMAGE_FSDIR is set is really wrong.

diff -r 32034d1914a6 -r 0a592e08ac31 config/StdGNU.mk
--- a/config/StdGNU.mk  Thu Jun 07 19:46:57 2012 +0100
+++ b/config/StdGNU.mk  Wed Jun 20 00:40:15 2012 +0000
@@ -35,7 +35,6 @@ 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
diff -r 32034d1914a6 -r 0a592e08ac31 config/SunOS.mk
--- a/config/SunOS.mk   Thu Jun 07 19:46:57 2012 +0100
+++ b/config/SunOS.mk   Wed Jun 20 00:40:15 2012 +0000
@@ -24,7 +24,6 @@ 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

Can we clean this a little bit more, and remove LIBDIR_x86_32,
LIBLEAFDIR_x86_64, LIBDIR_x86_64, LIBDIR_x86_32 and LIBLEAFDIR?

diff -r 32034d1914a6 -r 0a592e08ac31 config/Tools.mk.in
--- a/config/Tools.mk.in        Thu Jun 07 19:46:57 2012 +0100
+++ b/config/Tools.mk.in        Wed Jun 20 00:40:15 2012 +0000
@@ -1,5 +1,7 @@
  # Prefix and install folder
  PREFIX              := @prefix@
+exec_prefix         := @exec_prefix@
+LIBDIR              := @libdir@
  LIBLEAFDIR_x86_64   := @LIB_PATH@

  # A debug build of tools?
diff -r 32034d1914a6 -r 0a592e08ac31 config/x86_64.mk
--- a/config/x86_64.mk  Thu Jun 07 19:46:57 2012 +0100
+++ b/config/x86_64.mk  Wed Jun 20 00:40:15 2012 +0000
@@ -11,7 +11,6 @@ CONFIG_IOEMU := y
  CFLAGS += -m64

  LIBLEAFDIR = $(LIBLEAFDIR_x86_64)
-LIBDIR = $(LIBDIR_x86_64)

  SunOS_LIBDIR = $(SunOS_LIBDIR_x86_64)

diff -r 32034d1914a6 -r 0a592e08ac31 tools/libfsimage/Rules.mk
--- a/tools/libfsimage/Rules.mk Thu Jun 07 19:46:57 2012 +0100
+++ b/tools/libfsimage/Rules.mk Wed Jun 20 00:40:15 2012 +0000
@@ -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)\"

I would prefer to set FSIMAGE_FSDIR or an equivalent define in tools/config.h and include that header in tools/libfsimage/common/fsimage_plugin.h, so we don't have to pass that value from the compiler command line.

  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)
diff -r 32034d1914a6 -r 0a592e08ac31 tools/libfsimage/common/Makefile
--- a/tools/libfsimage/common/Makefile  Thu Jun 07 19:46:57 2012 +0100
+++ b/tools/libfsimage/common/Makefile  Wed Jun 20 00:40:15 2012 +0000
@@ -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
diff -r 32034d1914a6 -r 0a592e08ac31 tools/libfsimage/common/fsimage_plugin.c
--- a/tools/libfsimage/common/fsimage_plugin.c  Thu Jun 07 19:46:57 2012 +0100
+++ b/tools/libfsimage/common/fsimage_plugin.c  Wed Jun 20 00:40:15 2012 +0000
@@ -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,27 +130,12 @@ static int load_plugins(void)
        int err;
        int ret = -1;

-#if defined(FSIMAGE_FSDIR)
+#if !defined(FSIMAGE_FSDIR)
+#error FSIMAGE_FSDIR not defined
+#else
        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 +156,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;

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.