Skip to content

Commit 13a8180

Browse files
committed
build_sysext: Factor out install root to a variable
Made it easier to change its path. Signed-off-by: Krzesimir Nowak <[email protected]>
1 parent f02174d commit 13a8180

File tree

1 file changed

+25
-16
lines changed

1 file changed

+25
-16
lines changed

build_sysext

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,19 @@ _get_sysext_arch() {
139139
fi
140140
}
141141

142+
if [[ ${FLAGS_install_root_basename} = */* || ${FLAGS_install_root_basename} = . || ${FLAGS_install_root_basename} = .. ]]; then
143+
die "Just use a normal install root basename instead of ${FLAGS_install_root_basename@Q}, will ya?!"
144+
fi
145+
146+
# Put the custom install root directory inside the install-root
147+
# subdirectory of BUILD_DIR to avoid the accidental messing with other
148+
# directories we create inside directly inside BUILD_DIR.
149+
THE_INSTALL_ROOT=${BUILD_DIR}/install-root/${FLAGS_install_root_basename}
150+
142151
cleanup() {
143152
local dirs=(
144153
"${BUILD_DIR}/fs-root"
145-
"${BUILD_DIR}/${FLAGS_install_root_basename}"
154+
"${THE_INSTALL_ROOT}"
146155
"${BUILD_DIR}/workdir"
147156
"${BUILD_DIR}/img-rootfs"
148157
)
@@ -185,9 +194,9 @@ fi
185194

186195
mkdir "${BUILD_DIR}/fs-root"
187196
mount -rt squashfs -o loop,nodev "${FLAGS_squashfs_base}" "${BUILD_DIR}/fs-root"
188-
mkdir "${BUILD_DIR}/${FLAGS_install_root_basename}"
197+
mkdir -p "${THE_INSTALL_ROOT}"
189198
mkdir "${BUILD_DIR}/workdir"
190-
mount -t overlay overlay -o lowerdir="${BUILD_DIR}/fs-root${pkginfo_lowerdirs}",upperdir="${BUILD_DIR}/${FLAGS_install_root_basename}",workdir="${BUILD_DIR}/workdir" "${BUILD_DIR}/${FLAGS_install_root_basename}"
199+
mount -t overlay overlay -o lowerdir="${BUILD_DIR}/fs-root${pkginfo_lowerdirs}",upperdir="${THE_INSTALL_ROOT}",workdir="${BUILD_DIR}/workdir" "${THE_INSTALL_ROOT}"
191200

192201
REPO_BUILD_ID=$(source "${REPO_MANIFESTS_DIR}/version.txt"; echo "$FLATCAR_BUILD_ID")
193202
REPO_FLATCAR_VERSION=$(source "${REPO_MANIFESTS_DIR}/version.txt"; echo "$FLATCAR_VERSION")
@@ -227,7 +236,7 @@ info "Building '${SYSEXTNAME}' squashfs with (meta-)packages '${@}' in '${BUILD_
227236
for package; do
228237
echo "Installing package into sysext image: $package"
229238
FEATURES="-ebuild-locks binpkg-multi-instance" emerge \
230-
--root="${BUILD_DIR}/${FLAGS_install_root_basename}" \
239+
--root="${THE_INSTALL_ROOT}" \
231240
--config-root="/build/${FLAGS_board}" \
232241
--sysroot="/build/${FLAGS_board}" \
233242
--usepkgonly \
@@ -243,18 +252,18 @@ export SOURCE_DATE_EPOCH=$(stat -c '%Y' "${BUILD_DIR}/fs-root/usr/lib/os-release
243252

244253
# Unmount in order to get rid of the overlay, but keep fs-root for
245254
# now, so we can use selinux file contexts.
246-
umount "${BUILD_DIR}/${FLAGS_install_root_basename}"
255+
umount "${THE_INSTALL_ROOT}"
247256

248257
if [[ "$FLAGS_generate_pkginfo" = "${FLAGS_TRUE}" ]] ; then
249258
info " Creating pkginfo squashfs '${BUILD_DIR}/${SYSEXTNAME}_pkginfo.raw'"
250259
mkdir -p "${BUILD_DIR}/img-pkginfo/var/db"
251-
cp -R "${BUILD_DIR}/${FLAGS_install_root_basename}/var/db/pkg" "${BUILD_DIR}/img-pkginfo/var/db/"
260+
cp -R "${THE_INSTALL_ROOT}/var/db/pkg" "${BUILD_DIR}/img-pkginfo/var/db/"
252261
mksquashfs "${BUILD_DIR}/img-pkginfo" "${BUILD_DIR}/${SYSEXTNAME}_pkginfo.raw" \
253262
-noappend -xattrs-exclude '^btrfs.' -comp "${FLAGS_compression}" ${FLAGS_mksquashfs_opts}
254263
fi
255264

256265
info "Writing ${SYSEXTNAME}_packages.txt"
257-
ROOT="${BUILD_DIR}/${FLAGS_install_root_basename}" PORTAGE_CONFIGROOT="${BUILD_DIR}/${FLAGS_install_root_basename}" \
266+
ROOT="${THE_INSTALL_ROOT}" PORTAGE_CONFIGROOT="${THE_INSTALL_ROOT}" \
258267
equery --no-color list --format '$cpv::$repo' '*' > "${BUILD_DIR}/${SYSEXTNAME}_packages.txt"
259268

260269
# Check if there are forbidden packages
@@ -287,7 +296,7 @@ if [[ "${FLAGS_strip_binaries}" = "${FLAGS_TRUE}" ]]; then
287296
info "Stripping all non-stripped binaries in sysext using '${strip}'"
288297

289298
# Find all non-stripped binaries, remove ':' from filepath, and strip 'em
290-
find "${BUILD_DIR}/${FLAGS_install_root_basename}" -exec file \{\} \; \
299+
find "${THE_INSTALL_ROOT}" -exec file \{\} \; \
291300
| awk '/not stripped/ {print substr($1, 1, length($1)-1)}' \
292301
| while read bin; do
293302
info " ${strip} ${bin}"
@@ -299,41 +308,41 @@ if [[ -n "${FLAGS_manglefs_script}" ]]; then
299308
if [[ ! -x "${FLAGS_manglefs_script}" ]]; then
300309
die "${FLAGS_manglefs_script} is not executable"
301310
fi
302-
"${FLAGS_manglefs_script}" "${BUILD_DIR}/${FLAGS_install_root_basename}"
311+
"${FLAGS_manglefs_script}" "${THE_INSTALL_ROOT}"
303312
fi
304313

305314
info "Removing non-/usr directories from sysext image"
306-
for entry in "${BUILD_DIR}/${FLAGS_install_root_basename}"/*; do
315+
for entry in "${THE_INSTALL_ROOT}"/*; do
307316
if [[ "${entry}" = */usr ]]; then
308317
continue
309318
fi
310319
info " Removing ${entry##*/}"
311320
rm -rf "${entry}"
312321
done
313-
mkdir -p "${BUILD_DIR}/${FLAGS_install_root_basename}/usr/lib/extension-release.d"
322+
mkdir -p "${THE_INSTALL_ROOT}/usr/lib/extension-release.d"
314323
version_field="${VERSION_FIELD_OVERRIDE:-VERSION_ID=${FLATCAR_VERSION_ID}}"
315324
all_fields=(
316325
'ID=flatcar'
317326
"${version_field}"
318327
"ARCHITECTURE=${ARCH}"
319328
)
320-
printf '%s\n' "${all_fields[@]}" >"${BUILD_DIR}/${FLAGS_install_root_basename}/usr/lib/extension-release.d/extension-release.${SYSEXTNAME}"
329+
printf '%s\n' "${all_fields[@]}" >"${THE_INSTALL_ROOT}/usr/lib/extension-release.d/extension-release.${SYSEXTNAME}"
321330

322331
info "Removing opaque directory markers to always merge all contents"
323-
find "${BUILD_DIR}/${FLAGS_install_root_basename}" -xdev -type d -exec sh -c 'if [ "$(attr -R -q -g overlay.opaque {} 2>/dev/null)" = y ]; then attr -R -r overlay.opaque {}; fi' \;
332+
find "${THE_INSTALL_ROOT}" -xdev -type d -exec sh -c 'if [ "$(attr -R -q -g overlay.opaque {} 2>/dev/null)" = y ]; then attr -R -r overlay.opaque {}; fi' \;
324333

325334
info "Checking for invalid file ownership"
326-
invalid_files=$(find "${BUILD_DIR}/${FLAGS_install_root_basename}" -user sdk -or -group sdk)
335+
invalid_files=$(find "${THE_INSTALL_ROOT}" -user sdk -or -group sdk)
327336
if [[ -n "${invalid_files}" ]]; then
328337
die "Invalid file ownership: ${invalid_files}"
329338
fi
330339

331340
info "Relabeling sysext contents"
332-
setfiles -D -E -F -r "${BUILD_DIR}/${FLAGS_install_root_basename}" -v -T 0 "${BUILD_DIR}/fs-root/usr/share/flatcar/etc/selinux/mcs/contexts/files/file_contexts" "${BUILD_DIR}/${FLAGS_install_root_basename}"
341+
setfiles -D -E -F -r "${THE_INSTALL_ROOT}" -v -T 0 "${BUILD_DIR}/fs-root/usr/share/flatcar/etc/selinux/mcs/contexts/files/file_contexts" "${THE_INSTALL_ROOT}"
333342
umount "${BUILD_DIR}/fs-root"
334343

335344
info "Creating squashfs image"
336-
mksquashfs "${BUILD_DIR}/${FLAGS_install_root_basename}" "${BUILD_DIR}/${SYSEXTNAME}.raw" \
345+
mksquashfs "${THE_INSTALL_ROOT}" "${BUILD_DIR}/${SYSEXTNAME}.raw" \
337346
-noappend -xattrs-exclude '^btrfs.' -comp "${FLAGS_compression}" ${FLAGS_mksquashfs_opts}
338347
rm -rf "${BUILD_DIR}"/{fs-root,"${FLAGS_install_root_basename}",workdir}
339348

0 commit comments

Comments
 (0)