mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-09-18 05:39:58 +00:00
nix: port over packaging patches from nix repo (#562702)
This commit is contained in:
@@ -174,6 +174,17 @@ let
|
||||
outputs = prevAttrs.outputs or [ "out" ] ++ [ "dev" ];
|
||||
};
|
||||
|
||||
fixupStaticLayer = finalAttrs: prevAttrs: {
|
||||
postFixup =
|
||||
prevAttrs.postFixup or ""
|
||||
+ lib.optionalString (stdenv.hostPlatform.isStatic) ''
|
||||
# HACK: Otherwise the result will have the entire buildInputs closure
|
||||
# injected by the pkgsStatic stdenv
|
||||
# <https://github.com/NixOS/nixpkgs/issues/83667>
|
||||
rm -f $out/nix-support/propagated-build-inputs
|
||||
'';
|
||||
};
|
||||
|
||||
# Work around weird `--as-needed` linker behavior with BSD, see
|
||||
# https://github.com/mesonbuild/meson/issues/3593
|
||||
bsdNoLinkAsNeeded =
|
||||
@@ -323,6 +334,7 @@ in
|
||||
scope.sourceLayer
|
||||
setVersionLayer
|
||||
mesonLayer
|
||||
fixupStaticLayer
|
||||
scope.mesonComponentOverrides
|
||||
];
|
||||
mkMesonExecutable = mkPackageBuilder [
|
||||
@@ -332,6 +344,7 @@ in
|
||||
setVersionLayer
|
||||
mesonLayer
|
||||
mesonBuildLayer
|
||||
fixupStaticLayer
|
||||
scope.mesonComponentOverrides
|
||||
];
|
||||
mkMesonLibrary = mkPackageBuilder [
|
||||
@@ -342,9 +355,17 @@ in
|
||||
setVersionLayer
|
||||
mesonBuildLayer
|
||||
mesonLibraryLayer
|
||||
fixupStaticLayer
|
||||
scope.mesonComponentOverrides
|
||||
];
|
||||
|
||||
/**
|
||||
Whether to embed the public C API into nix-cli so plugins can resolve those symbols from the executable.
|
||||
*/
|
||||
withPluginCAPI =
|
||||
(lib.versionAtLeast (lib.versions.majorMinor version) "2.35")
|
||||
&& !(stdenv.hostPlatform.isWindows || stdenv.hostPlatform.isStatic);
|
||||
|
||||
nix-util = callPackage ../src/libutil/package.nix { };
|
||||
nix-util-c = callPackage ../src/libutil-c/package.nix { };
|
||||
nix-util-test-support = callPackage ../src/libutil-test-support/package.nix { };
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# Configuration Options
|
||||
|
||||
version,
|
||||
withPluginCAPI,
|
||||
}:
|
||||
|
||||
mkMesonLibrary (finalAttrs: {
|
||||
@@ -21,8 +22,9 @@ mkMesonLibrary (finalAttrs: {
|
||||
nix-expr
|
||||
];
|
||||
|
||||
mesonFlags = [
|
||||
];
|
||||
mesonFlags = lib.optional (lib.versionAtLeast (lib.versions.majorMinor version) "2.35") (
|
||||
lib.mesonBool "plugin-c-api" withPluginCAPI
|
||||
);
|
||||
|
||||
meta = {
|
||||
platforms = lib.platforms.unix ++ lib.platforms.windows;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
# Configuration Options
|
||||
|
||||
version,
|
||||
withPluginCAPI,
|
||||
}:
|
||||
|
||||
mkMesonLibrary (finalAttrs: {
|
||||
@@ -25,7 +26,9 @@ mkMesonLibrary (finalAttrs: {
|
||||
nix-fetchers
|
||||
];
|
||||
|
||||
mesonFlags = [ ];
|
||||
mesonFlags = lib.optional (lib.versionAtLeast (lib.versions.majorMinor version) "2.35") (
|
||||
lib.mesonBool "plugin-c-api" withPluginCAPI
|
||||
);
|
||||
|
||||
meta = {
|
||||
platforms = lib.platforms.unix ++ lib.platforms.windows;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
# Configuration Options
|
||||
|
||||
version,
|
||||
withPluginCAPI,
|
||||
}:
|
||||
|
||||
mkMesonLibrary (finalAttrs: {
|
||||
@@ -29,8 +30,9 @@ mkMesonLibrary (finalAttrs: {
|
||||
nix-flake
|
||||
];
|
||||
|
||||
mesonFlags = [
|
||||
];
|
||||
mesonFlags = lib.optional (lib.versionAtLeast (lib.versions.majorMinor version) "2.35") (
|
||||
lib.mesonBool "plugin-c-api" withPluginCAPI
|
||||
);
|
||||
|
||||
meta = {
|
||||
platforms = lib.platforms.unix ++ lib.platforms.windows;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
# Configuration Options
|
||||
|
||||
version,
|
||||
withPluginCAPI,
|
||||
}:
|
||||
|
||||
mkMesonLibrary (finalAttrs: {
|
||||
@@ -25,8 +26,9 @@ mkMesonLibrary (finalAttrs: {
|
||||
nix-main
|
||||
];
|
||||
|
||||
mesonFlags = [
|
||||
];
|
||||
mesonFlags = lib.optional (lib.versionAtLeast (lib.versions.majorMinor version) "2.35") (
|
||||
lib.mesonBool "plugin-c-api" withPluginCAPI
|
||||
);
|
||||
|
||||
meta = {
|
||||
platforms = lib.platforms.unix ++ lib.platforms.windows;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# Configuration Options
|
||||
|
||||
version,
|
||||
withPluginCAPI,
|
||||
}:
|
||||
|
||||
mkMesonLibrary (finalAttrs: {
|
||||
@@ -21,8 +22,9 @@ mkMesonLibrary (finalAttrs: {
|
||||
nix-store
|
||||
];
|
||||
|
||||
mesonFlags = [
|
||||
];
|
||||
mesonFlags = lib.optional (lib.versionAtLeast (lib.versions.majorMinor version) "2.35") (
|
||||
lib.mesonBool "plugin-c-api" withPluginCAPI
|
||||
);
|
||||
|
||||
meta = {
|
||||
platforms = lib.platforms.unix ++ lib.platforms.windows;
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
# Configuration Options
|
||||
|
||||
version,
|
||||
withPluginCAPI,
|
||||
}:
|
||||
|
||||
mkMesonLibrary (finalAttrs: {
|
||||
@@ -19,8 +20,9 @@ mkMesonLibrary (finalAttrs: {
|
||||
nix-util
|
||||
];
|
||||
|
||||
mesonFlags = [
|
||||
];
|
||||
mesonFlags = lib.optional (lib.versionAtLeast (lib.versions.majorMinor version) "2.35") (
|
||||
lib.mesonBool "plugin-c-api" withPluginCAPI
|
||||
);
|
||||
|
||||
meta = {
|
||||
platforms = lib.platforms.unix ++ lib.platforms.windows;
|
||||
|
||||
@@ -8,6 +8,13 @@
|
||||
nix-main,
|
||||
nix-cmd,
|
||||
|
||||
nix-expr-c,
|
||||
nix-fetchers-c,
|
||||
nix-flake-c,
|
||||
nix-main-c,
|
||||
nix-store-c,
|
||||
nix-util-c,
|
||||
|
||||
mimalloc,
|
||||
|
||||
# Configuration Options
|
||||
@@ -18,6 +25,10 @@
|
||||
# Significantly improves evaluation performance on allocation-heavy
|
||||
# workloads (~10-15% on large evaluations).
|
||||
withMimalloc ? !stdenv.hostPlatform.isWindows,
|
||||
|
||||
# Whether to embed the public C API into the `nix` executable so plugins can
|
||||
# resolve those symbols without linking Nix libraries directly.
|
||||
withPluginCApi ? !stdenv.hostPlatform.isWindows && !stdenv.hostPlatform.isStatic,
|
||||
}:
|
||||
|
||||
mkMesonExecutable (finalAttrs: {
|
||||
@@ -32,11 +43,27 @@ mkMesonExecutable (finalAttrs: {
|
||||
nix-main
|
||||
nix-cmd
|
||||
]
|
||||
++ lib.optionals ((lib.versionAtLeast (lib.versions.majorMinor version) "2.35") && withPluginCApi) [
|
||||
nix-expr-c
|
||||
nix-fetchers-c
|
||||
nix-flake-c
|
||||
nix-main-c
|
||||
nix-store-c
|
||||
nix-util-c
|
||||
]
|
||||
++ lib.optional ((lib.versionAtLeast version "2.35pre") && withMimalloc) mimalloc;
|
||||
|
||||
mesonFlags = lib.optionals (lib.versionAtLeast version "2.35pre") [
|
||||
(lib.mesonEnable "mimalloc" withMimalloc)
|
||||
];
|
||||
mesonFlags =
|
||||
lib.optionals (lib.versionAtLeast version "2.35pre") [
|
||||
(lib.mesonEnable "mimalloc" withMimalloc)
|
||||
]
|
||||
++ lib.optional (lib.versionAtLeast (lib.versions.majorMinor version) "2.35") (
|
||||
lib.mesonBool "plugin-c-api" withPluginCApi
|
||||
);
|
||||
|
||||
passthru = {
|
||||
exportsPluginCApi = withPluginCApi;
|
||||
};
|
||||
|
||||
meta = {
|
||||
mainProgram = "nix";
|
||||
|
||||
@@ -77,6 +77,10 @@ mkMesonDerivation (finalAttrs: {
|
||||
"--print-errorlogs"
|
||||
];
|
||||
|
||||
mesonFlags = lib.optional (lib.versionAtLeast (lib.versions.majorMinor version) "2.35") (
|
||||
lib.mesonBool "plugin-c-api" nix-cli.exportsPluginCApi
|
||||
);
|
||||
|
||||
doCheck = true;
|
||||
|
||||
installPhase = ''
|
||||
|
||||
Reference in New Issue
Block a user