summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-arch/unrar/files')
-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
2 files changed, 62 insertions, 0 deletions
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 000000000000..61de7ee06891
--- /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 000000000000..ff78363cd5c0
--- /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
+