| Ed Tanous | d5cea14 | 2021-09-09 11:42:05 -0700 | [diff] [blame] | 1 | #!/bin/bash -e | 
 | 2 | # | 
 | 3 |  | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 4 | script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" | 
 | 5 | obmc_dir=${script_dir}/../../ | 
 | 6 |  | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 7 | cd "$obmc_dir" | 
 | 8 |  | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 9 | # 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 |  | 
 | 14 | patch_files_tmp=$(mktemp) | 
 | 15 | allowed_patches_tmp=$(mktemp) | 
| Patrick Williams | 693d3db | 2021-10-26 16:10:20 -0500 | [diff] [blame] | 16 | trap 'rm $patch_files_tmp $allowed_patches_tmp' exit | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 17 |  | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 18 | git ls-files -- \ | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 19 |   '*.patch' \ | 
 | 20 |   ':!:poky/**' \ | 
| Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 21 |   ':!:meta-arm/**' \ | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 22 |   ':!:meta-security/**' \ | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 23 |   ':!:meta-raspberrypi/**' \ | 
 | 24 |   ':!:meta-openembedded/**' \ | 
 | 25 |   ':!:meta-phosphor/**' \ | 
| Patrick Williams | 693d3db | 2021-10-26 16:10:20 -0500 | [diff] [blame] | 26 |   | sort > "$patch_files_tmp" | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 27 |  | 
 | 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 | 
 | 36 | echo "\ | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 37 | meta-aspeed/recipes-bsp/u-boot/files/default-gcc.patch | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 38 | meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed/0005-ARM-dts-aspeed-Enable-g220a-uart-route.patch | 
| Logananth Sundararaj | 971257a | 2022-03-23 17:34:12 +0530 | [diff] [blame] | 39 | meta-facebook/meta-yosemitev2/recipes-bsp/u-boot/u-boot-aspeed-sdk/0001-board-aspeed-Add-Mux-for-yosemitev2.patch | 
 | 40 | meta-facebook/meta-yosemitev2/recipes-bsp/u-boot/u-boot-aspeed-sdk/0002-spl-host-console-handle.patch | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 41 | meta-google/dynamic-layers/nuvoton-layer/recipes-bsp/images/npcm7xx-igps/0001-Set-FIU0_DRD_CFG-and-FIU_Clk_divider-for-gbmc-hoth.patch | 
 | 42 | meta-google/recipes-extended/libconfig/files/0001-conf2struct-Use-the-right-perl.patch | 
 | 43 | meta-google/recipes-extended/libconfig/files/0001-makefile-Add-missing-LDFLAGS.patch | 
 | 44 | meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/rwfs-clean-dev.patch | 
 | 45 | meta-ingrasys/meta-zaius/recipes-bsp/u-boot/u-boot-aspeed/0001-board-aspeed-Add-reset_phy-for-Zaius.patch | 
 | 46 | meta-nuvoton/recipes-bsp/images/npcm7xx-igps/0001-Adjust-paths-for-use-with-Bitbake.patch | 
 | 47 | meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0001-Add-system-reset-status-support.patch | 
 | 48 | meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0002-config-ast-common-set-fieldmode-to-true.patch | 
 | 49 | meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0003-aspeed-add-gpio-support.patch | 
 | 50 | meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0004-aspeed-add-bmc-position-support.patch | 
 | 51 | meta-yadro/meta-nicole/recipes-kernel/linux/linux-aspeed/0001-Add-NCSI-channel-selector.patch | 
 | 52 | meta-yadro/meta-nicole/recipes-phosphor/host/op-proc-control/0001-Stop-and-send-SRESET-for-one-thread-only.patch | 
 | 53 | meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/0001-Add-boot-initiator-mailbox-interface.patch | 
 | 54 | meta-yadro/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Add-support-for-persistent-only-settings.patch | 
 | 55 | meta-yadro/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Add-support-for-boot-initiator-mailbox.patch | 
 | 56 | meta-yadro/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Fix-version-parsing-update-AUX-revision-info.patch | 
| Patrick Williams | 693d3db | 2021-10-26 16:10:20 -0500 | [diff] [blame] | 57 | " | sort > "$allowed_patches_tmp" | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 58 |  | 
| Patrick Williams | 693d3db | 2021-10-26 16:10:20 -0500 | [diff] [blame] | 59 | files_diff=$(comm -23 "$patch_files_tmp" "$allowed_patches_tmp") | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 60 |  | 
| Ed Tanous | 4734c22 | 2021-09-20 11:11:34 -0700 | [diff] [blame] | 61 | files_count=$(echo -n "$files_diff" | grep -c '^' || true) | 
| Ed Tanous | 7f8954e | 2021-09-09 11:46:43 -0700 | [diff] [blame] | 62 | if [[ $files_count -ne 0 ]]; then | 
 | 63 |   echo "Patch files found not in allow list" | 
 | 64 |   echo "$files_diff" | 
 | 65 |   echo "Patches are not allowed on OpenBMC in these layers.  Please upstream your changes and see \ | 
 | 66 |     https://github.com/openbmc/docs/blob/master/meta-layer-guidelines.md" | 
 | 67 |   exit 1 | 
 | 68 | fi | 
 | 69 |  | 
| Andrew Geissler | fc32817 | 2022-01-21 09:37:06 -0600 | [diff] [blame] | 70 | # Now verify there are no kernel dts files being added in a patch | 
 | 71 | # All dts files should be sent upstream and can be carried in the openbmc/linux | 
 | 72 | # tree until they are accepted upstream | 
 | 73 | dts_files_tmp=$(mktemp) | 
 | 74 | allowed_dts_tmp=$(mktemp) | 
 | 75 | trap 'rm $dts_files_tmp $allowed_dts_tmp' exit | 
 | 76 |  | 
 | 77 | git ls-files -- \ | 
 | 78 |   '*.dts' \ | 
 | 79 |   ':!:poky/**' \ | 
| Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 80 |   ':!:meta-arm/**' \ | 
| Andrew Geissler | fc32817 | 2022-01-21 09:37:06 -0600 | [diff] [blame] | 81 |   ':!:meta-security/**' \ | 
 | 82 |   ':!:meta-raspberrypi/**' \ | 
 | 83 |   ':!:meta-openembedded/**' \ | 
 | 84 |   | sort > "$dts_files_tmp" | 
 | 85 |  | 
 | 86 | # There is a single dts currently in the tree that we will exempt for now | 
 | 87 | echo "\ | 
 | 88 | meta-hpe/meta-dl360poc/recipes-kernel/linux/linux-obmc/gxp.dts | 
 | 89 | " | sort > "$allowed_dts_tmp" | 
 | 90 |  | 
 | 91 | files_diff=$(comm -23 "$dts_files_tmp" "$allowed_dts_tmp") | 
 | 92 |  | 
 | 93 | files_count=$(echo -n "$files_diff" | grep -c '^' || true) | 
 | 94 | if [[ $files_count -ne 0 ]]; then | 
 | 95 | echo "Dts files found not in allow list" | 
 | 96 | echo "$files_diff" | 
 | 97 | echo "Dts files are not allowed on OpenBMC in these layers. Please upstream your changes and see \ | 
 | 98 |   https://github.com/openbmc/docs/blob/master/kernel-development.md" | 
 | 99 | exit 1 | 
 | 100 | fi | 
 | 101 |  | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 102 | lint_exempt="\ | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 103 | meta-phosphor/recipes-support/nss-pam-ldapd/files/nslcd.init | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 104 | " | 
 | 105 |  | 
| Patrick Williams | 2ed00d8 | 2021-10-27 09:33:53 -0500 | [diff] [blame] | 106 | types=(json shell) | 
 | 107 | # shellcheck disable=SC2034 | 
 | 108 | check_json="eslint --resolve-plugins-relative-to /usr/local/lib/node_modules" | 
| Patrick Williams | 521d8f6 | 2021-10-27 09:30:41 -0500 | [diff] [blame] | 109 | # shellcheck disable=SC2034 | 
 | 110 | check_shell="shellcheck -x" | 
 | 111 |  | 
 | 112 | for t in "${types[@]}"; do | 
 | 113 |     check_cmd="check_${t}" | 
 | 114 |     if ! which "${!check_cmd%% *}" > /dev/null 2>&1; then | 
 | 115 |         eval "${check_cmd}=\"echo WARNING: Skipping $t due to missing command:\"" | 
 | 116 |         echo "${!check_cmd}" | 
 | 117 |     fi | 
 | 118 | done | 
 | 119 |  | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 120 | non_bbfiles=$(git ls-files -- \ | 
 | 121 |   ':!:poky/**' \ | 
| Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 122 |   ':!:meta-arm/**' \ | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 123 |   ':!:meta-security/**' \ | 
 | 124 |   ':!:meta-raspberrypi/**' \ | 
 | 125 |   ':!:meta-openembedded/**' \ | 
 | 126 |   | grep -v -e "\.patch$" -e "\.bb$" -e "\.bbappend$") | 
 | 127 |  | 
 | 128 | for f in $non_bbfiles; do | 
| Patrick Williams | 521d8f6 | 2021-10-27 09:30:41 -0500 | [diff] [blame] | 129 |     unset file_type | 
 | 130 |     file_info=$(file "$f") | 
 | 131 |     case $file_info in | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 132 |         *shell\ script*) | 
| Patrick Williams | 521d8f6 | 2021-10-27 09:30:41 -0500 | [diff] [blame] | 133 |             file_type="shell" | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 134 |             ;; | 
 | 135 |  | 
| Patrick Williams | 2ed00d8 | 2021-10-27 09:33:53 -0500 | [diff] [blame] | 136 |         *JSON\ data*) | 
 | 137 |             file_type="json" | 
 | 138 |             ;; | 
 | 139 |  | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 140 |         *) | 
| Patrick Williams | 521d8f6 | 2021-10-27 09:30:41 -0500 | [diff] [blame] | 141 |             case $f in | 
 | 142 |                 *.sh) | 
 | 143 |                     file_type="shell" | 
 | 144 |                     ;; | 
 | 145 |  | 
| Patrick Williams | 2ed00d8 | 2021-10-27 09:33:53 -0500 | [diff] [blame] | 146 |                 *.json) | 
 | 147 |                     file_type="json" | 
 | 148 |                     ;; | 
| Patrick Williams | 521d8f6 | 2021-10-27 09:30:41 -0500 | [diff] [blame] | 149 |             esac | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 150 |     esac | 
| Patrick Williams | 521d8f6 | 2021-10-27 09:30:41 -0500 | [diff] [blame] | 151 |  | 
 | 152 |     if [ -n "$file_type" ]; then | 
 | 153 |         check_cmd="check_${file_type}" | 
 | 154 |         if ! eval "${!check_cmd} $f"; then | 
 | 155 |             if [[ $lint_exempt == *$f* ]]; then | 
 | 156 |                 echo "EXEMPT: $f" | 
 | 157 |             else | 
 | 158 |                 echo "FAILED: $f" | 
 | 159 |                 false | 
 | 160 |             fi | 
 | 161 |         fi | 
 | 162 |     fi | 
 | 163 |  | 
| Patrick Williams | 12a27b2 | 2021-10-26 16:07:31 -0500 | [diff] [blame] | 164 | done | 
 | 165 |  | 
| Ed Tanous | d5cea14 | 2021-09-09 11:42:05 -0700 | [diff] [blame] | 166 | echo "Repo test passed" |