diff --git a/pkgs/tools/compression/bzip2/default.nix b/pkgs/tools/compression/bzip2/default.nix index 46cd16374b321e..34ba76acc1e06c 100644 --- a/pkgs/tools/compression/bzip2/default.nix +++ b/pkgs/tools/compression/bzip2/default.nix @@ -30,10 +30,7 @@ stdenv.mkDerivation ( patchFlags = [ "-p0" ]; patches = [ - (fetchurl { - url = "ftp://ftp.suse.com/pub/people/sbrabec/bzip2/for_downstream/bzip2-1.0.6.2-autoconfiscated.patch"; - sha256 = "sha256-QMufl6ffJVVVVZespvkCbFpB6++R1lnq1687jEsUjr0="; - }) + ./patches/bzip2-1.0.6.2-autoconfiscated.patch ]; # Fix up hardcoded version from the above patch, e.g. seen in bzip2.pc or libbz2.so.1.0.N postPatch = '' diff --git a/pkgs/tools/compression/bzip2/patches/bzip2-1.0.6.2-autoconfiscated.patch b/pkgs/tools/compression/bzip2/patches/bzip2-1.0.6.2-autoconfiscated.patch new file mode 100644 index 00000000000000..d6288de7f27d8b --- /dev/null +++ b/pkgs/tools/compression/bzip2/patches/bzip2-1.0.6.2-autoconfiscated.patch @@ -0,0 +1,370 @@ +--- /dev/null ++++ autogen.sh +@@ -0,0 +1,8 @@ ++mv LICENSE COPYING ++mv CHANGES NEWS ++touch AUTHORS ++touch ChangeLog ++libtoolize --force ++aclocal ++automake --add-missing --gnu ++autoconf +--- /dev/null ++++ README.autotools +@@ -0,0 +1,41 @@ ++bzip2 autoconfiscated ++===================== ++ ++Temporarily at http://ftp.suse.com/pub/people/sbrabec/bzip2/ expecting ++that it will become a new upstream version to prevent per-distribution ++shared library patching done by nearly each Linux vendor separately. ++ ++Autoconfiscation brings standard ./configure ; make ; make install ++installation, seamless support of DESTDIR, automatic check for supported ++CFLAGS, standard shared library support, automatic large files CFLAGS ++check and all things that are supported by automake. ++ ++It makes obsolete Makefile-libbz2_so and README.COMPILATION.PROBLEMS. ++Now configure should automatically detect correct build flags. ++ ++In case of any problem or question with autotools support feel free to ++contact me: Stanislav Brabec ++ ++Autoconfiscated version binaries are exactly equal to ++bzip2-1.0.6.tar.gz. There are only few changes. See below. ++ ++ ++New features: ++ ++Trivial link man pages for bzcat and bunzip2 added. ++ ++bzip2.pc file for pkg-config. Packages can use it for checks. ++ ++ ++Incompatible changes: ++ ++soname change. Libtool has no support for two parts soname suffix (e. g. ++libbz2.so.1.0). It must be a single number (e. g. libbz2.so.1). That is ++why soname must change. But I see not a big problem with it. Several ++distributions already use the new number instead of the non-standard ++number from Makefile-libbz2_so. ++ ++Shared library exports only public symbols. ++ ++To be super-safe, I incremented minor number of the library file, so ++both instances of the shared library can live together. +--- /dev/null ++++ configure.ac +@@ -0,0 +1,62 @@ ++# -*- Autoconf -*- ++# Process this file with autoconf to produce a configure script. ++ ++AC_PREREQ([2.57]) ++AC_INIT([bzip2], [1.0.6], [Julian Seward ]) ++BZIP2_LT_CURRENT=1 ++BZIP2_LT_REVISION=6 ++BZIP2_LT_AGE=0 ++AC_CONFIG_SRCDIR([bzlib.h]) ++AC_CONFIG_MACRO_DIR([m4]) ++ ++AM_INIT_AUTOMAKE([foreign subdir-objects]) ++AM_MAINTAINER_MODE ++ ++# Checks for programs. ++AC_PROG_AWK ++AC_PROG_CC_STDC ++AC_PROG_CC_C_O ++AC_USE_SYSTEM_EXTENSIONS ++AC_PROG_INSTALL ++AC_PROG_LN_S ++AC_PROG_MAKE_SET ++LT_INIT([disable-static pic-only]) ++PKG_PROG_PKG_CONFIG ++gl_VISIBILITY ++# Checks for libraries. ++ ++# Checks for header files. ++ ++# Checks for typedefs, structures, and compiler characteristics. ++ ++# Check for system features. ++AC_SYS_LARGEFILE ++ ++AC_MSG_CHECKING([whether compiler understands -Wall]) ++save_CFLAGS="$CFLAGS" ++CFLAGS="$CFLAGS -Wall" ++AC_TRY_COMPILE([], [], [ ++ AC_MSG_RESULT([yes]) ++], [ ++ AC_MSG_RESULT([no]) ++ CFLAGS="$save_CFLAGS" ++]) ++ ++AC_MSG_CHECKING([whether compiler understands -Winline]) ++save_CFLAGS="$CFLAGS" ++CFLAGS="$CFLAGS -Winline" ++AC_TRY_COMPILE([], [], [ ++ AC_MSG_RESULT([yes]) ++], [ ++ AC_MSG_RESULT([no]) ++ CFLAGS="$save_CFLAGS" ++]) ++ ++# Checks for library functions. ++ ++# Write the output. ++AC_SUBST([BZIP2_LT_CURRENT]) ++AC_SUBST([BZIP2_LT_REVISION]) ++AC_SUBST([BZIP2_LT_AGE]) ++AC_CONFIG_FILES([Makefile bzip2.pc]) ++AC_OUTPUT +--- /dev/null ++++ Makefile.am +@@ -0,0 +1,137 @@ ++ACLOCAL_AMFLAGS = -I m4 ++lib_LTLIBRARIES = libbz2.la ++AM_CFLAGS = $(CFLAG_VISIBILITY) ++libbz2_la_SOURCES = \ ++ blocksort.c \ ++ huffman.c \ ++ crctable.c \ ++ randtable.c \ ++ compress.c \ ++ decompress.c \ ++ bzlib.c ++ ++libbz2_la_LDFLAGS = \ ++ -version-info $(BZIP2_LT_CURRENT):$(BZIP2_LT_REVISION):$(BZIP2_LT_AGE) \ ++ -no-undefined ++ ++include_HEADERS = bzlib.h ++ ++noinst_HEADERS = bzlib_private.h ++ ++bin_PROGRAMS = bzip2 bzip2recover ++ ++bzip2_SOURCES = bzip2.c ++bzip2_LDADD = libbz2.la ++ ++bzip2recover_SOURCES = bzip2recover.c ++bzip2recover_LDADD = libbz2.la ++ ++bin_SCRIPTS = bzgrep bzmore bzdiff ++ ++man_MANS = bzip2.1 bzgrep.1 bzmore.1 bzdiff.1 ++ ++pkgconfigdir = $(libdir)/pkgconfig ++pkgconfig_DATA = bzip2.pc ++ ++$(pkgconfig_DATA): $(srcdir)/bzip2.pc.in config.status ++ ++install-exec-hook: ++ rm -f $(DESTDIR)$(bindir)/`echo "bunzip2" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzcat" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzegrep" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzfgrep" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzless" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzcmp" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ $(LN_S) `echo "bzip2" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` $(DESTDIR)$(bindir)/`echo "bunzip2" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ $(LN_S) `echo "bzip2" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` $(DESTDIR)$(bindir)/`echo "bzcat" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ $(LN_S) `echo "bzgrep" | sed 's,^.*/,,;$(transform)'` $(DESTDIR)$(bindir)/`echo "bzegrep" | sed 's,^.*/,,;$(transform)'` ++ $(LN_S) `echo "bzgrep" | sed 's,^.*/,,;$(transform)'` $(DESTDIR)$(bindir)/`echo "bzfgrep" | sed 's,^.*/,,;$(transform)'` ++ $(LN_S) `echo "bzmore" | sed 's,^.*/,,;$(transform)'` $(DESTDIR)$(bindir)/`echo "bzless" | sed 's,^.*/,,;$(transform)'` ++ $(LN_S) `echo "bzdiff" | sed 's,^.*/,,;$(transform)'` $(DESTDIR)$(bindir)/`echo "bzcmp" | sed 's,^.*/,,;$(transform)'` ++ ++install-data-hook: ++ echo ".so man1/`echo "bzip2" | sed 's,^.*/,,;$(transform)'`.1" >$(DESTDIR)$(mandir)/man1/`echo "bunzip2" | sed 's,^.*/,,;$(transform)'`.1 ++ echo ".so man1/`echo "bzip2" | sed 's,^.*/,,;$(transform)'`.1" >$(DESTDIR)$(mandir)/man1/`echo "bzcat" | sed 's,^.*/,,;$(transform)'`.1 ++ echo ".so man1/`echo "bzgrep" | sed 's,^.*/,,;$(transform)'`.1" >$(DESTDIR)$(mandir)/man1/`echo "bzegrep" | sed 's,^.*/,,;$(transform)'`.1 ++ echo ".so man1/`echo "bzgrep" | sed 's,^.*/,,;$(transform)'`.1" >$(DESTDIR)$(mandir)/man1/`echo "bzfgrep" | sed 's,^.*/,,;$(transform)'`.1 ++ echo ".so man1/`echo "bzmore" | sed 's,^.*/,,;$(transform)'`.1" >$(DESTDIR)$(mandir)/man1/`echo "bzless" | sed 's,^.*/,,;$(transform)'`.1 ++ echo ".so man1/`echo "bzdiff" | sed 's,^.*/,,;$(transform)'`.1" >$(DESTDIR)$(mandir)/man1/`echo "bzcmp" | sed 's,^.*/,,;$(transform)'`.1 ++ ++uninstall-hook: ++ rm -f $(DESTDIR)$(bindir)/`echo "bunzip2" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzcat" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzegrep" | sed 's,^.*/,,;$(transform)'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzfgrep" | sed 's,^.*/,,;$(transform)'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzless" | sed 's,^.*/,,;$(transform)'` ++ rm -f $(DESTDIR)$(bindir)/`echo "bzcmp" | sed 's,^.*/,,;$(transform)'` ++ rm -f $(DESTDIR)$(mandir)/man1/`echo "bunzip2" | sed 's,^.*/,,;$(transform)'`.1 ++ rm -f $(DESTDIR)$(mandir)/man1/`echo "bzcat" | sed 's,^.*/,,;$(transform)'`.1 ++ rm -f $(DESTDIR)$(mandir)/man1/`echo "bzegrep" | sed 's,^.*/,,;$(transform)'`.1 ++ rm -f $(DESTDIR)$(mandir)/man1/`echo "bzfgrep" | sed 's,^.*/,,;$(transform)'`.1 ++ rm -f $(DESTDIR)$(mandir)/man1/`echo "bzless" | sed 's,^.*/,,;$(transform)'`.1 ++ rm -f $(DESTDIR)$(mandir)/man1/`echo "bzcmp" | sed 's,^.*/,,;$(transform)'`.1 ++ ++test: bzip2 ++ @cat $(srcdir)/words1 ++ ./bzip2 -1 <$(srcdir)/sample1.ref >sample1.rb2 ++ ./bzip2 -2 <$(srcdir)/sample2.ref >sample2.rb2 ++ ./bzip2 -3 <$(srcdir)/sample3.ref >sample3.rb2 ++ ./bzip2 -d <$(srcdir)/sample1.bz2 >sample1.tst ++ ./bzip2 -d <$(srcdir)/sample2.bz2 >sample2.tst ++ ./bzip2 -ds <$(srcdir)/sample3.bz2 >sample3.tst ++ cmp $(srcdir)/sample1.bz2 sample1.rb2 ++ cmp $(srcdir)/sample2.bz2 sample2.rb2 ++ cmp $(srcdir)/sample3.bz2 sample3.rb2 ++ cmp sample1.tst $(srcdir)/sample1.ref ++ cmp sample2.tst $(srcdir)/sample2.ref ++ cmp sample3.tst $(srcdir)/sample3.ref ++ @cat $(srcdir)/words3 ++ ++manual: $(srcdir)/manual.html $(srcdir)/manual.ps $(srcdir)/manual.pdf ++ ++manual.ps: $(MANUAL_SRCS) ++ cd $(srcdir); ./xmlproc.sh -ps manual.xml ++ ++manual.pdf: $(MANUAL_SRCS) ++ cd $(srcdir); ./xmlproc.sh -pdf manual.xml ++ ++manual.html: $(MANUAL_SRCS) ++ cd $(srcdir); ./xmlproc.sh -html manual.xml ++ ++EXTRA_DIST = \ ++ $(bin_SCRIPTS) \ ++ $(man_MANS) \ ++ README.autotools \ ++ README.XML.STUFF \ ++ bz-common.xsl \ ++ bz-fo.xsl \ ++ bz-html.xsl \ ++ bzip.css \ ++ bzip2.1.preformatted \ ++ bzip2.pc.in \ ++ bzip2.txt \ ++ dlltest.c \ ++ dlltest.dsp \ ++ entities.xml \ ++ format.pl \ ++ libbz2.def \ ++ libbz2.dsp \ ++ makefile.msc \ ++ manual.html \ ++ manual.pdf \ ++ manual.ps \ ++ manual.xml \ ++ mk251.c \ ++ sample1.bz2 \ ++ sample1.ref \ ++ sample2.bz2 \ ++ sample2.ref \ ++ sample3.bz2 \ ++ sample3.ref \ ++ spewG.c \ ++ unzcrash.c \ ++ words0 \ ++ words1 \ ++ words2 \ ++ words3 \ ++ xmlproc.sh +--- /dev/null ++++ bzip2.pc.in +@@ -0,0 +1,11 @@ ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++bindir=@bindir@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: bzip2 ++Description: Lossless, block-sorting data compression ++Version: @VERSION@ ++Libs: -L${libdir} -lbz2 ++Cflags: -I${includedir} +--- /dev/null ++++ m4/visibility.m4 +@@ -0,0 +1,78 @@ ++# visibility.m4 serial 4 (gettext-0.18.2) ++dnl Copyright (C) 2005, 2008, 2010-2011 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Bruno Haible. ++ ++dnl Tests whether the compiler supports the command-line option ++dnl -fvisibility=hidden and the function and variable attributes ++dnl __attribute__((__visibility__("hidden"))) and ++dnl __attribute__((__visibility__("default"))). ++dnl Does *not* test for __visibility__("protected") - which has tricky ++dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on ++dnl MacOS X. ++dnl Does *not* test for __visibility__("internal") - which has processor ++dnl dependent semantics. ++dnl Does *not* test for #pragma GCC visibility push(hidden) - which is ++dnl "really only recommended for legacy code". ++dnl Set the variable CFLAG_VISIBILITY. ++dnl Defines and sets the variable HAVE_VISIBILITY. ++ ++AC_DEFUN([gl_VISIBILITY], ++[ ++ AC_REQUIRE([AC_PROG_CC]) ++ CFLAG_VISIBILITY= ++ HAVE_VISIBILITY=0 ++ if test -n "$GCC"; then ++ dnl First, check whether -Werror can be added to the command line, or ++ dnl whether it leads to an error because of some other option that the ++ dnl user has put into $CC $CFLAGS $CPPFLAGS. ++ AC_MSG_CHECKING([whether the -Werror option is usable]) ++ AC_CACHE_VAL([gl_cv_cc_vis_werror], [ ++ gl_save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -Werror" ++ AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM([[]], [[]])], ++ [gl_cv_cc_vis_werror=yes], ++ [gl_cv_cc_vis_werror=no]) ++ CFLAGS="$gl_save_CFLAGS"]) ++ AC_MSG_RESULT([$gl_cv_cc_vis_werror]) ++ dnl Now check whether visibility declarations are supported. ++ AC_MSG_CHECKING([for simple visibility declarations]) ++ AC_CACHE_VAL([gl_cv_cc_visibility], [ ++ gl_save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -fvisibility=hidden" ++ dnl We use the option -Werror and a function dummyfunc, because on some ++ dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning ++ dnl "visibility attribute not supported in this configuration; ignored" ++ dnl at the first function definition in every compilation unit, and we ++ dnl don't want to use the option in this case. ++ if test $gl_cv_cc_vis_werror = yes; then ++ CFLAGS="$CFLAGS -Werror" ++ fi ++ AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; ++ extern __attribute__((__visibility__("default"))) int exportedvar; ++ extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); ++ extern __attribute__((__visibility__("default"))) int exportedfunc (void); ++ void dummyfunc (void) {} ++ ]], ++ [[]])], ++ [gl_cv_cc_visibility=yes], ++ [gl_cv_cc_visibility=no]) ++ CFLAGS="$gl_save_CFLAGS"]) ++ AC_MSG_RESULT([$gl_cv_cc_visibility]) ++ if test $gl_cv_cc_visibility = yes; then ++ CFLAG_VISIBILITY="-fvisibility=hidden" ++ HAVE_VISIBILITY=1 ++ AC_DEFINE([BZ_EXTERN], [__attribute__((__visibility__("default")))], [To make symbol visible]) ++ fi ++ fi ++ AC_SUBST([CFLAG_VISIBILITY]) ++ AC_SUBST([HAVE_VISIBILITY]) ++ AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], ++ [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) ++]) +--- bzlib.h.orig ++++ bzlib.h +@@ -91,9 +91,11 @@ typedef + # endif + #else + # define BZ_API(func) func +-# define BZ_EXTERN extern + #endif + ++#ifndef BZ_EXTERN ++#define BZ_EXTERN extern ++#endif + + /*-- Core (low-level) library functions --*/ +