diff --git a/dev_scripts/reproduce-image.py b/dev_scripts/reproduce-image.py index b1ecc8e0d..6f7f8e640 100755 --- a/dev_scripts/reproduce-image.py +++ b/dev_scripts/reproduce-image.py @@ -138,14 +138,18 @@ def diffoci_diff(runtime, source, local_target): ) -def build_image(tag, use_cache=False): +def build_image(tag, use_cache=False, platform=None, runtime=None): """Build the Dangerzone container image with a special tag.""" + platform_args = [] if not platform else ["--platform", platform] + runtime_args = [] if not runtime else ["--runtime ", runtime] run( "python3", "./install/common/build-image.py", "--no-save", "--use-cache", str(use_cache), + *platform_args, + *runtime_args, "--tag", tag, ) @@ -161,6 +165,11 @@ def parse_args(): prog=sys.argv[0], description="Dev script for verifying container image reproducibility", ) + parser.add_argument( + "--platform", + default=None, + help=f"The platform for building the image (default: current platform)", + ) parser.add_argument( "--runtime", choices=["docker", "podman"], @@ -182,6 +191,12 @@ def parse_args(): action="store_true", help="Whether to reuse the build cache (off by default for better reproducibility)", ) + parser.add_argument( + "--skip-check-commit", + default=False, + action="store_true", + help="Skip checking if the source image tag contains the current Git commit", + ) return parser.parse_args() @@ -193,9 +208,10 @@ def main(): ) args = parse_args() - logger.info(f"Ensuring that current Git commit matches image '{args.source}'") commit = git_commit_get() - git_verify(commit, args.source) + if not args.skip_check_commit: + logger.info(f"Ensuring that current Git commit matches image '{args.source}'") + git_verify(commit, args.source) if not diffoci_is_installed(): diffoci_download() @@ -203,7 +219,7 @@ def main(): tag = f"reproduce-{commit}" target = f"{IMAGE_NAME}:{tag}" logger.info(f"Building container image and tagging it as '{target}'") - build_image(tag, args.use_cache) + build_image(tag, args.use_cache, args.platform, args.runtime) logger.info( f"Ensuring that source image '{args.source}' is semantically identical with"