Adopt Open JDK v2.0.0 Release Notes

Release Date: 2018-09-26 // about 3 years ago
  • ๐Ÿ— A major overhaul to split out Docker and Native builds, fix a host of small ๐Ÿ— issues and place build jobs into Groovy Pipeline scripts.

    ๐Ÿ— Core Build Changes

    ๐Ÿ”ง 1. configureBuild.sh added. The pre-build configuration logic now resides in this script. ๐Ÿ— 1. native-build.sh added. This script is invoked for building (Adopt) OpenJDK binaries natively. ๐Ÿ— 1. docker-build.sh added. This script is invoked for building (Adopt) OpenJDK ๐Ÿณ binaries in a Docker container.

    1. sbin/prepareWorkspace.sh added
    2. sbin/colour-codes.sh removed to simplify code ๐Ÿ‘‰ 1. makejdk.sh removed - please use makejdk-any-platform.sh or (rarely) ๐Ÿ— sbin/build.sh instead.
    3. sbin/common-functions.sh removed and its logic split
    4. sbin/common/common.sh added
    5. sbin/common/config_init.sh added
    6. sbin/common/constants.sh added ๐Ÿ— 1. sbin/build.template added for saving off the configure configuration. ๐Ÿšฆ 1. sbin/signalhandler.sh moved to signalhandler.sh ๐Ÿ— 1. sbin/build.sh enhanced, now requires a 'saved' build configuration to run. ๐Ÿ‘‰ This 'saved' build configuration is created by makejdk-any-platform.sh but can be generated manually as well.
    7. sign.sh added for code signing functionality.

    ๐Ÿ‘‰ makejdk-any-platform.sh, build.sh, makejdk.sh usage changes

    ๐Ÿ‘ 1. More versions added, jdk8u | jdk9 | jdk10 | jfx | amber are now all supported ๐Ÿ— 1. -B is now used for specifying the build number (long form --build-number). ๐Ÿ— 1. -bv is removed, (long form --variant changes to --build-variant). ๐Ÿ— 1. -c (long form --clean-docker-build) added to build from a clean docker container. ๐Ÿ”ง 1. -ca changes to -C, (long form --configure-args stays the same).

    1. --clean-git-repos, added to clean out any 'bad' local git repo you already have. ๐Ÿ— 1. -D (long form --docker) added for building in a docker container. ๐Ÿšš 1. -dsgc is removed, (long form --disable-shallow-git-clone stays the same).
    2. -ftd changes to -f, (long form --freetype-dir stays the same). ๐Ÿ— 1. --freetype-build-param, specify any special freetype build parameters (required for some OS's). ๐Ÿ— 1. --freetype-version, specify the version of freetype you are building.
    3. -h (long form --help) added. ๐Ÿณ 1. -i (long form --ignore-container) added to ignore existing docker container. ๐Ÿšš 1. -j, --jtreg and -js, --jtreg-subsets are removed as tests should be run via the openjdk-tests repo / project.
    4. -J (long form --jdk-boot-dir added to set JDK boot dir. ๐Ÿšš 1. -nc (long form --no-colour) is removed. ๐Ÿ— 1. -p (long form --processors) added to set number of processors in docker build.
    5. -sf changes to -F, (long form --skip-freetype stays the same). ๐Ÿณ 1. --sudo added to run the docker container as root. ๐Ÿ— 1. --tmp-space-build (set a temporary build space if regular workspace is unavailable).
    6. -T (long form --target-file-name added to specify the final name of the binary. โšก๏ธ 1. -u (long form --update-version) added to specify the update version. ๐Ÿ— 1. --use-jep319-certs added to use certs defined in JEP319 for OpenJDK 8/9 builds.
    7. -V (long form --jvm-variant specify the JVM variant (server or client).

    ๐Ÿ‘‰ Please see makejdk-any-platform.1 man page for full details.

    โœ… Test Changes

    1. sbin/jtreg.sh removed (superseded by the openjdk-tests project).
    2. sbin/jtreg_prep.sh removed (superseded by the openjdk-tests project).

    ๐Ÿณ Docker Support

    ๐Ÿ— 1. -D (long form --docker) has been added for building in a docker container. ๐Ÿ— 1. -c (long form --clean-docker-build) has been added to build from a clean ๐Ÿณ docker container. ๐Ÿณ 1. -i (long form --ignore-container) has been added to ignore existing docker container. ๐Ÿ— 1. -p (long form --processors) added to set number of processors in docker build. ๐Ÿณ 1. --sudo added to run the docker container as root. ๐Ÿ— 1. docker-build.sh added. This script is invoked for building (Adopt) OpenJDK ๐Ÿณ binaries in a Docker container. ๐Ÿณ 1. docker/jdk/x86_64/ubuntu/Dockerfile updated for various bug fixes. ๐Ÿณ 1. docker/jdk/x86_64/ubuntu/dockerConfiguration.sh files added. These ๐Ÿ— contain Docker specific environment variables that the build scripts need (as opposed to falsely picking up the underlying native env).

    ๐Ÿ— Build Farm Support

    ๐Ÿ— 1. New build-farm/make-adopt-build-farm.sh added for the new AdoptOpenJDK ๐Ÿ— Build Farm jenkins pipeline to build Adopt OpenJDK binaries. Sets the default ๐Ÿ‘ท environment variables that are currently set in individual jobs. This allows us to now track and version these variables. ๐Ÿ— 1. New build-farm/set-platform-specific-configurations.sh added for the new ๐Ÿ— AdoptOpenJDK Build Farm jenkins pipeline to build Adopt OpenJDK binaries. Sets 0๏ธโƒฃ the default environment variables that are currently set in individual jobs.
    This allows us to now track and version these variables. ๐Ÿ”ง 1. New build-farm/platform-specific-configurations/.sh added for ๐Ÿ— the new AdoptOpenJDK Build Farm jenkins pipeline to build Adopt OpenJDK binaries.
    0๏ธโƒฃ Sets the default environment variables for specific platforms that are currently ๐Ÿ‘ท set in individual jobs. This allows us to now track and version these variables. ๐Ÿš€ 1. New _build-farm/sign-releases.sh added for the new AdoptOpenJDK Build Farm ๐Ÿ jenkins pipeline to code sign Adopt OpenJDK binaries (Mac and Windows for now). ๐Ÿ— 1. _pipelines/build/common/build_base_file.groovy
    added. This co-ordinates the various pipeline builds. ๐Ÿ— 1.pipelines/build/common/create_job_from_template.groovy added. This dynamically ๐Ÿ‘ท creates jenkins jobs for a particular pipeline run (e.g. All jdk8u jobs). ๐Ÿ— 1. pipelines/build/common/openjdk_build_pipeline.groovy added. This forms the base ๐Ÿ— pipeline code for each build. ๐Ÿ— 1. pipelines/build/openjdk<version>_<variant>_<nightly|release>_pipeline.groovy ๐Ÿ‘ท files added. These will eventually replace the existing individual jobs with a Pipeline for each version and variant. ๐Ÿ— 1. pipelines/build/openjdk<version>_pipeline.groovy ๐Ÿ”ง files added. These define the configurations for the ๐Ÿ— pipelines/build/common/create_job_from_template.groovy to create jobs for a pipeline run.

    ๐Ÿ“š Documentation and Misc

    1. README.md updated to reflect new scripts. ๐Ÿ“„ 1. docs/build.md added to describe how the build farm utilises the scripts. ๐Ÿ“„ 1. docs/generateBuildMatrix.sh added to build a table of build statuses. ๐Ÿ“„ 1. docs/generateTestMatrix.sh added to build a table of test statuses. ๐Ÿ“„ 1. docs/images/AdoptOpenJDK_Build_Script_Relationships.png added to show script relationship. ๐Ÿ“„ 1. docs/images/sequence.svg added to show pipeline workflow.
    2. .gitignore changed to reflect new workspace base directory, please check your local .gitignore for the diff. ๐Ÿ‘‰ 1. makejdk-any-platform.1 man page updated to reflect new script usage.

Previous changes from v1.0.0