Commit Graph

290 Commits

Author SHA1 Message Date
Matt a464f69faa
Copy rules_directory to bazel-skylib. (#510)
Original implementation is at https://github.com/matts1/rules_directory
2024-05-29 07:24:27 +02:00
Matt b459822483
Add MODULE.bazel.lock to gitignore. (#509)
I would add --lockfile_mode=off to .bazelrc, but this should support older versions of bazel before the lockfile_mode flag was released.
2024-05-15 12:28:42 -04:00
Alexandre Rostovtsev 0d43695bd5
Re-add `licenses()` - internal license checker still requires it :/ (#506)
And take the opportunity to fix default_applicable_licenses in the gazelle plugin
2024-05-02 14:38:05 -04:00
Alexandre Rostovtsev a16ebb4dca
Add `default_applicable_license` and remove obsolete `licenses()` in all BUILD files (#504) 2024-05-01 17:24:18 -04:00
UebelAndre 16bf90d4ae
Support modern location expansions for run_binary (#490)
A common point of confusion I see around `run_binary` is that it's hard coded to only expand `$(location` values which in codebases I work in are otherwise completely eliminated due to it being described as "legacy"

> location: A synonym for either execpath or rootpath, depending on the attribute being expanded. This is legacy pre-Starlark behavior and not recommended unless you really know what it does for a particular rule. See [#2475](https://github.com/bazelbuild/bazel/issues/2475#issuecomment-339318016) for details.

If `execpath` is used instead as the appropriate alternative, the rule does no do any expansion and fails the action. This change adds support for expanding all available patterns whenever they're provided.
2024-04-30 17:19:34 -04:00
Philipp Stephani 2b546aff9e
Add missing comma (#505) 2024-04-25 18:06:33 -04:00
Alexandre Rostovtsev 908387347d
Add license blurb to bzl_library_test.bzl and move blurb-less test data files to testdata subdir (#503)
Required by internal license checker.
2024-04-25 17:15:11 -04:00
Alexandre Rostovtsev eff2e58cf3
Mention new contributor in changelog (#502) 2024-04-25 11:53:26 -04:00
Alexandre Rostovtsev e864c2223e
Prepare release 1.6.1 (#501) 2024-04-25 11:37:37 -04:00
Alexandre Rostovtsev 18e70d2105
Improve CI setup: add tests for Bazel 5.x and 6.x (with and without bzlmod); use Ubuntu 20.04 as main platform 2024-04-25 10:59:42 -04:00
Philipp Stephani 700c9ec92b
Improve compatibility with Bazel 6. (#499)
In Bazel 6, the doc parameter of the module_extension function doesn’t accept
None; cf. https://bazel.build/versions/6.5.0/rules/lib/globals#module_extension
vs. https://bazel.build/versions/7.0.0/rules/lib/globals/bzl#module_extension.
Instead of passing None in that case, just don’t pass the argument at all and
use the respective default.
2024-04-25 15:45:04 +02:00
Alexandre Rostovtsev f9c2d9e719
Bump gazelle submodule version in sync with the main skylib module (#498) 2024-04-24 21:47:56 +00:00
Alexandre Rostovtsev 99ffbbf8a4
Prepare release 1.6.0 (#496)
And take the opportunity to reformat docs using a more modern Stardoc release
2024-04-24 17:40:06 -04:00
Fabian Meumertzheim 1969278310
Mark `modules.as_extension` as `reproducible` (#497)
WORKSPACE macros are fully deterministic and thus a prime example of a `reproducible` module extension. This reduces clutter in `MODULE.bazel.lock`.
2024-04-24 23:26:33 +02:00
Ted Pudlik 09b1079228
Make `out` on `native_binary` optional (#474)
Fixes: #399
2024-04-24 15:40:31 -04:00
Fabian Meumertzheim 553c08dc60
Add helper functions for module extensions as `modules` (#456)
Adds a new module `modules` with two helper functions for module
extensions:

* `use_all_repos` makes it easy to return an appropriate
  `extension_metadata` from a module extension (if supported) to
  indicate that all repositories generated by the extension should be
  imported via `use_repo`.
* `as_extension` turns a WORKSPACE macro into a module extension that
  uses `use_all_repos` to automate the generation of `use_repo` calls.
2024-04-24 14:53:32 -04:00
Chris Sauer 15007f24e2
Remove outdated rules_cc dependency (#476)
Fixes #475
2024-04-24 14:23:39 -04:00
Xùdōng Yáng 80b51b36d6
Allow `bzl_library` to depend on non-`bzl_library` targets (#495)
Allow `bzl_library` to depend on non-`bzl_library` targets

Notably, `filegroup`. `bzl_library` doesn't actually read anything from the `StarlarkLibraryInfo` provider, and requiring all deps to be other `bzl_library` targets is really painful for anyone loading .bzls from `@bazel_tools` or `@platforms` because those core modules/repos don't want a dependency on Skylib just for access to `bzl_library`.

The medium-term plan will be to move `bzl_library` into `@bazel_tools`; but before then, this can serve as a stop-gap.

Co-authored-by: Alexandre Rostovtsev <arostovtsev@google.com>
2024-04-24 14:16:57 -04:00
Alexandre Rostovtsev 054ebf58f0
expand_template: do not output_to_genfiles (#493)
output_to_genfiles is deprecated unless needed for backwards compatibility
with legacy rules (see https://bazel.build/rules/lib/globals/bzl#rule)
2024-03-20 17:56:10 -04:00
Alexandre Rostovtsev e60cf0001f
Add licenses spec to new BUILD file (#485)
Internal linter complains about lack of license info.
2024-01-19 15:14:08 -05:00
JY Lin 60241d2e06
Add toolchains argument to unittests.make (#483)
* Add toolchains argument to unittests.make

Make unittests.make bypass toolchains arguments to target rule's constructor.

* update doc

---------

Co-authored-by: JiaYan Lin <jiayanl@google.com>
2024-01-08 09:37:19 +01:00
kotlaja 1a1ee6c230
Modify actions in order not to need toolchain param (#478) 2023-11-16 15:04:55 +01:00
Xùdōng Yáng 9c9beee741
prepare for release 1.5.0 (#472) 2023-11-05 11:16:45 -05:00
Ivo List d17d36915c
Upgrade rules_go (#460) 2023-11-02 15:38:36 +01:00
UebelAndre d77c6fbaf7
Add `doc` param to `unittest.make` (#464) 2023-10-31 08:52:17 +01:00
Keith Smiley 8da4759611
Add error for empty bzl_library (#457)
This improves the error in the case your bzl_library does nothing.
Otherwise you end up with something weirder later:

```
BUILD:35:12: in deps attribute of bzl_library rule LABEL: 'DEP' does not produce any bzl_library deps files (expected .bzl)
```

Ideally we could set `allow_empty = False` on `srcs` but currently it's
valid to just have a bzl_library target that aggregates multiple other
libraries in its deps.

Co-authored-by: Ivo List <ilist@google.com>
2023-10-25 16:39:34 +02:00
Fabian Meumertzheim 652c8f0b28
versions: Don't fail on Bazel dev builds (#463)
Dev builds of Bazel are assumed to be more recent than any released
version.
2023-09-25 18:25:37 -07:00
Yun Peng 6bf7bae2f4
Fix bazel-skylib with Bazel@HEAD (#462) 2023-09-18 11:25:50 -07:00
kotlaja 0171c69e5c
Modify actions in order not to need `toolchain` param (#455)
All actions which use tool or executable for which is not clear if it comes from a toolchain, must set a `toolchain` parameter ( migration of Automatic Exec Groups). 

As we discussed internally, I've modified actions so that it's recognised that tools are not from the toolchain. Hence, there will not be an error which states `Couldn't identify if tools are from implicit dependencies or a toolchain. Please set the toolchain parameter. If you're not using a toolchain, set it to 'None'.`. Hence, no need for the toolchain parameter.
2023-08-28 14:39:43 -04:00
Fabian Meumertzheim 8386b9d32b
Expose int- and string-valued build settings as Make variables (#440)
While build settings allow for much cleaner flag and setting definitions
than `--define`, they have the major drawback that rules need to provide
dedicated support for them, which isn't the case for native and most
community-maintained rules.

This change attempts to bridge this gap by optionally exposing the value
of the common build setting types as Make variables to rules that depend
on them via the `toolchains` attribute: If the new `make_variable`
attribute is set, the value of the flag or setting is available as a
Make variable with that.

Consistency with pre-defined Make variables is enforced by limiting the
character set for `make_variable` values to `[A-Z0-9_]`. The new
attribute is also only added to int- and string-valued build settings as
the other types lack a canonical stringification.

Co-authored-by: Xùdōng Yáng <wyverald@gmail.com>
2023-08-22 19:41:36 +00:00
Alexandre Rostovtsev 6fcbad3991
Bump rules_pkg dep to 0.9.1 to fix build with --incompatible_config_setting_private_default_visibility (#452)
Required for Bazel 7 compatibility.

Note that rules_pkg 0.9.1 requires Python 3.6 or newer as the system's Python 3; this means we cannot build //distribution on Ubuntu 16.04 any more (which is fine, since it only affects the skylib developer workflow; users of skylib on Ubuntu 16.04 are not affected). Update CI config accordingly.

Fixes #414
2023-08-08 17:32:28 -04:00
Alexandre Rostovtsev 288731ef9f
Update changelog and version for release 1.4.2 (#451) 2023-05-31 15:24:07 -04:00
Alexandre Rostovtsev 12dd004ffa
Allow .scl files in bzl_library (#450)
See a0cd355347
2023-05-31 14:58:11 -04:00
UebelAndre 0a34b7edf6
Avoid building build_test deps unnecessarily (#448)
I ran into an issue where I had a `build_test` that was only compatible with a particular platform. I had annotated the target with `target_compatible_with` but continued to get builds on the incompatible platform. This came down to my `bazel test //...` invocation picking up the `{name}_{idx}__deps` targets and building the dependency anyway. This change updates these targets to account for newer common attributes and tags them as manual so they're only built when the user facing test target is built.
2023-05-31 11:37:12 -04:00
Xavier Bonaventura caf2bc1ae1
Build with incompatible_disallow_empty_glob (#447)
In order to flip the flag, all downstream projects should be adapted. However, it is hard to fix them all if there are constant regressions. Adding it to the CI will ensure that once the project can build with incompatible_disallow_empty_glob it can keep building like that.
See: bazelbuild/bazel#15327
2023-05-15 23:40:08 -04:00
Vertexwahn 2f0bb4cec0
Fix spelling (#445) 2023-04-26 21:55:09 -04:00
Alexandre Rostovtsev a360c42f3d
Trivial buildifier fix (#444) 2023-04-03 11:09:36 -04:00
Alexandre Rostovtsev 141432789c
Update changelog and version for release 1.4.1 (#434) 2023-02-09 11:03:12 -05:00
Alexandre Rostovtsev cc477631c9
Update rules_go and gazelle deps to be compatible with --incompatible_disable_starlark_host_transitions (#433)
Partially addresses --incompatible_disable_starlark_host_transitions
2023-02-08 22:09:22 -07:00
Chuck Grindel facabc1db3
fix: allow empty glob for `testdata` in the Gazelle extension (#432)
Closes https://github.com/bazelbuild/bazel-skylib/issues/431
2023-02-08 13:08:56 -05:00
Alexandre Rostovtsev 9c7c45b876
Update maintainer guide for bzlmod and bazel-central-registry (#430) 2023-02-02 15:27:27 -05:00
Alexandre Rostovtsev 9cbe3aea11
Fix distribution tarballs and update changelog and version for release 1.4.0 (#429)
* Fix location of MODULE.bazel in distro tarballs.
* Remove invalid paths from WORKSPACE files in distro tarballs
* The resulting tarballs should finally be distributable as 1.4.0 in BCR.
2023-01-27 10:02:13 -05:00
Alexandre Rostovtsev 99a6bcb240
Add gazelle plugin to CI and distribution mechanism (#424)
After #400, the gazelle plugin has been cleanly separated out into its own bazel workspace, which will soon finally allow us to mark it stable. But this means:

* we need to change our bazelci config to explicitly build and test it, since `bazel build //...` no longer includes the plugin;
* we need to add proper distribution rules for it;
* we need to update release instructions, since now we will have two distribution tarballs
2023-01-20 16:48:10 -05:00
Simon Stewart 5bfcb1a684
Stop registering a Go SDK in the Gazelle submodule (#411)
* Do not register a Go toolchain for ourselves

This module can be used as a transitive dep, and so we want to
avoid forcing users to futz with their SDKs.

* Add a small comment
2022-11-16 19:29:32 +01:00
Simon Stewart 60abca8fa2
Add the gazelle plugin to the distribution (#400)
* Add the gazelle plugin to the distribution

To avoid everyone needing to take a dep on `rules_go`, we
do the following:

1. Regular Bazel users need to load `bazel_skylib_gazelle_plugin_workspace`
   and call that, and then `bazel_skylib_gazelle_plugin_setup`

2. `bzlmod` users need do nothing, but we now include the
   `rules_go` dep in the `MODULE.bazel` shipped in the release.
    This is fine, because `bzlmod` will lazily load
    dependencies.

* Run buildifier

* Add docstring to `gazelle_setup.bzl`

* Move "internal only" marker

* Make @com_github_bazelbuild_buildtools visible in the deployed module

* Respond to review comments

* Move plugin to a nested workspace

* Run buildifier

* Restore the module declaration from `main`

* Bump versions of rules_go and gazelle used in the top-level module to match the ones in gazelle

* Respond to review comments and add gazelle to ignored directories so //... works as expected

* Add missing descriptor for stardoc

* Move gazelle hints into workspace files
2022-11-07 11:25:38 +01:00
Nick Gooding 8a6ab72c6e
Stop hardcoding runfiles prefix (#402)
bazelbuild/bazel@6a8ddb7 changed the prefix for runfiles from the main
repo when Bzlmod is enabled. Because all uses of rlocation were
hardcoded to use "bazel_skylib", tests requiring runfiles stopped
working with Bzlmod enabled. This commit updates calls to rlocation to
instead use the TEST_WORKSPACE env var to get the repo name.
2022-10-15 09:20:48 +11:00
Alexandre Rostovtsev bc112d41fd
Bump stardoc dep to unbreak build with --experimental_enable_bzlmod (#398) 2022-10-03 05:13:46 -04:00
Xùdōng Yáng 61d9c62833
Make settings error message more friendly (#394)
By stripping leading '@'s from labels in the main repo. So it talks about the flag '//foo:bar' instead of the flag '@//foo:bar'.
2022-09-05 16:17:20 -04:00
Alexandre Rostovtsev 908bf1431d
Allow sandboxing for copy_* and fix copy_directory tests (#392)
After some thought, I have to say that forcing a local strategy for
copy_file/copy_directory is inappropriate. The point of a sandbox is to
catch hermeticity bugs; disabling the sandbox may be useful for
performance, but it's up to the user to do it if they trust us - and
they can do it via flag. The default should be paranoia and safety.

And on the subject of strategies - using a genrule to create an empty
directory fails in environments where genrules run remote by default
(and thus, copy_directory tests fail). We could, of course, set local=1,
but that disables the sandbox and causes scary warnings. Instead, add a
proper empty_directory rule to test with.
2022-09-02 10:42:43 -04:00
Alexandre Rostovtsev 42abf5cbf2
Documentation fixes (#391) 2022-09-01 15:29:04 -04:00