Skip to content

Commit df80ac7

Browse files
authored
pkg_deb: add support for md5sums control file (#960)
This adds a new, optional attribute to the pkg_deb rule allowing a user to supply an md5sums file. Closes #959
1 parent ecfcb1f commit df80ac7

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

pkg/private/deb/deb.bzl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ def _pkg_deb_impl(ctx):
7676
if ctx.attr.triggers:
7777
args.append("--triggers=@" + ctx.file.triggers.path)
7878
files.append(ctx.file.triggers)
79+
if ctx.attr.md5sums:
80+
args.append("--md5sums=@" + ctx.file.md5sums.path)
81+
files.append(ctx.file.md5sums)
7982

8083
# Conffiles can be specified by a file or a string list
8184
if ctx.attr.conffiles_file:
@@ -276,6 +279,13 @@ pkg_deb_impl = rule(
276279
See https://wiki.debian.org/DpkgTriggers.""",
277280
allow_single_file = True,
278281
),
282+
"md5sums": attr.label(
283+
doc = """A file listing md5 checksums of files in the data archive.
284+
This file is optional.
285+
See https://manpages.debian.org/bookworm/dpkg-dev/deb-md5sums.5.en.html.
286+
""",
287+
allow_single_file = True,
288+
),
279289
"built_using": attr.string(
280290
doc = """The tool that were used to build this package provided either inline (with built_using) or from a file (with built_using_file).""",
281291
),

pkg/private/deb/make_deb.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ def CreateDeb(output,
198198
config=None,
199199
templates=None,
200200
triggers=None,
201+
md5sums=None,
201202
conffiles=None,
202203
changelog=None,
203204
**kwargs):
@@ -217,6 +218,8 @@ def CreateDeb(output,
217218
extrafiles['templates'] = (templates, 0o644)
218219
if triggers:
219220
extrafiles['triggers'] = (triggers, 0o644)
221+
if md5sums:
222+
extrafiles['md5sums'] = (md5sums, 0o644)
220223
if conffiles:
221224
extrafiles['conffiles'] = ('\n'.join(conffiles) + '\n', 0o644)
222225
if changelog:
@@ -366,6 +369,9 @@ def main():
366369
parser.add_argument(
367370
'--triggers',
368371
help='The triggers file (prefix with @ to provide a path).')
372+
parser.add_argument(
373+
'--md5sums',
374+
help='The md5sums file (prefix with @ to provide a path).')
369375
# see
370376
# https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html#s-conffile
371377
parser.add_argument(
@@ -387,6 +393,7 @@ def main():
387393
config=helpers.GetFlagValue(options.config, False),
388394
templates=helpers.GetFlagValue(options.templates, False),
389395
triggers=helpers.GetFlagValue(options.triggers, False),
396+
md5sums=helpers.GetFlagValue(options.md5sums, False),
390397
conffiles=GetFlagValues(options.conffile),
391398
changelog=helpers.GetFlagValue(options.changelog, False),
392399
package=options.package,

tests/deb/BUILD

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ genrule(
3333
cmd = "for i in $(OUTS); do echo 1 >$$i; done",
3434
)
3535

36+
genrule(
37+
name = "generate_md5sums",
38+
srcs = [":generate_files"],
39+
outs = ["md5sums"],
40+
cmd = "md5sum $(SRCS) | sed 's|$(RULEDIR)/||' > $@",
41+
)
42+
3643
my_package_naming(
3744
name = "my_package_variables",
3845
label = "some_value",
@@ -80,6 +87,7 @@ pkg_deb(
8087
distribution = "trusty",
8188
license = "Apache-2.0",
8289
maintainer = "somé[email protected]",
90+
md5sums = ":generate_md5sums",
8391
package = "fizzbuzz",
8492
preinst = "deb_preinst",
8593
provides = ["hello"],

tests/deb/pkg_deb_test.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ def test_control_files(self):
177177
{'name': './config', 'mode': 0o755},
178178
{'name': './control', 'mode': 0o644},
179179
{'name': './preinst', 'mode': 0o755},
180+
{'name': './md5sums', 'mode': 0o644},
180181
{'name': './templates', 'mode': 0o644},
181182
{'name': './triggers', 'mode': 0o644},
182183
]

0 commit comments

Comments
 (0)