summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/fakeroot/PKGBUILD76
-rw-r--r--libre/fakeroot/fakeroot.install14
-rw-r--r--libre/fakeroot/silence-dlerror.patch17
3 files changed, 107 insertions, 0 deletions
diff --git a/libre/fakeroot/PKGBUILD b/libre/fakeroot/PKGBUILD
new file mode 100644
index 000000000..f834dafe3
--- /dev/null
+++ b/libre/fakeroot/PKGBUILD
@@ -0,0 +1,76 @@
+# Maintainer: David P. <megver83@parabola.nu>
+# Maintainer (Arch): Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
+# Contributor (Arch): Allan McRae <allan@archlinux.org>
+# Contributor (Arch): Jochem Kossen <j.kossen@home.nl>
+
+# NOTE: if building for armv7h, you may need to pass -N to libremakepkg,
+# otherwise check() could fail
+
+pkgname=fakeroot
+pkgver=1.24
+pkgrel=2
+pkgrel+=.parabola1
+pkgdesc='Tool for simulating superuser privileges'
+arch=(x86_64)
+arch+=(i686 armv7h)
+license=(GPL)
+url='https://packages.debian.org/fakeroot'
+install=fakeroot.install
+depends=(glibc filesystem sed util-linux sh)
+makedepends=(po4a)
+checkdepends=(sharutils)
+source=("https://deb.debian.org/debian/pool/main/f/$pkgname/${pkgname}_${pkgver}.orig.tar.gz"
+ 'silence-dlerror.patch')
+sha256sums=('2e045b3160370b8ab4d44d1f8d267e5d1d555f1bb522d650e7167b09477266ed'
+ '347f6496c93ed0d91dcb554db92602b50520a16308e3b8bc33822bd69966267b')
+
+prepare() {
+ cd $pkgname-$pkgver
+ patch -p1 -i "$srcdir"/silence-dlerror.patch
+
+ ./bootstrap
+
+ # fix chmod_dev, mknod and touchinstall tests
+ sed -e 's/\^b/\^-/' \
+ -e 's/\<root\>/$USER/' \
+ -i test/t.{chmod_dev,mknod,touchinstall}
+}
+
+build() {
+ cd $pkgname-$pkgver
+
+ # SYSV IPC makes fakeroot fail with ARM emulation
+ # https://labs.parabola.nu/issues/2775
+ # https://archlinuxarm.org/forum/viewtopic.php?p=63781
+ if [ $CARCH = armv7h ]; then
+ ipc=tcp
+ else
+ ipc=sysv
+ fi
+
+ ./configure --prefix=/usr \
+ --libdir=/usr/lib/libfakeroot \
+ --disable-static \
+ --with-ipc=$ipc
+
+ make
+
+ cd doc
+ po4a -k 0 --rm-backups --variable 'srcdir=../doc/' po4a/po4a.cfg
+}
+
+check() {
+ cd $pkgname-$pkgver
+ make check
+}
+
+package() {
+ cd $pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+
+ install -dm755 "$pkgdir/etc/ld.so.conf.d/"
+ echo '/usr/lib/libfakeroot' > "$pkgdir/etc/ld.so.conf.d/fakeroot.conf"
+
+ # install README for sysv/tcp usage
+ install -Dm644 README "$pkgdir/usr/share/doc/$pkgname/README"
+}
diff --git a/libre/fakeroot/fakeroot.install b/libre/fakeroot/fakeroot.install
new file mode 100644
index 000000000..caab92243
--- /dev/null
+++ b/libre/fakeroot/fakeroot.install
@@ -0,0 +1,14 @@
+post_install() {
+ usr/bin/ldconfig -r .
+}
+
+post_upgrade() {
+ if [ "$(vercmp $2 1.14.4-2)" -lt 0 ]; then
+ sed -i -e '/\/usr\/lib\/libfakeroot/d' etc/ld.so.conf
+ fi
+ usr/bin/ldconfig -r .
+}
+
+pre_remove() {
+ usr/bin/ldconfig -r .
+}
diff --git a/libre/fakeroot/silence-dlerror.patch b/libre/fakeroot/silence-dlerror.patch
new file mode 100644
index 000000000..a4472d8f7
--- /dev/null
+++ b/libre/fakeroot/silence-dlerror.patch
@@ -0,0 +1,17 @@
+diff --git a/libfakeroot.c b/libfakeroot.c
+index f867758..7ef6e47 100644
+--- a/libfakeroot.c
++++ b/libfakeroot.c
+@@ -256,10 +256,12 @@ void load_library_symbols(void){
+ /* clear dlerror() just in case dlsym() legitimately returns NULL */
+ msg = dlerror();
+ *(next_wrap[i].doit)=dlsym(get_libc(), next_wrap[i].name);
++#ifdef LIBFAKEROOT_DEBUGGING
+ if ( (msg = dlerror()) != NULL){
+ fprintf (stderr, "dlsym(%s): %s\n", next_wrap[i].name, msg);
+ /* abort ();*/
+ }
++#endif /* LIBFAKEROOT_DEBUGGING */
+ }
+ }
+