diff --git a/.github/actions/config/action.yml b/.github/actions/config/action.yml index 5f648ffc022..931988accc3 100644 --- a/.github/actions/config/action.yml +++ b/.github/actions/config/action.yml @@ -41,6 +41,6 @@ runs: id: read-config run: | # Extract value from configuration file - value="$(grep -h ${{ inputs.var }}= make/conf/github-actions.conf | cut -d '=' -f 2-)" + value="$(grep -h '^${{ inputs.var }}'= make/conf/github-actions.conf | cut -d '=' -f 2-)" echo "value=$value" >> $GITHUB_OUTPUT shell: bash diff --git a/.github/actions/upload-bundles/action.yml b/.github/actions/upload-bundles/action.yml index b35ee3a42e9..4e974ae58ba 100644 --- a/.github/actions/upload-bundles/action.yml +++ b/.github/actions/upload-bundles/action.yml @@ -1,5 +1,5 @@ # -# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -45,6 +45,7 @@ runs: jdk_bundle_tar_gz="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)" symbols_bundle="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}-symbols.tar.gz 2> /dev/null || true)" tests_bundle="$(ls build/*/bundles/jdk-*_bin-tests${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)" + static_libs_bundle="$(ls build/*/bundles/jdk-*_bin-static-libs${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)" mkdir bundles @@ -60,8 +61,11 @@ runs: if [[ "$tests_bundle" != "" ]]; then mv "$tests_bundle" "bundles/tests-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz" fi + if [[ "$static_libs_bundle" != "" ]]; then + mv "$static_libs_bundle" "bundles/static-libs-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz" + fi - if [[ "$jdk_bundle_zip$jdk_bundle_tar_gz$symbols_bundle$tests_bundle" != "" ]]; then + if [[ "$jdk_bundle_zip$jdk_bundle_tar_gz$symbols_bundle$tests_bundle$static_libs_bundle" != "" ]]; then echo 'bundles-found=true' >> $GITHUB_OUTPUT else echo 'bundles-found=false' >> $GITHUB_OUTPUT diff --git a/.github/scripts/gen-build-failure-report.sh b/.github/scripts/gen-build-failure-report.sh index fd3215fc7fe..2dda69a3f33 100644 --- a/.github/scripts/gen-build-failure-report.sh +++ b/.github/scripts/gen-build-failure-report.sh @@ -24,12 +24,19 @@ # questions. # +# Import common utils +. .github/scripts/report-utils.sh + GITHUB_STEP_SUMMARY="$1" BUILD_DIR="$(ls -d build/*)" # Send signal to the do-build action that we failed touch "$BUILD_DIR/build-failure" +# Collect hs_errs for build-time crashes, e.g. javac, jmod, jlink, CDS. +# These usually land in make/ +hs_err_files=$(ls make/hs_err*.log 2> /dev/null || true) + ( echo '### :boom: Build failure summary' echo '' @@ -46,6 +53,20 @@ touch "$BUILD_DIR/build-failure" echo '' echo '' + for hs_err in $hs_err_files; do + echo "
View HotSpot error log: "$hs_err"" + echo '' + echo '```' + echo "$hs_err:" + echo '' + cat "$hs_err" + echo '```' + echo '
' + echo '' + done + echo '' echo ':arrow_right: To see the entire test log, click the job in the list to the left. To download logs, see the `failure-logs` [artifact above](#artifacts).' ) >> $GITHUB_STEP_SUMMARY + +truncate_summary diff --git a/.github/scripts/gen-test-results.sh b/.github/scripts/gen-test-results.sh index 9e85eef4dc0..bdf3eb3b9cb 100644 --- a/.github/scripts/gen-test-results.sh +++ b/.github/scripts/gen-test-results.sh @@ -24,6 +24,9 @@ # questions. # +# Import common utils +. .github/scripts/report-utils.sh + GITHUB_STEP_SUMMARY="$1" test_suite_name=$(cat build/run-test-prebuilt/test-support/test-last-ids.txt) @@ -89,18 +92,6 @@ for test in $failures $errors; do fi done >> $GITHUB_STEP_SUMMARY -# With many failures, the summary can easily exceed 1024 kB, the limit set by Github -# Trim it down if so. -summary_size=$(wc -c < $GITHUB_STEP_SUMMARY) -if [[ $summary_size -gt 1000000 ]]; then - # Trim to below 1024 kB, and cut off after the last detail group - head -c 1000000 $GITHUB_STEP_SUMMARY | tac | sed -n -e '/<\/details>/,$ p' | tac > $GITHUB_STEP_SUMMARY.tmp - mv $GITHUB_STEP_SUMMARY.tmp $GITHUB_STEP_SUMMARY - ( - echo '' - echo ':x: **WARNING: Summary is too large and has been truncated.**' - echo '' - ) >> $GITHUB_STEP_SUMMARY -fi - echo ':arrow_right: To see the entire test log, click the job in the list to the left.' >> $GITHUB_STEP_SUMMARY + +truncate_summary diff --git a/.github/scripts/report-utils.sh b/.github/scripts/report-utils.sh new file mode 100644 index 00000000000..da5b6c04b3c --- /dev/null +++ b/.github/scripts/report-utils.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +function truncate_summary() { + # With large hs_errs, the summary can easily exceed 1024 kB, the limit set by Github + # Trim it down if so. + summary_size=$(wc -c < $GITHUB_STEP_SUMMARY) + if [[ $summary_size -gt 1000000 ]]; then + # Trim to below 1024 kB, and cut off after the last detail group + head -c 1000000 $GITHUB_STEP_SUMMARY | tac | sed -n -e '/<\/details>/,$ p' | tac > $GITHUB_STEP_SUMMARY.tmp + mv $GITHUB_STEP_SUMMARY.tmp $GITHUB_STEP_SUMMARY + ( + echo '' + echo ':x: **WARNING: Summary is too large and has been truncated.**' + echo '' + ) >> $GITHUB_STEP_SUMMARY + fi +} diff --git a/.github/workflows/build-alpine-linux.yml b/.github/workflows/build-alpine-linux.yml new file mode 100644 index 00000000000..ac5870ca675 --- /dev/null +++ b/.github/workflows/build-alpine-linux.yml @@ -0,0 +1,112 @@ +# +# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +name: 'Build (alpine-linux)' + +on: + workflow_call: + inputs: + platform: + required: true + type: string + extra-conf-options: + required: false + type: string + make-target: + required: false + type: string + default: 'product-bundles test-bundles' + debug-levels: + required: false + type: string + default: '[ "debug", "release" ]' + apk-extra-packages: + required: false + type: string + configure-arguments: + required: false + type: string + make-arguments: + required: false + type: string + +jobs: + build-linux: + name: build + runs-on: ubuntu-22.04 + container: + image: alpine:3.20 + + strategy: + fail-fast: false + matrix: + debug-level: ${{ fromJSON(inputs.debug-levels) }} + include: + - debug-level: debug + flags: --with-debug-level=fastdebug + suffix: -debug+ + + steps: + - name: 'Checkout the JDK source' + uses: actions/checkout@v4 + + - name: 'Install toolchain and dependencies' + run: | + apk update + apk add alpine-sdk alsa-lib-dev autoconf bash cups-dev cups-libs fontconfig-dev freetype-dev grep libx11-dev libxext-dev libxrandr-dev libxrender-dev libxt-dev libxtst-dev linux-headers wget zip ${{ inputs.apk-extra-packages }} + + - name: 'Get the BootJDK' + id: bootjdk + uses: ./.github/actions/get-bootjdk + with: + platform: alpine-linux-x64 + + - name: 'Configure' + run: > + bash configure + --with-conf-name=${{ inputs.platform }} + ${{ matrix.flags }} + --with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA} + --with-boot-jdk=${{ steps.bootjdk.outputs.path }} + --with-zlib=system + --with-jmod-compress=zip-1 + ${{ inputs.extra-conf-options }} ${{ inputs.configure-arguments }} || ( + echo "Dumping config.log:" && + cat config.log && + exit 1) + + - name: 'Build' + id: build + uses: ./.github/actions/do-build + with: + make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}' + platform: ${{ inputs.platform }} + debug-suffix: '${{ matrix.suffix }}' + + - name: 'Upload bundles' + uses: ./.github/actions/upload-bundles + with: + platform: ${{ inputs.platform }} + debug-suffix: '${{ matrix.suffix }}' diff --git a/.github/workflows/build-cross-compile.yml b/.github/workflows/build-cross-compile.yml index fa5a8a61a0a..8e97ff4439f 100644 --- a/.github/workflows/build-cross-compile.yml +++ b/.github/workflows/build-cross-compile.yml @@ -131,6 +131,7 @@ jobs: id: create-sysroot run: > sudo debootstrap + --no-merged-usr --arch=${{ matrix.debian-arch }} --verbose --include=fakeroot,symlinks,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype-dev,libpng-dev @@ -151,6 +152,9 @@ jobs: rm -rf sysroot/usr/{sbin,bin,share} rm -rf sysroot/usr/lib/{apt,gcc,udev,systemd} rm -rf sysroot/usr/libexec/gcc + # /{bin,sbin,lib}/ are not symbolic links to /usr/{bin,sbin,lib}/ when debootstrap with --no-merged-usr + rm -rf sysroot/{sbin,bin} + rm -rf sysroot/lib/{udev,systemd} if: steps.create-sysroot.outcome == 'success' && steps.get-cached-sysroot.outputs.cache-hit != 'true' - name: 'Remove broken sysroot' diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index f3ea4e4fb6a..b1d4278f8b4 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -1,5 +1,5 @@ # -# Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -133,8 +133,12 @@ jobs: - name: 'Build' id: build uses: ./.github/actions/do-build + env: + # Only build static-libs-bundles for release builds. + # For debug builds, building static-libs often exceeds disk space. + STATIC_LIBS: ${{ matrix.debug-level == 'release' && 'static-libs-bundles' }} with: - make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}' + make-target: '${{ inputs.make-target }} ${STATIC_LIBS} ${{ inputs.make-arguments }}' platform: ${{ inputs.platform }} debug-suffix: '${{ matrix.suffix }}' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 067548b9768..d5958853701 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -36,7 +36,7 @@ on: platforms: description: 'Platform(s) to execute on (comma separated, e.g. "linux-x64, macos, aarch64")' required: true - default: 'linux-x64, linux-x86, linux-x64-variants, linux-cross-compile, macos-x64, macos-aarch64, windows-x64, windows-aarch64, docs' + default: 'linux-x64, linux-x86-hs, linux-x64-variants, linux-cross-compile, alpine-linux-x64, macos-x64, macos-aarch64, windows-x64, windows-aarch64, docs' configure-arguments: description: 'Additional configure arguments' required: false @@ -57,11 +57,15 @@ jobs: select: name: 'Select platforms' runs-on: ubuntu-22.04 + env: + # List of platforms to exclude by default + EXCLUDED_PLATFORMS: 'alpine-linux-x64' outputs: linux-x64: ${{ steps.include.outputs.linux-x64 }} - linux-x86: ${{ steps.include.outputs.linux-x86 }} + linux-x86-hs: ${{ steps.include.outputs.linux-x86-hs }} linux-x64-variants: ${{ steps.include.outputs.linux-x64-variants }} linux-cross-compile: ${{ steps.include.outputs.linux-cross-compile }} + alpine-linux-x64: ${{ steps.include.outputs.alpine-linux-x64 }} macos-x64: ${{ steps.include.outputs.macos-x64 }} macos-aarch64: ${{ steps.include.outputs.macos-aarch64 }} windows-x64: ${{ steps.include.outputs.windows-x64 }} @@ -78,6 +82,10 @@ jobs: # Returns 'true' if the input platform list matches any of the platform monikers given as argument, # 'false' otherwise. # arg $1: platform name or names to look for + + # Convert EXCLUDED_PLATFORMS from a comma-separated string to an array + IFS=',' read -r -a excluded_array <<< "$EXCLUDED_PLATFORMS" + function check_platform() { if [[ $GITHUB_EVENT_NAME == workflow_dispatch ]]; then input='${{ github.event.inputs.platforms }}' @@ -94,7 +102,13 @@ jobs: normalized_input="$(echo ,$input, | tr -d ' ')" if [[ "$normalized_input" == ",," ]]; then - # For an empty input, assume all platforms should run + # For an empty input, assume all platforms should run, except those in the EXCLUDED_PLATFORMS list + for excluded in "${excluded_array[@]}"; do + if [[ "$1" == "$excluded" ]]; then + echo 'false' + return + fi + done echo 'true' return else @@ -105,15 +119,24 @@ jobs: return fi done + + # If not explicitly included, check against the EXCLUDED_PLATFORMS list + for excluded in "${excluded_array[@]}"; do + if [[ "$1" == "$excluded" ]]; then + echo 'false' + return + fi + done fi echo 'false' } echo "linux-x64=$(check_platform linux-x64 linux x64)" >> $GITHUB_OUTPUT - echo "linux-x86=$(check_platform linux-x86 linux x86)" >> $GITHUB_OUTPUT + echo "linux-x86-hs=$(check_platform linux-x86-hs linux x86)" >> $GITHUB_OUTPUT echo "linux-x64-variants=$(check_platform linux-x64-variants variants)" >> $GITHUB_OUTPUT echo "linux-cross-compile=$(check_platform linux-cross-compile cross-compile)" >> $GITHUB_OUTPUT + echo "alpine-linux-x64=$(check_platform alpine-linux-x64 alpine-linux x64)" >> $GITHUB_OUTPUT echo "macos-x64=$(check_platform macos-x64 macos x64)" >> $GITHUB_OUTPUT echo "macos-aarch64=$(check_platform macos-aarch64 macos aarch64)" >> $GITHUB_OUTPUT echo "windows-x64=$(check_platform windows-x64 windows x64)" >> $GITHUB_OUTPUT @@ -135,12 +158,13 @@ jobs: make-arguments: ${{ github.event.inputs.make-arguments }} if: needs.select.outputs.linux-x64 == 'true' - build-linux-x86: - name: linux-x86 + build-linux-x86-hs: + name: linux-x86-hs needs: select uses: ./.github/workflows/build-linux.yml with: platform: linux-x86 + make-target: 'hotspot' gcc-major-version: '10' gcc-package-suffix: '-multilib' apt-architecture: 'i386' @@ -150,7 +174,7 @@ jobs: extra-conf-options: '--with-target-bits=32 --enable-fallback-linker --enable-libffi-bundling' configure-arguments: ${{ github.event.inputs.configure-arguments }} make-arguments: ${{ github.event.inputs.make-arguments }} - if: needs.select.outputs.linux-x86 == 'true' + if: needs.select.outputs.linux-x86-hs == 'true' build-linux-x64-hs-nopch: name: linux-x64-hs-nopch @@ -220,6 +244,16 @@ jobs: make-arguments: ${{ github.event.inputs.make-arguments }} if: needs.select.outputs.linux-cross-compile == 'true' + build-alpine-linux-x64: + name: alpine-linux-x64 + needs: select + uses: ./.github/workflows/build-alpine-linux.yml + with: + platform: alpine-linux-x64 + configure-arguments: ${{ github.event.inputs.configure-arguments }} + make-arguments: ${{ github.event.inputs.make-arguments }} + if: needs.select.outputs.alpine-linux-x64 == 'true' + build-macos-x64: name: macos-x64 needs: select @@ -300,16 +334,6 @@ jobs: bootjdk-platform: linux-x64 runs-on: ubuntu-22.04 - test-linux-x86: - name: linux-x86 - needs: - - build-linux-x86 - uses: ./.github/workflows/test.yml - with: - platform: linux-x86 - bootjdk-platform: linux-x64 - runs-on: ubuntu-22.04 - test-macos-x64: name: macos-x64 needs: @@ -347,42 +371,40 @@ jobs: if: always() needs: - build-linux-x64 - - build-linux-x86 + - build-linux-x86-hs - build-linux-x64-hs-nopch - build-linux-x64-hs-zero - build-linux-x64-hs-minimal - build-linux-x64-hs-optimized - build-linux-cross-compile + - build-alpine-linux-x64 - build-macos-x64 - build-macos-aarch64 - build-windows-x64 - build-windows-aarch64 - test-linux-x64 - - test-linux-x86 - test-macos-x64 + - test-macos-aarch64 - test-windows-x64 steps: - # Hack to get hold of the api environment variables that are only defined for actions - - name: 'Get API configuration' - id: api - uses: actions/github-script@v7 - with: - script: 'return { url: process.env["ACTIONS_RUNTIME_URL"], token: process.env["ACTIONS_RUNTIME_TOKEN"] }' - - name: 'Remove bundle artifacts' run: | # Find and remove all bundle artifacts - ALL_ARTIFACT_URLS="$(curl -s \ - -H 'Accept: application/json;api-version=6.0-preview' \ - -H 'Authorization: Bearer ${{ fromJson(steps.api.outputs.result).token }}' \ - '${{ fromJson(steps.api.outputs.result).url }}_apis/pipelines/workflows/${{ github.run_id }}/artifacts?api-version=6.0-preview')" - BUNDLE_ARTIFACT_URLS="$(echo "$ALL_ARTIFACT_URLS" | jq -r -c '.value | map(select(.name|startswith("bundles-"))) | .[].url')" - for url in $BUNDLE_ARTIFACT_URLS; do - echo "Removing $url" - curl -s \ - -H 'Accept: application/json;api-version=6.0-preview' \ - -H 'Authorization: Bearer ${{ fromJson(steps.api.outputs.result).token }}' \ - -X DELETE "$url" \ + # See: https://docs.github.com/en/rest/actions/artifacts?apiVersion=2022-11-28 + ALL_ARTIFACT_IDS="$(curl -sL \ + -H 'Accept: application/vnd.github+json' \ + -H 'Authorization: Bearer ${{ github.token }}' \ + -H 'X-GitHub-Api-Version: 2022-11-28' \ + '${{ github.api_url }}/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts?per_page=100')" + BUNDLE_ARTIFACT_IDS="$(echo "$ALL_ARTIFACT_IDS" | jq -r -c '.artifacts | map(select(.name|startswith("bundles-"))) | .[].id')" + for id in $BUNDLE_ARTIFACT_IDS; do + echo "Removing $id" + curl -sL \ + -X DELETE \ + -H 'Accept: application/vnd.github+json' \ + -H 'Authorization: Bearer ${{ github.token }}' \ + -H 'X-GitHub-Api-Version: 2022-11-28' \ + "${{ github.api_url }}/repos/${{ github.repository }}/actions/artifacts/$id" \ || echo "Failed to remove bundle" done diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000000..f4c5e7e67cb --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,3 @@ +# JDK Vulnerabilities + +Please follow the process outlined in the [OpenJDK Vulnerability Policy](https://openjdk.org/groups/vulnerability/report) to disclose vulnerabilities in the JDK. diff --git a/doc/building.html b/doc/building.html index 70753155312..c91d876246c 100644 --- a/doc/building.html +++ b/doc/building.html @@ -614,10 +614,9 @@

clang

--with-toolchain-type=clang.

Apple Xcode

The oldest supported version of Xcode is 13.0.

-

You will need the Xcode command line developer tools to be able to -build the JDK. (Actually, only the command line tools are -needed, not the IDE.) The simplest way to install these is to run:

-
xcode-select --install
+

You will need to download Xcode either from the App Store or specific +versions can be easily located via the Xcode Releases website.

When updating Xcode, it is advisable to keep an older version for building the JDK. To use a specific version of Xcode you have multiple options:

diff --git a/doc/building.md b/doc/building.md index 51ac0cad7d9..47ad9e7c72b 100644 --- a/doc/building.md +++ b/doc/building.md @@ -422,13 +422,9 @@ To use clang instead of gcc on Linux, use `--with-toolchain-type=clang`. The oldest supported version of Xcode is 13.0. -You will need the Xcode command line developer tools to be able to build the -JDK. (Actually, *only* the command line tools are needed, not the IDE.) The -simplest way to install these is to run: - -``` -xcode-select --install -``` +You will need to download Xcode either from the App Store or specific versions +can be easily located via the [Xcode Releases](https://xcodereleases.com) +website. When updating Xcode, it is advisable to keep an older version for building the JDK. To use a specific version of Xcode you have multiple options: diff --git a/doc/testing.html b/doc/testing.html index c56dfa31188..b74661b3924 100644 --- a/doc/testing.html +++ b/doc/testing.html @@ -434,7 +434,7 @@

FAILURE_HANDLER_TIMEOUT

Sets the argument -timeoutHandlerTimeout for JTReg. The default value is 0. This is only valid if the failure handler is built.

-

JTREG_TEST_THREAD_FACTORY

+

TEST_THREAD_FACTORY

Sets the -testThreadFactory for JTReg. It should be the fully qualified classname of a class which implements java.util.concurrent.ThreadFactory. One such implementation diff --git a/doc/testing.md b/doc/testing.md index 351745c9293..cdc9bbd2182 100644 --- a/doc/testing.md +++ b/doc/testing.md @@ -380,7 +380,7 @@ Defaults to 4. Sets the argument `-timeoutHandlerTimeout` for JTReg. The default value is 0. This is only valid if the failure handler is built. -#### JTREG_TEST_THREAD_FACTORY +#### TEST_THREAD_FACTORY Sets the `-testThreadFactory` for JTReg. It should be the fully qualified classname of a class which implements `java.util.concurrent.ThreadFactory`. One diff --git a/make/Bundles.gmk b/make/Bundles.gmk index 0901e415a8a..2ed04c19064 100644 --- a/make/Bundles.gmk +++ b/make/Bundles.gmk @@ -284,7 +284,7 @@ ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), ) ifeq ($(MACOSX_CODESIGN_MODE), hardened) # Macosx release build and code signing available. - ################################################################################ + ############################################################################ # JDK bundle $(eval $(call SetupCopyFiles, CREATE_JDK_BUNDLE_DIR_SIGNED, \ SRC := $(JDK_IMAGE_DIR), \ @@ -313,7 +313,7 @@ ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), ) PRODUCT_TARGETS += $(BUILD_JDK_BUNDLE) - ################################################################################ + ############################################################################ # JRE bundle $(eval $(call SetupCopyFiles, CREATE_JRE_BUNDLE_DIR_SIGNED, \ SRC := $(JRE_IMAGE_DIR), \ diff --git a/make/CompileInterimLangtools.gmk b/make/CompileInterimLangtools.gmk index 1a8b6382f81..dbb23de093c 100644 --- a/make/CompileInterimLangtools.gmk +++ b/make/CompileInterimLangtools.gmk @@ -65,7 +65,7 @@ $(BUILDTOOLS_OUTPUTDIR)/gensrc/java.compiler.interim/javax/tools/ToolProvider.ja $(SED) $(INTERIM_TOOL_PROVIDER_PATTERN) $< > $@ java.compiler.interim_EXTRA_FILES := \ - $(BUILDTOOLS_OUTPUTDIR)/gensrc/java.compiler.interim/javax/tools/ToolProvider.java + $(BUILDTOOLS_OUTPUTDIR)/gensrc/java.compiler.interim/javax/tools/ToolProvider.java TARGETS += $(BUILDTOOLS_OUTPUTDIR)/gensrc/java.compiler.interim/javax/tools/ToolProvider.java diff --git a/make/CompileJavaModules.gmk b/make/CompileJavaModules.gmk index b1b7a83498d..62c91ee5f78 100644 --- a/make/CompileJavaModules.gmk +++ b/make/CompileJavaModules.gmk @@ -75,12 +75,12 @@ $(JDK_OUTPUTDIR)/modules/%_zh_HK.properties: $(JDK_OUTPUTDIR)/modules/%_zh_TW.pr CreateHkTargets = \ $(call FilterExcludedTranslations, \ - $(patsubst $(TOPDIR)/src/%, $(JDK_OUTPUTDIR)/modules/%, \ - $(subst /share/classes,, \ - $(subst _zh_TW,_zh_HK, $(filter %_zh_TW.properties, $1)) \ - ) \ - ), \ - .properties \ + $(patsubst $(TOPDIR)/src/%, $(JDK_OUTPUTDIR)/modules/%, \ + $(subst /share/classes,, \ + $(subst _zh_TW,_zh_HK, $(filter %_zh_TW.properties, $1)) \ + ) \ + ), \ + .properties \ ) ################################################################################ diff --git a/make/CompileToolsJdk.gmk b/make/CompileToolsJdk.gmk index feba5d8a902..41a19f90ace 100644 --- a/make/CompileToolsJdk.gmk +++ b/make/CompileToolsJdk.gmk @@ -52,8 +52,7 @@ $(eval $(call SetupJavaCompilation, BUILD_TOOLS_JDK, \ build/tools/deps \ build/tools/docs \ build/tools/jigsaw \ - build/tools/depend \ - , \ + build/tools/depend, \ BIN := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes, \ DISABLED_WARNINGS := dangling-doc-comments options, \ JAVAC_FLAGS := \ @@ -66,17 +65,19 @@ $(eval $(call SetupJavaCompilation, BUILD_TOOLS_JDK, \ TARGETS += $(BUILD_TOOLS_JDK) -$(eval $(call SetupCopyFiles,COPY_NIMBUS_TEMPLATES, \ +$(eval $(call SetupCopyFiles, COPY_NIMBUS_TEMPLATES, \ SRC := $(TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus, \ DEST := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes/build/tools/generatenimbus/resources, \ - FILES := $(wildcard $(TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus/*.template))) + FILES := $(wildcard $(TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus/*.template), \ +)) TARGETS += $(COPY_NIMBUS_TEMPLATES) -$(eval $(call SetupCopyFiles,COPY_CLDRCONVERTER_PROPERTIES, \ +$(eval $(call SetupCopyFiles, COPY_CLDRCONVERTER_PROPERTIES, \ SRC := $(TOPDIR)/make/jdk/src/classes/build/tools/cldrconverter, \ DEST := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes/build/tools/cldrconverter, \ - FILES := $(wildcard $(TOPDIR)/make/jdk/src/classes/build/tools/cldrconverter/*.properties))) + FILES := $(wildcard $(TOPDIR)/make/jdk/src/classes/build/tools/cldrconverter/*.properties), \ +)) TARGETS += $(COPY_CLDRCONVERTER_PROPERTIES) diff --git a/make/CopyInterimTZDB.gmk b/make/CopyInterimTZDB.gmk index ac390580aa9..e2704b32975 100644 --- a/make/CopyInterimTZDB.gmk +++ b/make/CopyInterimTZDB.gmk @@ -30,7 +30,7 @@ include MakeBase.gmk include CopyFiles.gmk -########################################################################################## +################################################################################ ### TZDB tool needs files from java.time.zone package @@ -41,12 +41,13 @@ define tzdb_copyfiles < $(<) > $@ endef -$(eval $(call SetupCopyFiles,COPY_INTERIM_TZDB, \ +$(eval $(call SetupCopyFiles, COPY_INTERIM_TZDB, \ SRC := $(TOPDIR)/src/java.base/share/classes/java/time/zone, \ DEST := $(BUILDTOOLS_OUTPUTDIR)/interim_tzdb_classes/build/tools/tzdb, \ FILES := ZoneRules.java ZoneOffsetTransition.java ZoneOffsetTransitionRule.java Ser.java, \ - MACRO := tzdb_copyfiles)) + MACRO := tzdb_copyfiles, \ +)) -########################################################################################## +################################################################################ all: $(COPY_INTERIM_TZDB) diff --git a/make/CreateJmods.gmk b/make/CreateJmods.gmk index fd36554358b..86bc3b8335e 100644 --- a/make/CreateJmods.gmk +++ b/make/CreateJmods.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2014, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -229,8 +229,21 @@ ifeq ($(INTERIM_JMOD), true) # Interim JMODs are not shipped anywhere, so there is no reason # to compress them at all. JMOD_FLAGS += --compress zip-0 + + JMOD_TARGET_OS := $(OPENJDK_BUILD_OS) + ifeq ($(JMOD_TARGET_OS), macosx) + JMOD_TARGET_OS := macos + endif + + JMOD_TARGET_CPU := $(OPENJDK_BUILD_CPU) + ifeq ($(JMOD_TARGET_CPU), x86_64) + JMOD_TARGET_CPU := amd64 + endif + + JMOD_TARGET_PLATFORM := $(JMOD_TARGET_OS)-$(JMOD_TARGET_CPU) else JMOD_FLAGS += --compress $(JMOD_COMPRESS) + JMOD_TARGET_PLATFORM := $(OPENJDK_MODULE_TARGET_PLATFORM) endif # Create jmods in the support dir and then move them into place to keep the @@ -242,7 +255,7 @@ $(eval $(call SetupExecute, create_$(JMOD_FILE), \ SUPPORT_DIR := $(JMODS_SUPPORT_DIR), \ PRE_COMMAND := $(RM) $(JMODS_DIR)/$(JMOD_FILE) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \ COMMAND := $(JMOD) $(JMOD_SMALL_FLAGS) create --module-version $(VERSION_SHORT) \ - --target-platform '$(OPENJDK_MODULE_TARGET_PLATFORM)' \ + --target-platform '$(JMOD_TARGET_PLATFORM)' \ --module-path $(JMODS_DIR) $(JMOD_FLAGS) \ --date $(SOURCE_DATE_ISO_8601) \ $(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \ diff --git a/make/Docs.gmk b/make/Docs.gmk index 08a9ac662cd..e6a98c4fbd2 100644 --- a/make/Docs.gmk +++ b/make/Docs.gmk @@ -247,7 +247,7 @@ define create_overview_file \ \ # - ifneq ($$($1_GROUPS),) + ifneq ($$($1_GROUPS), ) $1_OVERVIEW_TEXT += \

This document is divided into \ $$(subst 2,two,$$(subst 3,three,$$(words $$($1_GROUPS)))) sections:

\ diff --git a/make/Global.gmk b/make/Global.gmk index 998ba4d2bda..16a5b05cccb 100644 --- a/make/Global.gmk +++ b/make/Global.gmk @@ -28,7 +28,7 @@ ### # Helper macro to allow $(info) to properly print strings beginning with spaces. -_:= +_ := help: $(info ) @@ -102,13 +102,14 @@ help: $(info $(_) # method is 'auto', 'ignore' or 'fail' (default)) $(info $(_) TEST="test1 ..." # Use the given test descriptor(s) for testing, e.g.) $(info $(_) # make test TEST="jdk_lang gtest:all") + $(info $(_) TEST_DEPS="dependency1 ..." # Specify additional dependencies for running tests, e.g docs-jdk $(info $(_) JTREG="OPT1=x;OPT2=y" # Control the JTREG test harness, use 'make test-only JTREG=help' to list) $(info $(_) GTEST="OPT1=x;OPT2=y" # Control the GTEST test harness, use 'make test-only GTEST=help' to list) $(info $(_) MICRO="OPT1=x;OPT2=y" # Control the MICRO test harness, use 'make test-only MICRO=help' to list) $(info $(_) TEST_OPTS="OPT1=x;..." # Generic control of all test harnesses) $(info $(_) TEST_VM_OPTS="ARG ..." # Same as setting TEST_OPTS to VM_OPTIONS="ARG ...") $(info ) - $(if $(all_confs), $(info Available configurations in $(build_dir):) $(foreach var,$(all_confs),$(info * $(var))),\ + $(if $(all_confs), $(info Available configurations in $(build_dir):) $(foreach var,$(all_confs),$(info * $(var))), \ $(info No configurations were found in $(build_dir).) $(info Run 'bash configure' to create a configuration.)) # We need a dummy rule otherwise make will complain @true diff --git a/make/Images.gmk b/make/Images.gmk index bfad1ad563c..5703a74afa5 100644 --- a/make/Images.gmk +++ b/make/Images.gmk @@ -134,11 +134,11 @@ CDS_DUMP_FLAGS = -Xmx128M -Xms128M # Param1 - VM variant (e.g., server, client, zero, ...) # Param2 - _nocoops, or empty define CreateCDSArchive - $1_$2_DUMP_EXTRA_ARG := $(if $(filter _nocoops, $2),-XX:-UseCompressedOops,) - $1_$2_DUMP_TYPE := $(if $(filter _nocoops, $2),-NOCOOPS,) + $1_$2_DUMP_EXTRA_ARG := $(if $(filter _nocoops, $2), -XX:-UseCompressedOops, ) + $1_$2_DUMP_TYPE := $(if $(filter _nocoops, $2), -NOCOOPS, ) # Only G1 supports dumping the shared heap, so explicitly use G1 if the JVM supports it. - $1_$2_CDS_DUMP_FLAGS := $(CDS_DUMP_FLAGS) $(if $(filter g1gc, $(JVM_FEATURES_$1)),-XX:+UseG1GC) + $1_$2_CDS_DUMP_FLAGS := $(CDS_DUMP_FLAGS) $(if $(filter g1gc, $(JVM_FEATURES_$1)), -XX:+UseG1GC) ifeq ($(OPENJDK_TARGET_OS), windows) $1_$2_CDS_ARCHIVE := bin/$1/classes$2.jsa @@ -235,7 +235,7 @@ endif ifeq ($(GCOV_ENABLED), true) - $(eval $(call SetupCopyFiles,COPY_GCOV_GCNO, \ + $(eval $(call SetupCopyFiles, COPY_GCOV_GCNO, \ SRC := $(OUTPUTDIR), \ DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \ FILES := $(call FindFiles, $(HOTSPOT_OUTPUTDIR) \ diff --git a/make/Init.gmk b/make/Init.gmk index 61846217ecc..8918de7d16e 100644 --- a/make/Init.gmk +++ b/make/Init.gmk @@ -37,7 +37,7 @@ default: # serially, regardless of -j. .NOTPARALLEL: -ifeq ($(HAS_SPEC),) +ifeq ($(HAS_SPEC), ) ############################################################################## # This is the default mode. We have not been recursively called with a SPEC. ############################################################################## @@ -168,7 +168,7 @@ ifeq ($(HAS_SPEC),) endif make-info: - ifneq ($(findstring $(LOG_LEVEL),info debug trace),) + ifneq ($(findstring $(LOG_LEVEL), info debug trace), ) $(info Running make as '$(strip $(MAKE) $(MFLAGS) \ $(COMMAND_LINE_VARIABLES) $(MAKECMDGOALS))') endif diff --git a/make/InitSupport.gmk b/make/InitSupport.gmk index ed9cd136c3f..eea593a80db 100644 --- a/make/InitSupport.gmk +++ b/make/InitSupport.gmk @@ -32,7 +32,7 @@ ifndef _INITSUPPORT_GMK _INITSUPPORT_GMK := 1 -ifeq ($(HAS_SPEC),) +ifeq ($(HAS_SPEC), ) # COMMA is defined in spec.gmk, but that is not included yet COMMA := , @@ -50,7 +50,7 @@ ifeq ($(HAS_SPEC),) # Make control variables, handled by Init.gmk INIT_CONTROL_VARIABLES += LOG CONF CONF_NAME SPEC JOBS TEST_JOBS CONF_CHECK \ - COMPARE_BUILD JTREG GTEST MICRO TEST_OPTS TEST_VM_OPTS + COMPARE_BUILD JTREG GTEST MICRO TEST_OPTS TEST_VM_OPTS TEST_DEPS # All known make control variables MAKE_CONTROL_VARIABLES := $(INIT_CONTROL_VARIABLES) TEST JDK_FILTER SPEC_FILTER @@ -74,13 +74,13 @@ ifeq ($(HAS_SPEC),) # Setup information about available configurations, if any. ifneq ($(CUSTOM_ROOT), ) - build_dir=$(CUSTOM_ROOT)/build + build_dir = $(CUSTOM_ROOT)/build else - build_dir=$(topdir)/build + build_dir = $(topdir)/build endif - all_spec_files=$(wildcard $(build_dir)/*/spec.gmk) + all_spec_files = $(wildcard $(build_dir)/*/spec.gmk) # Extract the configuration names from the path - all_confs=$(patsubst %/spec.gmk, %, $(patsubst $(build_dir)/%, %, $(all_spec_files))) + all_confs = $(patsubst %/spec.gmk, %, $(patsubst $(build_dir)/%, %, $(all_spec_files))) # Check for unknown command-line variables define CheckControlVariables @@ -128,7 +128,7 @@ ifeq ($(HAS_SPEC),) ifeq ($$(CONF_CHECK), ) # Default behavior is fail CONF_CHECK := fail - else ifneq ($$(filter-out auto fail ignore, $$(CONF_CHECK)),) + else ifneq ($$(filter-out auto fail ignore, $$(CONF_CHECK)), ) $$(info Error: CONF_CHECK must be one of: auto, fail or ignore.) $$(error Cannot continue) endif @@ -147,11 +147,11 @@ ifeq ($(HAS_SPEC),) $$(info Error: Cannot use CONF_NAME=$$(CONF_NAME) and SPEC=$$(SPEC) at the same time. Choose one.) $$(error Cannot continue) endif - ifeq ($$(wildcard $$(SPEC)),) + ifeq ($$(wildcard $$(SPEC)), ) $$(info Error: Cannot locate spec.gmk, given by SPEC=$$(SPEC).) $$(error Cannot continue) endif - ifeq ($$(filter /%, $$(SPEC)),) + ifeq ($$(filter /%, $$(SPEC)), ) # If given with relative path, make it absolute SPECS := $$(CURDIR)/$$(strip $$(SPEC)) else @@ -162,7 +162,7 @@ ifeq ($(HAS_SPEC),) override SPEC := else # Use spec.gmk files in the build output directory - ifeq ($$(all_spec_files),) + ifeq ($$(all_spec_files), ) ifneq ($(CUSTOM_ROOT), ) $$(info Error: No configurations found for $$(CUSTOM_ROOT).) else @@ -180,7 +180,7 @@ ifeq ($(HAS_SPEC),) $$(error Cannot continue) endif matching_conf := $$(strip $$(filter $$(CONF_NAME), $$(all_confs))) - ifeq ($$(matching_conf),) + ifeq ($$(matching_conf), ) $$(info Error: No configurations found matching CONF_NAME=$$(CONF_NAME).) $$(info Available configurations in $$(build_dir):) $$(foreach var, $$(all_confs), $$(info * $$(var))) @@ -197,15 +197,15 @@ ifeq ($(HAS_SPEC),) SPECS := $$(build_dir)/$$(matching_conf)/spec.gmk else ifneq ($$(origin CONF), undefined) # User have given a CONF= argument. - ifeq ($$(CONF),) + ifeq ($$(CONF), ) # If given CONF=, match all configurations matching_confs := $$(strip $$(all_confs)) else # Otherwise select those that contain the given CONF string - ifeq ($$(patsubst !%,,$$(CONF)),) + ifeq ($$(patsubst !%,,$$(CONF)), ) # A CONF starting with ! means we should negate the search term matching_confs := $$(strip $$(foreach var, $$(all_confs), \ - $$(if $$(findstring $$(subst !,,$$(CONF)), $$(var)), ,$$(var)))) + $$(if $$(findstring $$(subst !,,$$(CONF)), $$(var)), ,$$(var)))) else matching_confs := $$(strip $$(foreach var, $$(all_confs), \ $$(if $$(findstring $$(CONF), $$(var)), $$(var)))) @@ -215,12 +215,12 @@ ifeq ($(HAS_SPEC),) matching_confs := $$(CONF) # Don't repeat this output on make restarts caused by including # generated files. - ifeq ($$(MAKE_RESTARTS),) + ifeq ($$(MAKE_RESTARTS), ) $$(info Using exact match for CONF=$$(CONF) (other matches are possible)) endif endif endif - ifeq ($$(matching_confs),) + ifeq ($$(matching_confs), ) $$(info Error: No configurations found matching CONF=$$(CONF).) $$(info Available configurations in $$(build_dir):) $$(foreach var, $$(all_confs), $$(info * $$(var))) @@ -228,9 +228,9 @@ ifeq ($(HAS_SPEC),) else # Don't repeat this output on make restarts caused by including # generated files. - ifeq ($$(MAKE_RESTARTS),) + ifeq ($$(MAKE_RESTARTS), ) ifeq ($$(words $$(matching_confs)), 1) - ifneq ($$(findstring $$(LOG_LEVEL), info debug trace),) + ifneq ($$(findstring $$(LOG_LEVEL), info debug trace), ) $$(info Building configuration '$$(matching_confs)' (matching CONF=$$(CONF))) endif else @@ -272,7 +272,7 @@ ifeq ($(HAS_SPEC),) # count. main_targets_file := $$(dir $(strip $2))make-support/main-targets.gmk - ifeq ($$(MAKE_RESTARTS),) + ifeq ($$(MAKE_RESTARTS), ) # Only do this if make has not been restarted, and if we do not force it. ifeq ($(strip $1), FORCE) $$(shell rm -f $$(main_targets_file)) @@ -316,9 +316,9 @@ else # $(HAS_SPEC)=true BUILD_LOG_PIPE_SIMPLE := | $(TEE) -a $(BUILD_LOG) ifneq ($(CUSTOM_ROOT), ) - topdir=$(CUSTOM_ROOT) + topdir = $(CUSTOM_ROOT) else - topdir=$(TOPDIR) + topdir = $(TOPDIR) endif # Setup the build environment to match the requested specification on @@ -349,39 +349,39 @@ else # $(HAS_SPEC)=true ifneq ($$(findstring :, $$(COMPARE_BUILD)), ) $$(foreach part, $$(subst :, , $$(COMPARE_BUILD)), \ $$(if $$(filter PATCH=%, $$(part)), \ - $$(eval COMPARE_BUILD_PATCH=$$(strip $$(patsubst PATCH=%, %, $$(part)))) \ + $$(eval COMPARE_BUILD_PATCH = $$(strip $$(patsubst PATCH=%, %, $$(part)))) \ ) \ $$(if $$(filter CONF=%, $$(part)), \ - $$(eval COMPARE_BUILD_CONF=$$(strip $$(subst +, , $$(patsubst CONF=%, %, $$(part))))) \ + $$(eval COMPARE_BUILD_CONF = $$(strip $$(subst +, , $$(patsubst CONF=%, %, $$(part))))) \ ) \ $$(if $$(filter MAKE=%, $$(part)), \ - $$(eval COMPARE_BUILD_MAKE=$$(strip $$(subst +, , $$(patsubst MAKE=%, %, $$(part))))) \ + $$(eval COMPARE_BUILD_MAKE = $$(strip $$(subst +, , $$(patsubst MAKE=%, %, $$(part))))) \ ) \ $$(if $$(filter COMP_OPTS=%, $$(part)), \ - $$(eval COMPARE_BUILD_COMP_OPTS=$$(strip $$(subst +, , $$(patsubst COMP_OPTS=%, %, $$(part))))) \ + $$(eval COMPARE_BUILD_COMP_OPTS = $$(strip $$(subst +, , $$(patsubst COMP_OPTS=%, %, $$(part))))) \ ) \ $$(if $$(filter COMP_DIR=%, $$(part)), \ - $$(eval COMPARE_BUILD_COMP_DIR=$$(strip $$(subst +, , $$(patsubst COMP_DIR=%, %, $$(part))))) \ + $$(eval COMPARE_BUILD_COMP_DIR = $$(strip $$(subst +, , $$(patsubst COMP_DIR=%, %, $$(part))))) \ ) \ $$(if $$(filter FAIL=%, $$(part)), \ - $$(eval COMPARE_BUILD_FAIL=$$(strip $$(subst +, , $$(patsubst FAIL=%, %, $$(part))))) \ + $$(eval COMPARE_BUILD_FAIL = $$(strip $$(subst +, , $$(patsubst FAIL=%, %, $$(part))))) \ ) \ $$(if $$(filter NODRYRUN=%, $$(part)), \ - $$(eval COMPARE_BUILD_NODRYRUN=$$(strip $$(subst +, , $$(patsubst NODRYRUN=%, %, $$(part))))) \ + $$(eval COMPARE_BUILD_NODRYRUN = $$(strip $$(subst +, , $$(patsubst NODRYRUN=%, %, $$(part))))) \ ) \ ) else # Separate handling for single field case, to allow for spaces in values. ifneq ($$(filter PATCH=%, $$(COMPARE_BUILD)), ) - COMPARE_BUILD_PATCH=$$(strip $$(patsubst PATCH=%, %, $$(COMPARE_BUILD))) + COMPARE_BUILD_PATCH = $$(strip $$(patsubst PATCH=%, %, $$(COMPARE_BUILD))) else ifneq ($$(filter CONF=%, $$(COMPARE_BUILD)), ) - COMPARE_BUILD_CONF=$$(strip $$(subst +, , $$(patsubst CONF=%, %, $$(COMPARE_BUILD)))) + COMPARE_BUILD_CONF = $$(strip $$(subst +, , $$(patsubst CONF=%, %, $$(COMPARE_BUILD)))) else ifneq ($$(filter --%, $$(COMPARE_BUILD)), ) # Assume CONF if value begins with -- - COMPARE_BUILD_CONF=$$(strip $$(subst +, , $$(COMPARE_BUILD))) + COMPARE_BUILD_CONF = $$(strip $$(subst +, , $$(COMPARE_BUILD))) else # Otherwise assume patch file - COMPARE_BUILD_PATCH=$$(strip $$(COMPARE_BUILD)) + COMPARE_BUILD_PATCH = $$(strip $$(COMPARE_BUILD)) endif endif ifneq ($$(COMPARE_BUILD_PATCH), ) @@ -531,7 +531,7 @@ else # $(HAS_SPEC)=true # used by build comparisons. define WaitForJavacServerFinish $(if $(JAVAC_SERVER_DIR), \ - sleep 5\ + sleep 5 \ ) endef else @@ -544,7 +544,7 @@ else # $(HAS_SPEC)=true ############################################################################## # Store the build times in this directory. - BUILDTIMESDIR=$(OUTPUTDIR)/make-support/build-times + BUILDTIMESDIR = $(OUTPUTDIR)/make-support/build-times # Record starting time for build of a sub repository. define RecordStartTime @@ -605,7 +605,7 @@ endif # HAS_SPEC # $1: The option to look for # $2: The variable to set to "true" if the option is found define ParseLogOption - ifneq ($$(findstring $1, $$(LOG)),) + ifneq ($$(findstring $1, $$(LOG)), ) override $2 := true # First try to remove ",