cmdlib: consistently commit layers with same options
Make a helper for committing OSTree layers which contains all the
canonicalization flags. Notably `--timestamp` which ensures that we get
a consistent checksum for the same source git commit.
Fixes:
Fixes:
@@ -263,6 +263,14 @@ prepare_build() {
export overrides_active_stamp
}
+commit_ostree_layer() {
+ local rootfs=$1; shift
+ local branch=$1; shift
+ ostree commit --repo="${tmprepo}" --tree=dir="${rootfs}" -b "${branch}" \
+ --owner-uid 0 --owner-gid 0 --no-xattrs --no-bindings --parent=none \
+ --mode-ro-executables --timestamp "${git_timestamp}" "$@"
+}
+
commit_overlay() {
local name path respath
name=$1
@@ -281,9 +289,7 @@ commit_overlay() {
# files, but we do.
touch "${TMPDIR}/overlay/statoverride"
echo -n "Committing ${name}: ${path} ... "
- ostree commit --repo="${tmprepo}" --tree=dir="${TMPDIR}/overlay" -b "${name}" \
- --owner-uid 0 --owner-gid 0 --no-xattrs --no-bindings --parent=none \
- --mode-ro-executables --timestamp "${git_timestamp}" \
+ commit_ostree_layer "${TMPDIR}/overlay" "${name}" \
--statoverride <(sed -e '/^#/d' "${TMPDIR}/overlay/statoverride") \
--skip-list <(echo /statoverride)
}
@@ -433,7 +439,7 @@ EOF
create_content_manifest "$configdir"/content_sets.yaml "${tmp_overridesdir}/contentsetrootfs/usr/share/buildinfo/content_manifest.json"
echo -n "Committing ${tmp_overridesdir}/contentsetrootfs... "
- ostree commit --repo="$tmprepo" --tree=dir="${tmp_overridesdir}"/contentsetrootfs -b contentset
+ commit_ostree_layer "${tmp_overridesdir}/contentsetrootfs" contentset
layers="${layers} contentset"
fi
@@ -448,9 +454,7 @@ EOF
if [[ -d "${rootfs_overrides}" && -n $(ls -A "${rootfs_overrides}") ]]; then
echo -n "Committing ${rootfs_overrides}... "
touch "${overrides_active_stamp}"
- ostree commit --repo="${tmprepo}" --tree=dir="${rootfs_overrides}" -b cosa-overrides-rootfs \
- --owner-uid 0 --owner-gid 0 --no-xattrs --no-bindings --parent=none \
- --timestamp "${git_timestamp}"
+ commit_ostree_layer "${rootfs_overrides}" "cosa-overrides-rootfs"
cat >> "${override_manifest}" << EOF
ostree-override-layers:
- cosa-overrides-rootfs
