blob: 6cd0db27266b5f3d55df887bfdb8acb252eb71bd [file] [log] [blame]
Ed Tanousd5cea142021-09-09 11:42:05 -07001#!/bin/bash -e
2#
3
Ed Tanous7f8954e2021-09-09 11:46:43 -07004script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
5obmc_dir=${script_dir}/../../
6
Patrick Williams12a27b22021-10-26 16:07:31 -05007cd "$obmc_dir"
8
Ed Tanous7f8954e2021-09-09 11:46:43 -07009# openbmc doesn't control what upstream poky, or any of the other layers do,
10# which do use patches as part of their upstreaming process.
11# meta-phosphor is also included such that patches that the community agrees to
12# hold onto will be allowed in that layer.
13
14patch_files_tmp=$(mktemp)
15allowed_patches_tmp=$(mktemp)
Patrick Williams693d3db2021-10-26 16:10:20 -050016trap 'rm $patch_files_tmp $allowed_patches_tmp' exit
Ed Tanous7f8954e2021-09-09 11:46:43 -070017
Patrick Williams12a27b22021-10-26 16:07:31 -050018git ls-files -- \
Patrick Williams1eb2b742024-01-02 07:48:04 -060019 '*.patch' '*.dts' \
Ed Tanous7f8954e2021-09-09 11:46:43 -070020 ':!:poky/**' \
Brad Bishopbec4ebc2022-08-03 09:55:16 -040021 ':!:meta-arm/**' \
Ed Tanous7f8954e2021-09-09 11:46:43 -070022 ':!:meta-security/**' \
Ed Tanous7f8954e2021-09-09 11:46:43 -070023 ':!:meta-raspberrypi/**' \
24 ':!:meta-openembedded/**' \
25 ':!:meta-phosphor/**' \
Patrick Williams693d3db2021-10-26 16:10:20 -050026 | sort > "$patch_files_tmp"
Ed Tanous7f8954e2021-09-09 11:46:43 -070027
28
29# The following patches were present on master at the time this test was
30# written. Their presence in this list should not be acknowlegement that they
31# are now allowed, but ignoring them is required in the intermediate time
32# between when this test was created, and when the maintainers of these repos
33# clean them up.
34#
35# https://github.com/openbmc/docs/blob/master/meta-layer-guidelines.md
36echo "\
Andrew Jeffery7c928572023-08-14 13:00:06 +093037meta-aspeed/recipes-aspeed/python/socsec/0001-otptool-Define-value_start-in-rev_id-path.patch
Ed Tanous7f8954e2021-09-09 11:46:43 -070038meta-aspeed/recipes-bsp/u-boot/files/default-gcc.patch
Ed Tanous7f8954e2021-09-09 11:46:43 -070039meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed/0005-ARM-dts-aspeed-Enable-g220a-uart-route.patch
Logananth Sundararaj971257a2022-03-23 17:34:12 +053040meta-facebook/meta-yosemitev2/recipes-bsp/u-boot/u-boot-aspeed-sdk/0001-board-aspeed-Add-Mux-for-yosemitev2.patch
41meta-facebook/meta-yosemitev2/recipes-bsp/u-boot/u-boot-aspeed-sdk/0002-spl-host-console-handle.patch
Ed Tanous7f8954e2021-09-09 11:46:43 -070042meta-google/dynamic-layers/nuvoton-layer/recipes-bsp/images/npcm7xx-igps/0001-Set-FIU0_DRD_CFG-and-FIU_Clk_divider-for-gbmc-hoth.patch
43meta-google/recipes-extended/libconfig/files/0001-conf2struct-Use-the-right-perl.patch
44meta-google/recipes-extended/libconfig/files/0001-makefile-Add-missing-LDFLAGS.patch
45meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/rwfs-clean-dev.patch
Patrick Williams1eb2b742024-01-02 07:48:04 -060046meta-hpe/meta-dl360poc/recipes-kernel/linux/linux-obmc/gxp.dts
Ed Tanous7f8954e2021-09-09 11:46:43 -070047meta-ingrasys/meta-zaius/recipes-bsp/u-boot/u-boot-aspeed/0001-board-aspeed-Add-reset_phy-for-Zaius.patch
48meta-nuvoton/recipes-bsp/images/npcm7xx-igps/0001-Adjust-paths-for-use-with-Bitbake.patch
49meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0001-Add-system-reset-status-support.patch
50meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0002-config-ast-common-set-fieldmode-to-true.patch
51meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0003-aspeed-add-gpio-support.patch
52meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0004-aspeed-add-bmc-position-support.patch
53meta-yadro/meta-nicole/recipes-kernel/linux/linux-aspeed/0001-Add-NCSI-channel-selector.patch
54meta-yadro/meta-nicole/recipes-phosphor/host/op-proc-control/0001-Stop-and-send-SRESET-for-one-thread-only.patch
55meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/0001-Add-boot-initiator-mailbox-interface.patch
56meta-yadro/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Add-support-for-persistent-only-settings.patch
57meta-yadro/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Add-support-for-boot-initiator-mailbox.patch
58meta-yadro/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Fix-version-parsing-update-AUX-revision-info.patch
Patrick Williams693d3db2021-10-26 16:10:20 -050059" | sort > "$allowed_patches_tmp"
Ed Tanous7f8954e2021-09-09 11:46:43 -070060
Patrick Williams693d3db2021-10-26 16:10:20 -050061files_diff=$(comm -23 "$patch_files_tmp" "$allowed_patches_tmp")
Ed Tanous7f8954e2021-09-09 11:46:43 -070062
Ed Tanous4734c222021-09-20 11:11:34 -070063files_count=$(echo -n "$files_diff" | grep -c '^' || true)
Ed Tanous7f8954e2021-09-09 11:46:43 -070064if [[ $files_count -ne 0 ]]; then
Patrick Williams1eb2b742024-01-02 07:48:04 -060065 echo "Patch or DTS files found not in allow list"
Ed Tanous7f8954e2021-09-09 11:46:43 -070066 echo "$files_diff"
67 echo "Patches are not allowed on OpenBMC in these layers. Please upstream your changes and see \
68 https://github.com/openbmc/docs/blob/master/meta-layer-guidelines.md"
69 exit 1
70fi
71
Andrew Geisslerfc328172022-01-21 09:37:06 -060072# Now verify there are no kernel dts files being added in a patch
73# All dts files should be sent upstream and can be carried in the openbmc/linux
74# tree until they are accepted upstream
75dts_files_tmp=$(mktemp)
76allowed_dts_tmp=$(mktemp)
77trap 'rm $dts_files_tmp $allowed_dts_tmp' exit
78
79git ls-files -- \
80 '*.dts' \
81 ':!:poky/**' \
Brad Bishopbec4ebc2022-08-03 09:55:16 -040082 ':!:meta-arm/**' \
Andrew Geisslerfc328172022-01-21 09:37:06 -060083 ':!:meta-security/**' \
84 ':!:meta-raspberrypi/**' \
85 ':!:meta-openembedded/**' \
86 | sort > "$dts_files_tmp"
87
88# There is a single dts currently in the tree that we will exempt for now
89echo "\
90meta-hpe/meta-dl360poc/recipes-kernel/linux/linux-obmc/gxp.dts
91" | sort > "$allowed_dts_tmp"
92
93files_diff=$(comm -23 "$dts_files_tmp" "$allowed_dts_tmp")
94
95files_count=$(echo -n "$files_diff" | grep -c '^' || true)
96if [[ $files_count -ne 0 ]]; then
97echo "Dts files found not in allow list"
98echo "$files_diff"
99echo "Dts files are not allowed on OpenBMC in these layers. Please upstream your changes and see \
100 https://github.com/openbmc/docs/blob/master/kernel-development.md"
101exit 1
102fi
103
Patrick Williams12a27b22021-10-26 16:07:31 -0500104lint_exempt="\
Patrick Williams12a27b22021-10-26 16:07:31 -0500105meta-phosphor/recipes-support/nss-pam-ldapd/files/nslcd.init
Patrick Williams12a27b22021-10-26 16:07:31 -0500106"
107
Patrick Williams2ed00d82021-10-27 09:33:53 -0500108types=(json shell)
109# shellcheck disable=SC2034
110check_json="eslint --resolve-plugins-relative-to /usr/local/lib/node_modules"
Patrick Williams521d8f62021-10-27 09:30:41 -0500111# shellcheck disable=SC2034
112check_shell="shellcheck -x"
113
114for t in "${types[@]}"; do
115 check_cmd="check_${t}"
116 if ! which "${!check_cmd%% *}" > /dev/null 2>&1; then
117 eval "${check_cmd}=\"echo WARNING: Skipping $t due to missing command:\""
118 echo "${!check_cmd}"
119 fi
120done
121
Patrick Williams12a27b22021-10-26 16:07:31 -0500122non_bbfiles=$(git ls-files -- \
123 ':!:poky/**' \
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400124 ':!:meta-arm/**' \
Patrick Williams12a27b22021-10-26 16:07:31 -0500125 ':!:meta-security/**' \
126 ':!:meta-raspberrypi/**' \
127 ':!:meta-openembedded/**' \
128 | grep -v -e "\.patch$" -e "\.bb$" -e "\.bbappend$")
129
130for f in $non_bbfiles; do
Patrick Williams521d8f62021-10-27 09:30:41 -0500131 unset file_type
132 file_info=$(file "$f")
133 case $file_info in
Patrick Williams12a27b22021-10-26 16:07:31 -0500134 *shell\ script*)
Patrick Williams521d8f62021-10-27 09:30:41 -0500135 file_type="shell"
Patrick Williams12a27b22021-10-26 16:07:31 -0500136 ;;
137
Patrick Williams2ed00d82021-10-27 09:33:53 -0500138 *JSON\ data*)
139 file_type="json"
140 ;;
141
Patrick Williams12a27b22021-10-26 16:07:31 -0500142 *)
Patrick Williams521d8f62021-10-27 09:30:41 -0500143 case $f in
144 *.sh)
145 file_type="shell"
146 ;;
147
Patrick Williams2ed00d82021-10-27 09:33:53 -0500148 *.json)
149 file_type="json"
150 ;;
Patrick Williams521d8f62021-10-27 09:30:41 -0500151 esac
Patrick Williams12a27b22021-10-26 16:07:31 -0500152 esac
Patrick Williams521d8f62021-10-27 09:30:41 -0500153
154 if [ -n "$file_type" ]; then
155 check_cmd="check_${file_type}"
156 if ! eval "${!check_cmd} $f"; then
157 if [[ $lint_exempt == *$f* ]]; then
158 echo "EXEMPT: $f"
159 else
160 echo "FAILED: $f"
161 false
162 fi
163 fi
164 fi
165
Patrick Williams12a27b22021-10-26 16:07:31 -0500166done
167
Ed Tanousd5cea142021-09-09 11:42:05 -0700168echo "Repo test passed"