blob: 18b3647bd0cd1bd8ba271382355c5b379dc3387f [file] [log] [blame]
Tim Windelschmidt5d357d82025-07-10 18:47:15 +02001{ fetchFromGitHub
2, lib
3, bazel_8
4, libgcc
5, cctools
6, stdenv
7, jdk_headless
8, callPackage
9, zlib
10,
11}:
12let
13 bazelPackage = callPackage ./build-support/bazelPackage.nix { };
14 registry = fetchFromGitHub {
15 owner = "bazelbuild";
16 repo = "bazel-central-registry";
17 rev = "9342d3ec42ebafc2c06c33aa9d83b25ed984ebb1";
18 sha256 = "sha256-VT63Y8w9BawBXl5xgujG4Gv3SEGbUADGVsNPdUoDvsY=";
19 };
20 src = fetchFromGitHub {
21 owner = "bazelbuild";
22 repo = "examples";
23 rev = "568db753be213cc4be6c599e54ca64061ddbe6da";
24 sha256 = "sha256-F+iKi82uGWmJ+ICpITePdsA1SkncavSdgLkOKMr5LwM=";
25 };
26in
27{
28 java = bazelPackage {
29 inherit src registry;
30 sourceRoot = "source/java-tutorial";
31 name = "java-tutorial";
32 targets = [ "//:ProjectRunner" ];
33 bazel = bazel_8;
34 commandArgs = [
35 "--extra_toolchains=@@rules_java++toolchains+local_jdk//:all"
36 "--tool_java_runtime_version=local_jdk_21"
37 ];
38 env = {
39 JAVA_HOME = jdk_headless.home;
40 USE_BAZEL_VERSION = bazel_8.version;
41 };
42 installPhase = ''
43 mkdir $out
44 cp bazel-bin/ProjectRunner.jar $out/
45 '';
46 nativeBuildInputs = lib.optional (stdenv.hostPlatform.isDarwin) cctools;
47 bazelRepoCacheFOD = {
48 outputHash = lib.attrsets.attrByPath [ stdenv.hostPlatform.system ] null {
49 x86_64-linux = "sha256-64Ze+t0UYR2qQNECWes27SjzdkP+z5eJsCAO+OR+h/o=";
50 x86_64-darwin = lib.fakeHash;
51 aarch64-linux = "sha256-vEcOTdJM2YYle3PijKwroyM7LpfyK/3k/egRKDbjsmU=";
52 aarch64-darwin = "sha256-ya85EJikYXWpjtlgNu7i0DqtACgZBsppGEv3SVoJ6JA=";
53 };
54 outputHashAlgo = "sha256";
55 };
56 };
57 cpp = bazelPackage {
58 inherit src registry;
59 sourceRoot = "source/cpp-tutorial/stage3";
60 name = "cpp-tutorial";
61 targets = [ "//main:hello-world" ];
62 bazel = bazel_8;
63 installPhase = ''
64 mkdir $out
65 cp bazel-bin/main/hello-world $out/
66 '';
67 nativeBuildInputs = lib.optional (stdenv.hostPlatform.isDarwin) cctools;
68 commandArgs = lib.optionals (stdenv.hostPlatform.isDarwin) [
69 "--host_cxxopt=-xc++"
70 "--cxxopt=-xc++"
71 ];
72 env = {
73 USE_BAZEL_VERSION = bazel_8.version;
74 };
75 bazelRepoCacheFOD = {
76 outputHash =
77 {
78 x86_64-linux = "sha256-oPPWQdflAPMxF9YPazC//r0R3Sh6fUmNQe0oLM5EBUI=";
79 aarch64-linux = "sha256-oPPWQdflAPMxF9YPazC//r0R3Sh6fUmNQe0oLM5EBUI=";
80 aarch64-darwin = "sha256-oPPWQdflAPMxF9YPazC//r0R3Sh6fUmNQe0oLM5EBUI=";
81 x86_64-darwin = lib.fakeHash;
82 }.${stdenv.hostPlatform.system};
83 outputHashAlgo = "sha256";
84 };
85 };
86 rust = bazelPackage {
87 inherit src registry;
88 sourceRoot = "source/rust-examples/01-hello-world";
89 name = "rust-examples-01-hello-world";
90 targets = [ "//:bin" ];
91 bazel = bazel_8;
92 env = {
93 USE_BAZEL_VERSION = bazel_8.version;
94 };
95 installPhase = ''
96 mkdir $out
97 cp bazel-bin/bin $out/hello-world
98 '';
99 buildInputs = [
100 zlib
101 libgcc
102 ];
103 nativeBuildInputs = lib.optional (stdenv.hostPlatform.isDarwin) cctools;
104 autoPatchelfIgnoreMissingDeps = [ "librustc_driver-*.so" ];
105 bazelVendorDepsFOD = {
106 outputHash =
107 {
108 aarch64-linux = "sha256-2xopm/OCg9A1LqoW1ZesQc5pF/vX0ToIj1JYMtweVR0=";
109 x86_64-linux = "sha256-v987hMC6w2Lwr/PZn2zGHhHmXzecI2koLjOmGz0Mzng=";
110 aarch64-darwin = "sha256-sS7PzLI44dX7P0PY/68YjRSDkNJ6w5BklJNsXPHuOPc=";
111 x86_64-darwin = lib.fakeHash;
112 }.${stdenv.hostPlatform.system};
113 outputHashAlgo = "sha256";
114 };
115 };
116}