Skip to content

Commit a751beb

Browse files
committed
Added support for macros
1 parent 8491d89 commit a751beb

File tree

8 files changed

+81
-20
lines changed

8 files changed

+81
-20
lines changed

README.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ First, tell bazel to load the rule and its dependencies with a `load()` statemen
1111
```bzl
1212
http_archive(
1313
name = "rules_deb_packages",
14-
sha256 = "e8c14582bc634317f7d029b15304940a0f03f0a7da6f4496126940071e1c4349",
15-
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.1.0/rules_deb_packages.tar.gz"],
14+
sha256 = "1584202216c4ac1b2263fd40865815aba7ae4059360cbe9191000322a45159a0",
15+
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.2.0/rules_deb_packages.tar.gz"],
1616
)
1717

1818
load("@rules_deb_packages//:repositories.bzl", "deb_packages_dependencies")
@@ -108,6 +108,9 @@ load("@rules_deb_packages//:update_deb_packages.bzl", "update_deb_packages")
108108

109109
update_deb_packages(
110110
name = "update_deb_packages",
111+
bzl_files = [
112+
"debian_buster_amd64.bzl", # if you use macro to import in WORKSPACE otherwise optional
113+
],
111114
pgp_keys = [
112115
"@buster_archive_key//file",
113116
"@buster_security_archive_key//file",
@@ -322,10 +325,17 @@ A rule that helps keep all deb_package repository rules up to date, by checking
322325
<p><code>rule name, required</code></p>
323326
</td>
324327
</tr>
328+
<tr>
329+
<td><code>bzl_files</code></td>
330+
<td>
331+
<p><code>optional list of additional bzl files (path relative to workspace) to scan for deb_packages rules</code>
332+
<p>the <code>WORKSPACE</code> file is always scanned
333+
</td>
334+
</tr>
325335
<tr>
326336
<td><code>pgp_keys</code></td>
327337
<td>
328-
<p><code>a list of trusted PGP keys that were used to sign release information of source repositories</code>
338+
<p><code>required list of trusted PGP keys that were used to sign release information of source repositories</code>
329339
</td>
330340
</tr>
331341
</tbody>

examples/BUILD

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ load("@rules_deb_packages//:update_deb_packages.bzl", "update_deb_packages")
22

33
update_deb_packages(
44
name = "update_deb_packages",
5+
bzl_files = [
6+
"debian_buster_amd64.bzl",
7+
],
58
pgp_keys = [
69
"@buster_archive_key//file",
710
"@buster_security_archive_key//file",

examples/WORKSPACE

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ pip_deps()
2626
# Example for using the deb_packages ruleset
2727
http_archive(
2828
name = "rules_deb_packages",
29-
sha256 = "a627aebb1078700fd6319ccf66e62eebdbdf5c9d9e9a3571de57f389c230e8d6",
30-
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.1.0/rules_deb_packages.tar.gz"],
29+
sha256 = "1584202216c4ac1b2263fd40865815aba7ae4059360cbe9191000322a45159a0",
30+
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.2.0/rules_deb_packages.tar.gz"],
3131
)
3232

3333
load("@rules_deb_packages//:repositories.bzl", "deb_packages_dependencies")

examples/debian_buster_amd64.bzl

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
load("@rules_deb_packages//:deb_packages.bzl", "deb_packages")
2+
3+
def debian_buster_amd64():
4+
deb_packages(
5+
name = "debian_buster_amd64_macro",
6+
arch = "amd64",
7+
mirrors = [
8+
"http://deb.debian.org/debian",
9+
"http://deb.debian.org/debian-security",
10+
],
11+
packages = {
12+
"base-files": "pool/main/b/base-files/base-files_10.3+deb10u6_amd64.deb",
13+
"busybox": "pool/main/b/busybox/busybox_1.30.1-4_amd64.deb",
14+
"ca-certificates": "pool/main/c/ca-certificates/ca-certificates_20200601~deb10u1_all.deb",
15+
"libc6": "pool/main/g/glibc/libc6_2.28-10_amd64.deb",
16+
"libssl1.1": "pool/main/o/openssl/libssl1.1_1.1.1d-0+deb10u3_amd64.deb",
17+
"netbase": "pool/main/n/netbase/netbase_5.6_all.deb",
18+
"openssl": "pool/main/o/openssl/openssl_1.1.1d-0+deb10u3_amd64.deb",
19+
"tzdata": "pool/main/t/tzdata/tzdata_2020a-0+deb10u1_all.deb",
20+
},
21+
packages_sha256 = {
22+
"base-files": "ed640f8e2ab4e44731485ac7658a269012b9318ec8c6fb7b2b78825a624a9939",
23+
"busybox": "1e32ea742bddec4ed5a530ee2f423cdfc297c6280bfbb45c97bf12eecf5c3ec1",
24+
"ca-certificates": "794bd3ffa0fc268dc8363f8924b2ab7cf831ab151574a6c1584790ce9945cbb2",
25+
"libc6": "6f703e27185f594f8633159d00180ea1df12d84f152261b6e88af75667195a79",
26+
"libssl1.1": "b293309a892730986e779aea48e97ea94cd58f34f07fefbd432c210ee4a427e2",
27+
"netbase": "baf0872964df0ccb10e464b47d995acbba5a0d12a97afe2646d9a6bb97e8d79d",
28+
"openssl": "03a133833154325c731291c8a87daef5962dcfb75dee7cdb11f7fb923de2db82",
29+
"tzdata": "f9464df8a102259df6caff910b810b452fd6e2af34c73ec8729b474dc2f51c55",
30+
},
31+
sources = [
32+
"http://deb.debian.org/debian buster main",
33+
"http://deb.debian.org/debian buster-updates main",
34+
"http://deb.debian.org/debian-security buster/updates main",
35+
],
36+
)

release.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ mkdir dist
2626
bazel build --platforms=@io_bazel_rules_go//go/toolchain:darwin_amd64 //update_deb_packages:update_deb_packages && \
2727
cp bazel-bin/update_deb_packages/update_deb_packages_/update_deb_packages ../dist/update_deb_packages_darwin_amd64)
2828

29-
version=v0.1.0
29+
version=v0.2.0
3030

3131
cat > rules/repositories.bzl <<EOF
3232
# WARNING!!!

rules/repositories.bzl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,30 @@ def deb_packages_dependencies():
1616
http_file(
1717
name = "update_deb_packages_darwin_amd64",
1818
executable = True,
19-
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.1.0/update_deb_packages_darwin_amd64"],
20-
sha256 = "5df76bb6fc4ed89ab2f6497fc7c03d0eddab01f448a3baa732c914992969881f",
19+
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.2.0/update_deb_packages_darwin_amd64"],
20+
sha256 = "6e003f8d442a46dfabd832b0eb28fbc119c9bd82c2c67f6f78635299c8c75d47",
2121
)
2222

2323
if "update_deb_packages_linux_amd64" not in excludes:
2424
http_file(
2525
name = "update_deb_packages_linux_amd64",
2626
executable = True,
27-
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.1.0/update_deb_packages_linux_amd64"],
28-
sha256 = "c16ab719302d231a3b492881cad53fa4fae3aa4b49f1d291f6c0825a60c63fff",
27+
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.2.0/update_deb_packages_linux_amd64"],
28+
sha256 = "6960fda49004294b72c0ed9dbb43e65aa509ca267c217ca2e8d71d3cc882ae09",
2929
)
3030

3131
if "update_deb_packages_linux_arm64" not in excludes:
3232
http_file(
3333
name = "update_deb_packages_linux_arm64",
3434
executable = True,
35-
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.1.0/update_deb_packages_linux_arm64"],
36-
sha256 = "bde6f8eaad68fd4742c0a25f330e38207ace3dc2205cb4c0d0b9e3b129b0dd57",
35+
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.2.0/update_deb_packages_linux_arm64"],
36+
sha256 = "5e6e0251ae374121bf3c530c6df4638eff4c387ae6729087d6973ba25145235a",
3737
)
3838

3939
if "update_deb_packages_windows_amd64" not in excludes:
4040
http_file(
4141
name = "update_deb_packages_windows_amd64",
4242
executable = True,
43-
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.1.0/update_deb_packages_windows_amd64.exe"],
44-
sha256 = "e8a52de54d147cb0f8acde78da1750654ec7fc52f02d4b10e108f9b2f72cc58a",
43+
urls = ["https://github.com/petermylemans/rules_deb_packages/releases/download/v0.2.0/update_deb_packages_windows_amd64.exe"],
44+
sha256 = "19ccbbac416c142313ea20fe577f19db0136e1a6fc27db007b5ffd99e1836854",
4545
)

rules/update_deb_packages.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ $BASE/{update_deb_packages} {args} $@
2222
"""
2323

2424
def _update_deb_packages_script_impl(ctx):
25-
args = ctx.attr.args + ["--pgp-key=\"" + f.path + "\"" for f in ctx.files.pgp_keys]
25+
args = ctx.attr.args + ["--pgp-key=\"" + f.path + "\"" for f in ctx.files.pgp_keys] + ctx.attr.bzl_files
2626
script_content = _script_content.format(update_deb_packages = ctx.file.update_deb_packages_exec.short_path, args = " ".join(args))
2727
script_file = ctx.actions.declare_file(ctx.label.name + ".bash")
2828
ctx.actions.write(script_file, script_content, True)
@@ -36,6 +36,7 @@ _update_deb_packages_script = rule(
3636
_update_deb_packages_script_impl,
3737
attrs = {
3838
"args": attr.string_list(),
39+
"bzl_files": attr.string_list(),
3940
"pgp_keys": attr.label_list(),
4041
"update_deb_packages_exec": attr.label(
4142
allow_single_file = True,

tools/update_deb_packages/update_deb_packages.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -368,12 +368,12 @@ func updateWorkspaceRule(keyring openpgp.EntityList, rule *build.Rule) {
368368
newPackagesKV = append(newPackagesKV, &build.KeyValueExpr{Key: &build.StringExpr{Value: pkgName}, Value: &build.StringExpr{Value: newPackages[pkgName]}})
369369
newPackagesSha256KV = append(newPackagesSha256KV, &build.KeyValueExpr{Key: &build.StringExpr{Value: pkgName}, Value: &build.StringExpr{Value: newPackagesSha256[pkgName]}})
370370
}
371-
rule.SetAttr("packages", &build.DictExpr{List: newPackagesKV})
372-
rule.SetAttr("packages_sha256", &build.DictExpr{List: newPackagesSha256KV})
371+
rule.SetAttr("packages", &build.DictExpr{List: newPackagesKV, ForceMultiLine: true})
372+
rule.SetAttr("packages_sha256", &build.DictExpr{List: newPackagesSha256KV, ForceMultiLine: true})
373373
}
374374

375-
func updateWorkspace(keyring openpgp.EntityList, workspaceContents []byte) string {
376-
f, err := build.Parse("WORKSPACE", workspaceContents)
375+
func updateFile(keyring openpgp.EntityList, filename string, fileContents []byte) string {
376+
f, err := build.Parse(filename, fileContents)
377377
logFatalErr(err)
378378

379379
for _, rule := range f.Rules("deb_packages") {
@@ -412,6 +412,17 @@ func main() {
412412
logFatalErr(err)
413413
workspacefile.Close()
414414

415-
err = ioutil.WriteFile("WORKSPACE", []byte(updateWorkspace(keyring, wscontent)), 0664)
415+
err = ioutil.WriteFile("WORKSPACE", []byte(updateFile(keyring, "WORKSPACE", wscontent)), 0664)
416416
logFatalErr(err)
417+
418+
for _, fileName := range flag.Args() {
419+
bzlFile, err := os.Open(fileName)
420+
logFatalErr(err)
421+
bzlContent, err := ioutil.ReadAll(bzlFile)
422+
logFatalErr(err)
423+
workspacefile.Close()
424+
425+
err = ioutil.WriteFile(fileName, []byte(updateFile(keyring, fileName, bzlContent)), 0664)
426+
logFatalErr(err)
427+
}
417428
}

0 commit comments

Comments
 (0)