fix(test): make `//tests/mappings/filter_directory` work on Windows
The `filter_directory` tests were failing on Windows:
```
ERROR: test_directory_structure_matches_global (__main__.DirectoryStructureTest.test_directory_structure_matches_global)
[...]
os.path.isdir(real_directory_root),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[...]
TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType
```
This was because `Rlocation()` expects POSIX-style paths (forward
slashes), but `os.path.join()` produces backslashes on Windows.
After fixing it, a second error appeared:
```
FAIL: test_directory_structure_matches_global (__main__.DirectoryStructureTest.test_directory_structure_matches_global)
AssertionError: Items in the first set but not the second:
'extra/a'
'extra/subdir/c'
'extra/b'
'extra/subdir/d'
Items in the second set but not the first:
'extra\\subdir\\c'
'extra\\a'
'extra\\b'
'extra\\subdir\\d' : Directory structure mismatch
```
This was because paths collected via `os.walk()` also produce
backslashes on Windows against expected paths returned by `Rlocation`
that always use forward slashes.
The change consists in leveraging `pathlib` for that purpose:
`Path().as_posix()`, `Path.rglob()` and `Path.relative_to()`.
This enables the 9 `filter_directory` tests in Windows CI.Bazel rules for building tar, zip, deb, and rpm for packages.
For the latest version, see Releases (with WORKSPACE setup) / Documentation
Use rules-pkg-discuss@googlegroups.com for discussion.
As of Bazel 4.x, Bazel uses this rule set for packaging its distribution. Bazel still contains a limited version of pkg_tar but its feature set is frozen. Any new capabilities will be added here.
Sample, but see releases for the current release.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "rules_pkg", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz", "https://github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz", ], sha256 = "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8", ) load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies") rules_pkg_dependencies()
To use pkg_rpm(), you must provide a copy of rpmbuild. You can use the system installed rpmbuild with this stanza.
load("@rules_pkg//toolchains/rpm:rpmbuild_configure.bzl", "find_system_rpmbuild") find_system_rpmbuild( name = "rules_pkg_rpmbuild", verbose = False, )
bazel_dep(name = "rules_pkg", version = "0.0.10")
To use pkg_rpm(), you must provide a copy of rpmbuild. You can use the system installed rpmbuild with this stanza.
find_rpm = use_extension("//toolchains/rpm:rpmbuild_configure.bzl", "find_system_rpmbuild_bzlmod") use_repo(find_rpm, "rules_pkg_rpmbuild") register_toolchains("@rules_pkg_rpmbuild//:all")
We hold an engineering status meeting on the first Monday of every month at 10am USA East coast time. Add to calendar / meeting notes