Update to netbeans 12.6
authorNot Zed <notzed@gmail.com>
Wed, 8 Dec 2021 08:15:59 +0000 (18:45 +1030)
committerNot Zed <notzed@gmail.com>
Wed, 8 Dec 2021 08:15:59 +0000 (18:45 +1030)
nbproject/build-impl.xml
nbproject/genfiles.properties
nbproject/project.properties
nbproject/project.xml

index 46a5edb..db8a4d1 100644 (file)
@@ -49,9 +49,236 @@ is divided into following sections:
         <property name="default.javac.source" value="9"/>
         <property name="default.javac.target" value="9"/>
     </target>
-    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+    <target depends="-pre-init,-init-private,-init-user" name="-init-pre-project">
         <property file="nbproject/configs/${config}.properties"/>
         <property file="nbproject/project.properties"/>
+        <property name="netbeans.modular.tasks.version" value="1"/>
+        <property location="${build.dir}/tasks/${netbeans.modular.tasks.version}" name="netbeans.modular.tasks.dir"/>
+    </target>
+    <target depends="-init-pre-project" name="-check-netbeans-tasks">
+        <condition property="netbeans.tasks.compiled">
+            <available file="${netbeans.modular.tasks.dir}/out/netbeans/ModuleInfoSelector.class"/>
+        </condition>
+    </target>
+    <target depends="-init-pre-project,-check-netbeans-tasks" name="-init-compile-netbeans-tasks" unless="netbeans.tasks.compiled">
+        <echo file="${netbeans.modular.tasks.dir}/src/netbeans/CoalesceKeyvalue.java">
+
+package netbeans;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+public class CoalesceKeyvalue extends Task {
+    private String property;
+
+    public void setProperty(String property) {
+        this.property = property;
+    }
+
+    private String value;
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    private String valueSep;
+
+    public void setValueSep(String valueSep) {
+        this.valueSep = valueSep;
+    }
+
+    private String entrySep;
+
+    public void setEntrySep(String entrySep) {
+        this.entrySep = entrySep;
+    }
+
+    private String multiSep;
+
+    public void setMultiSep(String multiSep) {
+        this.multiSep = multiSep;
+    }
+
+    private String outSep;
+
+    public void setOutSep(String outSep) {
+        this.outSep = outSep;
+    }
+
+    @Override
+    public void execute() throws BuildException {
+        List&lt;String&gt; result = new ArrayList&lt;&gt;();
+        Map&lt;String, List&lt;String&gt;&gt; module2Paths = new HashMap&lt;&gt;();
+
+        for (String entry : value.split(Pattern.quote(entrySep))) {
+            String[] keyValue = entry.split(Pattern.quote(valueSep), 2);
+            if (keyValue.length == 1) {
+                result.add(keyValue[0]);
+            } else {
+                module2Paths.computeIfAbsent(keyValue[0], s -&gt; new ArrayList&lt;&gt;())
+                            .add(keyValue[1].trim());
+            }
+        }
+        module2Paths.entrySet()
+                    .stream()
+                    .forEach(e -&gt; result.add(e.getKey() + valueSep + e.getValue().stream().collect(Collectors.joining(multiSep))));
+        getProject().setProperty(property, result.stream().collect(Collectors.joining(" " + entrySep)));
+    }
+
+}
+
+                </echo>
+        <echo file="${netbeans.modular.tasks.dir}/src/netbeans/ModsourceRegexp.java">
+            
+package netbeans;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+public class ModsourceRegexp extends Task {
+    private String property;
+
+    public void setProperty(String property) {
+        this.property = property;
+    }
+
+    private String filePattern;
+
+    public void setFilePattern(String filePattern) {
+        this.filePattern = filePattern;
+    }
+
+    private String modsource;
+
+    public void setModsource(String modsource) {
+        this.modsource = modsource;
+    }
+
+    private List&lt;String&gt; expandGroup(String grp) {
+        List&lt;String&gt; exp = new ArrayList&lt;&gt;();
+        String item = "";
+        int depth = 0;
+
+        for (int i = 0; i &lt; grp.length(); i++) {
+            char c = grp.charAt(i);
+            switch (c) {
+                case '{':
+                    if (depth++ == 0) {
+                        continue;
+                    }
+                    break;
+                case '}':
+                    if (--depth == 0) {
+                        exp.add(item);
+                        continue;
+                    }
+                    break;
+                case ',':
+                    if (depth == 1) {
+                        exp.add(item);
+                        item = "";
+                        continue;
+                    }
+                default:
+                    break;
+            }
+            item = item + c;
+        }
+        return exp;
+    }
+
+    private List&lt;String&gt; pathVariants(String spec) {
+        return pathVariants(spec, new ArrayList&lt;&gt;());
+    }
+
+    private List&lt;String&gt; pathVariants(String spec, List&lt;String&gt; res) {
+        int start  = spec.indexOf('{');
+        if (start == -1) {
+            res.add(spec);
+            return res;
+        }
+        int depth = 1;
+        int end;
+        for (end = start + 1; end &lt; spec.length() &amp;&amp; depth &gt; 0; end++) {
+            char c = spec.charAt(end);
+            switch (c) {
+                case '{': depth++; break;
+                case '}': depth--; break;
+            }
+        }
+        String prefix = spec.substring(0, start);
+        String suffix = spec.substring(end);
+        expandGroup(spec.substring(start, end)).stream().forEach(item -&gt; {
+            pathVariants(prefix + item + suffix, res);
+        });
+        return res;
+    }
+
+    private String toRegexp2(String spec, String filepattern, String separator) {
+        List&lt;String&gt; prefixes = new ArrayList&lt;&gt;();
+        List&lt;String&gt; suffixes = new ArrayList&lt;&gt;();
+        pathVariants(spec).forEach(item -&gt; {
+            suffixes.add(item);
+        });
+        String tail = "";
+        String separatorString = separator;
+        if ("\\".equals(separatorString)) {
+            separatorString = "\\\\";
+        }
+        if (filepattern != null &amp;&amp; !Objects.equals(filepattern, tail)) {
+            tail = separatorString + filepattern;
+        }
+        return "([^" + separatorString +"]+)\\Q" + separator + "\\E(" + suffixes.stream().collect(Collectors.joining("|")) + ")" + tail;
+    }
+
+    @Override
+    public void execute() throws BuildException {
+        getProject().setProperty(property, toRegexp2(modsource, filePattern, getProject().getProperty("file.separator")));
+    }
+
+}
+
+                </echo>
+        <echo file="${netbeans.modular.tasks.dir}/src/netbeans/ModuleInfoSelector.java">
+            
+package netbeans;
+
+import java.io.File;
+import java.util.Arrays;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.selectors.BaseExtendSelector;
+
+public class ModuleInfoSelector extends BaseExtendSelector {
+
+    @Override
+    public boolean isSelected(File basedir, String filename, File file) throws BuildException {
+        String extension = Arrays.stream(getParameters())
+                                 .filter(p -&gt; "extension".equals(p.getName()))
+                                 .map(p -&gt; p.getValue())
+                                 .findAny()
+                                 .get();
+        return !new File(file, "module-info." + extension).exists();
+    }
+
+}
+
+                </echo>
+        <mkdir dir="${netbeans.modular.tasks.dir}/out"/>
+        <javac classpath="${ant.core.lib}" destdir="${netbeans.modular.tasks.dir}/out" srcdir="${netbeans.modular.tasks.dir}/src"/>
+    </target>
+    <target depends="-init-pre-project,-init-compile-netbeans-tasks" name="-init-project">
+        <taskdef classname="netbeans.CoalesceKeyvalue" classpath="${netbeans.modular.tasks.dir}/out" name="coalesce_keyvalue" uri="http://www.netbeans.org/ns/j2se-modular-project/1"/>
+        <taskdef classname="netbeans.ModsourceRegexp" classpath="${netbeans.modular.tasks.dir}/out" name="modsource_regexp" uri="http://www.netbeans.org/ns/j2se-modular-project/1"/>
     </target>
     <target name="-init-source-module-properties">
         <property name="javac.modulepath" value=""/>
@@ -69,43 +296,7 @@ is divided into following sections:
         <property name="dist.jlink.output" value="${dist.jlink.dir}/${application.title}"/>
     </target>
     <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
-        <j2semodularproject1:property xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" name="platform.home" value="platforms.${platform.active}.home"/>
-        <j2semodularproject1:property xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" name="platform.bootcp" value="platforms.${platform.active}.bootclasspath"/>
-        <j2semodularproject1:property xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" name="platform.compiler" value="platforms.${platform.active}.compile"/>
-        <j2semodularproject1:property xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" name="platform.javac.tmp" value="platforms.${platform.active}.javac"/>
-        <condition property="platform.javac" value="${platform.home}/bin/javac">
-            <equals arg1="${platform.javac.tmp}" arg2="$${platforms.${platform.active}.javac}"/>
-        </condition>
-        <property name="platform.javac" value="${platform.javac.tmp}"/>
-        <j2semodularproject1:property xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" name="platform.java.tmp" value="platforms.${platform.active}.java"/>
-        <condition property="platform.java" value="${platform.home}/bin/java">
-            <equals arg1="${platform.java.tmp}" arg2="$${platforms.${platform.active}.java}"/>
-        </condition>
-        <property name="platform.java" value="${platform.java.tmp}"/>
-        <j2semodularproject1:property xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" name="platform.javadoc.tmp" value="platforms.${platform.active}.javadoc"/>
-        <condition property="platform.javadoc" value="${platform.home}/bin/javadoc">
-            <equals arg1="${platform.javadoc.tmp}" arg2="$${platforms.${platform.active}.javadoc}"/>
-        </condition>
-        <property name="platform.javadoc" value="${platform.javadoc.tmp}"/>
-        <condition property="platform.invalid" value="true">
-            <or>
-                <contains string="${platform.javac}" substring="$${platforms."/>
-                <contains string="${platform.java}" substring="$${platforms."/>
-                <contains string="${platform.javadoc}" substring="$${platforms."/>
-            </or>
-        </condition>
-        <fail unless="platform.home">Must set platform.home</fail>
-        <fail unless="platform.bootcp">Must set platform.bootcp</fail>
-        <fail unless="platform.java">Must set platform.java</fail>
-        <fail unless="platform.javac">Must set platform.javac</fail>
-        <fail if="platform.invalid">
- The J2SE Platform is not correctly set up.
- Your active platform is: ${platform.active}, but the corresponding property "platforms.${platform.active}.home" is not found in the project's properties files. 
- Either open the project in the IDE and setup the Platform with the same name or add it manually.
- For example like this:
-     ant -Duser.properties.file=&lt;path_to_property_file&gt; jar (where you put the property "platforms.${platform.active}.home" in a .properties file)
-  or ant -Dplatforms.${platform.active}.home=&lt;path_to_JDK_home&gt; jar (where no properties file is used) 
-  </fail>
+        <property name="platform.java" value="${java.home}/bin/java"/>
         <j2semodularproject1:modsource_regexp xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" modsource="${test.src.dir.path}" property="have.tests.test.src.dir.regexp"/>
         <dirset dir="${basedir}/${test.src.dir}" id="have.tests.test.src.dir.set" includes="*/*">
             <filename regex="${have.tests.test.src.dir.regexp}"/>
@@ -123,9 +314,6 @@ is divided into following sections:
         <j2semodularproject1:modsource_regexp xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" modsource="${test.src.dir.path}" property="have.tests.test.src.dir.regexp"/>
         <dirset dir="${basedir}/${test.src.dir}" id="have.tests.test.src.dir.patchset" includes="*/*">
             <filename regex="${have.tests.test.src.dir.regexp}"/>
-            <scriptselector language="javascript">
-                            self.setSelected(!new java.io.File(file, "module-info.java").exists());
-                        </scriptselector>
         </dirset>
         <union id="have.tests.patchset">
             <dirset refid="have.tests.test.src.dir.patchset"/>
@@ -221,6 +409,20 @@ is divided into following sections:
         <condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}">
             <isset property="profile.available"/>
         </condition>
+        <condition else="false" property="jdkBug6558476">
+            <and>
+                <matches pattern="1\.[56]" string="${java.specification.version}"/>
+                <not>
+                    <os family="unix"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="false" property="javac.fork">
+            <or>
+                <istrue value="${jdkBug6558476}"/>
+                <istrue value="${javac.external.vm}"/>
+            </or>
+        </condition>
         <condition property="main.class.check.available">
             <and>
                 <isset property="libs.CopyLibs.classpath"/>
@@ -345,7 +547,7 @@ is divided into following sections:
                         </path>
                     </resourcecount>
                 </condition>
-                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" target="${javac.target}" tempdir="${java.io.tmpdir}">
                     <classpath>
                         <path path="@{classpath}"/>
                     </classpath>
@@ -438,7 +640,7 @@ is divided into following sections:
             <sequential>
                 <property location="${build.dir}/empty" name="empty.dir"/>
                 <property name="junit.forkmode" value="perTest"/>
-                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
                     <syspropertyset>
                         <propertyref prefix="test-sys-prop."/>
                         <mapper from="test-sys-prop.*" to="*" type="glob"/>
@@ -523,7 +725,7 @@ is divided into following sections:
                     </fileset>
                 </union>
                 <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
-                <testng classfilesetref="test.set" failureProperty="tests.failed" jvm="${platform.java}" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="notzed.zcl" testname="TestNG tests" workingDir="${work.dir}">
+                <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="notzed.zcl" testname="TestNG tests" workingDir="${work.dir}">
                     <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
                     <propertyset>
                         <propertyref prefix="test-sys-prop."/>
@@ -754,9 +956,6 @@ is divided into following sections:
                     <classpath>
                         <path path="@{classpath}"/>
                     </classpath>
-                    <bootclasspath>
-                        <path path="${platform.bootcp}"/>
-                    </bootclasspath>
                 </nbjpdastart>
             </sequential>
         </macrodef>
@@ -806,7 +1005,7 @@ is divided into following sections:
             <attribute default="jvm" name="jvm"/>
             <element name="customize" optional="true"/>
             <sequential>
-                <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" jvm="${platform.java}" module="@{modulename}">
+                <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" module="@{modulename}">
                     <classpath>
                         <path path="@{classpath}"/>
                     </classpath>
@@ -893,131 +1092,6 @@ is divided into following sections:
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <scriptdef language="javascript" name="coalesce_keyvalue" uri="http://www.netbeans.org/ns/j2se-modular-project/1">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <attribute name="value-sep"/>
-        <attribute name="entry-sep"/>
-        <attribute name="multi-sep"/>
-        <attribute name="out-sep"/>
-                            
-
-            function coalesce(input, keyValueSeparator, multiSeparator, entrySeparator) {
-                var result = [];
-                var values = {};
-
-                (typeof input === "string" ? input.split(entrySeparator) : input).forEach(function(entry) {
-                    var idx = entry.indexOf(keyValueSeparator);
-                    if (idx &lt; 1) {
-                        result.push(entry);
-                    } else {
-                        var key = entry.substring(0, idx);
-                        var val = entry.substring(idx + 1);
-                        if (!values[key]) {
-                            values[key] = [];
-                        }
-                        values[key].push(val.trim());
-                    }
-                });
-                Object.keys(values).sort().forEach(function(k) {
-                    result.push(k + keyValueSeparator + values[k].join(multiSeparator));
-                });
-                return result.join(" " + entrySeparator);
-            }
-            self.project.setProperty(attributes.get("property"),
-                coalesce(attributes.get("value"), 
-                attributes.get("value-sep"), 
-                attributes.get("entry-sep"),
-                attributes.get("multi-sep")
-            ));
-            
-            
-    
-    </scriptdef>
-    <scriptdef language="javascript" name="modsource_regexp" uri="http://www.netbeans.org/ns/j2se-modular-project/1">
-        <attribute name="property"/>
-        <attribute name="filePattern"/>
-        <attribute name="modsource"/>
-                        function expandGroup(grp) {
-            var exp = [];
-            var item = "";
-            var depth = 0;
-
-            for (i = 0; i &lt; grp.length; i++) {
-                var c = grp[i];
-                switch (c) {
-                    case '{':
-                        if (depth++ === 0) {
-                            continue;
-                        }
-                        break;
-                    case '}':
-                        if (--depth === 0) {
-                            exp.push(item);
-                            continue;
-                        }
-                        break;
-                    case ',':
-                        if (depth === 1) {
-                            exp.push(item);
-                            item = "";
-                            continue;
-                        }
-                    default:
-                        break;
-                }
-                item = item + c;
-            }
-            return exp;
-        }
-
-        function pathVariants(spec, res) {
-            res = res || [];
-            var start  = spec.indexOf('{');
-            if (start === -1) {
-                res.push(spec);
-                return res;
-            }
-            var depth = 1;
-            var end;
-            for (end = start + 1; end &lt; spec.length &amp;&amp; depth &gt; 0; end++) {
-                var c = spec[end];
-                switch (c) {
-                    case '{': depth++; break;
-                    case '}': depth--; break;
-                }
-            }
-            var prefix = spec.substring(0, start);
-            var suffix = spec.substring(end);
-            expandGroup(spec.slice(start, end)).forEach(function (item) {
-                pathVariants(prefix + item + suffix, res);
-            })
-            return res;
-        }
-
-        function toRegexp2(spec, filepattern, separator) {
-            var prefixes = [];
-            var suffixes = [];
-            pathVariants(spec).forEach(function(item) {
-                suffixes.push(item);
-            });
-            var tail = "";
-            var separatorString = separator;
-            if (separatorString == "\\") {
-                separatorString = "\\\\";
-            }
-            if (filepattern &amp;&amp; filepattern != tail) {
-                tail = separatorString + filepattern;
-            }
-            return "([^" + separatorString +"]+)\\Q" + separator + "\\E(" + suffixes.join("|") + ")" + tail;
-        }
-                self.project.setProperty(attributes.get("property"), 
-                    toRegexp2(attributes.get("modsource"), attributes.get("filepattern"), self.project.getProperty("file.separator")));
-            
-            
-            
-    
-    </scriptdef>
     <target if="do.depend.true" name="-compile-depend">
         <pathconvert property="build.generated.subdirs">
             <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
@@ -1212,8 +1286,8 @@ is divided into following sections:
                 <isset property="main.class.available"/>
             </and>
         </condition>
-        <property name="platform.jlink" value="${platform.home}/bin/jlink"/>
-        <property name="jlink.systemmodules.internal" value="${platform.home}/jmods"/>
+        <property name="platform.jlink" value="${jdk.home}/bin/jlink"/>
+        <property name="jlink.systemmodules.internal" value="${jdk.home}/jmods"/>
         <exec executable="${platform.jlink}">
             <arg value="--module-path"/>
             <arg path="${jlink.systemmodules.internal}:${run.modulepath}:${dist.dir}"/>
@@ -1468,19 +1542,16 @@ is divided into following sections:
                 </not>
             </and>
         </condition>
-        <exec executable="${platform.java}" failonerror="false" outputproperty="platform.version.output">
-            <arg value="-version"/>
-        </exec>
         <condition else="" property="bug5101868workaround" value="*.java">
-            <matches multiline="true" pattern="1\.[56](\..*)?" string="${platform.version.output}"/>
+            <matches pattern="1\.[56](\..*)?" string="${java.version}"/>
         </condition>
         <condition else="" property="javadoc.html5.cmd.line.arg" value="-html5">
             <and>
                 <isset property="javadoc.html5"/>
-                <available file="${platform.home}${file.separator}lib${file.separator}jrt-fs.jar"/>
+                <available file="${jdk.home}${file.separator}lib${file.separator}jrt-fs.jar"/>
             </and>
         </condition>
-        <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" executable="${platform.javadoc}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+        <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
             <classpath>
                 <path path="${javac.classpath}"/>
             </classpath>
@@ -1553,9 +1624,9 @@ is divided into following sections:
         </pathconvert>
         <pathconvert pathsep=" " property="run.test.patchmodules.list">
             <dirset dir="${build.test.modules.dir}" includes="*">
-                <scriptselector language="javascript">
-                            self.setSelected(!new java.io.File(file, "module-info.class").exists());
-                        </scriptselector>
+                <custom classname="netbeans.ModuleInfoSelector" classpath="${netbeans.modular.tasks.dir}/out">
+                    <param name="extension" value="class"/>
+                </custom>
             </dirset>
             <chainedmapper>
                 <filtermapper>
@@ -1564,7 +1635,7 @@ is divided into following sections:
                 <regexpmapper from=".*\Q${file.separator}\E([^${file.separator.string}]+)$" to="--patch-module \1=\0"/>
             </chainedmapper>
         </pathconvert>
-        <j2semodularproject1:coalesce_keyvalue xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" entry-sep="${path.separator}" multi-sep="--patch-module " property="run.test.patchmodules" value="${run.test.patchmodules.list}" value-sep="="/>
+        <j2semodularproject1:coalesce_keyvalue xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" entrySep="--patch-module " multiSep="${path.separator}" property="run.test.patchmodules" value="${run.test.patchmodules.list}" valueSep="="/>
         <condition else="" property="run.test.addmodules.internal" value="--add-modules ${run.test.addmodules.list}">
             <isset property="run.test.addmodules.list"/>
         </condition>
@@ -1597,7 +1668,7 @@ is divided into following sections:
                 </filtermapper>
             </chainedmapper>
         </pathconvert>
-        <j2semodularproject1:coalesce_keyvalue xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" entry-sep="${path.separator}" multi-sep="--patch-module " property="compile.test.patchmodules" value="${compile.test.patchmodule.internal}" value-sep="="/>
+        <j2semodularproject1:coalesce_keyvalue xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1" entrySep="--patch-module " multiSep="${path.separator}" property="compile.test.patchmodules" value="${compile.test.patchmodule.internal}" valueSep="="/>
         <property name="javac.test.moduleargs" value="${compile.test.patchmodules} ${compile.test.addreads}"/>
     </target>
     <target depends="-init-test-javac-module-properties" name="-init-test-module-properties">
@@ -1714,6 +1785,7 @@ is divided into following sections:
     </target>
     <target depends="init,compile-test-single,-init-test-run-module-properties,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
     <target depends="init,compile-test-single,-init-test-run-module-properties,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
+    <target depends="debug-test-method" name="debug-single-method"/>
     <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
         <property name="debug.modules.dir" value="${build.test.modules.dir}"/>
         <j2semodularproject1:nbjpdareload xmlns:j2semodularproject1="http://www.netbeans.org/ns/j2se-modular-project/1"/>
@@ -1768,7 +1840,10 @@ is divided into following sections:
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-recompile-netbeans-tasks-after-clean">
+        <antcall inheritall="false" target="-init-compile-netbeans-tasks"/>
+    </target>
+    <target depends="init,deps-clean,-do-clean,-recompile-netbeans-tasks-after-clean,-post-clean" description="Clean build products." name="clean"/>
     <target name="-check-call-dep">
         <property file="${call.built.properties}" prefix="already.built."/>
         <condition property="should.call.dep">
index 10ac352..5698f3e 100644 (file)
@@ -3,6 +3,6 @@ build.xml.script.CRC32=b55362bc
 build.xml.stylesheet.CRC32=32069288@1.6.1
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=2c0455af
-nbproject/build-impl.xml.script.CRC32=0af0e4e8
-nbproject/build-impl.xml.stylesheet.CRC32=496e4d3b@1.9
+nbproject/build-impl.xml.data.CRC32=697f393b
+nbproject/build-impl.xml.script.CRC32=c40dc6a1
+nbproject/build-impl.xml.stylesheet.CRC32=d1ebcf0f@1.16
index 25a39d7..ad1c93c 100644 (file)
@@ -48,9 +48,10 @@ javac.modulepath=\
 javac.processormodulepath=
 javac.processorpath=\
     ${javac.classpath}
-javac.source=13
-javac.target=13
+javac.source=17
+javac.target=17
 javac.test.classpath=\
+    ${libs.junit_4.classpath}:\
     ${javac.classpath}
 javac.test.modulepath=\
     ${javac.modulepath}:\
@@ -75,13 +76,13 @@ jlink.additionalmodules=
 jlink.additionalparam=
 jlink.launcher=true
 jlink.launcher.name=notzed.zcl
-platform.active=JDK_15_panama
+platform.active=default_platform
 project.license=gpl3-notzed
 run.classpath=
 # Space-separated list of JVM arguments used when running the project.
 # You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
 # To set system properties for unit tests define test-sys-prop.name=value:
-run.jvmargs=--add-exports jdk.incubator.foreign/jdk.incubator.foreign.unsafe=notzed.zcl
+run.jvmargs=--enable-native-access=notzed.zcl -Djava.library.path=/usr/lib64
 run.modulepath=\
     ${javac.modulepath}:\
     ${build.modules.dir}
index 575ebab..4ab7bb7 100644 (file)
@@ -4,7 +4,6 @@
     <configuration>
         <data xmlns="http://www.netbeans.org/ns/j2se-modular-project/1">
             <name>notzed.zcl</name>
-            <explicit-platform explicit-source-supported="true"/>
             <source-roots>
                 <root id="src.gen2.dir" pathref="src.gen2.dir.path"/>
                 <root id="src.dir" pathref="src.dir.path"/>