chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / bm / bmake / package.nix
blobf18b65c62552b7f84f28ee9379f968e3c230a304
2   lib,
3   bc,
4   fetchurl,
5   getopt,
6   ksh,
7   pkgsMusl,
8   stdenv,
9   tzdata,
12 stdenv.mkDerivation (finalAttrs: {
13   pname = "bmake";
14   version = "20240808";
16   src = fetchurl {
17     url = "https://www.crufty.net/ftp/pub/sjg/bmake-${finalAttrs.version}.tar.gz";
18     hash = "sha256-tZGJJRtIPezUSS8fdDh7KlhMA9WqRjfNSLOOxiucCEg=";
19   };
21   patches = [
22     # decouple tests from build phase
23     ./002-dont-test-while-installing.diff
24     # preserve PATH from build env in unit tests
25     ./003-fix-unexport-env-test.diff
26     # Always enable ksh test since it checks in a impure location /bin/ksh
27     ./004-unconditional-ksh-test.diff
28   ];
30   outputs = [ "out" "man" ];
32   nativeBuildInputs = [
33     getopt
34   ];
36   nativeCheckInputs = [
37     bc
38     tzdata
39   ] ++ lib.optionals (stdenv.hostPlatform.libc != "musl") [
40     ksh
41   ];
43   # The generated makefile is a small wrapper for calling ./boot-strap with a
44   # given op. On a case-insensitive filesystem this generated makefile clobbers
45   # a distinct, shipped Makefile and causes infinite recursion during tests
46   # which eventually fail with "fork: Resource temporarily unavailable"
47   configureFlags = [
48     "--without-makefile"
49   ];
51   # Disabled tests:
52   # * directive-export{,-gmake}: another failure related to TZ variables
53   # * opt-keep-going-indirect: not yet known
54   # * varmod-localtime: musl doesn't support TZDIR and this test relies on
55   #   impure, implicit paths
56   env.BROKEN_TESTS = builtins.concatStringsSep " " [
57     "directive-export"
58     "directive-export-gmake"
59     "opt-keep-going-indirect"
60     "varmod-localtime"
61   ];
63   strictDeps = true;
65   doCheck = true;
67   # Make tests work with musl
68   # * Disable deptgt-delete_on_error test (alpine does this too)
69   # * Disable shell-ksh test (ksh doesn't compile with musl)
70   # * Fix test failing due to different strerror(3) output for musl and glibc
71   postPatch = lib.optionalString (stdenv.hostPlatform.libc == "musl") ''
72     sed -i unit-tests/Makefile \
73       -e '/deptgt-delete_on_error/d' \
74       -e '/shell-ksh/d'
75     substituteInPlace unit-tests/opt-chdir.exp --replace "File name" "Filename"
76   '';
78   buildPhase = ''
79     runHook preBuild
81     ./boot-strap --prefix=$out -o . op=build
83     runHook postBuild
84   '';
86   installPhase = ''
87     runHook preInstall
89     ./boot-strap --prefix=$out -o . op=install
91     runHook postInstall
92   '';
94   checkPhase = ''
95     runHook preCheck
97     ./boot-strap -o . op=test
99     runHook postCheck
100   '';
102   setupHook = ./setup-hook.sh;
104   passthru = {
105     tests = {
106       bmakeMusl = pkgsMusl.bmake;
107     };
108   };
110   meta = {
111     homepage = "https://www.crufty.net/help/sjg/bmake.html";
112     description = "Portable version of NetBSD 'make'";
113     license = lib.licenses.bsd3;
114     mainProgram = "bmake";
115     maintainers = with lib.maintainers; [ thoughtpolice AndersonTorres ];
116     platforms = lib.platforms.unix;
117     # requires strip
118     badPlatforms = [ lib.systems.inspect.platformPatterns.isStatic ];
119   };
121 # TODO: report the quirks and patches to bmake devteam (especially the Musl one)
122 # TODO: investigate static support