summaryrefslogtreecommitdiff
path: root/arch/s390/self-hosted-builder/fs/usr/bin/entrypoint
blob: eb8772becf2eb4c34305187651b88e940aae171b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash

#
# Container entrypoint that waits for all spawned processes.
#

set -e -u

# Create a FIFO and start reading from its read end.
tempdir=$(mktemp -d "/tmp/done.XXXXXXXXXX")
trap 'rm -r "$tempdir"' EXIT
done="$tempdir/pipe"
mkfifo "$done"
cat "$done" & waiter=$!

# Start the workload. Its descendants will inherit the FIFO's write end.
status=0
if [ "$#" -eq 0 ]; then
    bash 9>"$done" || status=$?
else
    "$@" 9>"$done" || status=$?
fi

# When the workload and all of its descendants exit, the FIFO's write end will
# be closed and `cat "$done"` will exit. Wait until it happens. This is needed
# in order to handle SelfUpdater, which the workload may start in background
# before exiting.
wait "$waiter"

exit "$status"