Skip to content

Commit

Permalink
Add get_cpu_value patch to rules_nixpkgs_core module
Browse files Browse the repository at this point in the history
  • Loading branch information
avdv committed Nov 28, 2024
1 parent 3281860 commit d713491
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
8 changes: 8 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
60 changes: 60 additions & 0 deletions haskell/assets/rules_nixpkgs-get_cpu_value.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
From 1aa2aeaac8e43b60d4cdbc41cc47154d55ae628a Mon Sep 17 00:00:00 2001
From: kczulko <[email protected]>
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.

0 comments on commit d713491

Please sign in to comment.