From: Roger Pau Monne <roger.pau@citrix.com>
To: Matt Wilson <msw@amazon.com>
Cc: Ian Campbell <Ian.Campbell@citrix.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH] tools: honour --libdir when it is passed to ./configure
Date: Wed, 20 Jun 2012 09:51:17 +0100 [thread overview]
Message-ID: <4FE18F05.8030309@citrix.com> (raw)
In-Reply-To: <0a592e08ac31b3934372.1340153217@kaos-source-31003.sea31.amazon.com>
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@amazon.com>
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@lists.xen.org
> http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2012-06-20 8:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-20 0:46 [PATCH] tools: honour --libdir when it is passed to ./configure Matt Wilson
2012-06-20 8:51 ` Roger Pau Monne [this message]
2012-06-20 16:44 ` Matt Wilson
2012-06-20 16:51 ` Ian Campbell
2012-06-20 18:27 ` Matt Wilson
2012-06-21 9:12 ` Roger Pau Monne
2012-06-20 9:10 ` Ian Campbell
2012-06-20 16:41 ` Matt Wilson
2012-06-20 16:44 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FE18F05.8030309@citrix.com \
--to=roger.pau@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=msw@amazon.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).