Skip to content

Commit 0d96112

Browse files
committed
Update scripts for multiple build2 configs.
1 parent 33f4c4b commit 0d96112

4 files changed

Lines changed: 104 additions & 68 deletions

File tree

certifiable-build/scripts/build.sh

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
11
#!/bin/sh
22
set -eu
33

4-
usage() {
5-
cat <<EOF
6-
Usage: $(basename "$0") [BUILD_DIR]
7-
BUILD_DIR: Build directory (env: BUILD_DIR, default: ../<srcdir>-gcc)
8-
EOF
9-
exit 1
10-
}
4+
SCRIPT_DIR=$(CDPATH='' cd -- "$(dirname "$0")" && pwd)
5+
REPO_ROOT=$(CDPATH='' cd -- "$SCRIPT_DIR/../.." && pwd)
6+
cd "$REPO_ROOT"
117

12-
cd "$(dirname "$0")/../.." || exit 1
8+
BDEP=${BDEP:-bdep}
139

14-
echo "Building..."
15-
b
10+
"$BDEP" update -a @clang @gcc

certifiable-build/scripts/clean.sh

Lines changed: 57 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,68 @@
22
set -eu
33

44
usage() {
5+
code=${1:-1}
56
cat <<EOF
6-
Usage: $(basename "$0") [BUILD_DIR]
7-
BUILD_DIR: Build directory (env: BUILD_DIR, default: ../<srcdir>-gcc)
7+
Usage: $(basename "$0") [@clang] [@gcc] [...]
8+
9+
Cleans build artifacts for the specified bdep configurations, without
10+
removing configuration state.
11+
12+
Defaults to: @clang @gcc
13+
14+
Environment:
15+
PROJECT Project name (default: basename of repo root)
16+
BDEP bdep command (default: bdep)
17+
CONFIGS_ROOT Base configs dir (default: ../build2/configs)
818
EOF
9-
exit 1
19+
exit "$code"
1020
}
1121

12-
SRCDIR="$(basename "$(pwd)")"
13-
BUILD_DIR="${1:-${BUILD_DIR:-../$SRCDIR-gcc}}"
14-
B="${B:-b}"
22+
SCRIPT_DIR=$(CDPATH='' cd -- "$(dirname "$0")" && pwd)
23+
REPO_ROOT=$(CDPATH='' cd -- "$SCRIPT_DIR/../.." && pwd)
24+
cd "$REPO_ROOT"
25+
26+
PROJECT=${PROJECT:-$(basename "$REPO_ROOT")}
27+
BDEP=${BDEP:-bdep}
28+
CONFIGS_ROOT=${CONFIGS_ROOT:-../build2/configs}
29+
30+
case "${1:-}" in
31+
-h|--help)
32+
usage 0
33+
;;
34+
esac
35+
36+
if [ "$#" -eq 0 ]; then
37+
set -- @clang @gcc
38+
fi
39+
40+
clang_dir="${CONFIGS_ROOT}/${PROJECT}-clang"
41+
gcc_dir="${CONFIGS_ROOT}/${PROJECT}-gcc"
42+
43+
missing=""
44+
45+
for cfg in "$@"; do
46+
case "$cfg" in
47+
@clang)
48+
if [ ! -d "$clang_dir" ]; then
49+
missing="${missing} @clang(${clang_dir})"
50+
fi
51+
;;
52+
@gcc)
53+
if [ ! -d "$gcc_dir" ]; then
54+
missing="${missing} @gcc(${gcc_dir})"
55+
fi
56+
;;
57+
esac
58+
done
1559

16-
cd "$(dirname "$0")/../.." || exit 1
60+
if [ -n "$missing" ]; then
61+
echo "Warning: missing config directories:${missing}"
62+
echo "Nothing to clean for missing configs; continuing with any that exist."
63+
fi
1764

18-
[ -d "$BUILD_DIR" ] || { echo "Build directory not found. Nothing to clean."; exit 0; }
65+
echo "Cleaning build artifacts for configs: $*"
66+
# Cleans build outputs, preserves configuration state.
67+
"$BDEP" clean -a "$@"
1968

20-
echo "Cleaning build artifacts..."
21-
"$B" clean: "$BUILD_DIR"
2269
echo "Clean complete."

certifiable-build/scripts/config.sh

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,49 +2,53 @@
22
set -eu
33

44
usage() {
5+
code=${1:-1}
56
cat <<EOF
6-
Usage: $(basename "$0") [BUILD_DIR] [BUILD_TYPE] [CCACHE]
7+
Usage: $(basename "$0") [BUILD_TYPE]
78
8-
Positional args override env vars.
9+
Defaults:
10+
BUILD_TYPE: release
911
10-
BUILD_DIR: Build directory (env: BUILD_DIR, default: ../<srcdir>-gcc)
11-
BUILD_TYPE: Build type (env: BUILD_TYPE, default: release)
12-
CCACHE: Compiler cache command (env: CCACHE, default: ccache; set to "" or "false" to disable)
13-
PREFIX: Install prefix (env: PREFIX, default: /usr/local)
12+
Environment:
13+
PREFIX Install prefix (default: /usr/local)
14+
PROJECT Project name (default: basename of repo root)
15+
BDEP bdep command (default: bdep)
16+
CONFIGS_ROOT Base configs dir (default: ../build2/configs)
1417
EOF
18+
exit "$code"
1519
}
1620

1721
case "${1:-}" in
18-
-h|--help)
19-
usage
20-
exit 0
21-
;;
22+
-h|--help) usage 0 ;;
2223
esac
2324

24-
cd "$(dirname "$0")/../.." || exit 1
25-
SRCDIR="$(basename "$(pwd)")"
26-
BUILD_DIR="${1:-${BUILD_DIR:-../build2/$SRCDIR-default}}"
27-
BUILD_TYPE="${2:-${BUILD_TYPE:-release}}"
28-
CCACHE="${3:-${CCACHE:-ccache}}"
29-
PREFIX="${PREFIX:-/usr/local}"
30-
B="${B:-b}"
25+
SCRIPT_DIR=$(CDPATH='' cd -- "$(dirname "$0")" && pwd)
26+
REPO_ROOT=$(CDPATH='' cd -- "$SCRIPT_DIR/../.." && pwd)
27+
cd "$REPO_ROOT"
3128

32-
# Allow disabling ccache via CCACHE="" or CCACHE=false
33-
if [ -n "$CCACHE" ] && [ "$CCACHE" != "false" ] && command -v "$CCACHE" >/dev/null 2>&1; then
34-
CC="${CC:-cc}"
35-
export CC="$CCACHE $CC"
36-
fi
29+
PROJECT=${PROJECT:-$(basename "$REPO_ROOT")}
30+
BDEP=${BDEP:-bdep}
31+
CONFIGS_ROOT=${CONFIGS_ROOT:-../build2/configs}
32+
BUILD_TYPE=${1:-${BUILD_TYPE:-release}}
33+
PREFIX=${PREFIX:-/usr/local}
3734

38-
echo "Configuring: BUILD_DIR=$BUILD_DIR BUILD_TYPE=$BUILD_TYPE PREFIX=$PREFIX"
35+
clang_dir="${CONFIGS_ROOT}/${PROJECT}-clang"
36+
gcc_dir="${CONFIGS_ROOT}/${PROJECT}-gcc"
3937

40-
build2_config_check() {
41-
bdep config list @default > /dev/null 2>&1
42-
}
38+
mkdir -p "$clang_dir" "$gcc_dir"
39+
40+
"$BDEP" config list @clang >/dev/null 2>&1 || \
41+
"$BDEP" init -C "$clang_dir" @clang cc config.c=clang
42+
43+
"$BDEP" config list @gcc >/dev/null 2>&1 || \
44+
"$BDEP" init -C "$gcc_dir" @gcc cc config.c=gcc
45+
46+
"$BDEP" init @clang @gcc
47+
48+
"$BDEP" config set @clang \
49+
"config.config.mode=$BUILD_TYPE" \
50+
"config.install.root=$PREFIX" >/dev/null 2>&1 || true
4351

44-
if ! build2_config_check; then
45-
bdep init --wipe -C "$BUILD_DIR" \
46-
@default \
47-
cc \
48-
"config.config.mode=$BUILD_TYPE" \
49-
"config.install.root=$PREFIX"
50-
fi
52+
"$BDEP" config set @gcc \
53+
"config.config.mode=$BUILD_TYPE" \
54+
"config.install.root=$PREFIX" >/dev/null 2>&1 || true

certifiable-build/scripts/test.sh

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
#!/bin/sh
22
set -eu
33

4-
usage() {
5-
cat <<EOF
6-
Usage: $(basename "$0") [BUILD_DIR]
7-
BUILD_DIR: Build directory (env: BUILD_DIR, default: ../<srcdir>-gcc)
8-
EOF
9-
exit 1
10-
}
4+
SCRIPT_DIR=$(CDPATH='' cd -- "$(dirname "$0")" && pwd)
5+
REPO_ROOT=$(CDPATH='' cd -- "$SCRIPT_DIR/../.." && pwd)
6+
cd "$REPO_ROOT"
117

12-
cd "$(dirname "$0")/../.." || exit 1
13-
SRCDIR="$(basename "$(pwd)")"
14-
BUILD_DIR="${1:-${BUILD_DIR:-../$SRCDIR-gcc}}"
15-
B="${B:-b}"
8+
BDEP=${BDEP:-bdep}
169

17-
[ -d "$BUILD_DIR" ] || { echo "Build directory not found. Run build first."; exit 1; }
18-
19-
echo "Running tests..."
20-
"$B" test: "$BUILD_DIR"
10+
"$BDEP" test -a @clang @gcc

0 commit comments

Comments
 (0)