| Tim Windelschmidt | 5d357d8 | 2025-07-10 18:47:15 +0200 | [diff] [blame] | 1 | { fetchFromGitHub |
| 2 | , lib |
| 3 | , bazel_8 |
| 4 | , libgcc |
| 5 | , cctools |
| 6 | , stdenv |
| 7 | , jdk_headless |
| 8 | , callPackage |
| 9 | , zlib |
| 10 | , |
| 11 | }: |
| 12 | let |
| 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 | }; |
| 26 | in |
| 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 | } |