Remove RPATH from binaries before creating .deb and .rpm packages 93/4393/6
authorDamjan Marion <damarion@cisco.com>
Mon, 19 Dec 2016 18:08:11 +0000 (19:08 +0100)
committerDave Barach <openvpp@barachs.net>
Tue, 20 Dec 2016 13:43:21 +0000 (13:43 +0000)
Change-Id: I684d4eabac03e049524204864c985e14eea8d92e
Signed-off-by: Damjan Marion <damarion@cisco.com>
Makefile
build-root/deb/debian/control
build-root/deb/debian/rules
build-root/rpm/vpp.spec
build-root/scripts/remove-rpath [new file with mode: 0755]

index 1c7534c..b3ffaf3 100644 (file)
--- 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),)
index 988d276..643774e 100644 (file)
@@ -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
index 4ecd38f..186fa84 100755 (executable)
@@ -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
index 4a35134..ed38234 100644 (file)
@@ -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 (executable)
index 0000000..bda3d60
--- /dev/null
@@ -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
+