commit: c968b4ab1494e7d7b25a183252ce3932cbd13c0c Author: xor <davidhughes205 <AT> gmail <DOT> com> AuthorDate: Sun Nov 8 17:58:52 2020 +0000 Commit: Jory Pratt <anarchy <AT> gentoo <DOT> org> CommitDate: Sun Nov 8 18:22:07 2020 +0000 URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=c968b4ab
OpenJDK: add musl patches to OpenJDK 8 + OpenJDK 11. Patches are hidden behind elibc_musl Signed-off-by: Jory Pratt <anarchy <AT> gentoo.org> dev-java/openjdk/Manifest | 34 ++ dev-java/openjdk/files/bootcycle_jobs.patch | 26 + dev-java/openjdk/files/musl/11/aarch64.patch | 15 + dev-java/openjdk/files/musl/11/build.patch | 545 +++++++++++++++++++++ .../openjdk/files/musl/11/fix-bootjdk-check.patch | 18 + dev-java/openjdk/files/musl/11/ppc64le.patch | 226 +++++++++ .../openjdk/files/musl/8/0001_musl_hotspot.patch | 116 +++++ .../files/musl/8/0002_musl_hotspot_ppc.patch | 24 + .../files/musl/8/0003_musl_hotspot_aarch64.patch | 12 + .../files/musl/8/0004_musl_hotspot_noagent.patch | 85 ++++ .../files/musl/8/0005_musl_fix_libjvm_load.patch | 12 + dev-java/openjdk/files/musl/8/0006_musl_jdk.patch | 83 ++++ .../files/musl/8/0007_musl_jdk_includes.patch | 144 ++++++ .../files/musl/8/0008_musl_jdk_execinfo.patch | 21 + .../files/musl/8/0009_fix_jdk_ipv6_init.patch | 43 ++ .../files/musl/8/0010_fix_jdk_close_fds.patch | 103 ++++ dev-java/openjdk/files/openjdk-11.env.sh | 16 + dev-java/openjdk/files/openjdk-8.env.sh | 16 + dev-java/openjdk/metadata.xml | 29 ++ dev-java/openjdk/openjdk-11.0.8_p10.ebuild | 289 +++++++++++ dev-java/openjdk/openjdk-11.0.9_p11.ebuild | 288 +++++++++++ dev-java/openjdk/openjdk-8.265_p01.ebuild | 268 ++++++++++ dev-java/openjdk/openjdk-8.272_p10.ebuild | 267 ++++++++++ 23 files changed, 2680 insertions(+) diff --git a/dev-java/openjdk/Manifest b/dev-java/openjdk/Manifest new file mode 100644 index 0000000..6fff35e --- /dev/null +++ b/dev-java/openjdk/Manifest @@ -0,0 +1,34 @@ +DIST openjdk-11.0.8_p10.tar.bz2 91141175 BLAKE2B eeef0f6b6a8f804e043cde01de256c86ed35d5a391588100caea49c8c2b617c3f06aa37df894feaa89734e68c32fe28d8bc5337755050c457d657cf88fcff7f3 SHA512 f8fd26a11cb044197d3b04a1347e27e177e79cb58436e67116f63025a2a5c39c0083ac17362e7d2234caf89df530422ead088e3fc4546f8d9f68482fc75eb7a0 +DIST openjdk-11.0.9_p11.tar.bz2 91638327 BLAKE2B a04b7fb5ebde3b6c024e5f3931a2efe796e08ad66c0190cddfa4268d5181f46f24685d9d51ae328547916e8ece723967bf653feeac87347ee14ecbe213ad657a SHA512 a0a6726d5adbe95904b78d8b4319bc4386c594a563f80f63d59072cf72d00928b451163b91258b44193a80851400ce8b8d142fecfd2bd902ff7a5e47cb4a9976 +DIST openjdk-8.265_p01.tar.bz2 456095 BLAKE2B 8de4d0293f3062583654da99a29d5be02197c323772f663d37ab21bdfdf32a723412d301094e6f70cbba99883241f52406a799a91c3d7c2a69ab7b35932c0a38 SHA512 686b869f9278462c6cb52036c4c9261e1689b917ce0afd4e6b47bb3d3207b2e79b2d03c2d3808a5853ab2fa070ac2206877849f5837282cb6deb80f610ba67f5 +DIST openjdk-8.272_p10.tar.bz2 457222 BLAKE2B 51e487d36c1922c5fc04d8922f1000a776e4872142517933ef5e8d5fd825f221fa02325bd755bf3f48f7f3221a2da3ca182301fb303675cb7d712d7b2f1c7751 SHA512 488b7fa0ed725936d483efd54242dbf4409752c685f29277023fb47c4375b5700b34e743d819d7d7c2406a2f8845d1c3d4fc548c156b6c7c30e43574c1b51527 +DIST openjdk-aarch64-shenandoah-8.265_p01.tar.bz2 461443 BLAKE2B 169cc30062efd93e93a16c909494d5817e3f6108ed22d4cb09f618732b990091a47c1149fff0f3e5657c2e21443d357e5d11091ef1d4f8eb61a14bcc35d74951 SHA512 b85714731f9a102585308d2df5b271243b523daa7541635f5d4a22e7322890bc024f8abafbacbd1885c07cec479e00b5edb936936fcfefcfe0f6e2e6e2211689 +DIST openjdk-aarch64-shenandoah-8.272_p10.tar.bz2 462755 BLAKE2B abeabf704d2135da9df6746545209f5a658ec547be5852041bb9bd1dfc4546cef143541df61b4705b6d2181ae7ec91a8c64e2b27347c24d146da49bbf8c228ef SHA512 7cae0cf80e09e1d2ad3eef8bf6740942788d0af4d3c9821bb0785ea42d4b38319d0ec57a8d21add25a40eebdc5ecba8234c9f04e6922e87c80480f71b04e2e3d +DIST openjdk-aarch64-shenandoah-corba-8.265_p01.tar.bz2 1050861 BLAKE2B 6803ee3ad1e3804cec3a1008f38538d793b2ae4f0a3c22d48d3c9885af37f4baf2ba94b91824e2e2bb170a5c9a59b28edc5d0c94646fd6265fe2b32fad759cb7 SHA512 859afe2ef587f7151a1fce4a43617a3afa0d8b9e04a07332c8a412b1b8deba4e00d7676cf1579cb2a8a18a307d094d22938ea9a3d70acb9094e268e701c35982 +DIST openjdk-aarch64-shenandoah-corba-8.272_p10.tar.bz2 1052989 BLAKE2B 8d6f79758ccf1719396fb56fd47c258c2440beea79516025b4911027a59b6cf4b5826c5eb01ba3a4c45847915531989c74665cbedf6349541df38732e7b828de SHA512 12547c8b5f1fe4efcc58f5b148977d519c954b964e814fc3fce717bd6d6221c2e7eda98a0e1e8157ed2f509f3b89e1e7b529da81cd1ee768daf4ad6369c57e8b +DIST openjdk-aarch64-shenandoah-hotspot-8.265_p01.tar.bz2 8757379 BLAKE2B aefc9c9b9f5a369db14cc5a22ea54373518daf594b794f74533ea4365416b8adc91cdd6c79934d93f5e0f019d7b07723630f849ab93464d7416d15de54a5c65e SHA512 3f44dadc5a5d9a75d4b6b632991b9fbbcae499e19139e1d902f8f2df101141060bc063996e995b22c462c76962b1312e719495eae99b392da3080c7d875deae5 +DIST openjdk-aarch64-shenandoah-hotspot-8.272_p10.tar.bz2 8767088 BLAKE2B 85b2dcbd696c58db72a7aeb4dc9a4752d742ed90bfd2e06ce5ddd8ed4ec5c63ab2de40a41aab5747fa120d8865c1d57f02a99b27a6ebf7c68c0891e19f5a7f27 SHA512 7866495487b271228f1a2d95cecfa6b76bb912d8c1c63d3d92e7b2cda88dd151b3b6c4c3bc717e37a0bd972762620ae7fb456c1aee281772a145a1dd1b11758b +DIST openjdk-aarch64-shenandoah-jaxp-8.265_p01.tar.bz2 2696501 BLAKE2B 1b1a459a4400d78c7921593a173059156b53a2cfc5fce695571e5c827bf609c08e02accdd56e1585723d50d93cae6ed0b5cef91f7597de21a16daa9b951046c5 SHA512 a377505e17299ba8fdd9e24fb9d3f786f1e6288e485319f2accf6abe9be957814ceb08c14867839bfd29690e91afb70f2aadfd9cc43db81e924960275792d61c +DIST openjdk-aarch64-shenandoah-jaxp-8.272_p10.tar.bz2 2718084 BLAKE2B 1e6cc999d84a49c03731a2a2ca73dfe684940509a64199ad52571ef51b3da035e41b41bf262ea88af9f77418c7b1b5721724d86f67a5f737e53eaf3673f4eab8 SHA512 a73e5a4628c936cf9b19082ad49ed2134984d15a1165c45206c74dff45118c50922fd0a668efe93a46c3839775ec567d56eee19cd0e3a9f90e7995d1b6a42f11 +DIST openjdk-aarch64-shenandoah-jaxws-8.265_p01.tar.bz2 2556505 BLAKE2B 70a963e625b04717a7dfd8f913d8dad20158abb1c7d5ea474c53692181d5ba099c9c6ebec0efa28d6732275d02380fda613ba446f854052476fdb2b8cd80fbaf SHA512 db06c192bc6b753209870dddf43d896444a1dddb0f04ddec6ec4317034cf8b33173ccfeb6e50f18f76d6f28eb93ca08d8fade299416d3ed2ccb9d65e03d867f4 +DIST openjdk-aarch64-shenandoah-jaxws-8.272_p10.tar.bz2 2558262 BLAKE2B 3b00ca162f3b758ee65090011551f074f7675f499f179ae0d4c8c62b1d70c942d7d2082d48e84cece6cd2be7ea319c1707fc6239e82fd5e79297f796838688e4 SHA512 d64a15cf35df014c4dca2edddea2015905bafe252d3d2bdfd1bc8f72683ac827e5d0347e36d5d94cda354b31a6b0782017b1cea6571443e073caf9f26c7bebda +DIST openjdk-aarch64-shenandoah-jdk-8.265_p01.tar.bz2 48064316 BLAKE2B 9623b5ea954dfd4c732b35683f859bdfe823e8fe3697f859e73c220e2931e2047271a6382c096d29bd357c5b9f681ce85053cd349c44332db77a53232f56e748 SHA512 9b90dc0d1e7ba0215628687d0594f2e1316bd190b4ff20b22cf0d20269180a160e46810c7ad2bca43603283d3140567a1cd2a1c222a6ffc8c4bc413ae4da5347 +DIST openjdk-aarch64-shenandoah-jdk-8.272_p10.tar.bz2 48370921 BLAKE2B 98026a28463ce3f520feab2b146830bf91acdccac5aa28488ffdbe4328b9a2cbbc17e95eeb36a60364cab470eeb26efcfa06a588e1bebcb6e978821459536feb SHA512 1bc5baa799282a2d7c0014d2cf55b350c7d99dbd129643d2cfeadebd467b2f6f9a8b8a97d34f66c656103db3ee3d5a57d6ff57dc45bc655258dd5093506d89b5 +DIST openjdk-aarch64-shenandoah-langtools-8.265_p01.tar.bz2 2396374 BLAKE2B 0aeb7c979824773a7de1ff3ae5f0b47ee965011ff29144a1ff83b84f33bfbfe850bea32aaede1ac174ee9d6850a5bfb88c194db7e4a10b6c800716d854871fb8 SHA512 f97b21a5e369239b11ccb122b6256f1b71edec3cbc6d41c0bd90c43b67126846917c795ba2e954a62d72285b50d9bfa74748488a95c2d51aacebe78575ffd833 +DIST openjdk-aarch64-shenandoah-langtools-8.272_p10.tar.bz2 2397200 BLAKE2B 1d985e852f07ab69e0af01a17cc3874cf903b1e3e2c4a909b7403087b3243beaf57a1e9b7792b52469a80764c7db614e3bb6ec4b43527d022219f3e79af21457 SHA512 76118b6c56481bcd3a6a709006d0d114faeef2b2a3c353e4a5ef2af5f03429dddd78d2d5951e9245fb5e41443e871e43634921825c0dbae8907f3f49fb3dea0c +DIST openjdk-aarch64-shenandoah-nashorn-jdk8.265_p01.tar.bz2 2831216 BLAKE2B 02eb3f916feacaf32feb75e4c3a6bb8915e4247dd07bfd3085feb6575c5152c41d0bef46bf51a8465a2555990a7f63315d61e1733d2f36a09293ec8bab30330d SHA512 610b99e04e0afe3fa78907af20d6d297896b9ab7cfbb5bddeefeb2301e733078b147c1d547cb5c3cb08b6f208acfdbf3559ba561b8a3907cf2c6506bb7daf08e +DIST openjdk-aarch64-shenandoah-nashorn-jdk8.272_p10.tar.bz2 2838876 BLAKE2B 40d011a11122b2dd19349282468c756a58afbc1ff2a33424d6c4e82cde1f664e3317eb1616533b0d2bc24604c68ffd0b1b92d3271dd633f3a39aad22c84ca781 SHA512 1f50c2c1a6a5d271d63906cb1cf3e87d7b6fe61e92c90cf2974ec40e956be0e8388c2694d189c85ec7072abfd21566671498b8652c2ae9cb2021c6ec4d548f66 +DIST openjdk-corba-8.265_p01.tar.bz2 1034140 BLAKE2B 4b176bf2d9ff461b5682ad7f4b994091acf017df2caabf292dcda9baa34abd7d8016f56f2aff0866508eac565f4079e6f8ba8cbd8167abf1e38cd1fac727e141 SHA512 d92b69ab33176c29c5b7c0a5a21947d5d28dafa32a5933414bea5d16d4e68e1a381b2a73114952d507e7ee76c132e70dc8234175edfd3a086c4775417eaa7d9a +DIST openjdk-corba-8.272_p10.tar.bz2 1033649 BLAKE2B db9d72dabe4b1727dbbe1de01e46f62676c48668e7ec960e10643c19374a2553dee3c2b5b576f85d09b541b570756b20980e1307fc614e4b4bee9789affc650e SHA512 1426b3ce6983429fe6399da77fb102fb5d54ebf65ab83ad4e3c0ee789e33e2a0afc1bbfb7b8f942334ff9b03be0696494919c374ce1b793b179ecc43e2c4384a +DIST openjdk-hotspot-8.265_p01.tar.bz2 8204133 BLAKE2B 3c574da38c9c787e2b40dafa6d7885f9632804a158de26fb4e6f9b5266c955adad8adb1917043eecba97fbb1e53c063da08231e806f5ba8f6c0ef762e88c45b6 SHA512 a3fbc527456aeb8566db24f910e6a64f976e3434fe3717058ee91e66e88d03d77641d342801002f7fa35fb8bb94ce397c95ac2abb86c0616ff25f167878b478b +DIST openjdk-hotspot-8.272_p10.tar.bz2 8206390 BLAKE2B 6822635a29f919696c7a260bf7db20a749ec8598e6c751a8a5e3973c780c17f3ff16a1ed64eb44353be72136fd1ea945dc6620f18d0d876a5773c897bca8705f SHA512 48444d86bacaef503303fb160dca538546e74f7bd71fd34fc2b9faa4e0b1cf7710a6262e9ead161c1b0e8e02e8f96e56a6407d442bbfb01ff8ab835cd840d834 +DIST openjdk-jaxp-8.265_p01.tar.bz2 2735823 BLAKE2B 84a1248b4eb56f4afff62c5dc0f3517c98a6dc5c7e434012c667d59f05a1719372f68594d9d6b13c04e98887913a01b05eefcdadb3a028275555b2a9720502ba SHA512 d0f9da699d4141fa5535abbdf244b4da0fd466b8b5eca3fcaa7cc739326d79a5aa5ffac90988f8bedb39f80d7d4f1feaac3cf5fb1b019203cc96eae9746d9bbc +DIST openjdk-jaxp-8.272_p10.tar.bz2 2692905 BLAKE2B e8fa9e6a7fd4c4ebeba82a3c55b17e4eba9cb03660baa8d478a8cfced1ab9673465faa1a0f690ebbe2634b2cf2741d7321f2c20c748339237eba7b772a2cea14 SHA512 15efb3db0dc28fd375d769037f248b3527e40d2c190fed57ca1d6a09e59aa79465c0e6516d2a122f6c7ee55f7cfeadaa76669884f74fa34b11ccfdfd76e71f6d +DIST openjdk-jaxws-8.265_p01.tar.bz2 2543597 BLAKE2B c83256ab68837cc44d65414343d4bfa7d908926b1a092416cb16551593ed58eb4e28333a6e0417fdad7426ea2b648cffe9e8ef9531f76b7ff9a29851cb27918b SHA512 3a23ae92cbc1f5f47a1f2dffaaef1999acc34125176f67139040f17c3b6fe4cf78ee8c506a73c8fd38ddbb59bfb22c61f2e45ebf8739be7eb7df83cc65303433 +DIST openjdk-jaxws-8.272_p10.tar.bz2 2543199 BLAKE2B 3deae4cef17a5f3d513c1a748a72b50bacb3a0d9b6fb33e5ded121f4d209cc2eb2d59d7b7c182015811426e49eb3e2b463279fa201992c51a5c4a94a184931c9 SHA512 51c0ee76a7e0587ac9c2533d62717f24224ec8bc643df6af2e2fac89cd79cc4f228c7c57427e43f354a594568d16bb5bbf3295af9ce52717339c35b56d6c375a +DIST openjdk-jdk-8.265_p01.tar.bz2 48017864 BLAKE2B b30a573a79a06abfe98e5963521f762e3517bda2bf6849af758285b7ea61cc57d89290ec47538b1082eea99646d3dd6295b98ad65edd62d1b1fd2480c0928a74 SHA512 44ad75bf3b3c6fd6b782ee5383edfa60fb49ac2e40493b18487bcb8a4dac926ffcf5b663adbb8d3267021bd47d5b60652771a88257fbaff77aa2e1f627252418 +DIST openjdk-jdk-8.272_p10.tar.bz2 48273590 BLAKE2B 80717a644df7d9741e5786708c816483f4fea1cfeb02438df17fb4183c0702fe6e3fcbeaefcee84a4f847d5cbafb0a9e80af63b56cf0c6381e0fbeb535d2f147 SHA512 85d20763f6cda66f2eac3b2a1e672e6b828c437386575d16a1c70b27a56c718fc0f44c712e6261eb89f6dd273fd2c21a2c4baa3f562cafa2911a5e2467d7ba13 +DIST openjdk-langtools-8.265_p01.tar.bz2 2399426 BLAKE2B 550a3dcee38b41feaf8c5b6b88f700c52f870ed0c3f25fa23f34bb3f40c333965e911ac126f4b038057472acea2b684917692a6881e46e4aa68b05cd7e4346da SHA512 24d0978a8e6254a96a5399420831d320ea2b2f5b7055ceba030802b85fcb9630031499504ca72305361fa3a386c2ca0a8c38082ee2b15b8569fdf7e815730be6 +DIST openjdk-langtools-8.272_p10.tar.bz2 2399755 BLAKE2B 34ffa30993fa9f42ed2fa96ae658c3c43ecbc54750c3b854cc90efdbd3c4d5abdda012d55c4e81d4ab805d9184b5ea7429fba5927bf3192fcce2a17d9ef11744 SHA512 54698e8a74119f39971024ee165707fa9e27cd0008b59801f05a194362d723ba67269b1f34c181e2a0b1ce9cd36f52cf3ad3ad980c4670f7cfa476a0fa78fec8 +DIST openjdk-nashorn-8.265_p01.tar.bz2 2852124 BLAKE2B 380202d487e62e08784b7fd5cb720c22a2b93d802898b90bf2686bac803fe2bc41d8d4b3d56b45bfb45686a2976d208359818b17b96ccce73fd55b389f4d04af SHA512 12522a06f16f1c63d6b6df525011d01ff91ba05f06ee7ade239faa31527ca9aaa9fa609c1ad261f0ae8d75cc195fe1af66e026815bdc0669fb6a286a49f86a5e +DIST openjdk-nashorn-8.272_p10.tar.bz2 2850055 BLAKE2B 2348c0f45916101d9fcb4aaa283d2c03be5b28decf12248ec930b9d726e346d0884dd64a22627e2f2fd8260c8755d0bc46a1cf6fecf691a30a7f4b54f6a293a9 SHA512 754fcdca5e0ce523d73cbdfbdcaaa13677ed8c2b72c5ae04ff1cc77fd73469f3366e51add68b13bac3c43800fecfcbb93bf4fcf7469258c4adc57e414b105ef5 diff --git a/dev-java/openjdk/files/bootcycle_jobs.patch b/dev-java/openjdk/files/bootcycle_jobs.patch new file mode 100644 index 0000000..9dfae98 --- /dev/null +++ b/dev-java/openjdk/files/bootcycle_jobs.patch @@ -0,0 +1,26 @@ +diff -r 21b063d75b3e make/Init.gmk +--- jdk9/make/Init.gmk Thu Mar 16 16:34:33 2017 +0000 ++++ jdk9/make/Init.gmk Tue Apr 04 13:49:37 2017 +0100 +@@ -303,7 +303,8 @@ + $(call PrepareSmartJavac) + ( cd $(TOPDIR) && \ + $(NICE) $(MAKE) $(MAKE_ARGS) $(OUTPUT_SYNC_FLAG) \ +- -j $(JOBS) -f make/Main.gmk $(USER_MAKE_VARS) \ ++ $(if $(DISABLE_JOBS),, -j $(JOBS)) \ ++ -f make/Main.gmk $(USER_MAKE_VARS) \ + $(PARALLEL_TARGETS) $(COMPARE_BUILD_MAKE) $(BUILD_LOG_PIPE) || \ + ( exitcode=$$? && \ + $(PRINTF) "\nERROR: Build failed for $(TARGET_DESCRIPTION) (exit code $$exitcode) \n" \ +diff -r 21b063d75b3e make/Main.gmk +--- jdk9/make/Main.gmk Thu Mar 16 16:34:33 2017 +0000 ++++ jdk9/make/Main.gmk Tue Apr 04 13:49:37 2017 +0100 +@@ -320,7 +320,7 @@ + ifneq ($(COMPILE_TYPE), cross) + $(call LogWarn, Boot cycle build step 2: Building a new JDK image using previously built image) + +$(MAKE) $(MAKE_ARGS) -f $(SRC_ROOT)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \ +- JOBS= SPEC=$(dir $(SPEC))bootcycle-spec.gmk main ++ DISABLE_JOBS=true SPEC=$(dir $(SPEC))bootcycle-spec.gmk main + else + $(call LogWarn, Boot cycle build disabled when cross compiling) + endif + diff --git a/dev-java/openjdk/files/musl/11/aarch64.patch b/dev-java/openjdk/files/musl/11/aarch64.patch new file mode 100644 index 0000000..c0fa972 --- /dev/null +++ b/dev-java/openjdk/files/musl/11/aarch64.patch @@ -0,0 +1,15 @@ +Author: Simon Frankenberger <[email protected]> +Upstream: no +Reason: This file is not present when building on aarch64 alpine. + Furthermore, the build runs just fine without it. + +--- old/src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp ++++ new/src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp +@@ -74,7 +74,6 @@ + # include <pwd.h> + # include <poll.h> + # include <ucontext.h> +-# include <fpu_control.h> + + #define REG_FP 29 + #define REG_LR 30 diff --git a/dev-java/openjdk/files/musl/11/build.patch b/dev-java/openjdk/files/musl/11/build.patch new file mode 100644 index 0000000..58bd60d --- /dev/null +++ b/dev-java/openjdk/files/musl/11/build.patch @@ -0,0 +1,545 @@ +Author: The portola team at https://openjdk.java.net/projects/portola/ + With modifications by Simon Frankenberger <[email protected]> +Upstream: somewhat +Reason: This giant patch makes it possible to compile openjdk with musl libc. + The base was taken from a diff with the portola project and adjusted + for latest musl libc. + +--- old/make/ReleaseFile.gmk ++++ new/make/ReleaseFile.gmk +@@ -53,6 +53,7 @@ + $(call info-file-item, "JAVA_VERSION_DATE", "$(VERSION_DATE)") + $(call info-file-item, "OS_NAME", "$(RELEASE_FILE_OS_NAME)") + $(call info-file-item, "OS_ARCH", "$(RELEASE_FILE_OS_ARCH)") ++ $(call info-file-item, "LIBC", "musl") + endef + + # Param 1 - The file containing the MODULES list +--- old/make/autoconf/build-aux/config.guess ++++ new/make/autoconf/build-aux/config.guess +@@ -30,6 +30,17 @@ + DIR=`dirname $0` + OUT=`. $DIR/autoconf-config.guess` + ++# config.guess doesn't identify systems running the musl C library, and will ++# instead return a string with a -gnu suffix. This block detects musl and ++# modifies the string to have a -musl suffix instead. ++echo $OUT | grep -- -linux- > /dev/null 2> /dev/null ++if test $? = 0; then ++ ldd_version=`ldd --version 2>&1 | head -1 | cut -f1 -d' '` ++ if [ x"${ldd_version}" = x"musl" ]; then ++ OUT=`echo $OUT | sed 's/-gnu/-musl/'` ++ fi ++fi ++ + # Test and fix solaris on x86_64 + echo $OUT | grep i386-pc-solaris > /dev/null 2> /dev/null + if test $? = 0; then +--- old/make/hotspot/lib/CompileJvm.gmk ++++ new/make/hotspot/lib/CompileJvm.gmk +@@ -79,6 +79,7 @@ + -DHOTSPOT_BUILD_USER='"$(USERNAME)"' \ + -DHOTSPOT_VM_DISTRO='"$(HOTSPOT_VM_DISTRO)"' \ + -DCPU='"$(OPENJDK_TARGET_CPU_VM_VERSION)"' \ ++ -DLIBC='"musl"' \ + # + + ################################################################################ +--- old/make/lib/CoreLibraries.gmk ++++ new/make/lib/CoreLibraries.gmk +@@ -219,6 +219,7 @@ + endif + + LIBJLI_CFLAGS += $(LIBZ_CFLAGS) ++LIBJLI_CFLAGS += -DLIBC=\"musl\" + + ifneq ($(USE_EXTERNAL_LIBZ), true) + LIBJLI_EXTRA_FILES += \ +--- old/src/hotspot/os/linux/os_linux.cpp ++++ new/src/hotspot/os/linux/os_linux.cpp +@@ -101,7 +101,6 @@ + # include <string.h> + # include <syscall.h> + # include <sys/sysinfo.h> +-# include <gnu/libc-version.h> + # include <sys/ipc.h> + # include <sys/shm.h> + # include <link.h> +@@ -594,6 +593,11 @@ + // detecting pthread library + + void os::Linux::libpthread_init() { ++#if !defined(__GLIBC__) && !defined(__UCLIBC__) ++ // Hard code Alpine Linux supported musl compatible settings ++ os::Linux::set_glibc_version("glibc 2.9"); ++ os::Linux::set_libpthread_version("NPTL"); ++#else + // Save glibc and pthread version strings. + #if !defined(_CS_GNU_LIBC_VERSION) || \ + !defined(_CS_GNU_LIBPTHREAD_VERSION) +@@ -611,6 +615,7 @@ + str = (char *)malloc(n, mtInternal); + confstr(_CS_GNU_LIBPTHREAD_VERSION, str, n); + os::Linux::set_libpthread_version(str); ++#endif + } + + ///////////////////////////////////////////////////////////////////////////// +@@ -3053,20 +3058,36 @@ + extern "C" JNIEXPORT void numa_warn(int number, char *where, ...) { } + extern "C" JNIEXPORT void numa_error(char *where) { } + ++static void* dlvsym_if_available(void* handle, const char* name, const char* version) { ++ typedef void* (*dlvsym_func_type)(void* handle, const char* name, const char* version); ++ static dlvsym_func_type dlvsym_func; ++ static bool initialized = false; ++ ++ if (!initialized) { ++ dlvsym_func = (dlvsym_func_type)dlsym(RTLD_NEXT, "dlvsym"); ++ initialized = true; ++ } ++ ++ if (dlvsym_func != NULL) { ++ void *f = dlvsym_func(handle, name, version); ++ if (f != NULL) { ++ return f; ++ } ++ } ++ ++ return dlsym(handle, name); ++} ++ + // Handle request to load libnuma symbol version 1.1 (API v1). If it fails + // load symbol from base version instead. + void* os::Linux::libnuma_dlsym(void* handle, const char *name) { +- void *f = dlvsym(handle, name, "libnuma_1.1"); +- if (f == NULL) { +- f = dlsym(handle, name); +- } +- return f; ++ return dlvsym_if_available(handle, name, "libnuma_1.1"); + } + + // Handle request to load libnuma symbol version 1.2 (API v2) only. + // Return NULL if the symbol is not defined in this particular version. + void* os::Linux::libnuma_v2_dlsym(void* handle, const char* name) { +- return dlvsym(handle, name, "libnuma_1.2"); ++ return dlvsym_if_available(handle, name, "libnuma_1.2"); + } + + bool os::Linux::libnuma_init() { +--- old/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp ++++ new/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp +@@ -75,9 +75,6 @@ + # include <pwd.h> + # include <poll.h> + # include <ucontext.h> +-#ifndef AMD64 +-# include <fpu_control.h> +-#endif + + #ifdef AMD64 + #define REG_SP REG_RSP +--- old/src/hotspot/share/gc/shared/genCollectedHeap.cpp ++++ new/src/hotspot/share/gc/shared/genCollectedHeap.cpp +@@ -1144,7 +1144,7 @@ + static ScratchBlock *removeSmallestScratch(ScratchBlock **prev_ptr) { + bool first = true; + size_t min_size = 0; // "first" makes this conceptually infinite. +- ScratchBlock **smallest_ptr, *smallest; ++ ScratchBlock **smallest_ptr = NULL, *smallest; + ScratchBlock *cur = *prev_ptr; + while (cur) { + assert(*prev_ptr == cur, "just checking"); +--- old/src/hotspot/share/runtime/vm_version.cpp ++++ new/src/hotspot/share/runtime/vm_version.cpp +@@ -284,7 +284,7 @@ + #endif + + #define INTERNAL_VERSION_SUFFIX VM_RELEASE ")" \ +- " for " OS "-" CPU FLOAT_ARCH_STR \ ++ " for " OS "-" CPU FLOAT_ARCH_STR LIBC \ + " JRE (" VERSION_STRING "), built on " __DATE__ " " __TIME__ \ + " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER + +--- old/src/hotspot/share/utilities/globalDefinitions_gcc.hpp ++++ new/src/hotspot/share/utilities/globalDefinitions_gcc.hpp +@@ -204,7 +204,7 @@ + #elif defined(__APPLE__) + inline int g_isnan(double f) { return isnan(f); } + #elif defined(LINUX) || defined(_ALLBSD_SOURCE) +-inline int g_isnan(float f) { return isnanf(f); } ++inline int g_isnan(float f) { return isnan(f); } + inline int g_isnan(double f) { return isnan(f); } + #else + #error "missing platform-specific definition here" +--- old/src/java.base/linux/native/libnet/linux_close.c ++++ new/src/java.base/linux/native/libnet/linux_close.c +@@ -60,7 +60,7 @@ + /* + * Signal to unblock thread + */ +-static int sigWakeup = (__SIGRTMAX - 2); ++static int sigWakeup; + + /* + * fdTable holds one entry per file descriptor, up to a certain +@@ -149,6 +149,7 @@ + /* + * Setup the signal handler + */ ++ sigWakeup = SIGRTMAX - 2; + sa.sa_handler = sig_wakeup; + sa.sa_flags = 0; + sigemptyset(&sa.sa_mask); +--- old/src/java.base/unix/native/libjava/childproc.c ++++ new/src/java.base/unix/native/libjava/childproc.c +@@ -237,7 +237,13 @@ + { + if (envp == NULL || (char **) envp == environ) { + execvp(file, (char **) argv); +- return; ++ // ENOEXEC indicates that the file header was not recognized. The musl C ++ // library does not implement the fallback to /bin/sh for that case, so fall ++ // through to the code below which implements that fallback using ++ // execve_with_shell_fallback. ++ if (errno != ENOEXEC) { ++ return; ++ } + } + + if (*file == '\0') { +--- old/src/java.base/unix/native/libjava/jdk_util_md.h ++++ new/src/java.base/unix/native/libjava/jdk_util_md.h +@@ -37,7 +37,7 @@ + #define ISNAND(d) isnan(d) + #elif defined(__linux__) || defined(_ALLBSD_SOURCE) + #include <math.h> +-#define ISNANF(f) isnanf(f) ++#define ISNANF(f) isnan(f) + #define ISNAND(d) isnan(d) + #elif defined(_AIX) + #include <math.h> +--- old/src/java.base/unix/native/libjli/java_md_solinux.c ++++ new/src/java.base/unix/native/libjli/java_md_solinux.c +@@ -236,6 +236,39 @@ + char *dmllp = NULL; + char *p; /* a utility pointer */ + ++#ifdef __linux ++#ifndef LIBC ++#error "LIBC not set" ++#endif ++ ++ if (strcmp(LIBC, "musl") == 0) { ++ /* ++ * The musl library loader requires LD_LIBRARY_PATH to be set in ++ * order to correctly resolve the dependency libjava.so has on libjvm.so. ++ * ++ * Specifically, it differs from glibc in the sense that even if ++ * libjvm.so has already been loaded it will not be considered a ++ * candidate for resolving the dependency unless the *full* path ++ * of the already loaded library matches the dependency being loaded. ++ * ++ * libjvm.so is being loaded by the launcher using a long path to ++ * dlopen, not just the basename of the library. Typically this ++ * is something like "../lib/server/libjvm.so". However, if/when ++ * libjvm.so later tries to dlopen libjava.so (which it does in ++ * order to get access to a few functions implemented in ++ * libjava.so) the musl loader will, as part of loading ++ * dependent libraries, try to load libjvm.so using only its ++ * basename "libjvm.so". Since this does not match the longer ++ * path path it was first loaded with, the already loaded ++ * library is not considered a candidate, and the loader will ++ * instead look for libjvm.so elsewhere. If it's not in ++ * LD_LIBRARY_PATH the dependency load will fail, and libjava.so ++ * will therefore fail as well. ++ */ ++ return JNI_TRUE; ++ } ++#endif ++ + #ifdef AIX + /* We always have to set the LIBPATH on AIX because ld doesn't support $ORIGIN. */ + return JNI_TRUE; +--- old/src/java.base/unix/native/libnio/ch/NativeThread.c ++++ new/src/java.base/unix/native/libnio/ch/NativeThread.c +@@ -36,7 +36,7 @@ + #ifdef __linux__ + #include <pthread.h> + /* Also defined in net/linux_close.c */ +- #define INTERRUPT_SIGNAL (__SIGRTMAX - 2) ++ #define INTERRUPT_SIGNAL (SIGRTMAX - 2) + #elif _AIX + #include <pthread.h> + /* Also defined in net/aix_close.c */ +--- old/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c ++++ new/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c +@@ -27,9 +27,6 @@ + #include <X11/Xutil.h> + #include <X11/Xos.h> + #include <X11/Xatom.h> +-#ifdef __linux__ +-#include <execinfo.h> +-#endif + + #include <jvm.h> + #include <jni.h> +@@ -790,26 +787,6 @@ + } + return ret; + } +- +-#ifdef __linux__ +-void print_stack(void) +-{ +- void *array[10]; +- size_t size; +- char **strings; +- size_t i; +- +- size = backtrace (array, 10); +- strings = backtrace_symbols (array, size); +- +- fprintf (stderr, "Obtained %zd stack frames.\n", size); +- +- for (i = 0; i < size; i++) +- fprintf (stderr, "%s\n", strings[i]); +- +- free (strings); +-} +-#endif + + Window get_xawt_root_shell(JNIEnv *env) { + static jclass classXRootWindow = NULL; +--- old/src/jdk.jdwp.agent/share/native/libjdwp/util.h ++++ new/src/jdk.jdwp.agent/share/native/libjdwp/util.h +@@ -35,15 +35,15 @@ + #ifdef DEBUG + /* Just to make sure these interfaces are not used here. */ + #undef free +- #define free(p) Do not use this interface. ++ #define free do_not_use_this_interface_free + #undef malloc +- #define malloc(p) Do not use this interface. ++ #define malloc do_not_use_this_interface_malloc + #undef calloc +- #define calloc(p) Do not use this interface. ++ #define calloc do_not_use_this_interface_calloc + #undef realloc +- #define realloc(p) Do not use this interface. ++ #define realloc do_not_use_this_interface_realloc + #undef strdup +- #define strdup(p) Do not use this interface. ++ #define strdup do_not_use_this_interface_strdup + #endif + + #include "log_messages.h" +--- old/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c ++++ new/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c +@@ -33,6 +33,7 @@ + + #include <assert.h> + #include <jni.h> ++#include <jvm.h> + #include <alloca.h> + #include <signal.h> + #include <string.h> +@@ -91,6 +92,20 @@ + } + } + ++int get_java_stacksize () { ++ size_t stacksize; ++ pthread_attr_t attr; ++ JDK1_1InitArgs jdk_args; ++ ++ jdk_args.version = JNI_VERSION_1_1; ++ JNI_GetDefaultJavaVMInitArgs(&jdk_args); ++ if (jdk_args.javaStackSize <= 0) { ++ fprintf(stderr, "Test ERROR. Can't get a valid value for the default stacksize.\n"); ++ exit(7); ++ } ++ return jdk_args.javaStackSize; ++} ++ + void *run_java_overflow (void *p) { + JNIEnv *env; + jclass class_id; +@@ -258,13 +273,19 @@ + exit(7); + } + ++ int stack_size = get_java_stacksize(); + pthread_t thr; ++ pthread_attr_t thread_attr; + ++ pthread_attr_init(&thread_attr); ++ pthread_attr_setstacksize(&thread_attr, stack_size); ++ + if (argc > 1 && strcmp(argv[1], "test_java_overflow") == 0) { + printf("\nTesting JAVA_OVERFLOW\n"); + + printf("Testing stack guard page behaviour for other thread\n"); +- pthread_create (&thr, NULL, run_java_overflow, NULL); ++ ++ pthread_create (&thr, &thread_attr, run_java_overflow, NULL); + pthread_join (thr, NULL); + + printf("Testing stack guard page behaviour for initial thread\n"); +@@ -277,7 +298,7 @@ + printf("\nTesting NATIVE_OVERFLOW\n"); + + printf("Testing stack guard page behaviour for other thread\n"); +- pthread_create (&thr, NULL, run_native_overflow, NULL); ++ pthread_create (&thr, &thread_attr, run_native_overflow, NULL); + pthread_join (thr, NULL); + + printf("Testing stack guard page behaviour for initial thread\n"); +--- old/test/jdk/java/lang/ProcessBuilder/Basic.java ++++ new/test/jdk/java/lang/ProcessBuilder/Basic.java +@@ -396,8 +396,8 @@ + if (failed != 0) throw new Error("null PATH"); + } else if (action.equals("PATH search algorithm")) { + equal(System.getenv("PATH"), "dir1:dir2:"); +- check(new File("/bin/true").exists()); +- check(new File("/bin/false").exists()); ++ check(new File(TrueExe.path()).exists()); ++ check(new File(FalseExe.path()).exists()); + String[] cmd = {"prog"}; + ProcessBuilder pb1 = new ProcessBuilder(cmd); + ProcessBuilder pb2 = new ProcessBuilder(cmd); +@@ -438,13 +438,13 @@ + checkPermissionDenied(pb); + + // continue searching if EACCES +- copy("/bin/true", "dir2/prog"); ++ copy(TrueExe.path(), "dir2/prog"); + equal(run(pb).exitValue(), True.exitValue()); + new File("dir1/prog").delete(); + new File("dir2/prog").delete(); + + new File("dir2/prog").mkdirs(); +- copy("/bin/true", "dir1/prog"); ++ copy(TrueExe.path(), "dir1/prog"); + equal(run(pb).exitValue(), True.exitValue()); + + // Check empty PATH component means current directory. +@@ -460,10 +460,10 @@ + pb.command(command); + File prog = new File("./prog"); + // "Normal" binaries +- copy("/bin/true", "./prog"); ++ copy(TrueExe.path(), "./prog"); + equal(run(pb).exitValue(), + True.exitValue()); +- copy("/bin/false", "./prog"); ++ copy(FalseExe.path(), "./prog"); + equal(run(pb).exitValue(), + False.exitValue()); + prog.delete(); +@@ -518,12 +518,12 @@ + new File("dir2/prog").delete(); + new File("prog").delete(); + new File("dir3").mkdirs(); +- copy("/bin/true", "dir1/prog"); +- copy("/bin/false", "dir3/prog"); ++ copy(TrueExe.path(), "dir1/prog"); ++ copy(FalseExe.path(), "dir3/prog"); + pb.environment().put("PATH","dir3"); + equal(run(pb).exitValue(), True.exitValue()); +- copy("/bin/true", "dir3/prog"); +- copy("/bin/false", "dir1/prog"); ++ copy(TrueExe.path(), "dir3/prog"); ++ copy(FalseExe.path(), "dir1/prog"); + equal(run(pb).exitValue(), False.exitValue()); + + } finally { +@@ -620,6 +620,13 @@ + new File("/bin/false").exists()); + } + ++ static class BusyBox { ++ public static boolean is() { return is; } ++ private static final boolean is = ++ (! Windows.is() && ++ new File("/bin/busybox").exists()); ++ } ++ + static class UnicodeOS { + public static boolean is() { return is; } + private static final String osName = System.getProperty("os.name"); +@@ -658,6 +665,45 @@ + } + } + ++ // On alpine linux, /bin/true and /bin/false are just links to /bin/busybox. ++ // Some tests copy /bin/true and /bin/false to files with a different filename. ++ // However, copying the busbox executable into a file with a different name ++ // won't result in the expected return codes. As workaround, we create ++ // executable files that can be copied and produce the exepected return ++ // values. We use this workaround, if we find the busybox executable. ++ ++ private static class TrueExe { ++ public static String path() { return path; } ++ private static final String path = path0(); ++ private static String path0(){ ++ if (!BusyBox.is()) { ++ return "/bin/true"; ++ } ++ else { ++ File trueExe = new File("true"); ++ setFileContents(trueExe, "#!/bin/true\n"); ++ trueExe.setExecutable(true); ++ return trueExe.getAbsolutePath(); ++ } ++ } ++ } ++ ++ private static class FalseExe { ++ public static String path() { return path; } ++ private static final String path = path0(); ++ private static String path0(){ ++ if (!BusyBox.is()) { ++ return "/bin/false"; ++ } ++ else { ++ File falseExe = new File("false"); ++ setFileContents(falseExe, "#!/bin/false\n"); ++ falseExe.setExecutable(true); ++ return falseExe.getAbsolutePath(); ++ } ++ } ++ } ++ + static class EnglishUnix { + private static final Boolean is = + (! Windows.is() && isEnglish("LANG") && isEnglish("LC_ALL")); +@@ -1961,7 +2007,7 @@ + //---------------------------------------------------------------- + try { + new File("suBdiR").mkdirs(); +- copy("/bin/true", "suBdiR/unliKely"); ++ copy(TrueExe.path(), "suBdiR/unliKely"); + final ProcessBuilder pb = + new ProcessBuilder(new String[]{"unliKely"}); + pb.environment().put("PATH", "suBdiR"); +--- old/test/jdk/java/lang/ProcessHandle/InfoTest.java ++++ new/test/jdk/java/lang/ProcessHandle/InfoTest.java +@@ -298,7 +298,14 @@ + } + if (info.command().isPresent()) { + String command = info.command().get(); +- String expected = Platform.isWindows() ? "sleep.exe" : "sleep"; ++ String expected = "sleep"; ++ if (Platform.isWindows()) { ++ expected = "sleep.exe"; ++ } else if (new File("/bin/busybox").exists()) { ++ // With busybox sleep is just a sym link to busybox. ++ // The busbox executable is seen as ProcessHandle.Info command. ++ expected = "busybox"; ++ } + Assert.assertTrue(command.endsWith(expected), "Command: expected: \'" + + expected + "\', actual: " + command); + + diff --git a/dev-java/openjdk/files/musl/11/fix-bootjdk-check.patch b/dev-java/openjdk/files/musl/11/fix-bootjdk-check.patch new file mode 100644 index 0000000..3549f3a --- /dev/null +++ b/dev-java/openjdk/files/musl/11/fix-bootjdk-check.patch @@ -0,0 +1,18 @@ +Author: Simon Frankenberger <[email protected]> +Upstream: no +Reason: The alpine builders print out a warning about sched_getaffinity() not working. + This causes the version check for the boot jdk to fail. + Patch the command to determine the version number to ignore any errors and warnings. + +--- old/make/autoconf/boot-jdk.m4 ++++ new/make/autoconf/boot-jdk.m4 +@@ -74,7 +74,7 @@ + BOOT_JDK_FOUND=no + else + # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version? +- BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $HEAD -n 1` ++ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $GREP version | $HEAD -n 1` + + # Extra M4 quote needed to protect [] in grep expression. + [FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION \ + diff --git a/dev-java/openjdk/files/musl/11/ppc64le.patch b/dev-java/openjdk/files/musl/11/ppc64le.patch new file mode 100644 index 0000000..c26755b --- /dev/null +++ b/dev-java/openjdk/files/musl/11/ppc64le.patch @@ -0,0 +1,226 @@ +Author: Simon Frankenberger <[email protected]> +Upstream: no +Reason: Musl libc offers a different structure for context_t*, + so we need a patch to access the structure fields correctly. + +--- old/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ++++ new/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp +@@ -1290,7 +1290,11 @@ + // the safepoing polling page. + ucontext_t* uc = (ucontext_t*) ucontext; + // Set polling address. ++#if defined(__GLIBC__) || defined(__UCLIBC__) + address addr = (address)uc->uc_mcontext.regs->gpr[ra] + (ssize_t)ds; ++#else // Musl ++ address addr = (address)uc->uc_mcontext.gp_regs[ra] + (ssize_t) ds; ++#endif + if (polling_address_ptr != NULL) { + *polling_address_ptr = addr; + } +@@ -1311,15 +1315,24 @@ + int rb = inv_rb_field(instruction); + + // look up content of ra and rb in ucontext ++#if defined(__GLIBC__) || defined(__UCLIBC__) + address ra_val=(address)uc->uc_mcontext.regs->gpr[ra]; + long rb_val=(long)uc->uc_mcontext.regs->gpr[rb]; ++#else // Musl ++ address ra_val=(address)uc->uc_mcontext.gp_regs[ra]; ++ long rb_val=(long)uc->uc_mcontext.gp_regs[rb]; ++#endif + return os::is_memory_serialize_page(thread, ra_val+rb_val); + } else if (is_stw(instruction) || is_stwu(instruction)) { + int ra = inv_ra_field(instruction); + int d1 = inv_d1_field(instruction); + + // look up content of ra in ucontext ++#if defined(__GLIBC__) || defined(__UCLIBC__) + address ra_val=(address)uc->uc_mcontext.regs->gpr[ra]; ++#else // Musl ++ address ra_val=(address)uc->uc_mcontext.gp_regs[ra]; ++#endif + return os::is_memory_serialize_page(thread, ra_val+d1); + } else { + return false; +@@ -1382,11 +1395,20 @@ + || (is_stdu(instruction) && rs == 1)) { + int ds = inv_ds_field(instruction); + // return banged address ++#if defined(__GLIBC__) || defined(__UCLIBC__) + return ds+(address)uc->uc_mcontext.regs->gpr[ra]; ++#else // Musl ++ return ds+(address)uc->uc_mcontext.gp_regs[ra]; ++#endif + } else if (is_stdux(instruction) && rs == 1) { + int rb = inv_rb_field(instruction); ++#if defined(__GLIBC__) || defined(__UCLIBC__) + address sp = (address)uc->uc_mcontext.regs->gpr[1]; + long rb_val = (long)uc->uc_mcontext.regs->gpr[rb]; ++#else // Musl ++ address sp = (address)uc->uc_mcontext.gp_regs[1]; ++ long rb_val = (long)uc->uc_mcontext.gp_regs[rb]; ++#endif + return ra != 1 || rb_val >= 0 ? NULL // not a stack bang + : sp + rb_val; // banged address + } +--- old/src/hotspot/cpu/ppc/vm_version_ppc.cpp ++++ new/src/hotspot/cpu/ppc/vm_version_ppc.cpp +@@ -893,7 +893,7 @@ + unsigned long auxv = getauxval(AT_HWCAP2); + + if (auxv & PPC_FEATURE2_HTM_NOSC) { +- if (auxv & PPC_FEATURE2_HAS_HTM) { ++ if (auxv & PPC_FEATURE2_HTM) { + // TM on POWER8 and POWER9 in compat mode (VM) is supported by the JVM. + // TM on POWER9 DD2.1 NV (baremetal) is not supported by the JVM (TM on + // POWER9 DD2.1 NV has a few issues that need a couple of firmware +--- old/src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp ++++ new/src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp +@@ -108,24 +108,42 @@ + // - if uc was filled by getcontext(), it is undefined - getcontext() does not fill + // it because the volatile registers are not needed to make setcontext() work. + // Hopefully it was zero'd out beforehand. ++#if defined(__GLIBC__) || defined(__UCLIBC__) + guarantee(uc->uc_mcontext.regs != NULL, "only use ucontext_get_pc in sigaction context"); + return (address)uc->uc_mcontext.regs->nip; ++#else // Musl ++ guarantee(uc->uc_mcontext.gp_regs != NULL, "only use ucontext_get_pc in sigaction context"); ++ return (address)uc->uc_mcontext.gp_regs[32]; ++#endif + } + + // modify PC in ucontext. + // Note: Only use this for an ucontext handed down to a signal handler. See comment + // in ucontext_get_pc. + void os::Linux::ucontext_set_pc(ucontext_t * uc, address pc) { ++#if defined(__GLIBC__) || defined(__UCLIBC__) + guarantee(uc->uc_mcontext.regs != NULL, "only use ucontext_set_pc in sigaction context"); + uc->uc_mcontext.regs->nip = (unsigned long)pc; ++#else // Musl ++ guarantee(uc->uc_mcontext.gp_regs != NULL, "only use ucontext_set_pc in sigaction context"); ++ uc->uc_mcontext.gp_regs[32] = (unsigned long)pc; ++#endif + } + + static address ucontext_get_lr(const ucontext_t * uc) { ++#if defined(__GLIBC__) || defined(__UCLIBC__) + return (address)uc->uc_mcontext.regs->link; ++#else // Musl ++ return (address)uc->uc_mcontext.gp_regs[36]; ++#endif + } + + intptr_t* os::Linux::ucontext_get_sp(const ucontext_t * uc) { ++#if defined(__GLIBC__) || defined(__UCLIBC__) + return (intptr_t*)uc->uc_mcontext.regs->gpr[1/*REG_SP*/]; ++#else // Musl ++ return (intptr_t*)uc->uc_mcontext.gp_regs[1/*REG_SP*/]; ++#endif + } + + intptr_t* os::Linux::ucontext_get_fp(const ucontext_t * uc) { +@@ -133,7 +151,11 @@ + } + + static unsigned long ucontext_get_trap(const ucontext_t * uc) { ++#if defined(__GLIBC__) || defined(__UCLIBC__) + return uc->uc_mcontext.regs->trap; ++#else // Musl ++ return uc->uc_mcontext.gp_regs[40]; ++#endif + } + + ExtendedPC os::fetch_frame_from_context(const void* ucVoid, +@@ -259,7 +281,13 @@ + // 3.2.1 "Machine State Register"), however note that ISA notation for bit + // numbering is MSB 0, so for normal bit numbering (LSB 0) they come to be + // bits 33 and 34. It's not related to endianness, just a notation matter. ++#if defined(__GLIBC__) || defined(__UCLIBC__) + if (second_uc->uc_mcontext.regs->msr & 0x600000000) { ++#else // Musl ++ // why 33? ++ // see comment for glibc NGREG: "r0-r31, nip, msr, lr, etc." ++ if (second_uc->uc_mcontext.gp_regs[33] & 0x600000000) { ++#endif + if (TraceTraps) { + tty->print_cr("caught signal in transaction, " + "ignoring to jump to abort handler"); +@@ -586,6 +614,7 @@ + const ucontext_t* uc = (const ucontext_t*)context; + + st->print_cr("Registers:"); ++#if defined(__GLIBC__) || defined(__UCLIBC__) + st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.regs->nip); + st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.regs->link); + st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.regs->ctr); +@@ -594,8 +623,18 @@ + st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.regs->gpr[i]); + if (i % 3 == 2) st->cr(); + } ++#else // Musl ++ st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[32]); ++ st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[36]); ++ st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[35]); + st->cr(); ++ for (int i = 0; i < 32; i++) { ++ st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.gp_regs[i]); ++ if (i % 3 == 2) st->cr(); ++ } ++#endif + st->cr(); ++ st->cr(); + + intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc); + st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", p2i(sp)); +@@ -618,12 +657,22 @@ + st->print_cr("Register to memory mapping:"); + st->cr(); + ++#if defined(__GLIBC__) || defined(__UCLIBC__) + st->print("pc ="); print_location(st, (intptr_t)uc->uc_mcontext.regs->nip); + st->print("lr ="); print_location(st, (intptr_t)uc->uc_mcontext.regs->link); + st->print("ctr ="); print_location(st, (intptr_t)uc->uc_mcontext.regs->ctr); ++#else // Musl ++ st->print("pc ="); print_location(st, (intptr_t)uc->uc_mcontext.gp_regs[32]); ++ st->print("lr ="); print_location(st, (intptr_t)uc->uc_mcontext.gp_regs[36]); ++ st->print("ctr ="); print_location(st, (intptr_t)uc->uc_mcontext.gp_regs[35]); ++#endif + for (int i = 0; i < 32; i++) { + st->print("r%-2d=", i); ++#if defined(__GLIBC__) || defined(__UCLIBC__) + print_location(st, uc->uc_mcontext.regs->gpr[i]); ++#else // Musl ++ print_location(st, uc->uc_mcontext.gp_regs[i]); ++#endif + } + st->cr(); + } +--- old/src/hotspot/os_cpu/linux_ppc/thread_linux_ppc.cpp ++++ new/src/hotspot/os_cpu/linux_ppc/thread_linux_ppc.cpp +@@ -56,8 +56,13 @@ + // if we were running Java code when SIGPROF came in. + if (isInJava) { + ucontext_t* uc = (ucontext_t*) ucontext; ++#if defined(__GLIBC__) || defined(__UCLIBC__) + frame ret_frame((intptr_t*)uc->uc_mcontext.regs->gpr[1/*REG_SP*/], + (address)uc->uc_mcontext.regs->nip); ++#else // Musl ++ frame ret_frame((intptr_t*)uc->uc_mcontext.gp_regs[1/*REG_SP*/], ++ (address)uc->uc_mcontext.gp_regs[32]); ++#endif + + if (ret_frame.pc() == NULL) { + // ucontext wasn't useful +@@ -70,7 +75,11 @@ + if (m == NULL || !m->is_valid_method()) return false; + if (!Metaspace::contains((const void*)m->constMethod())) return false; + ++#if defined(__GLIBC__) || defined(__UCLIBC__) + uint64_t reg_bcp = uc->uc_mcontext.regs->gpr[14/*R14_bcp*/]; ++#else // Musl ++ uint64_t reg_bcp = uc->uc_mcontext.gp_regs[14/*R14_bcp*/]; ++#endif + uint64_t istate_bcp = istate->bcp; + uint64_t code_start = (uint64_t)(m->code_base()); + uint64_t code_end = (uint64_t)(m->code_base() + m->code_size()); + diff --git a/dev-java/openjdk/files/musl/8/0001_musl_hotspot.patch b/dev-java/openjdk/files/musl/8/0001_musl_hotspot.patch new file mode 100644 index 0000000..65bc133 --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0001_musl_hotspot.patch @@ -0,0 +1,116 @@ +diff -Naur openjdk-8.265_p01/hotspot/src/os/linux/vm/jvm_linux.cpp openjdk-8.265_p01-copy/hotspot/src/os/linux/vm/jvm_linux.cpp +--- openjdk-8.265_p01/hotspot/src/os/linux/vm/jvm_linux.cpp 2020-10-11 15:53:08.468010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/src/os/linux/vm/jvm_linux.cpp 2020-10-11 20:42:02.152018764 -0400 +@@ -154,7 +154,9 @@ + #ifdef SIGSTKFLT + "STKFLT", SIGSTKFLT, /* Stack fault. */ + #endif ++#ifdef SIGCLD + "CLD", SIGCLD, /* Same as SIGCHLD (System V). */ ++#endif + "CHLD", SIGCHLD, /* Child status has changed (POSIX). */ + "CONT", SIGCONT, /* Continue (POSIX). */ + "STOP", SIGSTOP, /* Stop, unblockable (POSIX). */ +diff -Naur openjdk-8.265_p01/hotspot/src/os/linux/vm/os_linux.cpp openjdk-8.265_p01-copy/hotspot/src/os/linux/vm/os_linux.cpp +--- openjdk-8.265_p01/hotspot/src/os/linux/vm/os_linux.cpp 2020-10-11 15:53:08.468010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/src/os/linux/vm/os_linux.cpp 2020-10-11 20:43:52.252018818 -0400 +@@ -95,7 +95,6 @@ + # include <string.h> + # include <syscall.h> + # include <sys/sysinfo.h> +-# include <gnu/libc-version.h> + # include <sys/ipc.h> + # include <sys/shm.h> + # include <link.h> +@@ -581,6 +580,13 @@ + // detecting pthread library + + void os::Linux::libpthread_init() { ++#if 1 ++ // Hard code Alpine Linux supported musl compatible settings ++ os::Linux::set_glibc_version("glibc 2.9"); ++ os::Linux::set_libpthread_version("NPTL"); ++ os::Linux::set_is_NPTL(); ++ os::Linux::set_is_floating_stack(); ++#else + // Save glibc and pthread version strings. Note that _CS_GNU_LIBC_VERSION + // and _CS_GNU_LIBPTHREAD_VERSION are supported in glibc >= 2.3.2. Use a + // generic name for earlier versions. +@@ -639,6 +645,7 @@ + if (os::Linux::is_NPTL() || os::Linux::supports_variable_stack_size()) { + os::Linux::set_is_floating_stack(); + } ++#endif + } + + ///////////////////////////////////////////////////////////////////////////// +@@ -2968,6 +2975,11 @@ + extern "C" JNIEXPORT void numa_error(char *where) { } + extern "C" JNIEXPORT int fork1() { return fork(); } + ++static void *dlvsym(void *handle, const char *name, const char *ver) ++{ ++ return dlsym(handle, name); ++} ++ + // Handle request to load libnuma symbol version 1.1 (API v1). If it fails + // load symbol from base version instead. + void* os::Linux::libnuma_dlsym(void* handle, const char *name) { +diff -Naur openjdk-8.265_p01/hotspot/src/os/linux/vm/os_linux.inline.hpp openjdk-8.265_p01-copy/hotspot/src/os/linux/vm/os_linux.inline.hpp +--- openjdk-8.265_p01/hotspot/src/os/linux/vm/os_linux.inline.hpp 2020-10-11 15:53:08.468010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/src/os/linux/vm/os_linux.inline.hpp 2020-10-11 20:44:18.000018830 -0400 +@@ -33,7 +33,7 @@ + + #include <unistd.h> + #include <sys/socket.h> +-#include <sys/poll.h> ++#include <poll.h> + #include <netdb.h> + + inline void* os::thread_local_storage_at(int index) { +diff -Naur openjdk-8.265_p01/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp openjdk-8.265_p01-copy/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp +--- openjdk-8.265_p01/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp 2020-10-11 15:53:08.472010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp 2020-10-11 20:47:50.888018933 -0400 +@@ -72,7 +72,6 @@ + # include <pwd.h> + # include <poll.h> + # include <ucontext.h> +-# include <fpu_control.h> + + #ifdef AMD64 + #define REG_SP REG_RSP +@@ -543,6 +542,9 @@ + ShouldNotReachHere(); + } + ++#define _FPU_GETCW(cw) __asm__ __volatile__ ("fnstcw %0" : "=m" (*&cw)) ++#define _FPU_SETCW(cw) __asm__ __volatile__ ("fldcw %0" : : "m" (*&cw)) ++ + void os::Linux::init_thread_fpu_state(void) { + #ifndef AMD64 + // set fpu to 53 bit precision +diff -Naur openjdk-8.265_p01/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp openjdk-8.265_p01-copy/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp +--- openjdk-8.265_p01/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp 2020-10-11 15:53:08.472010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp 2020-10-11 20:48:23.452018949 -0400 +@@ -32,7 +32,9 @@ + // map stack pointer to thread pointer - see notes in threadLS_linux_x86.cpp + #define SP_BITLENGTH 32 + #define PAGE_SHIFT 12 ++ #ifndef PAGE_SIZE + #define PAGE_SIZE (1UL << PAGE_SHIFT) ++ #endif + static Thread* _sp_map[1UL << (SP_BITLENGTH - PAGE_SHIFT)]; + + public: +diff -Naur openjdk-8.265_p01/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp openjdk-8.265_p01-copy/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp +--- openjdk-8.265_p01/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp 2020-10-11 15:53:08.572010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp 2020-10-11 20:49:02.568018968 -0400 +@@ -235,7 +235,7 @@ + #elif defined(__APPLE__) + inline int g_isnan(double f) { return isnan(f); } + #elif defined(LINUX) || defined(_ALLBSD_SOURCE) +-inline int g_isnan(float f) { return isnanf(f); } ++inline int g_isnan(float f) { return isnan(f); } + inline int g_isnan(double f) { return isnan(f); } + #else + #error "missing platform-specific definition here" diff --git a/dev-java/openjdk/files/musl/8/0002_musl_hotspot_ppc.patch b/dev-java/openjdk/files/musl/8/0002_musl_hotspot_ppc.patch new file mode 100644 index 0000000..bafdb7d --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0002_musl_hotspot_ppc.patch @@ -0,0 +1,24 @@ +diff -Naur openjdk-8.265_p01/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp openjdk-8.265_p01-copy/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp +--- openjdk-8.265_p01/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp 2020-10-11 15:53:08.452010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp 2020-10-11 20:51:15.688019033 -0400 +@@ -44,6 +44,8 @@ + #include "gc_implementation/g1/heapRegion.hpp" + #endif // INCLUDE_ALL_GCS + ++#include <asm/ptrace.h> ++ + #ifdef PRODUCT + #define BLOCK_COMMENT(str) // nothing + #else +diff -Naur openjdk-8.265_p01/hotspot/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp openjdk-8.265_p01-copy/hotspot/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp +--- openjdk-8.265_p01/hotspot/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp 2020-10-11 15:53:08.472010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp 2020-10-11 20:51:42.444019045 -0400 +@@ -27,6 +27,8 @@ + #include "runtime/frame.inline.hpp" + #include "runtime/thread.hpp" + ++#include <asm/ptrace.h> ++ + bool JavaThread::pd_get_top_frame_for_profiling(frame* fr_addr, void* ucontext, bool isInJava) { + assert(this->is_Java_thread(), "must be JavaThread"); + diff --git a/dev-java/openjdk/files/musl/8/0003_musl_hotspot_aarch64.patch b/dev-java/openjdk/files/musl/8/0003_musl_hotspot_aarch64.patch new file mode 100644 index 0000000..183a144 --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0003_musl_hotspot_aarch64.patch @@ -0,0 +1,12 @@ +diff -Naur openjdk-8.265_p01/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp openjdk-8.265_p01-copy/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp +--- openjdk-8.265_p01/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp 2020-07-26 20:20:35.000000000 -0400 ++++ openjdk-8.265_p01-copy/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp 2020-10-11 21:49:21.268020723 -0400 +@@ -72,7 +72,7 @@ + # include <pwd.h> + # include <poll.h> + # include <ucontext.h> +-# include <fpu_control.h> ++# include <linux/types.h> /* provides __u64 */ + + #define REG_FP 29 + diff --git a/dev-java/openjdk/files/musl/8/0004_musl_hotspot_noagent.patch b/dev-java/openjdk/files/musl/8/0004_musl_hotspot_noagent.patch new file mode 100644 index 0000000..55da9d0 --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0004_musl_hotspot_noagent.patch @@ -0,0 +1,85 @@ +diff -Naur openjdk-8.265_p01/common/autoconf/configure openjdk-8.265_p01-copy/common/autoconf/configure +--- openjdk-8.265_p01/common/autoconf/configure 2020-10-11 15:53:08.360010359 -0400 ++++ openjdk-8.265_p01-copy/common/autoconf/configure 2020-10-11 21:19:41.768019860 -0400 +@@ -103,7 +103,7 @@ + } + + # Check for local changes +-check_hg_updates ++run_autogen_or_fail + + if test -e $conf_custom_script_dir/generated-configure.sh; then + # Test if open configure is newer than custom configure, if so, custom needs to +diff -Naur openjdk-8.265_p01/common/autoconf/jdk-options.m4 openjdk-8.265_p01-copy/common/autoconf/jdk-options.m4 +--- openjdk-8.265_p01/common/autoconf/jdk-options.m4 2020-10-11 15:53:08.364010359 -0400 ++++ openjdk-8.265_p01-copy/common/autoconf/jdk-options.m4 2020-10-11 21:20:14.764019876 -0400 +@@ -151,7 +151,7 @@ + AC_SUBST(JVM_VARIANT_ZEROSHARK) + AC_SUBST(JVM_VARIANT_CORE) + +- INCLUDE_SA=true ++ AC_CHECK_HEADER(thread_db.h,INCLUDE_SA=true,INCLUDE_SA=false) + if test "x$JVM_VARIANT_ZERO" = xtrue ; then + INCLUDE_SA=false + fi +diff -Naur openjdk-8.265_p01/hotspot/make/linux/makefiles/defs.make openjdk-8.265_p01-copy/hotspot/make/linux/makefiles/defs.make +--- openjdk-8.265_p01/hotspot/make/linux/makefiles/defs.make 2020-10-11 15:53:08.448010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/make/linux/makefiles/defs.make 2020-10-11 21:21:24.716019910 -0400 +@@ -296,6 +296,9 @@ + + # Serviceability Binaries + # No SA Support for PPC, IA64, ARM or zero ++# or if thread_db.h missing (musl) ++ ++ifneq ($(wildcard /usr/include/thread_db.h),) + ADD_SA_BINARIES/x86 = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \ + $(EXPORT_LIB_DIR)/sa-jdi.jar + ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \ +@@ -311,6 +314,11 @@ + endif + endif + endif ++else ++ADD_SA_BINARIES/x86 = ++ADD_SA_BINARIES/sparc = ++ADD_SA_BINARIES/aarch64 = ++endif + ADD_SA_BINARIES/ppc = + ADD_SA_BINARIES/ia64 = + ADD_SA_BINARIES/arm = +diff -Naur openjdk-8.265_p01/hotspot/make/linux/makefiles/sa.make openjdk-8.265_p01-copy/hotspot/make/linux/makefiles/sa.make +--- openjdk-8.265_p01/hotspot/make/linux/makefiles/sa.make 2020-10-11 15:53:08.448010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/make/linux/makefiles/sa.make 2020-10-11 21:22:39.556019946 -0400 +@@ -59,9 +59,11 @@ + + # if $(AGENT_DIR) does not exist, we don't build SA + # also, we don't build SA on Itanium or zero. ++# check for thread_db.h too (musl does not have it). + +-all: +- if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" \ ++all: ++ if [ -d $(AGENT_DIR) -a -f /usr/include/thread_db.h \ ++ -a "$(SRCARCH)" != "ia64" \ + -a "$(SRCARCH)" != "zero" ] ; then \ + $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \ + fi +diff -Naur openjdk-8.265_p01/hotspot/make/linux/makefiles/saproc.make openjdk-8.265_p01-copy/hotspot/make/linux/makefiles/saproc.make +--- openjdk-8.265_p01/hotspot/make/linux/makefiles/saproc.make 2020-10-11 15:53:08.448010359 -0400 ++++ openjdk-8.265_p01-copy/hotspot/make/linux/makefiles/saproc.make 2020-10-11 21:23:13.672019963 -0400 +@@ -66,12 +66,15 @@ + + # if $(AGENT_DIR) does not exist, we don't build SA + # also, we don't build SA on Itanium or zero. ++# check for thread_db.h too (musl does not have it). + ++ifneq ($(wildcard /usr/include/thread_db.h),) + ifneq ($(wildcard $(AGENT_DIR)),) + ifneq ($(filter-out ia64 zero,$(SRCARCH)),) + BUILDLIBSAPROC = $(LIBSAPROC) + endif + endif ++endif + + ifneq ($(ALT_SASRCDIR),) + ALT_SAINCDIR=-I$(ALT_SASRCDIR) -DALT_SASRCDIR diff --git a/dev-java/openjdk/files/musl/8/0005_musl_fix_libjvm_load.patch b/dev-java/openjdk/files/musl/8/0005_musl_fix_libjvm_load.patch new file mode 100644 index 0000000..6d6b20b --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0005_musl_fix_libjvm_load.patch @@ -0,0 +1,12 @@ +diff -Naur openjdk-8.265_p01/jdk/src/solaris/bin/java_md_solinux.c openjdk-8.265_p01-copy/jdk/src/solaris/bin/java_md_solinux.c +--- openjdk-8.265_p01/jdk/src/solaris/bin/java_md_solinux.c 2020-10-11 15:53:09.288010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/bin/java_md_solinux.c 2020-10-11 20:57:18.932019209 -0400 +@@ -291,6 +291,8 @@ + char *dmllp = NULL; + char *p; /* a utility pointer */ + ++ return JNI_TRUE; ++ + #ifdef AIX + /* We always have to set the LIBPATH on AIX because ld doesn't support $ORIGIN. */ + return JNI_TRUE; diff --git a/dev-java/openjdk/files/musl/8/0006_musl_jdk.patch b/dev-java/openjdk/files/musl/8/0006_musl_jdk.patch new file mode 100644 index 0000000..52acbfa --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0006_musl_jdk.patch @@ -0,0 +1,83 @@ +diff -Naur openjdk-8.265_p01/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp openjdk-8.265_p01-copy/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp +--- openjdk-8.265_p01/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp 2020-10-11 15:53:09.224010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp 2020-10-11 20:58:53.716019255 -0400 +@@ -46,6 +46,8 @@ + + #include "zip.h" + ++#define uchar unsigned char ++ + #ifdef NO_ZLIB + + inline bool jar::deflate_bytes(bytes& head, bytes& tail) { +diff -Naur openjdk-8.265_p01/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h openjdk-8.265_p01-copy/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h +--- openjdk-8.265_p01/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h 2020-10-11 15:53:09.224010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h 2020-10-11 20:59:15.072019265 -0400 +@@ -23,9 +23,7 @@ + * questions. + */ + +-#define ushort unsigned short +-#define uint unsigned int +-#define uchar unsigned char ++#include <sys/types.h> + + struct unpacker; + +diff -Naur openjdk-8.265_p01/jdk/src/share/native/sun/awt/medialib/mlib_types.h openjdk-8.265_p01-copy/jdk/src/share/native/sun/awt/medialib/mlib_types.h +--- openjdk-8.265_p01/jdk/src/share/native/sun/awt/medialib/mlib_types.h 2020-10-11 15:53:09.236010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/share/native/sun/awt/medialib/mlib_types.h 2020-10-11 20:59:44.012019279 -0400 +@@ -27,6 +27,7 @@ + #ifndef MLIB_TYPES_H + #define MLIB_TYPES_H + ++#include <stddef.h> /* for NULL */ + #include <limits.h> + #if defined(_MSC_VER) + #include <float.h> /* for FLT_MAX and DBL_MAX */ +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/java/net/Inet4AddressImpl.c openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/Inet4AddressImpl.c +--- openjdk-8.265_p01/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2020-10-11 15:53:09.308010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2020-10-11 21:00:21.952019297 -0400 +@@ -47,7 +47,7 @@ + + #include "java_net_Inet4AddressImpl.h" + +-#if defined(__GLIBC__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104)) ++#if defined(__linux__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104)) + #define HAS_GLIBC_GETHOSTBY_R 1 + #endif + +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/java/net/linux_close.c openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/linux_close.c +--- openjdk-8.265_p01/jdk/src/solaris/native/java/net/linux_close.c 2020-10-11 15:53:09.308010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/linux_close.c 2020-10-11 21:01:22.872019327 -0400 +@@ -58,7 +58,7 @@ + /* + * Signal to unblock thread + */ +-static int sigWakeup = (__SIGRTMAX - 2); ++static int sigWakeup; + + /* + * fdTable holds one entry per file descriptor, up to a certain +@@ -147,6 +147,9 @@ + /* + * Setup the signal handler + */ ++#ifndef __AIX ++ sigWakeup = SIGRTMAX - 2; ++#endif + sa.sa_handler = sig_wakeup; + sa.sa_flags = 0; + sigemptyset(&sa.sa_mask); +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/sun/nio/ch/NativeThread.c openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/nio/ch/NativeThread.c +--- openjdk-8.265_p01/jdk/src/solaris/native/sun/nio/ch/NativeThread.c 2020-10-11 15:53:09.316010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/nio/ch/NativeThread.c 2020-10-11 21:02:12.156019351 -0400 +@@ -36,7 +36,7 @@ + #include <pthread.h> + #include <sys/signal.h> + /* Also defined in net/linux_close.c */ +- #define INTERRUPT_SIGNAL (__SIGRTMAX - 2) ++ #define INTERRUPT_SIGNAL (SIGRTMAX - 2) + #elif __solaris__ + #include <thread.h> + #include <signal.h> diff --git a/dev-java/openjdk/files/musl/8/0007_musl_jdk_includes.patch b/dev-java/openjdk/files/musl/8/0007_musl_jdk_includes.patch new file mode 100644 index 0000000..ec70c70 --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0007_musl_jdk_includes.patch @@ -0,0 +1,144 @@ +diff -Naur openjdk-8.265_p01/jdk/src/aix/native/java/net/aix_close.c openjdk-8.265_p01-copy/jdk/src/aix/native/java/net/aix_close.c +--- openjdk-8.265_p01/jdk/src/aix/native/java/net/aix_close.c 2020-10-11 15:53:09.260010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/aix/native/java/net/aix_close.c 2020-10-11 21:03:15.540019382 -0400 +@@ -54,7 +54,7 @@ + #include <unistd.h> + #include <errno.h> + +-#include <sys/poll.h> ++#include <poll.h> + + /* + * Stack allocated by thread when doing blocking operation +diff -Naur openjdk-8.265_p01/jdk/src/aix/native/sun/nio/ch/AixNativeThread.c openjdk-8.265_p01-copy/jdk/src/aix/native/sun/nio/ch/AixNativeThread.c +--- openjdk-8.265_p01/jdk/src/aix/native/sun/nio/ch/AixNativeThread.c 2020-10-11 15:53:09.260010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/aix/native/sun/nio/ch/AixNativeThread.c 2020-10-11 21:03:39.704019393 -0400 +@@ -32,7 +32,7 @@ + #include "sun_nio_ch_NativeThread.h" + + #include <pthread.h> +-#include <sys/signal.h> ++#include <signal.h> + + /* Also defined in src/aix/native/java/net/aix_close.c */ + #define INTERRUPT_SIGNAL (SIGRTMAX - 1) +diff -Naur openjdk-8.265_p01/jdk/src/aix/native/sun/nio/ch/AixPollPort.c openjdk-8.265_p01-copy/jdk/src/aix/native/sun/nio/ch/AixPollPort.c +--- openjdk-8.265_p01/jdk/src/aix/native/sun/nio/ch/AixPollPort.c 2020-10-11 15:53:09.260010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/aix/native/sun/nio/ch/AixPollPort.c 2020-10-11 21:03:55.880019401 -0400 +@@ -34,7 +34,7 @@ + #include <unistd.h> + #include <sys/types.h> + #include <sys/socket.h> +-#include <sys/poll.h> ++#include <poll.h> + #include <sys/pollset.h> + #include <fcntl.h> + #include <stddef.h> +diff -Naur openjdk-8.265_p01/jdk/src/macosx/javavm/export/jvm_md.h openjdk-8.265_p01-copy/jdk/src/macosx/javavm/export/jvm_md.h +--- openjdk-8.265_p01/jdk/src/macosx/javavm/export/jvm_md.h 2020-10-11 15:53:09.268010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/macosx/javavm/export/jvm_md.h 2020-10-11 21:04:16.324019411 -0400 +@@ -60,7 +60,7 @@ + #include <sys/stat.h> + #include <fcntl.h> + #include <errno.h> +-#include <sys/signal.h> ++#include <signal.h> + + /* O Flags */ + +diff -Naur openjdk-8.265_p01/jdk/src/solaris/javavm/export/jvm_md.h openjdk-8.265_p01-copy/jdk/src/solaris/javavm/export/jvm_md.h +--- openjdk-8.265_p01/jdk/src/solaris/javavm/export/jvm_md.h 2020-10-11 15:53:09.304010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/javavm/export/jvm_md.h 2020-10-11 21:04:38.324019422 -0400 +@@ -65,7 +65,7 @@ + #include <sys/stat.h> + #include <fcntl.h> + #include <errno.h> +-#include <sys/signal.h> ++#include <signal.h> + + /* O Flags */ + +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/java/net/PlainSocketImpl.c openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/PlainSocketImpl.c +--- openjdk-8.265_p01/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2020-10-11 15:53:09.308010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2020-10-11 21:05:07.272019436 -0400 +@@ -28,7 +28,7 @@ + #include <sys/types.h> + #include <sys/socket.h> + #if defined(__linux__) && !defined(USE_SELECT) +-#include <sys/poll.h> ++#include <poll.h> + #endif + #include <netinet/tcp.h> /* Defines TCP_NODELAY, needed for 2.6 */ + #include <netinet/in.h> +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/java/net/bsd_close.c openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/bsd_close.c +--- openjdk-8.265_p01/jdk/src/solaris/native/java/net/bsd_close.c 2020-10-11 15:53:09.308010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/bsd_close.c 2020-10-11 21:05:21.300019443 -0400 +@@ -38,7 +38,7 @@ + #include <sys/uio.h> + #include <unistd.h> + #include <errno.h> +-#include <sys/poll.h> ++#include <poll.h> + + /* + * Stack allocated by thread when doing blocking operation +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/java/net/net_util_md.h openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/net_util_md.h +--- openjdk-8.265_p01/jdk/src/solaris/native/java/net/net_util_md.h 2020-10-11 15:53:09.308010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/net_util_md.h 2020-10-11 21:05:34.772019449 -0400 +@@ -33,7 +33,7 @@ + #include <unistd.h> + + #ifndef USE_SELECT +-#include <sys/poll.h> ++#include <poll.h> + #endif + + +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c +--- openjdk-8.265_p01/jdk/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c 2020-10-11 15:53:09.316010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c 2020-10-11 21:05:53.824019458 -0400 +@@ -28,7 +28,7 @@ + #include "jvm.h" + #include "jlong.h" + #include "sun_nio_ch_DevPollArrayWrapper.h" +-#include <sys/poll.h> ++#include <poll.h> + #include <unistd.h> + #include <sys/time.h> + +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/sun/nio/ch/NativeThread.c openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/nio/ch/NativeThread.c +--- openjdk-8.265_p01/jdk/src/solaris/native/sun/nio/ch/NativeThread.c 2020-10-11 15:53:09.316010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/nio/ch/NativeThread.c 2020-10-11 21:06:07.272019465 -0400 +@@ -34,7 +34,7 @@ + + #ifdef __linux__ + #include <pthread.h> +- #include <sys/signal.h> ++ #include <signal.h> + /* Also defined in net/linux_close.c */ + #define INTERRUPT_SIGNAL (__SIGRTMAX - 2) + #elif __solaris__ +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/sun/nio/ch/Net.c openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/nio/ch/Net.c +--- openjdk-8.265_p01/jdk/src/solaris/native/sun/nio/ch/Net.c 2020-10-11 15:53:09.316010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/nio/ch/Net.c 2020-10-11 21:06:25.348019474 -0400 +@@ -23,7 +23,7 @@ + * questions. + */ + +-#include <sys/poll.h> ++#include <poll.h> + #include <sys/types.h> + #include <sys/socket.h> + #include <string.h> +diff -Naur openjdk-8.265_p01/jdk/src/solaris/transport/socket/socket_md.c openjdk-8.265_p01-copy/jdk/src/solaris/transport/socket/socket_md.c +--- openjdk-8.265_p01/jdk/src/solaris/transport/socket/socket_md.c 2020-10-11 15:53:09.316010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/transport/socket/socket_md.c 2020-10-11 21:06:44.348019483 -0400 +@@ -37,7 +37,7 @@ + #include <thread.h> + #else + #include <pthread.h> +-#include <sys/poll.h> ++#include <poll.h> + #endif + + #include "socket_md.h" diff --git a/dev-java/openjdk/files/musl/8/0008_musl_jdk_execinfo.patch b/dev-java/openjdk/files/musl/8/0008_musl_jdk_execinfo.patch new file mode 100644 index 0000000..85c113d --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0008_musl_jdk_execinfo.patch @@ -0,0 +1,21 @@ +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/sun/xawt/XToolkit.c openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/xawt/XToolkit.c +--- openjdk-8.265_p01/jdk/src/solaris/native/sun/xawt/XToolkit.c 2020-10-11 15:53:09.316010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/sun/xawt/XToolkit.c 2020-10-11 21:09:12.892019555 -0400 +@@ -27,7 +27,7 @@ + #include <X11/Xutil.h> + #include <X11/Xos.h> + #include <X11/Xatom.h> +-#ifdef __linux__ ++#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__) + #include <execinfo.h> + #endif + +@@ -803,7 +803,7 @@ + return ret; + } + +-#ifdef __linux__ ++#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__) + void print_stack(void) + { + void *array[10]; diff --git a/dev-java/openjdk/files/musl/8/0009_fix_jdk_ipv6_init.patch b/dev-java/openjdk/files/musl/8/0009_fix_jdk_ipv6_init.patch new file mode 100644 index 0000000..a9d9aea --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0009_fix_jdk_ipv6_init.patch @@ -0,0 +1,43 @@ +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/java/net/net_util_md.c openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/net_util_md.c +--- openjdk-8.265_p01/jdk/src/solaris/native/java/net/net_util_md.c 2020-10-11 15:53:09.308010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/java/net/net_util_md.c 2020-10-11 21:32:57.480020246 -0400 +@@ -662,7 +662,7 @@ + + static struct localinterface *localifs = 0; + static int localifsSize = 0; /* size of array */ +-static int nifs = 0; /* number of entries used in array */ ++static int nifs = -1; /* number of entries used in array */ + + /* not thread safe: make sure called once from one thread */ + +@@ -674,6 +674,10 @@ + int index, x1, x2, x3; + unsigned int u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,ua,ub,uc,ud,ue,uf; + ++ if (nifs >= 0) ++ return ; ++ nifs = 0; ++ + if ((f = fopen("/proc/net/if_inet6", "r")) == NULL) { + return ; + } +@@ -702,7 +706,7 @@ + localifs = (struct localinterface *) realloc ( + localifs, sizeof (struct localinterface)* (localifsSize+5)); + if (localifs == 0) { +- nifs = 0; ++ nifs = -1; + fclose (f); + return; + } +@@ -725,9 +729,7 @@ + static int getLocalScopeID (char *addr) { + struct localinterface *lif; + int i; +- if (localifs == 0) { +- initLocalIfs(); +- } ++ initLocalIfs(); + for (i=0, lif=localifs; i<nifs; i++, lif++) { + if (memcmp (addr, lif->localaddr, 16) == 0) { + return lif->index; diff --git a/dev-java/openjdk/files/musl/8/0010_fix_jdk_close_fds.patch b/dev-java/openjdk/files/musl/8/0010_fix_jdk_close_fds.patch new file mode 100644 index 0000000..ed60b2c --- /dev/null +++ b/dev-java/openjdk/files/musl/8/0010_fix_jdk_close_fds.patch @@ -0,0 +1,103 @@ +diff -Naur openjdk-8.265_p01/jdk/src/solaris/native/java/lang/childproc.c openjdk-8.265_p01-copy/jdk/src/solaris/native/java/lang/childproc.c +--- openjdk-8.265_p01/jdk/src/solaris/native/java/lang/childproc.c 2020-10-11 15:53:09.308010360 -0400 ++++ openjdk-8.265_p01-copy/jdk/src/solaris/native/java/lang/childproc.c 2020-10-11 21:38:33.888020409 -0400 +@@ -30,6 +30,7 @@ + #include <string.h> + #include <unistd.h> + #include <limits.h> ++#include <poll.h> + + #include "childproc.h" + +@@ -57,59 +58,46 @@ + } + + int +-isAsciiDigit(char c) +-{ +- return c >= '0' && c <= '9'; +-} +- +-#ifdef _ALLBSD_SOURCE +-#define FD_DIR "/dev/fd" +-#define dirent64 dirent +-#define readdir64 readdir +-#elif defined(_AIX) +-/* AIX does not understand '/proc/self' - it requires the real process ID */ +-#define FD_DIR aix_fd_dir +-#else +-#define FD_DIR "/proc/self/fd" +-#endif +- +-int + closeDescriptors(void) + { +- DIR *dp; +- struct dirent64 *dirp; + int from_fd = FAIL_FILENO + 1; ++ struct pollfd pfds[1024]; ++ int i, total, nclosed = 0; ++ int max_fd = sysconf(_SC_OPEN_MAX); + +- /* We're trying to close all file descriptors, but opendir() might +- * itself be implemented using a file descriptor, and we certainly +- * don't want to close that while it's in use. We assume that if +- * opendir() is implemented using a file descriptor, then it uses +- * the lowest numbered file descriptor, just like open(). So we +- * close a couple explicitly. */ +- +- close(from_fd); /* for possible use by opendir() */ +- close(from_fd + 1); /* another one for good luck */ +- +-#if defined(_AIX) +- /* AIX does not understand '/proc/self' - it requires the real process ID */ +- char aix_fd_dir[32]; /* the pid has at most 19 digits */ +- snprintf(aix_fd_dir, 32, "/proc/%d/fd", getpid()); +-#endif +- +- if ((dp = opendir(FD_DIR)) == NULL) ++ if (max_fd < 0) + return 0; + +- /* We use readdir64 instead of readdir to work around Solaris bug +- * 6395699: /proc/self/fd fails to report file descriptors >= 1024 on Solaris 9 +- */ +- while ((dirp = readdir64(dp)) != NULL) { +- int fd; +- if (isAsciiDigit(dirp->d_name[0]) && +- (fd = strtol(dirp->d_name, NULL, 10)) >= from_fd + 2) +- close(fd); ++ /* init events */ ++ total = max_fd - from_fd; ++ for (i = 0; i < (total < 1024 ? total : 1024); i++) { ++ pfds[i].events = 0; + } + +- closedir(dp); ++ while (from_fd < max_fd) { ++ int nfds, r = 0; ++ ++ total = max_fd - from_fd; ++ nfds = total < 1024 ? total : 1024; ++ ++ for (i = 0; i < nfds; i++) ++ pfds[i].fd = from_fd + i; ++ ++ do { ++ r = poll(pfds, nfds, 0); ++ } while (r == -1 && errno == EINTR); ++ ++ if (r < 0) ++ return 0; ++ ++ ++ for (i = 0; i < nfds; i++) ++ if (pfds[i].revents != POLLNVAL) { ++ nclosed++; ++ close(pfds[i].fd); ++ } ++ from_fd += nfds; ++ } + + return 1; + } diff --git a/dev-java/openjdk/files/openjdk-11.env.sh b/dev-java/openjdk/files/openjdk-11.env.sh new file mode 100644 index 0000000..96c4be7 --- /dev/null +++ b/dev-java/openjdk/files/openjdk-11.env.sh @@ -0,0 +1,16 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +VERSION="OpenJDK ${PV}" +JAVA_HOME="${EPREFIX}/usr/$(get_libdir)/${PN}-${SLOT}" +JDK_HOME="${EPREFIX}/usr/$(get_libdir)/${PN}-${SLOT}" +JAVAC="\${JAVA_HOME}/bin/javac" +PATH="\${JAVA_HOME}/bin" +ROOTPATH="\${JAVA_HOME}/bin" +LDPATH="\${JAVA_HOME}/lib/:\${JAVA_HOME}/lib/server/" +MANPATH="" +PROVIDES_TYPE="JDK JRE" +PROVIDES_VERSION="${SLOT}" +BOOTCLASSPATH="" +GENERATION="2" +ENV_VARS="JAVA_HOME JDK_HOME JAVAC PATH ROOTPATH LDPATH MANPATH" diff --git a/dev-java/openjdk/files/openjdk-8.env.sh b/dev-java/openjdk/files/openjdk-8.env.sh new file mode 100644 index 0000000..e85a08c --- /dev/null +++ b/dev-java/openjdk/files/openjdk-8.env.sh @@ -0,0 +1,16 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +VERSION="OpenJDK ${PV}" +JAVA_HOME="${EPREFIX}/usr/$(get_libdir)/${PN}-${SLOT}" +JDK_HOME="${EPREFIX}/usr/$(get_libdir)/${PN}-${SLOT}" +JAVAC="\${JAVA_HOME}/bin/javac" +PATH="\${JAVA_HOME}/bin" +ROOTPATH="\${JAVA_HOME}/bin" +LDPATH="\${JAVA_HOME}/lib/:\${JAVA_HOME}/lib/server/" +MANPATH="\${JAVA_HOME}/man" +PROVIDES_TYPE="JDK JRE" +PROVIDES_VERSION="1.${SLOT}" +BOOTCLASSPATH="\${JAVA_HOME}/jre/lib/resources.jar:\${JAVA_HOME}/jre/lib/rt.jar:\${JAVA_HOME}/jre/lib/jsse.jar:\${JAVA_HOME}/jre/lib/jce.jar:\${JAVA_HOME}/jre/lib/charsets.jar:\${JAVA_HOME}/jre/lib/jfr.jar" +GENERATION="2" +ENV_VARS="JAVA_HOME JDK_HOME JAVAC PATH ROOTPATH LDPATH MANPATH" diff --git a/dev-java/openjdk/metadata.xml b/dev-java/openjdk/metadata.xml new file mode 100644 index 0000000..24efdf8 --- /dev/null +++ b/dev-java/openjdk/metadata.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>[email protected]</email> + <name>Georgy Yakovlev</name> + </maintainer> + <maintainer type="project"> + <email>[email protected]</email> + <name>Java</name> + </maintainer> + <longdescription> + Java™ is the world's leading programming language and platform. + The code for Java is open source and available at OpenJDK™. + </longdescription> + <slots> + <slot name="8">Java™ 8 is Java™ 1.8, where 8 is the version number, and 1.8 is the version string</slot> + <slot name="11">Java™ version 11</slot> + </slots> + <use> + <flag name="headless-awt">Don't install the X backend for AWT, needed by some GUIs</flag> + <flag name="gentoo-vm">Allow this JDK to be recognised by Gentoo (package manager, eselect, java-config, EXPERIMENTAL!)</flag> + <flag name="javafx" restrict="<=dev-java/openjdk-9">Provide JavaFX support via <pkg>dev-java/openjfx</pkg></flag> + <flag name="javafx" restrict=">=dev-java/openjdk-11">Import OpenJFX modules at build time, via <pkg>dev-java/openjfx</pkg></flag> + <flag name="jbootstrap">Build OpenJDK twice, the second time using the result of the first</flag> + <flag name="source">Install JVM sources</flag> + <flag name="systemtap" restrict=">=dev-java/openjdk-11">Enable SystemTAP/DTrace tracing</flag> + </use> +</pkgmetadata> diff --git a/dev-java/openjdk/openjdk-11.0.8_p10.ebuild b/dev-java/openjdk/openjdk-11.0.8_p10.ebuild new file mode 100644 index 0000000..7eb8e19 --- /dev/null +++ b/dev-java/openjdk/openjdk-11.0.8_p10.ebuild @@ -0,0 +1,289 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit autotools check-reqs flag-o-matic java-pkg-2 java-vm-2 multiprocessing pax-utils toolchain-funcs + +# we need -ga tag to fetch tarball and unpack it, but exact number everywhere else to +# set build version properly +MY_PV="${PV%_p*}-ga" +SLOT="${MY_PV%%[.+]*}" + +DESCRIPTION="Open source implementation of the Java programming language" +HOMEPAGE="https://openjdk.java.net" +SRC_URI="https://hg.${PN}.java.net/jdk-updates/jdk${SLOT}u/archive/jdk-${MY_PV}.tar.bz2 -> ${P}.tar.bz2" + +LICENSE="GPL-2" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64" + +IUSE="alsa cups debug doc examples gentoo-vm headless-awt javafx +jbootstrap +pch selinux source systemtap" + +COMMON_DEPEND=" + media-libs/freetype:2= + media-libs/giflib:0/7 + media-libs/libpng:0= + media-libs/lcms:2= + sys-libs/zlib + virtual/jpeg:0= + systemtap? ( dev-util/systemtap ) +" + +# Many libs are required to build, but not to run, make is possible to remove +# by listing conditionally in RDEPEND unconditionally in DEPEND +RDEPEND=" + ${COMMON_DEPEND} + >=sys-apps/baselayout-java-0.1.0-r1 + !headless-awt? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXi + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/libXt + x11-libs/libXtst + ) + alsa? ( media-libs/alsa-lib ) + cups? ( net-print/cups ) + selinux? ( sec-policy/selinux-java ) +" + +DEPEND=" + ${COMMON_DEPEND} + app-arch/zip + media-libs/alsa-lib + net-print/cups + x11-base/xorg-proto + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXi + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/libXt + x11-libs/libXtst + javafx? ( dev-java/openjfx:${SLOT}= ) + || ( + dev-java/openjdk-bin:${SLOT} + dev-java/openjdk:${SLOT} + ) +" + +REQUIRED_USE="javafx? ( alsa !headless-awt )" + +S="${WORKDIR}/jdk${SLOT}u-jdk-${MY_PV}" + +# The space required to build varies wildly depending on USE flags, +# ranging from 2GB to 16GB. This function is certainly not exact but +# should be close enough to be useful. +openjdk_check_requirements() { + local M + M=2048 + M=$(( $(usex jbootstrap 2 1) * $M )) + M=$(( $(usex debug 3 1) * $M )) + M=$(( $(usex doc 320 0) + $(usex source 128 0) + 192 + $M )) + + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +pkg_pretend() { + openjdk_check_requirements + if [[ ${MERGE_TYPE} != binary ]]; then + has ccache ${FEATURES} && die "FEATURES=ccache doesn't work with ${PN}, bug #677876" + fi +} + +pkg_setup() { + openjdk_check_requirements + java-vm-2_pkg_setup + + JAVA_PKG_WANT_BUILD_VM="openjdk-${SLOT} openjdk-bin-${SLOT}" + JAVA_PKG_WANT_SOURCE="${SLOT}" + JAVA_PKG_WANT_TARGET="${SLOT}" + + # The nastiness below is necessary while the gentoo-vm USE flag is + # masked. First we call java-pkg-2_pkg_setup if it looks like the + # flag was unmasked against one of the possible build VMs. If not, + # we try finding one of them in their expected locations. This would + # have been slightly less messy if openjdk-bin had been installed to + # /opt/${PN}-${SLOT} or if there was a mechanism to install a VM env + # file but disable it so that it would not normally be selectable. + + local vm + for vm in ${JAVA_PKG_WANT_BUILD_VM}; do + if [[ -d ${EPREFIX}/usr/lib/jvm/${vm} ]]; then + java-pkg-2_pkg_setup + return + fi + done + + if has_version --host-root dev-java/openjdk:${SLOT}; then + export JDK_HOME=${EPREFIX}/usr/$(get_libdir)/openjdk-${SLOT} + else + if [[ ${MERGE_TYPE} != "binary" ]]; then + JDK_HOME=$(best_version --host-root dev-java/openjdk-bin:${SLOT}) + [[ -n ${JDK_HOME} ]] || die "Build VM not found!" + JDK_HOME=${JDK_HOME#*/} + JDK_HOME=${EPREFIX}/opt/${JDK_HOME%-r*} + export JDK_HOME + fi + fi +} + +src_prepare() { + default + + # conditionally apply patches for musl compatibility + if use elibc_musl; then + eapply "${FILESDIR}/musl/${SLOT}/build.patch" + eapply "${FILESDIR}/musl/${SLOT}/fix-bootjdk-check.patch" + eapply "${FILESDIR}/musl/${SLOT}/ppc64le.patch" + eapply "${FILESDIR}/musl/${SLOT}/aarch64.patch" + fi + + # conditionally remove not compilable module (hotspot jdk.hotspot.agent) + # this needs libthread_db which is only provided by glibc + # + # haven't found any way to disable this module so just remove it. + if use elibc_musl; then + rm -rf "${S}"/src/jdk.hotspot.agent || die "failed to remove HotSpot agent" + fi + + chmod +x configure || die +} + +src_configure() { + # Work around stack alignment issue, bug #647954. in case we ever have x86 + use x86 && append-flags -mincoming-stack-boundary=2 + + # Work around -fno-common ( GCC10 default ), bug #713180 + append-flags -fcommon + + # Enabling full docs appears to break doc building. If not + # explicitly disabled, the flag will get auto-enabled if pandoc and + # graphviz are detected. pandoc has loads of dependencies anyway. + + local myconf=( + --disable-ccache + --enable-full-docs=no + --with-boot-jdk="${JDK_HOME}" + --with-extra-cflags="${CFLAGS}" + --with-extra-cxxflags="${CXXFLAGS}" + --with-extra-ldflags="${LDFLAGS}" + --with-giflib=system + --with-lcms=system + --with-libjpeg=system + --with-libpng=system + --with-native-debug-symbols=$(usex debug internal none) + --with-vendor-name="Gentoo" + --with-vendor-url="https://gentoo.org" + --with-vendor-bug-url="https://bugs.gentoo.org" + --with-vendor-vm-bug-url="https://bugs.openjdk.java.net" + --with-vendor-version-string="${PVR}" + --with-version-pre="" + --with-version-string="${PV%_p*}" + --with-version-build="${PV#*_p}" + --with-zlib=system + --enable-dtrace=$(usex systemtap yes no) + --enable-headless-only=$(usex headless-awt yes no) + ) + + if use javafx; then + local zip="${EROOT%/}/usr/$(get_libdir)/openjfx-${SLOT}/javafx-exports.zip" + if [[ -r ${zip} ]]; then + myconf+=( --with-import-modules="${zip}" ) + else + die "${zip} not found or not readable" + fi + fi + + # PaX breaks pch, bug #601016 + if use pch && ! host-is-pax; then + myconf+=( --enable-precompiled-headers ) + else + myconf+=( --disable-precompiled-headers ) + fi + + ( + unset _JAVA_OPTIONS JAVA JAVA_TOOL_OPTIONS JAVAC XARGS + CFLAGS= CXXFLAGS= LDFLAGS= \ + CONFIG_SITE=/dev/null \ + econf "${myconf[@]}" + ) +} + +src_compile() { + local myemakeargs=( + JOBS=$(makeopts_jobs) + LOG=debug + CFLAGS_WARNINGS_ARE_ERRORS= # No -Werror + $(usex doc docs '') + $(usex jbootstrap bootcycle-images product-images) + ) + emake "${myemakeargs[@]}" -j1 #nowarn +} + +src_install() { + local dest="/usr/$(get_libdir)/${PN}-${SLOT}" + local ddest="${ED}${dest#/}" + + cd "${S}"/build/*-release/images/jdk || die + + # Create files used as storage for system preferences. + mkdir .systemPrefs || die + touch .systemPrefs/.system.lock || die + touch .systemPrefs/.systemRootModFile || die + + # Oracle and IcedTea have libjsoundalsa.so depending on + # libasound.so.2 but OpenJDK only has libjsound.so. Weird. + if ! use alsa ; then + rm -v lib/libjsound.* || die + fi + + if ! use examples ; then + rm -vr demo/ || die + fi + + if ! use source ; then + rm -v lib/src.zip || die + fi + + rm -v lib/security/cacerts || die + + dodir "${dest}" + cp -pPR * "${ddest}" || die + + dosym ../../../../../etc/ssl/certs/java/cacerts "${dest}"/lib/security/cacerts + + # must be done before running itself + java-vm_set-pax-markings "${ddest}" + + einfo "Creating the Class Data Sharing archives and disabling usage tracking" + "${ddest}/bin/java" -server -Xshare:dump -Djdk.disableLastUsageTracking || die + + use gentoo-vm && java-vm_install-env "${FILESDIR}"/${PN}-${SLOT}.env.sh + java-vm_revdep-mask + java-vm_sandbox-predict /dev/random /proc/self/coredump_filter + + if use doc ; then + docinto html + dodoc -r "${S}"/build/*-release/images/docs/* + dosym ../../../usr/share/doc/"${PF}" /usr/share/doc/"${PN}-${SLOT}" + fi +} + +pkg_postinst() { + java-vm-2_pkg_postinst + + if use gentoo-vm ; then + ewarn "WARNING! You have enabled the gentoo-vm USE flag, making this JDK" + ewarn "recognised by the system. This will almost certainly break" + ewarn "many java ebuilds as they are not ready for openjdk-11" + else + ewarn "The experimental gentoo-vm USE flag has not been enabled so this JDK" + ewarn "will not be recognised by the system. For example, simply calling" + ewarn "\"java\" will launch a different JVM. This is necessary until Gentoo" + ewarn "fully supports Java ${SLOT}. This JDK must therefore be invoked using its" + ewarn "absolute location under ${EPREFIX}/usr/$(get_libdir)/${PN}-${SLOT}." + fi +} + diff --git a/dev-java/openjdk/openjdk-11.0.9_p11.ebuild b/dev-java/openjdk/openjdk-11.0.9_p11.ebuild new file mode 100644 index 0000000..af0cd66 --- /dev/null +++ b/dev-java/openjdk/openjdk-11.0.9_p11.ebuild @@ -0,0 +1,288 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit autotools check-reqs flag-o-matic java-pkg-2 java-vm-2 multiprocessing pax-utils toolchain-funcs + +# we need -ga tag to fetch tarball and unpack it, but exact number everywhere else to +# set build version properly +MY_PV="${PV%_p*}-ga" +SLOT="${MY_PV%%[.+]*}" + +DESCRIPTION="Open source implementation of the Java programming language" +HOMEPAGE="https://openjdk.java.net" +SRC_URI="https://hg.${PN}.java.net/jdk-updates/jdk${SLOT}u/archive/jdk-${MY_PV}.tar.bz2 -> ${P}.tar.bz2" + +LICENSE="GPL-2" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64" + +IUSE="alsa cups debug doc examples gentoo-vm headless-awt javafx +jbootstrap +pch selinux source systemtap" + +COMMON_DEPEND=" + media-libs/freetype:2= + media-libs/giflib:0/7 + media-libs/libpng:0= + media-libs/lcms:2= + sys-libs/zlib + virtual/jpeg:0= + systemtap? ( dev-util/systemtap ) +" + +# Many libs are required to build, but not to run, make is possible to remove +# by listing conditionally in RDEPEND unconditionally in DEPEND +RDEPEND=" + ${COMMON_DEPEND} + >=sys-apps/baselayout-java-0.1.0-r1 + !headless-awt? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXi + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/libXt + x11-libs/libXtst + ) + alsa? ( media-libs/alsa-lib ) + cups? ( net-print/cups ) + selinux? ( sec-policy/selinux-java ) +" + +DEPEND=" + ${COMMON_DEPEND} + app-arch/zip + media-libs/alsa-lib + net-print/cups + x11-base/xorg-proto + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXi + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/libXt + x11-libs/libXtst + javafx? ( dev-java/openjfx:${SLOT}= ) + || ( + dev-java/openjdk-bin:${SLOT} + dev-java/openjdk:${SLOT} + ) +" + +REQUIRED_USE="javafx? ( alsa !headless-awt )" + +S="${WORKDIR}/jdk${SLOT}u-jdk-${MY_PV}" + +# The space required to build varies wildly depending on USE flags, +# ranging from 2GB to 16GB. This function is certainly not exact but +# should be close enough to be useful. +openjdk_check_requirements() { + local M + M=2048 + M=$(( $(usex jbootstrap 2 1) * $M )) + M=$(( $(usex debug 3 1) * $M )) + M=$(( $(usex doc 320 0) + $(usex source 128 0) + 192 + $M )) + + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +pkg_pretend() { + openjdk_check_requirements + if [[ ${MERGE_TYPE} != binary ]]; then + has ccache ${FEATURES} && die "FEATURES=ccache doesn't work with ${PN}, bug #677876" + fi +} + +pkg_setup() { + openjdk_check_requirements + java-vm-2_pkg_setup + + JAVA_PKG_WANT_BUILD_VM="openjdk-${SLOT} openjdk-bin-${SLOT}" + JAVA_PKG_WANT_SOURCE="${SLOT}" + JAVA_PKG_WANT_TARGET="${SLOT}" + + # The nastiness below is necessary while the gentoo-vm USE flag is + # masked. First we call java-pkg-2_pkg_setup if it looks like the + # flag was unmasked against one of the possible build VMs. If not, + # we try finding one of them in their expected locations. This would + # have been slightly less messy if openjdk-bin had been installed to + # /opt/${PN}-${SLOT} or if there was a mechanism to install a VM env + # file but disable it so that it would not normally be selectable. + + local vm + for vm in ${JAVA_PKG_WANT_BUILD_VM}; do + if [[ -d ${EPREFIX}/usr/lib/jvm/${vm} ]]; then + java-pkg-2_pkg_setup + return + fi + done + + if has_version --host-root dev-java/openjdk:${SLOT}; then + export JDK_HOME=${EPREFIX}/usr/$(get_libdir)/openjdk-${SLOT} + else + if [[ ${MERGE_TYPE} != "binary" ]]; then + JDK_HOME=$(best_version --host-root dev-java/openjdk-bin:${SLOT}) + [[ -n ${JDK_HOME} ]] || die "Build VM not found!" + JDK_HOME=${JDK_HOME#*/} + JDK_HOME=${EPREFIX}/opt/${JDK_HOME%-r*} + export JDK_HOME + fi + fi +} + +src_prepare() { + default + + # conditionally apply patches for musl compatibility + if use elibc_musl; then + eapply "${FILESDIR}/musl/${SLOT}/build.patch" + eapply "${FILESDIR}/musl/${SLOT}/fix-bootjdk-check.patch" + eapply "${FILESDIR}/musl/${SLOT}/ppc64le.patch" + eapply "${FILESDIR}/musl/${SLOT}/aarch64.patch" + fi + + # conditionally remove not compilable module (hotspot jdk.hotspot.agent) + # this needs libthread_db which is only provided by glibc + # + # haven't found any way to disable this module so just remove it. + if use elibc_musl; then + rm -rf "${S}"/src/jdk.hotspot.agent || die "failed to remove HotSpot agent" + fi + + chmod +x configure || die +} + +src_configure() { + # Work around stack alignment issue, bug #647954. in case we ever have x86 + use x86 && append-flags -mincoming-stack-boundary=2 + + # Work around -fno-common ( GCC10 default ), bug #713180 + append-flags -fcommon + + # Enabling full docs appears to break doc building. If not + # explicitly disabled, the flag will get auto-enabled if pandoc and + # graphviz are detected. pandoc has loads of dependencies anyway. + + local myconf=( + --disable-ccache + --enable-full-docs=no + --with-boot-jdk="${JDK_HOME}" + --with-extra-cflags="${CFLAGS}" + --with-extra-cxxflags="${CXXFLAGS}" + --with-extra-ldflags="${LDFLAGS}" + --with-giflib=system + --with-lcms=system + --with-libjpeg=system + --with-libpng=system + --with-native-debug-symbols=$(usex debug internal none) + --with-vendor-name="Gentoo" + --with-vendor-url="https://gentoo.org" + --with-vendor-bug-url="https://bugs.gentoo.org" + --with-vendor-vm-bug-url="https://bugs.openjdk.java.net" + --with-vendor-version-string="${PVR}" + --with-version-pre="" + --with-version-string="${PV%_p*}" + --with-version-build="${PV#*_p}" + --with-zlib=system + --enable-dtrace=$(usex systemtap yes no) + --enable-headless-only=$(usex headless-awt yes no) + ) + + if use javafx; then + local zip="${EROOT%/}/usr/$(get_libdir)/openjfx-${SLOT}/javafx-exports.zip" + if [[ -r ${zip} ]]; then + myconf+=( --with-import-modules="${zip}" ) + else + die "${zip} not found or not readable" + fi + fi + + # PaX breaks pch, bug #601016 + if use pch && ! host-is-pax; then + myconf+=( --enable-precompiled-headers ) + else + myconf+=( --disable-precompiled-headers ) + fi + + ( + unset _JAVA_OPTIONS JAVA JAVA_TOOL_OPTIONS JAVAC XARGS + CFLAGS= CXXFLAGS= LDFLAGS= \ + CONFIG_SITE=/dev/null \ + econf "${myconf[@]}" + ) +} + +src_compile() { + local myemakeargs=( + JOBS=$(makeopts_jobs) + LOG=debug + CFLAGS_WARNINGS_ARE_ERRORS= # No -Werror + $(usex doc docs '') + $(usex jbootstrap bootcycle-images product-images) + ) + emake "${myemakeargs[@]}" -j1 #nowarn +} + +src_install() { + local dest="/usr/$(get_libdir)/${PN}-${SLOT}" + local ddest="${ED}${dest#/}" + + cd "${S}"/build/*-release/images/jdk || die + + # Create files used as storage for system preferences. + mkdir .systemPrefs || die + touch .systemPrefs/.system.lock || die + touch .systemPrefs/.systemRootModFile || die + + # Oracle and IcedTea have libjsoundalsa.so depending on + # libasound.so.2 but OpenJDK only has libjsound.so. Weird. + if ! use alsa ; then + rm -v lib/libjsound.* || die + fi + + if ! use examples ; then + rm -vr demo/ || die + fi + + if ! use source ; then + rm -v lib/src.zip || die + fi + + rm -v lib/security/cacerts || die + + dodir "${dest}" + cp -pPR * "${ddest}" || die + + dosym ../../../../../etc/ssl/certs/java/cacerts "${dest}"/lib/security/cacerts + + # must be done before running itself + java-vm_set-pax-markings "${ddest}" + + einfo "Creating the Class Data Sharing archives and disabling usage tracking" + "${ddest}/bin/java" -server -Xshare:dump -Djdk.disableLastUsageTracking || die + + use gentoo-vm && java-vm_install-env "${FILESDIR}"/${PN}-${SLOT}.env.sh + java-vm_revdep-mask + java-vm_sandbox-predict /dev/random /proc/self/coredump_filter + + if use doc ; then + docinto html + dodoc -r "${S}"/build/*-release/images/docs/* + dosym ../../../usr/share/doc/"${PF}" /usr/share/doc/"${PN}-${SLOT}" + fi +} + +pkg_postinst() { + java-vm-2_pkg_postinst + + if use gentoo-vm ; then + ewarn "WARNING! You have enabled the gentoo-vm USE flag, making this JDK" + ewarn "recognised by the system. This will almost certainly break" + ewarn "many java ebuilds as they are not ready for openjdk-11" + else + ewarn "The experimental gentoo-vm USE flag has not been enabled so this JDK" + ewarn "will not be recognised by the system. For example, simply calling" + ewarn "\"java\" will launch a different JVM. This is necessary until Gentoo" + ewarn "fully supports Java ${SLOT}. This JDK must therefore be invoked using its" + ewarn "absolute location under ${EPREFIX}/usr/$(get_libdir)/${PN}-${SLOT}." + fi +} diff --git a/dev-java/openjdk/openjdk-8.265_p01.ebuild b/dev-java/openjdk/openjdk-8.265_p01.ebuild new file mode 100644 index 0000000..4af9ae6 --- /dev/null +++ b/dev-java/openjdk/openjdk-8.265_p01.ebuild @@ -0,0 +1,268 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit check-reqs eapi7-ver flag-o-matic java-pkg-2 java-vm-2 multiprocessing pax-utils toolchain-funcs + +# we need latest -ga tag from hg, but want to keep build number as well +# as _p component of the gentoo version string. + +MY_PV=$(ver_rs 1 'u' 2 '-' ${PV%_p*}-ga) +MY_PN_AARCH64="${PN}-aarch64-shenandoah" +MY_PV_AARCH64="$(ver_rs 1 'u' 2 '-' ${PV/_p/-b})" +MY_P_AARCH64="${MY_PN_AARCH64/#${PN}-}-jdk${MY_PV_AARCH64}" + +BASE_URI="https://hg.${PN}.java.net/jdk8u/jdk8u" +AARCH64_URI="https://hg.${PN}.java.net/aarch64-port/jdk8u-shenandoah" + +DESCRIPTION="Open source implementation of the Java programming language" +HOMEPAGE="https://openjdk.java.net" +SRC_URI=" + !arm64? ( + ${BASE_URI}/archive/jdk${MY_PV}.tar.bz2 -> ${P}.tar.bz2 + ${BASE_URI}/corba/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-corba-${PV}.tar.bz2 + ${BASE_URI}/hotspot/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-hotspot-${PV}.tar.bz2 + ${BASE_URI}/jaxp/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-jaxp-${PV}.tar.bz2 + ${BASE_URI}/jaxws/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-jaxws-${PV}.tar.bz2 + ${BASE_URI}/jdk/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-jdk-${PV}.tar.bz2 + ${BASE_URI}/langtools/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-langtools-${PV}.tar.bz2 + ${BASE_URI}/nashorn/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-nashorn-${PV}.tar.bz2 + ) + arm64? ( + ${AARCH64_URI}/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-${PV}.tar.bz2 + ${AARCH64_URI}/corba/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-corba-${PV}.tar.bz2 + ${AARCH64_URI}/hotspot/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-hotspot-${PV}.tar.bz2 + ${AARCH64_URI}/jaxp/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-jaxp-${PV}.tar.bz2 + ${AARCH64_URI}/jaxws/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-jaxws-${PV}.tar.bz2 + ${AARCH64_URI}/jdk/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-jdk-${PV}.tar.bz2 + ${AARCH64_URI}/langtools/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-langtools-${PV}.tar.bz2 + ${AARCH64_URI}/nashorn/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-nashorn-jdk${PV}.tar.bz2 + ) +" + +LICENSE="GPL-2" +SLOT="$(ver_cut 1)" +KEYWORDS="amd64 arm64 ppc64 x86" +IUSE="alsa debug cups doc examples headless-awt javafx +jbootstrap +pch selinux source" + +COMMON_DEPEND=" + media-libs/freetype:2= + media-libs/giflib:0/7 + sys-libs/zlib +" +# Many libs are required to build, but not to run, make is possible to remove +# by listing conditionally in RDEPEND unconditionally in DEPEND +RDEPEND=" + ${COMMON_DEPEND} + >=sys-apps/baselayout-java-0.1.0-r1 + !headless-awt? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXi + x11-libs/libXrender + x11-libs/libXt + x11-libs/libXtst + ) + alsa? ( media-libs/alsa-lib ) + cups? ( net-print/cups ) + selinux? ( sec-policy/selinux-java ) +" + +DEPEND=" + ${COMMON_DEPEND} + app-arch/zip + media-libs/alsa-lib + net-print/cups + x11-base/xorg-proto + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXi + x11-libs/libXrender + x11-libs/libXt + x11-libs/libXtst + || ( + dev-java/openjdk-bin:${SLOT} + dev-java/icedtea-bin:${SLOT} + dev-java/openjdk:${SLOT} + dev-java/icedtea:${SLOT} + ) +" + +PDEPEND="javafx? ( dev-java/openjfx:${SLOT} )" + +# The space required to build varies wildly depending on USE flags, +# ranging from 2GB to 16GB. This function is certainly not exact but +# should be close enough to be useful. +openjdk_check_requirements() { + local M + M=2048 + M=$(( $(usex debug 3 1) * $M )) + M=$(( $(usex jbootstrap 2 1) * $M )) + M=$(( $(usex doc 320 0) + $(usex source 128 0) + 192 + $M )) + + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +pkg_pretend() { + openjdk_check_requirements + if [[ ${MERGE_TYPE} != binary ]]; then + has ccache ${FEATURES} && die "FEATURES=ccache doesn't work with ${PN}, bug #677876" + fi +} + +pkg_setup() { + openjdk_check_requirements + + JAVA_PKG_WANT_BUILD_VM="openjdk-${SLOT} openjdk-bin-${SLOT} icedtea-${SLOT} icedtea-bin-${SLOT}" + JAVA_PKG_WANT_SOURCE="${SLOT}" + JAVA_PKG_WANT_TARGET="${SLOT}" + + java-vm-2_pkg_setup + java-pkg-2_pkg_setup +} + +src_unpack() { + default + mv -v "jdk${SLOT}u"* "${P}" || die + + local repo + for repo in corba hotspot jdk jaxp jaxws langtools nashorn; do + mv -v "${repo}-"* "${P}/${repo}" || die + done +} + +src_prepare() { + default + + # new warnings in new gcc https://bugs.gentoo.org/685426 + sed -i '/^WARNINGS_ARE_ERRORS/ s/-Werror/-Wno-error/' \ + hotspot/make/linux/makefiles/gcc.make || die + + # conditionally apply patches for musl compatibility + if use elibc_musl; then + eapply "${FILESDIR}/musl/${SLOT}/0001_musl_hotspot.patch" + eapply "${FILESDIR}/musl/${SLOT}/0002_musl_hotspot_ppc.patch" + eapply "${FILESDIR}/musl/${SLOT}/0004_musl_hotspot_noagent.patch" + eapply "${FILESDIR}/musl/${SLOT}/0005_musl_fix_libjvm_load.patch" + eapply "${FILESDIR}/musl/${SLOT}/0006_musl_jdk.patch" + eapply "${FILESDIR}/musl/${SLOT}/0007_musl_jdk_includes.patch" + eapply "${FILESDIR}/musl/${SLOT}/0008_musl_jdk_execinfo.patch" + eapply "${FILESDIR}/musl/${SLOT}/0009_fix_jdk_ipv6_init.patch" + eapply "${FILESDIR}/musl/${SLOT}/0010_fix_jdk_close_fds.patch" + fi + + # apply this patch here as the sources are not available unless ARCH == arm64 + if use elibc_musl && use arm64; then + eapply "${FILESDIR}/patches/${PN}-${SLOT}/0003_musl_hotspot_aarch64.patch" + fi + + chmod +x configure || die +} + +src_configure() { + # general build info found here: + #https://hg.openjdk.java.net/jdk8/jdk8/raw-file/tip/README-builds.html + + # Work around stack alignment issue, bug #647954. + use x86 && append-flags -mincoming-stack-boundary=2 + + # Work around -fno-common ( GCC10 default ), bug #706638 + append-flags -fcommon + + tc-export_build_env CC CXX PKG_CONFIG STRIP + + local myconf=( + --disable-ccache + --enable-unlimited-crypto + --with-boot-jdk="${JDK_HOME}" + --with-extra-cflags="${CFLAGS}" + --with-extra-cxxflags="${CXXFLAGS}" + --with-extra-ldflags="${LDFLAGS}" + --with-giflib=system + --with-jtreg=no + --with-jobs=1 + --with-num-cores=1 + --with-update-version="$(ver_cut 2)" + --with-build-number="b$(ver_cut 4)" + --with-milestone="fcs" # magic variable that means "release version" + --with-vendor-name="Gentoo" + --with-vendor-url="https://gentoo.org" + --with-vendor-bug-url="https://bugs.gentoo.org" + --with-vendor-vm-bug-url="https://bugs.openjdk.java.net" + --with-zlib=system + --with-native-debug-symbols=$(usex debug internal none) + $(usex headless-awt --disable-headful '') + ) + + # PaX breaks pch, bug #601016 + if use pch && ! host-is-pax; then + myconf+=( --enable-precompiled-headers ) + else + myconf+=( --disable-precompiled-headers ) + fi + + ( + unset _JAVA_OPTIONS JAVA JAVA_TOOL_OPTIONS JAVAC XARGS + CFLAGS= CXXFLAGS= LDFLAGS= \ + CONFIG_SITE=/dev/null \ + CONFIG_SHELL="${EPREFIX}/bin/bash" + econf "${myconf[@]}" + ) +} + +src_compile() { + local myemakeargs=( + JOBS=$(makeopts_jobs) + LOG=debug + $(usex doc docs '') + $(usex jbootstrap bootcycle-images images) + ) + emake "${myemakeargs[@]}" -j1 #nowarn +} + +src_install() { + local dest="/usr/$(get_libdir)/${PN}-${SLOT}" + local ddest="${ED%/}/${dest#/}" + + cd "${S}"/build/*-release/images/j2sdk-image || die + + if ! use alsa; then + rm -v jre/lib/$(get_system_arch)/libjsoundalsa.* || die + fi + + # build system does not remove that + if use headless-awt ; then + rm -fvr jre/lib/$(get_system_arch)/lib*{[jx]awt,splashscreen}* \ + {,jre/}bin/policytool bin/appletviewer || die + fi + + if ! use examples ; then + rm -vr demo/ || die + fi + + if ! use source ; then + rm -v src.zip || die + fi + + dodir "${dest}" + cp -pPR * "${ddest}" || die + + dosym ../../../../../../etc/ssl/certs/java/cacerts "${dest}"/jre/lib/security/cacerts + + java-vm_install-env "${FILESDIR}"/${PN}-${SLOT}.env.sh + java-vm_set-pax-markings "${ddest}" + java-vm_revdep-mask + java-vm_sandbox-predict /dev/random /proc/self/coredump_filter + + if use doc ; then + docinto html + dodoc -r "${S}"/build/*-release/docs/* + fi +} + +pkg_postinst() { + java-vm-2_pkg_postinst + einfo "JavaWebStart functionality provided by icedtea-web package" +} + diff --git a/dev-java/openjdk/openjdk-8.272_p10.ebuild b/dev-java/openjdk/openjdk-8.272_p10.ebuild new file mode 100644 index 0000000..28b42be --- /dev/null +++ b/dev-java/openjdk/openjdk-8.272_p10.ebuild @@ -0,0 +1,267 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit check-reqs eapi7-ver flag-o-matic java-pkg-2 java-vm-2 multiprocessing pax-utils toolchain-funcs + +# we need latest -ga tag from hg, but want to keep build number as well +# as _p component of the gentoo version string. + +MY_PV=$(ver_rs 1 'u' 2 '-' ${PV%_p*}-ga) +MY_PN_AARCH64="${PN}-aarch64-shenandoah" +MY_PV_AARCH64="$(ver_rs 1 'u' 2 '-' ${PV/_p/-b})" +MY_P_AARCH64="${MY_PN_AARCH64/#${PN}-}-jdk${MY_PV_AARCH64}" + +BASE_URI="https://hg.${PN}.java.net/jdk8u/jdk8u" +AARCH64_URI="https://hg.${PN}.java.net/aarch64-port/jdk8u-shenandoah" + +DESCRIPTION="Open source implementation of the Java programming language" +HOMEPAGE="https://openjdk.java.net" +SRC_URI=" + !arm64? ( + ${BASE_URI}/archive/jdk${MY_PV}.tar.bz2 -> ${P}.tar.bz2 + ${BASE_URI}/corba/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-corba-${PV}.tar.bz2 + ${BASE_URI}/hotspot/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-hotspot-${PV}.tar.bz2 + ${BASE_URI}/jaxp/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-jaxp-${PV}.tar.bz2 + ${BASE_URI}/jaxws/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-jaxws-${PV}.tar.bz2 + ${BASE_URI}/jdk/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-jdk-${PV}.tar.bz2 + ${BASE_URI}/langtools/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-langtools-${PV}.tar.bz2 + ${BASE_URI}/nashorn/archive/jdk${MY_PV}.tar.bz2 -> ${PN}-nashorn-${PV}.tar.bz2 + ) + arm64? ( + ${AARCH64_URI}/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-${PV}.tar.bz2 + ${AARCH64_URI}/corba/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-corba-${PV}.tar.bz2 + ${AARCH64_URI}/hotspot/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-hotspot-${PV}.tar.bz2 + ${AARCH64_URI}/jaxp/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-jaxp-${PV}.tar.bz2 + ${AARCH64_URI}/jaxws/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-jaxws-${PV}.tar.bz2 + ${AARCH64_URI}/jdk/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-jdk-${PV}.tar.bz2 + ${AARCH64_URI}/langtools/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-langtools-${PV}.tar.bz2 + ${AARCH64_URI}/nashorn/archive/${MY_P_AARCH64}.tar.bz2 -> ${MY_PN_AARCH64}-nashorn-jdk${PV}.tar.bz2 + ) +" + +LICENSE="GPL-2" +SLOT="$(ver_cut 1)" +KEYWORDS="amd64 ~arm64 ppc64 x86" +IUSE="alsa debug cups doc examples headless-awt javafx +jbootstrap +pch selinux source" + +COMMON_DEPEND=" + media-libs/freetype:2= + media-libs/giflib:0/7 + sys-libs/zlib +" +# Many libs are required to build, but not to run, make is possible to remove +# by listing conditionally in RDEPEND unconditionally in DEPEND +RDEPEND=" + ${COMMON_DEPEND} + >=sys-apps/baselayout-java-0.1.0-r1 + !headless-awt? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXi + x11-libs/libXrender + x11-libs/libXt + x11-libs/libXtst + ) + alsa? ( media-libs/alsa-lib ) + cups? ( net-print/cups ) + selinux? ( sec-policy/selinux-java ) +" + +DEPEND=" + ${COMMON_DEPEND} + app-arch/zip + media-libs/alsa-lib + net-print/cups + x11-base/xorg-proto + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXi + x11-libs/libXrender + x11-libs/libXt + x11-libs/libXtst + || ( + dev-java/openjdk-bin:${SLOT} + dev-java/icedtea-bin:${SLOT} + dev-java/openjdk:${SLOT} + dev-java/icedtea:${SLOT} + ) +" + +PDEPEND="javafx? ( dev-java/openjfx:${SLOT} )" + +# The space required to build varies wildly depending on USE flags, +# ranging from 2GB to 16GB. This function is certainly not exact but +# should be close enough to be useful. +openjdk_check_requirements() { + local M + M=2048 + M=$(( $(usex debug 3 1) * $M )) + M=$(( $(usex jbootstrap 2 1) * $M )) + M=$(( $(usex doc 320 0) + $(usex source 128 0) + 192 + $M )) + + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +pkg_pretend() { + openjdk_check_requirements + if [[ ${MERGE_TYPE} != binary ]]; then + has ccache ${FEATURES} && die "FEATURES=ccache doesn't work with ${PN}, bug #677876" + fi +} + +pkg_setup() { + openjdk_check_requirements + + JAVA_PKG_WANT_BUILD_VM="openjdk-${SLOT} openjdk-bin-${SLOT} icedtea-${SLOT} icedtea-bin-${SLOT}" + JAVA_PKG_WANT_SOURCE="${SLOT}" + JAVA_PKG_WANT_TARGET="${SLOT}" + + java-vm-2_pkg_setup + java-pkg-2_pkg_setup +} + +src_unpack() { + default + mv -v "jdk${SLOT}u"* "${P}" || die + + local repo + for repo in corba hotspot jdk jaxp jaxws langtools nashorn; do + mv -v "${repo}-"* "${P}/${repo}" || die + done +} + +src_prepare() { + default + + # new warnings in new gcc https://bugs.gentoo.org/685426 + sed -i '/^WARNINGS_ARE_ERRORS/ s/-Werror/-Wno-error/' \ + hotspot/make/linux/makefiles/gcc.make || die + + # conditionally apply patches for musl compatibility + if use elibc_musl; then + eapply "${FILESDIR}/musl/${SLOT}/0001_musl_hotspot.patch" + eapply "${FILESDIR}/musl/${SLOT}/0002_musl_hotspot_ppc.patch" + eapply "${FILESDIR}/musl/${SLOT}/0004_musl_hotspot_noagent.patch" + eapply "${FILESDIR}/musl/${SLOT}/0005_musl_fix_libjvm_load.patch" + eapply "${FILESDIR}/musl/${SLOT}/0006_musl_jdk.patch" + eapply "${FILESDIR}/musl/${SLOT}/0007_musl_jdk_includes.patch" + eapply "${FILESDIR}/musl/${SLOT}/0008_musl_jdk_execinfo.patch" + eapply "${FILESDIR}/musl/${SLOT}/0009_fix_jdk_ipv6_init.patch" + eapply "${FILESDIR}/musl/${SLOT}/0010_fix_jdk_close_fds.patch" + fi + + # apply this patch here as the sources are not available unless ARCH == arm64 + if use elibc_musl && use arm64; then + eapply "${FILESDIR}/patches/${PN}-${SLOT}/0003_musl_hotspot_aarch64.patch" + fi + + chmod +x configure || die +} + +src_configure() { + # general build info found here: + #https://hg.openjdk.java.net/jdk8/jdk8/raw-file/tip/README-builds.html + + # Work around stack alignment issue, bug #647954. + use x86 && append-flags -mincoming-stack-boundary=2 + + # Work around -fno-common ( GCC10 default ), bug #706638 + append-flags -fcommon + + tc-export_build_env CC CXX PKG_CONFIG STRIP + + local myconf=( + --disable-ccache + --enable-unlimited-crypto + --with-boot-jdk="${JDK_HOME}" + --with-extra-cflags="${CFLAGS}" + --with-extra-cxxflags="${CXXFLAGS}" + --with-extra-ldflags="${LDFLAGS}" + --with-giflib=system + --with-jtreg=no + --with-jobs=1 + --with-num-cores=1 + --with-update-version="$(ver_cut 2)" + --with-build-number="b$(ver_cut 4)" + --with-milestone="fcs" # magic variable that means "release version" + --with-vendor-name="Gentoo" + --with-vendor-url="https://gentoo.org" + --with-vendor-bug-url="https://bugs.gentoo.org" + --with-vendor-vm-bug-url="https://bugs.openjdk.java.net" + --with-zlib=system + --with-native-debug-symbols=$(usex debug internal none) + $(usex headless-awt --disable-headful '') + ) + + # PaX breaks pch, bug #601016 + if use pch && ! host-is-pax; then + myconf+=( --enable-precompiled-headers ) + else + myconf+=( --disable-precompiled-headers ) + fi + + ( + unset _JAVA_OPTIONS JAVA JAVA_TOOL_OPTIONS JAVAC XARGS + CFLAGS= CXXFLAGS= LDFLAGS= \ + CONFIG_SITE=/dev/null \ + CONFIG_SHELL="${EPREFIX}/bin/bash" + econf "${myconf[@]}" + ) +} + +src_compile() { + local myemakeargs=( + JOBS=$(makeopts_jobs) + LOG=debug + $(usex doc docs '') + $(usex jbootstrap bootcycle-images images) + ) + emake "${myemakeargs[@]}" -j1 #nowarn +} + +src_install() { + local dest="/usr/$(get_libdir)/${PN}-${SLOT}" + local ddest="${ED%/}/${dest#/}" + + cd "${S}"/build/*-release/images/j2sdk-image || die + + if ! use alsa; then + rm -v jre/lib/$(get_system_arch)/libjsoundalsa.* || die + fi + + # build system does not remove that + if use headless-awt ; then + rm -fvr jre/lib/$(get_system_arch)/lib*{[jx]awt,splashscreen}* \ + {,jre/}bin/policytool bin/appletviewer || die + fi + + if ! use examples ; then + rm -vr demo/ || die + fi + + if ! use source ; then + rm -v src.zip || die + fi + + dodir "${dest}" + cp -pPR * "${ddest}" || die + + dosym ../../../../../../etc/ssl/certs/java/cacerts "${dest}"/jre/lib/security/cacerts + + java-vm_install-env "${FILESDIR}"/${PN}-${SLOT}.env.sh + java-vm_set-pax-markings "${ddest}" + java-vm_revdep-mask + java-vm_sandbox-predict /dev/random /proc/self/coredump_filter + + if use doc ; then + docinto html + dodoc -r "${S}"/build/*-release/docs/* + fi +} + +pkg_postinst() { + java-vm-2_pkg_postinst + einfo "JavaWebStart functionality provided by icedtea-web package" +}
