Skip to content

Commit

Permalink
adding ci files
Browse files Browse the repository at this point in the history
  • Loading branch information
Björn Töpel committed Sep 18, 2023
1 parent 0bb80ec commit 30e3469
Show file tree
Hide file tree
Showing 19 changed files with 1,177 additions and 0 deletions.
13 changes: 13 additions & 0 deletions .github/scripts/helpers.sh
@@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: 2023 Rivos Inc.
#
# SPDX-License-Identifier: Apache-2.0

# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions

group_start() {
echo "::group::$1"
}

group_end() {
echo "::endgroup::"
}
38 changes: 38 additions & 0 deletions .github/scripts/patches.sh
@@ -0,0 +1,38 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2023 Rivos Inc.
#
# SPDX-License-Identifier: Apache-2.0

set -euo pipefail

d=$(dirname "${BASH_SOURCE[0]}")

. ${d}/helpers.sh

basesha=$(git log -1 --pretty=%H .github/scripts/helpers.sh)
patches=( $(git rev-list --reverse ${basesha}..HEAD) )

rc=0
cnt=1
for i in "${patches[@]}"; do
tests=( $(ls ${d}/patches/*.sh) )
tcnt=1
for j in "${tests[@]}"; do
git reset --hard $i >/dev/null
msg="Patch ${cnt}/${#patches[@]}: Test ${tcnt}/${#tests[@]}: ${j}"
echo "::group::${msg}"
testrc=0
bash ${j} || testrc=1
echo "::endgroup::"
if (( $testrc )); then
rc=1
echo "::error::FAIL ${msg}"
else
echo "::notice::OK ${msg}"
fi
tcnt=$(( tcnt + 1 ))
done
cnt=$(( cnt + 1 ))
done

exit $rc
23 changes: 23 additions & 0 deletions .github/scripts/patches/build_rv32_defconfig.sh
@@ -0,0 +1,23 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2022 by Rivos Inc.

tmpdir=build
tmpfile=$(mktemp)
rc=0

tuxmake --wrapper ccache --target-arch riscv --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir --toolchain llvm -z none -k rv32_defconfig \
CROSS_COMPILE=riscv64-linux-gnu- \
> $tmpfile || rc=1

if [ $rc -ne 0 ]; then
grep "\(warning\|error\):" $tmpfile >&2
fi

rm -rf $tmpdir $tmpfile

exit $rc
110 changes: 110 additions & 0 deletions .github/scripts/patches/build_rv64_clang_allmodconfig.sh
@@ -0,0 +1,110 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (C) 2019 Netronome Systems, Inc.

# Modified tests/patch/build_defconfig_warn.sh for RISC-V builds

tmpfile_e=$(mktemp)
tmpfile_o=$(mktemp)
tmpfile_n=$(mktemp)

tmpdir_b=build_llvm
tmpdir_o=output

rc=0

echo "Redirect to $tmpfile_o and $tmpfile_n"

HEAD=$(git rev-parse HEAD)

echo "Tree base:"
git log -1 --pretty='%h ("%s")' HEAD~

echo "Building the whole tree with the patch"

tuxmake --wrapper ccache --target-arch riscv -e PATH=$PATH --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir_o -b $tmpdir_b --toolchain llvm -z none --kconfig allmodconfig \
-K CONFIG_WERROR=n -K CONFIG_RANDSTRUCT_NONE=y W=1 \
CROSS_COMPILE=riscv64-linux-gnu- \
config default \
> $tmpfile_e || rc=1

if [ $rc -eq 1 ]
then
grep "\(error\):" $tmpfile_e >&2
rm -rf $tmpdir_o $tmpfile_o $tmpfile_n $tmpdir_b $tmpfile_e
exit $rc
fi

current=$(grep -c "\(warning\|error\):" $tmpfile_n)

git checkout -q HEAD~

echo "Building the tree before the patch"

tuxmake --wrapper ccache --target-arch riscv -e PATH=$PATH --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir_o -b $tmpdir_b --toolchain llvm -z none --kconfig allmodconfig \
-K CONFIG_WERROR=n -K CONFIG_RANDSTRUCT_NONE=y W=1 \
CROSS_COMPILE=riscv64-linux-gnu- \
config default \
> $tmpfile_o

incumbent=$(grep -c "\(warning\|error\):" $tmpfile_o)

git checkout -q $HEAD

echo "Building the tree with the patch"

tuxmake --wrapper ccache --target-arch riscv -e PATH=$PATH --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir_o -b $tmpdir_b --toolchain llvm -z none --kconfig allmodconfig \
-K CONFIG_WERROR=n -K CONFIG_RANDSTRUCT_NONE=y W=1 \
CROSS_COMPILE=riscv64-linux-gnu- \
config default \
> $tmpfile_n || rc=1

if [ $rc -eq 1 ]
then
grep "\(warning\|error\):" $tmpfile_n >&2
rm -rf $tmpdir_o $tmpfile_o $tmpfile_n $tmpdir_b
exit $rc
fi

current=$(grep -c "\(warning\|error\):" $tmpfile_n)

if [ $current -gt $incumbent ]; then
echo "New errors added:" 1>&2

tmpfile_errors_before=$(mktemp)
tmpfile_errors_now=$(mktemp)
grep "\(warning\|error\):" $tmpfile_o | sort | uniq -c > $tmpfile_errors_before
grep "\(warning\|error\):" $tmpfile_n | sort | uniq -c > $tmpfile_errors_now

diff -U 0 $tmpfile_errors_before $tmpfile_errors_now 1>&2

rm $tmpfile_errors_before $tmpfile_errors_now

echo "Per-file breakdown" 1>&2
tmpfile_fo=$(mktemp)
tmpfile_fn=$(mktemp)

grep "\(warning\|error\):" $tmpfile_o | sed -n 's@\(^\.\./[/a-zA-Z0-9_.-]*.[ch]\):.*@\1@p' | sort | uniq -c \
> $tmpfile_fo
grep "\(warning\|error\):" $tmpfile_n | sed -n 's@\(^\.\./[/a-zA-Z0-9_.-]*.[ch]\):.*@\1@p' | sort | uniq -c \
> $tmpfile_fn

diff -U 0 $tmpfile_fo $tmpfile_fn 1>&2
rm $tmpfile_fo $tmpfile_fn
echo "pre: $incumbent post: $current"
rc=1
fi

rm -rf $tmpdir_o $tmpfile_o $tmpfile_n $tmpdir_b $tmpfile_e

exit $rc
109 changes: 109 additions & 0 deletions .github/scripts/patches/build_rv64_gcc_allmodconfig.sh
@@ -0,0 +1,109 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (C) 2019 Netronome Systems, Inc.

# Modified tests/patch/build_defconfig_warn.sh for RISC-V builds

tmpfile_e=$(mktemp)
tmpfile_o=$(mktemp)
tmpfile_n=$(mktemp)

tmpdir_b=build_gcc
tmpdir_o=output

rc=0

echo "Redirect to $tmpfile_o and $tmpfile_n"

HEAD=$(git rev-parse HEAD)

echo "Tree base:"
git log -1 --pretty='%h ("%s")' HEAD~

echo "Building the whole tree with the patch"

tuxmake --wrapper ccache --target-arch riscv -e PATH=$PATH --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir_o -b $tmpdir_b --toolchain gcc -z none --kconfig allmodconfig \
-K CONFIG_WERROR=n -K CONFIG_GCC_PLUGINS=n W=1 \
CROSS_COMPILE=riscv64-linux-gnu- \
config default \
> $tmpfile_e || rc=1

if [ $rc -eq 1 ]
then
grep "\(error\):" $tmpfile_e >&2
rm -rf $tmpdir_o $tmpfile_o $tmpfile_n $tmpdir_b $tmpfile_e
exit $rc
fi

git checkout -q HEAD~

echo "Building the tree before the patch"

tuxmake --wrapper ccache --target-arch riscv -e PATH=$PATH --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir_o -b $tmpdir_b --toolchain gcc -z none --kconfig allmodconfig \
-K CONFIG_WERROR=n -K CONFIG_GCC_PLUGINS=n W=1 \
CROSS_COMPILE=riscv64-linux-gnu- \
config default \
> $tmpfile_o

incumbent=$(grep -c "\(warning\|error\):" $tmpfile_o)

git checkout -q $HEAD

echo "Building the tree with the patch"

tuxmake --wrapper ccache --target-arch riscv -e PATH=$PATH --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir_o -b $tmpdir_b --toolchain gcc -z none --kconfig allmodconfig \
-K CONFIG_WERROR=n -K CONFIG_GCC_PLUGINS=n W=1 \
CROSS_COMPILE=riscv64-linux-gnu- \
config default \
> $tmpfile_n || rc=1

if [ $rc -eq 1 ]
then
grep "\(warning\|error\):" $tmpfile_n >&2
rm -rf $tmpdir_o $tmpfile_o $tmpfile_n $tmpdir_b
exit $rc
fi

current=$(grep -c "\(warning\|error\):" $tmpfile_n)

if [ $current -gt $incumbent ]; then
echo "New errors added:" 1>&2

tmpfile_errors_before=$(mktemp)
tmpfile_errors_now=$(mktemp)
grep "\(warning\|error\):" $tmpfile_o | sort | uniq -c > $tmpfile_errors_before
grep "\(warning\|error\):" $tmpfile_n | sort | uniq -c > $tmpfile_errors_now

diff -U 0 $tmpfile_errors_before $tmpfile_errors_now 1>&2

rm $tmpfile_errors_before $tmpfile_errors_now

echo "Per-file breakdown" 1>&2
tmpfile_fo=$(mktemp)
tmpfile_fn=$(mktemp)

grep "\(warning\|error\):" $tmpfile_o | sed -n 's@\(^\.\./[/a-zA-Z0-9_.-]*.[ch]\):.*@\1@p' | sort | uniq -c \
> $tmpfile_fo
grep "\(warning\|error\):" $tmpfile_n | sed -n 's@\(^\.\./[/a-zA-Z0-9_.-]*.[ch]\):.*@\1@p' | sort | uniq -c \
> $tmpfile_fn

diff -U 0 $tmpfile_fo $tmpfile_fn 1>&2
rm $tmpfile_fo $tmpfile_fn
echo "pre: $incumbent post: $current"

rc=1
fi

rm -rf $tmpdir_o $tmpfile_o $tmpfile_n $tmpdir_b $tmpfile_e

exit $rc
23 changes: 23 additions & 0 deletions .github/scripts/patches/build_rv64_nommu_k210_defconfig.sh
@@ -0,0 +1,23 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2022 by Rivos Inc.

tmpdir=$(mktemp -d)
tmpfile=$(mktemp)
rc=0

tuxmake --wrapper ccache --target-arch riscv --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir --toolchain gcc -z none -k nommu_k210_defconfig \
CROSS_COMPILE=riscv64-linux-gnu- \
> $tmpfile || rc=1

if [ $rc -ne 0 ]; then
grep "\(warning\|error\):" $tmpfile >&2
fi

rm -rf $tmpdir $tmpfile

exit $rc
23 changes: 23 additions & 0 deletions .github/scripts/patches/build_rv64_nommu_virt_defconfig.sh
@@ -0,0 +1,23 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2022 by Rivos Inc.

tmpdir=$(mktemp -d)
tmpfile=$(mktemp)
rc=0

tuxmake --wrapper ccache --target-arch riscv --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir --toolchain gcc -z none -k nommu_virt_defconfig \
CROSS_COMPILE=riscv64-linux-gnu- \
> $tmpfile || rc=1

if [ $rc -ne 0 ]; then
grep "\(warning\|error\):" $tmpfile >&2
fi

rm -rf $tmpdir $tmpfile

exit $rc
34 changes: 34 additions & 0 deletions .github/scripts/patches/checkpatch.sh
@@ -0,0 +1,34 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (C) 2019 Netronome Systems, Inc.

IGNORED=\
COMMIT_LOG_LONG_LINE,\
MACRO_ARG_REUSE,\
ALLOC_SIZEOF_STRUCT,\
NO_AUTHOR_SIGN_OFF,\
GIT_COMMIT_ID,\
CAMELCASE

tmpfile=$(mktemp)

./scripts/checkpatch.pl --strict --ignore=$IGNORED -g HEAD | tee $tmpfile

grep 'total: 0 errors, 0 warnings, 0 checks' $tmpfile
ret=$?

# return 250 (warning) if there are not errors
[ $ret -ne 0 ] && grep -P 'total: 0 errors, \d+ warnings, \d+ checks' $tmpfile && ret=250

if [ $ret -ne 0 ]; then
grep '\(WARNING\|ERROR\|CHECK\): ' $tmpfile | LC_COLLATE=C sort -u
else
grep 'total: ' $tmpfile | LC_COLLATE=C sort -u
fi

rm $tmpfile

exit $ret

# ./scripts/checkpatch.pl --ignore=SPACING_CAST,LONG_LINE,LONG_LINE_COMMENT,LONG_LINE_STRING,LINE_SPACING_STRUCT,FILE_PATH_CHANGES,CAMELCASE,OPEN_ENDED_LINE,AVOID_EXTERNS_HEADER,UNCOMMENTED_DEFINITION

0 comments on commit 30e3469

Please sign in to comment.