|
117 | 117 | . "${BUILD_LIBRARY_DIR}/toolchain_util.sh" || exit 1
|
118 | 118 | . "${BUILD_LIBRARY_DIR}/board_options.sh" || exit 1
|
119 | 119 | . "${BUILD_LIBRARY_DIR}/test_image_content.sh" || exit 1
|
| 120 | +. "${BUILD_LIBRARY_DIR}/extra_sysexts.sh" || exit 1 |
120 | 121 |
|
121 | 122 | # Setup all the emerge command/flags.
|
122 | 123 | EMERGE_FLAGS=( --update --deep --newuse --verbose --backtrack=30 --select )
|
@@ -285,6 +286,48 @@ export KBUILD_BUILD_HOST="${BUILD_HOST:-pony-truck.infra.kinvolk.io}"
|
285 | 286 | info "Merging board packages now"
|
286 | 287 | sudo -E "${EMERGE_CMD[@]}" "${EMERGE_FLAGS[@]}" "$@"
|
287 | 288 |
|
| 289 | +info "Merging sysext packages now" |
| 290 | +for sysext in "${EXTRA_SYSEXTS[@]}"; do |
| 291 | + IFS="|" read -r SYSEXT_NAME PACKAGE_ATOMS USEFLAGS ARCHES <<< "$sysext" |
| 292 | + |
| 293 | + arch_array=("${ARCHES//,/ }") |
| 294 | + if [[ -n $ARCHES ]]; then |
| 295 | + should_skip=1 |
| 296 | + for arch in "${arch_array[@]}"; do |
| 297 | + if [[ $arch == "$ARCH" ]]; then |
| 298 | + should_skip=0 |
| 299 | + fi |
| 300 | + done |
| 301 | + if [[ $should_skip -eq 1 ]]; then |
| 302 | + continue |
| 303 | + fi |
| 304 | + fi |
| 305 | + |
| 306 | + |
| 307 | + info "Building packages for $SYSEXT_NAME sysext with USE=$USEFLAGS" |
| 308 | + IFS=, |
| 309 | + for package in $PACKAGE_ATOMS; do |
| 310 | + # --buildpkgonly does not install dependencies, so we install them |
| 311 | + # separately before building the binary package |
| 312 | + sudo --preserve-env=MODULES_SIGN_KEY,MODULES_SIGN_CERT \ |
| 313 | + env USE="$USEFLAGS" FEATURES="-ebuild-locks binpkg-multi-instance" "${EMERGE_CMD[@]}" \ |
| 314 | + "${EMERGE_FLAGS[@]}" \ |
| 315 | + --quiet \ |
| 316 | + --onlydeps \ |
| 317 | + --binpkg-respect-use=y \ |
| 318 | + "${package}" |
| 319 | + |
| 320 | + sudo --preserve-env=MODULES_SIGN_KEY,MODULES_SIGN_CERT \ |
| 321 | + env USE="$USEFLAGS" FEATURES="-ebuild-locks binpkg-multi-instance" "${EMERGE_CMD[@]}" \ |
| 322 | + "${EMERGE_FLAGS[@]}" \ |
| 323 | + --quiet \ |
| 324 | + --buildpkgonly \ |
| 325 | + --binpkg-respect-use=y \ |
| 326 | + "${package}" |
| 327 | + done |
| 328 | + unset IFS |
| 329 | +done |
| 330 | + |
288 | 331 | info "Removing obsolete packages"
|
289 | 332 | # The return value of emerge is not clearly reliable. It may fail with
|
290 | 333 | # an output like following:
|
@@ -319,7 +362,16 @@ if [[ "${FLAGS_usepkgonly}" -eq "${FLAGS_FALSE}" ]]; then
|
319 | 362 | fi
|
320 | 363 | fi
|
321 | 364 |
|
322 |
| -eclean-$BOARD -d packages |
| 365 | +exclusions_file=$(mktemp) |
| 366 | +if [ ! -f "$exclusions_file" ]; then |
| 367 | + die_notrace "Couldn't create temporary exclusions file $exclusions_file for eclean" |
| 368 | +fi |
| 369 | +get_unversioned_sysext_packages > "$exclusions_file" |
| 370 | +eclean-"$BOARD" -d --exclude-file="$exclusions_file" packages |
| 371 | +rm -f "$exclusions_file" |
| 372 | +# run eclean again, this time without the --deep option, to clean old versions |
| 373 | +# of sysext packages (those, for which .ebuild file no longer exists) |
| 374 | +eclean-"$BOARD" packages |
323 | 375 |
|
324 | 376 | info "Checking build root"
|
325 | 377 | test_image_content "${BOARD_ROOT}"
|
|
0 commit comments