diff --git a/MODULE.bazel b/MODULE.bazel index 8dba7014a..0dc848dbc 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -122,6 +122,14 @@ bazel_dep( version = "0.12.0", dev_dependency = True, ) +single_version_override( + module_name = "rules_nixpkgs_core", + patch_strip = 2, + patches = [ + "haskell/assets:rules_nixpkgs-get_cpu_value.patch", + ], +) + bazel_dep( name = "rules_nixpkgs_cc", version = "0.12.0", diff --git a/haskell/assets/rules_nixpkgs-get_cpu_value.patch b/haskell/assets/rules_nixpkgs-get_cpu_value.patch new file mode 100644 index 000000000..c9f8d7e94 --- /dev/null +++ b/haskell/assets/rules_nixpkgs-get_cpu_value.patch @@ -0,0 +1,60 @@ +From 1aa2aeaac8e43b60d4cdbc41cc47154d55ae628a Mon Sep 17 00:00:00 2001 +From: kczulko +Date: Wed, 27 Nov 2024 17:20:22 +0100 +Subject: [PATCH] fix: inline get_cpu_value from rules_cc + +--- + core/util.bzl | 40 +++++++++++++++++++++++++++++++++++++++- + 1 file changed, 39 insertions(+), 1 deletion(-) + +diff --git a/core/util.bzl b/core/util.bzl +index f352f170..b7940627 100644 +--- a/core/util.bzl ++++ b/core/util.bzl +@@ -1,7 +1,45 @@ +-load("@bazel_tools//tools/cpp:lib_cc_configure.bzl", "get_cpu_value") + load("@bazel_skylib//lib:paths.bzl", "paths") + load("@bazel_skylib//lib:versions.bzl", "versions") + ++# see https://github.com/tweag/rules_nixpkgs/pull/613 ++# taken from https://github.com/bazelbuild/rules_cc/blob/8395ec0172270f3bf92cd7b06c9b5b3f1f679e88/cc/private/toolchain/lib_cc_configure.bzl#L225 ++def get_cpu_value(repository_ctx): ++ """Compute the cpu_value based on the OS name. Doesn't %-escape the result! ++ ++ Args: ++ repository_ctx: The repository context. ++ Returns: ++ One of (darwin, freebsd, x64_windows, ppc, s390x, arm, aarch64, k8, piii) ++ """ ++ os_name = repository_ctx.os.name ++ arch = repository_ctx.os.arch ++ if os_name.startswith("mac os"): ++ # Check if we are on x86_64 or arm64 and return the corresponding cpu value. ++ return "darwin_" + ("arm64" if arch == "aarch64" else "x86_64") ++ if os_name.find("freebsd") != -1: ++ return "freebsd" ++ if os_name.find("openbsd") != -1: ++ return "openbsd" ++ if os_name.find("windows") != -1: ++ if arch == "aarch64": ++ return "arm64_windows" ++ else: ++ return "x64_windows" ++ ++ if arch in ["power", "ppc64le", "ppc", "ppc64"]: ++ return "ppc" ++ if arch in ["s390x"]: ++ return "s390x" ++ if arch in ["mips64"]: ++ return "mips64" ++ if arch in ["riscv64"]: ++ return "riscv64" ++ if arch in ["arm", "armv7l"]: ++ return "arm" ++ if arch in ["aarch64"]: ++ return "aarch64" ++ return "k8" if arch in ["amd64", "x86_64", "x64"] else "piii" ++ + def fail_on_err(return_value, prefix = None): + """Fail if the given return value indicates an error. +