Compare commits
No commits in common. "1524ca306ec9a96e1649094651091aeb5334b7b2" and "6ee83e105623cbed556df730ac59db107ff66466" have entirely different histories.
1524ca306e
...
6ee83e1056
187
.drone.yml
187
.drone.yml
@ -1,187 +0,0 @@
|
|||||||
# Variables
|
|
||||||
tag: &tag latest
|
|
||||||
repo: &repo phoenix.ipv64.de/kirbylink/warp4j
|
|
||||||
branch: &branch master
|
|
||||||
dry_run: &dry_run false
|
|
||||||
step_name: &step_name warp4j
|
|
||||||
pipeline_name: &pipeline_name warp4j build and push
|
|
||||||
notification_name: ¬ification_name Send Notification
|
|
||||||
|
|
||||||
# Basic build options
|
|
||||||
x-step: &default_build_option
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
dry_run: *dry_run
|
|
||||||
mirror: https://registry.phoenix.ipv64.de
|
|
||||||
repo: *repo
|
|
||||||
tags:
|
|
||||||
- *tag
|
|
||||||
|
|
||||||
x-step: &default_notification_option
|
|
||||||
image: phoenix.ipv64.de/kirbylink/drone-gotify:latest
|
|
||||||
settings:
|
|
||||||
gotifytoken:
|
|
||||||
from_secret: plugin_gotifytoken
|
|
||||||
gotifyendpoint:
|
|
||||||
from_secret: plugin_gotifyendpoint
|
|
||||||
gotifytitle: *step_name
|
|
||||||
gotifypriority: 5
|
|
||||||
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
platform:
|
|
||||||
os: linux
|
|
||||||
arch: arm64
|
|
||||||
name: *pipeline_name
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: *step_name
|
|
||||||
<<: *default_build_option
|
|
||||||
settings:
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
|
|
||||||
- name: *notification_name
|
|
||||||
<<: *default_notification_option
|
|
||||||
settings:
|
|
||||||
message: >
|
|
||||||
{{#success build.status}}
|
|
||||||
Build of docker image on build {{build.number}} succeeded on {{repo.name}}. Build link: {{build.link}}
|
|
||||||
{{else}}
|
|
||||||
WARNING. Build of docker image on build {{build.number}} failed on {{repo.name}}. Build link: {{build.link}}
|
|
||||||
{{/success}}
|
|
||||||
when:
|
|
||||||
status: [ success, failure ]
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
branch:
|
|
||||||
- *branch
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
- custom
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Variables
|
|
||||||
tag: &tag testing
|
|
||||||
repo: &repo phoenix.ipv64.de/kirbylink/warp4j
|
|
||||||
branch: &branch develop
|
|
||||||
dry_run: &dry_run false
|
|
||||||
step_name: &step_name warp4j
|
|
||||||
pipeline_name: &pipeline_name warp4j build and push (testing)
|
|
||||||
notification_name: ¬ification_name Send Notification
|
|
||||||
|
|
||||||
# Basic build options
|
|
||||||
x-step: &default_build_option
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
dry_run: *dry_run
|
|
||||||
mirror: https://registry.phoenix.ipv64.de
|
|
||||||
repo: *repo
|
|
||||||
tags:
|
|
||||||
- *tag
|
|
||||||
|
|
||||||
x-step: &default_notification_option
|
|
||||||
image: phoenix.ipv64.de/kirbylink/drone-gotify:latest
|
|
||||||
settings:
|
|
||||||
gotifytoken:
|
|
||||||
from_secret: plugin_gotifytoken
|
|
||||||
gotifyendpoint:
|
|
||||||
from_secret: plugin_gotifyendpoint
|
|
||||||
gotifytitle: *step_name
|
|
||||||
gotifypriority: 5
|
|
||||||
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
platform:
|
|
||||||
os: linux
|
|
||||||
arch: arm64
|
|
||||||
name: *pipeline_name
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: *step_name
|
|
||||||
<<: *default_build_option
|
|
||||||
settings:
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
|
|
||||||
- name: *notification_name
|
|
||||||
<<: *default_notification_option
|
|
||||||
settings:
|
|
||||||
message: >
|
|
||||||
{{#success build.status}}
|
|
||||||
Build of test docker image on build {{build.number}} succeeded on {{repo.name}}. Build link: {{build.link}}
|
|
||||||
{{else}}
|
|
||||||
WARNING. Build of docker image on build {{build.number}} failed on {{repo.name}}. Build link: {{build.link}}
|
|
||||||
{{/success}}
|
|
||||||
when:
|
|
||||||
status: [ success, failure ]
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
branch:
|
|
||||||
- *branch
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
- custom
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Variables
|
|
||||||
tag: &tag testing
|
|
||||||
repo: &repo phoenix.ipv64.de/kirbylink/warp4j
|
|
||||||
dry_run: &dry_run true
|
|
||||||
step_name: &step_name warp4j
|
|
||||||
pipeline_name: &pipeline_name warp4j build only (testing)
|
|
||||||
notification_name: ¬ification_name Send Notification
|
|
||||||
|
|
||||||
# Basic build options
|
|
||||||
x-step: &default_build_option
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
dry_run: *dry_run
|
|
||||||
mirror: https://registry.phoenix.ipv64.de
|
|
||||||
repo: *repo
|
|
||||||
tags:
|
|
||||||
- *tag
|
|
||||||
|
|
||||||
x-step: &default_notification_option
|
|
||||||
image: phoenix.ipv64.de/kirbylink/drone-gotify:latest
|
|
||||||
settings:
|
|
||||||
gotifytoken:
|
|
||||||
from_secret: plugin_gotifytoken
|
|
||||||
gotifyendpoint:
|
|
||||||
from_secret: plugin_gotifyendpoint
|
|
||||||
gotifytitle: *step_name
|
|
||||||
gotifypriority: 5
|
|
||||||
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
platform:
|
|
||||||
os: linux
|
|
||||||
arch: arm64
|
|
||||||
name: *pipeline_name
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: *step_name
|
|
||||||
<<: *default_build_option
|
|
||||||
settings:
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
|
|
||||||
- name: warp4j x64
|
|
||||||
<<: *default_build_option
|
|
||||||
settings:
|
|
||||||
dockerfile: Dockerfile_x64
|
|
||||||
|
|
||||||
- name: *notification_name
|
|
||||||
<<: *default_notification_option
|
|
||||||
settings:
|
|
||||||
message: >
|
|
||||||
{{#success build.status}}
|
|
||||||
Test build of docker image on build {{build.number}} succeeded on {{repo.name}}. Build link: {{build.link}}
|
|
||||||
{{else}}
|
|
||||||
WARNING. Test build of docker image on build {{build.number}} failed on {{repo.name}}. Build link: {{build.link}}
|
|
||||||
{{/success}}
|
|
||||||
when:
|
|
||||||
status: [ success, failure ]
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- pull_request
|
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,4 +2,3 @@ fatjar/
|
|||||||
warped/
|
warped/
|
||||||
TODO.md
|
TODO.md
|
||||||
/.project
|
/.project
|
||||||
/.settings/
|
|
||||||
|
22
CHANGELOG.md
22
CHANGELOG.md
@ -1,22 +0,0 @@
|
|||||||
# Changelog
|
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
|
||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
||||||
|
|
||||||
## [Unreleased]
|
|
||||||
|
|
||||||
## [1.0.0] - 2024-05-20
|
|
||||||
### Added
|
|
||||||
- Install script improved to run with /bin/sh
|
|
||||||
- Dockerfile changed to use install.sh script (Works on x64 and aarch64 architecture)
|
|
||||||
- Dockerfile_x64 with old build script for tests
|
|
||||||
- Script warp4j improved to support to run on aarch64 architecture
|
|
||||||
|
|
||||||
## [origin warp4j] - 2019-02-28
|
|
||||||
- See origin repository: https://github.com/guziks/warp4j
|
|
||||||
|
|
||||||
[unreleased]: https://git.phoenix.ipv64.de/public/warp/compare/master...HEAD
|
|
||||||
[1.0.0]: https://git.phoenix.ipv64.de/GitHub_Mirrors/warp4j/compare/master...stable
|
|
||||||
[origin warp4j]: https://github.com/guziks/warp4j
|
|
12
Dockerfile
12
Dockerfile
@ -5,5 +5,15 @@ RUN apt-get update && apt-get install -y \
|
|||||||
unzip \
|
unzip \
|
||||||
zip \
|
zip \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
RUN curl -s https://git.phoenix.ipv64.de/public/warp4j/raw/branch/master/install.sh | /bin/sh -s
|
RUN curl -fsSL -o /tmp/warp-packer \
|
||||||
|
https://git.kirby-link.dd-dns.de/attachments/f701fbff-c58b-4aac-91e3-47efda1fc760 \
|
||||||
|
&& install -D \
|
||||||
|
--mode=755 \
|
||||||
|
--owner=root \
|
||||||
|
--group=root \
|
||||||
|
/tmp/warp-packer \
|
||||||
|
/usr/local/bin \
|
||||||
|
&& rm /tmp/warp-packer
|
||||||
|
WORKDIR /workdir
|
||||||
|
COPY warp4j /usr/local/bin/
|
||||||
ENTRYPOINT [ "/usr/local/bin/warp4j" ]
|
ENTRYPOINT [ "/usr/local/bin/warp4j" ]
|
||||||
|
23
INSTALL.md
23
INSTALL.md
@ -2,20 +2,13 @@
|
|||||||
|
|
||||||
Here are several more ways to install `warp4j`.
|
Here are several more ways to install `warp4j`.
|
||||||
|
|
||||||
## Install script
|
|
||||||
Run the [install.sh](./install.sh) script from source or use the following command:
|
|
||||||
```sh
|
|
||||||
curl -s https://git.phoenix.ipv64.de/public/warp4j/raw/branch/master/install.sh | /bin/sh -s
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Manual
|
## Manual
|
||||||
|
|
||||||
First install [warp-packer](https://git.phoenix.ipv64.de/public/warp/releases) and ensure other common tools available: `awk`, `curl`, `file`, `grep`, `sed`, `sort`, `tar`, `unzip`, optional: `zip`. Then install `warp4j` like this:
|
First install [warp-packer](https://git.kirby-link.dd-dns.de/public/warp/releases) and ensure other common tools available: `awk`, `curl`, `file`, `grep`, `sed`, `sort`, `tar`, `unzip`, optional: `zip`. Then install `warp4j` like this:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ LOCATION=/usr/local/bin \
|
$ LOCATION=/usr/local/bin \
|
||||||
LINK=https://git.phoenix.ipv64.de/public/warp4j/raw/branch/master/warp4j \
|
LINK=https://git.kirby-link.dd-dns.de/public/warp4j/raw/branch/master/warp4j \
|
||||||
TEMP_LOCATION=/tmp/warp4j \
|
TEMP_LOCATION=/tmp/warp4j \
|
||||||
bash -c 'curl -fsSL -o $TEMP_LOCATION $LINK && \
|
bash -c 'curl -fsSL -o $TEMP_LOCATION $LINK && \
|
||||||
sudo install -D \
|
sudo install -D \
|
||||||
@ -29,4 +22,14 @@ Previous command can be also used to upgrade to the latest version.
|
|||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
|
|
||||||
See [Dockerfile](./Dockerfile)
|
See docker hub [page](https://hub.docker.com/r/guziks/warp4j).
|
||||||
|
|
||||||
|
## Moor
|
||||||
|
|
||||||
|
Instead of direct `docker run` command you can make a launcher with [moor](https://github.com/guziks/moor):
|
||||||
|
|
||||||
|
```
|
||||||
|
$ moor guziks/warp4j:stable warp4j
|
||||||
|
```
|
||||||
|
|
||||||
|
Then use as an ordinary command.
|
||||||
|
16
README.md
16
README.md
@ -6,7 +6,7 @@ Turn JAR (java archive) into self-contained executable in a single command.
|
|||||||
|
|
||||||
- downloads java runtimes automatically
|
- downloads java runtimes automatically
|
||||||
- makes runtimes optimized for your application
|
- makes runtimes optimized for your application
|
||||||
- creates self-contained binaries for Linux, macOS and Windows using [warp-packer](https://git.phoenix.ipv64.de/public/warp)
|
- creates self-contained binaries for Linux, macOS and Windows using [warp-packer](https://git.kirby-link.dd-dns.de/public/warp)
|
||||||
- works on Linux, macOS and Windows (with Windows Subsystem for Linux)
|
- works on Linux, macOS and Windows (with Windows Subsystem for Linux)
|
||||||
- supports cross "compilation"
|
- supports cross "compilation"
|
||||||
- does not require neither JDK nor JRE installed
|
- does not require neither JDK nor JRE installed
|
||||||
@ -20,7 +20,7 @@ Just put both `warp4j` and `warp-packer` somewhere in your PATH and run `warp4j
|
|||||||
Curl one-liner installs latest versions of both `warp4j` and `warp-packer`:
|
Curl one-liner installs latest versions of both `warp4j` and `warp-packer`:
|
||||||
|
|
||||||
```
|
```
|
||||||
bash -c "$(curl -fsSL https://git.phoenix.ipv64.de/public/warp4j/raw/branch/master/install.sh)"
|
$ bash -c "$(curl -fsSL https://git.kirby-link.dd-dns.de/public/warp4j/raw/branch/master/install)"
|
||||||
```
|
```
|
||||||
|
|
||||||
This script will show missing dependencies (if there are any), they must be installed with your package manager.
|
This script will show missing dependencies (if there are any), they must be installed with your package manager.
|
||||||
@ -56,7 +56,6 @@ See help:
|
|||||||
```
|
```
|
||||||
$ wapr4j --help
|
$ wapr4j --help
|
||||||
|
|
||||||
|
|
||||||
Usage: warp4j [options] <app.jar>
|
Usage: warp4j [options] <app.jar>
|
||||||
|
|
||||||
Turn JAR (java archive) into self-contained executable
|
Turn JAR (java archive) into self-contained executable
|
||||||
@ -70,17 +69,10 @@ Options:
|
|||||||
adds additional classpaths to the jdeps call
|
adds additional classpaths to the jdeps call
|
||||||
--auto-class-path extract and get class-path values from jar file
|
--auto-class-path extract and get class-path values from jar file
|
||||||
ignored when -cp, --class-path is set
|
ignored when -cp, --class-path is set
|
||||||
--spring-boot extract and get class-path values from
|
|
||||||
Spring-Boot application jar file
|
|
||||||
ignored when -cp, --class-path is set
|
|
||||||
-o, --output <directory>
|
-o, --output <directory>
|
||||||
override output directory;
|
override output directory;
|
||||||
this is relative to current PWD
|
this is relative to current PWD
|
||||||
(default: ./warped)
|
(default: ./warped)
|
||||||
-p, --prefix <prefix>
|
|
||||||
if set, warp-packer will use the prefix
|
|
||||||
as target folder in which the
|
|
||||||
application should be extracted
|
|
||||||
--list show available java releases;
|
--list show available java releases;
|
||||||
takes into consideration other options:
|
takes into consideration other options:
|
||||||
"--java-version", "--no-optimize", "--jvm-impl";
|
"--java-version", "--no-optimize", "--jvm-impl";
|
||||||
@ -93,12 +85,13 @@ Options:
|
|||||||
--pull check if more recent JDK/JRE distro is available;
|
--pull check if more recent JDK/JRE distro is available;
|
||||||
by default latest cached version that matches
|
by default latest cached version that matches
|
||||||
"--java-version" is used
|
"--java-version" is used
|
||||||
to get the classpath for jdeps call
|
|
||||||
--linux create binary for Linux
|
--linux create binary for Linux
|
||||||
--macos create binary for macOS
|
--macos create binary for macOS
|
||||||
--windows create binary for Windows
|
--windows create binary for Windows
|
||||||
if no targets are specified then binaries for
|
if no targets are specified then binaries for
|
||||||
all targets are created
|
all targets are created
|
||||||
|
--jvm-impl jvm implementation: hotspot or openj9
|
||||||
|
(default: hotspot)
|
||||||
--jvm-options <options>
|
--jvm-options <options>
|
||||||
passed to java like this:
|
passed to java like this:
|
||||||
"java <options> -jar <jar file>";
|
"java <options> -jar <jar file>";
|
||||||
@ -106,7 +99,6 @@ Options:
|
|||||||
example: '-Xms512m -Xmx1024m'
|
example: '-Xms512m -Xmx1024m'
|
||||||
-s, --silent using javaw instead of java for windows
|
-s, --silent using javaw instead of java for windows
|
||||||
-h, --help show this message
|
-h, --help show this message
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Compatibility
|
## Compatibility
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
FROM debian:stable-slim
|
FROM debian:stable-slim
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
binutils \
|
|
||||||
curl \
|
curl \
|
||||||
file \
|
file \
|
||||||
unzip \
|
unzip \
|
||||||
zip \
|
zip \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
RUN curl -fsSL -o /tmp/warp-packer \
|
RUN curl -fsSL -o /tmp/warp-packer \
|
||||||
https://git.phoenix.ipv64.de/public/warp/releases/download/1.0.0/linux-x64.warp-packer \
|
https://github.com/dgiagio/warp/releases/download/v0.3.0/linux-x64.warp-packer \
|
||||||
&& install -D \
|
&& install -D \
|
||||||
--mode=755 \
|
--mode=755 \
|
||||||
--owner=root \
|
--owner=root \
|
||||||
@ -15,6 +14,14 @@ RUN curl -fsSL -o /tmp/warp-packer \
|
|||||||
/tmp/warp-packer \
|
/tmp/warp-packer \
|
||||||
/usr/local/bin \
|
/usr/local/bin \
|
||||||
&& rm /tmp/warp-packer
|
&& rm /tmp/warp-packer
|
||||||
|
RUN curl -fsSL -o /tmp/warp4j \
|
||||||
|
https://raw.githubusercontent.com/guziks/warp4j/stable/warp4j \
|
||||||
|
&& install -D \
|
||||||
|
--mode=755 \
|
||||||
|
--owner=root \
|
||||||
|
--group=root \
|
||||||
|
/tmp/warp4j \
|
||||||
|
/usr/local/bin \
|
||||||
|
&& rm /tmp/warp4j
|
||||||
WORKDIR /workdir
|
WORKDIR /workdir
|
||||||
COPY warp4j /usr/local/bin/
|
|
||||||
ENTRYPOINT [ "/usr/local/bin/warp4j" ]
|
ENTRYPOINT [ "/usr/local/bin/warp4j" ]
|
18
dockerhub/README.md
Normal file
18
dockerhub/README.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Warp4j
|
||||||
|
|
||||||
|
Turn JAR (java archive) into self-contained executable in a single command.
|
||||||
|
|
||||||
|
See project [page](https://github.com/guziks/warp4j) for more information.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker run --rm -it \
|
||||||
|
-e "WARP4J_CACHE=/cache" \
|
||||||
|
--volume <cache on host>:/cache \
|
||||||
|
--volume <jars on host>:/workdir \
|
||||||
|
--user $(id -u):$(id -g) \
|
||||||
|
guziks/warp4j:stable <app.jar>
|
||||||
|
```
|
||||||
|
|
||||||
|
Change according to your requirements, but volume with working directory is mandatory.
|
110
install
Executable file
110
install
Executable file
@ -0,0 +1,110 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# install location
|
||||||
|
LOCATION=/usr/local/bin
|
||||||
|
|
||||||
|
# exit top level program from subshell
|
||||||
|
trap "exit 1" TERM
|
||||||
|
export TOP_PID=$$
|
||||||
|
function fail() {
|
||||||
|
kill -s TERM $TOP_PID
|
||||||
|
}
|
||||||
|
|
||||||
|
# platform IDs
|
||||||
|
LIN=linux
|
||||||
|
LIN_URL=https://git.kirby-link.dd-dns.de/attachments/f701fbff-c58b-4aac-91e3-47efda1fc760
|
||||||
|
MAC=macos
|
||||||
|
MAC_URL=https://git.kirby-link.dd-dns.de/attachments/b09c6469-406a-4dd1-b5e8-1294a3aabf0f
|
||||||
|
WIN=windows
|
||||||
|
|
||||||
|
# returns this platform ID
|
||||||
|
function get_this_platform() {
|
||||||
|
local this_platform="$(uname -s)"
|
||||||
|
case $this_platform in
|
||||||
|
Linux*) echo $LIN ;;
|
||||||
|
Darwin*) echo $MAC ;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unsupported platform $this_platform" >&2
|
||||||
|
fail
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# actually sets this platform
|
||||||
|
THIS_PLATFORM=$(get_this_platform)
|
||||||
|
|
||||||
|
# fetches latest release download link for the platform
|
||||||
|
function get_warp_link() {
|
||||||
|
local this_platform=$1
|
||||||
|
|
||||||
|
if [ "$this_platform" = "$LIN" ]; then
|
||||||
|
echo "$LIN_URL"
|
||||||
|
else
|
||||||
|
echo "$MAC_URL"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# downloads and installs single binary
|
||||||
|
function install() {
|
||||||
|
local name=$1
|
||||||
|
local link=$2
|
||||||
|
local temp_location="/tmp/$name"
|
||||||
|
echo "Downloading $name..."
|
||||||
|
curl -fsSL -o "$temp_location" "$link"
|
||||||
|
if [[ $? != 0 ]]; then
|
||||||
|
echo "Error: Failed to download $name" >&2
|
||||||
|
fail
|
||||||
|
fi
|
||||||
|
echo "Creating $LOCATION/$name..."
|
||||||
|
sudo install -D \
|
||||||
|
--mode=755 \
|
||||||
|
--owner=root \
|
||||||
|
--group=root \
|
||||||
|
"$temp_location" "$LOCATION"
|
||||||
|
if [[ $? != 0 ]]; then
|
||||||
|
echo "Error: Failed to install $name" >&2
|
||||||
|
fail
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# returns missing dependencies
|
||||||
|
function get_missing_deps() {
|
||||||
|
local deps=(
|
||||||
|
"awk" \
|
||||||
|
"curl" \
|
||||||
|
"file" \
|
||||||
|
"grep" \
|
||||||
|
"sed" \
|
||||||
|
"sort" \
|
||||||
|
"tar" \
|
||||||
|
"unzip" \
|
||||||
|
"zip" \
|
||||||
|
)
|
||||||
|
for d in ${deps[@]}; do
|
||||||
|
if ! command -v $d &> /dev/null ; then
|
||||||
|
echo -n "$d "
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
WARP4J_LINK="https://git.kirby-link.dd-dns.de/public/warp4j/raw/branch/master/warp4j"
|
||||||
|
|
||||||
|
echo "Getting information about warp-packer releases..."
|
||||||
|
WARP_LINK=$(get_warp_link $THIS_PLATFORM)
|
||||||
|
|
||||||
|
MISSING_DEPS=$(get_missing_deps)
|
||||||
|
|
||||||
|
install "warp-packer" "$WARP_LINK" && \
|
||||||
|
install "warp4j" "$WARP4J_LINK"
|
||||||
|
|
||||||
|
if [[ -z $MISSING_DEPS ]]; then
|
||||||
|
echo "Successfully installed"
|
||||||
|
else
|
||||||
|
echo "Main tools successfully installed"
|
||||||
|
echo "Please install following with your package manager:"
|
||||||
|
for d in ${MISSING_DEPS[@]}; do
|
||||||
|
echo -n "$d "
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
148
install.sh
148
install.sh
@ -1,148 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# install location
|
|
||||||
LOCATION=/usr/local/bin
|
|
||||||
|
|
||||||
# exit top level program from subshell
|
|
||||||
trap "exit 1" TERM
|
|
||||||
export TOP_PID=$$
|
|
||||||
fail() {
|
|
||||||
kill -s TERM $TOP_PID
|
|
||||||
}
|
|
||||||
|
|
||||||
# platform IDs
|
|
||||||
LIN=linux
|
|
||||||
MAC=macos
|
|
||||||
WIN=windows
|
|
||||||
|
|
||||||
# Urls
|
|
||||||
LIN_X64_URL=https://git.phoenix.ipv64.de/public/warp/releases/download/1.0.0/linux-x64.warp-packer
|
|
||||||
LIN_AARCH64_URL=https://git.phoenix.ipv64.de/public/warp/releases/download/1.0.0/linux-aarch64.warp-packer
|
|
||||||
MAC_URL=https://git.phoenix.ipv64.de/public/warp/releases/download/1.0.0/macos-x64.warp-packer
|
|
||||||
|
|
||||||
# platform architecture
|
|
||||||
X64=x64
|
|
||||||
AARCH64=aarch64
|
|
||||||
|
|
||||||
# returns this platform ID
|
|
||||||
get_this_platform() {
|
|
||||||
local this_platform="$(uname -s)"
|
|
||||||
case $this_platform in
|
|
||||||
Linux*) echo $LIN ;;
|
|
||||||
Darwin*) echo $MAC ;;
|
|
||||||
*)
|
|
||||||
echo "Error: Unsupported platform $this_platform" >&2
|
|
||||||
fail
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# returns this platform architecture
|
|
||||||
get_this_architecture() {
|
|
||||||
local this_machine="$(uname -m)"
|
|
||||||
case $this_machine in
|
|
||||||
x86_64) echo $X64 ;;
|
|
||||||
aarch64) echo $AARCH64 ;;
|
|
||||||
*)
|
|
||||||
echo "Error: Unsupported machine $this_machine" >&2
|
|
||||||
fail
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# actually sets this platform
|
|
||||||
THIS_PLATFORM=$(get_this_platform)
|
|
||||||
|
|
||||||
# actually sets this architecture
|
|
||||||
THIS_ARCHITECTURE=$(get_this_architecture)
|
|
||||||
|
|
||||||
# fetches latest release download link for the platform
|
|
||||||
get_warp_link() {
|
|
||||||
local this_platform=$1
|
|
||||||
local this_architecture=$2
|
|
||||||
|
|
||||||
if [ "$this_platform" = "$LIN" ]; then
|
|
||||||
echo "$LIN_URL"
|
|
||||||
if [ "$this_architecture" = "$X64" ]; then
|
|
||||||
echo "$LIN_X64_URL"
|
|
||||||
else
|
|
||||||
echo "$LIN_AARCH64_URL"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "$MAC_URL"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# downloads and installs single binary
|
|
||||||
install() {
|
|
||||||
local name=$1
|
|
||||||
local link=$2
|
|
||||||
local temp_location="/tmp/$name"
|
|
||||||
echo "Downloading $name..."
|
|
||||||
curl -fsSL -o $temp_location $link
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
echo "Error: Failed to download $name" >&2
|
|
||||||
fail
|
|
||||||
fi
|
|
||||||
echo "Creating $LOCATION/$name..."
|
|
||||||
su -c "install -D \
|
|
||||||
--mode=755 \
|
|
||||||
--owner=root \
|
|
||||||
--group=root \
|
|
||||||
'$temp_location' '$LOCATION'"
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
echo "Error: Failed to install $name" >&2
|
|
||||||
fail
|
|
||||||
fi
|
|
||||||
rm $temp_location
|
|
||||||
}
|
|
||||||
|
|
||||||
# returns missing dependencies
|
|
||||||
get_missing_deps() {
|
|
||||||
if ! command -v awk > /dev/null 2<&1; then
|
|
||||||
echo -n "awk "
|
|
||||||
fi
|
|
||||||
if ! command -v curl > /dev/null 2<&1; then
|
|
||||||
echo -n "curl "
|
|
||||||
fi
|
|
||||||
if ! command -v file > /dev/null 2<&1; then
|
|
||||||
echo -n "file "
|
|
||||||
fi
|
|
||||||
if ! command -v grep > /dev/null 2<&1; then
|
|
||||||
echo -n "grep "
|
|
||||||
fi
|
|
||||||
if ! command -v sed > /dev/null 2<&1; then
|
|
||||||
echo -n "sed "
|
|
||||||
fi
|
|
||||||
if ! command -v sort > /dev/null 2<&1; then
|
|
||||||
echo -n "sort "
|
|
||||||
fi
|
|
||||||
if ! command -v tar > /dev/null 2<&1; then
|
|
||||||
echo -n "tar "
|
|
||||||
fi
|
|
||||||
if ! command -v unzip > /dev/null 2<&1; then
|
|
||||||
echo -n "unzip "
|
|
||||||
fi
|
|
||||||
if ! command -v zip > /dev/null 2<&1; then
|
|
||||||
echo -n "zip"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
WARP4J_LINK="https://git.phoenix.ipv64.de/public/warp4j/raw/branch/master/warp4j"
|
|
||||||
|
|
||||||
echo "Getting information about warp-packer releases..."
|
|
||||||
WARP_LINK=$(get_warp_link $THIS_PLATFORM $THIS_ARCHITECTURE)
|
|
||||||
|
|
||||||
MISSING_DEPS=$(get_missing_deps)
|
|
||||||
|
|
||||||
install "warp-packer" "$WARP_LINK" && \
|
|
||||||
install "warp4j" "$WARP4J_LINK"
|
|
||||||
|
|
||||||
if [ -z "$MISSING_DEPS" ]; then
|
|
||||||
echo "Successfully installed"
|
|
||||||
else
|
|
||||||
echo "Main tools successfully installed"
|
|
||||||
echo "Please install following with your package manager:"
|
|
||||||
echo $MISSING_DEPS
|
|
||||||
exit 1
|
|
||||||
fi
|
|
219
warp4j
219
warp4j
@ -15,17 +15,10 @@ function print_help {
|
|||||||
echo ' adds additional classpaths to the jdeps call'
|
echo ' adds additional classpaths to the jdeps call'
|
||||||
echo ' --auto-class-path extract and get class-path values from jar file'
|
echo ' --auto-class-path extract and get class-path values from jar file'
|
||||||
echo ' ignored when -cp, --class-path is set'
|
echo ' ignored when -cp, --class-path is set'
|
||||||
echo ' --spring-boot extract and get class-path values from'
|
|
||||||
echo ' Spring-Boot application jar file'
|
|
||||||
echo ' ignored when -cp, --class-path is set'
|
|
||||||
echo ' -o, --output <directory>'
|
echo ' -o, --output <directory>'
|
||||||
echo ' override output directory;'
|
echo ' override output directory;'
|
||||||
echo ' this is relative to current PWD'
|
echo ' this is relative to current PWD'
|
||||||
echo ' (default: ./warped)'
|
echo ' (default: ./warped)'
|
||||||
echo ' -p, --prefix <prefix>'
|
|
||||||
echo ' if set, warp-packer will use the prefix'
|
|
||||||
echo ' as target folder in which the '
|
|
||||||
echo ' application should be extracted'
|
|
||||||
echo ' --list show available java releases;'
|
echo ' --list show available java releases;'
|
||||||
echo ' takes into consideration other options:'
|
echo ' takes into consideration other options:'
|
||||||
echo ' "--java-version", "--no-optimize", "--jvm-impl";'
|
echo ' "--java-version", "--no-optimize", "--jvm-impl";'
|
||||||
@ -44,6 +37,8 @@ function print_help {
|
|||||||
echo ' --windows create binary for Windows'
|
echo ' --windows create binary for Windows'
|
||||||
echo ' if no targets are specified then binaries for'
|
echo ' if no targets are specified then binaries for'
|
||||||
echo ' all targets are created'
|
echo ' all targets are created'
|
||||||
|
echo ' --jvm-impl jvm implementation: hotspot or openj9'
|
||||||
|
echo ' (default: hotspot)'
|
||||||
echo ' --jvm-options <options>'
|
echo ' --jvm-options <options>'
|
||||||
echo ' passed to java like this:'
|
echo ' passed to java like this:'
|
||||||
echo ' "java <options> -jar <jar file>";'
|
echo ' "java <options> -jar <jar file>";'
|
||||||
@ -68,7 +63,7 @@ function fail_with() {
|
|||||||
fail
|
fail
|
||||||
}
|
}
|
||||||
|
|
||||||
# if error code is not zero fail with a message
|
# if error code is not zero fail with a message
|
||||||
function fail_if() {
|
function fail_if() {
|
||||||
local error_code=$1
|
local error_code=$1
|
||||||
local message=$2
|
local message=$2
|
||||||
@ -100,22 +95,6 @@ function get_this_platform() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# platform Machine
|
|
||||||
X64=x64
|
|
||||||
AARCH64=aarch64
|
|
||||||
|
|
||||||
# returns this platform machine
|
|
||||||
function get_this_machine() {
|
|
||||||
local this_machine="$(uname -m)"
|
|
||||||
case $this_machine in
|
|
||||||
x86_64) echo $X64 ;;
|
|
||||||
aarch64) echo $AARCH64 ;;
|
|
||||||
*)
|
|
||||||
fail_with "Unsupported machine $this_machine"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# show help if no arguments specified
|
# show help if no arguments specified
|
||||||
if [[ $# -eq 0 ]]; then
|
if [[ $# -eq 0 ]]; then
|
||||||
print_help
|
print_help
|
||||||
@ -135,14 +114,6 @@ while [[ $# -gt 0 ]]; do
|
|||||||
CLASS_PATH="$2"
|
CLASS_PATH="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
--auto-class-path)
|
|
||||||
AUTO_CLASS_PATH=true
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--spring-boot)
|
|
||||||
SPRING_BOOT_APPLICATION=true
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-j|--java-version)
|
-j|--java-version)
|
||||||
JAVA_VERSION="$2"
|
JAVA_VERSION="$2"
|
||||||
JAVA_VERSION_OVERRIDEN=true
|
JAVA_VERSION_OVERRIDEN=true
|
||||||
@ -152,10 +123,6 @@ while [[ $# -gt 0 ]]; do
|
|||||||
OUTPUT_DIR_PATH="$2"
|
OUTPUT_DIR_PATH="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
-p|--prefix)
|
|
||||||
PREFIX="--prefix $2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
--list)
|
--list)
|
||||||
LIST_RELEASES=true
|
LIST_RELEASES=true
|
||||||
shift
|
shift
|
||||||
@ -180,10 +147,18 @@ while [[ $# -gt 0 ]]; do
|
|||||||
TARGETS+=($WIN)
|
TARGETS+=($WIN)
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--jvm-impl)
|
||||||
|
JVM_IMPL="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
--jvm-options)
|
--jvm-options)
|
||||||
JVM_OPTIONS="$2"
|
JVM_OPTIONS="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
--auto-class-path)
|
||||||
|
AUTO_CLASS_PATH=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
-s|--silent)
|
-s|--silent)
|
||||||
SILENT=true
|
SILENT=true
|
||||||
shift
|
shift
|
||||||
@ -200,11 +175,10 @@ done
|
|||||||
set -- "${POSITIONAL[@]}" # restore positional arguments
|
set -- "${POSITIONAL[@]}" # restore positional arguments
|
||||||
|
|
||||||
THIS_PLATFORM=$(get_this_platform)
|
THIS_PLATFORM=$(get_this_platform)
|
||||||
THIS_MACHINE=$(get_this_machine)
|
|
||||||
|
|
||||||
# checks if all dependencies are available
|
# checks if all dependencies are available
|
||||||
function check_deps() {
|
function check_deps() {
|
||||||
local deps=(
|
local deps=(
|
||||||
"awk" \
|
"awk" \
|
||||||
"curl" \
|
"curl" \
|
||||||
"file" \
|
"file" \
|
||||||
@ -257,13 +231,22 @@ if [[ $JAVA_VERSION ]] && ! java_version_is_correct $JAVA_VERSION ; then
|
|||||||
fail_with "JDK version \"$JAVA_VERSION\" is not correct"
|
fail_with "JDK version \"$JAVA_VERSION\" is not correct"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
JVM_IMPL=hotspot
|
JVM_IMPL_HOTSPOT=hotspot
|
||||||
|
JVM_IMPL_OPENJ9=openj9
|
||||||
|
|
||||||
|
# validate jvm implementation
|
||||||
|
if [[ $JVM_IMPL ]] &&
|
||||||
|
[[ $JVM_IMPL != $JVM_IMPL_HOTSPOT ]] &&
|
||||||
|
[[ $JVM_IMPL != $JVM_IMPL_OPENJ9 ]]; then
|
||||||
|
fail_with "jvm implementation \"$JVM_IMPL\" is not correct"
|
||||||
|
fi
|
||||||
|
|
||||||
LATEST_LTS=17 # latest LTS java branch
|
LATEST_LTS=17 # latest LTS java branch
|
||||||
|
|
||||||
# default options
|
# default options
|
||||||
test -z $JAVA_VERSION && JAVA_VERSION=$LATEST_LTS
|
test -z $JAVA_VERSION && JAVA_VERSION=$LATEST_LTS
|
||||||
test -z $TARGETS && TARGETS=($LIN $MAC $WIN)
|
test -z $TARGETS && TARGETS=($LIN $MAC $WIN)
|
||||||
|
test -z $JVM_IMPL && JVM_IMPL=$JVM_IMPL_HOTSPOT
|
||||||
|
|
||||||
# returns java branch version
|
# returns java branch version
|
||||||
function get_base_version() {
|
function get_base_version() {
|
||||||
@ -290,28 +273,27 @@ function choose_distro_type() {
|
|||||||
# actually choose distro type
|
# actually choose distro type
|
||||||
JAVA_DISTRO_TYPE=$(choose_distro_type)
|
JAVA_DISTRO_TYPE=$(choose_distro_type)
|
||||||
|
|
||||||
# generates adoptium api url
|
# generates adoptopenjdk api url
|
||||||
function api_url() {
|
function api_url() {
|
||||||
local platform=$1 # windows/linux/macos
|
local request=$1 # info/binary
|
||||||
local architecture=$2
|
local platform=$2 # windows/linux/macos
|
||||||
# adoptium uses "mac" instead of "macos"
|
# adoptopenjdk uses "mac" instead of "macos"
|
||||||
if [[ $platform == "macos" ]]; then
|
if [[ $platform == "macos" ]]; then
|
||||||
platform="mac"
|
platform="mac"
|
||||||
fi
|
fi
|
||||||
|
echo -n "https://api.adoptopenjdk.net/v2/\
|
||||||
echo -n "https://api.adoptium.net/v3/assets/feature_releases/\
|
$request/releases/openjdk$JAVA_VERSION_BASE?\
|
||||||
$JAVA_VERSION_BASE/ga?architecture=$architecture&heap_size=normal&image_type=jdk&\
|
openjdk_impl=$JVM_IMPL&\
|
||||||
os=$platform&page=0&page_size=20&project=$JAVA_DISTRO_TYPE&\
|
os=$platform&\
|
||||||
sort_method=DEFAULT&sort_order=DESC&vendor=eclipse"
|
arch=x64&\
|
||||||
|
type=$JAVA_DISTRO_TYPE"
|
||||||
}
|
}
|
||||||
|
|
||||||
# requests info about all releases for given platform and java branch
|
# requests info about all releases for given platform and java branch
|
||||||
function fetch_distro_info() {
|
function fetch_distro_info() {
|
||||||
local platform=$1 # platform ID
|
local platform=$1 # platform ID
|
||||||
local architecture=$2
|
local branch=$2 # 8/9/10/11...
|
||||||
local branch=$3 # 8/9/10/11...
|
curl -s $(api_url info $platform)
|
||||||
curl -s $(api_url $platform $architecture)
|
|
||||||
fail_if $? "Failed to fetch java $branch info"
|
fail_if $? "Failed to fetch java $branch info"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,7 +323,7 @@ function list_releases() {
|
|||||||
local matched
|
local matched
|
||||||
local printed
|
local printed
|
||||||
local platform="linux" # just picked any
|
local platform="linux" # just picked any
|
||||||
info=$(fetch_distro_info $platform $X64 $JAVA_VERSION_BASE)
|
info=$(fetch_distro_info $platform $JAVA_VERSION_BASE)
|
||||||
matched=$(find_matched_versions "$info" $JAVA_VERSION)
|
matched=$(find_matched_versions "$info" $JAVA_VERSION)
|
||||||
if [[ $matched ]]; then
|
if [[ $matched ]]; then
|
||||||
echo "Releases that match $JAVA_VERSION:"
|
echo "Releases that match $JAVA_VERSION:"
|
||||||
@ -362,8 +344,8 @@ if [[ $LIST_RELEASES ]]; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
JAR_FILE_BASE_NAME=$(basename -- "$JAR") # "my-app.jar"
|
JAR_FILE_BASE_NAME=$(basename -- "$JAR") # "my-app.jAr"
|
||||||
JAR_EXTENSION="${JAR_FILE_BASE_NAME##*.}" # "jar"
|
JAR_EXTENSION="${JAR_FILE_BASE_NAME##*.}" # "jAr"
|
||||||
JAR_EXTENSION_LOWERCASE=$(printf "%s" "$JAR_EXTENSION" | tr '[:upper:]' '[:lower:]') # "jar"
|
JAR_EXTENSION_LOWERCASE=$(printf "%s" "$JAR_EXTENSION" | tr '[:upper:]' '[:lower:]') # "jar"
|
||||||
JAR_NAME="${JAR_FILE_BASE_NAME%.*}" # "my-app"
|
JAR_NAME="${JAR_FILE_BASE_NAME%.*}" # "my-app"
|
||||||
|
|
||||||
@ -383,10 +365,9 @@ if ([[ $(file $JAR) != *"Java"* ]] && # it could be "Java archive data" or "Java
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# even if this platform is not targeted, we still need
|
# even if this platform is not targeted, we still need
|
||||||
# a JDK for this platform to optimize JDKs for other platforms
|
# a JDK for this platform to optimize JDKs for other platforms
|
||||||
TARGETS_TO_CACHE=${TARGETS[@]}
|
TARGETS_TO_CACHE=${TARGETS[@]}
|
||||||
if [[ $THIS_MACHINE == $X64 ]] && # if architecture is x86
|
if [[ $JAVA_DISTRO_TYPE == $DISTRO_TYPE_JDK ]] && # if usind JDK (not JRE)
|
||||||
[[ $JAVA_DISTRO_TYPE == $DISTRO_TYPE_JDK ]] && # and if using JDK (not JRE)
|
|
||||||
[[ ${TARGETS[@]} != *"$THIS_PLATFORM"* ]]; then # and this platform is not targeted
|
[[ ${TARGETS[@]} != *"$THIS_PLATFORM"* ]]; then # and this platform is not targeted
|
||||||
TARGETS_TO_CACHE+=($THIS_PLATFORM)
|
TARGETS_TO_CACHE+=($THIS_PLATFORM)
|
||||||
fi
|
fi
|
||||||
@ -436,7 +417,7 @@ JAVA=$DIR/$JAVA_DIST/bin/'"$JAVA_EXEC"'
|
|||||||
JAR_PATH=$DIR/$JAR
|
JAR_PATH=$DIR/$JAR
|
||||||
|
|
||||||
exec "$JAVA" '"$JVM_OPTIONS"' -jar "$JAR_PATH" "$@"
|
exec "$JAVA" '"$JVM_OPTIONS"' -jar "$JAR_PATH" "$@"
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
|
||||||
# prints a launcher for windows cmd
|
# prints a launcher for windows cmd
|
||||||
@ -454,7 +435,7 @@ SET "JAR_PATH=%~dp0\%JAR%"
|
|||||||
|
|
||||||
START %JAVA% '"$JVM_OPTIONS"' -jar %JAR_PATH% %*
|
START %JAVA% '"$JVM_OPTIONS"' -jar %JAR_PATH% %*
|
||||||
EXIT /B %ERRORLEVEL%
|
EXIT /B %ERRORLEVEL%
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
|
||||||
# these files are success markers
|
# these files are success markers
|
||||||
@ -464,9 +445,8 @@ MARKER_UNPACKED="unpacked" # after runtime uncompress
|
|||||||
# returns latest cached version that matches version specified by user
|
# returns latest cached version that matches version specified by user
|
||||||
function find_latest_cached() {
|
function find_latest_cached() {
|
||||||
local platform=$1
|
local platform=$1
|
||||||
local architecture=$2
|
local user_version=$2
|
||||||
local user_version=$3
|
local platform_dir=$JAVA_DOWNLOAD_PATH/$platform/
|
||||||
local platform_dir=$JAVA_DOWNLOAD_PATH/$platform/$architecture
|
|
||||||
# turning something like "11.0.1+13" into regexp like "^11\.0\.1\+13"
|
# turning something like "11.0.1+13" into regexp like "^11\.0\.1\+13"
|
||||||
local pattern="^"$(echo $user_version \
|
local pattern="^"$(echo $user_version \
|
||||||
| sed -e 's/\./\\\./g' -e 's/\+/\\\+/g')
|
| sed -e 's/\./\\\./g' -e 's/\+/\\\+/g')
|
||||||
@ -489,7 +469,7 @@ function find_latest_cached() {
|
|||||||
|
|
||||||
# finds latest concrete distro version that matches version specified by user
|
# finds latest concrete distro version that matches version specified by user
|
||||||
function find_latest_version() {
|
function find_latest_version() {
|
||||||
local info=$1 # info fetched from Adoptium
|
local info=$1 # info fetched from AdoptOpenJDK
|
||||||
local user_version=$2 # version supplied by user is a template
|
local user_version=$2 # version supplied by user is a template
|
||||||
local matched_version # latest version that matches the template
|
local matched_version # latest version that matches the template
|
||||||
local versions # all versions
|
local versions # all versions
|
||||||
@ -515,11 +495,12 @@ function find_latest_version() {
|
|||||||
|
|
||||||
# finds direct link to download concrete runtime version
|
# finds direct link to download concrete runtime version
|
||||||
function find_distro_link() {
|
function find_distro_link() {
|
||||||
local info=$1 # info fetched from Adoptium
|
local info=$1 # info fetched from AdoptOpenJDK
|
||||||
local version=$2 # concrete distro version like "11.0.2+9"
|
local version=$2 # concrete distro version like "11.0.2+9"
|
||||||
local link=$(echo "$info" \
|
local link=$(echo "$info" \
|
||||||
| grep -B14 "\"release_name\": \"jdk-$version\"" \
|
| grep -B13 "\"heap_size\": \"normal\"" \
|
||||||
| grep "\"link\":" \
|
| grep -B11 "\"semver\": \"$version\"" \
|
||||||
|
| grep "binary_link" \
|
||||||
| sort --reverse \
|
| sort --reverse \
|
||||||
| head -n 1 \
|
| head -n 1 \
|
||||||
| awk '{print $2}' \
|
| awk '{print $2}' \
|
||||||
@ -533,11 +514,9 @@ function find_distro_link() {
|
|||||||
# downloads runtime distro
|
# downloads runtime distro
|
||||||
function download_distro() {
|
function download_distro() {
|
||||||
local platform=$1
|
local platform=$1
|
||||||
local architecture=$2
|
local version=$2
|
||||||
local version=$3
|
local link=$3
|
||||||
local link=$4
|
local download_dir=$JAVA_DOWNLOAD_PATH/$platform/$version
|
||||||
local download_dir=$JAVA_DOWNLOAD_PATH/$platform/$architecture/$version
|
|
||||||
echo "Download link: $link"
|
|
||||||
echo "Downloading $JVM_IMPL-$JAVA_DISTRO_TYPE-$version-$platform..."
|
echo "Downloading $JVM_IMPL-$JAVA_DISTRO_TYPE-$version-$platform..."
|
||||||
rm -rf "$download_dir"
|
rm -rf "$download_dir"
|
||||||
mkdir -p "$download_dir"
|
mkdir -p "$download_dir"
|
||||||
@ -551,64 +530,58 @@ function download_distro() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
# ensures required distro is in cache
|
# ensures required distro is in cache
|
||||||
function ensure_distro_cached() {
|
function ensure_distro_cached() {
|
||||||
local platform=$1
|
local platform=$1
|
||||||
local architecture=$2
|
|
||||||
local distro_info
|
local distro_info
|
||||||
local distro_link
|
local distro_link
|
||||||
if [[ -z $PULL ]]; then
|
if [[ -z $PULL ]]; then
|
||||||
if [[ -z $JAVA_VERSION_OVERRIDEN ]]; then
|
if [[ -z $JAVA_VERSION_OVERRIDEN ]]; then
|
||||||
if [[ ! $(find_latest_cached $platform $architecture $LATEST_LTS) ]]; then
|
if [[ ! $(find_latest_cached $platform $LATEST_LTS) ]]; then
|
||||||
distro_info=$(fetch_distro_info $platform $architecture $LATEST_LTS)
|
distro_info=$(fetch_distro_info $platform $LATEST_LTS)
|
||||||
CONCRETE_JAVA_VERSION=$(find_latest_version "$distro_info" $LATEST_LTS)
|
CONCRETE_JAVA_VERSION=$(find_latest_version "$distro_info" $LATEST_LTS)
|
||||||
distro_link=$(find_distro_link "$distro_info" $CONCRETE_JAVA_VERSION)
|
distro_link=$(find_distro_link "$distro_info" $CONCRETE_JAVA_VERSION)
|
||||||
download_distro $platform $architecture $CONCRETE_JAVA_VERSION "$distro_link"
|
download_distro $platform $CONCRETE_JAVA_VERSION "$distro_link"
|
||||||
else
|
else
|
||||||
CONCRETE_JAVA_VERSION=$(find_latest_cached $platform $architecture $LATEST_LTS)
|
CONCRETE_JAVA_VERSION=$(find_latest_cached $platform $LATEST_LTS)
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [[ ! $(find_latest_cached $platform $architecture $JAVA_VERSION) ]]; then
|
if [[ ! $(find_latest_cached $platform $JAVA_VERSION) ]]; then
|
||||||
distro_info=$(fetch_distro_info $platform $architecture $JAVA_VERSION_BASE)
|
distro_info=$(fetch_distro_info $platform $JAVA_VERSION_BASE)
|
||||||
CONCRETE_JAVA_VERSION=$(find_latest_version "$distro_info" $JAVA_VERSION)
|
CONCRETE_JAVA_VERSION=$(find_latest_version "$distro_info" $JAVA_VERSION)
|
||||||
distro_link=$(find_distro_link "$distro_info" $CONCRETE_JAVA_VERSION)
|
distro_link=$(find_distro_link "$distro_info" $CONCRETE_JAVA_VERSION)
|
||||||
download_distro $platform $architecture $CONCRETE_JAVA_VERSION "$distro_link"
|
download_distro $platform $CONCRETE_JAVA_VERSION "$distro_link"
|
||||||
else
|
else
|
||||||
CONCRETE_JAVA_VERSION=$(find_latest_cached $platform $architecture $JAVA_VERSION)
|
CONCRETE_JAVA_VERSION=$(find_latest_cached $platform $JAVA_VERSION)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [[ -z $JAVA_VERSION ]]; then
|
if [[ -z $JAVA_VERSION ]]; then
|
||||||
distro_info=$(fetch_distro_info $platform $architecture $LATEST_LTS)
|
distro_info=$(fetch_distro_info $platform $LATEST_LTS)
|
||||||
CONCRETE_JAVA_VERSION=$(find_latest_version "$distro_info" $LATEST_LTS)
|
CONCRETE_JAVA_VERSION=$(find_latest_version "$distro_info" $LATEST_LTS)
|
||||||
else
|
else
|
||||||
distro_info=$(fetch_distro_info $platform $architecture $JAVA_VERSION_BASE)
|
distro_info=$(fetch_distro_info $platform $JAVA_VERSION_BASE)
|
||||||
CONCRETE_JAVA_VERSION=$(find_latest_version "$distro_info" $JAVA_VERSION)
|
CONCRETE_JAVA_VERSION=$(find_latest_version "$distro_info" $JAVA_VERSION)
|
||||||
fi
|
fi
|
||||||
if [[ ! $(find_latest_cached $platform $architecture $CONCRETE_JAVA_VERSION) ]]; then
|
if [[ ! $(find_latest_cached $platform $CONCRETE_JAVA_VERSION) ]]; then
|
||||||
distro_link=$(find_distro_link "$distro_info" $CONCRETE_JAVA_VERSION)
|
distro_link=$(find_distro_link "$distro_info" $CONCRETE_JAVA_VERSION)
|
||||||
download_distro $platform $architecture $CONCRETE_JAVA_VERSION "$distro_link"
|
download_distro $platform $CONCRETE_JAVA_VERSION "$distro_link"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# actually ensure required distro is in cache
|
# actually ensure required distro is in cache
|
||||||
for target in ${TARGETS_TO_CACHE[@]}; do
|
for target in ${TARGETS_TO_CACHE[@]}; do
|
||||||
ensure_distro_cached $target $X64
|
ensure_distro_cached $target
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ $THIS_MACHINE == $AARCH64 ]]; then
|
|
||||||
ensure_distro_cached $THIS_PLATFORM $AARCH64
|
|
||||||
fi
|
|
||||||
|
|
||||||
UNPACKED_SUBDIR="distro"
|
UNPACKED_SUBDIR="distro"
|
||||||
|
|
||||||
# ensures required distro uncompressed
|
# ensures required distro uncompressed
|
||||||
function ensure_distro_unpacked() {
|
function ensure_distro_unpacked() {
|
||||||
local platform=$1
|
local platform=$1
|
||||||
local architecture=$2
|
local version=$2
|
||||||
local version=$3
|
local download_dir=$JAVA_DOWNLOAD_PATH/$platform/$version
|
||||||
local download_dir=$JAVA_DOWNLOAD_PATH/$platform/$architecture/$version
|
|
||||||
local unpacked_dir=$download_dir/$UNPACKED_SUBDIR
|
local unpacked_dir=$download_dir/$UNPACKED_SUBDIR
|
||||||
if [[ ! -e $download_dir/$MARKER_UNPACKED ]]; then
|
if [[ ! -e $download_dir/$MARKER_UNPACKED ]]; then
|
||||||
echo "Uncompressing $JVM_IMPL-$JAVA_DISTRO_TYPE-$version-$platform"
|
echo "Uncompressing $JVM_IMPL-$JAVA_DISTRO_TYPE-$version-$platform"
|
||||||
@ -657,17 +630,12 @@ function ensure_distro_unpacked() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# actually ensure required distro uncompressed
|
# actually ensure required distro uncompressed
|
||||||
for target in ${TARGETS[@]}; do
|
for target in ${TARGETS[@]}; do
|
||||||
ensure_distro_unpacked $target $X64 $CONCRETE_JAVA_VERSION
|
ensure_distro_unpacked $target $CONCRETE_JAVA_VERSION
|
||||||
done
|
done
|
||||||
|
|
||||||
# actually ensure required distro for build is uncompressed when it is not x64
|
JDK_PATH=$JAVA_DOWNLOAD_PATH/$THIS_PLATFORM/$CONCRETE_JAVA_VERSION/$UNPACKED_SUBDIR
|
||||||
if [[ $THIS_MACHINE == $AARCH64 ]]; then
|
|
||||||
ensure_distro_unpacked $THIS_PLATFORM $AARCH64 $CONCRETE_JAVA_VERSION
|
|
||||||
fi
|
|
||||||
|
|
||||||
JDK_PATH=$JAVA_DOWNLOAD_PATH/$THIS_PLATFORM/$THIS_MACHINE/$CONCRETE_JAVA_VERSION/$UNPACKED_SUBDIR
|
|
||||||
JLINK=$JDK_PATH/bin/jlink
|
JLINK=$JDK_PATH/bin/jlink
|
||||||
JDEPS=$JDK_PATH/bin/jdeps
|
JDEPS=$JDK_PATH/bin/jdeps
|
||||||
|
|
||||||
@ -685,12 +653,6 @@ if [[ $JAVA_DISTRO_TYPE == $DISTRO_TYPE_JDK ]]; then
|
|||||||
echo "Extracting jar file to get classpath"
|
echo "Extracting jar file to get classpath"
|
||||||
unzip -q "${JAR}" -d "${EXTRACTED_JAR_PATH}"
|
unzip -q "${JAR}" -d "${EXTRACTED_JAR_PATH}"
|
||||||
echo "Fetching modules"
|
echo "Fetching modules"
|
||||||
MODULES=$($JDEPS --ignore-missing-deps --print-module-deps --recursive --multi-release $JAVA_VERSION_BASE -quiet --class-path=${EXTRACTED_JAR_PATH}/* --module-path=${EXTRACTED_JAR_PATH}/* $JAR | grep -v Warning)
|
|
||||||
elif [ "$SPRING_BOOT_APPLICATION" ]
|
|
||||||
then
|
|
||||||
echo "Extracting Spring Boot jar file to get classpath"
|
|
||||||
unzip -q "${JAR}" -d "${EXTRACTED_JAR_PATH}"
|
|
||||||
echo "Fetching modules"
|
|
||||||
MODULES=$($JDEPS --ignore-missing-deps --print-module-deps --recursive --multi-release $JAVA_VERSION_BASE -quiet --class-path=${EXTRACTED_JAR_PATH}/BOOT-INF/lib/* --module-path=${EXTRACTED_JAR_PATH}/BOOT-INF/lib/BOOT-INF/lib/* $JAR | grep -v Warning)
|
MODULES=$($JDEPS --ignore-missing-deps --print-module-deps --recursive --multi-release $JAVA_VERSION_BASE -quiet --class-path=${EXTRACTED_JAR_PATH}/BOOT-INF/lib/* --module-path=${EXTRACTED_JAR_PATH}/BOOT-INF/lib/BOOT-INF/lib/* $JAR | grep -v Warning)
|
||||||
else
|
else
|
||||||
echo "Fetch modules with default behavior"
|
echo "Fetch modules with default behavior"
|
||||||
@ -701,17 +663,12 @@ fi
|
|||||||
# creates minimized runtime for the platform
|
# creates minimized runtime for the platform
|
||||||
function create_optimized_runtime() {
|
function create_optimized_runtime() {
|
||||||
local platform=$1
|
local platform=$1
|
||||||
local machine=$2
|
local jmods=$JAVA_DOWNLOAD_PATH/$platform/$CONCRETE_JAVA_VERSION/$UNPACKED_SUBDIR/jmods
|
||||||
local jmods=$JAVA_DOWNLOAD_PATH/$platform/$machine/$CONCRETE_JAVA_VERSION/$UNPACKED_SUBDIR/jmods
|
|
||||||
local strip_debug=strip-debug
|
|
||||||
echo "Creating minimal runtime for $platform..."
|
echo "Creating minimal runtime for $platform..."
|
||||||
if [[ $JAVA_VERSION_BASE -ge 13 ]]; then
|
|
||||||
strip_debug=strip-java-debug-attributes
|
|
||||||
fi
|
|
||||||
"$JLINK" \
|
"$JLINK" \
|
||||||
--no-header-files \
|
--no-header-files \
|
||||||
--no-man-pages \
|
--no-man-pages \
|
||||||
--$strip_debug \
|
--strip-debug \
|
||||||
--module-path "$jmods" \
|
--module-path "$jmods" \
|
||||||
--add-modules $MODULES \
|
--add-modules $MODULES \
|
||||||
--output "$BUNDLES_PATH/$platform/$BUNDLED_DISTRO_SUBDIR"
|
--output "$BUNDLES_PATH/$platform/$BUNDLED_DISTRO_SUBDIR"
|
||||||
@ -721,7 +678,6 @@ function create_optimized_runtime() {
|
|||||||
# creates warp bundle for the platform
|
# creates warp bundle for the platform
|
||||||
function create_bundle() {
|
function create_bundle() {
|
||||||
local platform=$1
|
local platform=$1
|
||||||
local machine=$2
|
|
||||||
|
|
||||||
if [[ $SILENT ]] && [[ $platform == $WIN ]]; then
|
if [[ $SILENT ]] && [[ $platform == $WIN ]]; then
|
||||||
JAVA_EXEC=javaw
|
JAVA_EXEC=javaw
|
||||||
@ -731,10 +687,10 @@ function create_bundle() {
|
|||||||
|
|
||||||
case $JAVA_DISTRO_TYPE in
|
case $JAVA_DISTRO_TYPE in
|
||||||
$DISTRO_TYPE_JDK)
|
$DISTRO_TYPE_JDK)
|
||||||
create_optimized_runtime $platform $machine
|
create_optimized_runtime $platform
|
||||||
;;
|
;;
|
||||||
$DISTRO_TYPE_JRE)
|
$DISTRO_TYPE_JRE)
|
||||||
mkdir -p "$BUNDLES_PATH/$platform/$machine/$BUNDLED_DISTRO_SUBDIR"
|
mkdir -p "$BUNDLES_PATH/$platform/$BUNDLED_DISTRO_SUBDIR"
|
||||||
cp -r "$JAVA_DOWNLOAD_PATH/$platform/$CONCRETE_JAVA_VERSION/$UNPACKED_SUBDIR"/* \
|
cp -r "$JAVA_DOWNLOAD_PATH/$platform/$CONCRETE_JAVA_VERSION/$UNPACKED_SUBDIR"/* \
|
||||||
"$BUNDLES_PATH/$platform/$BUNDLED_DISTRO_SUBDIR"
|
"$BUNDLES_PATH/$platform/$BUNDLED_DISTRO_SUBDIR"
|
||||||
;;
|
;;
|
||||||
@ -752,7 +708,7 @@ function create_bundle() {
|
|||||||
rm -rf "$BUNDLES_PATH"
|
rm -rf "$BUNDLES_PATH"
|
||||||
# actually create bundles for all targets
|
# actually create bundles for all targets
|
||||||
for target in ${TARGETS[@]}; do
|
for target in ${TARGETS[@]}; do
|
||||||
create_bundle $target $X64
|
create_bundle $target
|
||||||
done
|
done
|
||||||
|
|
||||||
# creates binaries and archives for all targets
|
# creates binaries and archives for all targets
|
||||||
@ -763,11 +719,8 @@ function warp_targets() {
|
|||||||
echo "Warping for $LIN..."
|
echo "Warping for $LIN..."
|
||||||
mkdir -p "$WARPED_TEMP_PATH/$LIN"
|
mkdir -p "$WARPED_TEMP_PATH/$LIN"
|
||||||
warp-packer \
|
warp-packer \
|
||||||
pack \
|
|
||||||
--unique-id \
|
|
||||||
$PREFIX \
|
|
||||||
--arch linux-x64 \
|
--arch linux-x64 \
|
||||||
--input-dir "$BUNDLES_PATH/$LIN" \
|
--input_dir "$BUNDLES_PATH/$LIN" \
|
||||||
--exec "$LAUNCHER_NAME.sh" \
|
--exec "$LAUNCHER_NAME.sh" \
|
||||||
--output "$WARPED_TEMP_PATH/$LIN/$APP_NAME" \
|
--output "$WARPED_TEMP_PATH/$LIN/$APP_NAME" \
|
||||||
&> /dev/null
|
&> /dev/null
|
||||||
@ -784,11 +737,8 @@ function warp_targets() {
|
|||||||
echo "Warping for $MAC..."
|
echo "Warping for $MAC..."
|
||||||
mkdir -p "$WARPED_TEMP_PATH/$MAC"
|
mkdir -p "$WARPED_TEMP_PATH/$MAC"
|
||||||
warp-packer \
|
warp-packer \
|
||||||
pack \
|
|
||||||
--unique-id \
|
|
||||||
$PREFIX \
|
|
||||||
--arch macos-x64 \
|
--arch macos-x64 \
|
||||||
--input-dir "$BUNDLES_PATH/$MAC" \
|
--input_dir "$BUNDLES_PATH/$MAC" \
|
||||||
--exec "$LAUNCHER_NAME.sh" \
|
--exec "$LAUNCHER_NAME.sh" \
|
||||||
--output "$WARPED_TEMP_PATH/$MAC/$APP_NAME" \
|
--output "$WARPED_TEMP_PATH/$MAC/$APP_NAME" \
|
||||||
&> /dev/null
|
&> /dev/null
|
||||||
@ -805,11 +755,8 @@ function warp_targets() {
|
|||||||
echo "Warping for $WIN..."
|
echo "Warping for $WIN..."
|
||||||
mkdir -p "$WARPED_TEMP_PATH/$WIN"
|
mkdir -p "$WARPED_TEMP_PATH/$WIN"
|
||||||
warp-packer \
|
warp-packer \
|
||||||
pack \
|
|
||||||
--unique-id \
|
|
||||||
$PREFIX \
|
|
||||||
--arch windows-x64 \
|
--arch windows-x64 \
|
||||||
--input-dir "$BUNDLES_PATH/$WIN" \
|
--input_dir "$BUNDLES_PATH/$WIN" \
|
||||||
--exec "$LAUNCHER_NAME.cmd" \
|
--exec "$LAUNCHER_NAME.cmd" \
|
||||||
--output "$WARPED_TEMP_PATH/$WIN/$APP_NAME.exe" \
|
--output "$WARPED_TEMP_PATH/$WIN/$APP_NAME.exe" \
|
||||||
&> /dev/null
|
&> /dev/null
|
||||||
@ -826,9 +773,9 @@ function warp_targets() {
|
|||||||
mv "$WARPED_TEMP_PATH/$WIN/$APP_NAME.exe" "$WARPED_PATH/$APP_NAME-windows-x64.exe"
|
mv "$WARPED_TEMP_PATH/$WIN/$APP_NAME.exe" "$WARPED_PATH/$APP_NAME-windows-x64.exe"
|
||||||
rmdir "$WARPED_TEMP_PATH/$WIN"
|
rmdir "$WARPED_TEMP_PATH/$WIN"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rmdir "$WARPED_TEMP_PATH"
|
rmdir "$WARPED_TEMP_PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
# actually create binaries and archives for all targets
|
# actually create binaries and archives for all targets
|
||||||
warp_targets
|
warp_targets
|
Loading…
Reference in New Issue
Block a user