Skip to content

Commit a4a27b5

Browse files
committed
Add provisioning support through a JSON file.
Closes #1220
1 parent 3c0ab94 commit a4a27b5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+2072
-169
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
/.idea/compiler.xml
88
/fx.zip
99
/README.md
10+
/provision.json
1011
.DS_Store
1112
windows-debug-launcher.nsi.in

ant/apple/installer.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,21 @@
199199
<fileset dir="${dist.dir}/demo" includes="**"/>
200200
</copy>
201201

202+
<!-- Provision files -->
203+
<delete dir="${bundle.dir}/Contents/Resources/provision" failonerror="false"/>
204+
<copy todir="${bundle.dir}/Contents/Resources/provision" failonerror="false">
205+
<fileset dir="${provision.dir}" includes="**"/>
206+
</copy>
207+
<chmod perm="a+x" type="file" verbose="true">
208+
<fileset dir="${bundle.dir}/Contents/Resources/" casesensitive="false">
209+
<!-- Must iterate on parent directory in case "provision" is missing -->
210+
<include name="provision/*"/>
211+
<exclude name="provision/*.crt"/>
212+
<exclude name="provision/*.txt"/>
213+
<exclude name="provision/*.json"/>
214+
</fileset>
215+
</chmod>
216+
202217
<!-- Java runtime -->
203218
<copy todir="${bundle.dir}/Contents/PlugIns/Java.runtime">
204219
<fileset dir="${dist.dir}/Java.runtime" includes="**"/>

ant/project.properties

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ jlink.java.gc.version="gc-ver-is-empty"
5151
javafx.version=19_monocle
5252
javafx.mirror=https://download2.gluonhq.com/openjfx
5353

54+
# Provisioning
55+
provision.file=${basedir}/provision.json
56+
provision.dir=${dist.dir}/provision
57+
5458
# Mask tray toggle (Apple only)
5559
java.mask.tray=true
5660

build.xml

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,9 @@
4242
<delete includeemptydirs="true" defaultexcludes="false" failonerror="false">
4343
<fileset dir="${out.dir}">
4444
<include name="**/**"/>
45-
<exclude name="**/jlink/**"/>
46-
<exclude name="**/javafx-*/**"/>
45+
<exclude name="**/jlink/jdk-**/**"/>
46+
<exclude name="**/javafx-**/**"/>
47+
<exclude name="**/dist/provision/**"/>
4748
</fileset>
4849
</delete>
4950
</target>
@@ -240,6 +241,31 @@
240241
<echo level="warn">The "include-assets" task is deprecated, please use "build-demo" instead.</echo>
241242
</target>
242243

244+
<target name="check-provision">
245+
<available file="${provision.file}" property="provision.file.exists"/>
246+
<condition property="provision.message" value="Found provision file '${provision.file}' calling 'provision --json [...]'">
247+
<isset property="provision.file.exists"/>
248+
</condition>
249+
<property description="Fallback value" name="provision.message" value="Skipping provisioning, '${provision.file}' does not exist."/>
250+
<echo level="info">${provision.message}</echo>
251+
</target>
252+
253+
<target name="clean-provision" depends="check-provision" unless="skip.clean.provision">
254+
<delete dir="${provision.dir}" includeemptydirs="true" defaultexcludes="false"/>
255+
</target>
256+
257+
<target name="provision" depends="check-provision,clean-provision" if="provision.file.exists">
258+
<java jar="${dist.dir}/${project.filename}.jar" fork="true" failonerror="true">
259+
<arg value="provision"/>
260+
<arg value="--json"/>
261+
<arg value="${provision.file}"/>
262+
<arg value="--target-os"/>
263+
<arg value="${target.os}"/>
264+
<arg value="--target-arch"/>
265+
<arg value="${target.arch}"/>
266+
</java>
267+
</target>
268+
243269
<target name="download-jre" unless="jre.skip">
244270
<condition property="target.os" value="windows">
245271
<isset property="target.os.windows"/>
@@ -264,10 +290,10 @@
264290
</java>
265291
</target>
266292

267-
<target name="nsis" depends="get-target-arch,target-os-windows,distribute,download-jre,build-exe"/>
268-
<target name="pkgbuild" depends="get-target-arch,target-os-mac,distribute,download-jre,build-pkg"/>
269-
<target name="dmg" depends="get-target-arch,target-os-mac,distribute,download-jre,build-dmg"/>
270-
<target name="makeself" depends="get-target-arch,target-os-linux,distribute,download-jre,build-run"/>
293+
<target name="nsis" depends="get-target-arch,target-os-windows,distribute,provision,download-jre,build-exe"/>
294+
<target name="pkgbuild" depends="get-target-arch,target-os-mac,distribute,provision,download-jre,build-pkg"/>
295+
<target name="dmg" depends="get-target-arch,target-os-mac,distribute,provision,download-jre,build-dmg"/>
296+
<target name="makeself" depends="get-target-arch,target-os-linux,distribute,provision,download-jre,build-run"/>
271297

272298

273299
</project>

src/log4j2.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<Loggers>
99
<!-- Packages -->
1010
<Logger name="qz" level="trace"/>
11+
<Logger name="qz.build.provision" level="info"/>
1112
<!-- Default -->
1213
<Root level="warn">
1314
<AppenderRef ref="console"/>

src/org/jdesktop/swinghelper/tray/JXTrayIcon.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
package org.jdesktop.swinghelper.tray;
2121

22-
import com.github.zafarkhaja.semver.Version;
2322
import qz.common.Constants;
2423
import qz.utils.MacUtilities;
2524
import qz.utils.SystemUtilities;
@@ -162,7 +161,7 @@ public void actionPerformed(ActionEvent e) {
162161
@Override
163162
public Dimension getSize() {
164163
Dimension iconSize = new Dimension(super.getSize());
165-
switch(SystemUtilities.getOsType()) {
164+
switch(SystemUtilities.getOs()) {
166165
// macOS icons are slightly smaller than the size reported
167166
case MAC:
168167
// Handle retina display

src/qz/App.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010
import org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy;
1111
import org.apache.logging.log4j.core.filter.ThresholdFilter;
1212
import org.apache.logging.log4j.core.layout.PatternLayout;
13+
import qz.build.provision.params.Phase;
1314
import qz.common.Constants;
1415
import qz.installer.Installer;
1516
import qz.installer.certificate.CertificateManager;
1617
import qz.installer.certificate.ExpiryTask;
1718
import qz.installer.certificate.KeyPairWrapper;
1819
import qz.installer.certificate.NativeCertificateInstaller;
20+
import qz.installer.provision.ProvisionInstaller;
1921
import qz.utils.*;
2022
import qz.ws.PrintSocketServer;
2123
import qz.ws.SingleInstanceChecker;
@@ -67,6 +69,14 @@ public static void main(String ... args) {
6769
}
6870
}
6971

72+
// Invoke any provisioning steps that are phase=startup
73+
try {
74+
ProvisionInstaller provisionInstaller = new ProvisionInstaller(SystemUtilities.getJarParentPath().resolve(Constants.PROVISION_DIR));
75+
provisionInstaller.invoke(Phase.STARTUP);
76+
} catch(Exception e) {
77+
log.warn("An error occurred provisioning \"phase\": \"startup\" entries", e);
78+
}
79+
7080
try {
7181
log.info("Starting {} {}", Constants.ABOUT_TITLE, Constants.VERSION);
7282
// Start the WebSocket

src/qz/build/JLink.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
import org.apache.commons.lang3.StringUtils;
1616
import org.apache.logging.log4j.LogManager;
1717
import org.apache.logging.log4j.Logger;
18-
import qz.build.jlink.Arch;
1918
import qz.build.jlink.Platform;
2019
import qz.build.jlink.Vendor;
2120
import qz.build.jlink.Url;
21+
import qz.build.provision.params.Arch;
2222
import qz.common.Constants;
2323
import qz.utils.*;
2424

@@ -60,7 +60,7 @@ public class JLink {
6060

6161
public JLink(String targetPlatform, String targetArch, String javaVendor, String javaVersion, String gcEngine, String gcVersion, String targetJdk) throws IOException {
6262
this.hostPlatform = Platform.getCurrentPlatform();
63-
this.hostArch = Arch.getCurrentArch();
63+
this.hostArch = SystemUtilities.getArch();
6464

6565
this.targetPlatform = Platform.parse(targetPlatform, this.hostPlatform);
6666
this.targetArch = Arch.parse(targetArch, this.hostArch);
@@ -150,7 +150,7 @@ private String downloadJdk(Arch arch, Platform platform) throws IOException {
150150
String url = new Url(this.javaVendor).format(arch, platform, this.gcEngine, this.javaSemver, this.javaVersion, this.gcVersion);
151151

152152
// Saves to out e.g. "out/jlink/jdk-AdoptOpenjdk-amd64-platform-11_0_7"
153-
String extractedJdk = new Fetcher(String.format("jlink/jdk-%s-%s-%s-%s", javaVendor.value(), arch.value(), platform.value(), javaSemver.toString().replaceAll("\\+", "_")), url)
153+
String extractedJdk = new Fetcher(String.format("jlink/jdk-%s-%s-%s-%s", javaVendor.value(), arch, platform.value(), javaSemver.toString().replaceAll("\\+", "_")), url)
154154
.fetch()
155155
.uncompress();
156156

src/qz/build/jlink/Arch.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +0,0 @@
1-
package qz.build.jlink;
2-
3-
/**
4-
* Handling of architectures
5-
*/
6-
public enum Arch implements Parsable {
7-
AMD64("amd64", "x86_64", "x64"),
8-
AARCH64("aarch64", "arm64"),
9-
ARM32("arm", "arm32", "arm32hf", "aarch32", "aarch32hf"),
10-
RISCV64("riscv", "riscv64");
11-
12-
public final String[] matches;
13-
Arch(String ... matches) { this.matches = matches; }
14-
15-
public static Arch parse(String value, Arch fallback) {
16-
return Parsable.parse(Arch.class, value, fallback);
17-
}
18-
19-
public static Arch parse(String value) {
20-
return Parsable.parse(Arch.class, value);
21-
}
22-
23-
public static Arch getCurrentArch() {
24-
return Parsable.parse(Arch.class, System.getProperty("os.arch"));
25-
}
26-
}

src/qz/build/jlink/Platform.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public static Platform parse(String value) {
2424
}
2525

2626
public static Platform getCurrentPlatform() {
27-
switch(SystemUtilities.getOsType()) {
27+
switch(SystemUtilities.getOs()) {
2828
case MAC:
2929
return Platform.MAC;
3030
case WINDOWS:

src/qz/build/jlink/Url.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.github.zafarkhaja.semver.Version;
44
import org.apache.logging.log4j.LogManager;
55
import org.apache.logging.log4j.Logger;
6+
import qz.build.provision.params.Arch;
67

78
import java.io.UnsupportedEncodingException;
89
import java.net.URLEncoder;

src/qz/build/jlink/Vendor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package qz.build.jlink;
22

33
import com.github.zafarkhaja.semver.Version;
4-
import qz.build.JLink;
4+
import qz.build.provision.params.Arch;
55

66
/**
77
* Handling of java vendors
@@ -61,7 +61,7 @@ public String getUrlArch(Arch arch) {
6161
default:
6262
return "arm";
6363
}
64-
case AMD64:
64+
case X86_64:
6565
switch(this) {
6666
// BellSoft uses "amd64"
6767
case BELLSOFT:

0 commit comments

Comments
 (0)