Skip to content

Commit d997fb1

Browse files
authored
Support generating initial lock file when none exists (#169)
Fixes GoogleContainerTools/distroless#1697
1 parent 9156de6 commit d997fb1

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

apt/extensions.bzl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ def _distroless_extension(module_ctx):
2626
# buildifier: disable=print
2727
print("\nNo lockfile was given, please run `bazel run @%s//:lock` to create the lockfile." % install.name)
2828
else:
29-
lockf = lockfile.from_json(module_ctx, module_ctx.read(install.lock))
29+
if module_ctx.path(install.lock).exists:
30+
lockf = lockfile.from_json(module_ctx, module_ctx.read(install.lock))
31+
else:
32+
# buildifier: disable=print
33+
print("\nSpecified lockfile '%s' not found. An empty lockfile is assumed." % install.lock)
34+
lockf = lockfile.from_json(module_ctx, None)
3035
reproducible = True
3136

3237
for (package) in lockf.packages():

apt/private/lockfile.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def _create(rctx, lock):
5151
add_package = lambda *args, **kwargs: _add_package(lock, *args, **kwargs),
5252
add_package_dependency = lambda *args, **kwargs: _add_package_dependency(lock, *args, **kwargs),
5353
packages = lambda: lock.packages,
54-
write = lambda out: rctx.file(out, json.encode_indent(struct(version = lock.version, packages = lock.packages))),
54+
write = lambda out: rctx.file(out, json.encode_indent(struct(version = lock.version, packages = lock.packages)), executable = False),
5555
as_json = lambda: json.encode_indent(struct(version = lock.version, packages = lock.packages)),
5656
)
5757

0 commit comments

Comments
 (0)