Ticket #21510: 21510.2.patch

File 21510.2.patch, 14.0 KB (added by taylor.smock, 4 years ago)

Same as attachment:21510.patch except without unsupported Java releases (still has future Java releases)

  • build.xml

    diff --git a/build.xml b/build.xml
    index 9ef2b83188..2c1ad2719f 100644
    a b  
    3030        />
    3131        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy.jar.file}"/>
    3232    </target>
    33     <target name="init-properties" description="Initialize properties for the build">
     33  <target name="init-properties" description="Initialize properties for the build">
    3434        <property environment="env"/>
    3535        <!-- Load properties in a target and not at top level, so this build file can be
    3636        imported from an IDE ant file (Netbeans) without messing up IDE properties.
     
    9393        </condition>
    9494        <!-- For Java specific stuff by version -->
    9595        <condition property="isJava9"><matches string="${ant.java.version}" pattern="(1.)?(9|1[0-9])" /></condition>
    96         <condition property="isJava10"><matches string="${ant.java.version}" pattern="1[0-9]" /></condition>
    97         <condition property="isJava11"><matches string="${ant.java.version}" pattern="1[1-9]" /></condition>
    98         <condition property="isJava12"><matches string="${ant.java.version}" pattern="1[2-9]" /></condition>
    99         <condition property="isJava13"><matches string="${ant.java.version}" pattern="1[3-9]" /></condition>
    100         <condition property="isJava14"><matches string="${ant.java.version}" pattern="1[4-9]" /></condition>
    101         <condition property="isJava16"><matches string="${ant.java.version}" pattern="1[6-9]" /></condition>
    102         <condition property="isJava18"><matches string="${ant.java.version}" pattern="1[8-9]" /></condition>
     96        <condition property="isJava10"><matches string="${ant.java.version}" pattern="(1|2)[0-9]" /></condition>
     97        <condition property="isJava11"><matches string="${ant.java.version}" pattern="1[1-9]|[2-9][0-9]" /></condition>
     98        <condition property="isJava12"><matches string="${ant.java.version}" pattern="1[2-9]|[2-9][0-9]" /></condition>
     99        <condition property="isJava13"><matches string="${ant.java.version}" pattern="1[3-9]|[2-9][0-9]" /></condition>
     100        <condition property="isJava14"><matches string="${ant.java.version}" pattern="1[4-9]|[2-9][0-9]" /></condition>
     101        <condition property="isJava16"><matches string="${ant.java.version}" pattern="1[6-9]|[2-9][0-9]" /></condition>
     102        <condition property="isJava18"><matches string="${ant.java.version}" pattern="1[8-9]|[2-9][0-9]" /></condition>
     103        <condition property="isJava19"><matches string="${ant.java.version}" pattern="19|[2-9][0-9]" /></condition>
     104        <condition property="isJava20"><matches string="${ant.java.version}" pattern="[2-9][0-9]" /></condition>
     105        <condition property="isJava21"><matches string="${ant.java.version}" pattern="2[1-9]|[3-9][0-9]" /></condition>
    103106        <!-- Disable jacoco on Java 18+, see https://github.com/jacoco/jacoco/pull/1132 -->
    104107        <condition property="coverageByDefault">
    105108            <not>
    Build-Date: ${build.tstamp}  
    182185                <!-- Java 9 stuff. Entries are safely ignored by Java 8 -->
    183186                <attribute name="Add-Exports" value="java.base/sun.security.action java.desktop/com.apple.eawt java.desktop/com.sun.imageio.spi java.desktop/com.sun.imageio.plugins.jpeg javafx.graphics/com.sun.javafx.application jdk.deploy/com.sun.deploy.config" />
    184187                <attribute name="Add-Opens" value="java.base/java.lang java.base/java.nio java.base/jdk.internal.loader java.base/jdk.internal.ref java.desktop/javax.imageio.spi java.desktop/javax.swing.text.html java.prefs/java.util.prefs" />
     188                <!-- Indicate that this jar may have version specific classes. Only used in Java9+. -->
     189                <attribute name="Multi-Release" value="true"/>
    185190            </manifest>
    186191        </jar>
    187192        <!-- Sign jar if all environment variables are set -->
    Build-Date: ${build.tstamp}  
    202207            <arg value="${mapcss.dir}/MapCSSParser.jj"/>
    203208        </java>
    204209    </target>
     210    <macrodef name="call-javac-compile">
     211        <attribute name="sourcepath" default=""/>
     212        <attribute name="srcdir" default="${src.dir}"/>
     213        <attribute name="fork" default="yes"/>
     214        <attribute name="excludes" default=""/>
     215        <attribute name="includes" default="**/*.java"/>
     216        <attribute name="destdir" default="${build.dir}"/>
     217        <attribute name="debug" default="on"/>
     218        <attribute name="includeantruntime" default="false"/>
     219        <attribute name="encoding" default="UTF-8"/>
     220        <attribute name="release" default="${java.lang.version}"/>
     221        <element name="cp-elements" optional="true"/>
     222        <sequential>
     223          <javac sourcepath="@{sourcepath}" srcdir="@{srcdir}" fork="@{fork}"
     224            includes="@{includes}" excludes="@{excludes}" destdir="@{destdir}" release="@{release}"
     225            debug="@{debug}" includeantruntime="@{includeantruntime}" encoding="@{encoding}">
     226              <compilerarg value="-J-Xbootclasspath/p:${toString:errorprone_javac.classpath}" unless:set="isJava9"/>
     227              <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
     228              <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
     229              <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
     230              <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
     231              <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
     232              <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
     233              <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
     234              <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
     235              <compilerarg value="-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
     236              <compilerarg line="-XDcompilePolicy=simple"/>
     237              <compilerarg value="-processorpath"/>
     238              <compilerarg value="${toString:errorprone.classpath}:${toString:semanticdb.classpath}"/>
     239              <compilerarg value="-Xlint:cast"/>
     240              <compilerarg value="-Xlint:deprecation"/>
     241              <compilerarg value="-Xlint:dep-ann"/>
     242              <compilerarg value="-Xlint:divzero"/>
     243              <compilerarg value="-Xlint:empty"/>
     244              <compilerarg value="-Xlint:finally"/>
     245              <compilerarg value="-Xlint:overrides"/>
     246              <!--<compilerarg value="-Xlint:rawtypes"/>-->
     247              <compilerarg value="-Xlint:static"/>
     248              <compilerarg value="-Xlint:try"/>
     249              <compilerarg value="-Xlint:unchecked"/>
     250              <!-- Undocumented argument to ignore "Sun internal proprietary API" warning, see http://stackoverflow.com/a/13862308/2257172 -->
     251              <compilerarg value="-XDignore.symbol.file"/>
     252              <compilerarg value="-Xplugin:ErrorProne -XepExcludedPaths:.*/parsergen/.* -Xep:ReferenceEquality:OFF -Xep:FutureReturnValueIgnored:OFF -Xep:JdkObsolete:OFF -Xep:EqualsGetClass:OFF -Xep:UndefinedEquals:OFF -Xep:BadImport:OFF -Xep:AnnotateFormatMethod:OFF -Xep:JavaUtilDate:OFF -Xep:DoNotCallSuggester:OFF -Xep:BanSerializableRead:OFF -Xep:RestrictedApiChecker:OFF -Xep:InlineMeSuggester:OFF" unless:set="noErrorProne"/>
     253              <compilerarg line="-Xmaxwarns 1000"/>
     254              <compilerarg value="-Xplugin:semanticdb -sourceroot:@{srcdir} -targetroot:${build.dir}/semanticdb" if:set="lsif" />
     255              <classpath>
     256                  <path refid="runtime.path"/>
     257                  <cp-elements/>
     258              </classpath>
     259          </javac>
     260      </sequential>
     261    </macrodef>
     262    <macrodef name="call-javac-compile-mrjar">
     263      <!--
     264        See https://openjdk.java.net/jeps/238 for the specification
     265        The big bits are that the version specific files should be in META-INF/versions/${javaVersion}/
     266        using the same package scheme. And that the files in the version specific directories are *full*
     267        implementations of the class they are replacing.
     268      -->
     269      <attribute name="release"/>
     270      <sequential>
     271        <condition property="java@{release}DirExists">
     272          <and>
     273            <isset property="isJava@{release}"/>
     274            <resourceexists>
     275              <file file="${src.dir}/main/java-@{release}"/>
     276            </resourceexists>
     277          </and>
     278        </condition>
     279        <echo message="Compiling Java @{release} files" if:true="${java@{release}DirExists}"/>
     280        <mkdir dir="${build.dir}/META-INF/versions/@{release}" if:true="${java@{release}DirExists}"/>
     281        <call-javac-compile srcdir="${src.dir}/main/java-@{release}" destdir="${build.dir}/META-INF/versions/@{release}" release="@{release}" if:true="${java@{release}DirExists}">
     282            <cp-elements>
     283              <pathelement path="${build.dir}"/>
     284            </cp-elements>
     285        </call-javac-compile>
     286      </sequential>
     287    </macrodef>
    205288    <target name="compile" depends="init,javacc" unless="compile.notRequired" description="Compile JOSM">
    206289        <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="errorprone.classpath" conf="errorprone"/>
    207290        <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="errorprone_javac.classpath" conf="errorprone_javac"/>
    208291        <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="semanticdb.classpath" conf="semanticdb" if:set="lsif"/>
    209292        <!-- JOSM -->
    210         <javac sourcepath="" srcdir="${src.dir}" fork="yes"
    211             excludes="com/**,org/apache/commons/**,**/package-info.java"
    212             destdir="${build.dir}" release="${java.lang.version}" debug="on" includeantruntime="false" encoding="UTF-8">
    213             <compilerarg value="-J-Xbootclasspath/p:${toString:errorprone_javac.classpath}" unless:set="isJava9"/>
    214             <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
    215             <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
    216             <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
    217             <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
    218             <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
    219             <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
    220             <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
    221             <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
    222             <compilerarg value="-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
    223             <compilerarg line="-XDcompilePolicy=simple"/>
    224             <compilerarg value="-processorpath"/>
    225             <compilerarg value="${toString:errorprone.classpath}:${toString:semanticdb.classpath}"/>
    226             <compilerarg value="-Xlint:cast"/>
    227             <compilerarg value="-Xlint:deprecation"/>
    228             <compilerarg value="-Xlint:dep-ann"/>
    229             <compilerarg value="-Xlint:divzero"/>
    230             <compilerarg value="-Xlint:empty"/>
    231             <compilerarg value="-Xlint:finally"/>
    232             <compilerarg value="-Xlint:overrides"/>
    233             <!--<compilerarg value="-Xlint:rawtypes"/>-->
    234             <compilerarg value="-Xlint:static"/>
    235             <compilerarg value="-Xlint:try"/>
    236             <compilerarg value="-Xlint:unchecked"/>
    237             <!-- Undocumented argument to ignore "Sun internal proprietary API" warning, see http://stackoverflow.com/a/13862308/2257172 -->
    238             <compilerarg value="-XDignore.symbol.file"/>
    239             <compilerarg value="-Xplugin:ErrorProne -XepExcludedPaths:.*/parsergen/.* -Xep:ReferenceEquality:OFF -Xep:FutureReturnValueIgnored:OFF -Xep:JdkObsolete:OFF -Xep:EqualsGetClass:OFF -Xep:UndefinedEquals:OFF -Xep:BadImport:OFF -Xep:AnnotateFormatMethod:OFF -Xep:JavaUtilDate:OFF -Xep:DoNotCallSuggester:OFF -Xep:BanSerializableRead:OFF -Xep:RestrictedApiChecker:OFF -Xep:InlineMeSuggester:OFF" unless:set="noErrorProne"/>
    240             <compilerarg line="-Xmaxwarns 1000"/>
    241             <compilerarg value="-Xplugin:semanticdb -sourceroot:${src.dir} -targetroot:${build.dir}/semanticdb" if:set="lsif" />
    242             <classpath>
    243                 <path refid="runtime.path"/>
    244             </classpath>
    245         </javac>
     293        <call-javac-compile excludes="com/**,org/apache/commons/**,**/package-info.java,**/module-info.java,main/**" release="${java.lang.version}"/>
     294        <!-- Java 11 specific files (2018-09 LTS) -->
     295        <call-javac-compile-mrjar release="11"/>
     296        <!-- Java 17 specific files (2021-09 LTS) -->
     297        <call-javac-compile-mrjar release="17"/>
     298        <!-- Java 18 specific files -->
     299        <call-javac-compile-mrjar release="18"/>
     300        <!-- Java 19 specific files -->
     301        <call-javac-compile-mrjar release="19"/>
     302        <!-- Java 20 specific files -->
     303        <call-javac-compile-mrjar release="20"/>
     304        <!-- Java 21 specific files (2023-09 LTS) -->
     305        <call-javac-compile-mrjar release="21"/>
    246306    </target>
    247307    <target name="create-resources" depends="create-revision" description="Create generated resource files">
    248308        <copy todir="${resources.dir}">