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.
This commit is contained in:
parent
2fc7651b25
commit
8137a8cb73
@ -303,7 +303,10 @@ in
|
|||||||
gnumake gnused gnutar gnugrep gnupatch patchelf ed paxctl
|
gnumake gnused gnutar gnugrep gnupatch patchelf ed paxctl
|
||||||
]
|
]
|
||||||
# Library dependencies
|
# Library dependencies
|
||||||
++ map getLib [ attr acl zlib pcre libsigsegv ]
|
++ map getLib (
|
||||||
|
[ attr acl zlib pcre ]
|
||||||
|
++ lib.optional (gawk.libsigsegv != null) gawk.libsigsegv
|
||||||
|
)
|
||||||
# More complicated cases
|
# More complicated cases
|
||||||
++ [
|
++ [
|
||||||
glibc.out glibc.dev glibc.bin/*propagated from .dev*/ linuxHeaders
|
glibc.out glibc.dev glibc.bin/*propagated from .dev*/ linuxHeaders
|
||||||
|
@ -1,5 +1,19 @@
|
|||||||
{ stdenv, fetchurl, xz, libsigsegv, readline, interactive ? false
|
{ stdenv, fetchurl
|
||||||
, locale ? null }:
|
# TODO: links -lsigsegv but loses the reference for some reason
|
||||||
|
, withSigsegv ? (false && stdenv.system != "x86_64-cygwin"), libsigsegv
|
||||||
|
, interactive ? false, readline
|
||||||
|
|
||||||
|
/* Test suite broke on:
|
||||||
|
stdenv.isCygwin # XXX: `test-dup2' segfaults on Cygwin 6.1
|
||||||
|
|| stdenv.isDarwin # XXX: `locale' segfaults
|
||||||
|
|| stdenv.isSunOS # XXX: `_backsmalls1' fails, locale stuff?
|
||||||
|
|| stdenv.isFreeBSD
|
||||||
|
*/
|
||||||
|
, doCheck ? (interactive && stdenv.isLinux), glibcLocales ? null
|
||||||
|
, locale ? null
|
||||||
|
}:
|
||||||
|
|
||||||
|
assert (doCheck && stdenv.isLinux) -> glibcLocales != null;
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (stdenv.lib) optional;
|
inherit (stdenv.lib) optional;
|
||||||
@ -13,36 +27,30 @@ stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
# When we do build separate interactive version, it makes sense to always include man.
|
# When we do build separate interactive version, it makes sense to always include man.
|
||||||
outputs = [ "out" "info" ] ++ stdenv.lib.optional (!interactive) "man";
|
outputs = [ "out" "info" ] ++ optional (!interactive) "man";
|
||||||
|
|
||||||
# FIXME: 4.1.4 testsuite breaks when only C locales are available
|
nativeBuildInputs = optional (doCheck && stdenv.isLinux) glibcLocales;
|
||||||
doCheck = false /*!(
|
|
||||||
stdenv.isCygwin # XXX: `test-dup2' segfaults on Cygwin 6.1
|
|
||||||
|| stdenv.isDarwin # XXX: `locale' segfaults
|
|
||||||
|| stdenv.isSunOS # XXX: `_backsmalls1' fails, locale stuff?
|
|
||||||
|| stdenv.isFreeBSD
|
|
||||||
)*/;
|
|
||||||
|
|
||||||
nativeBuildInputs = [ xz.bin ];
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
stdenv.lib.optional (stdenv.system != "x86_64-cygwin") libsigsegv
|
optional withSigsegv libsigsegv
|
||||||
++ stdenv.lib.optional interactive readline
|
++ optional interactive readline
|
||||||
++ stdenv.lib.optional stdenv.isDarwin locale;
|
++ optional stdenv.isDarwin locale;
|
||||||
|
|
||||||
configureFlags = stdenv.lib.optional (stdenv.system != "x86_64-cygwin") "--with-libsigsegv-prefix=${libsigsegv}"
|
configureFlags = [
|
||||||
++ [(if interactive then "--with-readline=${readline.dev}" else "--without-readline")];
|
(if withSigsegv then "--with-libsigsegv-prefix=${libsigsegv}" else "--without-libsigsegv")
|
||||||
|
(if interactive then "--with-readline=${readline.dev}" else "--without-readline")
|
||||||
|
];
|
||||||
|
|
||||||
postInstall =
|
inherit doCheck;
|
||||||
if interactive then
|
|
||||||
''
|
postInstall = ''
|
||||||
rm "$out"/bin/gawk-*
|
rm "$out"/bin/gawk-*
|
||||||
ln -s gawk.1 "''${!outputMan}"/share/man/man1/awk.1
|
ln -s gawk.1 "''${!outputMan}"/share/man/man1/awk.1
|
||||||
''
|
'';
|
||||||
else # TODO: remove this other branch on a stdenv rebuild
|
|
||||||
''
|
passthru = {
|
||||||
rm $out/bin/gawk-*
|
libsigsegv = if withSigsegv then libsigsegv else null; # for stdenv bootstrap
|
||||||
ln -s $man/share/man/man1/gawk.1 $man/share/man/man1/awk.1
|
};
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = http://www.gnu.org/software/gawk/;
|
homepage = http://www.gnu.org/software/gawk/;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user