diff --git a/build.gradle b/build.gradle index edb2a8d..84a47a4 100644 --- a/build.gradle +++ b/build.gradle @@ -94,6 +94,8 @@ task setName(dependsOn: "setVersion") { project.ext.nameMacSignedRelease = "PacketProxy-${project.ext.version}-Installer-Mac-Signed.dmg" project.ext.nameWin32Release = "PacketProxy-${project.ext.version}-Installer-Win32.jar" project.ext.nameWin64Release = "PacketProxy-${project.ext.version}-Installer-Win64.jar" + project.ext.nameLinuxReleaseDir = "PacketProxy-${project.ext.version}-Linux" + project.ext.nameLinuxRelease = "PacketProxy-${project.ext.version}-Linux.tar.gz" } task setPath(dependsOn: "setName") { @@ -117,6 +119,12 @@ task setPath(dependsOn: "setName") { project.ext.pathWin64Target = "${project.ext.pathWin64WorkDir}/target" project.ext.pathWin64Installer = "${project.ext.pathWin64WorkDir}/${project.ext.nameInstaller}" project.ext.pathWin64Release = "${project.ext.pathWin64WorkDir}/${project.ext.nameWin64Release}" + // Linux + project.ext.pathLinuxWorkDir = "${buildDir}/distributions/Linux" + project.ext.pathLinuxTarget = "${project.ext.pathLinuxWorkDir}/target" + project.ext.pathLinuxInstaller = "${project.ext.pathLinuxWorkDir}/${project.ext.nameInstaller}" + project.ext.pathLinuxReleaseDir = "${project.ext.pathLinuxWorkDir}/${project.ext.nameLinuxReleaseDir}" + project.ext.pathLinuxRelease = "${project.ext.pathLinuxWorkDir}/${project.ext.nameLinuxRelease}" } task setAppleSignInfo { @@ -303,6 +311,50 @@ task createWin64Target(type: CreateWinTarget, dependsOn: ['jar', 'downloadLicens jdkUrl = 'https://d3pxv6yz143wms.cloudfront.net/11.0.5.10.1/amazon-corretto-11.0.5.10.1-windows-x64.zip' } +task createLinuxTarget(dependsOn: ['jar', 'downloadLicenses']) { + doFirst { + def workDir = project.ext.pathLinuxWorkDir + def targetDir = project.ext.pathLinuxTarget + def jdkUrl = 'https://corretto.aws/downloads/resources/11.0.8.10.1/amazon-corretto-11.0.8.10.1-linux-x64.tar.gz' + + delete { + delete "${workDir}" + } + new File("${workDir}").mkdirs() + new File("${targetDir}").mkdirs() + copy { + from "${project.buildDir}/reports/license/dependency-license.html" + from "${project.projectDir}/LICENSES" + into "${targetDir}/share/packetproxy/licenses" + } + copy { + from "${project.projectDir}/src/main/resources/gui/icon.ico" + into "${targetDir}/share/packetproxy" + rename('icon.ico', 'PacketProxy.ico') + } + copy { + from "${project.buildDir}/libs/PacketProxy.jar" + into "${targetDir}/share/packetproxy" + } + download { + src "${jdkUrl}" + dest "${workDir}/OpenJDK11.tar.gz" + } + copy { + from tarTree(resources.gzip("${workDir}/OpenJDK11.tar.gz")) + into file("${workDir}/OpenJDK11") + } + copy { + from file("${workDir}/OpenJDK11/amazon-corretto-11.0.8.10.1-linux-x64") + into file("${targetDir}/share/packetproxy/OpenJDK11") + } + copy { + from "${projectDir}/installer/izpack/packetproxy" + into "${targetDir}/bin/" + } + } +} + task preIzpack { doFirst { copy { @@ -330,6 +382,16 @@ task izpackWin64 (type: CreateInstallerTask, dependsOn: ['createWin64Target', 'p 'app.version': project.ext.version, 'app.subpath': "PacketProxy-${project.ext.version}"] } +task izpackLinux (type: CreateInstallerTask, dependsOn: ['createLinuxTarget', 'preIzpack']) { + baseDir = file(project.ext.pathLinuxTarget) + installFile = file("${projectDir}/installer/izpack/installer.xml") + outputFile = file(project.ext.pathLinuxInstaller) + compression = 'deflate' + compressionLevel = 9 + appProperties = ['app.group': 'PacketProxy', 'app.name': 'PacketProxy', 'app.title': 'PacketProxy', + 'app.version': project.ext.version, 'app.subpath': "PacketProxy-${project.ext.version}"] +} + task createMacJPackage(type: Exec, dependsOn: "prepareJPackage") { workingDir "${projectDir}" commandLine = [ @@ -421,6 +483,12 @@ task createWin64Release(type: Copy, dependsOn: 'izpackWin64') { rename("${project.ext.nameInstaller}", "${project.ext.nameWin64Release}") } +task createLinuxInstaller(type: Copy, dependsOn: 'izpackLinux') { + from "${project.ext.pathLinuxInstaller}" + into "${project.ext.pathLinuxWorkDir}" + rename("${project.ext.nameInstaller}", "${project.ext.nameLinuxRelease}") +} + task createMacRelease(dependsOn: 'createMacInstaller') { /* do nothing */ } @@ -429,5 +497,23 @@ task createWinRelease(dependsOn: 'createWin64Release') { /* do nothing */ } -task release(dependsOn: ['createMacRelease', 'createWinRelease']) { +task createLinuxRelease(dependsOn: 'createLinuxInstaller') { + doFirst { + exec { + executable "sh" + args "-c", "mkdir ${project.ext.pathLinuxReleaseDir}" + } + copy { + from "${projectDir}/installer/izpack/installer.sh" + from "${project.ext.pathLinuxInstaller}" + into "${project.ext.pathLinuxReleaseDir}" + } + exec { + executable "sh" + args "-c", "cd ${project.ext.pathLinuxWorkDir}; tar czvf ${project.ext.nameLinuxRelease} ${project.ext.nameLinuxReleaseDir}" + } + } +} + +task release(dependsOn: ['createMacRelease', 'createWinRelease', 'createLinuxRelease']) { } diff --git a/installer/izpack/installer.sh b/installer/izpack/installer.sh new file mode 100755 index 0000000..8437da1 --- /dev/null +++ b/installer/izpack/installer.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +java -Dawt.useSystemAAFontSettings=on -jar PacketProxy-*.jar + diff --git a/installer/izpack/installer.xml b/installer/izpack/installer.xml index 27e4479..bf60240 100644 --- a/installer/izpack/installer.xml +++ b/installer/izpack/installer.xml @@ -9,6 +9,7 @@ 1.0 packetproxy 1.6 + @@ -36,7 +37,7 @@ - + @@ -62,6 +63,10 @@ + + + + diff --git a/installer/izpack/packetproxy b/installer/izpack/packetproxy new file mode 100755 index 0000000..43dd3fe --- /dev/null +++ b/installer/izpack/packetproxy @@ -0,0 +1,8 @@ +#!/bin/sh + +bindir=$(dirname $(readlink -f $0)) +javabin=${bindir}/../share/packetproxy/OpenJDK11/bin/java +mainjar=${bindir}/../share/packetproxy/PacketProxy.jar + +exec ${javabin} -jar ${mainjar} +