mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
updating build instructions, get them all in one place
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
Processing 4 makes important updates to the code to prepare the platform for its future. Most significantly, this includes the move to JDK 11 and support for new Java language features. The changes should be transparent to most users, but because of the massive shift behind the scenes, this is 4.0.
|
||||
|
||||
We've also moved to a new repository for this release so that we could cull a lot of the accumulated mess of that last 20 years, which makes `git clone` (and most other `git` operations) a lot faster.
|
||||
We've also moved to a new repository for this release so that we could cull a lot of the accumulated mess of the last 20 years, which makes `git clone` (and most other `git` operations) a lot faster.
|
||||
|
||||
|
||||
## Roadmap
|
||||
@@ -56,6 +56,11 @@ The full list of changes can be seen in [the release notes for each version](htt
|
||||
* `EditorState(List<Editor> editors)` changed to `EditorState.nextEditor(List<Editor> editors)`, reflecting its nature as closer to a factory method (that makes use of the Editor list) than a constructor that will also be storing information about the list of Editor objects in the created object.
|
||||
|
||||
|
||||
### Alpha 3
|
||||
|
||||
* `export.embed_java.for` changed to `export.include_java` which also embeds a string for the platform for better localization support.
|
||||
|
||||
|
||||
### Alpha 2
|
||||
|
||||
* ~~The minimum system version for macOS (for the PDE and exported applications) is now set to 10.13.6 (the last update of High Sierra). Apple will likely be dropping support for High Sierra in late 2020, so we may make the minimum 10.14.x by the time 4.x ships.~~
|
||||
@@ -81,53 +86,6 @@ The full list of changes can be seen in [the release notes for each version](htt
|
||||
* Processing 4 is 64-bit only. This is the overwhelming majority of users, and we don't have the necessary help to maintain and support 32-bit systems.
|
||||
|
||||
|
||||
## Translation Updates
|
||||
|
||||
* `export.embed_java.for` changed to `export.include_java` which also embeds a string for the platform for better localization support.
|
||||
|
||||
|
||||
## Building the Code
|
||||
|
||||
We'll eventually create a new wiki page with the build instructions, but for the time being, the instructions are:
|
||||
|
||||
1. Download and install JDK 11 from <https://adoptopenjdk.net/>
|
||||
2. Make sure `ant` is installed for your platform.
|
||||
3. Open a Terminal window/Command Prompt/whatever and type:
|
||||
|
||||
cd /path/to/processing4/build
|
||||
ant run
|
||||
|
||||
### Java version complaints
|
||||
|
||||
You might have multiple versions of Java installed. Type `java -version` and if it says something other than 11, you'll need to set the `JAVA_HOME` environment variable.
|
||||
|
||||
On macOS, you can use:
|
||||
|
||||
export JAVA_HOME="`/usr/libexec/java_home -v 11`"
|
||||
|
||||
If you need to go back to Java 8 (i.e. to build Processing 3), you can use:
|
||||
|
||||
export JAVA_HOME="`/usr/libexec/java_home -v 1.8`"
|
||||
|
||||
On Windows and Linux, you can set `JAVA_HOME` to point at the installation the way you would any other environment variable.
|
||||
|
||||
On Linux (Ubuntu 20.04 in particular), the headless version of OpenJDK may be installed by default. If so, you may get errors when trying to run tests in core:
|
||||
|
||||
java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
|
||||
|
||||
If so, use `sudo apt install openjdk-11-jdk` to install a full version. You could also make use of the JDK that's downloaded by Processing itself to avoid duplication, but that's a little trickier to get everything bootstrapped and (sym)linked properly.
|
||||
|
||||
And again, we'll have more complete instructions later once the dust settles.
|
||||
|
||||
### Eclipse
|
||||
|
||||
If you're using Eclipse, it'll complain about the lack of `jogl-all-src.jar`. Steps to create your own:
|
||||
|
||||
git clone --recurse-submodules git://jogamp.org/srv/scm/jogl.git jogl
|
||||
cd jogl
|
||||
git checkout 0779f229b0e9538c640b18b9a4e095af1f5a35b3
|
||||
zip -r ../jogl-all-src.jar src
|
||||
|
||||
Then copy that `jogl-all-src.jar` file to sit next to the `jogl-all.jar` folder inside `/path/to/processing/core/library`.
|
||||
|
||||
Using Eclipse isn't supported, and I've switched to IntelliJ. However, IntelliJ is baffling enough that I don't have good instructions yet on how to develop inside there. If you and IntelliJ have a better relationship than I do, [please help!](https://github.com/processing/processing4/issues/275)
|
||||
[Instructions on how to build the code](https://github.com/processing/processing4/blob/master/build/README.md) are found in a README inside the `build` folder.
|
||||
|
||||
+119
-101
@@ -1,86 +1,138 @@
|
||||
Processing Build Instructions
|
||||
==============================
|
||||
The following instructions describe how to build and release Processing across Windows, OS X, and Linux.
|
||||
How to Build Processing
|
||||
=======================
|
||||
|
||||
<br>
|
||||
<br>
|
||||
The short version:
|
||||
|
||||
1. Download and install JDK 11 from <https://adoptium.net/>
|
||||
2. Make sure `ant` is [installed](https://ant.apache.org/) for your platform.
|
||||
3. Open a Terminal window/Command Prompt/whatever and type:
|
||||
|
||||
cd /path/to/processing4/build
|
||||
ant run
|
||||
|
||||
### Java version complaints
|
||||
|
||||
You might have multiple versions of Java installed. Type `java -version` and if it says something other than 11, you'll need to set the `JAVA_HOME` environment variable.
|
||||
|
||||
On macOS, you can use:
|
||||
|
||||
export JAVA_HOME="`/usr/libexec/java_home -v 11`"
|
||||
|
||||
If you need to go back to Java 8 (i.e. to build Processing 3), you can use:
|
||||
|
||||
export JAVA_HOME="`/usr/libexec/java_home -v 1.8`"
|
||||
|
||||
On Windows and Linux, you can set `JAVA_HOME` to point at the installation the way you would any other environment variable.
|
||||
|
||||
On Linux (Ubuntu 20.04 in particular), the headless version of OpenJDK may be installed by default. If so, you may get errors when trying to run tests in core:
|
||||
|
||||
java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
|
||||
|
||||
If so, use `sudo apt install openjdk-11-jdk` to install a full version. You could also make use of the JDK that's downloaded by Processing itself to avoid duplication, but that's a little trickier to get everything bootstrapped and (sym)linked properly.
|
||||
|
||||
And again, we'll have more complete instructions later once the dust settles.
|
||||
|
||||
### Eclipse
|
||||
|
||||
If you're using Eclipse, it'll complain about the lack of `jogl-all-src.jar`. Steps to create your own:
|
||||
|
||||
git clone --recurse-submodules git://jogamp.org/srv/scm/jogl.git jogl
|
||||
cd jogl
|
||||
git checkout 0779f229b0e9538c640b18b9a4e095af1f5a35b3
|
||||
zip -r ../jogl-all-src.jar src
|
||||
|
||||
Then copy that `jogl-all-src.jar` file to sit next to the `jogl-all.jar` folder inside `/path/to/processing/core/library`.
|
||||
|
||||
Using Eclipse isn't supported, and I've switched to IntelliJ. However, IntelliJ is baffling enough that I don't have good instructions yet on how to develop inside there. If you and IntelliJ have a better relationship than I do, [please help!](https://github.com/processing/processing4/issues/275)
|
||||
|
||||
|
||||
Local Environment Setup
|
||||
------------------------------
|
||||
# The Long Version
|
||||
|
||||
A more detailed explanation of how to build and release Processing across Windows, macOS, and Linux, and a bit more about how the build system works.
|
||||
|
||||
|
||||
## Local Environment Setup
|
||||
|
||||
Processing's ant-based build chain can create executables natively runnable for Linux, Mac, and Windows.
|
||||
|
||||
<br>
|
||||
|
||||
**Pre-Requisites**
|
||||
### Pre-Requisites
|
||||
Although Processing will download and use its own copy of OpenJDK and OpenJFX, the build chain itself requires Java 11+ and Ant in addition to getting a copy of the Processing source code.
|
||||
|
||||
<br>
|
||||
|
||||
**Getting Java and Ant**
|
||||
### Getting Java and Ant
|
||||
You can choose to install these yourself or use the following guides below:
|
||||
|
||||
- [Instructions for installing Java](https://adoptopenjdk.net/installation.html?variant=openjdk11&jvmVariant=hotspot#x64_mac-jdk)
|
||||
- [Instructions for installing Ant](http://ant.apache.org/manual/install.html)
|
||||
- Instructions for modifying your environment variables on [windows](https://www.architectryan.com/2018/03/17/add-to-the-path-on-windows-10/), [ mac](https://medium.com/@himanshuagarwal1395/setting-up-environment-variables-in-macos-sierra-f5978369b255) and [linux](https://www.cyberciti.biz/faq/set-environment-variable-linux/).
|
||||
|
||||
<br>
|
||||
|
||||
**Getting Processing**
|
||||
One will also need to clone the repository for Processing itself. Some users who are simply building Processing but not contributing to it may prefer a "shallow" clone which does not copy the full history of the repository:
|
||||
|
||||
```
|
||||
git clone --depth 1 https://github.com/processing/processing4.git
|
||||
```
|
||||
|
||||
Users that are developing for the project may require a full clone:
|
||||
* [Instructions for installing Java](https://adoptopenjdk.net/installation.html?variant=openjdk11&jvmVariant=hotspot#x64_mac-jdk)
|
||||
* [Instructions for installing Ant](http://ant.apache.org/manual/install.html)
|
||||
* Instructions for modifying your environment variables on [Windows](https://www.architectryan.com/2018/03/17/add-to-the-path-on-windows-10/), [macOS](https://medium.com/@himanshuagarwal1395/setting-up-environment-variables-in-macos-sierra-f5978369b255) and [Linux](https://www.cyberciti.biz/faq/set-environment-variable-linux/).
|
||||
|
||||
### Download the Processing source code
|
||||
One will also need to clone the repository for Processing itself.
|
||||
```
|
||||
git clone https://github.com/processing/processing4.git
|
||||
```
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
Building
|
||||
------------------------------
|
||||
## Building
|
||||
|
||||
One can either build for your own operating system (the "host" operating system) or, starting with Processing 4, one can "cross-build" from a host nix system (linux or mac) to any other "target os" build. Before continuing, please be aware that you are agreeing to the [license terms](https://github.com/sampottinger/processing/blob/master/LICENSE.md) and that the developers do not make any guarantee or warranty (implicit or express) for any purpose.
|
||||
|
||||
<br>
|
||||
|
||||
**Overview of steps**
|
||||
### Overview of steps
|
||||
Before actually building, it is worth outlining the steps of the build process briefly:
|
||||
|
||||
- The modules outside of `build` are built first. During this process, a number of automated unit tests will be executed with results displayed on the command line.
|
||||
- The `build` module itself will built and results will go into `build/{os}/work` where `{os}` is the operating system for which you are building like "windows". Note that both ARM and x64 builds go into the same OS directory.
|
||||
- During the build of `build`, the [OpenJDK](https://openjdk.java.net/) and [OpenJFX](https://openjfx.io/) will be downloaded with their binaries copied into the distribution. If building for the first time, these automated downloads from [AdoptOpenJDK](https://adoptopenjdk.net/) and [Gluon](https://gluonhq.com/) may take some time.
|
||||
|
||||
Note that one may need to "clean" via `ant linux-clean` or equivalent.
|
||||
Note that one may need to “clean” via `ant clean`, which removes previous files (i.e. from the `work` folder).
|
||||
|
||||
<br>
|
||||
|
||||
**Building for the "host" operating system**
|
||||
### Building for the "host" operating system
|
||||
If building for your own system, navigate to where where you pulled the Processing source and execute `ant build` on the command line.
|
||||
|
||||
```
|
||||
$ cd [path to processing repository]
|
||||
$ cd build
|
||||
$ ant build
|
||||
cd /path/to/processing4
|
||||
cd build
|
||||
ant build
|
||||
```
|
||||
|
||||
The results will go into `build/{os}/work` where `{os}` matches the "host" operating system.
|
||||
|
||||
<br>
|
||||
|
||||
**Executing a "cross-build"**
|
||||
If building for another operating system (if you are on Linux and want to build for Windows), there are a number of "cross-build" targets available. Note that one can only execute "cross-builds" on a *nix system (Linux or Mac) but "cross-builds" are available for all targeted operating systems.
|
||||
## Running
|
||||
|
||||
The build can be run directly or through Ant.
|
||||
|
||||
### Executing via Ant
|
||||
If built for the host operating system, one can use the `ant run` target as shown below:
|
||||
|
||||
```
|
||||
cd /path/to/processing4
|
||||
cd build
|
||||
ant run
|
||||
```
|
||||
|
||||
If not yet built, this will cause Processing to be built prior to running.
|
||||
|
||||
#### Using Executable Directly
|
||||
Except when doing a cross-build (below), the build process creates executables that can be run directly on the target operating system:
|
||||
|
||||
- **macOS**: the `.app` file can be executed via a double click at `build/macosx/work/Processing.app` or `open build/macosx/work/Processing.app`.
|
||||
- **Linux**: The resulting executable ends up at `build/linux/work/processing`.
|
||||
- **Windows**: The resulting executable ends up at `build/windows/work/processing.exe`.
|
||||
|
||||
|
||||
## Advanced: cross platform builds, tests, and distribution
|
||||
|
||||
### Executing a "cross-build"
|
||||
If building for another operating system (if you are on Linux and want to build for Windows), there are a number of "cross-build" targets available. Note that one can only execute "cross-builds" on a \*nix system (Linux or Mac) but "cross-builds" are available for all targeted operating systems.
|
||||
|
||||
For example, here is how to execute a cross-build "targeting" Windows (the results will go into `build/windows/work`):
|
||||
|
||||
```
|
||||
$ cd [path to processing repository]
|
||||
$ cd build
|
||||
$ ant cross-build-windows
|
||||
cd /path/to/processing4
|
||||
cd build
|
||||
ant cross-build-windows
|
||||
```
|
||||
|
||||
The following cross-build targets are available:
|
||||
@@ -90,60 +142,25 @@ The following cross-build targets are available:
|
||||
- cross-build-linux-aarch64
|
||||
- cross-build-windows
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
Automated Tests
|
||||
------------------------------
|
||||
### Automated Tests
|
||||
|
||||
Unit tests are available by running the test target:
|
||||
|
||||
```
|
||||
$ cd [path to processing repository]
|
||||
$ cd build
|
||||
$ ant test
|
||||
cd /path/to/processing4
|
||||
cd build
|
||||
ant test
|
||||
```
|
||||
|
||||
These tests are not executed by default when running the `build` target but are recommended for developers contributing to the project.
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
Running
|
||||
------------------------------
|
||||
The build can be run directly or through Ant.
|
||||
### Distributing
|
||||
|
||||
<br>
|
||||
|
||||
**Executing via Ant**
|
||||
If built for the host operating system, one can use the `ant run` target as shown below:
|
||||
|
||||
```
|
||||
$ cd [path to processing repository]
|
||||
$ cd build
|
||||
$ ant run
|
||||
```
|
||||
|
||||
If not yet built, this will cause Processing to be built prior to running.
|
||||
|
||||
<br>
|
||||
|
||||
**Using Executable Directly**
|
||||
Regardless of if cross-building, there are executables generated that can be run directly on the target operating system:
|
||||
|
||||
- **Mac**: the `.app` file can be executed via a double click at `build/macosx/work/Processing.app` or `$ open build/macosx/work/Processing.app`.
|
||||
- **Linux**: The resulting executable ends up at `build/linux/work/processing`.
|
||||
- **Windows**: The resulting executable ends up at `build/windows/work/processing.exe`.
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
Distributing
|
||||
------------------------------
|
||||
A number of targets are provided for distribution of executables. If the executable is not yet built, it will be created prior to running the dist target.
|
||||
|
||||
<br>
|
||||
|
||||
**Available targets:**
|
||||
**Available targets:**
|
||||
|
||||
- macosx-dist
|
||||
- windows-dist
|
||||
@@ -151,38 +168,39 @@ A number of targets are provided for distribution of executables. If the executa
|
||||
|
||||
One can also use `ant dist` to distribute for the host OS.
|
||||
|
||||
<br>
|
||||
|
||||
**Examples**
|
||||
### Examples
|
||||
|
||||
For the host system, one can distribute like so:
|
||||
|
||||
```
|
||||
$ cd [path to processing repository]
|
||||
$ cd build
|
||||
$ ant dist
|
||||
cd /path/to/processing4
|
||||
cd build
|
||||
ant dist
|
||||
```
|
||||
|
||||
From a nix system, one can cross-build and distribute for linux like so:
|
||||
From a \*nix system, one can cross-build and distribute for linux like so:
|
||||
|
||||
```
|
||||
$ cd [path to processing repository]
|
||||
$ cd build
|
||||
$ ant linux-dist
|
||||
cd /path/to/processing4
|
||||
cd build
|
||||
ant linux-dist
|
||||
```
|
||||
|
||||
Regardless, the distributable ends up in `build/{os}/work` where `{os}` is the target OS.
|
||||
|
||||
<br>
|
||||
|
||||
**Code Signing**
|
||||
At present, only Mac builds require code signing to avoid an ["App Gateway"](https://support.apple.com/en-us/HT202491) issue. This is not executed by default by `ant dist` or `ant macosx-dist`. One can sign the resulting `.app` file though via:
|
||||
### Code Signing
|
||||
|
||||
Mac builds require code signing, due to [Apple requirements](https://support.apple.com/en-us/HT202491) issue. This is not executed by default by `ant dist` or `ant macosx-dist`. One can sign the resulting `.app` file though via:
|
||||
|
||||
```
|
||||
$ /usr/bin/codesign --force --sign "Developer ID Application: Certificate Common Name" Processing.app/Contents/PlugIns/jdk-...
|
||||
$ /usr/bin/codesign --force --sign "Developer ID Application: Certificate Common Name" Processing.app
|
||||
/usr/bin/codesign --force --sign "Developer ID Application: Certificate Common Name" Processing.app/Contents/PlugIns/jdk-...
|
||||
/usr/bin/codesign --force --sign "Developer ID Application: Certificate Common Name" Processing.app
|
||||
```
|
||||
|
||||
Note that one will need to complete the `jdk-...` string to be something like `jdk-11.0.1+13` depending on the build. Anyway, this will require an [Apple Developer ID](https://developer.apple.com/developer-id/).
|
||||
|
||||
This is not strictly required especially if you are using your own app build.
|
||||
|
||||
Eventually we'll want to sign [Windows releases](https://github.com/processing/processing4/issues/25), and [exported applications](https://github.com/processing/processing4/issues/173). If you have experience with this, please help!
|
||||
|
||||
Reference in New Issue
Block a user