1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-09 18:56:02 +02:00
cdt/releng/scripts/do_project_settings.sh
Jonah Graham a3a6682faa Lower build.properties errors to warnings for some projects
Some projects build some of their bin includes with maven
build, so remove the error in those cases.

fixup for 6eaaf714cc
2022-11-07 23:13:26 -05:00

126 lines
6.8 KiB
Bash
Executable file

#!/bin/bash
###############################################################################
# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
###############################################################################
set -e
##
# 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}
##
# Setup Eclipse Core Preferences
##
git ls-files -- \*\*/.project | while read i ; do
d=`dirname $i`;
mkdir -p $d/.settings
if ! test -e $d/.settings/org.eclipse.core.resources.prefs; then
echo 'eclipse.preferences.version=1' > $d/.settings/org.eclipse.core.resources.prefs
echo 'encoding/<project>=UTF-8' >> $d/.settings/org.eclipse.core.resources.prefs
fi
if ! grep 'encoding/<project>=UTF-8' $d/.settings/org.eclipse.core.resources.prefs > /dev/null; then
echo 'encoding/<project>=UTF-8' >> $d/.settings/org.eclipse.core.resources.prefs
fi
if ! grep 'eclipse.preferences.version=1' $d/.settings/org.eclipse.core.resources.prefs > /dev/null; then
echo 'eclipse.preferences.version=1' >> $d/.settings/org.eclipse.core.resources.prefs
fi
done
##
# Copy JDT/PDE preferences
##
git ls-files -- \*\*/.project ":!$COREPROJECT/.project" | while read i ; do
d=`dirname $i`;
natures=$(xmllint --xpath 'string(//projectDescription/natures)' $i)
mkdir -p $d/.settings
# JDT
if [[ $natures == *"org.eclipse.jdt.core.javanature"* ]]; then
cp $COREPROJECT/.settings/org.eclipse.jdt.* $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
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
else
rm -f $d/.settings/org.eclipse.jdt*.prefs
fi
# PDE
if [[ $natures == *"org.eclipse.pde.PluginNature"* ]]; then
cp $COREPROJECT/.settings/org.eclipse.pde.prefs $d/.settings
cp $COREPROJECT/.settings/org.eclipse.pde.api.tools.prefs $d/.settings
if echo $i | grep -E '\.tests?[/\.]' > /dev/null; then
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 -E '\.docs?[/\.]' > /dev/null; then
# Docs plug-ins have an index/ directory created at build time
sed -i \
'-es@compilers.p.build.bin.includes=0@compilers.p.build.bin.includes=1@' \
$d/.settings/org.eclipse.pde.prefs
fi
if echo $i | grep -E 'org.eclipse.remote.proxy.server' > /dev/null; then
# Proxy server has a tar file created at build time
sed -i \
'-es@compilers.p.build.bin.includes=0@compilers.p.build.bin.includes=1@' \
$d/.settings/org.eclipse.pde.prefs
fi
if echo $i | grep 'org.eclipse.tm.terminal.view.ui' > /dev/null; then
# Special case, see comment in org.eclipse.tm.terminal.view.ui/plugin.xml
sed -i \
'-es@compilers.p.unknown-identifier=0@compilers.p.unknown-identifier=1@' \
$d/.settings/org.eclipse.pde.prefs
fi
else
rm -f $d/.settings/org.eclipse.pde*.prefs
fi
done
##
# Verify API Tooling is enabled for all non-test/example bundles
##
git ls-files -- \*\*/.project | while read i ; do
d=`dirname $i`;
natures=$(xmllint --xpath 'string(//projectDescription/natures)' $i)
if [[ $natures == *"org.eclipse.pde.PluginNature"* ]] && [[ $natures == *"org.eclipse.jdt.core.javanature"* ]]; then
if [[ $natures != *"org.eclipse.pde.api.tools.apiAnalysisNature"* ]]; then
if ! echo $i | grep -E '\.tests?[/\.]' > /dev/null && ! echo $i | grep -E '\.examples?[/\.]' > /dev/null && ! echo $i | grep -E 'org.eclipse.cdt.lsp.cquery' > /dev/null; then
echo "$d is missing API Tools Nature - Turn it on in Eclipse by 1) Right-click project 2) Plug-in tools -> API Tools Setup"
exit 1
fi
fi
fi
done