Message ID | 62f6968cc2647685a0ef8074687ecf12c8c1f3c0.1634199240.git.aclaudi@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | David Ahern |
Headers | show |
Series | configure: add support for libdir option | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
Hi Andrea, On Thu, Oct 14, 2021 at 10:50:55AM +0200, Andrea Claudi wrote: [...] > diff --git a/Makefile b/Makefile > index 5eddd504..f6214534 100644 > --- a/Makefile > +++ b/Makefile > @@ -1,6 +1,8 @@ > # SPDX-License-Identifier: GPL-2.0 > # Top level Makefile for iproute2 > > +-include config.mk > + Assuming config.mk may be missing (as dash-prefix is used). > ifeq ("$(origin V)", "command line") > VERBOSE = $(V) > endif > @@ -13,7 +15,6 @@ MAKEFLAGS += --no-print-directory > endif > > PREFIX?=/usr > -LIBDIR?=$(PREFIX)/lib Dropping this leads to trouble if config.mk is missing or didn't define it. Can't you just leave it in place? Usually config.mk would override it anyway, no? Rest of the series looks great, thanks a lot for spending the extra cycles giving it the mirror finish it has now. :) Cheers, Phil
On Thu, Oct 14, 2021 at 12:10:53PM +0200, Phil Sutter wrote: > Hi Andrea, > > On Thu, Oct 14, 2021 at 10:50:55AM +0200, Andrea Claudi wrote: > [...] > > diff --git a/Makefile b/Makefile > > index 5eddd504..f6214534 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -1,6 +1,8 @@ > > # SPDX-License-Identifier: GPL-2.0 > > # Top level Makefile for iproute2 > > > > +-include config.mk > > + > > Assuming config.mk may be missing (as dash-prefix is used). > > > ifeq ("$(origin V)", "command line") > > VERBOSE = $(V) > > endif > > @@ -13,7 +15,6 @@ MAKEFLAGS += --no-print-directory > > endif > > > > PREFIX?=/usr > > -LIBDIR?=$(PREFIX)/lib > > Dropping this leads to trouble if config.mk is missing or didn't define > it. Can't you just leave it in place? Usually config.mk would override > it anyway, no? config.mk may miss at the first make call, but the "all" target calls config.mk, which in turns re-generate it. Thus LIBDIR is defined when the target all executes. Also, LIBDIR must be defined in config.mk, as a default value for it is provided in configure, and will be used if the user does not provide it at command line. I verified this deleting config.mk and printing DEFINES in Makefile to verify it includes the correct path for LIBDIR.
On Thu, Oct 14, 2021 at 01:02:41PM +0200, Andrea Claudi wrote: > On Thu, Oct 14, 2021 at 12:10:53PM +0200, Phil Sutter wrote: > > Hi Andrea, > > > > On Thu, Oct 14, 2021 at 10:50:55AM +0200, Andrea Claudi wrote: > > [...] > > > diff --git a/Makefile b/Makefile > > > index 5eddd504..f6214534 100644 > > > --- a/Makefile > > > +++ b/Makefile > > > @@ -1,6 +1,8 @@ > > > # SPDX-License-Identifier: GPL-2.0 > > > # Top level Makefile for iproute2 > > > > > > +-include config.mk > > > + > > > > Assuming config.mk may be missing (as dash-prefix is used). > > > > > ifeq ("$(origin V)", "command line") > > > VERBOSE = $(V) > > > endif > > > @@ -13,7 +15,6 @@ MAKEFLAGS += --no-print-directory > > > endif > > > > > > PREFIX?=/usr > > > -LIBDIR?=$(PREFIX)/lib > > > > Dropping this leads to trouble if config.mk is missing or didn't define > > it. Can't you just leave it in place? Usually config.mk would override > > it anyway, no? > > config.mk may miss at the first make call, but the "all" target calls > config.mk, which in turns re-generate it. Thus LIBDIR is defined when > the target all executes. Ah, I forgot the call to configure from make. So full series: Acked-by: Phil Sutter <phil@nwl.cc> Thanks, Phil
diff --git a/Makefile b/Makefile index 5eddd504..f6214534 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,8 @@ # SPDX-License-Identifier: GPL-2.0 # Top level Makefile for iproute2 +-include config.mk + ifeq ("$(origin V)", "command line") VERBOSE = $(V) endif @@ -13,7 +15,6 @@ MAKEFLAGS += --no-print-directory endif PREFIX?=/usr -LIBDIR?=$(PREFIX)/lib SBINDIR?=/sbin CONFDIR?=/etc/iproute2 NETNS_RUN_DIR?=/var/run/netns @@ -69,7 +70,7 @@ SUBDIRS=lib ip tc bridge misc netem genl tipc devlink rdma dcb man vdpa LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a LDLIBS += $(LIBNETLINK) -all: config +all: config.mk @set -e; \ for i in $(SUBDIRS); \ do echo; echo $$i; $(MAKE) -C $$i; done @@ -89,7 +90,7 @@ help: @echo "Make Arguments:" @echo " V=[0|1] - set build verbosity level" -config: +config.mk: @if [ ! -f config.mk -o configure -nt config.mk ]; then \ sh configure $(KERNEL_INCLUDE); \ fi diff --git a/configure b/configure index 05e23eff..8ddff43c 100755 --- a/configure +++ b/configure @@ -4,6 +4,7 @@ INCLUDE="$PWD/include" PREFIX="/usr" +LIBDIR="\${prefix}/lib" # Output file which is input to Makefile CONFIG=config.mk @@ -149,6 +150,15 @@ EOF rm -f $TMPDIR/ipttest.c $TMPDIR/ipttest } +check_lib_dir() +{ + LIBDIR=$(echo $LIBDIR | sed "s|\${prefix}|$PREFIX|") + + echo -n "lib directory: " + echo "$LIBDIR" + echo "LIBDIR:=$LIBDIR" >> $CONFIG +} + check_ipt() { if ! grep TC_CONFIG_XT $CONFIG > /dev/null; then @@ -487,6 +497,7 @@ usage() cat <<EOF Usage: $0 [OPTIONS] --include_dir <dir> Path to iproute2 include dir + --libdir <dir> Path to iproute2 lib dir --libbpf_dir <dir> Path to libbpf DESTDIR --libbpf_force <on|off> Enable/disable libbpf by force. Available options: on: require link against libbpf, quit config if no libbpf support @@ -508,6 +519,11 @@ else INCLUDE="$1" ;; --include_dir=*) INCLUDE="${1#*=}" ;; + --libdir) + shift + LIBDIR="$1" ;; + --libdir=*) + LIBDIR="${1#*=}" ;; --libbpf_dir) shift LIBBPF_DIR="$1" ;; @@ -544,6 +560,7 @@ if [ "${LIBBPF_FORCE-unused}" != "unused" ]; then fi fi [ -z "$PREFIX" ] && usage 1 +[ -z "$LIBDIR" ] && usage 1 echo "# Generated config based on" $INCLUDE >$CONFIG quiet_config >> $CONFIG @@ -568,6 +585,7 @@ if ! grep -q TC_CONFIG_NO_XT $CONFIG; then fi echo +check_lib_dir if ! grep -q TC_CONFIG_NO_XT $CONFIG; then echo -n "iptables modules directory: " check_ipt_lib_dir
This commit allows users/packagers to choose a lib directory to store iproute2 lib files. At the moment iproute2 ship lib files in /usr/lib and offers no way to modify this setting. However, according to the FHS, distros may choose "one or more variants of the /lib directory on systems which support more than one binary format" (e.g. /usr/lib64 on Fedora). As Luca states in commit a3272b93725a ("configure: restore backward compatibility"), packaging systems may assume that 'configure' is from autotools, and try to pass it some parameters. Allowing the '--libdir=/path/to/libdir' syntax, we can use this to our advantage, and let the lib directory to be chosen by the distro packaging system. Note that LIBDIR uses "\${prefix}/lib" as default value because autoconf allows this to be expanded to the --prefix value at configure runtime. "\${prefix}" is replaced with the PREFIX value in check_lib_dir(). Signed-off-by: Andrea Claudi <aclaudi@redhat.com> --- Makefile | 7 ++++--- configure | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-)