Skip to content

Commit 351d298

Browse files
Merge branch 'sapmachine' into pr-jdk-25+16
2 parents 2483340 + 09d9889 commit 351d298

File tree

141 files changed

+18009
-109
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+18009
-109
lines changed

.github/actions/upload-bundles/action.yml

+6-5
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,12 @@ runs:
4444
id: bundles
4545
run: |
4646
# Rename bundles to consistent names
47-
jdk_bundle_zip="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.zip 2> /dev/null || true)"
48-
jdk_bundle_tar_gz="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
49-
symbols_bundle="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}-symbols.tar.gz 2> /dev/null || true)"
50-
tests_bundle="$(ls build/*/bundles/jdk-*_bin-tests${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
51-
static_libs_bundle="$(ls build/*/bundles/jdk-*_bin-static-libs${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
47+
# SapMachine 2020-11-04: Adapt bundle names
48+
jdk_bundle_zip="$(ls build/*/bundles/sapmachine-jdk-*_bin${{ inputs.debug-suffix }}.zip 2> /dev/null || true)"
49+
jdk_bundle_tar_gz="$(ls build/*/bundles/sapmachine-jdk-*_bin${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
50+
symbols_bundle="$(ls build/*/bundles/sapmachine-jdk-*_bin${{ inputs.debug-suffix }}-symbols.tar.gz 2> /dev/null || true)"
51+
tests_bundle="$(ls build/*/bundles/sapmachine-jdk-*_bin-tests${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
52+
static_libs_bundle="$(ls build/*/bundles/sapmachine-jdk-*_bin-static-libs${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
5253
5354
mkdir bundles
5455

.github/pull_request_template.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Replace this line with a description of this pull request and replace Issue in `fixes #Issue` down below with an issue number. Otherwise PR testing will fail.
2+
3+
When integrating please make sure you:
4+
- Create a merge commit when merging an OpenJDK upstream PR
5+
- Use Rebase & Merge when your PR contains only one commit with a commit message of the form `SapMachine #<Issue>: <Description>`
6+
- Use Squash and merge when there are several commits on the PR and with that update the commit message to `SapMachine #<Issue>: <Description>` and remove commit messages from sub-commits
7+
8+
fixes #Issue

.github/workflows/build-gh-pages.yml

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Workflow for building the sapmachine.io site and deploying it to GitHub Pages
2+
name: Build and deploy sapmachine.io page
3+
4+
on:
5+
# Allows to run this workflow manually from the Actions tab
6+
workflow_dispatch:
7+
8+
# Listens to repository dispatch events, originating from pushes to the gh-pages branch in SAP/SapMachine-infrastructure
9+
repository_dispatch:
10+
types: [gh-page-build]
11+
12+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13+
permissions:
14+
contents: read
15+
pages: write
16+
id-token: write
17+
18+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20+
concurrency:
21+
group: "pages"
22+
cancel-in-progress: false
23+
24+
jobs:
25+
# Build job
26+
build:
27+
runs-on: ubuntu-latest
28+
steps:
29+
- name: Checkout
30+
uses: actions/checkout@v4
31+
with:
32+
repository: 'SAP/SapMachine-infrastructure'
33+
ref: 'gh-pages'
34+
- name: Setup Pages
35+
uses: actions/configure-pages@v5
36+
- name: Build with Jekyll
37+
uses: actions/jekyll-build-pages@v1
38+
with:
39+
source: ./
40+
destination: ./_site
41+
- name: Upload artifact
42+
uses: actions/upload-pages-artifact@v3
43+
44+
# Deployment job
45+
deploy:
46+
environment:
47+
name: github-pages
48+
url: ${{ steps.deployment.outputs.page_url }}
49+
runs-on: ubuntu-latest
50+
needs: build
51+
steps:
52+
- name: Deploy to GitHub Pages
53+
id: deployment
54+
uses: actions/deploy-pages@v4

.github/workflows/main.yml

+12-5
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,18 @@
2323
# questions.
2424
#
2525

26-
name: 'OpenJDK GHA Sanity Checks'
26+
# SapMachine 2022-06-22: Change the name of the GitHub Action
27+
name: 'SapMachine GHA Sanity Checks'
2728

2829
on:
2930
push:
3031
branches-ignore:
31-
- master
32-
- pr/*
33-
- jdk*
32+
# SapMachine 2020-11-04: Ignore sapmachine branch
33+
- sapmachine
34+
# SapMachine 2020-11-04: Trigger on pull request
35+
pull_request:
36+
branches:
37+
- sapmachine
3438
workflow_dispatch:
3539
inputs:
3640
platforms:
@@ -56,6 +60,8 @@ jobs:
5660

5761
prepare:
5862
name: 'Prepare the run'
63+
# SapMachine 2022-06-23: On 'pull_request' we only want to run GHA if the PR comes from a remote repo. Otherwise we have the run on 'push' already as a check.
64+
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name }}
5965
runs-on: ubuntu-22.04
6066
env:
6167
# List of platforms to exclude by default
@@ -100,7 +106,8 @@ jobs:
100106
function check_platform() {
101107
if [[ $GITHUB_EVENT_NAME == workflow_dispatch ]]; then
102108
input='${{ github.event.inputs.platforms }}'
103-
elif [[ $GITHUB_EVENT_NAME == push ]]; then
109+
# SapMachine 2022-06-24: Also handle 'pull_request' event.
110+
elif [[ $GITHUB_EVENT_NAME == push ]] || [[ $GITHUB_EVENT_NAME == pull_request ]]; then
104111
if [[ '${{ !secrets.JDK_SUBMIT_FILTER || startsWith(github.ref, 'refs/heads/submit/') }}' == 'false' ]]; then
105112
# If JDK_SUBMIT_FILTER is set, and this is not a "submit/" branch, don't run anything
106113
>&2 echo 'JDK_SUBMIT_FILTER is set and not a "submit/" branch'

.github/workflows/wiki.yml

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Runs update-wiki action every day at 20:00 UTC
2+
3+
name: 'Wiki Update'
4+
5+
on:
6+
workflow_dispatch:
7+
schedule:
8+
- cron: '0 20 * * *'
9+
10+
jobs:
11+
wiki:
12+
if: ${{ github.event_name != 'schedule' || github.repository == 'SAP/SapMachine' }}
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout SapMachine Wiki source
16+
uses: actions/checkout@v4
17+
with:
18+
repository: 'SAP/SapMachine.wiki.git'
19+
ref: 'master'
20+
- name: Configure git
21+
run: |
22+
git config user.name "SapMachine Github Actions Bot"
23+
git config user.email "[email protected]"
24+
git remote set-url origin https://github.com/SAP/SapMachine.wiki.git
25+
- name: Update Wiki
26+
run: |
27+
pip3 install feedparser
28+
python3 scripts/update_blogs.py update
29+
git commit -a -m "Update blogs" || echo "No updates"
30+
- name: Push changes
31+
run: git push origin master
32+
working-directory: .
33+
shell: bash

README.md

+47-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,50 @@
1-
# Welcome to the JDK!
1+
[![GitHub release (latest by date)](https://img.shields.io/github/downloads/sap/sapmachine/latest/total?label=Downloads%20of%20Latest%20Release)](https://sap.github.io/SapMachine/#download) [![DockerPulls](https://img.shields.io/docker/pulls/_/sapmachine?label=Docker%20Pulls)](https://hub.docker.com/_/sapmachine)
22

3-
For build instructions please see the
4-
[online documentation](https://openjdk.org/groups/build/doc/building.html),
5-
or either of these files:
3+
<img align="right" width=350 src="https://sap.github.io/SapMachine/assets/images/logo_circular.svg">
64

7-
- [doc/building.html](doc/building.html) (html version)
8-
- [doc/building.md](doc/building.md) (markdown version)
5+
# [](#SapMachine) SapMachine
6+
This project contains a downstream version of the [OpenJDK](http://openjdk.java.net/) project. It is used to build and maintain a SAP supported version of OpenJDK for SAP customers and partners who wish to use OpenJDK to run their applications.
97

10-
See <https://openjdk.org/> for more information about the OpenJDK
11-
Community and the JDK and see <https://bugs.openjdk.org> for JDK issue
12-
tracking.
8+
We want to stress that this is clearly a "*friendly fork*". SAP is committed to ensuring the continued success of the Java platform. SAP is:
9+
10+
* A member of the [JCP Executive committee](https://jcp.org/en/participation/committee) since 2001 and recently served in the [JSR 379 (Java SE 9)](https://www.jcp.org/en/jsr/detail?id=379), [JSR 383 (Java SE 18.3)](https://www.jcp.org/en/jsr/detail?id=383), [JSR 384 (Java SE 11)](https://www.jcp.org/en/jsr/detail?id=384), [JSR 386 (Java SE 12)](https://www.jcp.org/en/jsr/detail?id=386), [JSR 388 (Java SE 13)](https://www.jcp.org/en/jsr/detail?id=388), [JSR 389 (Java SE 14)](https://www.jcp.org/en/jsr/detail?id=389), [JSR 390 (Java SE 15)](https://www.jcp.org/en/jsr/detail?id=390), [JSR 391 (Java SE 16)](https://www.jcp.org/en/jsr/detail?id=391), [JSR 392 (Java SE 17)](https://www.jcp.org/en/jsr/detail?id=392), [JSR 393 (Java SE 18)](https://www.jcp.org/en/jsr/detail?id=393), [JSR 394 (Java SE 19)](https://www.jcp.org/en/jsr/detail?id=394), [JSR 395 (Java SE 20)](https://www.jcp.org/en/jsr/detail?id=395), [JSR 396 (Java SE 21)](https://www.jcp.org/en/jsr/detail?id=396) and [JSR 397 (Java SE 22)](https://www.jcp.org/en/jsr/detail?id=397) Expert Groups.
11+
12+
* Among the biggest external contributors to the OpenJDK project (see fix ratio for OpenJDK [11](https://blogs.oracle.com/java-platform-group/building-jdk-11-together), [12](https://blogs.oracle.com/java-platform-group/the-arrival-of-java-12), [13](https://blogs.oracle.com/java-platform-group/the-arrival-of-java-13), [14](https://blogs.oracle.com/java-platform-group/the-arrival-of-java-14), [15](https://blogs.oracle.com/java-platform-group/the-arrival-of-java-15), [16](https://inside.java/2021/03/16/the-arrival-of-java16/), [17](https://inside.java/2021/09/14/the-arrival-of-java17/), [18](https://inside.java/2022/03/22/the-arrival-of-java18/), [19](https://inside.java/2022/09/20/the-arrival-of-java-19/), [20](https://inside.java/2023/03/21/the-arrival-of-java-20/), [21](https://inside.java/2023/09/19/the-arrival-of-java-21/), [22](https://inside.java/2024/03/19/the-arrival-of-java-22/)).
13+
14+
* Leading the [OpenJDK 17 updates project](https://wiki.openjdk.java.net/display/JDKUpdates/JDK+17u) and heavily supporting the [OpenJDK 11](https://wiki.openjdk.java.net/display/JDKUpdates/JDK11u) and [OpenJDK 21](https://wiki.openjdk.java.net/display/JDKUpdates/JDK+21u) updates projects.
15+
16+
* Leading the [PowerPC/AIX porting project](http://openjdk.java.net/projects/ppc-aix-port/).
17+
18+
* Contributing many new features inspired by Java stakeholders within SAP to the OpenJDK project. This ensures such features are available in long reach and for everybody. Rarely we add such features to SapMachine directly to keep the diff of this project as small as possible.
19+
20+
* Creating tools for developers
21+
* [JFR Event Collection](https://sapmachine.io/jfrevents/): Information on all JFR events for a specific JDK
22+
* [AP-Loader](https://github.com/jvm-profiling-tools/ap-loader): AsyncProfiler in a single cross-platform JAR
23+
24+
25+
## Downloads
26+
27+
Check out the [Download](https://sap.github.io/SapMachine/#download) section on [https://sapmachine.io](https://sapmachine.io).
28+
29+
## Documentation
30+
Check out our [FAQs](https://github.com/SAP/SapMachine/wiki/Frequently-Asked-Questions) and [wikipages](https://github.com/SAP/SapMachine/wiki) for information about:
31+
* [Installation](https://github.com/SAP/SapMachine/wiki/Installation) and [Docker Images](https://github.com/SAP/SapMachine/wiki/Docker-Images)
32+
* [Certifications and Java Compatibility](https://github.com/SAP/SapMachine/wiki/Certification-and-Java-Compatibility)
33+
* [SapMachine Development Process](https://github.com/SAP/SapMachine/wiki/SapMachine-Development-Process)
34+
35+
## Have an issue?
36+
If it's SapMachine specific please let us know by filing a [new issue](https://github.com/SAP/SapMachine/issues/new).
37+
38+
Please notice that the SapMachine [issue tracker](https://github.com/SAP/SapMachine/issues) is mainly used internally by the SapMachine team to organize its work (i.e. sync with upstream, downporting fixes, add SapMachine specific features, etc.).
39+
40+
General VM/JDK bugs are maintained directly in the [OpenJDK Bug System](https://bugs.openjdk.java.net/). You can open a SapMachine issue with a reference to an open or resolved OpenJDK bug if you want us to resolve the issue or downport the fix to a specific SapMachine version. If you find a general VM/JDK bug in SapMachine and don't have write access to the OpenJDK Bug System you can open an issue here and we'll take care to open a corresponding OpenJDK bug for it.
41+
42+
Every SapMachine release contains at least all the fixes of the corresponding OpenJDK release it is based on. You can easily find the OpenJDK base version by looking at the [SapMachine version string](https://github.com/SAP/SapMachine/wiki/Differences-between-SapMachine-and-OpenJDK#version-numbers).
43+
44+
You can find the [Differences between SapMachine and OpenJDK](https://github.com/SAP/SapMachine/wiki/Differences-between-SapMachine-and-OpenJDK) and the [Features Contributed by SAP](https://github.com/SAP/SapMachine/wiki/Features-Contributed-by-SAP) in the [SapMachine Wiki](https://github.com/SAP/SapMachine/wiki).
45+
46+
## Contributing
47+
We currently do not accept external contributions for this project. If you want to improve the code or fix a bug please consider contributing directly to the upstream [OpenJDK](http://openjdk.java.net/contribute/) project. Our repositories will be regularly synced with the upstream project so any improvements in the upstream OpenJDK project will directly become visible in our project as well.
48+
49+
## License
50+
This project is run under the same licensing terms as the upstream OpenJDK project. Please see the [LICENSE](LICENSE) file in the top-level directory for more information.

make/Bundles.gmk

+3-2
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,9 @@ ifeq ($(call isTargetOs, macosx)+$(DEBUG_LEVEL), true+release)
172172
else
173173
JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR)
174174
JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
175-
JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER)
176-
JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)
175+
# SapMachine 2020-11-04: Adapt bundle names
176+
JDK_BUNDLE_SUBDIR := sapmachine-jdk-$(VERSION_NUMBER)
177+
JRE_BUNDLE_SUBDIR := sapmachine-jre-$(VERSION_NUMBER)
177178
ifneq ($(DEBUG_LEVEL), release)
178179
JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
179180
JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)

make/Images.gmk

+37-1
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ ALL_MODULES := $(call FindAllModules) $(EXTRA_MODULES)
4343

4444
$(eval $(call ReadImportMetaData))
4545

46+
# SapMachine 2021-09-24: add jcmd to JRE
4647
JRE_MODULES += $(filter $(ALL_MODULES), $(BOOT_MODULES) \
47-
$(PLATFORM_MODULES) jdk.jdwp.agent)
48+
$(PLATFORM_MODULES) jdk.jdwp.agent jdk.jcmd)
4849
JDK_MODULES += $(ALL_MODULES)
4950

5051
JRE_MODULES_LIST := $(call CommaList, $(JRE_MODULES))
@@ -265,6 +266,41 @@ ifeq ($(GCOV_ENABLED), true)
265266

266267
endif
267268

269+
################################################################################
270+
# SapMachine 2024-09-13: Async profiler import
271+
272+
ifeq ($(call isTargetOs, linux macosx)+$(ASYNC_PROFILER_IMPORT_ENABLED), true+true)
273+
274+
$(eval $(call SetupCopyFiles, COPY_ASYNC_PROFILER_BIN_TO_JDK, \
275+
SRC := $(ASYNC_PROFILER_IMPORT_PATH), \
276+
DEST := $(JDK_IMAGE_DIR), \
277+
FILES := bin/asprof lib/libasyncProfiler$(SHARED_LIBRARY_SUFFIX), \
278+
MACRO := install-file-and-sign, \
279+
))
280+
281+
$(eval $(call SetupCopyFiles, COPY_ASYNC_PROFILER_BIN_TO_JRE, \
282+
SRC := $(ASYNC_PROFILER_IMPORT_PATH), \
283+
DEST := $(JRE_IMAGE_DIR), \
284+
FILES := bin/asprof lib/libasyncProfiler$(SHARED_LIBRARY_SUFFIX), \
285+
MACRO := install-file-and-sign, \
286+
))
287+
288+
$(eval $(call SetupCopyFiles, COPY_ASYNC_PROFILER_TO_JDK, \
289+
SRC := $(ASYNC_PROFILER_IMPORT_PATH), \
290+
DEST := $(JDK_IMAGE_DIR), \
291+
FILES := lib/async-profiler.jar lib/converter.jar legal/async/CHANGELOG.md legal/async/LICENSE legal/async/README.md, \
292+
))
293+
294+
$(eval $(call SetupCopyFiles, COPY_ASYNC_PROFILER_TO_JRE, \
295+
SRC := $(ASYNC_PROFILER_IMPORT_PATH), \
296+
DEST := $(JRE_IMAGE_DIR), \
297+
FILES := lib/async-profiler.jar lib/converter.jar legal/async/CHANGELOG.md legal/async/LICENSE legal/async/README.md, \
298+
))
299+
300+
JDK_TARGETS += $(COPY_ASYNC_PROFILER_BIN_TO_JDK) $(COPY_ASYNC_PROFILER_TO_JDK)
301+
JRE_TARGETS += $(COPY_ASYNC_PROFILER_BIN_TO_JRE) $(COPY_ASYNC_PROFILER_TO_JRE)
302+
endif
303+
268304
################################################################################
269305
# Debug symbols
270306
# Since debug symbols are not included in the jmod files, they need to be copied

make/MacBundles.gmk

+6-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ ifeq ($(call isTargetOs, macosx), true)
4141

4242
MACOSX_PLIST_SRC := $(TOPDIR)/make/data/bundle
4343

44-
BUNDLE_NAME := $(MACOSX_BUNDLE_NAME_BASE) $(VERSION_SHORT)
44+
# SapMachine 2023-06-24: ea bundles should have build number in CFBundleName
45+
ifeq ($(VERSION_PRE), ea)
46+
BUNDLE_NAME := $(MACOSX_BUNDLE_NAME_BASE) $(VERSION_STRING)
47+
else
48+
BUNDLE_NAME := $(MACOSX_BUNDLE_NAME_BASE) $(VERSION_SHORT)
49+
endif
4550
BUNDLE_INFO := $(MACOSX_BUNDLE_NAME_BASE) $(VERSION_STRING)
4651
ifeq ($(COMPANY_NAME), N/A)
4752
BUNDLE_VENDOR := UNDEFINED

make/StaticLibs.gmk

+3
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ else ifeq ($(call isTargetOs, aix), true)
7575
BROKEN_STATIC_LIBS += splashscreen
7676
endif
7777

78+
# SapMachine 2025-03-19: Fix static libs target, dt_filesocket defines jdwpTransport_OnLoad which conflicts with dt_socket
79+
BROKEN_STATIC_LIBS += dt_filesocket
80+
7881
$(foreach module, $(STATIC_LIB_MODULES), \
7982
$(eval LIBS_$(module) := $(filter-out $(BROKEN_STATIC_LIBS), $(shell cat \
8083
$(SUPPORT_OUTPUTDIR)/modules_static-libs/$(module)/module-included-libs.txt))) \

make/autoconf/jdk-options.m4

+15
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,21 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS],
223223
fi
224224
AC_SUBST(COPYRIGHT_YEAR)
225225
226+
# SapMachine 2024-09-13: import async profiler binaries
227+
AC_ARG_WITH(async-profiler-import-path, [AS_HELP_STRING([--with-async-profiler-import-path],
228+
[Set import path for downloaded async profiler binaries])])
229+
if test "x$with_async_profiler_import_path" != x; then
230+
ASYNC_PROFILER_IMPORT_PATH="$with_async_profiler_import_path"
231+
if test -f "$ASYNC_PROFILER_IMPORT_PATH/bin/asprof"; then
232+
ASYNC_PROFILER_IMPORT_ENABLED=true
233+
AC_MSG_NOTICE([asprof exists, enabling async-profiler import])
234+
else
235+
AC_MSG_ERROR([async-profiler import path was set, but asprof was not found])
236+
fi
237+
fi
238+
AC_SUBST(ASYNC_PROFILER_IMPORT_PATH)
239+
AC_SUBST(ASYNC_PROFILER_IMPORT_ENABLED)
240+
226241
# Override default library path
227242
AC_ARG_WITH([jni-libpath], [AS_HELP_STRING([--with-jni-libpath],
228243
[override default JNI library search path])])

0 commit comments

Comments
 (0)