xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
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 v3] tools: honour --libdir when it is passed to ./configure
Date: Wed, 4 Jul 2012 12:30:33 +0100	[thread overview]
Message-ID: <4FF42959.7060805@citrix.com> (raw)
In-Reply-To: <177d5f1e353fe4001f69.1340485933@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>
>
> Changes since v2:
>   * Drop the #ifndef check for FSIMAGE_FSDIR, let the normal compiler
>     error provide information that something is wrong.
>   * Don't include config/Tools.mk from the top level Config.mk.
>   * Just assume that libraries specified via EXTRA_PREFIX live in
>     $(EXTRA_LIB)/lib. EXTRA_PREFIX should probably just go away one day.
>
> diff -r 32034d1914a6 -r 177d5f1e353f Config.mk
> --- a/Config.mk	Thu Jun 07 19:46:57 2012 +0100
> +++ b/Config.mk	Wed Jun 20 00:40:15 2012 +0000
> @@ -67,7 +67,7 @@ endef
>
>   ifneq ($(EXTRA_PREFIX),)
>   EXTRA_INCLUDES += $(EXTRA_PREFIX)/include
> -EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBLEAFDIR)
> +EXTRA_LIB += $(EXTRA_PREFIX)/lib
>   endif
>
>   PYTHON      ?= python
> diff -r 32034d1914a6 -r 177d5f1e353f config/NetBSD.mk
> --- a/config/NetBSD.mk	Thu Jun 07 19:46:57 2012 +0100
> +++ b/config/NetBSD.mk	Wed Jun 20 00:40:15 2012 +0000
> @@ -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)
>
> diff -r 32034d1914a6 -r 177d5f1e353f 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
> @@ -32,13 +32,7 @@ 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
> diff -r 32034d1914a6 -r 177d5f1e353f 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
> @@ -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
> diff -r 32034d1914a6 -r 177d5f1e353f 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,6 +1,7 @@
>   # Prefix and install folder
>   PREFIX              := @prefix@
> -LIBLEAFDIR_x86_64   := @LIB_PATH@

Sorry for the late reply, but if you get rid of LIB_PATH, I think you 
should also remove AX_DEFAULT_LIB and m4_include([m4/default_lib.m4]) 
from configure.ac, and remove the macro file tools/m4/default_lib.m4.

> +exec_prefix         := @exec_prefix@
> +LIBDIR              := @libdir@
>
>   # A debug build of tools?
>   debug               := @debug@
> diff -r 32034d1914a6 -r 177d5f1e353f 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
> @@ -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.
> diff -r 32034d1914a6 -r 177d5f1e353f 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)\"
>   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 177d5f1e353f 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 177d5f1e353f 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,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;

  parent reply	other threads:[~2012-07-04 11:30 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-23 21:12 [PATCH v3] tools: honour --libdir when it is passed to ./configure Matt Wilson
2012-06-26 15:06 ` Ian Campbell
2012-06-29 14:52 ` Ian Jackson
2012-07-04 11:30 ` Roger Pau Monne [this message]
2012-07-04 12:45   ` Ian Campbell
2012-07-04 13:22     ` Roger Pau Monne
2012-07-04 13:54 ` Ian Campbell
2012-07-04 17:11   ` Matt Wilson

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=4FF42959.7060805@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).