blob: b554151091f436ae8c0431313e917013578a57c2 (
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#! /bin/bash
# Copyright (c) 2024 Ruby developers. All rights reserved.
#
# This file is a part of the programming language Ruby. Permission is hereby
# granted, to either redistribute and/or modify this file, provided that the
# conditions mentioned in the file COPYING are met. Consult the file for
# details.
grouped()
{
echo "::group::${@}"
"${@}"
echo "::endgroup::"
}
set -e
set -u
set -o pipefail
srcdir="/github/workspace/src"
builddir="$(mktemp -dt)"
export GITHUB_WORKFLOW='Compilations'
export CONFIGURE_TTY='never'
export RUBY_DEBUG='ci rgengc'
export RUBY_TESTOPTS='-q --color=always --tty=no'
export RUBY_DEBUG_COUNTER_DISABLE='1'
export GNUMAKEFLAGS="-j$((1 + $(nproc)))"
case "x${INPUT_ENABLE_SHARED}" in
x | xno | xfalse )
enable_shared='--disable-shared'
;;
*)
enable_shared='--enable-shared'
;;
esac
pushd ${builddir}
grouped git config --global --add safe.directory ${srcdir}
grouped ${srcdir}/configure \
-C \
--with-gcc="${INPUT_WITH_GCC}" \
--enable-debug-env \
--disable-install-doc \
--with-ext=-test-/cxxanyargs,+ \
--without-git \
${enable_shared} \
${INPUT_APPEND_CONFIGURE} \
CFLAGS="${INPUT_CFLAGS}" \
CXXFLAGS="${INPUT_CXXFLAGS}" \
optflags="${INPUT_OPTFLAGS}" \
cppflags="${INPUT_CPPFLAGS}" \
debugflags='-ggdb3' # -g0 disables backtraces when SEGV. Do not set that.
popd
if [[ -n "${INPUT_STATIC_EXTS}" ]]; then
echo "::group::ext/Setup"
set -x
mkdir ${builddir}/ext
(
for ext in ${INPUT_STATIC_EXTS}; do
echo "${ext}"
done
) >> ${builddir}/ext/Setup
set +x
echo "::endgroup::"
fi
if [ -n "$INPUT_TEST_ALL" ]; then
tests=" -- $INPUT_TEST_ALL"
else
tests=" -- ruby -ext-"
fi
pushd ${builddir}
grouped make showflags
grouped make all
# grouped make install
# Run only `make test` by default. Run other tests if specified.
grouped make test
if [[ -n "$INPUT_CHECK" ]]; then grouped make test-tool; fi
if [[ -n "$INPUT_CHECK" || -n "$INPUT_TEST_ALL" ]]; then grouped make test-all TESTS="$tests"; fi
if [[ -n "$INPUT_CHECK" || -n "$INPUT_TEST_SPEC" ]]; then grouped env CHECK_LEAKS=true make test-spec MSPECOPT="$INPUT_TEST_SPEC"; fi
|