summaryrefslogtreecommitdiffstats
path: root/pkgs/stdenv
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2024-03-12 18:28:50 +0100
committerRobert Hensing <robert@roberthensing.nl>2024-03-12 18:32:03 +0100
commit954d9ce64bc515746949b2bf37e58c9934be86db (patch)
tree2e2e9de08eb99140081abd36e14d0e97e54fe55f /pkgs/stdenv
parent8dad51a2e27d49db65d51277e57af595792e6613 (diff)
make-derivation.nix: Drop duplicate functionality from previous commit
These two commits make for a cleaner commit history and git blame than https://github.com/NixOS/nixpkgs/pull/295105, where this refactor was developed. See its commit messages for details and design choices, esp. up to and including 37f76fd4c3b23b324ab7ea06ef3b747338d2080f.
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r--pkgs/stdenv/generic/make-derivation.nix87
1 files changed, 2 insertions, 85 deletions
diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix
index 7a3521c5153c..785d8c36f869 100644
--- a/pkgs/stdenv/generic/make-derivation.nix
+++ b/pkgs/stdenv/generic/make-derivation.nix
@@ -155,8 +155,6 @@ let
# Configure Phase
, configureFlags ? []
-, cmakeFlags ? []
-, mesonFlags ? []
, # Target is not included by default because most programs don't care.
# Including it then would cause needless mass rebuilds.
#
@@ -178,14 +176,6 @@ let
, enableParallelBuilding ? config.enableParallelBuildingByDefault
-, meta ? {}
-, passthru ? {}
-, pos ? # position used in error messages and for meta.position
- (if attrs.meta.description or null != null
- then builtins.unsafeGetAttrPos "description" attrs.meta
- else if attrs.version or null != null
- then builtins.unsafeGetAttrPos "version" attrs
- else builtins.unsafeGetAttrPos "name" attrs)
, separateDebugInfo ? false
, outputs ? [ "out" ]
, __darwinAllowLocalNetworking ? false
@@ -207,8 +197,6 @@ let
# but for anything complex, be prepared to debug if enabling.
, __structuredAttrs ? config.structuredAttrsByDefault or false
-, env ? { }
-
, ... } @ attrs:
# Policy on acceptable hash types in nixpkgs
@@ -295,9 +283,6 @@ else let
outputs = outputs';
- references = nativeBuildInputs ++ buildInputs
- ++ propagatedNativeBuildInputs ++ propagatedBuildInputs;
-
dependencies = map (map chooseDevOutputs) [
[
(map (drv: drv.__spliced.buildBuild or drv) (checkDependencyList "depsBuildBuild" depsBuildBuild))
@@ -347,18 +332,14 @@ else let
unique (concatMap (input: input.__propagatedImpureHostDeps or [])
(concatLists propagatedDependencies));
- envIsExportable = isAttrs env && !isDerivation env;
-
derivationArg =
- (removeAttrs attrs
- (["meta" "passthru" "pos"
+ removeAttrs attrs [
"checkInputs" "installCheckInputs"
"nativeCheckInputs" "nativeInstallCheckInputs"
"__contentAddressed"
"__darwinAllowLocalNetworking"
"__impureHostDeps" "__propagatedImpureHostDeps"
"sandboxProfile" "propagatedSandboxProfile"]
- ++ optional (__structuredAttrs || envIsExportable) "env"))
// (optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
name =
let
@@ -386,7 +367,7 @@ else let
assert assertMsg (attrs ? version && attrs.version != null) "The ‘version’ attribute cannot be null.";
"${attrs.pname}${staticMarker}${hostSuffix}-${attrs.version}"
);
- }) // optionalAttrs __structuredAttrs { env = checkedEnv; } // {
+ }) // {
builder = attrs.realBuilder or stdenv.shell;
args = attrs.args or ["-e" (attrs.builder or ./default-builder.sh)];
inherit stdenv;
@@ -424,54 +405,6 @@ else let
++ optional (elem "host" configurePlatforms) "--host=${stdenv.hostPlatform.config}"
++ optional (elem "target" configurePlatforms) "--target=${stdenv.targetPlatform.config}";
- cmakeFlags =
- cmakeFlags
- ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) ([
- "-DCMAKE_SYSTEM_NAME=${findFirst isString "Generic" (optional (!stdenv.hostPlatform.isRedox) stdenv.hostPlatform.uname.system)}"
- ] ++ optionals (stdenv.hostPlatform.uname.processor != null) [
- "-DCMAKE_SYSTEM_PROCESSOR=${stdenv.hostPlatform.uname.processor}"
- ] ++ optionals (stdenv.hostPlatform.uname.release != null) [
- "-DCMAKE_SYSTEM_VERSION=${stdenv.hostPlatform.uname.release}"
- ] ++ optionals (stdenv.hostPlatform.isDarwin) [
- "-DCMAKE_OSX_ARCHITECTURES=${stdenv.hostPlatform.darwinArch}"
- ] ++ optionals (stdenv.buildPlatform.uname.system != null) [
- "-DCMAKE_HOST_SYSTEM_NAME=${stdenv.buildPlatform.uname.system}"
- ] ++ optionals (stdenv.buildPlatform.uname.processor != null) [
- "-DCMAKE_HOST_SYSTEM_PROCESSOR=${stdenv.buildPlatform.uname.processor}"
- ] ++ optionals (stdenv.buildPlatform.uname.release != null) [
- "-DCMAKE_HOST_SYSTEM_VERSION=${stdenv.buildPlatform.uname.release}"
- ] ++ optionals (stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
- "-DCMAKE_CROSSCOMPILING_EMULATOR=env"
- ] ++ lib.optionals stdenv.hostPlatform.isStatic [
- "-DCMAKE_LINK_SEARCH_START_STATIC=ON"
- ]);
-
- mesonFlags =
- let
- # See https://mesonbuild.com/Reference-tables.html#cpu-families
- cpuFamily = platform: with platform;
- /**/ if isAarch32 then "arm"
- else if isx86_32 then "x86"
- else platform.uname.processor;
-
- crossFile = builtins.toFile "cross-file.conf" ''
- [properties]
- bindgen_clang_arguments = ['-target', '${stdenv.targetPlatform.config}']
- needs_exe_wrapper = ${boolToString (!stdenv.buildPlatform.canExecute stdenv.hostPlatform)}
-
- [host_machine]
- system = '${stdenv.targetPlatform.parsed.kernel.name}'
- cpu_family = '${cpuFamily stdenv.targetPlatform}'
- cpu = '${stdenv.targetPlatform.parsed.cpu.name}'
- endian = ${if stdenv.targetPlatform.isLittleEndian then "'little'" else "'big'"}
-
- [binaries]
- llvm-config = 'llvm-config-native'
- rust = ['rustc', '--target', '${stdenv.targetPlatform.rust.rustcTargetSpec}']
- '';
- crossFlags = optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ "--cross-file=${crossFile}" ];
- in crossFlags ++ mesonFlags;
-
inherit patches;
inherit doCheck doInstallCheck;
@@ -542,22 +475,6 @@ else let
mapNullable unsafeDerivationToUntrackedOutpath attrs.allowedRequisites;
};
- meta = checkMeta.commonMeta { inherit validity attrs pos references; };
- validity = checkMeta.assertValidity { inherit meta attrs; };
-
- checkedEnv =
- let
- overlappingNames = attrNames (builtins.intersectAttrs env derivationArg);
- in
- assert assertMsg envIsExportable
- "When using structured attributes, `env` must be an attribute set of environment variables.";
- assert assertMsg (overlappingNames == [ ])
- "The ‘env’ attribute set cannot contain any attributes passed to derivation. The following attributes are overlapping: ${concatStringsSep ", " overlappingNames}";
- mapAttrs
- (n: v: assert assertMsg (isString v || isBool v || isInt v || isDerivation v)
- "The ‘env’ attribute set can only contain derivation, string, boolean or integer attributes. The ‘${n}’ attribute is of type ${builtins.typeOf v}."; v)
- env;
-
in
derivationArg;