develop #8
112
BUILD.md
Normal file
112
BUILD.md
Normal file
@ -0,0 +1,112 @@
|
||||
# Build Instructions
|
||||
|
||||
Instructions for building this repository on Linux.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Build Instructions](#build-instructions)
|
||||
- [Table of Contents](#table-of-contents)
|
||||
- [Contributing to the Repository](#contributing-to-the-repository)
|
||||
- [Repository Content](#repository-content)
|
||||
- [Building on Linux](#building-on-linux)
|
||||
- [Linux Development Environment Requirements](#linux-development-environment-requirements)
|
||||
- [Required Package List](#required-package-list)
|
||||
- [Install and Prepare Required Rust Version](#install-and-prepare-required-rust-version)
|
||||
- [Required macOS SDK](#required-macos-sdk)
|
||||
- [Build and Use macOS SDK from Xcode](#build-and-use-macos-sdk-from-xcode)
|
||||
- [Build the Project](#build-the-project)
|
||||
|
||||
## Contributing to the Repository
|
||||
|
||||
If you intend to contribute, the preferred workflow is for you to develop your contribution in a fork of this repository in your GitHub account and then submit a pull request.
|
||||
|
||||
## Repository Content
|
||||
|
||||
This repository contains the source code necessary to build warp-packer for different platforms and architectures.
|
||||
|
||||
## Building on Linux
|
||||
|
||||
### Linux Development Environment Requirements
|
||||
|
||||
This repository has been built and tested on Debian 12.5 (Bookworm) on an AMD64 architecture.
|
||||
|
||||
#### Required Package List
|
||||
|
||||
```bash
|
||||
apt install curl maven clang cmake libssl-dev zlib1g-dev liblzma-dev libbz2-dev gcc-aarch64-linux-gnu gcc-mingw-w64-x86-64-win32
|
||||
```
|
||||
|
||||
#### Install and Prepare Required Rust Version
|
||||
|
||||
This repository has been built and tested with Rust version 1.78.
|
||||
|
||||
To install the newest version, run the following command:
|
||||
```bash
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
```
|
||||
|
||||
If a newer version doesn't work, a specific version can be installed with the following command:
|
||||
```bash
|
||||
$ curl --proto '=https' --tls1.2 -sSf https://sh.rustup.rs/ | sh -s --default-toolchain=1.78.0
|
||||
```
|
||||
|
||||
For more information see this [GitHub Issue](https://github.com/rust-lang/rustup/issues/2882).
|
||||
|
||||
After installing, run the following commands to get the necessary targets:
|
||||
```bash
|
||||
rustup target add x86_64-apple-darwin
|
||||
rustup target add aarch64-unknown-linux-gnu
|
||||
rustup target add x86_64-pc-windows-gnu
|
||||
```
|
||||
|
||||
#### Required macOS SDK
|
||||
|
||||
To build warp-packer for the target x86_64-apple-darwin, a macOS SDK is needed. The repository has been built and tested with MacOSX10.12 SDK.
|
||||
There are several GitHub repositories available that contain different SDK versions, but they all seem to miss the header files. So it is recommended to download it from Apple's website.
|
||||
The macOS SDK is integrated into Xcode, and this repository has been built and tested with Xcode version 8.3.3.
|
||||
|
||||
##### Build and Use macOS SDK from Xcode
|
||||
|
||||
To build and use the macOS SDK from Xcode, [osxcross](https://github.com/tpoechtrager/osxcross) will be used.
|
||||
|
||||
Download osxcross:
|
||||
```bash
|
||||
git clone https://github.com/tpoechtrager/osxcross.git
|
||||
```
|
||||
|
||||
Extract macOS SDK from Xcode (see [here](https://github.com/tpoechtrager/osxcross?tab=readme-ov-file#packing-the-sdk-on-linux---method-1-xcode--80)):
|
||||
```bash
|
||||
<path/to>/osxcross/tools/gen_sdk_package_pbzx.sh <path/to>/Xcode_8.3.3.xip
|
||||
```
|
||||
|
||||
Hint: This method may require up to 45 GB of free disk space. An SSD is recommended for this method.
|
||||
|
||||
Copy or move the SDK into the `<path/to>/osxcross/tarballs/` directory.
|
||||
|
||||
Run:
|
||||
```bash
|
||||
UNATTENDED=yes OSX_VERSION_MIN=10.12 ./build.sh
|
||||
```
|
||||
to create the macOS cross toolchain.
|
||||
|
||||
Add the target/bin folder to your PATH environment variable:
|
||||
```bash
|
||||
PATH="<path/to>/osxcross/target/bin:$PATH"
|
||||
```
|
||||
|
||||
#### Build the Project
|
||||
|
||||
Clone the project and within the project directory, run:
|
||||
```bash
|
||||
make
|
||||
```
|
||||
to start the build.
|
||||
|
||||
The compiled warp-packer files are in the folder:
|
||||
```bash
|
||||
<path/to>/warp/target/<target>/release/warp-packer
|
||||
```
|
||||
e.g.
|
||||
```bash
|
||||
warp/target/aarch64-unknown-linux-gnu/release/warp-packer
|
||||
```
|
83
INSTALL.md
Normal file
83
INSTALL.md
Normal file
@ -0,0 +1,83 @@
|
||||
# Installation Instructions
|
||||
|
||||
Instructions for installing the warp-packer executable on Linux, Mac, and Windows.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Installation Instructions](#installation-instructions)
|
||||
- [Table of Contents](#table-of-contents)
|
||||
- [Linux](#linux)
|
||||
- [Mac](#mac)
|
||||
- [Windows](#windows)
|
||||
|
||||
## Linux
|
||||
|
||||
1. **Copy the warp-packer executable to a directory in your PATH:**
|
||||
|
||||
For example, you can copy it to `/usr/local/bin`:
|
||||
```sh
|
||||
sudo cp /path/to/warp-packer /usr/local/bin/
|
||||
```
|
||||
|
||||
2. **Ensure the warp-packer executable has the correct permissions:**
|
||||
|
||||
Make the file executable:
|
||||
```sh
|
||||
sudo chmod +x /usr/local/bin/warp-packer
|
||||
```
|
||||
|
||||
3. **Verify the installation:**
|
||||
|
||||
Check that the executable is in your PATH and works correctly:
|
||||
```sh
|
||||
warp-packer --version
|
||||
```
|
||||
|
||||
## Mac
|
||||
|
||||
1. **Copy the warp-packer executable to a directory in your PATH:**
|
||||
|
||||
For example, you can copy it to `/usr/local/bin`:
|
||||
```sh
|
||||
sudo cp /path/to/warp-packer /usr/local/bin/
|
||||
```
|
||||
|
||||
2. **Ensure the warp-packer executable has the correct permissions:**
|
||||
|
||||
Make the file executable:
|
||||
```sh
|
||||
sudo chmod +x /usr/local/bin/warp-packer
|
||||
```
|
||||
|
||||
3. **Verify the installation:**
|
||||
|
||||
Check that the executable is in your PATH and works correctly:
|
||||
```sh
|
||||
warp-packer --version
|
||||
```
|
||||
|
||||
## Windows
|
||||
|
||||
1. **Copy the warp-packer executable to a directory in your PATH:**
|
||||
|
||||
For example, you can copy it to `C:\Program Files\warp-packer`:
|
||||
```powershell
|
||||
Copy-Item -Path "C:\path\to\warp-packer.exe" -Destination "C:\Program Files\warp-packer\"
|
||||
```
|
||||
|
||||
2. **Add the directory to your PATH environment variable:**
|
||||
|
||||
- Open the Start Search, type in "env", and select "Edit the system environment variables".
|
||||
- In the System Properties window, click on the "Environment Variables..." button.
|
||||
- In the Environment Variables window, under "System variables", find the `Path` variable, select it, and click "Edit...".
|
||||
- In the Edit Environment Variable window, click "New" and add the path to the directory where you copied the warp-packer executable (`C:\Program Files\warp-packer\`).
|
||||
- Click "OK" to close all windows.
|
||||
|
||||
3. **Verify the installation:**
|
||||
|
||||
Open a new Command Prompt and check that the executable is in your PATH and works correctly:
|
||||
```cmd
|
||||
warp-packer --version
|
||||
```
|
||||
|
||||
By following these steps, you will have the warp-packer executable installed and ready to use on Linux, Mac, and Windows.
|
24
README.md
24
README.md
@ -85,7 +85,7 @@ dgiagio@X1:~/Devel$ chmod +x warp-packer
|
||||
**Create your self-contained application**
|
||||
|
||||
```sh
|
||||
dgiagio@X1:~/Devel$ ./warp-packer --arch linux-x64 --input_dir myapp --exec launch --output myapp.bin
|
||||
dgiagio@X1:~/Devel$ ./warp-packer pack --arch linux-x64 --input-dir myapp --exec launch --output myapp.bin
|
||||
dgiagio@X1:~/Devel$ chmod +x myapp.bin
|
||||
```
|
||||
|
||||
@ -170,7 +170,7 @@ Diegos-iMac:Devel dgiagio$ chmod +x warp-packer
|
||||
**Create your self-contained application**
|
||||
|
||||
```sh
|
||||
Diegos-iMac:Devel dgiagio$ ./warp-packer --arch macos-x64 --input_dir myapp --exec launch --output myapp.bin
|
||||
Diegos-iMac:Devel dgiagio$ ./warp-packer pack --arch macos-x64 --input-dir myapp --exec launch --output myapp.bin
|
||||
Diegos-iMac:Devel dgiagio$ chmod +x myapp.bin
|
||||
```
|
||||
|
||||
@ -250,7 +250,7 @@ PS C:\Users\Diego\Devel> [Net.ServicePointManager]::SecurityProtocol = "tls12, t
|
||||
**Create your self-contained application**
|
||||
|
||||
```powershell
|
||||
PS C:\Users\Diego\Devel> .\warp-packer --arch windows-x64 --input_dir .\myapp\ --exec launch.cmd --output myapp.exe
|
||||
PS C:\Users\Diego\Devel> .\warp-packer --arch windows-x64 --input-dir .\myapp\ --exec launch.cmd --output myapp.exe
|
||||
```
|
||||
|
||||
**Run your self-contained application**
|
||||
@ -299,7 +299,7 @@ dgiagio@X1:~/Devel/myapp$ chmod +x warp-packer
|
||||
**Create your self-contained application**
|
||||
|
||||
```sh
|
||||
dgiagio@X1:~/Devel/myapp$ ./warp-packer --arch linux-x64 --input_dir bin/Release/netcoreapp2.1/linux-x64/publish --exec myapp --output myapp
|
||||
dgiagio@X1:~/Devel/myapp$ ./warp-packer pack --arch linux-x64 --input-dir bin/Release/netcoreapp2.1/linux-x64/publish --exec myapp --output myapp
|
||||
dgiagio@X1:~/Devel/myapp$ chmod +x myapp
|
||||
```
|
||||
|
||||
@ -351,7 +351,7 @@ Diegos-iMac:myapp dgiagio$ chmod +x warp-packer
|
||||
**Create your self-contained application**
|
||||
|
||||
```sh
|
||||
Diegos-iMac:myapp dgiagio$ ./warp-packer --arch macos-x64 --input_dir bin/Release/netcoreapp2.1/osx-x64/publish --exec myapp --output myapp
|
||||
Diegos-iMac:myapp dgiagio$ ./warp-packer pack --arch macos-x64 --input-dir bin/Release/netcoreapp2.1/osx-x64/publish --exec myapp --output myapp
|
||||
Diegos-iMac:myapp dgiagio$ chmod +x myapp
|
||||
```
|
||||
|
||||
@ -402,7 +402,7 @@ PS C:\Users\Diego\Devel\myapp> [Net.ServicePointManager]::SecurityProtocol = "tl
|
||||
**Create your self-contained application**
|
||||
|
||||
```powershell
|
||||
PS C:\Users\Diego\Devel\myapp> .\warp-packer --arch windows-x64 --input_dir bin/Release/netcoreapp2.1/win10-x64/publish --exec myapp.exe --output myapp.exe
|
||||
PS C:\Users\Diego\Devel\myapp> .\warp-packer --arch windows-x64 --input-dir bin/Release/netcoreapp2.1/win10-x64/publish --exec myapp.exe --output myapp.exe
|
||||
```
|
||||
|
||||
**Run your self-contained application**
|
||||
@ -456,18 +456,18 @@ Hello, world.
|
||||
|
||||
**Download a JRE**
|
||||
|
||||
There are prebuilt JREs over on [AdoptOpenJDK](https://adoptopenjdk.net).
|
||||
There are prebuilt JREs over on [AdoptOpenJDK](https://adoptium.net).
|
||||
|
||||
Here we use JRE 8:
|
||||
|
||||
```
|
||||
wget -N https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz
|
||||
wget -N https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u412-b08/OpenJDK8U-jre_x64_linux_hotspot_8u412b08.tar.gz
|
||||
```
|
||||
|
||||
Unpack it:
|
||||
|
||||
```
|
||||
tar -xvf OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz
|
||||
tar -xvf OpenJDK8U-jre_x64_linux_hotspot_8u412b08.tar.gz
|
||||
```
|
||||
|
||||
**Create a bundle**
|
||||
@ -476,7 +476,7 @@ We need to create a folder containing: our compiled code, the JRE and a launch s
|
||||
|
||||
```
|
||||
mkdir bundle
|
||||
cp -r ./jdk8u202-b08-jre ./bundle/jre
|
||||
cp -r ./jdk8u412-b08-jre ./bundle/jre
|
||||
cp app.jar ./bundle/app.jar
|
||||
touch bundle/run.sh
|
||||
chmod +x ./bundle/run.sh
|
||||
@ -513,7 +513,7 @@ $ chmod +x ./warp-packer
|
||||
**Create your self-contained application**
|
||||
|
||||
```bash
|
||||
$ ./warp-packer --arch linux-x64 --input_dir bundle --exec run.sh --output app.bin
|
||||
$ ./warp-packer pack --arch linux-x64 --input-dir bundle --exec run.sh --output app.bin
|
||||
$ chmod +x app.bin
|
||||
```
|
||||
|
||||
@ -542,7 +542,7 @@ The performance characteristics of the generated self-contained application is r
|
||||
|
||||
### Packages cache location
|
||||
- Linux: `$HOME/.local/share/warp/packages`
|
||||
- macOS: `$HOME/Library/Application Support/warp/packges`
|
||||
- macOS: `$HOME/Library/Application Support/warp/packages`
|
||||
- Windows: `%LOCALAPPDATA%\warp\packages`
|
||||
|
||||
### Runners cache location
|
||||
|
Loading…
Reference in New Issue
Block a user