@@ -139,10 +139,19 @@ _get_sysext_arch() {
139
139
fi
140
140
}
141
141
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
+
142
151
cleanup () {
143
152
local dirs=(
144
153
" ${BUILD_DIR} /fs-root"
145
- " ${BUILD_DIR} / ${FLAGS_install_root_basename }"
154
+ " ${THE_INSTALL_ROOT } "
146
155
" ${BUILD_DIR} /workdir"
147
156
" ${BUILD_DIR} /img-rootfs"
148
157
)
185
194
186
195
mkdir " ${BUILD_DIR} /fs-root"
187
196
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 } "
189
198
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 } "
191
200
192
201
REPO_BUILD_ID=$( source " ${REPO_MANIFESTS_DIR} /version.txt" ; echo " $FLATCAR_BUILD_ID " )
193
202
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_
227
236
for package; do
228
237
echo " Installing package into sysext image: $package "
229
238
FEATURES=" -ebuild-locks binpkg-multi-instance" emerge \
230
- --root=" ${BUILD_DIR} / ${FLAGS_install_root_basename }" \
239
+ --root=" ${THE_INSTALL_ROOT } " \
231
240
--config-root=" /build/${FLAGS_board} " \
232
241
--sysroot=" /build/${FLAGS_board} " \
233
242
--usepkgonly \
@@ -243,18 +252,18 @@ export SOURCE_DATE_EPOCH=$(stat -c '%Y' "${BUILD_DIR}/fs-root/usr/lib/os-release
243
252
244
253
# Unmount in order to get rid of the overlay, but keep fs-root for
245
254
# now, so we can use selinux file contexts.
246
- umount " ${BUILD_DIR} / ${FLAGS_install_root_basename }"
255
+ umount " ${THE_INSTALL_ROOT } "
247
256
248
257
if [[ " $FLAGS_generate_pkginfo " = " ${FLAGS_TRUE} " ]] ; then
249
258
info " Creating pkginfo squashfs '${BUILD_DIR} /${SYSEXTNAME} _pkginfo.raw'"
250
259
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/"
252
261
mksquashfs " ${BUILD_DIR} /img-pkginfo" " ${BUILD_DIR} /${SYSEXTNAME} _pkginfo.raw" \
253
262
-noappend -xattrs-exclude ' ^btrfs.' -comp " ${FLAGS_compression} " ${FLAGS_mksquashfs_opts}
254
263
fi
255
264
256
265
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 } " \
258
267
equery --no-color list --format ' $cpv::$repo' ' *' > " ${BUILD_DIR} /${SYSEXTNAME} _packages.txt"
259
268
260
269
# Check if there are forbidden packages
@@ -287,7 +296,7 @@ if [[ "${FLAGS_strip_binaries}" = "${FLAGS_TRUE}" ]]; then
287
296
info " Stripping all non-stripped binaries in sysext using '${strip} '"
288
297
289
298
# 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 \{\} \; \
291
300
| awk ' /not stripped/ {print substr($1, 1, length($1)-1)}' \
292
301
| while read bin; do
293
302
info " ${strip} ${bin} "
@@ -299,41 +308,41 @@ if [[ -n "${FLAGS_manglefs_script}" ]]; then
299
308
if [[ ! -x " ${FLAGS_manglefs_script} " ]]; then
300
309
die " ${FLAGS_manglefs_script} is not executable"
301
310
fi
302
- " ${FLAGS_manglefs_script} " " ${BUILD_DIR} / ${FLAGS_install_root_basename }"
311
+ " ${FLAGS_manglefs_script} " " ${THE_INSTALL_ROOT } "
303
312
fi
304
313
305
314
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
307
316
if [[ " ${entry} " = * /usr ]]; then
308
317
continue
309
318
fi
310
319
info " Removing ${entry##*/ } "
311
320
rm -rf " ${entry} "
312
321
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"
314
323
version_field=" ${VERSION_FIELD_OVERRIDE:- VERSION_ID=${FLATCAR_VERSION_ID} } "
315
324
all_fields=(
316
325
' ID=flatcar'
317
326
" ${version_field} "
318
327
" ARCHITECTURE=${ARCH} "
319
328
)
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} "
321
330
322
331
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' \;
324
333
325
334
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)
327
336
if [[ -n " ${invalid_files} " ]]; then
328
337
die " Invalid file ownership: ${invalid_files} "
329
338
fi
330
339
331
340
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 } "
333
342
umount " ${BUILD_DIR} /fs-root"
334
343
335
344
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" \
337
346
-noappend -xattrs-exclude ' ^btrfs.' -comp " ${FLAGS_compression} " ${FLAGS_mksquashfs_opts}
338
347
rm -rf " ${BUILD_DIR} " /{fs-root," ${FLAGS_install_root_basename} " ,workdir}
339
348
0 commit comments