summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2017-06-21 15:20:17 +0200
committerThomas Deutschmann <whissi@gentoo.org>2017-06-21 15:21:26 +0200
commita583c4ba35a3c3bd5903893d1d4b3f1544f58d2c (patch)
treeabbbc81022cea0902d5db4e3459bc118b228b639
parentprofiles/arch/arm64: mask heimdal[afs] (diff)
downloadgentoo-a583c4ba35a3c3bd5903893d1d4b3f1544f58d2c.tar.gz
gentoo-a583c4ba35a3c3bd5903893d1d4b3f1544f58d2c.tar.bz2
gentoo-a583c4ba35a3c3bd5903893d1d4b3f1544f58d2c.zip
Revert "app-arch/unrar: Security cleanup (bug #622342)"
This reverts commit f84896cce4b495bcf147fd493e815d5106f7aa76.
-rw-r--r--app-arch/unrar/Manifest1
-rw-r--r--app-arch/unrar/files/unrar-5.0.2-build.patch45
-rw-r--r--app-arch/unrar/files/unrar-5.2.2-no-auto-clean.patch17
-rw-r--r--app-arch/unrar/unrar-5.4.5.ebuild62
4 files changed, 125 insertions, 0 deletions
diff --git a/app-arch/unrar/Manifest b/app-arch/unrar/Manifest
index b4fb96e475e..fb13df3fb15 100644
--- a/app-arch/unrar/Manifest
+++ b/app-arch/unrar/Manifest
@@ -1 +1,2 @@
DIST unrar-5.5.5.tar.gz 220377 SHA256 a4553839cb2f025d0d9c5633816a83a723e3938209f17620c8c15da06ed061ef SHA512 b0979641737e3ef18f6708cc19e335c312ac5c6e2a13206d5fed9a5564ac99042c45a842da95163e53c6415131a39a91e901aeb186016da2e3781164679a07ff WHIRLPOOL e22399e866fabeb6f0c1617ca6b8852cf1bd406c0e95e5480692fe33bed9a130dd678f93dde6401015928437b99949865a80b21774788fdb1c7a12e3175560f4
+DIST unrarsrc-5.4.5.tar.gz 226320 SHA256 e470c584332422893fb52e049f2cbd99e24dc6c6da971008b4e2ae4284f8796c SHA512 ba2abf11638b5ee026cb9e0c3576c94376a01ab3c5411b9bd0e8116d64879c81e76df16f98d850f0f0f5387dda046f38be64ddfb4fe57431cc4d97066d6e3c2f WHIRLPOOL c8e035ec183f41d8faf8345b49d2a4d20e21f9c6e27f14d7794389942df4954cd66ab4a5be2fdff6d369b514ae99d5d015f35a36143d686563b2a8efdfc77dce
diff --git a/app-arch/unrar/files/unrar-5.0.2-build.patch b/app-arch/unrar/files/unrar-5.0.2-build.patch
new file mode 100644
index 00000000000..61de7ee0689
--- /dev/null
+++ b/app-arch/unrar/files/unrar-5.0.2-build.patch
@@ -0,0 +1,45 @@
+do not let these targets depend on clean, otherwise it could run in
+parallel with the object compile which runs into races
+https://bugs.gentoo.org/461806
+
+While we're in here, fix up a few other things:
+ - append -pthread to LDFLAGS instead of replacing them
+ - do not bother with `rm` in the output since linking will clober it
+ - use CXXFLAGS when linking
+ - append LIBFLAGS to the individual targets instead of the final link
+
+--- a/makefile
++++ b/makefile
+@@ -7,7 +7,7 @@
+ LIBFLAGS=-fPIC
+ DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP
+ STRIP=strip
+-LDFLAGS=-pthread
++LDFLAGS+=-pthread
+ DESTDIR=/usr
+
+ # Linux using LCC
+@@ -119,8 +119,7 @@
+ @rm -f *.o *.bak *~
+
+ unrar: clean $(OBJECTS) $(UNRAR_OBJ)
+- @rm -f unrar
+- $(LINK) -o unrar $(LDFLAGS) $(OBJECTS) $(UNRAR_OBJ) $(LIBS)
++ $(LINK) -o unrar $(CXXFLAGS) $(LDFLAGS) $(OBJECTS) $(UNRAR_OBJ) $(LIBS)
+ $(STRIP) unrar
+
+ sfx: WHAT=SFX_MODULE
+@@ -130,10 +129,9 @@
+ $(STRIP) default.sfx
+
+ lib: WHAT=RARDLL
+-lib: CXXFLAGS+=$(LIBFLAGS)
+-lib: clean $(OBJECTS) $(LIB_OBJ)
+- @rm -f libunrar.so
+- $(LINK) -shared -o libunrar.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ)
++$(OBJECTS) $(LIB_OBJ): CXXFLAGS+=$(LIBFLAGS)
++lib: $(OBJECTS) $(LIB_OBJ)
++ $(LINK) -shared -o libunrar.so $(CXXFLAGS) $(LDFLAGS) $(OBJECTS) $(LIB_OBJ)
+
+ install-unrar:
+ install -D unrar $(DESTDIR)/bin/unrar
diff --git a/app-arch/unrar/files/unrar-5.2.2-no-auto-clean.patch b/app-arch/unrar/files/unrar-5.2.2-no-auto-clean.patch
new file mode 100644
index 00000000000..ff78363cd5c
--- /dev/null
+++ b/app-arch/unrar/files/unrar-5.2.2-no-auto-clean.patch
@@ -0,0 +1,17 @@
+if clean runs in parallel with $(OBJECTS), it is possible to build some
+objects first, then the clean target fires and deletes some, and then we
+try to link and fail.
+
+https://bugs.gentoo.org/528218
+
+--- a/makefile
++++ b/makefile
+@@ -118,7 +118,7 @@
+ clean:
+ @rm -f *.o *.bak *~
+
+-unrar: clean $(OBJECTS) $(UNRAR_OBJ)
++unrar: $(OBJECTS) $(UNRAR_OBJ)
+ $(LINK) -o unrar $(CXXFLAGS) $(LDFLAGS) $(OBJECTS) $(UNRAR_OBJ) $(LIBS)
+ $(STRIP) unrar
+
diff --git a/app-arch/unrar/unrar-5.4.5.ebuild b/app-arch/unrar/unrar-5.4.5.ebuild
new file mode 100644
index 00000000000..fe4cf6daf3f
--- /dev/null
+++ b/app-arch/unrar/unrar-5.4.5.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+inherit eutils flag-o-matic multilib toolchain-funcs
+
+MY_PN=${PN}src
+
+DESCRIPTION="Uncompress rar files"
+HOMEPAGE="http://www.rarlab.com/rar_add.htm"
+SRC_URI="http://www.rarlab.com/rar/${MY_PN}-${PV}.tar.gz"
+
+LICENSE="unRAR"
+SLOT="0"
+KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris"
+IUSE=""
+
+RDEPEND="!<=app-arch/unrar-gpl-0.0.1_p20080417"
+
+S=${WORKDIR}/unrar
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-5.0.2-build.patch
+ epatch "${FILESDIR}"/${PN}-5.2.2-no-auto-clean.patch #528218
+ local sed_args=( -e "/libunrar/s:.so:$(get_libname ${PV%.*.*}):" )
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ sed_args+=( -e "s:-shared:-dynamiclib -install_name ${EPREFIX}/usr/$(get_libdir)/libunrar$(get_libname ${PV%.*.*}):" )
+ else
+ sed_args+=( -e "s:-shared:& -Wl,-soname -Wl,libunrar$(get_libname ${PV%.*.*}):" )
+ fi
+ sed -i "${sed_args[@]}" makefile || die
+}
+
+src_configure() {
+ mkdir -p build-{lib,bin}
+ printf 'VPATH = ..\ninclude ../makefile' > build-lib/Makefile || die
+ cp build-{lib,bin}/Makefile || die
+}
+
+src_compile() {
+ unrar_make() {
+ emake CXX="$(tc-getCXX)" CXXFLAGS="${CXXFLAGS}" STRIP=true "$@"
+ }
+
+ unrar_make CXXFLAGS+=" -fPIC" -C build-lib lib
+ ln -s libunrar$(get_libname ${PV%.*.*}) build-lib/libunrar$(get_libname) || die
+ ln -s libunrar$(get_libname ${PV%.*.*}) build-lib/libunrar$(get_libname ${PV}) || die
+
+ unrar_make -C build-bin
+}
+
+src_install() {
+ dobin build-bin/unrar
+ dodoc readme.txt
+
+ dolib.so build-lib/libunrar*
+
+ insinto /usr/include/libunrar${PV%.*.*}
+ doins *.hpp
+ dosym libunrar${PV%.*.*} /usr/include/libunrar
+}