Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

app-admin/chrpath: use HTTPs, fix SRC_URI and LICENSE, EAPI=7 + version bump (0.16) #12048

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions app-admin/chrpath/Manifest
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
DIST chrpath-0.13.tar.gz 125129 BLAKE2B 004db7e3567ceeb700d018e7e32036843413605466c218bf40252927b169775c5a86f81f8ea355f0d141821313d114ec24654ed62d75443e31739118e31bc497 SHA512 9ec2ab2731fb553497996939b421130ae221d478dab8887c184ae91f7d3ae697688e7a30e3bea30cc0cf765f1dc8c7f47d2a1f4369b36079b4033e8d0303d75e
DIST chrpath-0.16.tar.gz 134506 BLAKE2B 7003cc1cb2332ffbe6fe0873c6d30cbc3ea696e041be33b39c3d36ae34a2497b8dd40bb373773c546b8d63cfd8534e796fd7d7cbc99d37fb8751fc960907070f SHA512 aa04d490f78bff20a56fe20539cec10218c0772a668909eda8324ca825f51e8ef92001e95d9c316e79a145a043c9c327ec94d1a82e104ab408ca1021832745aa
10 changes: 5 additions & 5 deletions app-admin/chrpath/chrpath-0.13-r2.ebuild
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
# Copyright 1999-2018 Gentoo Foundation
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit autotools

DESCRIPTION="chrpath can modify the rpath and runpath of ELF executables"
HOMEPAGE="http://directory.fsf.org/project/chrpath/"
DESCRIPTION="Chrpath can modify the rpath and runpath of ELF executables"
HOMEPAGE="https://directory.fsf.org/wiki/Chrpath"
# original upstream no longer exists (ftp://ftp.hungry.com/pub/hungry)
SRC_URI="http://ftp.tux.org/pub/X-Windows/ftp.hungry.com/chrpath/${P}.tar.gz"
SRC_URI="https://alioth-archive.debian.org/releases/${PN}/${PN}/${PV}/${P}.tar.gz"

LICENSE="GPL-2"
LICENSE="GPL-2+"
SLOT="0"
KEYWORDS="amd64 arm ~mips ppc ppc64 x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="static-libs"
Expand Down
40 changes: 40 additions & 0 deletions app-admin/chrpath/chrpath-0.16.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit autotools

DESCRIPTION="Chrpath can modify the rpath and runpath of ELF executables"
HOMEPAGE="https://directory.fsf.org/wiki/Chrpath"
SRC_URI="https://alioth-archive.debian.org/releases/${PN}/${PN}/${PV}/${P}.tar.gz"

LICENSE="GPL-2+"
SLOT="0"
KEYWORDS="~amd64 ~arm ~mips ~ppc ~ppc64 ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="static-libs"

PATCHES=(
"${FILESDIR}"/${P}-multilib.patch
"${FILESDIR}"/${P}-testsuite-1.patch
)

src_prepare() {
default
# disable installing redundant docs in the wrong dir
sed -i -e '/doc_DATA/d' Makefile.am || die
# fix for automake-1.13, #467538
sed -i -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' configure.ac || die
eautoreconf
}

src_configure() {
econf $(use_enable static-libs static)
}

src_install() {
default
if ! use static-libs; then
find "${D}" -name "*.la" -delete || die
fi
}
155 changes: 155 additions & 0 deletions app-admin/chrpath/files/chrpath-0.16-multilib.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
--- chrpath-0.16/Makefile.am 2014-01-12 08:52:21.000000000 +0100
+++ chrpath-0.16-ng/Makefile.am 2019-05-19 11:23:48.352936406 +0200
@@ -12,11 +12,18 @@
fakeroot debian/rules binary

chrpath_SOURCES = \
- chrpath.c \
- killrpath.c \
main.c \
- elf.c \
protos.h
+
+chrpath_LDADD = $(LDLIBS)
+
+lib_LTLIBRARIES = libchrpath32.la libchrpath64.la
+libchrpath32_la_SOURCES = chrpath.c killrpath.c elf.c protos.h
+libchrpath32_la_CFLAGS = -DSIZEOF_VOID_P=4
+libchrpath32_la_LDFLAGS = -avoid-version
+libchrpath64_la_SOURCES = chrpath.c killrpath.c elf.c protos.h
+libchrpath64_la_CFLAGS = -DSIZEOF_VOID_P=8
+libchrpath64_la_LDFLAGS = -avoid-version

EXTRA_DIST = $(man_MANS)

--- chrpath-0.16/configure.ac 2014-01-12 09:01:52.000000000 +0100
+++ chrpath-0.16-ng/configure.ac 2019-05-19 11:25:07.158665075 +0200
@@ -16,6 +16,7 @@
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
+AC_PROG_LIBTOOL

dnl Checks for libraries.

@@ -26,11 +27,19 @@
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_BIGENDIAN
-AC_CHECK_SIZEOF(void *)

dnl Checks for library functions.
AC_CHECK_FUNCS(getopt_long)

+dnl See if we need -ldl on this platform for dlopen
+LDLIBS=
+save_LIBS="$LIBS"
+LIBS=
+AC_SEARCH_LIBS([dlopen], [dl])
+LDLIBS=${LIBS}
+LIBS="${save_LIBS}"
+AC_SUBST([LDLIBS])
+
if eval "test x$GCC = xyes"; then
for flag in \
-W \
--- chrpath-0.16/main.c 2014-01-14 10:15:59.000000000 +0100
+++ chrpath-0.16-ng/main.c 2019-05-19 11:29:34.648390032 +0200
@@ -12,13 +12,19 @@
# include "config.h"
#endif

+#include <dlfcn.h>
+#include <elf.h>
+#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <unistd.h>
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#endif
-#include "protos.h"
+
+typedef int (*killrpath_t)(const char *filename);
+typedef int (*chrpath_t)(const char *filename, const char *newpath, int convert);

#ifdef HAVE_GETOPT_LONG
# define GETOPT_LONG getopt_long
@@ -63,6 +69,30 @@
printf("\n");
}

+static unsigned
+elf_class(const char *filename)
+{
+ Elf32_Ehdr ehdr;
+ int fd;
+
+ fd = open(filename, O_RDONLY);
+ if (fd == -1)
+ return 0;
+ if (read(fd, &ehdr, sizeof(ehdr)) != sizeof(ehdr))
+ {
+ close(fd);
+ return 0;
+ }
+ close(fd);
+ if ((memcmp(ehdr.e_ident, ELFMAG, SELFMAG) != 0)
+ || (ehdr.e_ident[EI_VERSION] != EV_CURRENT))
+ {
+ fprintf(stderr, "`%s' probably isn't an ELF file.\n", filename);
+ return 0;
+ }
+ return ehdr.e_ident[EI_CLASS];
+}
+
int
main(int argc, char * const argv[])
{
@@ -75,6 +105,10 @@
#ifdef HAVE_GETOPT_LONG
int option_index = 0;
#endif /* HAVE_GETOPT_LONG */
+
+ void* dll[2];
+ killrpath_t killrpath[2];
+ chrpath_t chrpath[2];

if (argc < 2)
{
@@ -118,15 +152,32 @@
break;
}
} while (-1 != opt);
+
+ dll[0] = dlopen("libchrpath32.so", RTLD_LAZY);
+ killrpath[0] = (killrpath_t)dlsym(dll[0], "killrpath");
+ chrpath[0] = (chrpath_t)dlsym(dll[0], "chrpath");
+
+ dll[1] = dlopen("libchrpath64.so", RTLD_LAZY);
+ killrpath[1] = (killrpath_t)dlsym(dll[1], "killrpath");
+ chrpath[1] = (chrpath_t)dlsym(dll[1], "chrpath");

while (optind < argc && (!retval || keep_going))
{
+ const char* program = argv[optind++];
+ unsigned eclass = elf_class(program);
+ if (!eclass)
+ {
+ retval = 1;
+ continue;
+ }
if (remove)
- retval |= killrpath(argv[optind++]);
+ retval |= killrpath[eclass - ELFCLASS32](program);
else
/* list by default, replace if path is set */
- retval |= chrpath(argv[optind++], newpath, convert);
+ retval |= chrpath[eclass - ELFCLASS32](program, newpath, convert);
}

+ dlclose(dll[0]);
+ dlclose(dll[1]);
return retval;
}
19 changes: 19 additions & 0 deletions app-admin/chrpath/files/chrpath-0.16-testsuite-1.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Submitted By: Mario Fetka (geos_one) (mario dot fetka at gmail dot com)
Date: 2010-04-04
Initial Package Version: 0.16
Origin: me
Upstream Status: unknown
Description: make the testsuite run with the new mltilib design

diff -Naur a/chrpath-0.16/testsuite/runtest.sh b/chrpath-0.16/testsuite/runtest.sh
--- a/testsuite/runtest.sh 2010-04-04 09:02:21.859114159 +0000
+++ b/testsuite/runtest.sh 2010-04-04 09:42:08.762112560 +0000
@@ -2,6 +2,8 @@

set -x

+export LD_LIBRARY_PATH=$PWD/../.libs:$LD_LIBRARY_PATH
+
CHRPATH=../chrpath

retval=0