From 9ddf09d89e515d91dac7e22eb6bc17c97aeb0cc2 Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Mon, 4 Dec 2023 21:59:50 +0100 Subject: [PATCH 1/7] Migrate to bzlmod --- .bazel-nix.rc | 4 +++ .bazelrc | 2 ++ MODULE.bazel | 19 ++++++++++++++ WORKSPACE.bazel | 70 +++++++++++-------------------------------------- 4 files changed, 40 insertions(+), 55 deletions(-) create mode 100644 MODULE.bazel diff --git a/.bazel-nix.rc b/.bazel-nix.rc index ad23910..5b15ecb 100644 --- a/.bazel-nix.rc +++ b/.bazel-nix.rc @@ -5,3 +5,7 @@ run --host_platform=@rules_nixpkgs_core//platforms:host # disable auto config, use cc toolchain from nixpkgs build --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 + +# rules_haskell registers a default toolchain and the nixpkgs haskell toolchain +# registered in the WORKSKPACE is skipped; explicitly add it here +build --extra_toolchains @rules_haskell_ghc_nixpkgs_toolchain//:toolchain diff --git a/.bazelrc b/.bazelrc index 22e9062..1232bac 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,3 +1,5 @@ +common --enable_bzlmod + build:ci --loading_phase_threads=1 build:ci --jobs=2 build:ci --verbose_failures diff --git a/MODULE.bazel b/MODULE.bazel new file mode 100644 index 0000000..32f9894 --- /dev/null +++ b/MODULE.bazel @@ -0,0 +1,19 @@ +module( + name = "replay", + version = "0.2", +) + +bazel_dep(name = "rules_nixpkgs_core", version = "0.11.1") +bazel_dep(name = "rules_haskell", version = "0.18") + +bazel_dep(name = "platforms", version = "0.0.8") +bazel_dep(name = "protobuf", version = "21.7") +bazel_dep(name = "rules_proto", version = "5.3.0-21.7") #, repo_name = "com_google_protobuf") +bazel_dep(name = "bazel_skylib", version = "1.5.0") +bazel_dep(name = "rules_sh", version = "0.4.0") +bazel_dep(name = "rules_python", version = "0.25.0") +bazel_dep(name = "rules_cc", version = "0.0.9") + +sh_configure = use_extension("@rules_sh//bzlmod:extensions.bzl", "sh_configure") + +use_repo(sh_configure, "local_posix_config") diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index e7606eb..3fd999c 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -1,51 +1,24 @@ # Give your project a name. :) workspace(name = "replay") -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "bazel_skylib", - sha256 = "bc283cdfcd526a52c3201279cda4bc298652efa898b10b4db0837dc51652756f", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz", - ], -) - load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") bazel_skylib_workspace() -http_archive( - name = "io_tweag_rules_nixpkgs", - sha256 = "2a555348d7f8593fca2bf3fc6ce53c5d62929de81b6c292e23f16c557c0ae45a", - strip_prefix = "rules_nixpkgs-0.11.1", - urls = ["https://github.com/tweag/rules_nixpkgs/releases/download/v0.11.1/rules_nixpkgs-0.11.1.tar.gz"], -) - -# Download rules_haskell and make it accessible as "@rules_haskell". -http_archive( - name = "rules_haskell", - sha256 = "34742848a8882d94a0437b3b1917dea6f58c82fe5762afe8d249d3a36e51935d", - strip_prefix = "rules_haskell-0.19", - url = "https://github.com/tweag/rules_haskell/releases/download/v0.19/rules_haskell-0.19.tar.gz", -) - -http_archive( - name = "rules_sh", - sha256 = "23a4571ec8afc83db1eae99c0efd0b8b4fa1644069f0340a10f8859e086ba02c", - strip_prefix = "rules_sh-0.4.0", - urls = ["https://github.com/tweag/rules_sh/archive/v0.4.0.tar.gz"], -) - -load("@rules_sh//sh:repositories.bzl", "rules_sh_dependencies") - -rules_sh_dependencies() - -load("@rules_sh//sh:posix.bzl", "sh_posix_configure") - -# Bring in a "local" toolchain - (only hermetic if in a pure nix-shell!) -sh_posix_configure() +[ + http_archive( + name = "rules_nixpkgs_{}".format(name), + sha256 = "2a555348d7f8593fca2bf3fc6ce53c5d62929de81b6c292e23f16c557c0ae45a", + strip_prefix = "rules_nixpkgs-0.11.1/toolchains/{}".format(name), + urls = ["https://github.com/tweag/rules_nixpkgs/releases/download/v0.11.1/rules_nixpkgs-0.11.1.tar.gz"], + ) + for name in [ + "go", + "python", + "posix", + ] +] # Add rules_nixpkgs toolchains load( @@ -62,20 +35,6 @@ rules_nixpkgs_dependencies( ], ) -load( - "@rules_haskell//haskell:repositories.bzl", - "rules_haskell_dependencies", -) - -# Setup all Bazel dependencies required by rules_haskell. -rules_haskell_dependencies() - -# Load nixpkgs_git_repository from rules_nixpkgs, -# which was already initialized by rules_haskell_dependencies above. -load( - "@rules_nixpkgs_cc//:cc.bzl", - "nixpkgs_cc_configure", -) load( "@rules_nixpkgs_core//:nixpkgs.bzl", "nixpkgs_local_repository", @@ -201,6 +160,7 @@ load( nixpkgs_go_configure( repository = "@nixpkgs", + rules_go_repo_name = "io_bazel_rules_go", ) gazelle_dependencies(go_repository_default_config = "//:WORKSPACE.bazel") From da786db69b42ffc56d06e51eb3dca489a1b670d3 Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Mon, 4 Dec 2023 22:02:34 +0100 Subject: [PATCH 2/7] Add .direnv to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0c2b15a..605c7f7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ repeat.cabal *~ /bazel-* /.pre-commit-config.yaml +/.direnv/ From 3014c3a95a8b27655ba0a80167f1e7117121733b Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Tue, 5 Dec 2023 07:23:35 +0100 Subject: [PATCH 3/7] Use stack_snapshot extension --- MODULE.bazel | 8 ++++++++ WORKSPACE.bazel | 11 ----------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 32f9894..24376c9 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -17,3 +17,11 @@ bazel_dep(name = "rules_cc", version = "0.0.9") sh_configure = use_extension("@rules_sh//bzlmod:extensions.bzl", "sh_configure") use_repo(sh_configure, "local_posix_config") + +stack = use_extension("@rules_haskell//extensions:stack_snapshot.bzl", "stack_snapshot") + +stack.snapshot(name = "lts-18.28") + +stack.package(name = "json") + +use_repo(stack, "stackage") diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index 3fd999c..1a52041 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -177,14 +177,3 @@ load("@io_tweag_gazelle_haskell_modules//:defs.bzl", "gazelle_haskell_modules_de gazelle_haskell_modules_dependencies( # json = "@someother//:some-other-json", ) - -load("@rules_haskell//haskell:cabal.bzl", "stack_snapshot") - -stack_snapshot( - name = "stackage", - packages = [ - "json", - ], - # Most snapshots of your choice might do - snapshot = "lts-18.28", -) From 2313869016daddb1342e6034eb49c0980f331bc4 Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Sat, 29 Jun 2024 00:07:57 +0200 Subject: [PATCH 4/7] Add Bazel central registry to flake --- flake.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index e30b322..33d20f4 100644 --- a/flake.nix +++ b/flake.nix @@ -37,6 +37,13 @@ ]; devTools = let inherit (pkgs) bazel-watcher buildifier haskell-language-server lib; in [ bazel buildifier ghcWithHoogle haskell-language-server ] ++ lib.optional (!bazel-watcher.meta.broken) bazel-watcher; + + registry = pkgs.fetchFromGitHub { + owner = "bazelbuild"; + repo = "bazel-central-registry"; + rev = "1c729c2775715fd98f0f948a512eb173213250da"; + hash = "sha256-1iaDDM8/v8KCOUjPgLUtZVta7rMzwlIK//cCoLUrb/s="; + }; in rec { packages.replay = pkgs.buildBazelPackage { @@ -60,7 +67,11 @@ removeRulesCC = false; - bazelFlags = [ "--extra_toolchains=@rules_haskell_nix_ghc_in_nix_toolchain//:toolchain" ]; + bazelFlags = [ + "--extra_toolchains=@rules_haskell_nix_ghc_in_nix_toolchain//:toolchain" + "--registry" + "file://${registry}" + ]; bazelBuildFlags = [ "--compilation_mode=opt" # optimize From 41027950b81b69d8e6eeccf2f35b1e2ecc28c46b Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Mon, 1 Jul 2024 18:10:14 +0200 Subject: [PATCH 5/7] Add local registry for modules missing in the BCR --- .bazel-nix.rc | 5 +- .bazelrc | 2 + registry/bazel_registry.json | 4 ++ .../rules_haskell_nix/0.19/MODULE.bazel | 69 +++++++++++++++++++ .../0.19/patches/set-bzlmod-true.diff | 20 ++++++ .../rules_haskell_nix/0.19/source.json | 9 +++ .../modules/rules_haskell_nix/metadata.json | 6 ++ .../rules_nixpkgs_cc/0.11.1/MODULE.bazel | 8 +++ .../rules_nixpkgs_cc/0.11.1/source.json | 5 ++ .../modules/rules_nixpkgs_cc/metadata.json | 17 +++++ .../rules_nixpkgs_go/0.11.1/MODULE.bazel | 9 +++ .../rules_nixpkgs_go/0.11.1/source.json | 5 ++ .../modules/rules_nixpkgs_go/metadata.json | 17 +++++ .../rules_nixpkgs_java/0.11.1/MODULE.bazel | 8 +++ .../rules_nixpkgs_java/0.11.1/source.json | 5 ++ .../modules/rules_nixpkgs_java/metadata.json | 17 +++++ .../rules_nixpkgs_posix/0.11.1/MODULE.bazel | 8 +++ .../rules_nixpkgs_posix/0.11.1/source.json | 5 ++ .../modules/rules_nixpkgs_posix/metadata.json | 17 +++++ .../rules_nixpkgs_python/0.11.1/MODULE.bazel | 7 ++ .../rules_nixpkgs_python/0.11.1/source.json | 5 ++ .../rules_nixpkgs_python/metadata.json | 17 +++++ 22 files changed, 262 insertions(+), 3 deletions(-) create mode 100644 registry/bazel_registry.json create mode 100644 registry/modules/rules_haskell_nix/0.19/MODULE.bazel create mode 100644 registry/modules/rules_haskell_nix/0.19/patches/set-bzlmod-true.diff create mode 100644 registry/modules/rules_haskell_nix/0.19/source.json create mode 100644 registry/modules/rules_haskell_nix/metadata.json create mode 100644 registry/modules/rules_nixpkgs_cc/0.11.1/MODULE.bazel create mode 100644 registry/modules/rules_nixpkgs_cc/0.11.1/source.json create mode 100644 registry/modules/rules_nixpkgs_cc/metadata.json create mode 100644 registry/modules/rules_nixpkgs_go/0.11.1/MODULE.bazel create mode 100644 registry/modules/rules_nixpkgs_go/0.11.1/source.json create mode 100644 registry/modules/rules_nixpkgs_go/metadata.json create mode 100644 registry/modules/rules_nixpkgs_java/0.11.1/MODULE.bazel create mode 100644 registry/modules/rules_nixpkgs_java/0.11.1/source.json create mode 100644 registry/modules/rules_nixpkgs_java/metadata.json create mode 100644 registry/modules/rules_nixpkgs_posix/0.11.1/MODULE.bazel create mode 100644 registry/modules/rules_nixpkgs_posix/0.11.1/source.json create mode 100644 registry/modules/rules_nixpkgs_posix/metadata.json create mode 100644 registry/modules/rules_nixpkgs_python/0.11.1/MODULE.bazel create mode 100644 registry/modules/rules_nixpkgs_python/0.11.1/source.json create mode 100644 registry/modules/rules_nixpkgs_python/metadata.json diff --git a/.bazel-nix.rc b/.bazel-nix.rc index 5b15ecb..1cc7b8b 100644 --- a/.bazel-nix.rc +++ b/.bazel-nix.rc @@ -6,6 +6,5 @@ run --host_platform=@rules_nixpkgs_core//platforms:host # disable auto config, use cc toolchain from nixpkgs build --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 -# rules_haskell registers a default toolchain and the nixpkgs haskell toolchain -# registered in the WORKSKPACE is skipped; explicitly add it here -build --extra_toolchains @rules_haskell_ghc_nixpkgs_toolchain//:toolchain +common --registry=https://bcr.bazel.build + diff --git a/.bazelrc b/.bazelrc index 1232bac..d78592c 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,5 +1,7 @@ common --enable_bzlmod +common --registry=file:///%workspace%/registry + build:ci --loading_phase_threads=1 build:ci --jobs=2 build:ci --verbose_failures diff --git a/registry/bazel_registry.json b/registry/bazel_registry.json new file mode 100644 index 0000000..dae3ff2 --- /dev/null +++ b/registry/bazel_registry.json @@ -0,0 +1,4 @@ +{ + "mirrors": [], + "module_base_path": ".." +} diff --git a/registry/modules/rules_haskell_nix/0.19/MODULE.bazel b/registry/modules/rules_haskell_nix/0.19/MODULE.bazel new file mode 100644 index 0000000..ecc06ff --- /dev/null +++ b/registry/modules/rules_haskell_nix/0.19/MODULE.bazel @@ -0,0 +1,69 @@ +module( + name = "rules_haskell_nix", + version = "0.19", +) + +bazel_dep( + name = "rules_haskell", + version = "0.19", +) +bazel_dep( + name = "rules_sh", + version = "0.3.0", +) +bazel_dep( + name = "rules_nixpkgs_core", + version = "0.11.1", +) +bazel_dep( + name = "rules_nixpkgs_posix", + version = "0.11.1", +) +bazel_dep( + name = "platforms", + version = "0.0.8", +) +bazel_dep(name = "bazel_skylib", version = "1.5.0") + +bazel_dep(name = "rules_go", version = "0.41.0", dev_dependency = True, repo_name = "io_bazel_rules_go") + +non_module_deps = use_extension("//:non_module_deps.bzl", "non_module_deps") +use_repo( + non_module_deps, + "nixpkgs_default", + "os_info", +) + +nix_haskell_toolchains = use_extension( + "//extensions:nix_haskell_toolchains.bzl", + "nix_haskell_toolchains", +) + +# Declare a default nix-based toolchain +nix_haskell_toolchains.new( + attribute_path = "", + nix_file_content = """with import {}; haskell.packages.ghc946.ghc""", + repository = "@nixpkgs_default", + version = "9.4.6", +) +use_repo( + nix_haskell_toolchains, + "nix_haskell_toolchains_configurations", + # Once toochains can be registered directly via the rules_nixpkgs_posix module, + # This repository could be removed from the nix_haskell_toolchains extension. + "all_posix_toolchains", +) + +declare_nix_toolchains = use_extension( + "//private:declare_toolchains.bzl", + "declare_nix_toolchains", +) +use_repo( + declare_nix_toolchains, + "all_nix_toolchains", +) + +register_toolchains( + "@all_nix_toolchains//:all", + "@all_posix_toolchains//:all", +) diff --git a/registry/modules/rules_haskell_nix/0.19/patches/set-bzlmod-true.diff b/registry/modules/rules_haskell_nix/0.19/patches/set-bzlmod-true.diff new file mode 100644 index 0000000..074c8ce --- /dev/null +++ b/registry/modules/rules_haskell_nix/0.19/patches/set-bzlmod-true.diff @@ -0,0 +1,20 @@ +diff --git a/rules_haskell_nix/extensions/nix_haskell_toolchains.bzl b/rules_haskell_nix/extensions/nix_haskell_toolchains.bzl +index f8ee4a7b..447bfb23 100644 +--- a/rules_haskell_nix/extensions/nix_haskell_toolchains.bzl ++++ b/rules_haskell_nix/extensions/nix_haskell_toolchains.bzl +@@ -184,6 +184,7 @@ def _nix_haskell_toolchains_impl(mctx): + nixopts = new_tag.nixopts, + repositories = new_tag.repositories, + repository = new_tag.repository, ++ _bzlmod = True, + ) + + # Unix tools toolchain required for Cabal packages +@@ -198,6 +199,7 @@ def _nix_haskell_toolchains_impl(mctx): + nixpkgs_sh_posix_configure( + name = nixpkgs_sh_posix_repo_name, + register = False, ++ _bzlmod = True, + **sh_posix_nixpkgs_kwargs + ) + diff --git a/registry/modules/rules_haskell_nix/0.19/source.json b/registry/modules/rules_haskell_nix/0.19/source.json new file mode 100644 index 0000000..10b59a0 --- /dev/null +++ b/registry/modules/rules_haskell_nix/0.19/source.json @@ -0,0 +1,9 @@ +{ + "integrity": "sha256-NHQoSKiILZSgQ3s7GRfepvWMgv5XYq/o0knTo25Rk10=", + "strip_prefix": "rules_haskell-0.19/rules_haskell_nix", + "url": "https://github.com/tweag/rules_haskell/releases/download/v0.19/rules_haskell-0.19.tar.gz", + "patch_strip": 2, + "patches": { + "set-bzlmod-true.diff": "sha256-SjTVWlrWrr1//l9FazYTz2yaq8Q4iqYlyByim9GC9oA=" + } +} diff --git a/registry/modules/rules_haskell_nix/metadata.json b/registry/modules/rules_haskell_nix/metadata.json new file mode 100644 index 0000000..8500a5c --- /dev/null +++ b/registry/modules/rules_haskell_nix/metadata.json @@ -0,0 +1,6 @@ +{ + "homepage": "", + "maintainers": [], + "versions": ["0.19"], + "yanked_versions": [] +} diff --git a/registry/modules/rules_nixpkgs_cc/0.11.1/MODULE.bazel b/registry/modules/rules_nixpkgs_cc/0.11.1/MODULE.bazel new file mode 100644 index 0000000..6fb90bf --- /dev/null +++ b/registry/modules/rules_nixpkgs_cc/0.11.1/MODULE.bazel @@ -0,0 +1,8 @@ +module( + name = "rules_nixpkgs_cc", + version = "0.11.1", +) + +bazel_dep(name = "rules_nixpkgs_core", version = "0.11.1") +bazel_dep(name = "bazel_skylib", version = "1.0.3") +bazel_dep(name = "rules_cc", version = "0.0.1") diff --git a/registry/modules/rules_nixpkgs_cc/0.11.1/source.json b/registry/modules/rules_nixpkgs_cc/0.11.1/source.json new file mode 100644 index 0000000..198f664 --- /dev/null +++ b/registry/modules/rules_nixpkgs_cc/0.11.1/source.json @@ -0,0 +1,5 @@ +{ + "integrity": "sha256-KlVTSNf4WT/KK/P8bOU8XWKSnegbbCkuI/FsVXwK5Fo=", + "strip_prefix": "rules_nixpkgs-0.11.1/toolchains/cc", + "url": "https://github.com/tweag/rules_nixpkgs/releases/download/v0.11.1/rules_nixpkgs-0.11.1.tar.gz" +} diff --git a/registry/modules/rules_nixpkgs_cc/metadata.json b/registry/modules/rules_nixpkgs_cc/metadata.json new file mode 100644 index 0000000..8ef0b62 --- /dev/null +++ b/registry/modules/rules_nixpkgs_cc/metadata.json @@ -0,0 +1,17 @@ +{ + "homepage": "", + "maintainers": [ + { + "email": "benjamin.radford@tweag.io ", + "github": "benradf", + "name": "Benjamin Radford" + }, + { + "email": "andreas.herrmann@tweag.io", + "github": "aherrmann", + "name": "Andreas Herrmann" + } + ], + "versions": ["0.11.1"], + "yanked_versions": [] +} diff --git a/registry/modules/rules_nixpkgs_go/0.11.1/MODULE.bazel b/registry/modules/rules_nixpkgs_go/0.11.1/MODULE.bazel new file mode 100644 index 0000000..857c6f7 --- /dev/null +++ b/registry/modules/rules_nixpkgs_go/0.11.1/MODULE.bazel @@ -0,0 +1,9 @@ +module( + name = "rules_nixpkgs_go", + version = "0.11.1", +) + +bazel_dep(name = "rules_nixpkgs_core", version = "0.11.1") +bazel_dep(name = "rules_go", version = "0.39.1", repo_name = "io_bazel_rules_go") +bazel_dep(name = "bazel_skylib", version = "1.0.3") +bazel_dep(name = "platforms", version = "0.0.4") diff --git a/registry/modules/rules_nixpkgs_go/0.11.1/source.json b/registry/modules/rules_nixpkgs_go/0.11.1/source.json new file mode 100644 index 0000000..5b6faf2 --- /dev/null +++ b/registry/modules/rules_nixpkgs_go/0.11.1/source.json @@ -0,0 +1,5 @@ +{ + "integrity": "sha256-KlVTSNf4WT/KK/P8bOU8XWKSnegbbCkuI/FsVXwK5Fo=", + "strip_prefix": "rules_nixpkgs-0.11.1/toolchains/go", + "url": "https://github.com/tweag/rules_nixpkgs/releases/download/v0.11.1/rules_nixpkgs-0.11.1.tar.gz" +} diff --git a/registry/modules/rules_nixpkgs_go/metadata.json b/registry/modules/rules_nixpkgs_go/metadata.json new file mode 100644 index 0000000..8ef0b62 --- /dev/null +++ b/registry/modules/rules_nixpkgs_go/metadata.json @@ -0,0 +1,17 @@ +{ + "homepage": "", + "maintainers": [ + { + "email": "benjamin.radford@tweag.io ", + "github": "benradf", + "name": "Benjamin Radford" + }, + { + "email": "andreas.herrmann@tweag.io", + "github": "aherrmann", + "name": "Andreas Herrmann" + } + ], + "versions": ["0.11.1"], + "yanked_versions": [] +} diff --git a/registry/modules/rules_nixpkgs_java/0.11.1/MODULE.bazel b/registry/modules/rules_nixpkgs_java/0.11.1/MODULE.bazel new file mode 100644 index 0000000..4b3f6c5 --- /dev/null +++ b/registry/modules/rules_nixpkgs_java/0.11.1/MODULE.bazel @@ -0,0 +1,8 @@ +module( + name = "rules_nixpkgs_java", + version = "0.11.1", +) + +bazel_dep(name = "rules_nixpkgs_core", version = "0.11.1") +bazel_dep(name = "rules_java", version = "4.0.0") +bazel_dep(name = "bazel_skylib", version = "1.0.3") diff --git a/registry/modules/rules_nixpkgs_java/0.11.1/source.json b/registry/modules/rules_nixpkgs_java/0.11.1/source.json new file mode 100644 index 0000000..9a1b791 --- /dev/null +++ b/registry/modules/rules_nixpkgs_java/0.11.1/source.json @@ -0,0 +1,5 @@ +{ + "integrity": "sha256-KlVTSNf4WT/KK/P8bOU8XWKSnegbbCkuI/FsVXwK5Fo=", + "strip_prefix": "rules_nixpkgs-0.11.1/toolchains/java", + "url": "https://github.com/tweag/rules_nixpkgs/releases/download/v0.11.1/rules_nixpkgs-0.11.1.tar.gz" +} diff --git a/registry/modules/rules_nixpkgs_java/metadata.json b/registry/modules/rules_nixpkgs_java/metadata.json new file mode 100644 index 0000000..8ef0b62 --- /dev/null +++ b/registry/modules/rules_nixpkgs_java/metadata.json @@ -0,0 +1,17 @@ +{ + "homepage": "", + "maintainers": [ + { + "email": "benjamin.radford@tweag.io ", + "github": "benradf", + "name": "Benjamin Radford" + }, + { + "email": "andreas.herrmann@tweag.io", + "github": "aherrmann", + "name": "Andreas Herrmann" + } + ], + "versions": ["0.11.1"], + "yanked_versions": [] +} diff --git a/registry/modules/rules_nixpkgs_posix/0.11.1/MODULE.bazel b/registry/modules/rules_nixpkgs_posix/0.11.1/MODULE.bazel new file mode 100644 index 0000000..f1b61f4 --- /dev/null +++ b/registry/modules/rules_nixpkgs_posix/0.11.1/MODULE.bazel @@ -0,0 +1,8 @@ +module( + name = "rules_nixpkgs_posix", + version = "0.11.1", +) + +bazel_dep(name = "rules_nixpkgs_core", version = "0.11.1") +bazel_dep(name = "rules_sh", version = "0.3.0") +bazel_dep(name = "bazel_skylib", version = "1.0.3") diff --git a/registry/modules/rules_nixpkgs_posix/0.11.1/source.json b/registry/modules/rules_nixpkgs_posix/0.11.1/source.json new file mode 100644 index 0000000..42516f8 --- /dev/null +++ b/registry/modules/rules_nixpkgs_posix/0.11.1/source.json @@ -0,0 +1,5 @@ +{ + "integrity": "sha256-KlVTSNf4WT/KK/P8bOU8XWKSnegbbCkuI/FsVXwK5Fo=", + "strip_prefix": "rules_nixpkgs-0.11.1/toolchains/posix", + "url": "https://github.com/tweag/rules_nixpkgs/releases/download/v0.11.1/rules_nixpkgs-0.11.1.tar.gz" +} diff --git a/registry/modules/rules_nixpkgs_posix/metadata.json b/registry/modules/rules_nixpkgs_posix/metadata.json new file mode 100644 index 0000000..8ef0b62 --- /dev/null +++ b/registry/modules/rules_nixpkgs_posix/metadata.json @@ -0,0 +1,17 @@ +{ + "homepage": "", + "maintainers": [ + { + "email": "benjamin.radford@tweag.io ", + "github": "benradf", + "name": "Benjamin Radford" + }, + { + "email": "andreas.herrmann@tweag.io", + "github": "aherrmann", + "name": "Andreas Herrmann" + } + ], + "versions": ["0.11.1"], + "yanked_versions": [] +} diff --git a/registry/modules/rules_nixpkgs_python/0.11.1/MODULE.bazel b/registry/modules/rules_nixpkgs_python/0.11.1/MODULE.bazel new file mode 100644 index 0000000..e37992b --- /dev/null +++ b/registry/modules/rules_nixpkgs_python/0.11.1/MODULE.bazel @@ -0,0 +1,7 @@ +module( + name = "rules_nixpkgs_python", + version = "0.11.1", +) + +bazel_dep(name = "rules_nixpkgs_core", version = "0.11.1") +bazel_dep(name = "bazel_skylib", version = "1.0.3") diff --git a/registry/modules/rules_nixpkgs_python/0.11.1/source.json b/registry/modules/rules_nixpkgs_python/0.11.1/source.json new file mode 100644 index 0000000..0472508 --- /dev/null +++ b/registry/modules/rules_nixpkgs_python/0.11.1/source.json @@ -0,0 +1,5 @@ +{ + "integrity": "sha256-KlVTSNf4WT/KK/P8bOU8XWKSnegbbCkuI/FsVXwK5Fo=", + "strip_prefix": "rules_nixpkgs-0.11.1/toolchains/python", + "url": "https://github.com/tweag/rules_nixpkgs/releases/download/v0.11.1/rules_nixpkgs-0.11.1.tar.gz" +} diff --git a/registry/modules/rules_nixpkgs_python/metadata.json b/registry/modules/rules_nixpkgs_python/metadata.json new file mode 100644 index 0000000..8ef0b62 --- /dev/null +++ b/registry/modules/rules_nixpkgs_python/metadata.json @@ -0,0 +1,17 @@ +{ + "homepage": "", + "maintainers": [ + { + "email": "benjamin.radford@tweag.io ", + "github": "benradf", + "name": "Benjamin Radford" + }, + { + "email": "andreas.herrmann@tweag.io", + "github": "aherrmann", + "name": "Andreas Herrmann" + } + ], + "versions": ["0.11.1"], + "yanked_versions": [] +} From 4443b5840a67f4e5abf22f735667b182bf98a8c8 Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Mon, 1 Jul 2024 23:19:30 +0200 Subject: [PATCH 6/7] Build nix package * update rules_haskell to 0.19 * update replay.deps hash --- MODULE.bazel | 64 ++++++++++++++++++++++++++++++++++-- WORKSPACE.bazel | 86 +++---------------------------------------------- flake.nix | 4 +-- 3 files changed, 69 insertions(+), 85 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 24376c9..0a364a4 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -4,8 +4,22 @@ module( ) bazel_dep(name = "rules_nixpkgs_core", version = "0.11.1") -bazel_dep(name = "rules_haskell", version = "0.18") - +bazel_dep( + name = "rules_haskell_nix", + version = "0.19", +) +bazel_dep( + name = "rules_haskell", + version = "0.19", +) +bazel_dep( + name = "rules_nixpkgs_cc", + version = "0.11.1", +) +bazel_dep( + name = "rules_nixpkgs_python", + version = "0.11.1", +) bazel_dep(name = "platforms", version = "0.0.8") bazel_dep(name = "protobuf", version = "21.7") bazel_dep(name = "rules_proto", version = "5.3.0-21.7") #, repo_name = "com_google_protobuf") @@ -13,6 +27,52 @@ bazel_dep(name = "bazel_skylib", version = "1.5.0") bazel_dep(name = "rules_sh", version = "0.4.0") bazel_dep(name = "rules_python", version = "0.25.0") bazel_dep(name = "rules_cc", version = "0.0.9") +bazel_dep(name = "rules_nixpkgs_go", version = "0.11.1") + +GHC_OPTS = [ + "-Wall", + "-Wcompat", + "-Widentities", + "-Wincomplete-record-updates", + "-Wincomplete-uni-patterns", + "-Wpartial-fields", + "-Wredundant-constraints", + "-Werror", + "-XNamedFieldPuns", +] + +GHC_VERSION = "9.4.8" + +nix_repo = use_extension("@rules_nixpkgs_core//extensions:repository.bzl", "nix_repo") +nix_repo.file( + name = "nixpkgs", + file = "//:nixpkgs.nix", + file_deps = [ + "//:flake.lock", + ] +) +use_repo(nix_repo, "nixpkgs") + +nix_haskell_toolchains = use_extension( + "@rules_haskell_nix//extensions:nix_haskell_toolchains.bzl", + "nix_haskell_toolchains", +) +nix_haskell_toolchains.new( + attribute_path = "", + ghcopts = GHC_OPTS, + nix_file = "//nix:ghc.nix", + nix_file_deps = [ + "//:nixpkgs.nix", + "//:flake.lock", + ], + nixopts = [ + "--argstr", + "ghcVersion", + GHC_VERSION, + ], + repository = "@nixpkgs", + version = GHC_VERSION, +) sh_configure = use_extension("@rules_sh//bzlmod:extensions.bzl", "sh_configure") diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index 1a52041..c0f06d2 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -1,75 +1,15 @@ # Give your project a name. :) workspace(name = "replay") -load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@rules_nixpkgs_cc//:cc.bzl", "nixpkgs_cc_configure") -bazel_skylib_workspace() - -[ - http_archive( - name = "rules_nixpkgs_{}".format(name), - sha256 = "2a555348d7f8593fca2bf3fc6ce53c5d62929de81b6c292e23f16c557c0ae45a", - strip_prefix = "rules_nixpkgs-0.11.1/toolchains/{}".format(name), - urls = ["https://github.com/tweag/rules_nixpkgs/releases/download/v0.11.1/rules_nixpkgs-0.11.1.tar.gz"], - ) - for name in [ - "go", - "python", - "posix", - ] -] - -# Add rules_nixpkgs toolchains -load( - "@io_tweag_rules_nixpkgs//nixpkgs:repositories.bzl", - "rules_nixpkgs_dependencies", -) - -rules_nixpkgs_dependencies( - toolchains = [ - "cc", - "go", - "python", - "posix", - ], -) - -load( - "@rules_nixpkgs_core//:nixpkgs.bzl", - "nixpkgs_local_repository", -) -load( - "@rules_nixpkgs_python//:python.bzl", - "nixpkgs_python_configure", -) - +# TODO Use module extension once available. nixpkgs_cc_configure( name = "nixpkgs_cc", repository = "@nixpkgs", ) -nixpkgs_python_configure( - repository = "@nixpkgs", -) - -nixpkgs_local_repository( - name = "nixpkgs", - nix_file = "//:nixpkgs.nix", - nix_file_deps = [ - "//:flake.lock", - ], -) - -load( - "@rules_haskell//haskell:nixpkgs.bzl", - "haskell_register_ghc_nixpkgs", -) -load( - "//:ghc.bzl", - "GHC_VERSION", -) - GHC_OPTS = [ "-Wall", "-Wcompat", @@ -82,26 +22,10 @@ GHC_OPTS = [ "-XNamedFieldPuns", ] -# Fetch a GHC binary distribution from nixpkgs and register it as a toolchain. -# For more information: -# https://api.haskell.build/haskell/nixpkgs.html#haskell_register_ghc_nixpkgs -haskell_register_ghc_nixpkgs( - attribute_path = None, - ghcopts = GHC_OPTS, - nix_file = "//nix:ghc.nix", - nix_file_deps = [ - "//:nixpkgs.nix", - "//:flake.lock", - ], - nixopts = [ - "--argstr", - "ghcVersion", - GHC_VERSION, - ], - repository = "@nixpkgs", - version = GHC_VERSION, +load( + "//:ghc.bzl", + "GHC_VERSION", ) - load("//:ghc_inside_nix.bzl", "register_ghc_in_nix") register_ghc_in_nix( diff --git a/flake.nix b/flake.nix index 33d20f4..3d4ef28 100644 --- a/flake.nix +++ b/flake.nix @@ -89,12 +89,12 @@ nativeBuildInputs = nativeBuildInputs ++ [ ghc ]; fetchAttrs = { - sha256 = "sha256-TfkXA+QRx2/EMzP/8LgIu9G2MUGwWkvX2nHhRyqaYhY="; + sha256 = "sha256-A3DM+leQiC58MyVIUPTQnpUh5mSJgd7AoztHT6/nIHM="; }; buildAttrs = { preBuild = '' - patchShebangs $bazelOut/external/rules_haskell/haskell/private/ghc_wrapper.sh + patchShebangs $bazelOut/external/rules_haskell~0.19/haskell/private/ghc_wrapper.sh ''; installPhase = '' install -D -t $out/bin bazel-bin/replay From 109b512bc3eed51c2a23ad583cdd31ba05af7565 Mon Sep 17 00:00:00 2001 From: bot Date: Mon, 1 Jul 2024 21:22:26 +0000 Subject: [PATCH 7/7] Update replay.deps hash --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 3d4ef28..f7f14db 100644 --- a/flake.nix +++ b/flake.nix @@ -89,7 +89,7 @@ nativeBuildInputs = nativeBuildInputs ++ [ ghc ]; fetchAttrs = { - sha256 = "sha256-A3DM+leQiC58MyVIUPTQnpUh5mSJgd7AoztHT6/nIHM="; + sha256 = "sha256-WFjCjZ/9PaYaF1c9xyb/t0JD0J20ooOWghrKrIc/6vQ="; }; buildAttrs = {