Skip to content

Commit

Permalink
cmdlib: consistently commit layers with same options
Browse files Browse the repository at this point in the history
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: openshift/os#712
Fixes: #2603
  • Loading branch information
jlebon authored and cgwalters committed Feb 10, 2022
1 parent 0659ef2 commit 3fac918
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions src/cmdlib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
}
Expand Down Expand Up @@ -431,9 +437,9 @@ EOF
# available in content_sets.yaml. The mapped repos are then available in content_manifest.json
# Feature: https://issues.redhat.com/browse/GRPA-3731
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

Expand All @@ -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
Expand Down

0 comments on commit 3fac918

Please sign in to comment.