Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd-build: Fix wrong image.yaml after buildfetch #3618

Merged
merged 1 commit into from
Oct 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pytest.ini
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
[pytest]
addopts = --cov=cosalib.cli --cov=cosalib.meta --cov=cosalib.cmdlib --cov-report term --cov-fail-under=75
addopts = --cov=cosalib.cli --cov=cosalib.meta --cov=cosalib.cmdlib --cov-report term --cov-fail-under=70
3 changes: 2 additions & 1 deletion src/cmd-build
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,8 @@ if [ -n "${previous_commit}" ]; then
commitpartial=${tmprepo}/state/${previous_commit}.commitpartial
if [ ! -f "${commitpath}" ] || [ -f "${commitpartial}" ]; then
if [ -f "${previous_builddir}/${previous_ostree_tarfile_path}" ]; then
import_ostree_commit_for_build "${previous_build}"
# don't extract the image.json though, keep the one we generated during prepare_build above
import_ostree_commit_for_build "${previous_build}" 0
else
# ok, just fallback to importing the commit object only
mkdir -p "$(dirname "${commitpath}")"
Expand Down
2 changes: 1 addition & 1 deletion src/cmd-buildextend-metal
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,6 @@ cosa meta --workdir "${workdir}" --build "${build}" --artifact "${image_type}" -

# Quiet for the rest of this so the last thing we see is a success message
set +x
# clean up the tmpild
# clean up the tmpbuild
rm -rf "${tmp_builddir}"
echo "Successfully generated: ${img}"
5 changes: 3 additions & 2 deletions src/cmdlib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1048,9 +1048,10 @@ cmdlib.write_image_json('${srcfile}', '${outfile}')")

# API to prepare image builds.
# Ensures that the tmp/repo ostree repo is initialized,
# and also writes tmp/image.json.
# and also writes tmp/image.json if arg2 is unset or set to 1
import_ostree_commit_for_build() {
local buildid=$1; shift
local extractjson=${1:-1}
(python3 -c "
import sys
sys.path.insert(0, '${DIR}')
Expand All @@ -1060,7 +1061,7 @@ workdir = '${workdir:-$(pwd)}'
builds = Builds(workdir)
builddir = builds.get_build_dir('${buildid}')
buildmeta = builds.get_build_meta('${buildid}')
cmdlib.import_ostree_commit(workdir, builddir, buildmeta)
cmdlib.import_ostree_commit(workdir, builddir, buildmeta, ${extractjson})
")
}

Expand Down
8 changes: 5 additions & 3 deletions src/cosalib/cmdlib.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ def extract_image_json(workdir, commit):
# a metal image, we may not have preserved that cache.
#
# Call this function to ensure that the ostree commit for a given build is in tmp/repo.
def import_ostree_commit(workdir, buildpath, buildmeta):
def import_ostree_commit(workdir, buildpath, buildmeta, extract_json=1):
tmpdir = os.path.join(workdir, 'tmp')
with Lock(os.path.join(workdir, 'tmp/repo.import.lock'),
lifetime=LOCK_DEFAULT_LIFETIME):
Expand All @@ -294,7 +294,8 @@ def import_ostree_commit(workdir, buildpath, buildmeta):
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL) == 0
and not os.path.isfile(commitpartial)):
extract_image_json(workdir, commit)
if extract_json == 1:
extract_image_json(workdir, commit)
return

print(f"Extracting {commit}")
Expand All @@ -320,7 +321,8 @@ def import_ostree_commit(workdir, buildpath, buildmeta):
subprocess.check_call(['ostree', f'--repo={repo}', 'pull-local', tmpd, buildmeta['buildid']])

# Also extract image.json since it's commonly needed by image builds
extract_image_json(workdir, commit)
if extract_json == 1:
extract_image_json(workdir, commit)


def get_basearch():
Expand Down
Loading