Skip to content

Commit

Permalink
chore: Add invert_repositories function
Browse files Browse the repository at this point in the history
Generic function for working around
bazelbuild/bazel#5356
  • Loading branch information
thufschmitt committed Jan 14, 2019
1 parent 6747660 commit 610a8da
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions nixpkgs/nixpkgs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -167,21 +167,31 @@ _nixpkgs_package = repository_rule(
)

def nixpkgs_package(*args, **kwargs):
invert_repositories(_nixpkgs_package, *args, **kwargs)

def invert_dict(dict):
"""Swap the keys and values of a dict − assuming that all values are
distinct
"""
return {value: key for (key, value) in dict.items()}

def invert_repositories(f, *args, **kwargs):
# Because of https://github.com/bazelbuild/bazel/issues/5356 we can't
# directly pass a dict from strings to labels to the rule (which we'd like
# for the `repositories` arguments), but we can pass a dict from labels to
# strings. So we swap the keys and the values (assuming they all are
# distinct).
if "repositories" in kwargs:
inversed_repositories = {value: key for (key, value) in kwargs["repositories"].items()}
kwargs.pop("repositories")
_nixpkgs_package(
repositories = inversed_repositories,
*args,
**kwargs
)
else:
_nixpkgs_package(*args, **kwargs)
hasRepository = "repository" in kwargs and kwargs["repository"] != None
hasRepositories = "repositories" in kwargs and kwargs["repositories"] != None
if hasRepository and hasRepositories:
fail("Specify one of 'repository' or 'repositories' (but not both).")
if hasRepositories:
inversed_repositories = invert_dict(kwargs["repositories"])
kwargs["repositories"] = inversed_repositories
if hasRepository:
repository = kwargs.pop("repository")
kwargs["repositories"] = { repository: "nixpkgs" }
f(*args, **kwargs)

def nixpkgs_cc_autoconf_impl(repository_ctx):
cpu_value = get_cpu_value(repository_ctx)
Expand Down

0 comments on commit 610a8da

Please sign in to comment.