initial buildroot for linux 5.15
This commit is contained in:
Executable
+138
@@ -0,0 +1,138 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
main() {
|
||||
local template="${1}"
|
||||
|
||||
preamble "${template}"
|
||||
gen_tests
|
||||
}
|
||||
|
||||
preamble() {
|
||||
local template="${1}"
|
||||
|
||||
cat - "${template}" <<-_EOF_
|
||||
# This file is generated; do not edit!
|
||||
# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
|
||||
|
||||
image: ${CI_JOB_IMAGE}
|
||||
|
||||
_EOF_
|
||||
}
|
||||
|
||||
gen_tests() {
|
||||
local -a basics defconfigs runtimes
|
||||
local do_basics do_defconfigs do_runtime do_testpkg
|
||||
local defconfigs_ext cfg tst
|
||||
|
||||
basics=( DEVELOPERS flake8 package )
|
||||
|
||||
defconfigs=( $(cd configs; LC_ALL=C ls -1 *_defconfig) )
|
||||
|
||||
runtimes=( $(./support/testing/run-tests -l 2>&1 \
|
||||
| sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
|
||||
| LC_ALL=C sort)
|
||||
)
|
||||
|
||||
if [ -n "${CI_COMMIT_TAG}" ]; then
|
||||
# When a tag is added to the Buildroot git tree, we want
|
||||
# to run the runtime tests and only test Qemu defconfigs.
|
||||
defconfigs=( $(cd configs; LC_ALL=C ls -1 qemu_*_defconfig) )
|
||||
do_basics=true
|
||||
do_defconfigs=base
|
||||
do_runtime=true
|
||||
elif [ "${CI_PIPELINE_SOURCE}" = "trigger" ]; then
|
||||
case "${BR_SCHEDULE_JOBS}" in
|
||||
(basic)
|
||||
do_basics=true
|
||||
do_defconfigs=check
|
||||
defconfigs_ext=_check
|
||||
;;
|
||||
(defconfig)
|
||||
do_defconfigs=base
|
||||
;;
|
||||
(runtime)
|
||||
do_runtime=true
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case "${CI_COMMIT_REF_NAME}" in
|
||||
(*-basics)
|
||||
do_basics=true
|
||||
do_defconfigs=check
|
||||
defconfigs_ext=_check
|
||||
;;
|
||||
(*-defconfigs)
|
||||
do_defconfigs=base
|
||||
;;
|
||||
(*-*_defconfig)
|
||||
defconfigs=( "${CI_COMMIT_REF_NAME##*-}" )
|
||||
do_defconfigs=base
|
||||
;;
|
||||
(*-runtime-tests)
|
||||
do_runtime=true
|
||||
;;
|
||||
(*-tests.*)
|
||||
runtimes=( $(./support/testing/run-tests -l 2>&1 \
|
||||
| sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
|
||||
| LC_ALL=C sort \
|
||||
| grep "^${CI_COMMIT_REF_NAME##*-}")
|
||||
)
|
||||
do_runtime=true
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Retrieve defconfig for test-pkg from the git commit message (if any)
|
||||
if grep -q -E '^test-pkg config:$' <<<"${CI_COMMIT_DESCRIPTION}"; then
|
||||
sed -r -n -e '/^test-pkg config:$/{:a;n;p;ba;}' \
|
||||
<<<"${CI_COMMIT_DESCRIPTION}" \
|
||||
>defconfig.frag
|
||||
if [ ! -s defconfig.frag ]; then
|
||||
printf "Empty configuration fragment.\n" >&2; exit 1
|
||||
fi
|
||||
# Use --all since we expect the user having already pre-tested the
|
||||
# new package with the default subset of toolchains.
|
||||
./utils/test-pkg \
|
||||
--all --prepare-only \
|
||||
--config-snippet defconfig.frag \
|
||||
--build-dir br-test-pkg >&2
|
||||
do_testpkg=( $(ls -1 br-test-pkg/*/.config 2>/dev/null |xargs -r dirname ) )
|
||||
if [ "${#do_testpkg[@]}" -eq 0 ]; then
|
||||
printf "Configuration fragment enables no test.\n" >&2; exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# If nothing else, at least do the basics to generate a valid pipeline
|
||||
if [ -z "${do_defconfigs}" \
|
||||
-a -z "${do_runtime}" \
|
||||
-a -z "${do_testpkg}" \
|
||||
]
|
||||
then
|
||||
do_basics=true
|
||||
fi
|
||||
|
||||
if ${do_basics:-false}; then
|
||||
for tst in "${basics[@]}"; do
|
||||
printf 'check-%s: { extends: .check-%s_base }\n' "${tst}" "${tst}"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -n "${do_defconfigs}" ]; then
|
||||
for cfg in "${defconfigs[@]}"; do
|
||||
printf '%s%s: { extends: .defconfig_%s }\n' \
|
||||
"${cfg}" "${defconfigs_ext}" "${do_defconfigs}"
|
||||
done
|
||||
fi
|
||||
|
||||
if ${do_runtime:-false}; then
|
||||
printf '%s: { extends: .runtime_test_base }\n' "${runtimes[@]}"
|
||||
fi
|
||||
|
||||
if [ -n "${do_testpkg}" ]; then
|
||||
printf '%s: { extends: .test_pkg }\n' "${do_testpkg[@]}"
|
||||
fi
|
||||
}
|
||||
|
||||
main "${@}"
|
||||
Reference in New Issue
Block a user