aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2016-12-19 19:08:11 +0100
committerDave Barach <openvpp@barachs.net>2016-12-20 13:43:21 +0000
commita1bd0230d2412223141486192ee0d4632bfe8710 (patch)
tree8e9180b9339f1362881c48e53a77229a8fa068bc
parentfcfb3917f7021567b250dabbcc9e30a1becf6f73 (diff)
Remove RPATH from binaries before creating .deb and .rpm packages
Change-Id: I684d4eabac03e049524204864c985e14eea8d92e Signed-off-by: Damjan Marion <damarion@cisco.com>
-rw-r--r--Makefile4
-rw-r--r--build-root/deb/debian/control2
-rwxr-xr-xbuild-root/deb/debian/rules1
-rw-r--r--build-root/rpm/vpp.spec7
-rwxr-xr-xbuild-root/scripts/remove-rpath24
5 files changed, 34 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 1c7534cfb6a..b3ffaf30fe3 100644
--- a/Makefile
+++ b/Makefile
@@ -33,7 +33,7 @@ endif
DEB_DEPENDS = curl build-essential autoconf automake bison libssl-dev ccache
DEB_DEPENDS += debhelper dkms git libtool libganglia1-dev libapr1-dev dh-systemd
DEB_DEPENDS += libconfuse-dev git-review exuberant-ctags cscope
-DEB_DEPENDS += python-dev python-virtualenv python-pip lcov
+DEB_DEPENDS += python-dev python-virtualenv python-pip lcov chrpath
ifeq ($(OS_VERSION_ID),14.04)
DEB_DEPENDS += openjdk-8-jdk-headless
else
@@ -43,7 +43,7 @@ endif
RPM_DEPENDS_GROUPS = 'Development Tools'
RPM_DEPENDS = redhat-lsb glibc-static java-1.8.0-openjdk-devel yum-utils
RPM_DEPENDS += openssl-devel https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm apr-devel
-RPM_DEPENDS += python-devel python-virtualenv lcov
+RPM_DEPENDS += python-devel python-virtualenv lcov chrpath
EPEL_DEPENDS = libconfuse-devel ganglia-devel
ifneq ($(wildcard $(STARTUP_DIR)/startup.conf),)
diff --git a/build-root/deb/debian/control b/build-root/deb/debian/control
index 988d27647eb..643774e3061 100644
--- a/build-root/deb/debian/control
+++ b/build-root/deb/debian/control
@@ -2,7 +2,7 @@ Source: vpp
Section: net
Priority: extra
Maintainer: Cisco OpenVPP Packaging Team <bogus.address@cisco.com>
-Build-Depends: debhelper (>= 9), dkms, dh-systemd
+Build-Depends: debhelper (>= 9), dkms, dh-systemd, chrpath
Standards-Version: 3.9.4
Package: vpp
diff --git a/build-root/deb/debian/rules b/build-root/deb/debian/rules
index 4ecd38f7c0a..186fa840ad0 100755
--- a/build-root/deb/debian/rules
+++ b/build-root/deb/debian/rules
@@ -22,6 +22,7 @@ include /usr/share/dpkg/default.mk
override_dh_install:
dh_install --exclude .git
+ ../scripts/remove-rpath .
override_dh_strip:
dh_strip --dbg-package=vpp-dbg
diff --git a/build-root/rpm/vpp.spec b/build-root/rpm/vpp.spec
index 4a3513481b7..ed382349319 100644
--- a/build-root/rpm/vpp.spec
+++ b/build-root/rpm/vpp.spec
@@ -26,7 +26,7 @@ License: MIT
Version: %{_version}
Release: %{_release}
Requires: vpp-lib = %{_version}-%{_release}, net-tools, pciutils, python
-BuildRequires: systemd
+BuildRequires: systemd, chrpath
Source: %{name}-%{_version}-%{_release}.tar.gz
@@ -189,6 +189,11 @@ do
install -p -m 644 $file %{buildroot}/usr/share/vpp/api
done
+#
+# remove RPATH from ELF binaries
+#
+%{_mu_build_dir}/scripts/remove-rpath %{buildroot}
+
%post
sysctl --system
%systemd_post vpp.service
diff --git a/build-root/scripts/remove-rpath b/build-root/scripts/remove-rpath
new file mode 100755
index 00000000000..bda3d60d745
--- /dev/null
+++ b/build-root/scripts/remove-rpath
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+if [ -z $1 ]; then
+ echo "Please specify path"
+ exit 1
+fi
+
+which chrpath &> /dev/null
+
+if [ $? -ne 0 ] ; then
+ echo "Please install chrpath tool"
+ exit 1
+fi
+
+libs=$(find $1 -type f -name \*.so)
+execs=$(find $1 -type f -path \*/bin/\* )
+
+for i in $libs $execs; do
+ chrpath $i 2> /dev/null | grep -q build-root
+ if [ $? -eq 0 ] ; then
+ chrpath $i
+ fi
+done
+