Commit b514b358 authored by Rafael Almeida's avatar Rafael Almeida Committed by Stephen Hemminger

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.
parent 6579feea
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
......
......@@ -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 */
......
......@@ -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:
......
......@@ -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:
......
......@@ -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;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment