1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-25 10:41:16 +02:00

Merge pull request #13278 from DeterminateSystems/gustavderdrache/system-builderror

Make platform checks throw BuildError like other failures
This commit is contained in:
Jörg Thalheim 2025-05-27 16:39:55 +02:00 committed by GitHub
commit f7c94cd908
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -836,17 +836,22 @@ void DerivationBuilderImpl::startBuilder()
/* Right platform? */ /* Right platform? */
if (!drvOptions.canBuildLocally(store, drv)) { if (!drvOptions.canBuildLocally(store, drv)) {
auto msg = fmt(
"Cannot build '%s'.\n"
"Reason: " ANSI_RED "required system or feature not available" ANSI_NORMAL "\n"
"Required system: '%s' with features {%s}\n"
"Current system: '%s' with features {%s}",
Magenta(store.printStorePath(drvPath)),
Magenta(drv.platform),
concatStringsSep(", ", drvOptions.getRequiredSystemFeatures(drv)),
Magenta(settings.thisSystem),
concatStringsSep<StringSet>(", ", store.config.systemFeatures));
// since aarch64-darwin has Rosetta 2, this user can actually run x86_64-darwin on their hardware - we should tell them to run the command to install Darwin 2 // since aarch64-darwin has Rosetta 2, this user can actually run x86_64-darwin on their hardware - we should tell them to run the command to install Darwin 2
if (drv.platform == "x86_64-darwin" && settings.thisSystem == "aarch64-darwin") { if (drv.platform == "x86_64-darwin" && settings.thisSystem == "aarch64-darwin")
throw Error("run `/usr/sbin/softwareupdate --install-rosetta` to enable your %s to run programs for %s", settings.thisSystem, drv.platform); msg += fmt("\nNote: run `%s` to run programs for x86_64-darwin", Magenta("/usr/sbin/softwareupdate --install-rosetta"));
} else {
throw Error("a '%s' with features {%s} is required to build '%s', but I am a '%s' with features {%s}", throw BuildError(msg);
drv.platform,
concatStringsSep(", ", drvOptions.getRequiredSystemFeatures(drv)),
store.printStorePath(drvPath),
settings.thisSystem,
concatStringsSep<StringSet>(", ", store.config.systemFeatures));
}
} }
/* Create a temporary directory where the build will take /* Create a temporary directory where the build will take