From b514b3587ee56552fcc87a066c955a7ff4f55d6f Mon Sep 17 00:00:00 2001 From: Rafael Almeida Date: Sun, 1 Jun 2008 21:33:44 -0300 Subject: [PATCH] Fixed installation when changing DESTDIR After changing the DESTDIR the installated binaries have some issues due to hard coded paths. For example, using distributions on NetEm would segfault. I've changed iplink.c and tc_util.c so they are now aware of DESTDIR. Along with that change I needed to change the main Makefile so it defines the DESTDIR macro when calling gcc. I also changed the paths so that during the installation sbin, etc, share and lib directories are created directly inside of the DESTDIR, instead of creating a usr directory inside that. That's the behaviour of most packages out there, so I think most users will be expecting that to happen. --- Makefile | 10 +++++----- ip/iplink.c | 5 ++++- netem/Makefile | 4 ++-- tc/Makefile | 4 ++-- tc/tc_util.c | 6 +++++- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 723eb5d3..cfb27f42 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,13 @@ -DESTDIR= -SBINDIR=/usr/sbin +DESTDIR=/usr/ +SBINDIR=/sbin CONFDIR=/etc/iproute2 -DOCDIR=/usr/share/doc/iproute2 -MANDIR=/usr/share/man +DOCDIR=/share/doc/iproute2 +MANDIR=/share/man # Path to db_185.h include DBM_INCLUDE:=/usr/include -DEFINES= -DRESOLVE_HOSTNAMES +DEFINES= -DRESOLVE_HOSTNAMES -DDESTDIR=\"$(DESTDIR)\" #options if you have a bind>=4.9.4 libresolv (or, maybe, glibc) LDLIBS=-lresolv diff --git a/ip/iplink.c b/ip/iplink.c index c70c84ad..9a092630 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -33,6 +33,9 @@ #include "ip_common.h" #define IPLINK_IOCTL_COMPAT 1 +#ifndef DESTDIR +#define DESTDIR "/usr/" +#endif static void usage(void) __attribute__((noreturn)); @@ -78,7 +81,7 @@ struct link_util *get_link_kind(const char *id) if (strcmp(l->id, id) == 0) return l; - snprintf(buf, sizeof(buf), "/usr/lib/ip/link_%s.so", id); + snprintf(buf, sizeof(buf), DESTDIR "/lib/ip/link_%s.so", id); dlh = dlopen(buf, RTLD_LAZY); if (dlh == NULL) { /* look in current binary, only open once */ diff --git a/netem/Makefile b/netem/Makefile index 2d7d68bb..b6ccfc6a 100644 --- a/netem/Makefile +++ b/netem/Makefile @@ -20,9 +20,9 @@ stats: stats.c $(HOSTCC) $(CCOPTS) -I../include -o $@ $@.c -lm install: all - mkdir -p $(DESTDIR)/usr/lib/tc + mkdir -p $(DESTDIR)/lib/tc for i in $(DISTDATA); \ - do install -m 755 $$i $(DESTDIR)/usr/lib/tc; \ + do install -m 755 $$i $(DESTDIR)/lib/tc; \ done clean: diff --git a/tc/Makefile b/tc/Makefile index bf2df007..4116983e 100644 --- a/tc/Makefile +++ b/tc/Makefile @@ -72,10 +72,10 @@ libtc.a: $(TCLIB) $(AR) rcs $@ $(TCLIB) install: all - mkdir -p $(DESTDIR)/usr/lib/tc + mkdir -p $(DESTDIR)/lib/tc install -m 0755 tc $(DESTDIR)$(SBINDIR) for i in $(TCSO); \ - do install -m 755 $$i $(DESTDIR)/usr/lib/tc; \ + do install -m 755 $$i $(DESTDIR)/lib/tc; \ done clean: diff --git a/tc/tc_util.c b/tc/tc_util.c index cd9dd594..ba7c0c9d 100644 --- a/tc/tc_util.c +++ b/tc/tc_util.c @@ -24,13 +24,17 @@ #include "utils.h" #include "tc_util.h" +#ifndef DESTDIR +#define DESTDIR "/usr/" +#endif + const char *get_tc_lib(void) { const char *lib_dir; lib_dir = getenv("TC_LIB_DIR"); if (!lib_dir) - lib_dir = "/usr/lib/tc"; + lib_dir = DESTDIR "/lib/tc"; return lib_dir; }