Skip to content
Open
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
21 changes: 19 additions & 2 deletions twoliter/embedded/rpm2img
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ rpm -iv --ignorearch --root "${ROOT_MOUNT}" "${PACKAGE_DIR}"/*.rpm

# Inventory installed packages.
INVENTORY_QUERY="\{\"Name\":\"%{NAME}\"\
,\"SourcePackage\":\"%{SOURCERPM}\"\
,\"Publisher\":\"Bottlerocket\"\
,\"Version\":\"%{Version}\"\
,\"Release\":\"%{Release}\"\
Expand All @@ -186,6 +187,22 @@ INVENTORY_DATA="$(jq --raw-output . <<<"${installed_rpms[@]}")"
# Sort by package name and add 'Content' as top-level.
INVENTORY_DATA="$(jq --slurp 'sort_by(.Name)' <<<"${INVENTORY_DATA}" | jq '{"Content": .}')"

INVENTORY_BEFORE_PARENTS="$(jq '.Content | length' <<<"${INVENTORY_DATA}")"
INVENTORY_DATA="$(jq '
.Content |= (
. + map(
(.Version) as $v | (.Release) as $r | (.SourcePackage | sub("-" + $v + "-" + $r + "\\.src\\.rpm$";"")) as $p |
. + {Name: $p, Summary: ($p + " (source package)")}
)
| unique_by(.Name)
| map(del(.SourcePackage))
| sort_by(.Name)
)
' <<<"${INVENTORY_DATA}")"

INVENTORY_AFTER_PARENTS="$(jq '.Content | length' <<<"${INVENTORY_DATA}")"
ADDED_PARENTS=$((INVENTORY_AFTER_PARENTS - INVENTORY_BEFORE_PARENTS))

# Iterate through all kits used to build this variant.
EXTERNAL_KIT_METADATA_PATH="${EXTERNAL_KITS_PATH}/external-kit-metadata.json"
mapfile -t kits < <(jq -r ".kit[].name" "${EXTERNAL_KIT_METADATA_PATH}")
Expand Down Expand Up @@ -239,8 +256,8 @@ done
# Verify we successfully inventoried some RPMs.
INVENTORY_COUNT="$(jq '.Content | length' <<<"${INVENTORY_DATA}")"
RPM_COUNT="$(find "${PACKAGE_DIR}" -maxdepth 1 -type f -name '*.rpm' | wc -l)"
if [[ "${INVENTORY_COUNT}" -ne "${RPM_COUNT}" ]]; then
echo "Inventory of RPMs does not match what was expected: '${INVENTORY_COUNT}/${RPM_COUNT}'" >&2
if [[ "${INVENTORY_COUNT}" -ne "$((RPM_COUNT + ADDED_PARENTS))" ]]; then
echo "Inventory of RPMs does not match what was expected: '${INVENTORY_COUNT}/$((RPM_COUNT + ADDED_PARENTS))'" >&2
exit 1
fi
if grep -q "bottlerocket-release" <<<"${INVENTORY_DATA}"; then
Expand Down
Loading