mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
- all RAN code, CI code, configuration files, dockerfiles, in CSSL v1.0
- all deployment code (openshift, charts, ancillary files like shell
scripts), in MIT
- documentation in CC-BY-4.0
- exceptions might apply and are listed in NOTICE
- there is a new LICENSES folder with all licenses
- CONTRIBUTIONS.md has been updated accordingly
For automated changes based on OAI PL v1.1:
perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.{c,h,cpp}
perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.ts
perl -i~ -0pe 's/<!--.*Licensed to the OpenAirInterface.*openairinterface.org\n.*-->/<!-- SPDX-License-Identifier: LicenseRef-CSSL-1.0 -->/s' **/*.xml
The rest (cmake, files with missing license, cmake) manually.
193 lines
7.4 KiB
Bash
Executable File
193 lines
7.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: LicenseRef-CSSL-1.0
|
|
|
|
function usage {
|
|
echo "OAI Coding / Formatting Guideline Check script"
|
|
echo ""
|
|
echo " By default (no options) the complete repository will be checked"
|
|
echo " In case of merge request, provided source and target branch,"
|
|
echo " the script will check only the modified files"
|
|
echo ""
|
|
echo "Usage:"
|
|
echo "------"
|
|
echo " checkCodingFormattingRules.sh [OPTIONS]"
|
|
echo ""
|
|
echo "Options:"
|
|
echo "--------"
|
|
echo " --src-branch #### OR -sb ####"
|
|
echo " Specify the source branch of the merge request."
|
|
echo ""
|
|
echo " --target-branch #### OR -tb ####"
|
|
echo " Specify the target branch of the merge request (usually develop)."
|
|
echo ""
|
|
echo " --help OR -h"
|
|
echo " Print this help message."
|
|
echo ""
|
|
}
|
|
|
|
if [ $# -ne 4 ] && [ $# -ne 1 ] && [ $# -ne 0 ]
|
|
then
|
|
echo "Syntax Error: not the correct number of arguments"
|
|
echo ""
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
if [ $# -eq 0 ]
|
|
then
|
|
# in this file we previously had a list of files that were not properly
|
|
# formatted. At the time of this MR, the Jenkinsfile expects this file, so
|
|
# we simply produce an empty one
|
|
touch ./oai_rules_result.txt
|
|
|
|
# Testing Circular Dependencies protection
|
|
awk '/#[ \t]*ifndef/ { gsub("^.*ifndef *",""); if (names[$1]!="") print "files with same {define ", FILENAME, names[$1]; names[$1]=FILENAME } /#[ \t]*define/ { gsub("^.*define *",""); if(names[$1]!=FILENAME) print "error in declaration", FILENAME, $1, names[$1]; nextfile }' `find openair* common targets executables -name *.h |grep -v LFDS` > header-files-w-incorrect-define.txt
|
|
|
|
# Testing if explicit GNU GPL license banner
|
|
grep -E -irl --exclude-dir=.git --include=*.cpp --include=*.c --include=*.h "General Public License" . | grep -E -v "openair3/NAS/COMMON/milenage.h" > files-w-gnu-gpl-license-banner.txt
|
|
|
|
# Looking at exotic/suspect banner
|
|
LIST_OF_FILES_W_BANNER=`grep -E -irl --exclude-dir=.git --include=*.cpp --include=*.c --include=*.h "Copyright|copyleft" .`
|
|
if [ -f ./files-w-suspect-banner.txt ]; then rm -f ./files-w-suspect-banner.txt; fi
|
|
for FILE in $LIST_OF_FILES_W_BANNER
|
|
do
|
|
IS_NFAPI=`echo $FILE | grep -E -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
|
|
IS_OAI_LICENCE_PRESENT=`grep -E -c "SPDX-License-Identifier: LicenseRef-CSSL-1.0" $FILE || true`
|
|
IS_BSD_LICENCE_PRESENT=`grep -E -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause|License-Identifier: BSD-3-Clause" $FILE || true`
|
|
IS_MIT_LICENCE_PRESENT=`grep -E -c "SPDX-License-Identifier: MIT" $FILE || true`
|
|
IS_EXCEPTION=`echo $FILE | grep -E -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h" || true`
|
|
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ] && [ $IS_MIT_LICENCE_PRESENT -eq 0 ]
|
|
then
|
|
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
|
then
|
|
echo $FILE >> ./files-w-suspect-banner.txt
|
|
fi
|
|
fi
|
|
done
|
|
exit 0
|
|
fi
|
|
|
|
checker=0
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
key="$1"
|
|
|
|
case $key in
|
|
-h|--help)
|
|
shift
|
|
usage
|
|
exit 0
|
|
;;
|
|
-sb|--src-branch)
|
|
SOURCE_BRANCH="$2"
|
|
let "checker|=0x1"
|
|
shift
|
|
shift
|
|
;;
|
|
-tb|--target-branch)
|
|
TARGET_BRANCH="$2"
|
|
let "checker|=0x2"
|
|
shift
|
|
shift
|
|
;;
|
|
*)
|
|
echo "Syntax Error: unknown option: $key"
|
|
echo ""
|
|
usage
|
|
exit 1
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
if [ $checker -ne 3 ]
|
|
then
|
|
echo "Source Branch is : $SOURCE_BRANCH"
|
|
echo "Target Branch is : $TARGET_BRANCH"
|
|
echo ""
|
|
echo "Syntax Error: missing option"
|
|
echo ""
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
# Merge request scenario
|
|
|
|
MERGE_COMMMIT=`git log -n1 --pretty=format:%H`
|
|
TARGET_INIT_COMMIT=`git log -n1 --pretty=format:%H origin/$TARGET_BRANCH`
|
|
|
|
echo " ---- Checking the modified files by the merge request ----"
|
|
echo ""
|
|
echo "Source Branch is : $SOURCE_BRANCH"
|
|
echo "Target Branch is : $TARGET_BRANCH"
|
|
echo "Merged Commit is : $MERGE_COMMMIT"
|
|
echo "Target Init is : $TARGET_INIT_COMMIT"
|
|
echo ""
|
|
echo " ----------------------------------------------------------"
|
|
echo ""
|
|
|
|
# Retrieve the list of modified files since the latest develop commit
|
|
MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | grep -E "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq`
|
|
NB_TO_FORMAT=0
|
|
if [ -f header-files-w-incorrect-define.txt ]
|
|
then
|
|
rm -f header-files-w-incorrect-define.txt
|
|
fi
|
|
if [ -f files-w-gnu-gpl-license-banner.txt ]
|
|
then
|
|
rm -f files-w-gnu-gpl-license-banner.txt
|
|
fi
|
|
if [ -f files-w-suspect-banner.txt ]
|
|
then
|
|
rm -f files-w-suspect-banner.txt
|
|
fi
|
|
awk '/#[ \t]*ifndef/ { gsub("^.*ifndef *",""); if (names[$1]!="") print "files with same {define ", FILENAME, names[$1]; names[$1]=FILENAME } /#[ \t]*define/ { gsub("^.*define *",""); if(names[$1]!=FILENAME) print "error in declaration", FILENAME, $1, names[$1]; nextfile }' `find openair* common targets executables -name *.h |grep -v LFDS` > header-files-w-incorrect-define-tmp.txt
|
|
|
|
for FULLFILE in $MODIFIED_FILES
|
|
do
|
|
# sometimes, we remove files
|
|
if [ ! -f $FULLFILE ]; then continue; fi
|
|
|
|
filename=$(basename -- "$FULLFILE")
|
|
EXT="${filename##*.}"
|
|
if [ $EXT = "c" ] || [ $EXT = "h" ] || [ $EXT = "cpp" ] || [ $EXT = "hpp" ]
|
|
then
|
|
# Testing if explicit GNU GPL license banner
|
|
GNU_EXCEPTION=`echo $FULLFILE | grep -E -c "openair3/NAS/COMMON/milenage.h" || true`
|
|
if [ $GNU_EXCEPTION -eq 0 ]
|
|
then
|
|
grep -E -il "General Public License" $FULLFILE >> files-w-gnu-gpl-license-banner.txt
|
|
fi
|
|
# Looking at exotic/suspect banner
|
|
IS_BANNER=`grep -E -i -c "Copyright|copyleft" $FULLFILE || true`
|
|
if [ $IS_BANNER -ne 0 ]
|
|
then
|
|
IS_NFAPI=`echo $FULLFILE | grep -E -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
|
|
IS_OAI_LICENCE_PRESENT=`grep -E -c "SPDX-License-Identifier: LicenseRef-CSSL-1.0" $FULLFILE || true`
|
|
IS_BSD_LICENCE_PRESENT=`grep -E -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause|License-Identifier: BSD-3-Clause" $FULLFILE || true`
|
|
IS_MIT_LICENCE_PRESENT=`grep -E -c "SPDX-License-Identifier: MIT" $FULLFILE || true`
|
|
IS_EXCEPTION=`echo $FULLFILE | grep -E -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h" || true`
|
|
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ] && [ $IS_MIT_LICENCE_PRESENT -eq 0 ]
|
|
then
|
|
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
|
then
|
|
echo $FULLFILE >> ./files-w-suspect-banner.txt
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
# Testing Circular Dependencies protection
|
|
if [ $EXT = "h" ] || [ $EXT = "hpp" ]
|
|
then
|
|
grep $FULLFILE header-files-w-incorrect-define-tmp.txt >> header-files-w-incorrect-define.txt
|
|
fi
|
|
done
|
|
rm -f header-files-w-incorrect-define-tmp.txt
|
|
|
|
# in this script we previously produced a list of files that were not properly
|
|
# formatted. At the time of this MR, the Jenkinsfile expects this file, so
|
|
# we simply produce an empty file
|
|
touch ./oai_rules_result.txt
|
|
|
|
exit 0
|