GithubHelp home page GithubHelp logo

ev3dev-lang-java / openjdk-ev3 Goto Github PK

View Code? Open in Web Editor NEW
13.0 4.0 3.0 4.85 MB

A custom Build of OpenJDK 9/10/11/12/13/14/15 for EV3, a Lego Mindstorms Brick using ARM Soft Float

Home Page: https://ci.adoptopenjdk.net/view/ev3dev/

License: MIT License

Shell 85.06% Dockerfile 3.70% Makefile 11.24%
java java9 openjdk ev3 ev3dev lejos lejos-ev3 jvm java10 java11

openjdk-ev3's Introduction

OpenJDK for ev3dev-lang-java

Custom build of OpenJDK providing Java support for ev3dev on the following devices:

  • LEGO Mindstorms EV3, featuring a ARM926EJ-S CPU

Builds for older boards should work on newer boards, the performance might just be a bit lower.

Build Status

OpenJDK version Platform Type VM ev3dev-stretch ev3dev-buster
OpenJDK 9 EV3 x86→ARM C1 JIT archived N/A
OpenJDK 10 EV3 x86→ARM C1 JIT archived N/A
OpenJDK 11 EV3 ARM→ARM C1 JIT -> jenkins -> jenkins
OpenJDK 12 EV3 ARM→ARM C1 JIT -> jenkins -> jenkins
OpenJDK 13 EV3 ARM→ARM C1 JIT -> jenkins -> jenkins
OpenJDK 14 EV3 ARM→ARM C1 JIT -> jenkins -> jenkins
OpenJDK 15 EV3 ARM→ARM C1 JIT -> jenkins -> jenkins
OpenJDK tip (dev) EV3 ARM→ARM C1 JIT -> jenkins -> jenkins

Overview & documentation

See Docs

Components

The build process produces these files:

Name File name Summary Where it runs Who is it for What is it useful for
JRI jri-ev3.zip Minimal runtime Brick Java developer Running Java programs on ev3dev.
JDK jdk-ev3.zip Full JDK Brick ev3dev power user Compiling Java programs directly on the brick.
JMODs jmods-ev3.zip Runtime modules Developer PC both Creating custom JRIs.

JRI stands for "Java Runtime Image". The term itself is not specific to this project, it is equivalent to Modular Run-Time Image. To see which modules are included in our case, take a look at the JRI_MODULES variable in scripts/config.sh.

Building locally

  1. Install Docker for your operating system.
  2. Follow this script:
# define parameters
TARGET_WORKSPACE="$(pwd)/build" # 10 GB of free space should be sufficient, probably less
TARGET_DEBIAN_VERSION="stretch" # stretch or buster
TARGET_OPENJDK_VERSION="11" # 9, 10, 12, 13, 14 - retired, may not be working
                            # 11, 15 - most likely working
                            # loom or tip - experimental, may be broken

# clone repository
git clone https://github.com/ev3dev-lang-java/openjdk-ev3.git
cd openjdk-ev3

# prepare working directory
mkdir -p "$TARGET_WORKSPACE"
chmod -R 777 "$TARGET_WORKSPACE" # docker may not share UID with the current user

# build base system container
docker build --build-arg DEBIAN_RELEASE="$TARGET_DEBIAN_VERSION" \
             --build-arg ARCH="armel" \
             --tag "ev3dev-lang-java:jdk-cross-$TARGET_DEBIAN_VERSION" \
             --file ./system/Dockerfile.cross \
             ./system

# on top of that, create a build scripts container
docker build --build-arg commit="$(git rev-parse HEAD)" \
             --build-arg extra="Manual build by $(whoami)" \
             --build-arg DEBIAN_RELEASE="$TARGET_DEBIAN_VERSION" \
             --build-arg BUILD_TYPE="cross" \
             --tag "ev3dev-lang-java:jdk-cross-build" \
             ./scripts

# now run the build
docker run --rm \
           --interactive \
           --tty \
           --volume "$TARGET_WORKSPACE:/build" \
           --env JDKVER="$TARGET_OPENJDK_VERSION" \
           --env JDKVM="client" \
           --env JDKPLATFORM="ev3" \
           --env JDKDEBUG="release" \
           --env AUTOBUILD="1" \
           ev3dev-lang-java:jdk-cross-build

# finally, make workspace accessible for all users (i.e. current one too) and list files in its root
chmod -R 777 "$TARGET_WORKSPACE"
# and list the output directory (now it should contain three *-ev3.tar.gz files)
ls "$TARGET_WORKSPACE"

openjdk-ev3's People

Contributors

jabrena avatar jakubvanek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.