@@ -8,6 +8,7 @@ shopt -qs failglob
8
8
. " ${0%/* } /partyplanner"
9
9
10
10
OUTPUT_FMT=" raw"
11
+ BUILDER_ARCH=" $( uname -m) "
11
12
12
13
for opt in " $@ " ; do
13
14
optarg=" $( expr " ${opt} " : ' [^=]*=\(.*\)' ) "
@@ -135,7 +136,38 @@ if [ "${PARTITION_PLAN}" == "split" ] ; then
135
136
--sort --print " ${DATA_IMAGE} "
136
137
fi
137
138
139
+ INSTALL_TIME=" $( date -u +%Y-%m-%dT%H:%M:%SZ) "
138
140
rpm -iv --root " ${ROOT_MOUNT} " " ${PACKAGE_DIR} " /* .rpm
141
+
142
+ # inventory installed packages
143
+ INVENTORY_QUERY=" \{\" Name\" :\" %{NAME}\"\
144
+ ,\" Publisher\" :\" Bottlerocket\"\
145
+ ,\" Version\" :\" ${VERSION_ID} \"\
146
+ ,\" Release\" :\" ${BUILD_ID} \"\
147
+ ,\" InstalledTime\" :\" ${INSTALL_TIME} \"\
148
+ ,\" ApplicationType\" :\" %{GROUP}\"\
149
+ ,\" Architecture\" :\" %{ARCH}\"\
150
+ ,\" Url\" :\" %{URL}\"\
151
+ ,\" Summary\" :\" %{Summary}\" \}\n"
152
+
153
+ mapfile -t installed_rpms <<< " $(rpm -qa --root " ${ROOT_MOUNT} " \
154
+ --queryformat " ${INVENTORY_QUERY} " )"
155
+
156
+ # wrap installed_rpms mapfile into json
157
+ INVENTORY_DATA=" $( jq --raw-output . <<< " ${installed_rpms[@]}" ) "
158
+ # replace the package architecture with the target architecture (for cross-compiled builds)
159
+ if [[ " ${BUILDER_ARCH} " != " ${ARCH} " ]]; then
160
+ INVENTORY_DATA=" $( jq --arg BUILDER_ARCH " ${BUILDER_ARCH} " --arg TARGET_ARCH " ${ARCH} " \
161
+ ' (.Architecture) |= sub($BUILDER_ARCH; $TARGET_ARCH)' <<< " ${INVENTORY_DATA}" ) "
162
+ fi
163
+ # remove the 'bottlerocket-<arch>-' prefix from package names
164
+ INVENTORY_DATA=" $( jq --arg PKG_PREFIX " bottlerocket-${ARCH} -" \
165
+ ' (.Name) |= sub($PKG_PREFIX; "")' <<< " ${INVENTORY_DATA}" ) "
166
+ # sort by package name and add 'Content' as top-level
167
+ INVENTORY_DATA=" $( jq --slurp ' sort_by(.Name)' <<< " ${INVENTORY_DATA}" | jq ' {"Content": .}' ) "
168
+ printf " %s\n" " ${INVENTORY_DATA} " > " ${ROOT_MOUNT} /usr/share/bottlerocket/application-inventory.json"
169
+
170
+ # install licenses
139
171
install -p -m 0644 /host/{COPYRIGHT,LICENSE-APACHE,LICENSE-MIT} " ${ROOT_MOUNT} " /usr/share/licenses/
140
172
mksquashfs \
141
173
" ${ROOT_MOUNT} " /usr/share/licenses \
0 commit comments