diff options
author | Someone Serge <sergei.kozlukov@aalto.fi> | 2023-12-25 22:46:52 +0000 |
---|---|---|
committer | Someone Serge <sergei.kozlukov@aalto.fi> | 2023-12-26 03:33:17 +0000 |
commit | 576c4f4af5094340f6bbd1a74a54a5e28b6e916d (patch) | |
tree | 42760a51afeea8108937f38f2845d032d6442f2d /pkgs/development/cuda-modules/generic-builders | |
parent | 5391c840e705b65b5ad8c18d6956466477a554fc (diff) |
cudaPackages: eliminate exceptions
as they break common nixpkgs tools like lib.meta, cf. https://github.com/NixOS/nixpkgs/issues/276795
Diffstat (limited to 'pkgs/development/cuda-modules/generic-builders')
-rw-r--r-- | pkgs/development/cuda-modules/generic-builders/manifest.nix | 10 | ||||
-rw-r--r-- | pkgs/development/cuda-modules/generic-builders/multiplex.nix | 27 |
2 files changed, 21 insertions, 16 deletions
diff --git a/pkgs/development/cuda-modules/generic-builders/manifest.nix b/pkgs/development/cuda-modules/generic-builders/manifest.nix index 67f6e93559c4f..5f86c0874688a 100644 --- a/pkgs/development/cuda-modules/generic-builders/manifest.nix +++ b/pkgs/development/cuda-modules/generic-builders/manifest.nix @@ -77,7 +77,7 @@ backendStdenv.mkDerivation ( false featureRelease; # Order is important here so we use a list. - additionalOutputs = builtins.filter hasOutput [ + possibleOutputs = [ "bin" "lib" "static" @@ -86,8 +86,10 @@ backendStdenv.mkDerivation ( "sample" "python" ]; + additionalOutputs = + if redistArch == "unsupported" then possibleOutputs else builtins.filter hasOutput possibleOutputs; # The out output is special -- it's the default output and we always include it. - outputs = ["out"] ++ additionalOutputs; + outputs = [ "out" ] ++ additionalOutputs; in outputs; @@ -283,9 +285,9 @@ backendStdenv.mkDerivation ( ( redistArch: let - nixSystem = builtins.tryEval (flags.getNixSystem redistArch); + nixSystem = flags.getNixSystem redistArch; in - if nixSystem.success then [nixSystem.value] else [] + lists.optionals (!(strings.hasPrefix "unsupported-" nixSystem)) [ nixSystem ] ) supportedRedistArchs; broken = lists.any trivial.id (attrsets.attrValues finalAttrs.brokenConditions); diff --git a/pkgs/development/cuda-modules/generic-builders/multiplex.nix b/pkgs/development/cuda-modules/generic-builders/multiplex.nix index b8053094bcc82..5480da7307261 100644 --- a/pkgs/development/cuda-modules/generic-builders/multiplex.nix +++ b/pkgs/development/cuda-modules/generic-builders/multiplex.nix @@ -59,9 +59,12 @@ let # - Releases: ../modules/${pname}/releases/releases.nix # - Package: ../modules/${pname}/releases/package.nix + # FIXME: do this at the module system level + propagatePlatforms = lib.mapAttrs (platform: subset: map (r: r // { inherit platform; }) subset); + # All releases across all platforms # See ../modules/${pname}/releases/releases.nix - allReleases = evaluatedModules.config.${pname}.releases; + releaseSets = propagatePlatforms evaluatedModules.config.${pname}.releases; # Compute versioned attribute name to be used in this package set # Patch version changes should not break the build, so we only use major and minor @@ -72,20 +75,22 @@ let # isSupported :: Package -> Bool isSupported = package: - strings.versionAtLeast cudaVersion package.minCudaVersion + !(strings.hasPrefix "unsupported" package.platform) + && strings.versionAtLeast cudaVersion package.minCudaVersion && strings.versionAtLeast package.maxCudaVersion cudaVersion; # Get all of the packages for our given platform. redistArch = flags.getRedistArch hostPlatform.system; - # All the supported packages we can build for our platform. - # supportedPackages :: List (AttrSet Packages) - supportedPackages = builtins.filter isSupported (allReleases.${redistArch} or []); + allReleases = builtins.concatMap (xs: xs) (builtins.attrValues releaseSets); - # newestToOldestSupportedPackage :: List (AttrSet Packages) - newestToOldestSupportedPackage = lists.reverseList supportedPackages; + # All the supported packages we can build for our platform. + # perSystemReleases :: List Package + perSystemReleases = releaseSets.${redistArch} or [ ]; - nameOfNewest = computeName (builtins.head newestToOldestSupportedPackage); + preferable = + p1: p2: (isSupported p2 -> isSupported p1) && (strings.versionAtLeast p1.version p2.version); + newest = builtins.head (builtins.sort preferable allReleases); # A function which takes the `final` overlay and the `package` being built and returns # a function to be consumed via `overrideAttrs`. @@ -120,11 +125,9 @@ let attrsets.nameValuePair name fixedDrv; # versionedDerivations :: AttrSet Derivation - versionedDerivations = builtins.listToAttrs (lists.map buildPackage newestToOldestSupportedPackage); + versionedDerivations = builtins.listToAttrs (lists.map buildPackage perSystemReleases); - defaultDerivation = attrsets.optionalAttrs (versionedDerivations != {}) { - ${pname} = versionedDerivations.${nameOfNewest}; - }; + defaultDerivation = { ${pname} = (buildPackage newest).value; }; in versionedDerivations // defaultDerivation; in |