Initial commit
This commit is contained in:
Executable
+166
@@ -0,0 +1,166 @@
|
||||
#!/bin/bash -e
|
||||
#
|
||||
|
||||
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
||||
obmc_dir=${script_dir}/../../
|
||||
|
||||
cd "$obmc_dir"
|
||||
|
||||
# openbmc doesn't control what upstream poky, or any of the other layers do,
|
||||
# which do use patches as part of their upstreaming process.
|
||||
# meta-phosphor is also included such that patches that the community agrees to
|
||||
# hold onto will be allowed in that layer.
|
||||
|
||||
patch_files_tmp=$(mktemp)
|
||||
allowed_patches_tmp=$(mktemp)
|
||||
trap 'rm $patch_files_tmp $allowed_patches_tmp' exit
|
||||
|
||||
git ls-files -- \
|
||||
'*.patch' \
|
||||
':!:poky/**' \
|
||||
':!:meta-arm/**' \
|
||||
':!:meta-security/**' \
|
||||
':!:meta-raspberrypi/**' \
|
||||
':!:meta-openembedded/**' \
|
||||
':!:meta-phosphor/**' \
|
||||
| sort > "$patch_files_tmp"
|
||||
|
||||
|
||||
# The following patches were present on master at the time this test was
|
||||
# written. Their presence in this list should not be acknowlegement that they
|
||||
# are now allowed, but ignoring them is required in the intermediate time
|
||||
# between when this test was created, and when the maintainers of these repos
|
||||
# clean them up.
|
||||
#
|
||||
# https://github.com/openbmc/docs/blob/master/meta-layer-guidelines.md
|
||||
echo "\
|
||||
meta-aspeed/recipes-bsp/u-boot/files/default-gcc.patch
|
||||
meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed/0005-ARM-dts-aspeed-Enable-g220a-uart-route.patch
|
||||
meta-facebook/meta-yosemitev2/recipes-bsp/u-boot/u-boot-aspeed-sdk/0001-board-aspeed-Add-Mux-for-yosemitev2.patch
|
||||
meta-facebook/meta-yosemitev2/recipes-bsp/u-boot/u-boot-aspeed-sdk/0002-spl-host-console-handle.patch
|
||||
meta-google/dynamic-layers/nuvoton-layer/recipes-bsp/images/npcm7xx-igps/0001-Set-FIU0_DRD_CFG-and-FIU_Clk_divider-for-gbmc-hoth.patch
|
||||
meta-google/recipes-extended/libconfig/files/0001-conf2struct-Use-the-right-perl.patch
|
||||
meta-google/recipes-extended/libconfig/files/0001-makefile-Add-missing-LDFLAGS.patch
|
||||
meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/rwfs-clean-dev.patch
|
||||
meta-ingrasys/meta-zaius/recipes-bsp/u-boot/u-boot-aspeed/0001-board-aspeed-Add-reset_phy-for-Zaius.patch
|
||||
meta-nuvoton/recipes-bsp/images/npcm7xx-igps/0001-Adjust-paths-for-use-with-Bitbake.patch
|
||||
meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0001-Add-system-reset-status-support.patch
|
||||
meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0002-config-ast-common-set-fieldmode-to-true.patch
|
||||
meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0003-aspeed-add-gpio-support.patch
|
||||
meta-yadro/meta-nicole/recipes-bsp/u-boot/files/0004-aspeed-add-bmc-position-support.patch
|
||||
meta-yadro/meta-nicole/recipes-kernel/linux/linux-aspeed/0001-Add-NCSI-channel-selector.patch
|
||||
meta-yadro/meta-nicole/recipes-phosphor/host/op-proc-control/0001-Stop-and-send-SRESET-for-one-thread-only.patch
|
||||
meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/0001-Add-boot-initiator-mailbox-interface.patch
|
||||
meta-yadro/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Add-support-for-persistent-only-settings.patch
|
||||
meta-yadro/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Add-support-for-boot-initiator-mailbox.patch
|
||||
meta-yadro/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Fix-version-parsing-update-AUX-revision-info.patch
|
||||
" | sort > "$allowed_patches_tmp"
|
||||
|
||||
files_diff=$(comm -23 "$patch_files_tmp" "$allowed_patches_tmp")
|
||||
|
||||
files_count=$(echo -n "$files_diff" | grep -c '^' || true)
|
||||
if [[ $files_count -ne 0 ]]; then
|
||||
echo "Patch files found not in allow list"
|
||||
echo "$files_diff"
|
||||
echo "Patches are not allowed on OpenBMC in these layers. Please upstream your changes and see \
|
||||
https://github.com/openbmc/docs/blob/master/meta-layer-guidelines.md"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Now verify there are no kernel dts files being added in a patch
|
||||
# All dts files should be sent upstream and can be carried in the openbmc/linux
|
||||
# tree until they are accepted upstream
|
||||
dts_files_tmp=$(mktemp)
|
||||
allowed_dts_tmp=$(mktemp)
|
||||
trap 'rm $dts_files_tmp $allowed_dts_tmp' exit
|
||||
|
||||
git ls-files -- \
|
||||
'*.dts' \
|
||||
':!:poky/**' \
|
||||
':!:meta-arm/**' \
|
||||
':!:meta-security/**' \
|
||||
':!:meta-raspberrypi/**' \
|
||||
':!:meta-openembedded/**' \
|
||||
| sort > "$dts_files_tmp"
|
||||
|
||||
# There is a single dts currently in the tree that we will exempt for now
|
||||
echo "\
|
||||
meta-hpe/meta-dl360poc/recipes-kernel/linux/linux-obmc/gxp.dts
|
||||
" | sort > "$allowed_dts_tmp"
|
||||
|
||||
files_diff=$(comm -23 "$dts_files_tmp" "$allowed_dts_tmp")
|
||||
|
||||
files_count=$(echo -n "$files_diff" | grep -c '^' || true)
|
||||
if [[ $files_count -ne 0 ]]; then
|
||||
echo "Dts files found not in allow list"
|
||||
echo "$files_diff"
|
||||
echo "Dts files are not allowed on OpenBMC in these layers. Please upstream your changes and see \
|
||||
https://github.com/openbmc/docs/blob/master/kernel-development.md"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
lint_exempt="\
|
||||
meta-phosphor/recipes-support/nss-pam-ldapd/files/nslcd.init
|
||||
"
|
||||
|
||||
types=(json shell)
|
||||
# shellcheck disable=SC2034
|
||||
check_json="eslint --resolve-plugins-relative-to /usr/local/lib/node_modules"
|
||||
# shellcheck disable=SC2034
|
||||
check_shell="shellcheck -x"
|
||||
|
||||
for t in "${types[@]}"; do
|
||||
check_cmd="check_${t}"
|
||||
if ! which "${!check_cmd%% *}" > /dev/null 2>&1; then
|
||||
eval "${check_cmd}=\"echo WARNING: Skipping $t due to missing command:\""
|
||||
echo "${!check_cmd}"
|
||||
fi
|
||||
done
|
||||
|
||||
non_bbfiles=$(git ls-files -- \
|
||||
':!:poky/**' \
|
||||
':!:meta-arm/**' \
|
||||
':!:meta-security/**' \
|
||||
':!:meta-raspberrypi/**' \
|
||||
':!:meta-openembedded/**' \
|
||||
| grep -v -e "\.patch$" -e "\.bb$" -e "\.bbappend$")
|
||||
|
||||
for f in $non_bbfiles; do
|
||||
unset file_type
|
||||
file_info=$(file "$f")
|
||||
case $file_info in
|
||||
*shell\ script*)
|
||||
file_type="shell"
|
||||
;;
|
||||
|
||||
*JSON\ data*)
|
||||
file_type="json"
|
||||
;;
|
||||
|
||||
*)
|
||||
case $f in
|
||||
*.sh)
|
||||
file_type="shell"
|
||||
;;
|
||||
|
||||
*.json)
|
||||
file_type="json"
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
|
||||
if [ -n "$file_type" ]; then
|
||||
check_cmd="check_${file_type}"
|
||||
if ! eval "${!check_cmd} $f"; then
|
||||
if [[ $lint_exempt == *$f* ]]; then
|
||||
echo "EXEMPT: $f"
|
||||
else
|
||||
echo "FAILED: $f"
|
||||
false
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
echo "Repo test passed"
|
||||
Reference in New Issue
Block a user