From a1bd0230d2412223141486192ee0d4632bfe8710 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Mon, 19 Dec 2016 19:08:11 +0100 Subject: Remove RPATH from binaries before creating .deb and .rpm packages Change-Id: I684d4eabac03e049524204864c985e14eea8d92e Signed-off-by: Damjan Marion --- Makefile | 4 ++-- build-root/deb/debian/control | 2 +- build-root/deb/debian/rules | 1 + build-root/rpm/vpp.spec | 7 ++++++- build-root/scripts/remove-rpath | 24 ++++++++++++++++++++++++ 5 files changed, 34 insertions(+), 4 deletions(-) create mode 100755 build-root/scripts/remove-rpath diff --git a/Makefile b/Makefile index 1c7534cf..b3ffaf30 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 988d2764..643774e3 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 -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 4ecd38f7..186fa840 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 4a351348..ed382349 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 00000000..bda3d60d --- /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 + -- cgit 1.2.3-korg