aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.nix17
-rw-r--r--package.nix25
2 files changed, 28 insertions, 14 deletions
diff --git a/flake.nix b/flake.nix
index 647d15b4a..25d025b1c 100644
--- a/flake.nix
+++ b/flake.nix
@@ -163,16 +163,6 @@
build-release-notes =
final.buildPackages.callPackage ./maintainers/build-release-notes.nix { };
clangbuildanalyzer = final.buildPackages.callPackage ./misc/clangbuildanalyzer.nix { };
- boehmgc-nix = (final.boehmgc.override {
- enableLargeConfig = true;
- }).overrideAttrs (o: {
- patches = (o.patches or [ ]) ++ [
- ./boehmgc-coroutine-sp-fallback.diff
-
- # https://github.com/ivmai/bdwgc/pull/586
- ./boehmgc-traceable_allocator-public.diff
- ];
- });
default-busybox-sandbox-shell = final.busybox.override {
useMusl = true;
@@ -203,10 +193,13 @@
nix = final.callPackage ./package.nix {
inherit versionSuffix fileset;
stdenv = currentStdenv;
- boehmgc = final.boehmgc-nix;
busybox-sandbox-shell = final.busybox-sandbox-shell or final.default-busybox-sandbox-shell;
nix-doc = final.nix-doc;
};
+
+ # Export the patched version of boehmgc that Lix uses into the overlay
+ # for consumers of this flake.
+ boehmgc-nix = final.nix.boehmgc-nix;
};
in {
@@ -268,7 +261,6 @@
inherit versionSuffix fileset officialRelease buildUnreleasedNotes;
inherit (pkgs) build-release-notes;
internalApiDocs = true;
- boehmgc = pkgs.boehmgc-nix;
busybox-sandbox-shell = pkgs.busybox-sandbox-shell;
};
in
@@ -406,7 +398,6 @@
let
nix = pkgs.callPackage ./package.nix {
inherit stdenv versionSuffix fileset;
- boehmgc = pkgs.boehmgc-nix;
busybox-sandbox-shell = pkgs.busybox-sandbox-shell or pkgs.default-busybox-sandbox;
forDevShell = true;
};
diff --git a/package.nix b/package.nix
index 6931726ad..8b1fb48ff 100644
--- a/package.nix
+++ b/package.nix
@@ -5,6 +5,11 @@
autoconf-archive,
autoreconfHook,
aws-sdk-cpp,
+ # If the patched version of Boehm isn't passed, then patch it based off of
+ # pkgs.boehmgc. This allows `callPackage`ing this file without needing to
+ # to implement behavior that this package flat out doesn't build without
+ # anyway, but also allows easily overriding the patch logic.
+ boehmgc-nix ? __forDefaults.boehmgc-nix,
boehmgc,
nlohmann_json,
bison,
@@ -63,6 +68,20 @@
# stuff for argument defaults.
__forDefaults ? {
canRunInstalled = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
+
+ boehmgc-nix = (boehmgc.override {
+ enableLargeConfig = true;
+ }).overrideAttrs {
+ patches = [
+ # We do *not* include prev.patches (which doesn't exist in normal pkgs.boehmgc anyway)
+ # because if the caller of this package passed a patched boehm as `boehmgc` instead of
+ # `boehmgc-nix` then this will almost certainly have duplicate patches, which means
+ # the patches won't apply and we'll get a build failure.
+ ./boehmgc-coroutine-sp-fallback.diff
+ # https://github.com/ivmai/bdwgc/pull/586
+ ./boehmgc-traceable_allocator-public.diff
+ ];
+ };
},
}: let
inherit (__forDefaults) canRunInstalled;
@@ -81,7 +100,7 @@
# The internal API docs need these for the build, but if we're not building
# Nix itself, then these don't need to be propagated.
maybePropagatedInputs = [
- boehmgc
+ boehmgc-nix
nlohmann_json
];
@@ -324,4 +343,8 @@ in stdenv.mkDerivation (finalAttrs: {
passthru.perl-bindings = pkgs.callPackage ./perl {
inherit fileset stdenv buildWithMeson;
};
+
+ # Export the patched version of boehmgc.
+ # flake.nix exports that into its overlay.
+ passthru.boehmgc-nix = __forDefaults.boehmgc-nix;
})