#!/usr/bin/env bash # SPDX-License-Identifier: LGPL-2.1-or-later # shellcheck disable=SC2064 set -eu set -o pipefail EC=0 TEMPFILE="$(mktemp)" TEMP_EXTRA_TREE="$(mktemp --directory)" trap "rm -rf '$TEMPFILE' '$TEMP_EXTRA_TREE'" EXIT # We need isc-dhcp-server to be installed for the networkd unit tests, but we don't want to # run it by default. mktemp creates the directory as 700, so change it, otherwise it will # affect the image's root folder permissions. chmod 755 "$TEMP_EXTRA_TREE" mkdir -p "$TEMP_EXTRA_TREE/etc/systemd/system/" ln -s /dev/null "$TEMP_EXTRA_TREE/etc/systemd/system/isc-dhcp-server.service" ln -s /dev/null "$TEMP_EXTRA_TREE/etc/systemd/system/isc-dhcp-server6.service" for ((i = 0; i < 5; i++)); do EC=0 (sudo python3 -m mkosi --extra-tree="$TEMP_EXTRA_TREE" "$@") |& tee "$TEMPFILE" || EC=$? if [[ $EC -eq 0 ]]; then # The command passed — let's return immediately break fi if ! grep -E "Failed to dissect image .+: Connection timed out" "$TEMPFILE"; then # The command failed for other reason than the dissect-related timeout - # let's exit with the same EC exit $EC fi # The command failed due to the dissect-related timeout — let's try again sleep 1 done exit $EC