diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..36f6a23 --- /dev/null +++ b/BUILD.md @@ -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 +/osxcross/tools/gen_sdk_package_pbzx.sh /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 `/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="/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 +/warp/target//release/warp-packer +``` +e.g. +```bash +warp/target/aarch64-unknown-linux-gnu/release/warp-packer +``` \ No newline at end of file diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..66ab8e5 --- /dev/null +++ b/INSTALL.md @@ -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. \ No newline at end of file diff --git a/README.md b/README.md index 2c24d33..aa61c28 100644 --- a/README.md +++ b/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