+++ /dev/null
-From b42c0555ca35ebf6e97438ef414a3de62eaa2ced Mon Sep 17 00:00:00 2001
-From: Jussi Pakkanen <jpakkane@gmail.com>
-Date: Tue, 2 Aug 2016 21:45:45 +0300
-Subject: [PATCH] Handle both DT_RPATH as well as DT_RUNPATH when fixing rpath
- settings.
-
----
- mesonbuild/scripts/depfixer.py | 30 +++++++++++++++++++++++-------
- 1 file changed, 23 insertions(+), 7 deletions(-)
-
-diff --git a/mesonbuild/scripts/depfixer.py b/mesonbuild/scripts/depfixer.py
-index 8ff0dd1..cb136f4 100644
---- a/mesonbuild/scripts/depfixer.py
-+++ b/mesonbuild/scripts/depfixer.py
-@@ -20,6 +20,7 @@
- SHT_STRTAB = 3
- DT_NEEDED = 1
- DT_RPATH = 15
-+DT_RUNPATH = 29
- DT_STRTAB = 5
- DT_SONAME = 14
-
-@@ -211,21 +212,29 @@ def print_soname(self):
- self.bf.seek(strtab.val + soname.val)
- print(self.read_str())
-
-- def get_rpath_offset(self):
-+ def get_entry_offset(self, entrynum):
- sec = self.find_section(b'.dynstr')
- for i in self.dynamic:
-- if i.d_tag == DT_RPATH:
-+ if i.d_tag == entrynum:
- return sec.sh_offset + i.val
- return None
-
- def print_rpath(self):
-- offset = self.get_rpath_offset()
-+ offset = self.get_entry_offset(DT_RPATH)
- if offset is None:
- print("This file does not have an rpath.")
- else:
- self.bf.seek(offset)
- print(self.read_str())
-
-+ def print_runpath(self):
-+ offset = self.get_entry_offset(DT_RUNPATH)
-+ if offset is None:
-+ print("This file does not have a runpath.")
-+ else:
-+ self.bf.seek(offset)
-+ print(self.read_str())
-+
- def print_deps(self):
- sec = self.find_section(b'.dynstr')
- deps = []
-@@ -257,9 +266,15 @@ def fix_deps(self, prefix):
- self.bf.write(newname)
-
- def fix_rpath(self, new_rpath):
-+ # The path to search for can be either rpath or runpath.
-+ # Fix both of them to be sure.
-+ self.fix_rpathtype_entry(new_rpath, DT_RPATH)
-+ self.fix_rpathtype_entry(new_rpath, DT_RUNPATH)
-+
-+ def fix_rpathtype_entry(self, new_rpath, entrynum):
- if isinstance(new_rpath, str):
- new_rpath = new_rpath.encode('utf8')
-- rp_off = self.get_rpath_offset()
-+ rp_off = self.get_entry_offset(entrynum)
- if rp_off is None:
- if self.verbose:
- print('File does not have rpath. It should be a fully static executable.')
-@@ -272,12 +287,12 @@ def fix_rpath(self, new_rpath):
- self.bf.write(new_rpath)
- self.bf.write(b'\0'*(len(old_rpath) - len(new_rpath) + 1))
- if len(new_rpath) == 0:
-- self.remove_rpath_entry()
-+ self.remove_rpath_entry(entrynum)
-
-- def remove_rpath_entry(self):
-+ def remove_rpath_entry(self, entrynum):
- sec = self.find_section(b'.dynamic')
- for (i, entry) in enumerate(self.dynamic):
-- if entry.d_tag == DT_RPATH:
-+ if entry.d_tag == entrynum:
- rpentry = self.dynamic[i]
- rpentry.d_tag = 0
- self.dynamic = self.dynamic[:i] + self.dynamic[i+1:] + [rpentry]
-@@ -296,6 +311,7 @@ def run(args):
- e = Elf(args[0])
- if len(args) == 1:
- e.print_rpath()
-+ e.print_runpath()
- else:
- new_rpath = args[1]
- e.fix_rpath(new_rpath)
+++ /dev/null
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=6
-PYTHON_COMPAT=( python3_{4,5} )
-
-inherit distutils-r1
-
-DESCRIPTION="Open source build system"
-HOMEPAGE="http://mesonbuild.com/"
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE=""
-
-DEPEND="${PYTHON_DEPS}
- >=dev-util/ninja-1.6.0
-"
-RDEPEND="${DEPEND}"
-
-DOCS=( authors.txt contributing.txt )
-
-PATCHES=(
- # https://github.com/mesonbuild/meson/pull/663
- "${FILESDIR}"/${P}-runpath.patch
-)
-
-src_install() {
- distutils-r1_src_install
- for i in mesonconf mesonintrospect meson wraptool; do
- dosym "${i}.py" "/usr/bin/${i}"
- done
-}