Skip to content

Commit 5d6af9c

Browse files
committed
Merge branch 'pr-265' into devel
2 parents 5ef4520 + ec70746 commit 5d6af9c

File tree

8 files changed

+98
-30
lines changed

8 files changed

+98
-30
lines changed

src/main/java/io/github/fvarrui/javapackager/gradle/PackagePluginExtension.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.gradle.api.Project;
88

99
import groovy.lang.Closure;
10+
import io.github.fvarrui.javapackager.model.Arch;
1011
import io.github.fvarrui.javapackager.model.LinuxConfig;
1112
import io.github.fvarrui.javapackager.model.MacConfig;
1213
import io.github.fvarrui.javapackager.model.Manifest;
@@ -52,6 +53,7 @@ public PackagePluginExtension(Project project) {
5253
this.outputDirectory = project.getBuildDir();
5354
this.scripts = new Scripts();
5455
this.forceInstaller = false;
56+
this.arch = Arch.getDefault();
5557
}
5658

5759
public LinuxConfig linuxConfig(Closure<LinuxConfig> closure) {

src/main/java/io/github/fvarrui/javapackager/gradle/PackageTask.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.gradle.api.tasks.OutputDirectory;
1515

1616
import groovy.lang.Closure;
17+
import io.github.fvarrui.javapackager.model.Arch;
1718
import io.github.fvarrui.javapackager.model.FileAssociation;
1819
import io.github.fvarrui.javapackager.model.LinuxConfig;
1920
import io.github.fvarrui.javapackager.model.MacConfig;
@@ -559,6 +560,18 @@ public Scripts scripts(Closure<Scripts> closure) {
559560
getProject().configure(scripts, closure);
560561
return scripts;
561562
}
563+
564+
@Input
565+
@Optional
566+
private Arch arch;
567+
568+
public Arch getArch() {
569+
return arch;
570+
}
571+
572+
public void setArch(Arch arch) {
573+
this.arch = arch;
574+
}
562575

563576
// ===============
564577
// create packager
@@ -577,6 +590,7 @@ protected Packager createPackager() throws Exception {
577590
.additionalModulePaths(defaultIfNull(additionalModulePaths, extension.getAdditionalModulePaths()))
578591
.additionalResources(defaultIfNull(additionalResources, extension.getAdditionalResources()))
579592
.administratorRequired(defaultIfNull(administratorRequired, extension.getAdministratorRequired()))
593+
.arch(defaultIfNull(arch, extension.getArch()))
580594
.assetsDir(defaultIfNull(assetsDir, extension.getAssetsDir()))
581595
.bundleJre(defaultIfNull(bundleJre, extension.getBundleJre()))
582596
.classpath(defaultIfNull(classpath, extension.getClasspath()))

src/main/java/io/github/fvarrui/javapackager/maven/PackageMojo.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package io.github.fvarrui.javapackager.maven;
22

33
import static org.apache.commons.lang3.StringUtils.defaultIfBlank;
4+
import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
45
import static org.twdata.maven.mojoexecutor.MojoExecutor.executionEnvironment;
56

67
import java.io.File;
78
import java.util.List;
89
import java.util.Map;
910

11+
import io.github.fvarrui.javapackager.model.*;
1012
import org.apache.maven.execution.MavenSession;
1113
import org.apache.maven.plugin.AbstractMojo;
1214
import org.apache.maven.plugin.BuildPluginManager;
@@ -18,13 +20,6 @@
1820
import org.apache.maven.plugins.annotations.ResolutionScope;
1921
import org.apache.maven.project.MavenProject;
2022

21-
import io.github.fvarrui.javapackager.model.FileAssociation;
22-
import io.github.fvarrui.javapackager.model.LinuxConfig;
23-
import io.github.fvarrui.javapackager.model.MacConfig;
24-
import io.github.fvarrui.javapackager.model.Manifest;
25-
import io.github.fvarrui.javapackager.model.Platform;
26-
import io.github.fvarrui.javapackager.model.Scripts;
27-
import io.github.fvarrui.javapackager.model.WindowsConfig;
2823
import io.github.fvarrui.javapackager.packagers.Context;
2924
import io.github.fvarrui.javapackager.packagers.Packager;
3025
import io.github.fvarrui.javapackager.packagers.PackagerFactory;
@@ -314,7 +309,13 @@ public class PackageMojo extends AbstractMojo {
314309
*/
315310
@Parameter(property = "scripts", required = false)
316311
private Scripts scripts;
317-
312+
313+
/**
314+
* Architecture
315+
*/
316+
@Parameter(property = "arch", required = false)
317+
private Arch arch;
318+
318319
public void execute() throws MojoExecutionException {
319320

320321
Context.setContext(
@@ -333,6 +334,7 @@ public void execute() throws MojoExecutionException {
333334
.additionalModulePaths(additionalModulePaths)
334335
.additionalResources(additionalResources)
335336
.administratorRequired(administratorRequired)
337+
.arch(defaultIfNull(arch, Arch.getDefault()))
336338
.assetsDir(assetsDir)
337339
.bundleJre(bundleJre)
338340
.classpath(classpath)
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package io.github.fvarrui.javapackager.model;
2+
3+
import org.apache.commons.lang3.SystemUtils;
4+
5+
public enum Arch {
6+
aarch64("arm64", "AARCH64"),
7+
x64("amd64", "X86_64"),
8+
x86("i386", "i386");
9+
10+
private String deb;
11+
private String rpm;
12+
13+
Arch(String deb, String rpm) {
14+
this.deb = deb;
15+
this.rpm = rpm;
16+
}
17+
18+
public String getDeb() {
19+
return deb;
20+
}
21+
22+
public String getRpm() {
23+
return rpm;
24+
}
25+
26+
public static Arch getDefault() {
27+
switch (SystemUtils.OS_ARCH) {
28+
case "x86":
29+
case "i386":
30+
case "i486":
31+
case "i586":
32+
case "i686":
33+
return x86;
34+
case "x86_64":
35+
case "amd64":
36+
return x64;
37+
case "aarch64":
38+
return aarch64;
39+
default:
40+
throw new IllegalArgumentException("Unknown architecture " + SystemUtils.OS_ARCH);
41+
}
42+
}
43+
44+
}

src/main/java/io/github/fvarrui/javapackager/packagers/GenerateRpm.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ protected File doApply(LinuxPackager packager) throws Exception {
4242
File executable = packager.getExecutable();
4343
File assetsFolder = packager.getAssetsFolder();
4444
String jreDirectoryName = packager.getJreDirectoryName();
45+
Architecture arch = Architecture.valueOf(packager.getArch().getRpm());
4546

4647
// generates desktop file from velocity template
4748
File desktopFile = new File(assetsFolder, name + ".desktop");
@@ -53,7 +54,7 @@ protected File doApply(LinuxPackager packager) throws Exception {
5354

5455
Builder builder = new Builder();
5556
builder.setType(RpmType.BINARY);
56-
builder.setPlatform(Architecture.X86_64, Os.LINUX);
57+
builder.setPlatform(arch, Os.LINUX);
5758
builder.setPackage(name, version, "1");
5859
builder.setPackager(organizationName);
5960
builder.setDescription(description);
@@ -76,7 +77,8 @@ protected File doApply(LinuxPackager packager) throws Exception {
7677

7778
builder.build(outputDirectory);
7879

79-
File originalRpm = new File(outputDirectory, name + "-" + version + "-1.x86_64.rpm");
80+
String suffix = "-1." + arch.name().toLowerCase() + ".rpm";
81+
File originalRpm = new File(outputDirectory, name + "-" + version + suffix);
8082
File rpm = null;
8183
if (originalRpm.exists()) {
8284
rpm = new File(outputDirectory, name + "_" + version + ".rpm");

src/main/java/io/github/fvarrui/javapackager/packagers/PackagerSettings.java

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,9 @@
66
import java.util.Map;
77
import java.util.stream.Collectors;
88

9+
import io.github.fvarrui.javapackager.model.*;
910
import org.apache.commons.lang3.StringUtils;
10-
11-
import io.github.fvarrui.javapackager.model.FileAssociation;
12-
import io.github.fvarrui.javapackager.model.LinuxConfig;
13-
import io.github.fvarrui.javapackager.model.MacConfig;
14-
import io.github.fvarrui.javapackager.model.Manifest;
15-
import io.github.fvarrui.javapackager.model.Platform;
16-
import io.github.fvarrui.javapackager.model.Scripts;
17-
import io.github.fvarrui.javapackager.model.WindowsConfig;
11+
import org.redline_rpm.header.Architecture;
1812

1913
/**
2014
* Common packagers' settings
@@ -64,7 +58,8 @@ public class PackagerSettings {
6458
protected List<FileAssociation> fileAssociations;
6559
protected File packagingJdk;
6660
protected Scripts scripts;
67-
61+
protected Arch arch;
62+
6863
/**
6964
* Get packaging JDK
7065
* @return Packaging JDK
@@ -857,16 +852,24 @@ public boolean isThereFileAssociations() {
857852
* @return Mime type list string
858853
*/
859854
public String getMimeTypesListAsString(String separator) {
860-
return StringUtils.join(fileAssociations.stream().map(fa -> fa.getMimeType()).collect(Collectors.toList()),
861-
separator);
855+
return StringUtils.join(fileAssociations.stream().map(fa -> fa.getMimeType()).collect(Collectors.toList()), separator);
856+
}
857+
858+
public Arch getArch() {
859+
return arch;
860+
}
861+
862+
public PackagerSettings arch(Arch arch) {
863+
this.arch = arch;
864+
return this;
862865
}
863866

864867
@Override
865868
public String toString() {
866-
return "PackagerSettings [outputDirectory=" + outputDirectory + ", licenseFile=" + licenseFile + ", iconFile="
867-
+ iconFile + ", generateInstaller=" + generateInstaller + ", forceInstaller=" + forceInstaller
868-
+ ", mainClass=" + mainClass + ", name=" + name + ", displayName=" + displayName + ", version="
869-
+ version + ", description=" + description + ", url=" + url + ", administratorRequired="
869+
return "PackagerSettings [" + "outputDirectory=" + outputDirectory + ", " + "licenseFile=" + licenseFile + ", "
870+
+ "iconFile=" + iconFile + ", " + "generateInstaller=" + generateInstaller + ", " + "forceInstaller="
871+
+ forceInstaller + ", " + "mainClass=" + mainClass + ", name=" + name + ", displayName=" + displayName
872+
+ ", version=" + version + ", description=" + description + ", url=" + url + ", administratorRequired="
870873
+ administratorRequired + ", organizationName=" + organizationName + ", organizationUrl="
871874
+ organizationUrl + ", organizationEmail=" + organizationEmail + ", bundleJre=" + bundleJre
872875
+ ", customizedJre=" + customizedJre + ", jrePath=" + jrePath + ", jdkPath=" + jdkPath
@@ -878,5 +881,6 @@ public String toString() {
878881
+ extra + ", useResourcesAsWorkingDir=" + useResourcesAsWorkingDir + ", assetsDir=" + assetsDir
879882
+ ", classpath=" + classpath + ", jreMinVersion=" + jreMinVersion + ", manifest=" + manifest
880883
+ ", additionalModulePaths=" + additionalModulePaths + ", fileAssociations=" + fileAssociations
881-
+ ", packagingJdk=" + packagingJdk + ", scripts=" + scripts + "]";
882-
}}
884+
+ ", packagingJdk=" + packagingJdk + ", scripts=" + scripts + ", arch=" + arch + "]";
885+
}
886+
}

src/main/resources/linux/control.vtl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Package: ${info.name}
22
Version: ${info.version}
33
Section: misc
44
Priority: optional
5-
Architecture: amd64
5+
Architecture: ${info.arch.deb}
66
Maintainer: ${info.organizationName} <$!{info.organizationEmail}>
77
Description: ${info.description}
88
Distribution: development

src/main/resources/linux/startup.sh.vtl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ Bootstrap="$SCRIPTPATH/scripts/${info.bootstrapFile.name}" && [ -x "$Bootstrap"
8282
#end
8383

8484
#if ($info.administratorRequired)
85-
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY GDKBACKEND=x11 "${JAVA}" ${JVMDefaultOptions} -cp "${JVMClassPath}" ${info.mainClass} $@
85+
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY GDKBACKEND=x11 "${JAVA}" ${JVMDefaultOptions} -jar "${JVMClassPath}" $@
8686
#else
87-
"${JAVA}" ${JVMDefaultOptions} -cp "${JVMClassPath}" ${info.mainClass} $@
87+
"${JAVA}" ${JVMDefaultOptions} -jar "${JVMClassPath}" $@
8888
#end
8989
exit 0

0 commit comments

Comments
 (0)