diff --git a/ic-os/defs.bzl b/ic-os/defs.bzl index ab84e9f39b8..73f1caceefa 100644 --- a/ic-os/defs.bzl +++ b/ic-os/defs.bzl @@ -201,7 +201,7 @@ def icos_build( testonly = malicious, srcs = ["partition-root-unsigned.tzst"], outs = ["partition-root.tzst", "partition-root-hash"], - cmd = "$(location //toolchains/sysimage:verity_sign.py) -i $< -o $(location :partition-root.tzst) -r $(location partition-root-hash) -d $(location //rs/ic_os/dflate)", + cmd = "$(location //toolchains/sysimage:verity_sign.py) -i $< -o $(location :partition-root.tzst) -r $(location partition-root-hash) --dflate $(location //rs/ic_os/dflate)", executable = False, tools = ["//toolchains/sysimage:verity_sign.py", "//rs/ic_os/dflate"], tags = ["manual"], @@ -224,7 +224,7 @@ def icos_build( testonly = malicious, srcs = ["partition-root-test-unsigned.tzst"], outs = ["partition-root-test.tzst", "partition-root-test-hash"], - cmd = "$(location //toolchains/sysimage:verity_sign.py) -i $< -o $(location :partition-root-test.tzst) -r $(location partition-root-test-hash) -d $(location //rs/ic_os/dflate)", + cmd = "$(location //toolchains/sysimage:verity_sign.py) -i $< -o $(location :partition-root-test.tzst) -r $(location partition-root-test-hash) --dflate $(location //rs/ic_os/dflate)", tools = ["//toolchains/sysimage:verity_sign.py", "//rs/ic_os/dflate"], tags = ["manual"], ) @@ -784,7 +784,7 @@ EOF name = "partition-root-sign", srcs = ["partition-root-unsigned.tzst"], outs = ["partition-root.tzst", "partition-root-hash"], - cmd = "$(location //toolchains/sysimage:verity_sign.py) -i $< -o $(location :partition-root.tzst) -r $(location partition-root-hash) -d $(location //rs/ic_os/dflate)", + cmd = "$(location //toolchains/sysimage:verity_sign.py) -i $< -o $(location :partition-root.tzst) -r $(location partition-root-hash) --dflate $(location //rs/ic_os/dflate)", executable = False, tools = ["//toolchains/sysimage:verity_sign.py", "//rs/ic_os/dflate"], tags = ["manual"], diff --git a/rs/ic_os/inject_files/src/main.rs b/rs/ic_os/inject_files/src/main.rs index d409d7dc36c..56b83a81329 100644 --- a/rs/ic_os/inject_files/src/main.rs +++ b/rs/ic_os/inject_files/src/main.rs @@ -22,7 +22,7 @@ struct Cli { file_contexts: Option, #[arg(long)] prefix: Option, - #[arg(short)] + #[arg(long)] dflate: PathBuf, extra_files: Vec, } @@ -89,6 +89,7 @@ async fn main() -> Result<()> { target.close().await?; // TODO: Quick hack to unpack and repack file + // We use our tool, dflate, to quickly create a sparse, deterministic, tar. // If dflate is ever misbehaving, it can be replaced with: // tar cf --sort=name --owner=root:0 --group=root:0 --mtime="UTC 1970-01-01 00:00:00" --sparse --hole-detection=raw -C let temp_tar = temp_dir.path().join("partition.tar"); diff --git a/toolchains/sysimage/build_disk_image.py b/toolchains/sysimage/build_disk_image.py index db9eb843361..61e4ed8d790 100755 --- a/toolchains/sysimage/build_disk_image.py +++ b/toolchains/sysimage/build_disk_image.py @@ -145,7 +145,7 @@ def main(): nargs="*", help="Partitions to write. These must match the CSV partition table entries.", ) - parser.add_argument("-d", "--dflate", help="Path to dflate", type=str) + parser.add_argument("--dflate", help="Path to our dflate tool", type=str) args = parser.parse_args(sys.argv[1:]) @@ -187,6 +187,7 @@ def main(): if args.expanded_size: subprocess.run(["truncate", "--size", args.expanded_size, disk_image], check=True) + # We use our tool, dflate, to quickly create a sparse, deterministic, tar. # If dflate is ever misbehaving, it can be replaced with: # tar cf --sort=name --owner=root:0 --group=root:0 --mtime="UTC 1970-01-01 00:00:00" --sparse --hole-detection=raw -C subprocess.run( diff --git a/toolchains/sysimage/build_ext4_image.py b/toolchains/sysimage/build_ext4_image.py index 356490efecd..9e42e2452dc 100755 --- a/toolchains/sysimage/build_ext4_image.py +++ b/toolchains/sysimage/build_ext4_image.py @@ -158,7 +158,7 @@ def make_argparser(): default=[], help="Directories to be cleared from the tree; expects a list of full paths", ) - parser.add_argument("-d", "--dflate", help="Path to dflate tool", type=str, required=True) + parser.add_argument("--dflate", help="Path to our dflate tool", type=str, required=True) parser.add_argument("--diroid", help="Path to our diroid tool", type=str, required=True) return parser @@ -220,6 +220,7 @@ def main(): subprocess.run(['sync'], check=True) + # We use our tool, dflate, to quickly create a sparse, deterministic, tar. # If dflate is ever misbehaving, it can be replaced with: # tar cf --sort=name --owner=root:0 --group=root:0 --mtime="UTC 1970-01-01 00:00:00" --sparse --hole-detection=raw -C temp_tar = os.path.join(tmpdir, "partition.tar") diff --git a/toolchains/sysimage/build_fat32_image.py b/toolchains/sysimage/build_fat32_image.py index 3eca69f95d2..d4dbf0dc2e3 100755 --- a/toolchains/sysimage/build_fat32_image.py +++ b/toolchains/sysimage/build_fat32_image.py @@ -105,7 +105,7 @@ def main(): nargs="*", help="Extra files to install; expects list of sourcefile:targetfile:mode", ) - parser.add_argument("-d", "--dflate", help="Path to dflate", type=str) + parser.add_argument("--dflate", help="Path to our dflate tool", type=str) args = parser.parse_args(sys.argv[1:]) @@ -142,6 +142,7 @@ def path_transform(path, limit_prefix=limit_prefix): install_extra_files(image_file, extra_files, path_transform) + # We use our tool, dflate, to quickly create a sparse, deterministic, tar. # If dflate is ever misbehaving, it can be replaced with: # tar cf --sort=name --owner=root:0 --group=root:0 --mtime="UTC 1970-01-01 00:00:00" --sparse --hole-detection=raw -C temp_tar = os.path.join(tmpdir, "partition.tar") diff --git a/toolchains/sysimage/build_lvm_image.py b/toolchains/sysimage/build_lvm_image.py index 2dc4a47c416..aee49c0dfd7 100755 --- a/toolchains/sysimage/build_lvm_image.py +++ b/toolchains/sysimage/build_lvm_image.py @@ -37,7 +37,7 @@ def main(): nargs="*", help="Partitions to write. These must match the CSV volume table entries.", ) - parser.add_argument("-d", "--dflate", help="Path to dflate", type=str) + parser.add_argument("--dflate", help="Path to our dflate tool", type=str) args = parser.parse_args(sys.argv[1:]) @@ -78,6 +78,7 @@ def main(): else: print("No partition file for '%s' found, leaving empty" % name) + # We use our tool, dflate, to quickly create a sparse, deterministic, tar. # If dflate is ever misbehaving, it can be replaced with: # tar cf --sort=name --owner=root:0 --group=root:0 --mtime="UTC 1970-01-01 00:00:00" --sparse --hole-detection=raw -C temp_tar = os.path.join(tmpdir, "partition.tar") diff --git a/toolchains/sysimage/build_upgrade_image.py b/toolchains/sysimage/build_upgrade_image.py index acd91998665..e1fceca588a 100755 --- a/toolchains/sysimage/build_upgrade_image.py +++ b/toolchains/sysimage/build_upgrade_image.py @@ -20,7 +20,7 @@ def main(): parser.add_argument("-b", "--boot", help="The (tzst) boot filesystem image", type=str) parser.add_argument("-r", "--root", help="The (tzst) root filesystem image", type=str) parser.add_argument("-v", "--versionfile", help="The version file in the upgrade image", type=str) - parser.add_argument("-d", "--dflate", help="Path to dflate", type=str) + parser.add_argument("--dflate", help="Path to our dflate tool", type=str) args = parser.parse_args(sys.argv[1:]) @@ -41,6 +41,7 @@ def main(): version_path = os.path.join(tmpdir, "VERSION.TXT") shutil.copy(version_file, version_path, follow_symlinks=True) + # We use our tool, dflate, to quickly create a sparse, deterministic, tar. # If dflate is ever misbehaving, it can be replaced with: # tar cf --sort=name --owner=root:0 --group=root:0 --mtime="UTC 1970-01-01 00:00:00" --sparse --hole-detection=raw -C subprocess.run( diff --git a/toolchains/sysimage/build_vfat_image.py b/toolchains/sysimage/build_vfat_image.py index 9ca70dd6609..5bad52ec19e 100755 --- a/toolchains/sysimage/build_vfat_image.py +++ b/toolchains/sysimage/build_vfat_image.py @@ -104,7 +104,7 @@ def main(): nargs="*", help="Extra files to install; expects list of sourcefile:targetfile:mode", ) - parser.add_argument("-d", "--dflate", help="Path to dflate", type=str) + parser.add_argument("--dflate", help="Path to our dflate tool", type=str) args = parser.parse_args(sys.argv[1:]) @@ -138,6 +138,7 @@ def path_transform(path, limit_prefix=limit_prefix): install_extra_files(image_file, extra_files, path_transform) + # We use our tool, dflate, to quickly create a sparse, deterministic, tar. # If dflate is ever misbehaving, it can be replaced with: # tar cf --sort=name --owner=root:0 --group=root:0 --mtime="UTC 1970-01-01 00:00:00" --sparse --hole-detection=raw -C temp_tar = os.path.join(tmpdir, "partition.tar") diff --git a/toolchains/sysimage/toolchain.bzl b/toolchains/sysimage/toolchain.bzl index 3d3a689c346..80509fc5218 100644 --- a/toolchains/sysimage/toolchain.bzl +++ b/toolchains/sysimage/toolchain.bzl @@ -162,7 +162,7 @@ def _vfat_image_impl(ctx): ctx.attr.partition_size, "-p", ctx.attr.subdir, - "-d", + "--dflate", dflate.path, ] @@ -226,7 +226,7 @@ def _fat32_image_impl(ctx): ctx.attr.partition_size, "-p", ctx.attr.subdir, - "-d", + "--dflate", dflate.path, ] @@ -297,7 +297,7 @@ def _ext4_image_impl(ctx): ctx.attr.subdir, "--diroid", diroid.path, - "-d", + "--dflate", dflate.path, ] if len(ctx.files.file_contexts) > 0: @@ -362,7 +362,7 @@ def _inject_files_impl(ctx): ctx.files.base[0].path, "--output", out.path, - "-d", + "--dflate", dflate.path, ] @@ -429,7 +429,7 @@ def _disk_image_impl(ctx): for p in partitions: partition_files.append(p.path) - args = ["-p", in_layout.path, "-o", out.path, "-d", dflate.path] + args = ["-p", in_layout.path, "-o", out.path, "--dflate", dflate.path] if expanded_size: args += ["-s", expanded_size] @@ -483,7 +483,7 @@ def _lvm_image_impl(ctx): for p in partitions: partition_files.append(p.path) - args = ["-v", in_layout.path, "-n", vg_name, "-u", vg_uuid, "-p", pv_uuid, "-o", out.path, "-d", dflate.path] + args = ["-v", in_layout.path, "-n", vg_name, "-u", vg_uuid, "-p", pv_uuid, "-o", out.path, "--dflate", dflate.path] args += partition_files @@ -533,7 +533,7 @@ def _upgrade_image_impl(ctx): ctx.actions.run_shell( inputs = [in_boot_partition, in_root_partition, in_version_file], outputs = [out], - command = "python3 %s -b %s -r %s -v %s -o %s -d %s" % ( + command = "python3 %s -b %s -r %s -v %s -o %s --dflate %s" % ( tool_file.path, in_boot_partition.path, in_root_partition.path, diff --git a/toolchains/sysimage/verity_sign.py b/toolchains/sysimage/verity_sign.py index 0e3edfff0ff..7dba6a4b31b 100755 --- a/toolchains/sysimage/verity_sign.py +++ b/toolchains/sysimage/verity_sign.py @@ -36,7 +36,7 @@ def main(): type=int, default=10 * 1024 * 1024 * 1024 - 128 * 1024 * 1024, ) - parser.add_argument("-d", "--dflate", help="Path to dflate", type=str) + parser.add_argument("--dflate", help="Path to our dflate tool", type=str) args = parser.parse_args(sys.argv[1:]) @@ -88,6 +88,7 @@ def main(): with open(args.root_hash, "w") as f: f.write(root_hash + "\n") + # We use our tool, dflate, to quickly create a sparse, deterministic, tar. # If dflate is ever misbehaving, it can be replaced with: # tar cf --sort=name --owner=root:0 --group=root:0 --mtime="UTC 1970-01-01 00:00:00" --sparse --hole-detection=raw -C temp_tar = os.path.join(tmpdir, "partition.tar")