Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

gawk: refactor

- Don't build with libsigsegv by default. The build apparently attempted
to link against it, but it never retained the reference anyway...
- Side effect: stdenv bootstrapping needs no libsigsegv anymore.
- Run checks, but only in the interactive gawk by default on Linux,
so that stdenv bootstrap isn't slowed down (by glibc locales, etc.).
- xz should be no longer needed in inputs, as we have it in stdenvs now.

The whole change was triggered by some used kernel versions still
breaking libsigsegv tests #28464.

+39 -28
+4 -1
pkgs/stdenv/linux/default.nix
··· 303 303 gnumake gnused gnutar gnugrep gnupatch patchelf ed paxctl 304 304 ] 305 305 # Library dependencies 306 - ++ map getLib [ attr acl zlib pcre libsigsegv ] 306 + ++ map getLib ( 307 + [ attr acl zlib pcre ] 308 + ++ lib.optional (gawk.libsigsegv != null) gawk.libsigsegv 309 + ) 307 310 # More complicated cases 308 311 ++ [ 309 312 glibc.out glibc.dev glibc.bin/*propagated from .dev*/ linuxHeaders
+35 -27
pkgs/tools/text/gawk/default.nix
··· 1 - { stdenv, fetchurl, xz, libsigsegv, readline, interactive ? false 2 - , locale ? null }: 1 + { stdenv, fetchurl 2 + # TODO: links -lsigsegv but loses the reference for some reason 3 + , withSigsegv ? (false && stdenv.system != "x86_64-cygwin"), libsigsegv 4 + , interactive ? false, readline 5 + 6 + /* Test suite broke on: 7 + stdenv.isCygwin # XXX: `test-dup2' segfaults on Cygwin 6.1 8 + || stdenv.isDarwin # XXX: `locale' segfaults 9 + || stdenv.isSunOS # XXX: `_backsmalls1' fails, locale stuff? 10 + || stdenv.isFreeBSD 11 + */ 12 + , doCheck ? (interactive && stdenv.isLinux), glibcLocales ? null 13 + , locale ? null 14 + }: 15 + 16 + assert (doCheck && stdenv.isLinux) -> glibcLocales != null; 3 17 4 18 let 5 19 inherit (stdenv.lib) optional; ··· 13 27 }; 14 28 15 29 # When we do build separate interactive version, it makes sense to always include man. 16 - outputs = [ "out" "info" ] ++ stdenv.lib.optional (!interactive) "man"; 30 + outputs = [ "out" "info" ] ++ optional (!interactive) "man"; 17 31 18 - # FIXME: 4.1.4 testsuite breaks when only C locales are available 19 - doCheck = false /*!( 20 - stdenv.isCygwin # XXX: `test-dup2' segfaults on Cygwin 6.1 21 - || stdenv.isDarwin # XXX: `locale' segfaults 22 - || stdenv.isSunOS # XXX: `_backsmalls1' fails, locale stuff? 23 - || stdenv.isFreeBSD 24 - )*/; 32 + nativeBuildInputs = optional (doCheck && stdenv.isLinux) glibcLocales; 25 33 26 - nativeBuildInputs = [ xz.bin ]; 27 34 buildInputs = 28 - stdenv.lib.optional (stdenv.system != "x86_64-cygwin") libsigsegv 29 - ++ stdenv.lib.optional interactive readline 30 - ++ stdenv.lib.optional stdenv.isDarwin locale; 35 + optional withSigsegv libsigsegv 36 + ++ optional interactive readline 37 + ++ optional stdenv.isDarwin locale; 31 38 32 - configureFlags = stdenv.lib.optional (stdenv.system != "x86_64-cygwin") "--with-libsigsegv-prefix=${libsigsegv}" 33 - ++ [(if interactive then "--with-readline=${readline.dev}" else "--without-readline")]; 39 + configureFlags = [ 40 + (if withSigsegv then "--with-libsigsegv-prefix=${libsigsegv}" else "--without-libsigsegv") 41 + (if interactive then "--with-readline=${readline.dev}" else "--without-readline") 42 + ]; 43 + 44 + inherit doCheck; 45 + 46 + postInstall = '' 47 + rm "$out"/bin/gawk-* 48 + ln -s gawk.1 "''${!outputMan}"/share/man/man1/awk.1 49 + ''; 34 50 35 - postInstall = 36 - if interactive then 37 - '' 38 - rm "$out"/bin/gawk-* 39 - ln -s gawk.1 "''${!outputMan}"/share/man/man1/awk.1 40 - '' 41 - else # TODO: remove this other branch on a stdenv rebuild 42 - '' 43 - rm $out/bin/gawk-* 44 - ln -s $man/share/man/man1/gawk.1 $man/share/man/man1/awk.1 45 - ''; 51 + passthru = { 52 + libsigsegv = if withSigsegv then libsigsegv else null; # for stdenv bootstrap 53 + }; 46 54 47 55 meta = with stdenv.lib; { 48 56 homepage = http://www.gnu.org/software/gawk/;