Skip to content

Commit 40c2268

Browse files
committed
Add workflow doing comparative testing of toolchain branches across multiple targets
1 parent 634ad0d commit 40c2268

18 files changed

+430
-125
lines changed

.github/scripts/binutils/build.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ cd $BINUTILS_BUILD_PATH
99

1010
if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$BINUTILS_BUILD_PATH/Makefile" ]]; then
1111
echo "::group::Configure binutils"
12-
rm -rf $BINUTILS_BUILD_PATH/*
12+
$ROOT_PATH/.github/scripts/binutils/delete-build.sh
1313

1414
if [[ "$DEBUG" = 1 ]]; then
1515
HOST_OPTIONS="$HOST_OPTIONS \
@@ -67,7 +67,7 @@ if [[ "$RUN_INSTALL" = 1 ]]; then
6767
echo "::group::Install binutils"
6868
make install
6969
if [[ "$DELETE_BUILD" = 1 ]]; then
70-
rm -rf $BINUTILS_BUILD_PATH
70+
$ROOT_PATH/.github/scripts/binutils/delete-build.sh
7171
fi
7272
echo "::endgroup::"
7373
fi
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#!/bin/bash
22

3-
source `dirname ${BASH_SOURCE[0]}`/config.sh
3+
source `dirname ${BASH_SOURCE[0]}`/../config.sh
44

5-
rm -rf $BINUTILS_BUILD_PATH
5+
BINUTILS_BUILD_PATH=$BUILD_PATH/binutils
6+
7+
echo "::group::Delete binutils build"
8+
rm -rf $BINUTILS_BUILD_PATH/*
9+
echo "::endgroup::"
10+
11+
echo 'Success!'

.github/scripts/build.sh

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,20 @@ if [[ "$PLATFORM" =~ cygwin ]]; then
4949
$ROOT_PATH/.github/scripts/toolchain/build-cygwin.sh 1
5050
fi
5151

52-
$ROOT_PATH/.github/scripts/toolchain/build-gcc.sh
53-
54-
if [[ "$PLATFORM" =~ (mingw|cygwin) ]]; then
55-
$ROOT_PATH/.github/scripts/toolchain/build-mingw.sh
52+
if [[ "$TEST" = 1 ]]; then
53+
DELETE_BUILD=0 \
54+
$ROOT_PATH/.github/scripts/toolchain/build-gcc.sh
55+
else
56+
$ROOT_PATH/.github/scripts/toolchain/build-gcc.sh
5657
fi
57-
if [[ "$PLATFORM" =~ cygwin ]]; then
58-
$ROOT_PATH/.github/scripts/toolchain/build-cygwin.sh 2
58+
59+
if [[ "$TEST" = 0 ]]; then
60+
if [[ "$PLATFORM" =~ (mingw|cygwin) ]]; then
61+
$ROOT_PATH/.github/scripts/toolchain/build-mingw.sh
62+
fi
63+
if [[ "$PLATFORM" =~ cygwin ]]; then
64+
$ROOT_PATH/.github/scripts/toolchain/build-cygwin.sh 2
65+
fi
5966
fi
6067

6168
if [[ "$CCACHE" = 1 ]]; then

.github/scripts/config.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ else
4040
fi
4141

4242
PROCESSOR=$(uname --processor)
43-
BUILD=${BUILD:-$PROCESSOR-pc-linux-gnu}
44-
HOST=${HOST:-$PROCESSOR-pc-linux-gnu}
43+
BUILD=${BUILD:-$PROCESSOR-linux-gnu}
44+
HOST=${HOST:-$PROCESSOR-linux-gnu}
4545
TARGET=$ARCH-$PLATFORM
4646
TOOLCHAIN_NAME=${TOOLCHAIN_NAME:-$ARCH-$PLATFORM-$CRT}
4747

@@ -105,6 +105,7 @@ else
105105
fi
106106

107107
DEBUG=${DEBUG:-0} # Enable debug build.
108+
TEST=${TEST:-0} # Enable build for testing.
108109
CCACHE=${CCACHE:-0} # Enable usage of ccache.
109110
RUN_BOOTSTRAP=${RUN_BOOTSTRAP:-0} # Bootstrap dependencies during the build.
110111
UPDATE_SOURCES=${UPDATE_SOURCES:-0} # Update source code repositories.

.github/scripts/get-cache-keys.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ GCC_SHA=$($ROOT_PATH/.github/scripts/get-repository-sha.sh $GCC_REPO $GCC_BRANCH
88
MINGW_SHA=$($ROOT_PATH/.github/scripts/get-repository-sha.sh $MINGW_REPO $MINGW_BRANCH)
99
BINUTILS_SCRIPTS_SHA=$($ROOT_PATH/.github/scripts/get-files-sha.sh $ROOT_PATH $ROOT_PATH/.github/scripts/binutils)
1010
TOOLCHAIN_SCRIPTS_SHA=$($ROOT_PATH/.github/scripts/get-files-sha.sh $ROOT_PATH $ROOT_PATH/.github/scripts/toolchain)
11+
TIMESTAMP=$(date -u --iso-8601=seconds)
1112

13+
echo "timestamp=$TIMESTAMP" >> "$GITHUB_OUTPUT"
1214
echo "toolchain-cache-key=$TOOLCHAIN_NAME-toolchain-$WORKFLOW_SHA-$BINUTILS_SHA-$GCC_SHA-$MINGW_SHA-$BINUTILS_SCRIPTS_SHA-$TOOLCHAIN_SCRIPTS_SHA" >> "$GITHUB_OUTPUT"
1315
echo "runtime-cache-key=$TOOLCHAIN_NAME-runtime-$WORKFLOW_SHA-$BINUTILS_SHA-$GCC_SHA-$MINGW_SHA-$BINUTILS_SCRIPTS_SHA-$TOOLCHAIN_SCRIPTS_SHA" >> "$GITHUB_OUTPUT"
14-
echo "ccache-key=$TARGET-ccache-$(date -u --iso-8601=seconds)" >> "$GITHUB_OUTPUT"
16+
echo "ccache-key=$TARGET-ccache-$TIMESTAMP" >> "$GITHUB_OUTPUT"
1517
echo "ccache-restore-keys=$TARGET-ccache-" >> "$GITHUB_OUTPUT"

.github/scripts/get-paths.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/bin/bash
2+
3+
source `dirname ${BASH_SOURCE[0]}`/config.sh
4+
5+
echo "root-path-env=$ROOT_PATH" >> $GITHUB_OUTPUT
6+
echo "build-path-env=$BUILD_PATH" >> $GITHUB_OUTPUT
7+
echo "ccache-dir-path-env=$CCACHE_DIR_PATH" >> $GITHUB_OUTPUT
8+
echo "artifact-path-env=$ARTIFACT_PATH" >> $GITHUB_OUTPUT
9+
10+
if [ -x "$(command -v wslpath)" ]; then
11+
echo "root-path-host=`wslpath -w $ROOT_PATH`" >> $GITHUB_OUTPUT
12+
echo "build-path-host=`wslpath -w $BUILD_PATH`" >> $GITHUB_OUTPUT
13+
echo "ccache-dir-path-host=`wslpath -w $CCACHE_DIR_PATH`" >> $GITHUB_OUTPUT
14+
echo "artifact-path-host=`wslpath -w $ARTIFACT_PATH`" >> $GITHUB_OUTPUT
15+
else
16+
echo "root-path-host=$ROOT_PATH" >> $GITHUB_OUTPUT
17+
echo "build-path-host=$BUILD_PATH" >> $GITHUB_OUTPUT
18+
echo "ccache-dir-path-host=$CCACHE_DIR_PATH" >> $GITHUB_OUTPUT
19+
echo "artifact-path-host=$ARTIFACT_PATH" >> $GITHUB_OUTPUT
20+
fi

.github/scripts/toolchain/build-gcc.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ cd $GCC_BUILD_PATH
99

1010
if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$GCC_BUILD_PATH/Makefile" ]]; then
1111
echo "::group::Configure GCC"
12-
rm -rf $GCC_BUILD_PATH/*
12+
$ROOT_PATH/.github/scripts/toolchain/delete-gcc-build.sh
1313

1414
if [[ "$DEBUG" = 1 ]]; then
1515
HOST_OPTIONS="$HOST_OPTIONS \
@@ -127,7 +127,7 @@ if [[ "$RUN_INSTALL" = 1 ]]; then
127127
echo "::group::Install GCC"
128128
make install
129129
if [[ "$DELETE_BUILD" = 1 ]]; then
130-
rm -rf $GCC_BUILD_PATH
130+
$ROOT_PATH/.github/scripts/toolchain/delete-gcc-build.sh
131131
fi
132132
echo "::endgroup::"
133133
fi

.github/scripts/toolchain/compare-gcc-results.sh

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,31 @@
22

33
source `dirname ${BASH_SOURCE[0]}`/../config.sh
44

5-
BASELINE_TAG=$1
6-
TEST_TAG=$2
7-
BASELINE_PATH=$ARTIFACT_PATH/gcc-tests-$BASELINE_TAG
8-
TEST_PATH=$ARTIFACT_PATH/gcc-tests-$TEST_TAG
9-
RESULTS_PATH=$ARTIFACT_PATH/gcc-tests-results
5+
BASELINE_PATH=$1
6+
CHANGES_PATH=$2
7+
RESULTS_PATH=$3
108

119
mkdir -p $RESULTS_PATH
1210

1311
echo "::group::Compare GCC tests results"
14-
for TEST_FILE in $TEST_PATH/*.sum; do
15-
BASELINE_FIILE=$BASELINE_PATH/`basename $TEST_FILE`
16-
$SOURCE_PATH/gcc/contrib/compare_tests $BASELINE_FIILE $TEST_FILE > \
17-
$RESULTS_PATH/`basename $TEST_FILE .sum`.diff && true
12+
for CHANGES_FILE in $CHANGES_PATH/*.sum; do
13+
FILE=`basename $CHANGES_FILE`
14+
BASELINE_FILE=$BASELINE_PATH/$FILE
15+
RESULT_FILE=${FILE%.sum}.diff
16+
$SOURCE_PATH/gcc/contrib/compare_tests $BASELINE_FILE $CHANGES_FILE > \
17+
$RESULTS_PATH/$RESULT_FILE && true
1818
done
1919
echo "::endgroup::"
2020

21+
echo "::group::Create GCC tests results summary"
22+
rm -rf $RESULTS_PATH/summary.md
23+
SUMMARY_FILE=$RESULTS_PATH/summary.md
24+
for RESULT_FILE in $RESULTS_PATH/*.diff; do
25+
echo "### Test results for \`$(basename $RESULT_FILE)\`" >> $SUMMARY_FILE
26+
echo "" >> $SUMMARY_FILE
27+
echo "\`\`\`" >> $SUMMARY_FILE
28+
cat $RESULT_FILE >> $SUMMARY_FILE
29+
echo "\`\`\`" >> $SUMMARY_FILE
30+
echo "" >> $SUMMARY_FILE
31+
done
2132
echo 'Success!'

.github/scripts/toolchain/create-gcc-summary.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ print_summary() {
2424
fi
2525

2626
echo "### $TITLE"
27+
echo ""
2728
echo "| Metric | Count |"
2829
echo "|-----------------------|-----------------------|"
2930
echo "| Expected passes | $EXPECTED_PASSES |"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash
2+
3+
source `dirname ${BASH_SOURCE[0]}`/../config.sh
4+
5+
GCC_BUILD_PATH=$BUILD_PATH/gcc
6+
7+
echo "::group::Delete GCC build"
8+
rm -rf $GCC_BUILD_PATH/*
9+
echo "::endgroup::"
10+
11+
echo 'Success!'

0 commit comments

Comments
 (0)