commit:     288a728fc408f7a20cff8422f4660749eaf1091f
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sat Aug  6 06:47:53 2016 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sat Aug  6 07:05:08 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=288a728f

dev-util/meson: new package needed by gst-transcoder (and probably needed by 
more gstreamer stuff in the future).

Package-Manager: portage-2.3.0

 dev-util/meson/Manifest                         |  1 +
 dev-util/meson/files/meson-0.33.0-runpath.patch | 96 +++++++++++++++++++++++++
 dev-util/meson/meson-0.33.0.ebuild              | 36 ++++++++++
 dev-util/meson/metadata.xml                     |  8 +++
 4 files changed, 141 insertions(+)

diff --git a/dev-util/meson/Manifest b/dev-util/meson/Manifest
new file mode 100644
index 0000000..10dce1e
--- /dev/null
+++ b/dev-util/meson/Manifest
@@ -0,0 +1 @@
+DIST meson-0.33.0.tar.gz 482221 SHA256 
2417fd27cbb1e9b1006fe9e5a1f3896285d4c925ffffdf9478638b5fe3ea7fc5 SHA512 
de4bdc40574dfbbc5a29861c32984dc1c97d28992e849c32f1ec0e314d3c69861768583c29eea2b9708ec6b734759d7eac60a53015fd321e29f1e9b1dbbffc22
 WHIRLPOOL 
f12522765dcdf035f873625c3f8dca3d5800e7f12907ac80e65b76d6f7dd54469cd91060d5b89e16b1ca088c94808901706aa98a1d53ff65429bf1b733246dcf

diff --git a/dev-util/meson/files/meson-0.33.0-runpath.patch 
b/dev-util/meson/files/meson-0.33.0-runpath.patch
new file mode 100644
index 0000000..2081cd3
--- /dev/null
+++ b/dev-util/meson/files/meson-0.33.0-runpath.patch
@@ -0,0 +1,96 @@
+From b42c0555ca35ebf6e97438ef414a3de62eaa2ced Mon Sep 17 00:00:00 2001
+From: Jussi Pakkanen <[email protected]>
+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)

diff --git a/dev-util/meson/meson-0.33.0.ebuild 
b/dev-util/meson/meson-0.33.0.ebuild
new file mode 100644
index 0000000..56c2ab9
--- /dev/null
+++ b/dev-util/meson/meson-0.33.0.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python3_{3,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
+"
+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
+}

diff --git a/dev-util/meson/metadata.xml b/dev-util/meson/metadata.xml
new file mode 100644
index 0000000..fb1ea72
--- /dev/null
+++ b/dev-util/meson/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+<maintainer type="project">
+       <email>[email protected]</email>
+       <name>GStreamer package maintainers</name>
+</maintainer>
+</pkgmetadata>

Reply via email to