nixpkgs/pkgs/tools/text/diffutils/default.nix
Alyssa Ross 45584b3e5a diffutils: disable tests on aarch64 musl
The tests have never worked on aarch64 musl, so this restores the
previous behaviour on that platform of building successfully even
though the tests don't pass.

Since the tests work on x86_64 musl, and not aarch64 musl, my best
guess having not looked too closely is that the difference is because
aarch64 is stuck on ancient bootstrap tools for musl that cause all
sorts of problems.  Hopefully we can revert this once the bootstrap
tools are updated.  Having diffutils building is a prerequisite to
doing that.

Fixes: 9588972fe9 ("diffutils: 3.9 -> 3.10")
2023-10-10 08:40:18 +00:00

45 lines
1.8 KiB
Nix

{ lib, stdenv, fetchurl, xz, coreutils ? null }:
# Note: this package is used for bootstrapping fetchurl, and thus
# cannot use fetchpatch! All mutable patches (generated by GitHub or
# cgit) that are needed here should be included directly in Nixpkgs as
# files.
stdenv.mkDerivation rec {
pname = "diffutils";
version = "3.10";
src = fetchurl {
url = "mirror://gnu/diffutils/diffutils-${version}.tar.xz";
hash = "sha256-kOXpPMck5OvhLt6A3xY0Bjx6hVaSaFkZv+YLVWyb0J4=";
};
outputs = [ "out" "info" ];
nativeBuildInputs = [ (lib.getBin xz) ];
/* If no explicit coreutils is given, use the one from stdenv. */
buildInputs = [ coreutils ];
# Disable stack-related gnulib tests on x86_64-darwin because they have problems running under
# Rosetta 2: test-c-stack hangs, test-sigsegv-catch-stackoverflow fails.
postPatch = if (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) then ''
sed -i -E 's:test-c-stack2?\.sh::g' gnulib-tests/Makefile.in
sed -i -E 's:test-sigsegv-catch-stackoverflow[12]::g' gnulib-tests/Makefile.in
'' else null;
configureFlags =
# "pr" need not be on the PATH as a run-time dep, so we need to tell
# configure where it is. Covers the cross and native case alike.
lib.optional (coreutils != null) "PR_PROGRAM=${coreutils}/bin/pr"
++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "gl_cv_func_getopt_gnu=yes";
doCheck = !(stdenv.buildPlatform.isAarch64 && stdenv.buildPlatform.isMusl);
meta = with lib; {
homepage = "https://www.gnu.org/software/diffutils/diffutils.html";
description = "Commands for showing the differences between files (diff, cmp, etc.)";
license = licenses.gpl3;
platforms = platforms.unix;
maintainers = with maintainers; [ das_j ];
};
}