| #!/bin/bash |
| |
| set -e |
| |
| ## |
| # Check the features are all branded |
| ## |
| DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) |
| ${DIR}/check_features.sh |
| |
| #!/bin/bash |
| |
| ## |
| # This script is reused by other projects, if so, COREPROJECT should be set |
| # to the project to use a basis for project settings |
| ## |
| : ${COREPROJECT:=core/org.eclipse.cdt.core} |
| |
| ## |
| # Format code |
| ## |
| : ${ECLIPSE:=~/buildtools/eclipse-SDK-4.13/eclipse} |
| test ! -e check_code_cleanliness_workspace |
| ${ECLIPSE} \ |
| -consolelog -nosplash -application org.eclipse.jdt.core.JavaCodeFormatter \ |
| -config $PWD/$COREPROJECT/.settings/org.eclipse.jdt.core.prefs \ |
| $PWD -data check_code_cleanliness_workspace |
| rm -rf check_code_cleanliness_workspace |
| |
| ## |
| # Remove trailing whitespace. |
| # The .gitattributes is used as a filter to identify files to check. Patters with |
| # this "# check trailing whitespace" on the line before are checked |
| ## |
| awk '/# remove trailing whitespace/{getline; print $1}' .gitattributes | |
| while read i ; do |
| echo "Removing trailing whitespace on $i files" |
| git ls-files -- "$i" | xargs --no-run-if-empty sed -i 's/[ \t]*$//' |
| done |
| |
| ## |
| # Add all file types to .gitattributes |
| ## |
| git ls-files | sed -E '-es@^.*/([^/]+)$@\1@' '-es@.+\.@\\\*\\.@' | sort -u | while read i ; do |
| if ! grep "^$i " .gitattributes > /dev/null |
| then |
| echo "MISSING $i in .gitattributes, adding as text, check if that is correct" |
| echo "$i text # automatically added - please verify" >> .gitattributes |
| fi |
| done |
| |
| ## |
| # Copy JDT/PDE preferences |
| ## |
| git ls-files -- \*\*/.project ":!$COREPROJECT/.project" | while read i ; do |
| d=`dirname $i`; |
| if test ! -e $d/feature.xml; then |
| mkdir -p $d/.settings |
| cp $COREPROJECT/.settings/org.eclipse.jdt.* $d/.settings |
| cp $COREPROJECT/.settings/org.eclipse.pde.prefs $d/.settings |
| cp $COREPROJECT/.settings/org.eclipse.pde.api.tools.prefs $d/.settings |
| # For test plug-ins we are more lenient so don't warn on some items |
| if echo $i | grep -E '\.tests?[/\.]' > /dev/null; then |
| sed -i \ |
| '-es@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.discouragedReference=warning@org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.deprecation=warning@org.eclipse.jdt.core.compiler.problem.deprecation=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.discouragedReference=warning@org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.emptyStatement=warning@org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.fieldHiding=warning@org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning@org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.forbiddenReference=error@org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning@org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.unusedLocal=warning@org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning@org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning@org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning@org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore@' \ |
| '-es@org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning@org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore@' \ |
| $d/.settings/org.eclipse.jdt.core.prefs |
| sed -i \ |
| '-es@compilers.p.not-externalized-att=1@compilers.p.not-externalized-att=2@' \ |
| $d/.settings/org.eclipse.pde.prefs |
| fi |
| if echo $i | grep 'org.eclipse.cdt.examples.dsf' > /dev/null; then |
| sed -i \ |
| '-es@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore@' \ |
| $d/.settings/org.eclipse.jdt.core.prefs |
| fi |
| fi |
| done |
| |
| ## |
| # Make sure that natives are up to date |
| ## |
| if test -e native/org.eclipse.cdt.native.serial/jni; then |
| echo "Rebuilding natives to make sure they match source" |
| logfile=$(mktemp /tmp/make-natives-log.XXXXXX) |
| if ! make -C native/org.eclipse.cdt.native.serial/jni rebuild >${logfile} 2>&1; then |
| echo "Rebuilding of natives failed. The log is part of the artifacts of the build" |
| cp ${logfile} make-natives.log |
| exit 1 |
| fi |
| fi |
| |
| ## |
| # Check that none of the above caused any changes |
| ## |
| if test -z "$(git status -s)"; then |
| echo "Tree looks clean!" |
| else |
| echo "Tree is dirty - something needs to be cleaned up in your commit" |
| echo "Result of git status" |
| git status |
| echo "Result of git diff" |
| git diff |
| echo "Tree is dirty - something needs to be cleaned up in your commit (see above for git status/diff)" |
| exit 1 |
| fi |
| |
| ## |
| # Make sure all versions have been bumped appropriately compared to the baseline |
| ## |
| echo "Running 'mvn verify -P baseline-compare-and-replace' to make sure all versions have been appropriately incremented" |
| logfile=$(mktemp /tmp/baseline-compare-and-replace.XXXXXX) |
| if ${MVN:-mvn} \ |
| clean verify -B -V \ |
| -DskipDoc=true \ |
| -DskipTests=true \ |
| -P baseline-compare-and-replace >${logfile} 2>&1; then |
| echo "Maven check all versions have been bumped appropriately appears to have completed successfully" |
| else |
| if grep "Only qualifier changed" ${logfile} > /dev/null; then |
| bundle=$(grep "Only qualifier changed" ${logfile} | sed -e 's/^.*Only qualifier changed for .//' -e 's@/.*@@') |
| echo "Bundle '${bundle}' is missing a service segment version bump" |
| echo "Please bump service segment by 100 if on master branch" |
| echo "The log of this build is part of the artifacts" |
| echo "See: https://wiki.eclipse.org/Version_Numbering#When_to_change_the_service_segment" |
| elif grep "baseline and build artifacts have same version but different contents" ${logfile} > /dev/null; then |
| bundle=$(grep "baseline and build artifacts have same version but different contents" ${logfile} | sed -e 's/^.* on project //' -e 's@: baseline@@') |
| echo "Bundle '${bundle}' has same version as baseline, but different contents" |
| echo "This can happen for a variety of reasons:" |
| echo " - The comparison filters in the root pom.xml are not working" |
| echo " - Different versions of Java are being used to compile compared to the baseline" |
| echo " - A dependency has changed causing the generated classes to be different" |
| echo "The log of this build is part of the artifacts" |
| echo "Please bump service segment by 100 if on master branch" |
| echo "See: https://wiki.eclipse.org/Version_Numbering#When_to_change_the_service_segment" |
| else |
| echo "Maven 'check all versions have been bumped appropriately' failed!" |
| echo "The log of this build is part of the artifacts" |
| fi |
| cp ${logfile} baseline-compare-and-replace.log |
| exit 1 |
| fi |