mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-20 08:19:41 +01:00
Compare commits
1382 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
87ed3526b8 | ||
|
|
c1c6275090 | ||
|
|
cee76db30b | ||
|
|
f33f27d10c | ||
|
|
2f0f1c81bf | ||
|
|
2c8c4b21ea | ||
|
|
89f264a048 | ||
|
|
cf62bb7671 | ||
|
|
ad11a26693 | ||
|
|
ed83d70ba4 | ||
|
|
47325f693d | ||
|
|
e257e2a481 | ||
|
|
55904cb0ce | ||
|
|
03cf104b1b | ||
|
|
d78eded4b0 | ||
|
|
d65016882d | ||
|
|
a2e1657b6c | ||
|
|
8d8b3f493c | ||
|
|
c0433beb44 | ||
|
|
156972852f | ||
|
|
08c8d0503f | ||
|
|
3b30864bd5 | ||
|
|
8cb17166bc | ||
|
|
8281c294b3 | ||
|
|
624648f240 | ||
|
|
cfd11f0552 | ||
|
|
54047560ef | ||
|
|
e9c4e6e77e | ||
|
|
990656ec71 | ||
|
|
9663eeb620 | ||
|
|
9a8487dd2f | ||
|
|
abc5cbf723 | ||
|
|
b9550e62c6 | ||
|
|
71b20ee124 | ||
|
|
ab7acc8be0 | ||
|
|
53148742e4 | ||
|
|
1662cd1734 | ||
|
|
eb88e80252 | ||
|
|
0846870886 | ||
|
|
3859df1f02 | ||
|
|
3bd2992af1 | ||
|
|
758de7a031 | ||
|
|
713889550f | ||
|
|
0ddb2a608c | ||
|
|
449cc1e6b4 | ||
|
|
6adaa6bb60 | ||
|
|
4b4a413a05 | ||
|
|
1700e9d49a | ||
|
|
29d8893056 | ||
|
|
c1bec44987 | ||
|
|
ad8ad204ab | ||
|
|
99b5d5ca2e | ||
|
|
3f12c3d293 | ||
|
|
36323d3153 | ||
|
|
fe06aab30d | ||
|
|
6cf838170d | ||
|
|
a75a770456 | ||
|
|
b1dd40a1d3 | ||
|
|
6772cacd8c | ||
|
|
c1b97f239a | ||
|
|
68a21f16f9 | ||
|
|
ead0a54af0 | ||
|
|
d4b8d1dd46 | ||
|
|
c6e9997ba9 | ||
|
|
877d4abd17 | ||
|
|
70bf704696 | ||
|
|
7b98bac729 | ||
|
|
bab537f22e | ||
|
|
23d8f6858f | ||
|
|
95ed3c267e | ||
|
|
4939273424 | ||
|
|
adbe22f47c | ||
|
|
486a66612f | ||
|
|
a65184addb | ||
|
|
02541c9eb2 | ||
|
|
ffc26344c9 | ||
|
|
4006ec90d0 | ||
|
|
9b5b58a70a | ||
|
|
d6fafd5f73 | ||
|
|
1cb32cd7e7 | ||
|
|
31cb7c6e16 | ||
|
|
4c3de71ff2 | ||
|
|
35443f9130 | ||
|
|
7709600504 | ||
|
|
ec133de788 | ||
|
|
eebdd82123 | ||
|
|
ff203f6280 | ||
|
|
63f0d35fe5 | ||
|
|
f0262e1923 | ||
|
|
e58319baac | ||
|
|
269b8d44d0 | ||
|
|
eb528e57a4 | ||
|
|
51b4bad7f5 | ||
|
|
29d4ed8dea | ||
|
|
a6fd437804 | ||
|
|
5b4cf1beb8 | ||
|
|
ed17133d12 | ||
|
|
a9fcbac81b | ||
|
|
96346e5fd6 | ||
|
|
ed74e238ef | ||
|
|
9ea5ddf73d | ||
|
|
091cac4a7f | ||
|
|
041dba529d | ||
|
|
d3334cc195 | ||
|
|
c45a03df33 | ||
|
|
8bc68ce9b9 | ||
|
|
4fed029d93 | ||
|
|
1509ab735d | ||
|
|
7ac52dfa28 | ||
|
|
7e16ad73ea | ||
|
|
4c2ad8fa95 | ||
|
|
0570787318 | ||
|
|
820a6fc65d | ||
|
|
bff42f09c7 | ||
|
|
786579badb | ||
|
|
d9b636d3bc | ||
|
|
30b663e7a8 | ||
|
|
9b6491201a | ||
|
|
5c6de81191 | ||
|
|
d428e271ca | ||
|
|
c774a97eb8 | ||
|
|
1033826fee | ||
|
|
b79f11d7d3 | ||
|
|
7dfe0251d3 | ||
|
|
ec8ee436cf | ||
|
|
149fe8f32c | ||
|
|
7f142361e8 | ||
|
|
fe5de32e5b | ||
|
|
a893c72856 | ||
|
|
a85c912750 | ||
|
|
89ce59ef34 | ||
|
|
979f2eb38f | ||
|
|
4b07fd8980 | ||
|
|
e4e79243af | ||
|
|
936d7da2c0 | ||
|
|
364a1f3452 | ||
|
|
d97c0ae66c | ||
|
|
f7030e8605 | ||
|
|
bf2d11be76 | ||
|
|
17c994fba4 | ||
|
|
1f80a5e06a | ||
|
|
5590d9af0c | ||
|
|
464654e8df | ||
|
|
7d090a97c3 | ||
|
|
590b12c5e5 | ||
|
|
baf17ab34f | ||
|
|
56b0beee49 | ||
|
|
52dc9a32de | ||
|
|
5a2f14b7f0 | ||
|
|
efb0a43c86 | ||
|
|
c4fa736a88 | ||
|
|
d91d1c7107 | ||
|
|
267463c3de | ||
|
|
6e69305339 | ||
|
|
1644cb43ee | ||
|
|
ace9a60ab8 | ||
|
|
2b7b8b5c1d | ||
|
|
dbbcf70635 | ||
|
|
116d64d81d | ||
|
|
a395586c4a | ||
|
|
35a57340c3 | ||
|
|
208c0bedbf | ||
|
|
caf028e382 | ||
|
|
2c2c6bd39f | ||
|
|
cc5082ed9e | ||
|
|
831e629eb6 | ||
|
|
40b0c907e6 | ||
|
|
0ab31b0377 | ||
|
|
6c38da9c30 | ||
|
|
5327c0cccb | ||
|
|
661c771147 | ||
|
|
e593a7c912 | ||
|
|
7fb7d8a8bf | ||
|
|
8499b5de7f | ||
|
|
a50d27bb0c | ||
|
|
4299c1614f | ||
|
|
97a8e9caa6 | ||
|
|
823e0b238b | ||
|
|
9349a8ef6f | ||
|
|
36c04e2d46 | ||
|
|
3dcca9593f | ||
|
|
f41f5a9d74 | ||
|
|
dd79abe5bc | ||
|
|
fe6e4635c6 | ||
|
|
648ba03430 | ||
|
|
0cf86c3786 | ||
|
|
d33ee32081 | ||
|
|
1e419d7917 | ||
|
|
a295c3a8b1 | ||
|
|
b0c92af0ef | ||
|
|
fb5d51e13b | ||
|
|
65090347e8 | ||
|
|
05fcee0b1a | ||
|
|
34da83bb43 | ||
|
|
17982185bd | ||
|
|
a39081a83a | ||
|
|
0eb32a5886 | ||
|
|
d25ecd1ef5 | ||
|
|
1df8b20863 | ||
|
|
10914a3ec4 | ||
|
|
5c81389d0c | ||
|
|
3209c6319e | ||
|
|
e7a5bdeab1 | ||
|
|
2dbf030ca0 | ||
|
|
a7fbd60ace | ||
|
|
f7b52e14be | ||
|
|
c433e4d307 | ||
|
|
9f21014a01 | ||
|
|
9883738870 | ||
|
|
1d1f7ea7a3 | ||
|
|
e2bcd751f0 | ||
|
|
b195ff7b91 | ||
|
|
ec90a9c89f | ||
|
|
553b2578f5 | ||
|
|
046c22dcf1 | ||
|
|
ca2aa6c934 | ||
|
|
7add8c7da0 | ||
|
|
434fef1999 | ||
|
|
84345d619c | ||
|
|
abf9c4bb46 | ||
|
|
2d3433d6f6 | ||
|
|
944f252e60 | ||
|
|
b7e67aa201 | ||
|
|
e12f262978 | ||
|
|
d8e01a4b4b | ||
|
|
7b16834f7a | ||
|
|
bc13036b75 | ||
|
|
29579bf91d | ||
|
|
82b7b4dc39 | ||
|
|
7909910a89 | ||
|
|
4409a9f4af | ||
|
|
6da7e98cd4 | ||
|
|
903f029f2c | ||
|
|
ce8a87d90d | ||
|
|
64a037c9f4 | ||
|
|
2f10fae282 | ||
|
|
4c45edee22 | ||
|
|
c4e4b97156 | ||
|
|
d3149c01cb | ||
|
|
231eab67b2 | ||
|
|
984fe786b8 | ||
|
|
1fe57f643d | ||
|
|
b46fece65a | ||
|
|
6eb3bd6a3a | ||
|
|
57483875df | ||
|
|
9202fe5080 | ||
|
|
62ceece862 | ||
|
|
5165001c3d | ||
|
|
08e47f8e63 | ||
|
|
20a684550f | ||
|
|
877988cb71 | ||
|
|
e50819c5a0 | ||
|
|
73f83373f2 | ||
|
|
be21b4011a | ||
|
|
9d321b29b7 | ||
|
|
2565abb7ba | ||
|
|
a833972cce | ||
|
|
29eaba929d | ||
|
|
afedad8e8d | ||
|
|
43b6cb274e | ||
|
|
bb09bd5f07 | ||
|
|
121c6fd50e | ||
|
|
91774efa1c | ||
|
|
ad15da1400 | ||
|
|
9fc7e4acdf | ||
|
|
52c0475827 | ||
|
|
868d9c3fe4 | ||
|
|
6e2322439c | ||
|
|
e9a54d4332 | ||
|
|
00e4497266 | ||
|
|
7bbf1b7d09 | ||
|
|
a2b662a83a | ||
|
|
40b60bafa4 | ||
|
|
7a16263692 | ||
|
|
303d0e1f0b | ||
|
|
cadf6d4dd1 | ||
|
|
c660b8ce48 | ||
|
|
327d056c57 | ||
|
|
7c70db96bb | ||
|
|
8e9a03fe07 | ||
|
|
565fb81fc6 | ||
|
|
9de1e19515 | ||
|
|
0e609c6e87 | ||
|
|
dfafc463c8 | ||
|
|
8bfc6fe62b | ||
|
|
8463a475cd | ||
|
|
d21723d500 | ||
|
|
fe59939e62 | ||
|
|
f4f689a551 | ||
|
|
f47305aadf | ||
|
|
11a966dab3 | ||
|
|
af9b85883b | ||
|
|
9027b81d9f | ||
|
|
43af8e04cc | ||
|
|
29ccd7021a | ||
|
|
04dc0d1f0b | ||
|
|
8698f4c98a | ||
|
|
e711f49caf | ||
|
|
344727d15c | ||
|
|
156c8ca0d9 | ||
|
|
9195d4754b | ||
|
|
bdc0c59c73 | ||
|
|
3f3f5be928 | ||
|
|
de01366cb7 | ||
|
|
7582708230 | ||
|
|
fcec697997 | ||
|
|
ef24995d3c | ||
|
|
573cd563bc | ||
|
|
40de9b00ee | ||
|
|
f3b6e93db1 | ||
|
|
a85f809721 | ||
|
|
01391468ff | ||
|
|
1ce9f79ed6 | ||
|
|
ddc9cd22e6 | ||
|
|
3183ec5f7f | ||
|
|
3aa8f32cd8 | ||
|
|
62bbaaf6c0 | ||
|
|
993a06955e | ||
|
|
593346b1ed | ||
|
|
ab71095149 | ||
|
|
2d072ad810 | ||
|
|
4be453a5a6 | ||
|
|
a59dfef2d3 | ||
|
|
b9c2792674 | ||
|
|
fcc04a57be | ||
|
|
dbe6fbd282 | ||
|
|
2c33beefc2 | ||
|
|
57660aa3bd | ||
|
|
094a38fe5f | ||
|
|
df721a6efa | ||
|
|
743d4bbe05 | ||
|
|
2597f7712e | ||
|
|
474c45c9c8 | ||
|
|
fc7a7fb1e4 | ||
|
|
b3b8f891c0 | ||
|
|
c658fee93a | ||
|
|
e142da9d7c | ||
|
|
697a70463e | ||
|
|
28ee8b614b | ||
|
|
d768a51760 | ||
|
|
e7ef217664 | ||
|
|
7bf9f88869 | ||
|
|
27447dc234 | ||
|
|
01221d2f1a | ||
|
|
2884aec675 | ||
|
|
7b644a6445 | ||
|
|
c92bed4779 | ||
|
|
d5650b81e6 | ||
|
|
66976b69c0 | ||
|
|
96567fa660 | ||
|
|
454f386151 | ||
|
|
1d956eb685 | ||
|
|
9fb63c6da6 | ||
|
|
7c58aa10b1 | ||
|
|
6ec2be11ca | ||
|
|
fa440d1f91 | ||
|
|
0af80b0a09 | ||
|
|
73f44a6933 | ||
|
|
f181fb45ad | ||
|
|
0e3efaeab9 | ||
|
|
eb2cba0f94 | ||
|
|
69b87cd598 | ||
|
|
dc8353d4b1 | ||
|
|
0feb26c5f6 | ||
|
|
dea1756484 | ||
|
|
7ae4bc7eb5 | ||
|
|
29817d5eac | ||
|
|
7288966f40 | ||
|
|
c1ab0795a8 | ||
|
|
9a6bbcabbb | ||
|
|
c3bfb4dceb | ||
|
|
f1781c8b43 | ||
|
|
11326a2bdd | ||
|
|
1a92d680f7 | ||
|
|
56080c1861 | ||
|
|
1f48cd46f3 | ||
|
|
a4f56c73bb | ||
|
|
d5e870a373 | ||
|
|
c5db42992c | ||
|
|
6c0dad5c58 | ||
|
|
3f546e1e49 | ||
|
|
2fb184674e | ||
|
|
b0bb2434d9 | ||
|
|
78529f21f7 | ||
|
|
c5a3981ea2 | ||
|
|
3888b699c4 | ||
|
|
b74f04914e | ||
|
|
ee342c48ab | ||
|
|
98514110c1 | ||
|
|
e250b091d2 | ||
|
|
1372ecf90b | ||
|
|
5464b37d50 | ||
|
|
1f65e83245 | ||
|
|
978a53e1dc | ||
|
|
78b7ddad5d | ||
|
|
e1f53c96e2 | ||
|
|
9236ec1f18 | ||
|
|
6b6d6e15f1 | ||
|
|
f0bf7ef0dc | ||
|
|
d3ff52f0c4 | ||
|
|
ec4cd560f5 | ||
|
|
813bb98f8e | ||
|
|
4e149bebd7 | ||
|
|
2bf6918c9c | ||
|
|
6ce7157a86 | ||
|
|
c12fe2fe8e | ||
|
|
0e60b125a1 | ||
|
|
ee080ea44a | ||
|
|
2d7ea25eae | ||
|
|
a4c24d778a | ||
|
|
c6d0251bdb | ||
|
|
20d355d738 | ||
|
|
0a55af5052 | ||
|
|
2bcebd9c93 | ||
|
|
6a8196a208 | ||
|
|
34945287a1 | ||
|
|
d4dd3b2dee | ||
|
|
049575806c | ||
|
|
f5b325311e | ||
|
|
6cc12a69a0 | ||
|
|
e813389b2e | ||
|
|
a2cefb79f6 | ||
|
|
e1e4fb0406 | ||
|
|
0d228294ae | ||
|
|
456f56ebf5 | ||
|
|
8b47362ee7 | ||
|
|
3ce9f53009 | ||
|
|
06b8d29db7 | ||
|
|
4caa7970c1 | ||
|
|
f4f42bc818 | ||
|
|
3efe5e54cc | ||
|
|
af11007288 | ||
|
|
54592e8c54 | ||
|
|
ff9ffcf876 | ||
|
|
2206e404c0 | ||
|
|
03e96a1ed1 | ||
|
|
74c6594951 | ||
|
|
cd16a86c5d | ||
|
|
8dd1cfbff7 | ||
|
|
adea93f4a4 | ||
|
|
c8205a2c13 | ||
|
|
ce06d8e269 | ||
|
|
635dc460db | ||
|
|
cb8243d0e5 | ||
|
|
fda6ef5d41 | ||
|
|
3ab13842f7 | ||
|
|
cad3ec34ca | ||
|
|
90b3dc3f60 | ||
|
|
d3a4a9b475 | ||
|
|
bd0c290109 | ||
|
|
93be4b0f80 | ||
|
|
a1342fb7d2 | ||
|
|
a7a604a156 | ||
|
|
ab360b9a4e | ||
|
|
891e40fd8f | ||
|
|
ca8656a45d | ||
|
|
0e79d16b5f | ||
|
|
9661199a0c | ||
|
|
2cc5749245 | ||
|
|
1d2dd69d12 | ||
|
|
a34734d751 | ||
|
|
2b2118f102 | ||
|
|
4c103bfac4 | ||
|
|
abd1622c60 | ||
|
|
554a528091 | ||
|
|
f7ee6200cf | ||
|
|
4ad7b9b35e | ||
|
|
1bd84e365d | ||
|
|
e135697839 | ||
|
|
9e351d39e4 | ||
|
|
083a544f9a | ||
|
|
9646a35f27 | ||
|
|
96cc657633 | ||
|
|
dc2e4efdaf | ||
|
|
7282da69fd | ||
|
|
0db753d9a8 | ||
|
|
c04c171d68 | ||
|
|
16c2e57a91 | ||
|
|
a3939a15ea | ||
|
|
b3c53cf4b6 | ||
|
|
8999eb8d68 | ||
|
|
37752e2d19 | ||
|
|
de492f1eac | ||
|
|
63dd17721a | ||
|
|
60a6720b08 | ||
|
|
b089545da7 | ||
|
|
43c0fc0dd6 | ||
|
|
ab174af9bb | ||
|
|
8a3105226e | ||
|
|
3aa99a3dc2 | ||
|
|
872b0bd396 | ||
|
|
f8dcdc1dfe | ||
|
|
50907a0aa3 | ||
|
|
1bd3db6347 | ||
|
|
e905684119 | ||
|
|
4020eb3f40 | ||
|
|
e98654c000 | ||
|
|
e597d7a79c | ||
|
|
f072e94d93 | ||
|
|
7c00c624e8 | ||
|
|
5af46691a1 | ||
|
|
206749e719 | ||
|
|
fd1c30561c | ||
|
|
0ff47fc15d | ||
|
|
da50188b7b | ||
|
|
5dab3584a8 | ||
|
|
91b886dc78 | ||
|
|
d3f1a96661 | ||
|
|
a915610cb7 | ||
|
|
bda6b35390 | ||
|
|
f323fa3574 | ||
|
|
47f4b3a4be | ||
|
|
97c22d93bc | ||
|
|
a2a3c84135 | ||
|
|
4d8c088d59 | ||
|
|
f576d69ab2 | ||
|
|
ce97a7d467 | ||
|
|
81ae029a92 | ||
|
|
a84f0f8911 | ||
|
|
c6aa8d2e48 | ||
|
|
825f3db45b | ||
|
|
72fe9ce7c6 | ||
|
|
c6bb55c072 | ||
|
|
060373a90c | ||
|
|
19f5d69c6a | ||
|
|
02dedfe875 | ||
|
|
3c3a9d719b | ||
|
|
28e601e5aa | ||
|
|
cf8862cf5a | ||
|
|
cc3e79256f | ||
|
|
ca1d49055c | ||
|
|
08c5546909 | ||
|
|
9462701493 | ||
|
|
efa5cb68f4 | ||
|
|
6c6b6c71f7 | ||
|
|
4f0309ac88 | ||
|
|
13839662b8 | ||
|
|
72e091a2b8 | ||
|
|
c06bfb8b85 | ||
|
|
9bf35a8fd9 | ||
|
|
28bf0f5796 | ||
|
|
50d4babe04 | ||
|
|
bc5a4f7d82 | ||
|
|
a3f0cea107 | ||
|
|
208a3ab564 | ||
|
|
3d9a82cb5d | ||
|
|
318d87e970 | ||
|
|
6b5d72097f | ||
|
|
8777b2615c | ||
|
|
7dd7dad357 | ||
|
|
6d79960648 | ||
|
|
a2e1ee49e6 | ||
|
|
7c86ac1119 | ||
|
|
1a9914bc79 | ||
|
|
f9c70c9d37 | ||
|
|
eae1efc129 | ||
|
|
6303004e72 | ||
|
|
3200586831 | ||
|
|
925ff23c34 | ||
|
|
1556d7cc1c | ||
|
|
da182c3fe6 | ||
|
|
926ce89ee6 | ||
|
|
19e3e05eb0 | ||
|
|
798ef9d1ae | ||
|
|
546826233c | ||
|
|
98f112cb50 | ||
|
|
b8d10b0a5f | ||
|
|
c70ca80107 | ||
|
|
c2e816f4d3 | ||
|
|
07111b4d1d | ||
|
|
488a3d980a | ||
|
|
9dd25dc0d3 | ||
|
|
c99b2e3c54 | ||
|
|
4cc896ed67 | ||
|
|
c9d252fe6b | ||
|
|
69b14f5ebc | ||
|
|
094fb69ed9 | ||
|
|
8c5e1ab94f | ||
|
|
65edd3e1c3 | ||
|
|
1d4ddca27a | ||
|
|
7e9a086764 | ||
|
|
78cc9d8450 | ||
|
|
add7822ba2 | ||
|
|
ac03e8c04f | ||
|
|
ee8234370e | ||
|
|
95e4e04549 | ||
|
|
dc481612a7 | ||
|
|
0b752804b1 | ||
|
|
b9d4b7da71 | ||
|
|
16121ec00a | ||
|
|
767cfd53bd | ||
|
|
1ce43b18dc | ||
|
|
6e9b19e82f | ||
|
|
d87190868e | ||
|
|
dcaef12127 | ||
|
|
87eb6e5647 | ||
|
|
9901164d87 | ||
|
|
d3ade62c13 | ||
|
|
65eca44994 | ||
|
|
73ebb45dae | ||
|
|
b4dbc256c9 | ||
|
|
9f0f64b94e | ||
|
|
859fb83a43 | ||
|
|
7517d38e50 | ||
|
|
048fe5a039 | ||
|
|
4a6fe74a4d | ||
|
|
805361d260 | ||
|
|
b8170420e2 | ||
|
|
f0ba2f0d30 | ||
|
|
669971498c | ||
|
|
d1bb4103fb | ||
|
|
362cad7ad9 | ||
|
|
27236a8d9f | ||
|
|
dca0fc34a4 | ||
|
|
8b6ff636c5 | ||
|
|
b60573856a | ||
|
|
b656110b06 | ||
|
|
117becc6da | ||
|
|
038409e60c | ||
|
|
38a68d921f | ||
|
|
fba3ecadcb | ||
|
|
b414f7b1d7 | ||
|
|
e119b8b052 | ||
|
|
845b97296f | ||
|
|
2faff516a7 | ||
|
|
a2028acc90 | ||
|
|
7a863b83b8 | ||
|
|
66b5dc4c38 | ||
|
|
3a2023cb62 | ||
|
|
8fef1b84a6 | ||
|
|
d3a088c86a | ||
|
|
9894c106a9 | ||
|
|
210fa170a1 | ||
|
|
39ab336de1 | ||
|
|
664881056c | ||
|
|
97dff6470f | ||
|
|
cbb3e23f9f | ||
|
|
1d235afe13 | ||
|
|
80bc0515ff | ||
|
|
e4286fa20a | ||
|
|
2874c751a6 | ||
|
|
b5287d5e55 | ||
|
|
cf58f1b749 | ||
|
|
59620a1e60 | ||
|
|
1ffc5c8197 | ||
|
|
08acf57ac7 | ||
|
|
78aa1e2e2f | ||
|
|
bf7fefb80b | ||
|
|
591ac2ef50 | ||
|
|
712fb2bcf7 | ||
|
|
8b4339670a | ||
|
|
7732dbc86f | ||
|
|
2145c1de46 | ||
|
|
db96182d4d | ||
|
|
7d3a8b1c8d | ||
|
|
4df4725fb3 | ||
|
|
77f841b710 | ||
|
|
ce9221901c | ||
|
|
25f5c5d3df | ||
|
|
258699b900 | ||
|
|
bd7f7cede9 | ||
|
|
8f9a72606e | ||
|
|
767700426e | ||
|
|
2f823aa00f | ||
|
|
965bcf7e23 | ||
|
|
e1a263fff6 | ||
|
|
2eab7dc431 | ||
|
|
03c6d56913 | ||
|
|
06b3c9406b | ||
|
|
7c08151fbb | ||
|
|
6e4165383e | ||
|
|
4d9f462317 | ||
|
|
6fe75a62a1 | ||
|
|
ed233a1229 | ||
|
|
9ee07da50e | ||
|
|
705347065a | ||
|
|
f20e47be90 | ||
|
|
f7bd37e39c | ||
|
|
5e57821ca6 | ||
|
|
a9bb772f85 | ||
|
|
2a987d97e8 | ||
|
|
837102edeb | ||
|
|
6a8f3ddb45 | ||
|
|
0f30535b67 | ||
|
|
4c6d2cb2fa | ||
|
|
4dc9d20471 | ||
|
|
d6a3022ea7 | ||
|
|
ea1d3798a1 | ||
|
|
e5c08c57a4 | ||
|
|
3a09621830 | ||
|
|
067417a459 | ||
|
|
61e5bae99b | ||
|
|
bec9115740 | ||
|
|
27afc7e9fa | ||
|
|
d243fe67a7 | ||
|
|
0631b6257d | ||
|
|
db2d48c7d2 | ||
|
|
0a5e391f0d | ||
|
|
dfb4f48a3a | ||
|
|
cf5ddfd900 | ||
|
|
39343f4817 | ||
|
|
759ba697cb | ||
|
|
a7409d30d0 | ||
|
|
9471db92e1 | ||
|
|
c64b3a06f1 | ||
|
|
b861532e1b | ||
|
|
c07f47d9b9 | ||
|
|
82fa73d15d | ||
|
|
03013bb4a7 | ||
|
|
df62d8e662 | ||
|
|
4fc8edc5ab | ||
|
|
bbb95da3be | ||
|
|
cdfffc2029 | ||
|
|
3d50ab29a7 | ||
|
|
d5e5236ad2 | ||
|
|
d16e541cbc | ||
|
|
2c19db4fec | ||
|
|
11e180a62b | ||
|
|
84c06665ff | ||
|
|
155a7bcfa0 | ||
|
|
21afe34804 | ||
|
|
a1a37e3da4 | ||
|
|
e20f5930f2 | ||
|
|
90d7fe219f | ||
|
|
ce3fd04a91 | ||
|
|
ac1705b0d0 | ||
|
|
902d0436ad | ||
|
|
26ea1cbca4 | ||
|
|
e2d7a1331d | ||
|
|
18f8bb34ad | ||
|
|
b6010ab7dc | ||
|
|
248d11aa2f | ||
|
|
a9c3f88f20 | ||
|
|
32d46a70a5 | ||
|
|
10410befa4 | ||
|
|
67d6ddfe93 | ||
|
|
05ac5057d8 | ||
|
|
d95ef1a60a | ||
|
|
d72cc38c56 | ||
|
|
b666d61f80 | ||
|
|
e2fcf61691 | ||
|
|
753d0effcc | ||
|
|
f0d119cc71 | ||
|
|
ee6b6959b2 | ||
|
|
41697444e7 | ||
|
|
3b2d3cc0e8 | ||
|
|
368d355ad5 | ||
|
|
9819e027bd | ||
|
|
dc6cec6a6c | ||
|
|
015f3b7eca | ||
|
|
c9513b9dab | ||
|
|
d745c7f100 | ||
|
|
d88e79d826 | ||
|
|
0a4ba85f60 | ||
|
|
2316340931 | ||
|
|
c9e3ca92c6 | ||
|
|
ad28ffea33 | ||
|
|
68ac49e3ce | ||
|
|
c3bd4d6e15 | ||
|
|
cff267fa1c | ||
|
|
3c11ca16a6 | ||
|
|
9e871219ff | ||
|
|
a496fdf020 | ||
|
|
adb9d078e6 | ||
|
|
c1370cd8ac | ||
|
|
0bc5d4d05a | ||
|
|
f7c46cdd7a | ||
|
|
2473536ca7 | ||
|
|
ea1e964a1e | ||
|
|
8e5c9b85b2 | ||
|
|
7d32ed03ff | ||
|
|
203052093f | ||
|
|
64e4ad70b0 | ||
|
|
db05fce613 | ||
|
|
1862e2693f | ||
|
|
9b57ae83c2 | ||
|
|
a12ac7408a | ||
|
|
7234680db2 | ||
|
|
6d5e340301 | ||
|
|
837e00b4a3 | ||
|
|
71022c657c | ||
|
|
4d5440c5ca | ||
|
|
4165f18149 | ||
|
|
67f30f4aa4 | ||
|
|
aec1488991 | ||
|
|
74931526c9 | ||
|
|
214803f2ec | ||
|
|
93a419a93b | ||
|
|
d6e4c4e33b | ||
|
|
905c5312c9 | ||
|
|
57e192bfd4 | ||
|
|
606f186799 | ||
|
|
e9873754f6 | ||
|
|
a06a862b23 | ||
|
|
cd472c5494 | ||
|
|
fb1ba37c62 | ||
|
|
cbe8bfc157 | ||
|
|
2559be0706 | ||
|
|
1cd01500c4 | ||
|
|
3106daba8d | ||
|
|
15b0ee2770 | ||
|
|
deb07a9091 | ||
|
|
f9d1380b64 | ||
|
|
2e1210fcef | ||
|
|
1f3cf65aa0 | ||
|
|
5a5b8427a2 | ||
|
|
824c6e5300 | ||
|
|
07be0f15f9 | ||
|
|
6059230421 | ||
|
|
37ad3217c3 | ||
|
|
e6d110684b | ||
|
|
a4763a3d98 | ||
|
|
216306819c | ||
|
|
f7ffde5caa | ||
|
|
24e532e31d | ||
|
|
67c71b4db2 | ||
|
|
fb62180e37 | ||
|
|
e644655365 | ||
|
|
2918ab3f38 | ||
|
|
eefccc154c | ||
|
|
337d105cec | ||
|
|
086c5b84a5 | ||
|
|
a79182f544 | ||
|
|
c29c2c8410 | ||
|
|
098abe25ce | ||
|
|
8117790458 | ||
|
|
60f5b0b12c | ||
|
|
4923ea09ea | ||
|
|
17bb038118 | ||
|
|
60aa78906a | ||
|
|
d6c79c7d8f | ||
|
|
9498bb53ed | ||
|
|
17b4ccfa9f | ||
|
|
201b7233da | ||
|
|
dac3d2d280 | ||
|
|
4f47f56c91 | ||
|
|
17ebf11894 | ||
|
|
a22522cc0f | ||
|
|
8b79fe623a | ||
|
|
85b0d7f59e | ||
|
|
86d91f05b2 | ||
|
|
4950e14a0a | ||
|
|
fb51fb9458 | ||
|
|
15d7308ad5 | ||
|
|
def512b2eb | ||
|
|
639255c400 | ||
|
|
768d7402a8 | ||
|
|
2a46f7782f | ||
|
|
c3d3d3f385 | ||
|
|
6276aeaaba | ||
|
|
69765bafaa | ||
|
|
15099a701a | ||
|
|
6263e0d3c0 | ||
|
|
61e2d89d7c | ||
|
|
a56802c687 | ||
|
|
3bcfe6cfec | ||
|
|
42fdabbf7f | ||
|
|
ca775c762c | ||
|
|
fc0e7db929 | ||
|
|
17abdda6c8 | ||
|
|
3972eff9de | ||
|
|
9e6694dade | ||
|
|
39e9134348 | ||
|
|
a6ebee99b2 | ||
|
|
8a3c1b3f1b | ||
|
|
a597db3f8e | ||
|
|
a8a7548cb2 | ||
|
|
e86e718e6c | ||
|
|
31e2cff4e7 | ||
|
|
fa07cb40e5 | ||
|
|
ce222daac0 | ||
|
|
16eb1150cc | ||
|
|
e9736844b4 | ||
|
|
3e0c543230 | ||
|
|
433bbe247c | ||
|
|
4d266ce2f0 | ||
|
|
1c7ac38043 | ||
|
|
0072c577e4 | ||
|
|
4b8b128287 | ||
|
|
a06d0ee9d9 | ||
|
|
cffac02f02 | ||
|
|
3b2d799a47 | ||
|
|
5a8325d4c1 | ||
|
|
6892830edb | ||
|
|
28e370db1b | ||
|
|
755bcb6ec2 | ||
|
|
c4cec94b51 | ||
|
|
0a4540f23c | ||
|
|
c0b32c03a1 | ||
|
|
e79a62e247 | ||
|
|
5d97f666a3 | ||
|
|
2ba3345f9d | ||
|
|
d8bfd2aab1 | ||
|
|
7d65f3ef11 | ||
|
|
32d2056e9f | ||
|
|
07990b29cf | ||
|
|
135db3e4c2 | ||
|
|
89b8fa7cba | ||
|
|
d9681c16dc | ||
|
|
550227e081 | ||
|
|
032613a1c9 | ||
|
|
4451f6f184 | ||
|
|
6c6518a164 | ||
|
|
a0bcba5662 | ||
|
|
bf3570b29a | ||
|
|
16bb968352 | ||
|
|
6dd1040651 | ||
|
|
b4edbdb5f3 | ||
|
|
9af19a6c19 | ||
|
|
d6c094fc00 | ||
|
|
c632588f43 | ||
|
|
cf4b511b17 | ||
|
|
42301e581c | ||
|
|
75ecae752d | ||
|
|
1b09ed955a | ||
|
|
50a4538d6a | ||
|
|
1ca0a86649 | ||
|
|
6ff6407227 | ||
|
|
d3a6ecb537 | ||
|
|
f1254c5945 | ||
|
|
9f940a4290 | ||
|
|
df584749cf | ||
|
|
e4dbf2ce6c | ||
|
|
a9fc747e50 | ||
|
|
4aad338dc4 | ||
|
|
4ed5a22609 | ||
|
|
92ec9adbae | ||
|
|
183386ea33 | ||
|
|
75aa89f3b1 | ||
|
|
c018cafb74 | ||
|
|
c4366db940 | ||
|
|
789dfa9de4 | ||
|
|
531ff6ed09 | ||
|
|
aef07652e5 | ||
|
|
839650d72a | ||
|
|
dee0802669 | ||
|
|
9f6460b23d | ||
|
|
4b905cb3c5 | ||
|
|
4ed957aeb1 | ||
|
|
e74b16a270 | ||
|
|
6f135a9b3a | ||
|
|
6e8806c530 | ||
|
|
785e12cb12 | ||
|
|
3fba27a7b7 | ||
|
|
df1ad3c73e | ||
|
|
1c65a97d40 | ||
|
|
13185e318e | ||
|
|
acc2a72c3b | ||
|
|
a2a5ddef4b | ||
|
|
bc2a62a18f | ||
|
|
32486cf128 | ||
|
|
e89b9cd879 | ||
|
|
823c90fe9b | ||
|
|
ba3ee1db3f | ||
|
|
64a8e316ec | ||
|
|
7e488fce43 | ||
|
|
d40f1ef1df | ||
|
|
e60c03b30f | ||
|
|
2608d3b75d | ||
|
|
c766834d09 | ||
|
|
de444f3d5e | ||
|
|
4fa5e38301 | ||
|
|
65c946e06e | ||
|
|
866bc969b3 | ||
|
|
a4e13a4d48 | ||
|
|
b7eb3f595b | ||
|
|
2a401f4d9c | ||
|
|
8be95cd6c4 | ||
|
|
6edafa5b46 | ||
|
|
245589a99e | ||
|
|
5f4c40b96d | ||
|
|
39510478d6 | ||
|
|
bf92662c5d | ||
|
|
eaf6baf386 | ||
|
|
d312016a1f | ||
|
|
0c3943eaaa | ||
|
|
8d7c98e63a | ||
|
|
f4c025c60a | ||
|
|
f96610bf50 | ||
|
|
f985d2fa88 | ||
|
|
400ac38498 | ||
|
|
a514c42851 | ||
|
|
d559f61ee1 | ||
|
|
d4694fd716 | ||
|
|
e08f8bc66f | ||
|
|
bced14a8b2 | ||
|
|
22e1998c75 | ||
|
|
b1190f3f17 | ||
|
|
4ca31dbdf3 | ||
|
|
10d9326d6b | ||
|
|
b3384632a2 | ||
|
|
499e0464d6 | ||
|
|
c3cc8d99bb | ||
|
|
6de31f16da | ||
|
|
788544aae4 | ||
|
|
2ee54268ce | ||
|
|
b1e9e0b1db | ||
|
|
d8da9c1ac1 | ||
|
|
c60990c621 | ||
|
|
b817e10384 | ||
|
|
094a6fff2f | ||
|
|
2823e32194 | ||
|
|
7ac975f765 | ||
|
|
b67478db31 | ||
|
|
dda09a5a39 | ||
|
|
bd1cf640be | ||
|
|
c89a6ec8db | ||
|
|
7d63adce13 | ||
|
|
44738dc0f3 | ||
|
|
3d54259546 | ||
|
|
1e60728579 | ||
|
|
e176fc4f02 | ||
|
|
44102f009c | ||
|
|
2b107ed872 | ||
|
|
16cdbf665d | ||
|
|
89b7767b27 | ||
|
|
2831f4f089 | ||
|
|
f301a69131 | ||
|
|
28e517b04a | ||
|
|
682c082a09 | ||
|
|
108a7a9f5e | ||
|
|
d2f9b56b45 | ||
|
|
ef8ddcbcfa | ||
|
|
d1dbbb266c | ||
|
|
346d888c15 | ||
|
|
0ec2a2f1c6 | ||
|
|
d39a08cfc0 | ||
|
|
31285d07d1 | ||
|
|
218037b885 | ||
|
|
141fcb335b | ||
|
|
53640cd936 | ||
|
|
19d2a0eeb5 | ||
|
|
7979032731 | ||
|
|
e8aa8a5ccb | ||
|
|
3e83ff76fd | ||
|
|
b38075c7b9 | ||
|
|
c933ba238b | ||
|
|
78c078109d | ||
|
|
ee1c9e9912 | ||
|
|
e2eb7175ee | ||
|
|
d0e70d80af | ||
|
|
75d09dd37f | ||
|
|
d1d59b8217 | ||
|
|
93726ff25d | ||
|
|
d9bbdda78b | ||
|
|
aecf5e7387 | ||
|
|
defd588d94 | ||
|
|
8064961dfd | ||
|
|
cc4de48865 | ||
|
|
51269d85f2 | ||
|
|
ccc94bb8dd | ||
|
|
26602b29ed | ||
|
|
22ee48a961 | ||
|
|
5a02bf17f4 | ||
|
|
eda5e0f7a8 | ||
|
|
c6dc1ec6c6 | ||
|
|
3d564e1d82 | ||
|
|
448c45c837 | ||
|
|
1986d51eb8 | ||
|
|
aa819aff1f | ||
|
|
7498e65694 | ||
|
|
5721691398 | ||
|
|
2f06b4a1c1 | ||
|
|
cfb95a92cf | ||
|
|
ad98960fe1 | ||
|
|
96f46fe664 | ||
|
|
7a702f4bfa | ||
|
|
3b1dc28106 | ||
|
|
b07bccfaf3 | ||
|
|
1cfc75008d | ||
|
|
3ca68cfd5b | ||
|
|
904280f16f | ||
|
|
d2bef15f60 | ||
|
|
0efa0c23c0 | ||
|
|
ac7940b817 | ||
|
|
acff013056 | ||
|
|
f6241c8754 | ||
|
|
3ffcede43c | ||
|
|
3b626be4c5 | ||
|
|
0dae117a0f | ||
|
|
1f71b062b5 | ||
|
|
5ecc121b57 | ||
|
|
9f29dd0a31 | ||
|
|
5e986012ed | ||
|
|
ad64735793 | ||
|
|
a786e82dbb | ||
|
|
c530c85b21 | ||
|
|
ac05124c6e | ||
|
|
ae825d5dcd | ||
|
|
ea1c82734d | ||
|
|
6b069f8b82 | ||
|
|
4f21aa8927 | ||
|
|
9a682c2a7b | ||
|
|
86e531bb32 | ||
|
|
8275400e90 | ||
|
|
f822027c81 | ||
|
|
407db72f20 | ||
|
|
88f67c60d6 | ||
|
|
43364f5948 | ||
|
|
6bec83bfa2 | ||
|
|
d5bf89009f | ||
|
|
c9ae98e58c | ||
|
|
3678788f72 | ||
|
|
619dc5c1ab | ||
|
|
6a5eccde30 | ||
|
|
851a5363cf | ||
|
|
88bf7c7229 | ||
|
|
4dc425857c | ||
|
|
8ec8911035 | ||
|
|
256315906f | ||
|
|
97e12bb613 | ||
|
|
58e3b7c193 | ||
|
|
8bac73066b | ||
|
|
cc273c200a | ||
|
|
4998a26a74 | ||
|
|
7c046fbda7 | ||
|
|
11da457234 | ||
|
|
436a863c28 | ||
|
|
94661c315e | ||
|
|
e2a6899750 | ||
|
|
592b48c72b | ||
|
|
7d03c820bd | ||
|
|
e0fc17f1b2 | ||
|
|
64883a58cf | ||
|
|
7a44edb948 | ||
|
|
766b9e39b1 | ||
|
|
d09be64ab1 | ||
|
|
1931e21c61 | ||
|
|
d285a3921b | ||
|
|
4211a83f84 | ||
|
|
35133e02d2 | ||
|
|
333d2b4f13 | ||
|
|
ece20c4b91 | ||
|
|
6803453859 | ||
|
|
711a91f887 | ||
|
|
6bd910bea7 | ||
|
|
9d7d0a908a | ||
|
|
da1330b784 | ||
|
|
a155756d31 | ||
|
|
da09034042 | ||
|
|
c7ec6b57a5 | ||
|
|
47d8443b56 | ||
|
|
a815797d5b | ||
|
|
4fc59a1021 | ||
|
|
fc118c20af | ||
|
|
24dbf8df23 | ||
|
|
bb658ed119 | ||
|
|
8e03b1082c | ||
|
|
ccdc8cba83 | ||
|
|
0b92b1d878 | ||
|
|
c1fe1263bb | ||
|
|
de2d265b36 | ||
|
|
0c93c78e46 | ||
|
|
9ebe66a4ec | ||
|
|
a9692e5803 | ||
|
|
a7a84c1eb4 | ||
|
|
1962ee5814 | ||
|
|
50a7bc5ae1 | ||
|
|
edcf214acf | ||
|
|
9138f7d770 | ||
|
|
c7604765cb | ||
|
|
743419d1f7 | ||
|
|
54388385cb | ||
|
|
24a2d291d8 | ||
|
|
770576593b | ||
|
|
37d4135f44 | ||
|
|
e88bfee305 | ||
|
|
bde2928bd4 | ||
|
|
7e5352a04b | ||
|
|
6862d6d1fb | ||
|
|
09f1c8b111 | ||
|
|
40fd455b97 | ||
|
|
9699036f39 | ||
|
|
910ee8b9eb | ||
|
|
25aa8b59ee | ||
|
|
fe1db5d3a7 | ||
|
|
b051711752 | ||
|
|
6b03b74740 | ||
|
|
f3f8c64c26 | ||
|
|
ff3103e127 | ||
|
|
b0cb47a8be | ||
|
|
298d017f48 | ||
|
|
18451b675a | ||
|
|
f322f00aba | ||
|
|
f8ad700369 | ||
|
|
55830284f2 | ||
|
|
6d49c30be0 | ||
|
|
92f2f4da5b | ||
|
|
0f92966f6a | ||
|
|
684024b51e | ||
|
|
3511e15498 | ||
|
|
6d50cb433d | ||
|
|
4fcbc474be | ||
|
|
09570b6b8c | ||
|
|
8ce9207bdb | ||
|
|
97324c6fab | ||
|
|
649def37b6 | ||
|
|
488670ec03 | ||
|
|
cd34dcfc8c | ||
|
|
0c0e62ed9a | ||
|
|
569a8c9c9a | ||
|
|
8d9cd5250b | ||
|
|
8776da5975 | ||
|
|
79ad8e7d71 | ||
|
|
a8c93a53a4 | ||
|
|
c24b23cf65 | ||
|
|
c880071dc4 | ||
|
|
b0a10a0ae0 | ||
|
|
3d4e8ecbdf | ||
|
|
9d208fbaa8 | ||
|
|
759b4cffde | ||
|
|
bbb78c91c8 | ||
|
|
77bf11d68e | ||
|
|
6587a1514e | ||
|
|
77377ca671 | ||
|
|
34d3a026c0 | ||
|
|
fe8da71d73 | ||
|
|
dffa972f7e | ||
|
|
9baddea1d5 | ||
|
|
0556c5a169 | ||
|
|
6835858854 | ||
|
|
a6146bf7b3 | ||
|
|
0de6be921e | ||
|
|
24cc7b6695 | ||
|
|
1d03543bbe | ||
|
|
602cc33012 | ||
|
|
0a21b6c194 | ||
|
|
16b6564359 | ||
|
|
221aca8e7a | ||
|
|
f57bd95523 | ||
|
|
f7ee86a522 | ||
|
|
2c99d64fc8 | ||
|
|
cd8baa0840 | ||
|
|
5a92e4caa8 | ||
|
|
1900b5c60e | ||
|
|
038b7beb45 | ||
|
|
96a6858fb4 | ||
|
|
441a53a42a | ||
|
|
2d699a65bf | ||
|
|
793bf2a9f6 | ||
|
|
0e5e8b589a | ||
|
|
4a4ebff0c4 | ||
|
|
c4cd1301a3 | ||
|
|
ed8403a635 | ||
|
|
85329078ac | ||
|
|
08bc419863 | ||
|
|
4a9ca5678f | ||
|
|
d1330da8ec | ||
|
|
e0601dc798 | ||
|
|
f7c81060af | ||
|
|
df14179b56 | ||
|
|
5759d912cb | ||
|
|
8ba356ffbd | ||
|
|
add5ebd4ac | ||
|
|
0c2895b9b1 | ||
|
|
35d1ea657d | ||
|
|
3ce0fe0867 | ||
|
|
42c537f6c5 | ||
|
|
ada4568ff8 | ||
|
|
0291f839e1 | ||
|
|
084fe937d0 | ||
|
|
9c49eb724e | ||
|
|
5c186085eb | ||
|
|
b64f3bb354 | ||
|
|
b23138a1eb | ||
|
|
d92ad92027 | ||
|
|
bc3b3af5f1 | ||
|
|
9b852812af | ||
|
|
4158763d9e | ||
|
|
ac4c3e83a7 | ||
|
|
6d1171d1f3 | ||
|
|
e98585e95c | ||
|
|
64a6de6cc7 | ||
|
|
33d51615c8 | ||
|
|
5a38dadfdb | ||
|
|
4cc4182337 | ||
|
|
e85e3fe7a4 | ||
|
|
13bd6159d1 | ||
|
|
b8000b713a | ||
|
|
d3c77bbfc5 | ||
|
|
26a57288ec | ||
|
|
30f2973535 | ||
|
|
7af2bec161 | ||
|
|
160311f320 | ||
|
|
1e11992fda | ||
|
|
5e5acc19a2 | ||
|
|
c4b4c85416 | ||
|
|
d8c5663489 | ||
|
|
3ec4c5ef92 | ||
|
|
ac130c25cf | ||
|
|
6242568aa2 | ||
|
|
2d09430844 | ||
|
|
1e0de258fc | ||
|
|
a8c0365e86 | ||
|
|
8f16611ccc | ||
|
|
2f5a0c7dc8 | ||
|
|
60fee8ad1b | ||
|
|
55cfc886fb | ||
|
|
a23ab8a113 | ||
|
|
794e0fe224 | ||
|
|
2db8b40cfa | ||
|
|
ec41dcc4e4 | ||
|
|
df287efb24 | ||
|
|
77cd42d6be | ||
|
|
5921ffbfac | ||
|
|
053a669c13 | ||
|
|
baff228eac | ||
|
|
fb60e689eb | ||
|
|
cb24137886 | ||
|
|
c501464ba6 | ||
|
|
b494b864e1 | ||
|
|
99d050d320 | ||
|
|
8c3b1dfde4 | ||
|
|
abe2a9d50b | ||
|
|
63eb990cdf | ||
|
|
526bf644b4 | ||
|
|
7749df8dd5 | ||
|
|
2081540b92 | ||
|
|
333ff122e2 | ||
|
|
c48f45b13f | ||
|
|
b03338508a | ||
|
|
a1424f8350 | ||
|
|
d7d5567190 | ||
|
|
b8f65d92d4 | ||
|
|
d4dd25ae6e | ||
|
|
649d2231ae | ||
|
|
e8445baf43 | ||
|
|
799f676c80 | ||
|
|
36280f20d1 | ||
|
|
7e94783972 | ||
|
|
3b8ec6c833 | ||
|
|
55013af4d5 | ||
|
|
f820f42d85 | ||
|
|
75364e52b7 | ||
|
|
15b39cb589 | ||
|
|
7c6f40313c | ||
|
|
48f1ff1e02 | ||
|
|
08136ec86d | ||
|
|
c27cba3d60 | ||
|
|
05b797ef29 | ||
|
|
bf66ac6990 | ||
|
|
6be42b828a | ||
|
|
cc5333a60a | ||
|
|
ef29a53660 | ||
|
|
7b818e195c | ||
|
|
ce59e1956c | ||
|
|
5926f0ddd1 | ||
|
|
e467b79f4b | ||
|
|
b1e0198a85 | ||
|
|
eb9dafa2ef | ||
|
|
0302a56014 | ||
|
|
ef8061e6b4 | ||
|
|
9f489263e0 | ||
|
|
3c1f4fd1bc | ||
|
|
618f7320db | ||
|
|
3c697531c5 | ||
|
|
57d7c342ad | ||
|
|
8d5ff4be38 | ||
|
|
dcabf9f11f | ||
|
|
12ed897be1 | ||
|
|
3248b180be | ||
|
|
c000cd2279 | ||
|
|
45b9edc92e | ||
|
|
3494ad903d | ||
|
|
c512dd0c81 | ||
|
|
e6b48944ca | ||
|
|
389e4081cf | ||
|
|
8a48caac8b | ||
|
|
facd9998ba | ||
|
|
772411d9cb | ||
|
|
5aa5d6e9d1 | ||
|
|
8b9a5f97d4 | ||
|
|
f346e9ea27 | ||
|
|
120bc0b2db | ||
|
|
514df6d8dc | ||
|
|
04630d4729 | ||
|
|
fc03d10160 | ||
|
|
16cdefba71 | ||
|
|
7eb7f40e05 | ||
|
|
5f4c0187d5 | ||
|
|
fab8afbb8e | ||
|
|
f4a0b99d3c |
@@ -1,14 +0,0 @@
|
|||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
|
|
||||||
[*.{cpp,hpp,c,h,java,cc,hh,m,mm,S,md,properties,gmk,m4,ac}]
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[Makefile]
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[src/hotspot/**.{cpp,hpp,h}]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1,5 +1,4 @@
|
|||||||
* -text
|
* -text
|
||||||
* encoding=utf-8
|
|
||||||
*.java diff=java
|
*.java diff=java
|
||||||
*.c diff=cpp
|
*.c diff=cpp
|
||||||
*.h diff=cpp
|
*.h diff=cpp
|
||||||
|
|||||||
245
.github/README.md
vendored
Normal file
245
.github/README.md
vendored
Normal file
@@ -0,0 +1,245 @@
|
|||||||
|
[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
|
||||||
|
|
||||||
|
# Welcome to JetBrains Runtime!
|
||||||
|
|
||||||
|
JetBrains Runtime is a fork of [OpenJDK](https://github.com/openjdk/jdk) available for Windows, Mac OS X, and Linux.
|
||||||
|
It supports enhanced class redefinition ([DCEVM](https://ssw.jku.at/dcevm/)),
|
||||||
|
features optional [JCEF](https://github.com/JetBrains/jcef), a framework for embedding Chromium-based browsers,
|
||||||
|
includes a number of improvements in font rendering, keyboards support,
|
||||||
|
windowing/focus subsystems, HiDPI, accessibility, and performance, provides better desktop integration
|
||||||
|
and bugfixes not yet present in OpenJDK.
|
||||||
|
|
||||||
|
> **_NOTE_**: This is a **development** branch that is periodically synchronized with
|
||||||
|
> the [OpenJDK master](https://github.com/openjdk/jdk/tree/master) branch.
|
||||||
|
>
|
||||||
|
Release builds are based on these branches:
|
||||||
|
* [jbr11](https://github.com/JetBrains/JetBrainsRuntime/tree/jbr11) (JDK 11)
|
||||||
|
* [jbr17](https://github.com/JetBrains/JetBrainsRuntime/tree/jbr17) (JDK 17)
|
||||||
|
* [jbr21](https://github.com/JetBrains/JetBrainsRuntime/tree/jbr21) (JDK 21)
|
||||||
|
|
||||||
|
Download the latest releases of JetBrains Runtime to use with JetBrains IDEs. The full list
|
||||||
|
can be found on the [releases page](https://github.com/JetBrains/JetBrainsRuntime/releases).
|
||||||
|
|
||||||
|
## Releases based on JDK 21
|
||||||
|
|
||||||
|
| IDE Version | Latest JBR | Date Released |
|
||||||
|
|-------------|---------------------------------------------------------------------------------------------------------|---------------|
|
||||||
|
| 2025.1 | [21.0.6-b895.91](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-21.0.6b895.91) | 18-Feb-2025 |
|
||||||
|
| 2024.3 | [21.0.6-b631.39](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-21.0.6b631.39) | 10-Feb-2025 |
|
||||||
|
| 2024.2 | [21.0.4-b509.30](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-21.0.5b509.30) | 26-Nov-2024 |
|
||||||
|
| 2024.1 | [21.0.2-b346.3](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-21.0.2b346.3) | 30-Jan-2024 |
|
||||||
|
|
||||||
|
## Releases based on JDK 17
|
||||||
|
|
||||||
|
| IDE Version | Latest JBR | Date Released |
|
||||||
|
|-------------|--------------------------------------------------------------------------------------------------------|---------------|
|
||||||
|
| 2024.2 | [17.0.11-b1312.2](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.11b1312.2) | 18-Jun-2024|
|
||||||
|
| 2024.1 | [17.0.12-b1207.37](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.12b1207.37) | 15-Oct-2024|
|
||||||
|
| 2023.3 | [17.0.12-b1087.25](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.12b1087.25) | 02-Sep-2024|
|
||||||
|
| 2023.2 | [17.0.12-b1000.54](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.12b1000.54) | 02-Sep-2024|
|
||||||
|
| 2023.1 | [17.0.10-b829.27](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.10b829.27) | 21-Mar-2024 |
|
||||||
|
| 2022.3 | [17.0.6-b653.34](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.6b653.34) | 28-Feb-2023 |
|
||||||
|
| 2022.2 | [17.0.6-b469.82](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.6b469.82) | 06-Mar-2023 |
|
||||||
|
|
||||||
|
## Releases based on JDK 11
|
||||||
|
|
||||||
|
| IDE Version | Latest JBR | Date Released |
|
||||||
|
|-------------|-------------------------------------------------------------------------------------------------------|---------------|
|
||||||
|
| 2022.1 | [11_0_16-b2043.64](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr11_0_16b2043.64) | 10-Nov-2022 |
|
||||||
|
| 2021.3 | [11_0_14_1-b1751.46](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr11_0_14_1b1751.46) | 21-Feb-2022 |
|
||||||
|
| 2021.2 | [11_0_13-b1504.49](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jb11_0_13-b1504.49) | 15-Nov-2021 |
|
||||||
|
| 2021.1 | [11.0.11+9-b1341.60](https://github.com/JetBrains/JetBrainsRuntime/issues/171#issuecomment-1248891540)| 15-Jun-2021 |
|
||||||
|
| 2020.3 | [11_0_10-b1145.115](https://github.com/JetBrains/JetBrainsRuntime/issues/171#issuecomment-1249243977) | 21-Jun-2021 |
|
||||||
|
|
||||||
|
## Contents
|
||||||
|
- [Welcome to JetBrains Runtime](#welcome-to-jetbrains-runtime)
|
||||||
|
- [Why Use JetBrains Runtime?](#why-use-jetbrains-runtime)
|
||||||
|
- [Products Built on JetBrains Runtime](#products-built-on-jetbrains-runtime)
|
||||||
|
- [Getting Sources](#getting-sources)
|
||||||
|
- [macOS, Linux](#macos-linux)
|
||||||
|
- [Windows](#sources-windows)
|
||||||
|
- [Configuring the Build Environment](#configuring-the-build-environment)
|
||||||
|
- [Linux (Docker)](#linux-docker)
|
||||||
|
- [Ubuntu Linux](#ubuntu-linux)
|
||||||
|
- [Windows](#build-windows)
|
||||||
|
- [macOS](#macos)
|
||||||
|
- [Developing](#developing)
|
||||||
|
- [Contributing](#contributing)
|
||||||
|
- [Resources](#resources)
|
||||||
|
|
||||||
|
## Why Use JetBrains Runtime?
|
||||||
|
* **Embedded browser**: JetBrains Runtime includes the Java Chromium Embedded Framework ([JCEF](https://github.com/JetBrains/jcef)), which
|
||||||
|
enables you to embed a Chromium-based browsers in your JVM-based application.
|
||||||
|
To use it, [download a build with JCEF](https://github.com/JetBrains/JetBrainsRuntime/releases).
|
||||||
|
* **Enhanced class re-definition** with the [DCEVM](https://ssw.jku.at/dcevm/) technology that makes it easier to reload
|
||||||
|
changed code without restarting JVM; this feature needs to be explicitly enabled with `-XX:+AllowEnhancedClassRedefinition`.
|
||||||
|
* **Better FPS performance** for graphics-intensive applications.
|
||||||
|
* **Improved font rendering**, **keyboard input** (such as shortcuts and multinational keyboards),
|
||||||
|
**HiDPI** and **accessibility** support.
|
||||||
|
* **Robust desktop experience**: GUI-related fixes often reach JetBrains Runtime much earlier than the corresponding version of OpenJDK.
|
||||||
|
|
||||||
|
## Products Built on JetBrains Runtime
|
||||||
|
* [Android Studio](https://developer.android.com/studio). The official IDE for Google's Android operating system.
|
||||||
|
* [CLion](https://www.jetbrains.com/clion/). A cross-platform IDE for C and C++ from JetBrains.
|
||||||
|
* [DataGrip](https://www.jetbrains.com/datagrip/). The IDE for Databases and SQL from JetBrains.
|
||||||
|
* [GoLand](https://www.jetbrains.com/go/). The cross-platform Go IDE from JetBrains.
|
||||||
|
* [IntelliJ IDEA](https://www.jetbrains.com/idea/). The IDE for JVM from JetBrains.
|
||||||
|
* [JProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html). The Java profiler.
|
||||||
|
* [PhpStorm](https://www.jetbrains.com/phpstorm/). The PHP IDE from JetBrains.
|
||||||
|
* [PyCharm](https://www.jetbrains.com/pycharm/). The Python IDE from JetBrains.
|
||||||
|
* [Rider](https://www.jetbrains.com/rider/). The cross-platform .NET IDE from JetBrains.
|
||||||
|
* [RubyMine](https://www.jetbrains.com/ruby/). The Ruby and Rails IDE from JetBrains.
|
||||||
|
* [Toolbox App](https://www.jetbrains.com/toolbox-app/). JetBrains IDE manager.
|
||||||
|
* [WebStorm](https://www.jetbrains.com/webstorm/). The JavaScript IDE from JetBrains.
|
||||||
|
* [YourKit](https://www.yourkit.com/). Java and .NET profilers.
|
||||||
|
|
||||||
|
## Getting Sources
|
||||||
|
### macOS, Linux
|
||||||
|
```
|
||||||
|
git config --global core.autocrlf input
|
||||||
|
git clone git@github.com:JetBrains/JetBrainsRuntime.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
<a name="sources-windows"></a>
|
||||||
|
```
|
||||||
|
git config --global core.autocrlf false
|
||||||
|
git clone git@github.com:JetBrains/JetBrainsRuntime.git
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuring the Build Environment
|
||||||
|
Here are quick per-platform instructions for those who can't wait to get started.
|
||||||
|
Please refer to [OpenJDK build docs](https://openjdk.java.net/groups/build/doc/building.html) for in-depth
|
||||||
|
coverage of all the details.
|
||||||
|
|
||||||
|
> **_TIP:_** To get a preliminary report of what's missing, run `./configure` and check its output.
|
||||||
|
> It would usually have meaningful advice on how to solve the problem.
|
||||||
|
|
||||||
|
### Linux (Docker)
|
||||||
|
Download an image from [Docker Hub](https://hub.docker.com/repository/docker/jetbrains/runtime/general) related to your architecture:
|
||||||
|
```
|
||||||
|
$ docker pull jetbrains/runtime:oraclelinux8_aarch64
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```
|
||||||
|
$ docker pull jetbrains/runtime:oraclelinux8_x64
|
||||||
|
```
|
||||||
|
Create and run a new container from the downloaded image
|
||||||
|
```
|
||||||
|
$ docker run -v $JetBrainsRuntime:/JetBrainsRuntime -it jetbrains/runtime:oraclelinux8_[arch]
|
||||||
|
```
|
||||||
|
where `$JetBrainsRuntime` is a full path to the directory where the repository was cloned to.
|
||||||
|
|
||||||
|
Run these commands in the container:
|
||||||
|
```
|
||||||
|
# cd /JetBrainsRuntime
|
||||||
|
# sh ./configure
|
||||||
|
# make images
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ubuntu Linux
|
||||||
|
Install the necessary tools, libraries, and headers with:
|
||||||
|
```
|
||||||
|
$ sudo apt-get install autoconf make build-essential libx11-dev libxext-dev libxrender-dev libxtst-dev \
|
||||||
|
libxt-dev libxrandr-dev libcups2-dev libfontconfig1-dev libasound2-dev libspeechd-dev libwayland-dev \
|
||||||
|
wayland-protocols libxkbcommon-x11-0
|
||||||
|
```
|
||||||
|
Get Java 23 (for instance, [Azul Zulu Builds of OpenJDK 23](https://www.azul.com/downloads/?version=java-23&os=linux&package=jdk#zulu)).
|
||||||
|
|
||||||
|
Then run the following:
|
||||||
|
```
|
||||||
|
$ cd JetBrainsRuntime
|
||||||
|
$ git checkout main
|
||||||
|
$ sh ./configure
|
||||||
|
$ make images
|
||||||
|
```
|
||||||
|
This will build the release configuration under `./build/linux-x86_64-server-release/`.
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
<a name="build-windows"></a>
|
||||||
|
Install the following:
|
||||||
|
* [Cygwin x64](http://www.cygwin.com/).
|
||||||
|
Required packages: `autoconf`, `binutils`, `cpio`, `diffutils`, `file`, `gawk`, `gcc-core`, `make`, `m4`, `unzip`, `zip`.
|
||||||
|
Install those together with Cygwin.
|
||||||
|
* [Visual Studio compiler toolset](https://visualstudio.microsoft.com/downloads/).
|
||||||
|
Install with the desktop development kit, which includes Windows SDK and compilers.
|
||||||
|
Visual Studio 2019 is supported by default.
|
||||||
|
* Java 21 (for instance, [Azul Zulu Builds of OpenJDK 21](https://www.azul.com/downloads/?version=java-21-lts&os=windows&package=jdk#zulu)).
|
||||||
|
If you have problems while configuring, read [Java tips on Cygwin](http://horstmann.com/articles/cygwin-tips.html).
|
||||||
|
|
||||||
|
From the command line:
|
||||||
|
```
|
||||||
|
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
|
||||||
|
"c:\Program_Files\cygwin64\bin\mintty.exe" /bin/bash -l
|
||||||
|
```
|
||||||
|
The first command sets up environment variables, the second starts a Cygwin shell with the proper environment.
|
||||||
|
|
||||||
|
In the Cygwin shell:
|
||||||
|
```
|
||||||
|
$ cd JetBrainsRuntime
|
||||||
|
$ git checkout main
|
||||||
|
$ bash configure --with-toolchain-version=2019
|
||||||
|
$ make images
|
||||||
|
```
|
||||||
|
This will build the release configuration under `./build/windows-x86_64-server-release/`.
|
||||||
|
|
||||||
|
#### Enable optional NVDA screen reader support
|
||||||
|
If you want to add support of a11y announcing via [NVDA screen reader](https://www.nvaccess.org/about-nvda/),
|
||||||
|
you will need to bundle the NVDA Controller Client library.
|
||||||
|
You can do it with the following steps:
|
||||||
|
1. Download the NVDA Controller Client library. You can find the link in its official README [here](https://github.com/nvaccess/nvda/blob/master/extras/controllerClient/readme.md)
|
||||||
|
2. Pass the path to the unpacked package to `configure` via an additional flag `--with-nvdacontrollerclient=<path>`.
|
||||||
|
The build system will search the required library files under `<path>/<target-arch>`.
|
||||||
|
|
||||||
|
#### Disable optional JAWS screen reader support
|
||||||
|
JBR is built with built-in support of JAWS screen reader.
|
||||||
|
If you want to disable it, run `configure` with the additional flag `--disable-jaws-client`.
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
Install the following:
|
||||||
|
* Xcode command line developer tools and `autoconf` via [Homebrew](https://brew.sh/).
|
||||||
|
* Java 21 (for instance, [Azul Zulu Builds of OpenJDK 21](https://www.azul.com/downloads/?version=java-21-lts&os=macos&package=jdk#zulu)).
|
||||||
|
|
||||||
|
From the command line:
|
||||||
|
```
|
||||||
|
$ cd JetBrainsRuntime
|
||||||
|
$ git checkout main
|
||||||
|
$ sh ./configure
|
||||||
|
$ make images
|
||||||
|
```
|
||||||
|
This will build the release configuration under `./build/macosx-x86_64-server-release/`.
|
||||||
|
|
||||||
|
## Developing
|
||||||
|
You can use [CLion](https://www.jetbrains.com/clion/) to develop native parts of the JetBrains Runtime and
|
||||||
|
[IntelliJ IDEA](https://www.jetbrains.com/idea/) for the parts written in Java.
|
||||||
|
Both require projects to be created.
|
||||||
|
|
||||||
|
### CLion
|
||||||
|
Run
|
||||||
|
```
|
||||||
|
$ make compile-commands
|
||||||
|
```
|
||||||
|
in the git root and open the resulting `build/.../compile_commands.json` file as a project.
|
||||||
|
Then use `Tools | Compilation Database | Change Project Root` to point to git root of this repository.
|
||||||
|
|
||||||
|
See also this detailed step-by-step tutorial for all platforms:
|
||||||
|
[How to develop OpenJDK with CLion](https://blog.jetbrains.com/clion/2020/03/openjdk-with-clion/).
|
||||||
|
|
||||||
|
### IDEA
|
||||||
|
Run
|
||||||
|
```
|
||||||
|
$ sh ./bin/idea.sh
|
||||||
|
```
|
||||||
|
in the git root to generate project files (add `--help` for options). If you have multiple
|
||||||
|
configurations (for example, `release` and `fastdebug`), supply the `--conf <conf_name>` argument.
|
||||||
|
Then open the git root directory as a project in IDEA.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
We are happy to receive your pull requests!
|
||||||
|
Before you submit one, please sign our [Contributor License Agreement (CLA)](https://www.jetbrains.com/agreements/cla/).
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
* [JetBrains Runtime on GitHub](https://github.com/JetBrains/JetBrainsRuntime).
|
||||||
|
* [OpenJDK build instructions](https://openjdk.java.net/groups/build/doc/building.html).
|
||||||
|
* [OpenJDK test instructions](https://htmlpreview.github.io/?https://raw.githubusercontent.com/openjdk/jdk/master/doc/building.html#running-tests).
|
||||||
|
* [How to develop OpenJDK with CLion](https://blog.jetbrains.com/clion/2020/03/openjdk-with-clion/).
|
||||||
2
.github/actions/build-jtreg/action.yml
vendored
2
.github/actions/build-jtreg/action.yml
vendored
@@ -65,4 +65,4 @@ runs:
|
|||||||
with:
|
with:
|
||||||
name: bundles-jtreg-${{ steps.version.outputs.value }}
|
name: bundles-jtreg-${{ steps.version.outputs.value }}
|
||||||
path: jtreg/installed
|
path: jtreg/installed
|
||||||
retention-days: 5
|
retention-days: 1
|
||||||
|
|||||||
4
.github/actions/do-build/action.yml
vendored
4
.github/actions/do-build/action.yml
vendored
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -42,7 +42,7 @@ runs:
|
|||||||
- name: 'Build'
|
- name: 'Build'
|
||||||
id: build
|
id: build
|
||||||
run: >
|
run: >
|
||||||
make -k LOG=info ${{ inputs.make-target }}
|
make LOG=info ${{ inputs.make-target }}
|
||||||
|| bash ./.github/scripts/gen-build-failure-report.sh "$GITHUB_STEP_SUMMARY"
|
|| bash ./.github/scripts/gen-build-failure-report.sh "$GITHUB_STEP_SUMMARY"
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
|
|||||||
37
.github/actions/get-bundles/action.yml
vendored
37
.github/actions/get-bundles/action.yml
vendored
@@ -32,16 +32,10 @@ inputs:
|
|||||||
debug-suffix:
|
debug-suffix:
|
||||||
description: 'File name suffix denoting debug level, possibly empty'
|
description: 'File name suffix denoting debug level, possibly empty'
|
||||||
required: false
|
required: false
|
||||||
static-suffix:
|
|
||||||
description: 'Static bundle file name suffix'
|
|
||||||
required: false
|
|
||||||
outputs:
|
outputs:
|
||||||
jdk-path:
|
jdk-path:
|
||||||
description: 'Path to the installed JDK bundle'
|
description: 'Path to the installed JDK bundle'
|
||||||
value: ${{ steps.path-name.outputs.jdk }}
|
value: ${{ steps.path-name.outputs.jdk }}
|
||||||
static-jdk-path:
|
|
||||||
description: 'Path to the installed static JDK bundle'
|
|
||||||
value: ${{ steps.path-name.outputs.static_jdk }}
|
|
||||||
symbols-path:
|
symbols-path:
|
||||||
description: 'Path to the installed symbols bundle'
|
description: 'Path to the installed symbols bundle'
|
||||||
value: ${{ steps.path-name.outputs.symbols }}
|
value: ${{ steps.path-name.outputs.symbols }}
|
||||||
@@ -67,15 +61,6 @@ runs:
|
|||||||
path: bundles
|
path: bundles
|
||||||
if: steps.download-bundles.outcome == 'failure'
|
if: steps.download-bundles.outcome == 'failure'
|
||||||
|
|
||||||
- name: 'Download static bundles artifact'
|
|
||||||
id: download-static-bundles
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}${{ inputs.static-suffix }}
|
|
||||||
path: bundles
|
|
||||||
continue-on-error: true
|
|
||||||
if: ${{ inputs.static-suffix == '-static' }}
|
|
||||||
|
|
||||||
- name: 'Unpack bundles'
|
- name: 'Unpack bundles'
|
||||||
run: |
|
run: |
|
||||||
if [[ -e bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.zip ]]; then
|
if [[ -e bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.zip ]]; then
|
||||||
@@ -90,20 +75,6 @@ runs:
|
|||||||
tar -xf bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz -C bundles/jdk
|
tar -xf bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz -C bundles/jdk
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ '${{ inputs.static-suffix }}' == '-static' ]]; then
|
|
||||||
if [[ -e bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}${{ inputs.static-suffix }}.zip ]]; then
|
|
||||||
echo 'Unpacking static jdk bundle...'
|
|
||||||
mkdir -p bundles/static-jdk
|
|
||||||
unzip -q bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}${{ inputs.static-suffix }}.zip -d bundles/static-jdk
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -e bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}${{ inputs.static-suffix }}.tar.gz ]]; then
|
|
||||||
echo 'Unpacking static jdk bundle...'
|
|
||||||
mkdir -p bundles/static-jdk
|
|
||||||
tar -xf bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}${{ inputs.static-suffix }}.tar.gz -C bundles/static-jdk
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -e bundles/symbols-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz ]]; then
|
if [[ -e bundles/symbols-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz ]]; then
|
||||||
echo 'Unpacking symbols bundle...'
|
echo 'Unpacking symbols bundle...'
|
||||||
mkdir -p bundles/symbols
|
mkdir -p bundles/symbols
|
||||||
@@ -135,12 +106,4 @@ runs:
|
|||||||
echo "jdk=$jdk_dir" >> $GITHUB_OUTPUT
|
echo "jdk=$jdk_dir" >> $GITHUB_OUTPUT
|
||||||
echo "symbols=$symbols_dir" >> $GITHUB_OUTPUT
|
echo "symbols=$symbols_dir" >> $GITHUB_OUTPUT
|
||||||
echo "tests=$tests_dir" >> $GITHUB_OUTPUT
|
echo "tests=$tests_dir" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
if [[ '${{ inputs.static-suffix }}' == '-static' ]]; then
|
|
||||||
static_jdk_dir="$GITHUB_WORKSPACE/$(dirname $(find bundles/static-jdk -name bin -type d))"
|
|
||||||
if [[ '${{ runner.os }}' == 'Windows' ]]; then
|
|
||||||
static_jdk_dir="$(cygpath $static_jdk_dir)"
|
|
||||||
fi
|
|
||||||
echo "static_jdk=$static_jdk_dir" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
8
.github/actions/get-msys2/action.yml
vendored
8
.github/actions/get-msys2/action.yml
vendored
@@ -30,15 +30,15 @@ runs:
|
|||||||
using: composite
|
using: composite
|
||||||
steps:
|
steps:
|
||||||
- name: 'Install MSYS2'
|
- name: 'Install MSYS2'
|
||||||
id: msys2
|
uses: msys2/setup-msys2@v2.22.0
|
||||||
uses: msys2/setup-msys2@v2.28.0
|
|
||||||
with:
|
with:
|
||||||
install: 'autoconf tar unzip zip make'
|
install: 'autoconf tar unzip zip make'
|
||||||
path-type: minimal
|
path-type: minimal
|
||||||
release: false
|
location: ${{ runner.tool_cache }}/msys2
|
||||||
|
|
||||||
# We can't run bash until this is completed, so stick with pwsh
|
# We can't run bash until this is completed, so stick with pwsh
|
||||||
- name: 'Set MSYS2 path'
|
- name: 'Set MSYS2 path'
|
||||||
run: |
|
run: |
|
||||||
echo "${{ steps.msys2.outputs.msys2-location }}/usr/bin" >> $env:GITHUB_PATH
|
# Prepend msys2/msys64/usr/bin to the PATH
|
||||||
|
echo "$env:RUNNER_TOOL_CACHE/msys2/msys64/usr/bin" >> $env:GITHUB_PATH
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
|||||||
20
.github/actions/upload-bundles/action.yml
vendored
20
.github/actions/upload-bundles/action.yml
vendored
@@ -32,12 +32,6 @@ inputs:
|
|||||||
debug-suffix:
|
debug-suffix:
|
||||||
description: 'File name suffix denoting debug level, possibly empty'
|
description: 'File name suffix denoting debug level, possibly empty'
|
||||||
required: false
|
required: false
|
||||||
bundle-suffix:
|
|
||||||
description: 'Bundle name suffix, possibly empty'
|
|
||||||
required: false
|
|
||||||
static-suffix:
|
|
||||||
description: 'Static JDK bundle name suffix, possibly empty'
|
|
||||||
required: false
|
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: composite
|
using: composite
|
||||||
@@ -49,8 +43,6 @@ runs:
|
|||||||
# Rename bundles to consistent names
|
# Rename bundles to consistent names
|
||||||
jdk_bundle_zip="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.zip 2> /dev/null || true)"
|
jdk_bundle_zip="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.zip 2> /dev/null || true)"
|
||||||
jdk_bundle_tar_gz="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
|
jdk_bundle_tar_gz="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
|
||||||
static_jdk_bundle_zip="$(ls build/*/bundles/static-jdk-*_bin${{ inputs.debug-suffix }}.zip 2> /dev/null || true)"
|
|
||||||
static_jdk_bundle_tar_gz="$(ls build/*/bundles/static-jdk-*_bin${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
|
|
||||||
symbols_bundle="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}-symbols.tar.gz 2> /dev/null || true)"
|
symbols_bundle="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}-symbols.tar.gz 2> /dev/null || true)"
|
||||||
tests_bundle="$(ls build/*/bundles/jdk-*_bin-tests${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
|
tests_bundle="$(ls build/*/bundles/jdk-*_bin-tests${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
|
||||||
static_libs_bundle="$(ls build/*/bundles/jdk-*_bin-static-libs${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
|
static_libs_bundle="$(ls build/*/bundles/jdk-*_bin-static-libs${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
|
||||||
@@ -63,12 +55,6 @@ runs:
|
|||||||
if [[ "$jdk_bundle_tar_gz" != "" ]]; then
|
if [[ "$jdk_bundle_tar_gz" != "" ]]; then
|
||||||
mv "$jdk_bundle_tar_gz" "bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz"
|
mv "$jdk_bundle_tar_gz" "bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz"
|
||||||
fi
|
fi
|
||||||
if [[ "$static_jdk_bundle_zip" != "" ]]; then
|
|
||||||
mv "$static_jdk_bundle_zip" "bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}${{ inputs.static-suffix }}.zip"
|
|
||||||
fi
|
|
||||||
if [[ "$static_jdk_bundle_tar_gz" != "" ]]; then
|
|
||||||
mv "$static_jdk_bundle_tar_gz" "bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}${{ inputs.static-suffix }}.tar.gz"
|
|
||||||
fi
|
|
||||||
if [[ "$symbols_bundle" != "" ]]; then
|
if [[ "$symbols_bundle" != "" ]]; then
|
||||||
mv "$symbols_bundle" "bundles/symbols-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz"
|
mv "$symbols_bundle" "bundles/symbols-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz"
|
||||||
fi
|
fi
|
||||||
@@ -79,7 +65,7 @@ runs:
|
|||||||
mv "$static_libs_bundle" "bundles/static-libs-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz"
|
mv "$static_libs_bundle" "bundles/static-libs-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$jdk_bundle_zip$jdk_bundle_tar_gz$static_jdk_bundle_zip$static_jdk_bundle_tar_gz$symbols_bundle$tests_bundle$static_libs_bundle" != "" ]]; then
|
if [[ "$jdk_bundle_zip$jdk_bundle_tar_gz$symbols_bundle$tests_bundle$static_libs_bundle" != "" ]]; then
|
||||||
echo 'bundles-found=true' >> $GITHUB_OUTPUT
|
echo 'bundles-found=true' >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
echo 'bundles-found=false' >> $GITHUB_OUTPUT
|
echo 'bundles-found=false' >> $GITHUB_OUTPUT
|
||||||
@@ -89,7 +75,7 @@ runs:
|
|||||||
- name: 'Upload bundles artifact'
|
- name: 'Upload bundles artifact'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}${{ inputs.static-suffix }}${{ inputs.bundle-suffix }}
|
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
|
||||||
path: bundles
|
path: bundles
|
||||||
retention-days: 5
|
retention-days: 1
|
||||||
if: steps.bundles.outputs.bundles-found == 'true'
|
if: steps.bundles.outputs.bundles-found == 'true'
|
||||||
|
|||||||
8
.github/workflows/build-alpine-linux.yml
vendored
8
.github/workflows/build-alpine-linux.yml
vendored
@@ -51,15 +51,11 @@ on:
|
|||||||
make-arguments:
|
make-arguments:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
dry-run:
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-linux:
|
build-linux:
|
||||||
name: build
|
name: build
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
image: alpine:3.20
|
image: alpine:3.20
|
||||||
|
|
||||||
@@ -108,11 +104,9 @@ jobs:
|
|||||||
make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}'
|
make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}'
|
||||||
platform: ${{ inputs.platform }}
|
platform: ${{ inputs.platform }}
|
||||||
debug-suffix: '${{ matrix.suffix }}'
|
debug-suffix: '${{ matrix.suffix }}'
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|
||||||
- name: 'Upload bundles'
|
- name: 'Upload bundles'
|
||||||
uses: ./.github/actions/upload-bundles
|
uses: ./.github/actions/upload-bundles
|
||||||
with:
|
with:
|
||||||
platform: ${{ inputs.platform }}
|
platform: ${{ inputs.platform }}
|
||||||
debug-suffix: '${{ matrix.suffix }}'
|
debug-suffix: '${{ matrix.suffix }}'
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|||||||
20
.github/workflows/build-cross-compile.yml
vendored
20
.github/workflows/build-cross-compile.yml
vendored
@@ -40,15 +40,11 @@ on:
|
|||||||
make-arguments:
|
make-arguments:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
dry-run:
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-cross-compile:
|
build-cross-compile:
|
||||||
name: build
|
name: build
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -64,33 +60,33 @@ jobs:
|
|||||||
gnu-arch: aarch64
|
gnu-arch: aarch64
|
||||||
debian-arch: arm64
|
debian-arch: arm64
|
||||||
debian-repository: https://httpredir.debian.org/debian/
|
debian-repository: https://httpredir.debian.org/debian/
|
||||||
debian-version: trixie
|
debian-version: bullseye
|
||||||
tolerate-sysroot-errors: false
|
tolerate-sysroot-errors: false
|
||||||
- target-cpu: arm
|
- target-cpu: arm
|
||||||
gnu-arch: arm
|
gnu-arch: arm
|
||||||
debian-arch: armhf
|
debian-arch: armhf
|
||||||
debian-repository: https://httpredir.debian.org/debian/
|
debian-repository: https://httpredir.debian.org/debian/
|
||||||
debian-version: trixie
|
debian-version: bullseye
|
||||||
tolerate-sysroot-errors: false
|
tolerate-sysroot-errors: false
|
||||||
gnu-abi: eabihf
|
gnu-abi: eabihf
|
||||||
- target-cpu: s390x
|
- target-cpu: s390x
|
||||||
gnu-arch: s390x
|
gnu-arch: s390x
|
||||||
debian-arch: s390x
|
debian-arch: s390x
|
||||||
debian-repository: https://httpredir.debian.org/debian/
|
debian-repository: https://httpredir.debian.org/debian/
|
||||||
debian-version: trixie
|
debian-version: bullseye
|
||||||
tolerate-sysroot-errors: false
|
tolerate-sysroot-errors: false
|
||||||
- target-cpu: ppc64le
|
- target-cpu: ppc64le
|
||||||
gnu-arch: powerpc64le
|
gnu-arch: powerpc64le
|
||||||
debian-arch: ppc64el
|
debian-arch: ppc64el
|
||||||
debian-repository: https://httpredir.debian.org/debian/
|
debian-repository: https://httpredir.debian.org/debian/
|
||||||
debian-version: trixie
|
debian-version: bullseye
|
||||||
tolerate-sysroot-errors: false
|
tolerate-sysroot-errors: false
|
||||||
- target-cpu: riscv64
|
- target-cpu: riscv64
|
||||||
gnu-arch: riscv64
|
gnu-arch: riscv64
|
||||||
debian-arch: riscv64
|
debian-arch: riscv64
|
||||||
debian-repository: https://httpredir.debian.org/debian/
|
debian-repository: https://httpredir.debian.org/debian/
|
||||||
debian-version: trixie
|
debian-version: sid
|
||||||
tolerate-sysroot-errors: false
|
tolerate-sysroot-errors: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 'Checkout the JDK source'
|
- name: 'Checkout the JDK source'
|
||||||
@@ -193,4 +189,4 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
make-target: 'hotspot ${{ inputs.make-arguments }}'
|
make-target: 'hotspot ${{ inputs.make-arguments }}'
|
||||||
platform: linux-${{ matrix.target-cpu }}
|
platform: linux-${{ matrix.target-cpu }}
|
||||||
if: ((steps.create-sysroot.outcome == 'success' || steps.get-cached-sysroot.outputs.cache-hit == 'true') && inputs.dry-run == false)
|
if: steps.create-sysroot.outcome == 'success' || steps.get-cached-sysroot.outputs.cache-hit == 'true'
|
||||||
|
|||||||
50
.github/workflows/build-linux.yml
vendored
50
.github/workflows/build-linux.yml
vendored
@@ -61,26 +61,20 @@ on:
|
|||||||
make-arguments:
|
make-arguments:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
dry-run:
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
bundle-suffix:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
static-suffix:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-linux:
|
build-linux:
|
||||||
name: build
|
name: build
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
debug-level: ${{ fromJSON(inputs.debug-levels) }}
|
debug-level: ${{ fromJSON(inputs.debug-levels) }}
|
||||||
|
include:
|
||||||
|
- debug-level: debug
|
||||||
|
flags: --with-debug-level=fastdebug
|
||||||
|
suffix: -debug
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 'Checkout the JDK source'
|
- name: 'Checkout the JDK source'
|
||||||
@@ -115,28 +109,16 @@ jobs:
|
|||||||
if [[ '${{ inputs.apt-architecture }}' != '' ]]; then
|
if [[ '${{ inputs.apt-architecture }}' != '' ]]; then
|
||||||
sudo dpkg --add-architecture ${{ inputs.apt-architecture }}
|
sudo dpkg --add-architecture ${{ inputs.apt-architecture }}
|
||||||
fi
|
fi
|
||||||
sudo apt update
|
sudo apt-get update
|
||||||
sudo apt install --only-upgrade apt
|
sudo apt-get install --only-upgrade apt
|
||||||
sudo apt install \
|
sudo apt-get install gcc-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} g++-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} libxrandr-dev${{ steps.arch.outputs.suffix }} libxtst-dev${{ steps.arch.outputs.suffix }} libcups2-dev${{ steps.arch.outputs.suffix }} libasound2-dev${{ steps.arch.outputs.suffix }} ${{ inputs.apt-extra-packages }}
|
||||||
gcc-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} \
|
|
||||||
g++-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} \
|
|
||||||
libasound2-dev${{ steps.arch.outputs.suffix }} \
|
|
||||||
libcups2-dev${{ steps.arch.outputs.suffix }} \
|
|
||||||
libfontconfig1-dev${{ steps.arch.outputs.suffix }} \
|
|
||||||
libx11-dev${{ steps.arch.outputs.suffix }} \
|
|
||||||
libxext-dev${{ steps.arch.outputs.suffix }} \
|
|
||||||
libxrandr-dev${{ steps.arch.outputs.suffix }} \
|
|
||||||
libxrender-dev${{ steps.arch.outputs.suffix }} \
|
|
||||||
libxt-dev${{ steps.arch.outputs.suffix }} \
|
|
||||||
libxtst-dev${{ steps.arch.outputs.suffix }} \
|
|
||||||
${{ inputs.apt-extra-packages }}
|
|
||||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc-major-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc-major-version }}
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc-major-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc-major-version }}
|
||||||
|
|
||||||
- name: 'Configure'
|
- name: 'Configure'
|
||||||
run: >
|
run: >
|
||||||
bash configure
|
bash configure
|
||||||
--with-conf-name=${{ inputs.platform }}
|
--with-conf-name=${{ inputs.platform }}
|
||||||
${{ matrix.debug-level == 'debug' && '--with-debug-level=fastdebug' || '' }}
|
${{ matrix.flags }}
|
||||||
--with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
|
--with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
|
||||||
--with-boot-jdk=${{ steps.bootjdk.outputs.path }}
|
--with-boot-jdk=${{ steps.bootjdk.outputs.path }}
|
||||||
--with-jtreg=${{ steps.jtreg.outputs.path }}
|
--with-jtreg=${{ steps.jtreg.outputs.path }}
|
||||||
@@ -151,17 +133,17 @@ jobs:
|
|||||||
- name: 'Build'
|
- name: 'Build'
|
||||||
id: build
|
id: build
|
||||||
uses: ./.github/actions/do-build
|
uses: ./.github/actions/do-build
|
||||||
|
env:
|
||||||
|
# Only build static-libs-bundles for release builds.
|
||||||
|
# For debug builds, building static-libs often exceeds disk space.
|
||||||
|
STATIC_LIBS: ${{ matrix.debug-level == 'release' && 'static-libs-bundles' }}
|
||||||
with:
|
with:
|
||||||
make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}'
|
make-target: '${{ inputs.make-target }} ${STATIC_LIBS} ${{ inputs.make-arguments }}'
|
||||||
platform: ${{ inputs.platform }}
|
platform: ${{ inputs.platform }}
|
||||||
debug-suffix: "${{ matrix.debug-level == 'debug' && '-debug' || '' }}"
|
debug-suffix: '${{ matrix.suffix }}'
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|
||||||
- name: 'Upload bundles'
|
- name: 'Upload bundles'
|
||||||
uses: ./.github/actions/upload-bundles
|
uses: ./.github/actions/upload-bundles
|
||||||
with:
|
with:
|
||||||
platform: ${{ inputs.platform }}
|
platform: ${{ inputs.platform }}
|
||||||
debug-suffix: "${{ matrix.debug-level == 'debug' && '-debug' || '' }}"
|
debug-suffix: '${{ matrix.suffix }}'
|
||||||
bundle-suffix: ${{ inputs.bundle-suffix }}
|
|
||||||
static-suffix: ${{ inputs.static-suffix }}
|
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|||||||
6
.github/workflows/build-macos.yml
vendored
6
.github/workflows/build-macos.yml
vendored
@@ -54,10 +54,6 @@ on:
|
|||||||
make-arguments:
|
make-arguments:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
dry-run:
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-macos:
|
build-macos:
|
||||||
@@ -122,11 +118,9 @@ jobs:
|
|||||||
make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}'
|
make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}'
|
||||||
platform: ${{ inputs.platform }}
|
platform: ${{ inputs.platform }}
|
||||||
debug-suffix: '${{ matrix.suffix }}'
|
debug-suffix: '${{ matrix.suffix }}'
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|
||||||
- name: 'Upload bundles'
|
- name: 'Upload bundles'
|
||||||
uses: ./.github/actions/upload-bundles
|
uses: ./.github/actions/upload-bundles
|
||||||
with:
|
with:
|
||||||
platform: ${{ inputs.platform }}
|
platform: ${{ inputs.platform }}
|
||||||
debug-suffix: '${{ matrix.suffix }}'
|
debug-suffix: '${{ matrix.suffix }}'
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|||||||
13
.github/workflows/build-windows.yml
vendored
13
.github/workflows/build-windows.yml
vendored
@@ -54,10 +54,6 @@ on:
|
|||||||
make-arguments:
|
make-arguments:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
dry-run:
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# These are needed to make the MSYS2 bash work properly
|
# These are needed to make the MSYS2 bash work properly
|
||||||
@@ -67,7 +63,7 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
build-windows:
|
build-windows:
|
||||||
name: build
|
name: build
|
||||||
runs-on: windows-2025
|
runs-on: windows-2019
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -106,7 +102,7 @@ jobs:
|
|||||||
id: toolchain-check
|
id: toolchain-check
|
||||||
run: |
|
run: |
|
||||||
set +e
|
set +e
|
||||||
'/c/Program Files/Microsoft Visual Studio/2022/Enterprise/vc/auxiliary/build/vcvars64.bat' -vcvars_ver=${{ inputs.msvc-toolset-version }}
|
'/c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/vc/auxiliary/build/vcvars64.bat' -vcvars_ver=${{ inputs.msvc-toolset-version }}
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo "Toolchain is already installed"
|
echo "Toolchain is already installed"
|
||||||
echo "toolchain-installed=true" >> $GITHUB_OUTPUT
|
echo "toolchain-installed=true" >> $GITHUB_OUTPUT
|
||||||
@@ -119,7 +115,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
# Run Visual Studio Installer
|
# Run Visual Studio Installer
|
||||||
'/c/Program Files (x86)/Microsoft Visual Studio/Installer/vs_installer.exe' \
|
'/c/Program Files (x86)/Microsoft Visual Studio/Installer/vs_installer.exe' \
|
||||||
modify --quiet --installPath 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise' \
|
modify --quiet --installPath 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise' \
|
||||||
--add Microsoft.VisualStudio.Component.VC.${{ inputs.msvc-toolset-version }}.${{ inputs.msvc-toolset-architecture }}
|
--add Microsoft.VisualStudio.Component.VC.${{ inputs.msvc-toolset-version }}.${{ inputs.msvc-toolset-architecture }}
|
||||||
if: steps.toolchain-check.outputs.toolchain-installed != 'true'
|
if: steps.toolchain-check.outputs.toolchain-installed != 'true'
|
||||||
|
|
||||||
@@ -143,7 +139,6 @@ jobs:
|
|||||||
# Set PATH to "", so just GITHUB_PATH is included
|
# Set PATH to "", so just GITHUB_PATH is included
|
||||||
PATH: ''
|
PATH: ''
|
||||||
shell: env /usr/bin/bash --login -eo pipefail {0}
|
shell: env /usr/bin/bash --login -eo pipefail {0}
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|
||||||
- name: 'Build'
|
- name: 'Build'
|
||||||
id: build
|
id: build
|
||||||
@@ -152,11 +147,9 @@ jobs:
|
|||||||
make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}'
|
make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}'
|
||||||
platform: ${{ inputs.platform }}
|
platform: ${{ inputs.platform }}
|
||||||
debug-suffix: '${{ matrix.suffix }}'
|
debug-suffix: '${{ matrix.suffix }}'
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|
||||||
- name: 'Upload bundles'
|
- name: 'Upload bundles'
|
||||||
uses: ./.github/actions/upload-bundles
|
uses: ./.github/actions/upload-bundles
|
||||||
with:
|
with:
|
||||||
platform: ${{ inputs.platform }}
|
platform: ${{ inputs.platform }}
|
||||||
debug-suffix: '${{ matrix.suffix }}'
|
debug-suffix: '${{ matrix.suffix }}'
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|||||||
131
.github/workflows/main.yml
vendored
131
.github/workflows/main.yml
vendored
@@ -28,7 +28,10 @@ name: 'OpenJDK GHA Sanity Checks'
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches-ignore:
|
branches-ignore:
|
||||||
|
- master
|
||||||
- pr/*
|
- pr/*
|
||||||
|
- jdk*
|
||||||
|
- main
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
platforms:
|
platforms:
|
||||||
@@ -41,9 +44,6 @@ on:
|
|||||||
make-arguments:
|
make-arguments:
|
||||||
description: 'Additional make arguments'
|
description: 'Additional make arguments'
|
||||||
required: false
|
required: false
|
||||||
dry-run:
|
|
||||||
description: 'Dry run: skip actual builds and tests'
|
|
||||||
required: false
|
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
@@ -57,7 +57,7 @@ jobs:
|
|||||||
|
|
||||||
prepare:
|
prepare:
|
||||||
name: 'Prepare the run'
|
name: 'Prepare the run'
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-22.04
|
||||||
env:
|
env:
|
||||||
# List of platforms to exclude by default
|
# List of platforms to exclude by default
|
||||||
EXCLUDED_PLATFORMS: 'alpine-linux-x64'
|
EXCLUDED_PLATFORMS: 'alpine-linux-x64'
|
||||||
@@ -71,7 +71,6 @@ jobs:
|
|||||||
windows-x64: ${{ steps.include.outputs.windows-x64 }}
|
windows-x64: ${{ steps.include.outputs.windows-x64 }}
|
||||||
windows-aarch64: ${{ steps.include.outputs.windows-aarch64 }}
|
windows-aarch64: ${{ steps.include.outputs.windows-aarch64 }}
|
||||||
docs: ${{ steps.include.outputs.docs }}
|
docs: ${{ steps.include.outputs.docs }}
|
||||||
dry-run: ${{ steps.include.outputs.dry-run }}
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 'Checkout the scripts'
|
- name: 'Checkout the scripts'
|
||||||
@@ -145,35 +144,6 @@ jobs:
|
|||||||
echo 'false'
|
echo 'false'
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_dry_run() {
|
|
||||||
if [[ $GITHUB_EVENT_NAME == workflow_dispatch ]]; then
|
|
||||||
# Take the user-specified one.
|
|
||||||
echo '${{ github.event.inputs.dry-run }}'
|
|
||||||
return
|
|
||||||
elif [[ $GITHUB_EVENT_NAME == push ]]; then
|
|
||||||
# Cut out the real branch name
|
|
||||||
BRANCH=${GITHUB_REF##*/}
|
|
||||||
|
|
||||||
# Dry run rebuilds the caches in current branch, so they can be reused
|
|
||||||
# for any child PR branches. Because of this, we want to trigger this
|
|
||||||
# workflow in master branch, so that actual PR branches can use the cache.
|
|
||||||
# This workflow would trigger every time contributors sync their master
|
|
||||||
# branches in their personal forks.
|
|
||||||
if [[ $BRANCH == "master" ]]; then
|
|
||||||
echo 'true'
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ...same for stabilization branches
|
|
||||||
if [[ $BRANCH =~ "jdk(.*)" ]]; then
|
|
||||||
echo 'true'
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'false'
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "linux-x64=$(check_platform linux-x64 linux x64)" >> $GITHUB_OUTPUT
|
echo "linux-x64=$(check_platform linux-x64 linux x64)" >> $GITHUB_OUTPUT
|
||||||
echo "linux-x64-variants=$(check_platform linux-x64-variants variants)" >> $GITHUB_OUTPUT
|
echo "linux-x64-variants=$(check_platform linux-x64-variants variants)" >> $GITHUB_OUTPUT
|
||||||
echo "linux-cross-compile=$(check_platform linux-cross-compile cross-compile)" >> $GITHUB_OUTPUT
|
echo "linux-cross-compile=$(check_platform linux-cross-compile cross-compile)" >> $GITHUB_OUTPUT
|
||||||
@@ -183,7 +153,6 @@ jobs:
|
|||||||
echo "windows-x64=$(check_platform windows-x64 windows x64)" >> $GITHUB_OUTPUT
|
echo "windows-x64=$(check_platform windows-x64 windows x64)" >> $GITHUB_OUTPUT
|
||||||
echo "windows-aarch64=$(check_platform windows-aarch64 windows aarch64)" >> $GITHUB_OUTPUT
|
echo "windows-aarch64=$(check_platform windows-aarch64 windows aarch64)" >> $GITHUB_OUTPUT
|
||||||
echo "docs=$(check_platform docs)" >> $GITHUB_OUTPUT
|
echo "docs=$(check_platform docs)" >> $GITHUB_OUTPUT
|
||||||
echo "dry-run=$(check_dry_run)" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### Build jobs
|
### Build jobs
|
||||||
@@ -198,7 +167,6 @@ jobs:
|
|||||||
gcc-major-version: '10'
|
gcc-major-version: '10'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.linux-x64 == 'true'
|
if: needs.prepare.outputs.linux-x64 == 'true'
|
||||||
|
|
||||||
build-linux-x64-hs-nopch:
|
build-linux-x64-hs-nopch:
|
||||||
@@ -213,7 +181,6 @@ jobs:
|
|||||||
extra-conf-options: '--disable-precompiled-headers'
|
extra-conf-options: '--disable-precompiled-headers'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.linux-x64-variants == 'true'
|
if: needs.prepare.outputs.linux-x64-variants == 'true'
|
||||||
|
|
||||||
build-linux-x64-hs-zero:
|
build-linux-x64-hs-zero:
|
||||||
@@ -228,7 +195,6 @@ jobs:
|
|||||||
extra-conf-options: '--with-jvm-variants=zero --disable-precompiled-headers'
|
extra-conf-options: '--with-jvm-variants=zero --disable-precompiled-headers'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.linux-x64-variants == 'true'
|
if: needs.prepare.outputs.linux-x64-variants == 'true'
|
||||||
|
|
||||||
build-linux-x64-hs-minimal:
|
build-linux-x64-hs-minimal:
|
||||||
@@ -243,7 +209,6 @@ jobs:
|
|||||||
extra-conf-options: '--with-jvm-variants=minimal --disable-precompiled-headers'
|
extra-conf-options: '--with-jvm-variants=minimal --disable-precompiled-headers'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.linux-x64-variants == 'true'
|
if: needs.prepare.outputs.linux-x64-variants == 'true'
|
||||||
|
|
||||||
build-linux-x64-hs-optimized:
|
build-linux-x64-hs-optimized:
|
||||||
@@ -259,44 +224,6 @@ jobs:
|
|||||||
extra-conf-options: '--with-debug-level=optimized --disable-precompiled-headers'
|
extra-conf-options: '--with-debug-level=optimized --disable-precompiled-headers'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.linux-x64-variants == 'true'
|
|
||||||
|
|
||||||
build-linux-x64-static:
|
|
||||||
name: linux-x64-static
|
|
||||||
needs: prepare
|
|
||||||
uses: ./.github/workflows/build-linux.yml
|
|
||||||
with:
|
|
||||||
platform: linux-x64
|
|
||||||
make-target: 'static-jdk-bundles'
|
|
||||||
# There are issues with fastdebug static build in GHA due to space limit.
|
|
||||||
# Only do release build for now.
|
|
||||||
debug-levels: '[ "release" ]'
|
|
||||||
gcc-major-version: '10'
|
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
static-suffix: "-static"
|
|
||||||
if: needs.prepare.outputs.linux-x64 == 'true'
|
|
||||||
|
|
||||||
build-linux-x64-static-libs:
|
|
||||||
name: linux-x64-static-libs
|
|
||||||
needs: prepare
|
|
||||||
uses: ./.github/workflows/build-linux.yml
|
|
||||||
with:
|
|
||||||
platform: linux-x64
|
|
||||||
make-target: 'static-libs-bundles'
|
|
||||||
# Only build static-libs-bundles for release builds.
|
|
||||||
# For debug builds, building static-libs often exceeds disk space.
|
|
||||||
debug-levels: '[ "release" ]'
|
|
||||||
gcc-major-version: '10'
|
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
# Upload static libs bundles separately to avoid interference with normal linux-x64 bundle.
|
|
||||||
# This bundle is not used by testing jobs, but downstreams use it to check that
|
|
||||||
# dependent projects, e.g. libgraal, builds fine.
|
|
||||||
bundle-suffix: "-static-libs"
|
|
||||||
if: needs.prepare.outputs.linux-x64-variants == 'true'
|
if: needs.prepare.outputs.linux-x64-variants == 'true'
|
||||||
|
|
||||||
build-linux-cross-compile:
|
build-linux-cross-compile:
|
||||||
@@ -307,7 +234,6 @@ jobs:
|
|||||||
gcc-major-version: '10'
|
gcc-major-version: '10'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.linux-cross-compile == 'true'
|
if: needs.prepare.outputs.linux-cross-compile == 'true'
|
||||||
|
|
||||||
build-alpine-linux-x64:
|
build-alpine-linux-x64:
|
||||||
@@ -318,7 +244,6 @@ jobs:
|
|||||||
platform: alpine-linux-x64
|
platform: alpine-linux-x64
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.alpine-linux-x64 == 'true'
|
if: needs.prepare.outputs.alpine-linux-x64 == 'true'
|
||||||
|
|
||||||
build-macos-x64:
|
build-macos-x64:
|
||||||
@@ -327,11 +252,10 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-macos.yml
|
uses: ./.github/workflows/build-macos.yml
|
||||||
with:
|
with:
|
||||||
platform: macos-x64
|
platform: macos-x64
|
||||||
runs-on: 'macos-15-intel'
|
runs-on: 'macos-13'
|
||||||
xcode-toolset-version: '16.4'
|
xcode-toolset-version: '14.3.1'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.macos-x64 == 'true'
|
if: needs.prepare.outputs.macos-x64 == 'true'
|
||||||
|
|
||||||
build-macos-aarch64:
|
build-macos-aarch64:
|
||||||
@@ -340,11 +264,10 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-macos.yml
|
uses: ./.github/workflows/build-macos.yml
|
||||||
with:
|
with:
|
||||||
platform: macos-aarch64
|
platform: macos-aarch64
|
||||||
runs-on: 'macos-15'
|
runs-on: 'macos-14'
|
||||||
xcode-toolset-version: '16.4'
|
xcode-toolset-version: '15.4'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.macos-aarch64 == 'true'
|
if: needs.prepare.outputs.macos-aarch64 == 'true'
|
||||||
|
|
||||||
build-windows-x64:
|
build-windows-x64:
|
||||||
@@ -353,11 +276,10 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-windows.yml
|
uses: ./.github/workflows/build-windows.yml
|
||||||
with:
|
with:
|
||||||
platform: windows-x64
|
platform: windows-x64
|
||||||
msvc-toolset-version: '14.44'
|
msvc-toolset-version: '14.29'
|
||||||
msvc-toolset-architecture: 'x86.x64'
|
msvc-toolset-architecture: 'x86.x64'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.windows-x64 == 'true'
|
if: needs.prepare.outputs.windows-x64 == 'true'
|
||||||
|
|
||||||
build-windows-aarch64:
|
build-windows-aarch64:
|
||||||
@@ -366,13 +288,12 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-windows.yml
|
uses: ./.github/workflows/build-windows.yml
|
||||||
with:
|
with:
|
||||||
platform: windows-aarch64
|
platform: windows-aarch64
|
||||||
msvc-toolset-version: '14.44'
|
msvc-toolset-version: '14.29'
|
||||||
msvc-toolset-architecture: 'arm64'
|
msvc-toolset-architecture: 'arm64'
|
||||||
make-target: 'hotspot'
|
make-target: 'hotspot'
|
||||||
extra-conf-options: '--openjdk-target=aarch64-unknown-cygwin'
|
extra-conf-options: '--openjdk-target=aarch64-unknown-cygwin'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.windows-aarch64 == 'true'
|
if: needs.prepare.outputs.windows-aarch64 == 'true'
|
||||||
|
|
||||||
build-docs:
|
build-docs:
|
||||||
@@ -389,7 +310,6 @@ jobs:
|
|||||||
gcc-major-version: '10'
|
gcc-major-version: '10'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
if: needs.prepare.outputs.docs == 'true'
|
if: needs.prepare.outputs.docs == 'true'
|
||||||
|
|
||||||
###
|
###
|
||||||
@@ -399,53 +319,30 @@ jobs:
|
|||||||
test-linux-x64:
|
test-linux-x64:
|
||||||
name: linux-x64
|
name: linux-x64
|
||||||
needs:
|
needs:
|
||||||
- prepare
|
|
||||||
- build-linux-x64
|
- build-linux-x64
|
||||||
uses: ./.github/workflows/test.yml
|
uses: ./.github/workflows/test.yml
|
||||||
with:
|
with:
|
||||||
platform: linux-x64
|
platform: linux-x64
|
||||||
bootjdk-platform: linux-x64
|
bootjdk-platform: linux-x64
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-22.04
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
debug-suffix: -debug
|
|
||||||
|
|
||||||
test-linux-x64-static:
|
|
||||||
name: linux-x64-static
|
|
||||||
needs:
|
|
||||||
- prepare
|
|
||||||
- build-linux-x64
|
|
||||||
- build-linux-x64-static
|
|
||||||
uses: ./.github/workflows/test.yml
|
|
||||||
with:
|
|
||||||
platform: linux-x64
|
|
||||||
bootjdk-platform: linux-x64
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
static-suffix: "-static"
|
|
||||||
|
|
||||||
test-macos-aarch64:
|
test-macos-aarch64:
|
||||||
name: macos-aarch64
|
name: macos-aarch64
|
||||||
needs:
|
needs:
|
||||||
- prepare
|
|
||||||
- build-macos-aarch64
|
- build-macos-aarch64
|
||||||
uses: ./.github/workflows/test.yml
|
uses: ./.github/workflows/test.yml
|
||||||
with:
|
with:
|
||||||
platform: macos-aarch64
|
platform: macos-aarch64
|
||||||
bootjdk-platform: macos-aarch64
|
bootjdk-platform: macos-aarch64
|
||||||
runs-on: macos-15
|
runs-on: macos-14
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
xcode-toolset-version: '15.4'
|
||||||
xcode-toolset-version: '16.4'
|
|
||||||
debug-suffix: -debug
|
|
||||||
|
|
||||||
test-windows-x64:
|
test-windows-x64:
|
||||||
name: windows-x64
|
name: windows-x64
|
||||||
needs:
|
needs:
|
||||||
- prepare
|
|
||||||
- build-windows-x64
|
- build-windows-x64
|
||||||
uses: ./.github/workflows/test.yml
|
uses: ./.github/workflows/test.yml
|
||||||
with:
|
with:
|
||||||
platform: windows-x64
|
platform: windows-x64
|
||||||
bootjdk-platform: windows-x64
|
bootjdk-platform: windows-x64
|
||||||
runs-on: windows-2025
|
runs-on: windows-2019
|
||||||
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
|
|
||||||
debug-suffix: -debug
|
|
||||||
|
|||||||
270
.github/workflows/pr.yml
vendored
Normal file
270
.github/workflows/pr.yml
vendored
Normal file
@@ -0,0 +1,270 @@
|
|||||||
|
#
|
||||||
|
# Copyright 2000-2023 JetBrains s.r.o.
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
#
|
||||||
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation. Oracle designates this
|
||||||
|
# particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
|
# questions.
|
||||||
|
#
|
||||||
|
|
||||||
|
name: 'Build OpenJDK on pull request'
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
###
|
||||||
|
### Determine platforms to include
|
||||||
|
###
|
||||||
|
select:
|
||||||
|
name: 'Select platforms'
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
outputs:
|
||||||
|
linux-x64: ${{ steps.include.outputs.linux-x64 }}
|
||||||
|
linux-x86: ${{ steps.include.outputs.linux-x86 }}
|
||||||
|
linux-cross-compile: ${{ steps.include.outputs.linux-cross-compile }}
|
||||||
|
macos-x64: ${{ steps.include.outputs.macos-x64 }}
|
||||||
|
macos-aarch64: ${{ steps.include.outputs.macos-aarch64 }}
|
||||||
|
windows-x64: ${{ steps.include.outputs.windows-x64 }}
|
||||||
|
windows-aarch64: ${{ steps.include.outputs.windows-aarch64 }}
|
||||||
|
windows-x86: ${{ steps.include.outputs.windows-x86 }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# This function must be inlined in main.yml, or we'd be forced to checkout the repo
|
||||||
|
- name: 'Check what jobs to run'
|
||||||
|
id: include
|
||||||
|
run: |
|
||||||
|
# Determine which platform jobs to run
|
||||||
|
|
||||||
|
# Returns 'true' if the input platform list matches any of the platform monikers given as argument,
|
||||||
|
# 'false' otherwise.
|
||||||
|
# arg $1: platform name or names to look for
|
||||||
|
function check_platform() {
|
||||||
|
if [[ $GITHUB_EVENT_NAME == workflow_dispatch ]]; then
|
||||||
|
input='${{ github.event.inputs.platforms }}'
|
||||||
|
elif [[ $GITHUB_EVENT_NAME == push ]]; then
|
||||||
|
if [[ '${{ !secrets.JDK_SUBMIT_FILTER || startsWith(github.ref, 'refs/heads/submit/') }}' == 'false' ]]; then
|
||||||
|
# If JDK_SUBMIT_FILTER is set, and this is not a "submit/" branch, don't run anything
|
||||||
|
>&2 echo 'JDK_SUBMIT_FILTER is set and not a "submit/" branch'
|
||||||
|
echo 'false'
|
||||||
|
return
|
||||||
|
else
|
||||||
|
input='${{ secrets.JDK_SUBMIT_PLATFORMS }}'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
normalized_input="$(echo ,$input, | tr -d ' ')"
|
||||||
|
if [[ "$normalized_input" == ",," ]]; then
|
||||||
|
# For an empty input, assume all platforms should run
|
||||||
|
echo 'true'
|
||||||
|
return
|
||||||
|
else
|
||||||
|
# Check for all acceptable platform names
|
||||||
|
for part in $* ; do
|
||||||
|
if echo "$normalized_input" | grep -q -e ",$part," ; then
|
||||||
|
echo 'true'
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 'false'
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "linux-x64=$(check_platform linux-x64 linux x64)" >> $GITHUB_OUTPUT
|
||||||
|
echo "linux-x86=$(check_platform linux-x86 linux x86)" >> $GITHUB_OUTPUT
|
||||||
|
echo "linux-x64-variants=$(check_platform linux-x64-variants variants)" >> $GITHUB_OUTPUT
|
||||||
|
echo "linux-cross-compile=$(check_platform linux-cross-compile cross-compile)" >> $GITHUB_OUTPUT
|
||||||
|
echo "macos-x64=$(check_platform macos-x64 macos x64)" >> $GITHUB_OUTPUT
|
||||||
|
echo "macos-aarch64=$(check_platform macos-aarch64 macos aarch64)" >> $GITHUB_OUTPUT
|
||||||
|
echo "windows-x64=$(check_platform windows-x64 windows x64)" >> $GITHUB_OUTPUT
|
||||||
|
echo "windows-x86=$(check_platform windows-x86 windows x86)" >> $GITHUB_OUTPUT
|
||||||
|
echo "windows-aarch64=$(check_platform windows-aarch64 windows aarch64)" >> $GITHUB_OUTPUT
|
||||||
|
echo "docs=$(check_platform docs)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
###
|
||||||
|
### Build jobs
|
||||||
|
###
|
||||||
|
|
||||||
|
build-linux-x64:
|
||||||
|
name: linux-x64
|
||||||
|
needs: select
|
||||||
|
uses: ./.github/workflows/build-linux.yml
|
||||||
|
with:
|
||||||
|
platform: linux-x64
|
||||||
|
gcc-major-version: '10'
|
||||||
|
apt-gcc-version: '10.4.0-4ubuntu1~22.04'
|
||||||
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
|
# The linux-x64 jdk bundle is used as buildjdk for the cross-compile job
|
||||||
|
if: needs.select.outputs.linux-x64 == 'true' || needs.select.outputs.linux-cross-compile == 'true'
|
||||||
|
|
||||||
|
build-linux-x86:
|
||||||
|
name: linux-x86
|
||||||
|
needs: select
|
||||||
|
uses: ./.github/workflows/build-linux.yml
|
||||||
|
with:
|
||||||
|
platform: linux-x86
|
||||||
|
gcc-major-version: '10'
|
||||||
|
gcc-package-suffix: '-multilib'
|
||||||
|
apt-gcc-version: '10.4.0-4ubuntu1~22.04'
|
||||||
|
apt-architecture: 'i386'
|
||||||
|
# Some multilib libraries do not have proper inter-dependencies, so we have to
|
||||||
|
# install their dependencies manually.
|
||||||
|
apt-extra-packages: 'libfreetype6-dev:i386 libtiff-dev:i386 libcupsimage2-dev:i386 libc6-i386'
|
||||||
|
extra-conf-options: '--with-target-bits=32'
|
||||||
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
|
if: needs.select.outputs.linux-x86 == 'true'
|
||||||
|
|
||||||
|
build-linux-cross-compile:
|
||||||
|
name: linux-cross-compile
|
||||||
|
needs:
|
||||||
|
- select
|
||||||
|
- build-linux-x64
|
||||||
|
uses: ./.github/workflows/build-cross-compile.yml
|
||||||
|
with:
|
||||||
|
gcc-major-version: '10'
|
||||||
|
apt-gcc-version: '10.4.0-4ubuntu1~22.04'
|
||||||
|
apt-gcc-cross-version: '10.4.0-4ubuntu1~22.04cross1'
|
||||||
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
|
if: needs.select.outputs.linux-cross-compile == 'true'
|
||||||
|
|
||||||
|
build-macos-x64:
|
||||||
|
name: macos-x64
|
||||||
|
needs: select
|
||||||
|
uses: ./.github/workflows/build-macos.yml
|
||||||
|
with:
|
||||||
|
platform: macos-x64
|
||||||
|
xcode-toolset-version: '12.5.1'
|
||||||
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
|
if: needs.select.outputs.macos-x64 == 'true'
|
||||||
|
|
||||||
|
build-macos-aarch64:
|
||||||
|
name: macos-aarch64
|
||||||
|
needs: select
|
||||||
|
uses: ./.github/workflows/build-macos.yml
|
||||||
|
with:
|
||||||
|
platform: macos-aarch64
|
||||||
|
xcode-toolset-version: '12.5.1'
|
||||||
|
extra-conf-options: '--openjdk-target=aarch64-apple-darwin'
|
||||||
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
|
if: needs.select.outputs.macos-aarch64 == 'true'
|
||||||
|
|
||||||
|
build-windows-x64:
|
||||||
|
name: windows-x64
|
||||||
|
needs: select
|
||||||
|
uses: ./.github/workflows/build-windows.yml
|
||||||
|
with:
|
||||||
|
platform: windows-x64
|
||||||
|
msvc-toolset-version: '14.29'
|
||||||
|
msvc-toolset-architecture: 'x86.x64'
|
||||||
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
|
if: needs.select.outputs.windows-x64 == 'true'
|
||||||
|
|
||||||
|
build-windows-x86:
|
||||||
|
name: windows-x86
|
||||||
|
needs: select
|
||||||
|
uses: ./.github/workflows/build-windows.yml
|
||||||
|
with:
|
||||||
|
platform: windows-x86
|
||||||
|
msvc-toolset-version: '14.29'
|
||||||
|
msvc-toolset-architecture: 'x86'
|
||||||
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
|
if: needs.select.outputs.windows-x86 == 'true'
|
||||||
|
|
||||||
|
build-windows-aarch64:
|
||||||
|
name: windows-aarch64
|
||||||
|
needs: select
|
||||||
|
uses: ./.github/workflows/build-windows.yml
|
||||||
|
with:
|
||||||
|
platform: windows-aarch64
|
||||||
|
msvc-toolset-version: '14.29'
|
||||||
|
msvc-toolset-architecture: 'arm64'
|
||||||
|
make-target: 'hotspot'
|
||||||
|
extra-conf-options: '--openjdk-target=aarch64-unknown-cygwin'
|
||||||
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
|
if: needs.select.outputs.windows-aarch64 == 'true'
|
||||||
|
|
||||||
|
build-docs:
|
||||||
|
name: docs
|
||||||
|
needs: select
|
||||||
|
uses: ./.github/workflows/build-linux.yml
|
||||||
|
with:
|
||||||
|
platform: linux-x64
|
||||||
|
debug-levels: '[ "debug" ]'
|
||||||
|
make-target: 'docs-jdk-bundles'
|
||||||
|
# Make sure we never try to make full docs, since that would require a
|
||||||
|
# build JDK, and we do not need the additional testing of the graphs.
|
||||||
|
extra-conf-options: '--disable-full-docs'
|
||||||
|
gcc-major-version: '10'
|
||||||
|
apt-gcc-version: '10.4.0-4ubuntu1~22.04'
|
||||||
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
|
if: needs.select.outputs.docs == 'true'
|
||||||
|
|
||||||
|
# Remove bundles so they are not misconstrued as binary distributions from the JDK project
|
||||||
|
remove-bundles:
|
||||||
|
name: 'Remove bundle artifacts'
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
if: always()
|
||||||
|
needs:
|
||||||
|
- build-linux-x64
|
||||||
|
- build-linux-x86
|
||||||
|
- build-linux-cross-compile
|
||||||
|
- build-macos-x64
|
||||||
|
- build-macos-aarch64
|
||||||
|
- build-windows-x64
|
||||||
|
- build-windows-aarch64
|
||||||
|
- build-windows-x86
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# Hack to get hold of the api environment variables that are only defined for actions
|
||||||
|
- name: 'Get API configuration'
|
||||||
|
id: api
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
script: 'return { url: process.env["ACTIONS_RUNTIME_URL"], token: process.env["ACTIONS_RUNTIME_TOKEN"] }'
|
||||||
|
|
||||||
|
- name: 'Remove bundle artifacts'
|
||||||
|
run: |
|
||||||
|
# Find and remove all bundle artifacts
|
||||||
|
ALL_ARTIFACT_URLS="$(curl -s \
|
||||||
|
-H 'Accept: application/json;api-version=6.0-preview' \
|
||||||
|
-H 'Authorization: Bearer ${{ fromJson(steps.api.outputs.result).token }}' \
|
||||||
|
'${{ fromJson(steps.api.outputs.result).url }}_apis/pipelines/workflows/${{ github.run_id }}/artifacts?api-version=6.0-preview')"
|
||||||
|
BUNDLE_ARTIFACT_URLS="$(echo "$ALL_ARTIFACT_URLS" | jq -r -c '.value | map(select(.name|startswith("bundles-"))) | .[].url')"
|
||||||
|
for url in $BUNDLE_ARTIFACT_URLS; do
|
||||||
|
echo "Removing $url"
|
||||||
|
curl -s \
|
||||||
|
-H 'Accept: application/json;api-version=6.0-preview' \
|
||||||
|
-H 'Authorization: Bearer ${{ fromJson(steps.api.outputs.result).token }}' \
|
||||||
|
-X DELETE "$url" \
|
||||||
|
|| echo "Failed to remove bundle"
|
||||||
|
done
|
||||||
50
.github/workflows/test.yml
vendored
50
.github/workflows/test.yml
vendored
@@ -40,16 +40,6 @@ on:
|
|||||||
xcode-toolset-version:
|
xcode-toolset-version:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
dry-run:
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
debug-suffix:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
static-suffix:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# These are needed to make the MSYS2 bash work properly
|
# These are needed to make the MSYS2 bash work properly
|
||||||
@@ -96,35 +86,35 @@ jobs:
|
|||||||
|
|
||||||
- test-name: 'hs/tier1 common'
|
- test-name: 'hs/tier1 common'
|
||||||
test-suite: 'test/hotspot/jtreg/:tier1_common'
|
test-suite: 'test/hotspot/jtreg/:tier1_common'
|
||||||
debug-suffix: ${{ inputs.debug-suffix }}
|
debug-suffix: -debug
|
||||||
|
|
||||||
- test-name: 'hs/tier1 compiler part 1'
|
- test-name: 'hs/tier1 compiler part 1'
|
||||||
test-suite: 'test/hotspot/jtreg/:tier1_compiler_1'
|
test-suite: 'test/hotspot/jtreg/:tier1_compiler_1'
|
||||||
debug-suffix: ${{ inputs.debug-suffix }}
|
debug-suffix: -debug
|
||||||
|
|
||||||
- test-name: 'hs/tier1 compiler part 2'
|
- test-name: 'hs/tier1 compiler part 2'
|
||||||
test-suite: 'test/hotspot/jtreg/:tier1_compiler_2'
|
test-suite: 'test/hotspot/jtreg/:tier1_compiler_2'
|
||||||
debug-suffix: ${{ inputs.debug-suffix }}
|
debug-suffix: -debug
|
||||||
|
|
||||||
- test-name: 'hs/tier1 compiler part 3'
|
- test-name: 'hs/tier1 compiler part 3'
|
||||||
test-suite: 'test/hotspot/jtreg/:tier1_compiler_3'
|
test-suite: 'test/hotspot/jtreg/:tier1_compiler_3'
|
||||||
debug-suffix: ${{ inputs.debug-suffix }}
|
debug-suffix: -debug
|
||||||
|
|
||||||
- test-name: 'hs/tier1 gc'
|
- test-name: 'hs/tier1 gc'
|
||||||
test-suite: 'test/hotspot/jtreg/:tier1_gc'
|
test-suite: 'test/hotspot/jtreg/:tier1_gc'
|
||||||
debug-suffix: ${{ inputs.debug-suffix }}
|
debug-suffix: -debug
|
||||||
|
|
||||||
- test-name: 'hs/tier1 runtime'
|
- test-name: 'hs/tier1 runtime'
|
||||||
test-suite: 'test/hotspot/jtreg/:tier1_runtime'
|
test-suite: 'test/hotspot/jtreg/:tier1_runtime'
|
||||||
debug-suffix: ${{ inputs.debug-suffix }}
|
debug-suffix: -debug
|
||||||
|
|
||||||
- test-name: 'hs/tier1 serviceability'
|
- test-name: 'hs/tier1 serviceability'
|
||||||
test-suite: 'test/hotspot/jtreg/:tier1_serviceability'
|
test-suite: 'test/hotspot/jtreg/:tier1_serviceability'
|
||||||
debug-suffix: ${{ inputs.debug-suffix }}
|
debug-suffix: -debug
|
||||||
|
|
||||||
- test-name: 'lib-test/tier1'
|
- test-name: 'lib-test/tier1'
|
||||||
test-suite: 'test/lib-test/:tier1'
|
test-suite: 'test/lib-test/:tier1'
|
||||||
debug-suffix: ${{ inputs.debug-suffix }}
|
debug-suffix: -debug
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 'Checkout the JDK source'
|
- name: 'Checkout the JDK source'
|
||||||
@@ -150,8 +140,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
platform: ${{ inputs.platform }}
|
platform: ${{ inputs.platform }}
|
||||||
debug-suffix: ${{ matrix.debug-suffix }}
|
debug-suffix: ${{ matrix.debug-suffix }}
|
||||||
static-suffix: ${{ inputs.static-suffix }}
|
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|
||||||
- name: 'Install dependencies'
|
- name: 'Install dependencies'
|
||||||
run: |
|
run: |
|
||||||
@@ -172,21 +160,6 @@ jobs:
|
|||||||
else
|
else
|
||||||
echo "value=$PATH" >> $GITHUB_OUTPUT
|
echo "value=$PATH" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
if [[ '${{ inputs.static-suffix }}' == '-static' ]]; then
|
|
||||||
echo "static-hotspot-problemlist-path=`pwd`/test/hotspot/jtreg/ProblemList-StaticJdk.txt" >> $GITHUB_OUTPUT
|
|
||||||
echo "static-jdk-problemlist-path=`pwd`/test/jdk/ProblemList-StaticJdk.txt" >> $GITHUB_OUTPUT
|
|
||||||
echo "static-langtools-problemlist-path=`pwd`/test/langtools/ProblemList-StaticJdk.txt" >> $GITHUB_OUTPUT
|
|
||||||
echo "static-lib-test-problemlist-path=`pwd`/test/lib-test/ProblemList-StaticJdk.txt" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 'Set Extra Options'
|
|
||||||
id: extra-options
|
|
||||||
run: |
|
|
||||||
if [[ '${{ inputs.static-suffix }}' == '-static' ]]; then
|
|
||||||
echo "test-jdk=JDK_UNDER_TEST=${{ steps.bundles.outputs.static-jdk-path }}" >> $GITHUB_OUTPUT
|
|
||||||
echo "compile-jdk=JDK_FOR_COMPILE=${{ steps.bundles.outputs.jdk-path }}" >> $GITHUB_OUTPUT
|
|
||||||
echo "extra-problem-lists=EXTRA_PROBLEM_LISTS=${{ steps.path.outputs.static-hotspot-problemlist-path }}%20${{ steps.path.outputs.static-jdk-problemlist-path }}%20${{ steps.path.outputs.static-langtools-problemlist-path }}%20${{ steps.path.outputs.static-lib-test-problemlist-path }}" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 'Run tests'
|
- name: 'Run tests'
|
||||||
id: run-tests
|
id: run-tests
|
||||||
@@ -198,13 +171,10 @@ jobs:
|
|||||||
JDK_IMAGE_DIR=${{ steps.bundles.outputs.jdk-path }}
|
JDK_IMAGE_DIR=${{ steps.bundles.outputs.jdk-path }}
|
||||||
SYMBOLS_IMAGE_DIR=${{ steps.bundles.outputs.symbols-path }}
|
SYMBOLS_IMAGE_DIR=${{ steps.bundles.outputs.symbols-path }}
|
||||||
TEST_IMAGE_DIR=${{ steps.bundles.outputs.tests-path }}
|
TEST_IMAGE_DIR=${{ steps.bundles.outputs.tests-path }}
|
||||||
${{ steps.extra-options.outputs.test-jdk }}
|
JTREG='JAVA_OPTIONS=-XX:-CreateCoredumpOnCrash;VERBOSE=fail,error,time;KEYWORDS=!headful'
|
||||||
${{ steps.extra-options.outputs.compile-jdk }}
|
|
||||||
JTREG='JAVA_OPTIONS=-XX:-CreateCoredumpOnCrash;VERBOSE=fail,error,time;KEYWORDS=!headful;${{ steps.extra-options.outputs.extra-problem-lists }}'
|
|
||||||
&& bash ./.github/scripts/gen-test-summary.sh "$GITHUB_STEP_SUMMARY" "$GITHUB_OUTPUT"
|
&& bash ./.github/scripts/gen-test-summary.sh "$GITHUB_STEP_SUMMARY" "$GITHUB_OUTPUT"
|
||||||
env:
|
env:
|
||||||
PATH: ${{ steps.path.outputs.value }}
|
PATH: ${{ steps.path.outputs.value }}
|
||||||
if: ${{ inputs.dry-run == false }}
|
|
||||||
|
|
||||||
# This is a separate step, since if the markdown from a step gets bigger than
|
# This is a separate step, since if the markdown from a step gets bigger than
|
||||||
# 1024 kB it is skipped, but then the short summary above is still generated
|
# 1024 kB it is skipped, but then the short summary above is still generated
|
||||||
@@ -234,7 +204,7 @@ jobs:
|
|||||||
echo '::warning ::Missing test-support directory'
|
echo '::warning ::Missing test-support directory'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
artifact_name="results-${{ inputs.platform }}-$(echo ${{ matrix.test-name }}${{ inputs.static-suffix }} | tr '/ ' '__')"
|
artifact_name="results-${{ inputs.platform }}-$(echo ${{ matrix.test-name }} | tr '/ ' '__')"
|
||||||
echo "artifact-name=$artifact_name" >> $GITHUB_OUTPUT
|
echo "artifact-name=$artifact_name" >> $GITHUB_OUTPUT
|
||||||
if: always()
|
if: always()
|
||||||
|
|
||||||
|
|||||||
10
.gitignore
vendored
10
.gitignore
vendored
@@ -22,12 +22,4 @@ NashornProfile.txt
|
|||||||
/.cache
|
/.cache
|
||||||
/.gdbinit
|
/.gdbinit
|
||||||
/.lldbinit
|
/.lldbinit
|
||||||
**/core.[0-9]*
|
/jbr-api/
|
||||||
*.rej
|
|
||||||
*.orig
|
|
||||||
test/benchmarks/**/target
|
|
||||||
/src/hotspot/CMakeLists.txt
|
|
||||||
/src/hotspot/compile_commands.json
|
|
||||||
/src/hotspot/cmake-build-debug/
|
|
||||||
/src/hotspot/.cache/
|
|
||||||
/src/hotspot/.idea/
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[general]
|
[general]
|
||||||
project=jdk
|
project=jdk
|
||||||
jbs=JDK
|
jbs=JDK
|
||||||
version=27
|
version=25
|
||||||
|
|
||||||
[checks]
|
[checks]
|
||||||
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists,copyright
|
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists,copyright
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# Contributing to the JDK
|
# Contributing to the JDK
|
||||||
|
|
||||||
Please see the [OpenJDK Developers' Guide](https://openjdk.org/guide/).
|
Please see the [OpenJDK Developers’ Guide](https://openjdk.org/guide/).
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
|
[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
|
||||||
|
|
||||||
# Welcome to the JDK!
|
# Welcome to the JDK!
|
||||||
|
|
||||||
For build instructions please see the
|
For build instructions please see the
|
||||||
[online documentation](https://git.openjdk.org/jdk/blob/master/doc/building.md),
|
[online documentation](https://openjdk.org/groups/build/doc/building.html),
|
||||||
or either of these files:
|
or either of these files:
|
||||||
|
|
||||||
- [doc/building.html](doc/building.html) (html version)
|
- [doc/building.html](doc/building.html) (html version)
|
||||||
|
|||||||
295
bin/idea.sh
295
bin/idea.sh
@@ -25,7 +25,26 @@
|
|||||||
# Shell script for generating an IDEA project from a given list of modules
|
# Shell script for generating an IDEA project from a given list of modules
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "usage: $0 [-h|--help] [-v|--verbose] [-o|--output <path>] [-c|--conf <conf_name>] [modules]+"
|
echo "Usage: $0 [-h|--help] [-q|--quiet] [-a|--absolute-paths] [-r|--root <path>] [-o|--output <path>] [-c|--conf <conf_name>] [modules...]"
|
||||||
|
echo " -h | --help"
|
||||||
|
echo " -q | --quiet
|
||||||
|
No stdout output"
|
||||||
|
echo " -a | --absolute-paths
|
||||||
|
Use absolute paths to this jdk, so that generated .idea
|
||||||
|
project files can be moved independently of jdk sources"
|
||||||
|
echo " -r | --root <path>
|
||||||
|
Project content root
|
||||||
|
Default: $TOPLEVEL_DIR"
|
||||||
|
echo " -o | --output <path>
|
||||||
|
Where .idea directory with project files will be generated
|
||||||
|
(e.g. using '-o .' will place project files in './.idea')
|
||||||
|
Default: same as --root"
|
||||||
|
echo " -c | --conf <conf_name>
|
||||||
|
make configuration (release, slowdebug etc)"
|
||||||
|
echo " [modules...]
|
||||||
|
Generate project modules for specific java modules
|
||||||
|
(e.g. 'java.base java.desktop')
|
||||||
|
Default: all existing modules (java.* and jdk.*)"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,10 +52,13 @@ SCRIPT_DIR=`dirname $0`
|
|||||||
#assume TOP is the dir from which the script has been called
|
#assume TOP is the dir from which the script has been called
|
||||||
TOP=`pwd`
|
TOP=`pwd`
|
||||||
cd $SCRIPT_DIR; SCRIPT_DIR=`pwd`
|
cd $SCRIPT_DIR; SCRIPT_DIR=`pwd`
|
||||||
|
if [ "x$TOPLEVEL_DIR" = "x" ] ; then
|
||||||
|
cd .. ; TOPLEVEL_DIR=`pwd`
|
||||||
|
fi
|
||||||
cd $TOP;
|
cd $TOP;
|
||||||
|
|
||||||
IDEA_OUTPUT=$TOP/.idea
|
VERBOSE=true
|
||||||
VERBOSE="false"
|
ABSOLUTE_PATHS=false
|
||||||
CONF_ARG=
|
CONF_ARG=
|
||||||
while [ $# -gt 0 ]
|
while [ $# -gt 0 ]
|
||||||
do
|
do
|
||||||
@@ -45,14 +67,24 @@ do
|
|||||||
usage
|
usage
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-v | --vebose )
|
-q | --quiet )
|
||||||
VERBOSE="true"
|
VERBOSE=false
|
||||||
|
;;
|
||||||
|
|
||||||
|
-a | --absolute-paths )
|
||||||
|
ABSOLUTE_PATHS=true
|
||||||
|
;;
|
||||||
|
|
||||||
|
-r | --root )
|
||||||
|
TOPLEVEL_DIR="$2"
|
||||||
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-o | --output )
|
-o | --output )
|
||||||
IDEA_OUTPUT=$2/.idea
|
IDEA_OUTPUT="$2/.idea"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-c | --conf )
|
-c | --conf )
|
||||||
CONF_ARG="CONF_NAME=$2"
|
CONF_ARG="CONF_NAME=$2"
|
||||||
shift
|
shift
|
||||||
@@ -69,20 +101,17 @@ do
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -e $IDEA_OUTPUT ] ; then
|
if [ "x$IDEA_OUTPUT" = "x" ] ; then
|
||||||
rm -r $IDEA_OUTPUT
|
IDEA_OUTPUT="$TOPLEVEL_DIR/.idea"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p $IDEA_OUTPUT || exit 1
|
mkdir -p $IDEA_OUTPUT || exit 1
|
||||||
cd $IDEA_OUTPUT; IDEA_OUTPUT=`pwd`
|
cd "$TOP" ; cd $TOPLEVEL_DIR; TOPLEVEL_DIR=`pwd`
|
||||||
|
cd "$TOP" ; cd $IDEA_OUTPUT; IDEA_OUTPUT=`pwd`
|
||||||
|
cd ..; IDEA_OUTPUT_PARENT=`pwd`
|
||||||
|
cd "$SCRIPT_DIR/.." ; OPENJDK_DIR=`pwd`
|
||||||
|
|
||||||
if [ "x$TOPLEVEL_DIR" = "x" ] ; then
|
IDEA_MAKE="$OPENJDK_DIR/make/ide/idea/jdk"
|
||||||
cd $SCRIPT_DIR/..
|
|
||||||
TOPLEVEL_DIR=`pwd`
|
|
||||||
cd $IDEA_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
MAKE_DIR="$SCRIPT_DIR/../make"
|
|
||||||
IDEA_MAKE="$MAKE_DIR/ide/idea/jdk"
|
|
||||||
IDEA_TEMPLATE="$IDEA_MAKE/template"
|
IDEA_TEMPLATE="$IDEA_MAKE/template"
|
||||||
|
|
||||||
cp -r "$IDEA_TEMPLATE"/* "$IDEA_OUTPUT"
|
cp -r "$IDEA_TEMPLATE"/* "$IDEA_OUTPUT"
|
||||||
@@ -94,42 +123,78 @@ if [ -d "$TEMPLATES_OVERRIDE" ] ; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$VERBOSE" = "true" ] ; then
|
if [ "$VERBOSE" = true ] ; then
|
||||||
echo "output dir: $IDEA_OUTPUT"
|
echo "Will generate IDEA project files in \"$IDEA_OUTPUT\" for project \"$TOPLEVEL_DIR\""
|
||||||
echo "idea template dir: $IDEA_TEMPLATE"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $TOP ; make idea-gen-config ALLOW=IDEA_OUTPUT,MODULES IDEA_OUTPUT=$IDEA_OUTPUT MODULES="$*" $CONF_ARG || exit 1
|
cd $TOP ; make idea-gen-config ALLOW=TOPLEVEL_DIR,IDEA_OUTPUT_PARENT,IDEA_OUTPUT,MODULES TOPLEVEL_DIR="$TOPLEVEL_DIR" \
|
||||||
|
IDEA_OUTPUT_PARENT="$IDEA_OUTPUT_PARENT" IDEA_OUTPUT="$IDEA_OUTPUT" MODULES="$*" $CONF_ARG || exit 1
|
||||||
cd $SCRIPT_DIR
|
cd $SCRIPT_DIR
|
||||||
|
|
||||||
. $IDEA_OUTPUT/env.cfg
|
. $IDEA_OUTPUT/env.cfg
|
||||||
|
|
||||||
# Expect MODULE_ROOTS, MODULE_NAMES, BOOT_JDK & SPEC to be set
|
# Expect MODULES, MODULE_NAMES, RELATIVE_PROJECT_DIR, RELATIVE_BUILD_DIR to be set
|
||||||
if [ "x$MODULE_ROOTS" = "x" ] ; then
|
if [ "xMODULES" = "x" ] ; then
|
||||||
echo "FATAL: MODULE_ROOTS is empty" >&2; exit 1
|
echo "FATAL: MODULES is empty" >&2; exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "x$MODULE_NAMES" = "x" ] ; then
|
if [ "x$MODULE_NAMES" = "x" ] ; then
|
||||||
echo "FATAL: MODULE_NAMES is empty" >&2; exit 1
|
echo "FATAL: MODULE_NAMES is empty" >&2; exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "x$BOOT_JDK" = "x" ] ; then
|
if [ "x$RELATIVE_PROJECT_DIR" = "x" ] ; then
|
||||||
echo "FATAL: BOOT_JDK is empty" >&2; exit 1
|
echo "FATAL: RELATIVE_PROJECT_DIR is empty" >&2; exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "x$SPEC" = "x" ] ; then
|
if [ "x$RELATIVE_BUILD_DIR" = "x" ] ; then
|
||||||
echo "FATAL: SPEC is empty" >&2; exit 1
|
echo "FATAL: RELATIVE_BUILD_DIR is empty" >&2; exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "$TOPLEVEL_DIR/.hg" ] ; then
|
if [ -d "$TOPLEVEL_DIR/.hg" ] ; then
|
||||||
VCS_TYPE="hg4idea"
|
VCS_TYPE="hg4idea"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Git worktrees use a '.git' file rather than directory, so test both.
|
if [ -d "$TOPLEVEL_DIR/.git" ] ; then
|
||||||
if [ -d "$TOPLEVEL_DIR/.git" -o -f "$TOPLEVEL_DIR/.git" ] ; then
|
|
||||||
VCS_TYPE="Git"
|
VCS_TYPE="Git"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$ABSOLUTE_PATHS" = true ] ; then
|
||||||
|
if [ "x$PATHTOOL" != "x" ]; then
|
||||||
|
PROJECT_DIR="`$PATHTOOL -am $OPENJDK_DIR`"
|
||||||
|
TOPLEVEL_PROJECT_DIR="`$PATHTOOL -am $TOPLEVEL_DIR`"
|
||||||
|
else
|
||||||
|
PROJECT_DIR="$OPENJDK_DIR"
|
||||||
|
TOPLEVEL_PROJECT_DIR="$TOPLEVEL_DIR"
|
||||||
|
fi
|
||||||
|
MODULE_DIR="$PROJECT_DIR"
|
||||||
|
TOPLEVEL_MODULE_DIR="$TOPLEVEL_PROJECT_DIR"
|
||||||
|
cd "$IDEA_OUTPUT_PARENT" && cd "$RELATIVE_BUILD_DIR" && BUILD_DIR="`pwd`"
|
||||||
|
CLION_SCRIPT_TOPDIR="$OPENJDK_DIR"
|
||||||
|
CLION_PROJECT_DIR="$PROJECT_DIR"
|
||||||
|
else
|
||||||
|
if [ "$RELATIVE_PROJECT_DIR" = "." ] ; then
|
||||||
|
PROJECT_DIR=""
|
||||||
|
else
|
||||||
|
PROJECT_DIR="/$RELATIVE_PROJECT_DIR"
|
||||||
|
fi
|
||||||
|
if [ "$RELATIVE_TOPLEVEL_PROJECT_DIR" = "." ] ; then
|
||||||
|
TOPLEVEL_PROJECT_DIR=""
|
||||||
|
else
|
||||||
|
TOPLEVEL_PROJECT_DIR="/$RELATIVE_TOPLEVEL_PROJECT_DIR"
|
||||||
|
fi
|
||||||
|
MODULE_DIR="\$MODULE_DIR\$$PROJECT_DIR"
|
||||||
|
PROJECT_DIR="\$PROJECT_DIR\$$PROJECT_DIR"
|
||||||
|
TOPLEVEL_MODULE_DIR="\$MODULE_DIR\$$TOPLEVEL_PROJECT_DIR"
|
||||||
|
TOPLEVEL_PROJECT_DIR="\$PROJECT_DIR\$$TOPLEVEL_PROJECT_DIR"
|
||||||
|
BUILD_DIR="\$PROJECT_DIR\$/$RELATIVE_BUILD_DIR"
|
||||||
|
CLION_SCRIPT_TOPDIR="$CLION_RELATIVE_PROJECT_DIR"
|
||||||
|
CLION_PROJECT_DIR="\$PROJECT_DIR\$/$CLION_SCRIPT_TOPDIR"
|
||||||
|
fi
|
||||||
|
if [ "$VERBOSE" = true ] ; then
|
||||||
|
echo "Project root: $PROJECT_DIR"
|
||||||
|
echo "Generating IDEA project files..."
|
||||||
|
fi
|
||||||
|
|
||||||
### Replace template variables
|
### Replace template variables
|
||||||
|
|
||||||
NUM_REPLACEMENTS=0
|
NUM_REPLACEMENTS=0
|
||||||
@@ -153,116 +218,106 @@ add_replacement() {
|
|||||||
eval TO$NUM_REPLACEMENTS='$2'
|
eval TO$NUM_REPLACEMENTS='$2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
add_replacement "###PATHTOOL###" "$PATHTOOL"
|
||||||
|
add_replacement "###CLION_SCRIPT_TOPDIR###" "$CLION_SCRIPT_TOPDIR"
|
||||||
|
add_replacement "###CLION_PROJECT_DIR###" "$CLION_PROJECT_DIR"
|
||||||
|
add_replacement "###PROJECT_DIR###" "$PROJECT_DIR"
|
||||||
|
add_replacement "###MODULE_DIR###" "$MODULE_DIR"
|
||||||
|
add_replacement "###TOPLEVEL_PROJECT_DIR###" "$TOPLEVEL_PROJECT_DIR"
|
||||||
|
add_replacement "###TOPLEVEL_MODULE_DIR###" "$TOPLEVEL_MODULE_DIR"
|
||||||
add_replacement "###MODULE_NAMES###" "$MODULE_NAMES"
|
add_replacement "###MODULE_NAMES###" "$MODULE_NAMES"
|
||||||
add_replacement "###VCS_TYPE###" "$VCS_TYPE"
|
add_replacement "###VCS_TYPE###" "$VCS_TYPE"
|
||||||
SPEC_DIR=`dirname $SPEC`
|
add_replacement "###BUILD_DIR###" "$BUILD_DIR"
|
||||||
if [ "x$CYGPATH" != "x" ]; then
|
add_replacement "###RELATIVE_BUILD_DIR###" "$RELATIVE_BUILD_DIR"
|
||||||
add_replacement "###BUILD_DIR###" "`$CYGPATH -am $SPEC_DIR`"
|
if [ "x$PATHTOOL" != "x" ]; then
|
||||||
add_replacement "###IMAGES_DIR###" "`$CYGPATH -am $SPEC_DIR`/images/jdk"
|
add_replacement "###BASH_RUNNER_PREFIX###" "\$PROJECT_DIR\$/.idea/bash.bat"
|
||||||
add_replacement "###ROOT_DIR###" "`$CYGPATH -am $TOPLEVEL_DIR`"
|
else
|
||||||
add_replacement "###IDEA_DIR###" "`$CYGPATH -am $IDEA_OUTPUT`"
|
add_replacement "###BASH_RUNNER_PREFIX###" ""
|
||||||
|
fi
|
||||||
|
if [ "x$PATHTOOL" != "x" ]; then
|
||||||
if [ "x$JT_HOME" = "x" ]; then
|
if [ "x$JT_HOME" = "x" ]; then
|
||||||
add_replacement "###JTREG_HOME###" ""
|
add_replacement "###JTREG_HOME###" ""
|
||||||
else
|
else
|
||||||
add_replacement "###JTREG_HOME###" "`$CYGPATH -am $JT_HOME`"
|
add_replacement "###JTREG_HOME###" "`$PATHTOOL -am $JT_HOME`"
|
||||||
fi
|
|
||||||
elif [ "x$WSL_DISTRO_NAME" != "x" ]; then
|
|
||||||
add_replacement "###BUILD_DIR###" "`wslpath -am $SPEC_DIR`"
|
|
||||||
add_replacement "###IMAGES_DIR###" "`wslpath -am $SPEC_DIR`/images/jdk"
|
|
||||||
add_replacement "###ROOT_DIR###" "`wslpath -am $TOPLEVEL_DIR`"
|
|
||||||
add_replacement "###IDEA_DIR###" "`wslpath -am $IDEA_OUTPUT`"
|
|
||||||
if [ "x$JT_HOME" = "x" ]; then
|
|
||||||
add_replacement "###JTREG_HOME###" ""
|
|
||||||
else
|
|
||||||
add_replacement "###JTREG_HOME###" "`wslpath -am $JT_HOME`"
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
add_replacement "###BUILD_DIR###" "$SPEC_DIR"
|
|
||||||
add_replacement "###JTREG_HOME###" "$JT_HOME"
|
add_replacement "###JTREG_HOME###" "$JT_HOME"
|
||||||
add_replacement "###IMAGES_DIR###" "$SPEC_DIR/images/jdk"
|
|
||||||
add_replacement "###ROOT_DIR###" "$TOPLEVEL_DIR"
|
|
||||||
add_replacement "###IDEA_DIR###" "$IDEA_OUTPUT"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SOURCE_PREFIX="<sourceFolder url=\"file://"
|
MODULE_IMLS=""
|
||||||
SOURCE_POSTFIX="\" isTestSource=\"false\" />"
|
TEST_MODULE_DEPENDENCIES=""
|
||||||
|
for module in $MODULE_NAMES; do
|
||||||
for root in $MODULE_ROOTS; do
|
MODULE_IMLS="$MODULE_IMLS<module fileurl=\"file://\$PROJECT_DIR$/.idea/$module.iml\" filepath=\"\$PROJECT_DIR$/.idea/$module.iml\" /> "
|
||||||
if [ "x$CYGPATH" != "x" ]; then
|
TEST_MODULE_DEPENDENCIES="$TEST_MODULE_DEPENDENCIES<orderEntry type=\"module\" module-name=\"$module\" scope=\"TEST\" /> "
|
||||||
root=`$CYGPATH -am $root`
|
|
||||||
elif [ "x$WSL_DISTRO_NAME" != "x" ]; then
|
|
||||||
root=`wslpath -am $root`
|
|
||||||
fi
|
|
||||||
|
|
||||||
SOURCES=$SOURCES" $SOURCE_PREFIX""$root""$SOURCE_POSTFIX"
|
|
||||||
done
|
done
|
||||||
|
add_replacement "###MODULE_IMLS###" "$MODULE_IMLS"
|
||||||
add_replacement "###SOURCE_ROOTS###" "$SOURCES"
|
add_replacement "###TEST_MODULE_DEPENDENCIES###" "$TEST_MODULE_DEPENDENCIES"
|
||||||
|
|
||||||
replace_template_dir "$IDEA_OUTPUT"
|
replace_template_dir "$IDEA_OUTPUT"
|
||||||
|
|
||||||
### Compile the custom Logger
|
### Generate module project files
|
||||||
|
|
||||||
CLASSES=$IDEA_OUTPUT/classes
|
if [ "$VERBOSE" = true ] ; then
|
||||||
|
echo "Generating project modules:"
|
||||||
|
fi
|
||||||
|
(
|
||||||
|
DEFAULT_IFS="$IFS"
|
||||||
|
IFS='#'
|
||||||
|
for value in $MODULES; do
|
||||||
|
(
|
||||||
|
eval "$value"
|
||||||
|
if [ "$VERBOSE" = true ] ; then
|
||||||
|
echo " $module"
|
||||||
|
fi
|
||||||
|
MAIN_SOURCE_DIRS=""
|
||||||
|
CONTENT_ROOTS=""
|
||||||
|
IFS=' '
|
||||||
|
for dir in $moduleSrcDirs; do
|
||||||
|
case $dir in
|
||||||
|
"src/"*) MAIN_SOURCE_DIRS="$MAIN_SOURCE_DIRS <sourceFolder url=\"file://$MODULE_DIR/$dir\" isTestSource=\"false\" />" ;;
|
||||||
|
*"/support/gensrc/$module") ;; # Exclude generated sources to avoid module-info conflicts, see https://youtrack.jetbrains.com/issue/IDEA-185108
|
||||||
|
*) CONTENT_ROOTS="$CONTENT_ROOTS <content url=\"file://$MODULE_DIR/$dir\">\
|
||||||
|
<sourceFolder url=\"file://$MODULE_DIR/$dir\" isTestSource=\"false\" generated=\"true\" /></content>" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
if [ "x$MAIN_SOURCE_DIRS" != "x" ] ; then
|
||||||
|
CONTENT_ROOTS="<content url=\"file://$MODULE_DIR/src/$module\">$MAIN_SOURCE_DIRS</content>$CONTENT_ROOTS"
|
||||||
|
fi
|
||||||
|
add_replacement "###MODULE_CONTENT_ROOTS###" "$CONTENT_ROOTS"
|
||||||
|
DEPENDENCIES=""
|
||||||
|
for dep in $moduleDependencies; do
|
||||||
|
case $MODULE_NAMES in # Exclude skipped modules from dependencies
|
||||||
|
*"$dep"*) DEPENDENCIES="$DEPENDENCIES<orderEntry type=\"module\" module-name=\"$dep\" /> "
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
add_replacement "###DEPENDENCIES###" "$DEPENDENCIES"
|
||||||
|
cp "$IDEA_OUTPUT/module.iml" "$IDEA_OUTPUT/$module.iml"
|
||||||
|
IFS="$DEFAULT_IFS"
|
||||||
|
replace_template_file "$IDEA_OUTPUT/$module.iml"
|
||||||
|
)
|
||||||
|
done
|
||||||
|
)
|
||||||
|
rm "$IDEA_OUTPUT/module.iml"
|
||||||
|
|
||||||
if [ "x$ANT_HOME" = "x" ] ; then
|
### Create shell script runner for Windows
|
||||||
# try some common locations
|
|
||||||
if [ -f "/usr/share/ant/lib/ant.jar" ] ; then
|
if [ "x$PATHTOOL" != "x" ]; then
|
||||||
ANT_HOME="/usr/share/ant"
|
echo "@echo off" > "$IDEA_OUTPUT/bash.bat"
|
||||||
|
if [ "x$WSL_DISTRO_NAME" != "x" ] ; then
|
||||||
|
echo "wsl -d $WSL_DISTRO_NAME --cd \"%cd%\" -e %*" >> "$IDEA_OUTPUT/bash.bat"
|
||||||
else
|
else
|
||||||
try_ant=$(ls /opt/homebrew/Cellar/ant/*/libexec/lib/ant.jar 2> /dev/null | sort -r | head -n 1)
|
echo "$WINENV_ROOT\bin\bash.exe -l -c \"cd %CD:\=/%/ && %*\"" >> "$IDEA_OUTPUT/bash.bat"
|
||||||
if [ "x$try_ant" != "x" ] ; then
|
|
||||||
ANT_HOME=$(cd $(dirname $try_ant)/.. && pwd)
|
|
||||||
else
|
|
||||||
try_ant=$(ls /usr/local/Cellar/ant/*/libexec/lib/ant.jar 2> /dev/null | sort -r | head -n 1)
|
|
||||||
if [ "x$try_ant" != "x" ] ; then
|
|
||||||
ANT_HOME=$(cd $(dirname $try_ant)/.. && pwd)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ ! -f "$ANT_HOME/lib/ant.jar" ] ; then
|
|
||||||
echo "FATAL: ANT_HOME is incorrect. Try removing it and use autodetection, or fix the value" >&2; exit 1
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "x$ANT_HOME" = "x" ] ; then
|
|
||||||
echo "FATAL: cannot find ant. Try setting ANT_HOME." >&2; exit 1
|
|
||||||
fi
|
|
||||||
CP=$ANT_HOME/lib/ant.jar
|
|
||||||
rm -rf $CLASSES; mkdir $CLASSES
|
|
||||||
|
|
||||||
# If we have a Windows boot JDK, we need a .exe suffix
|
|
||||||
if [ -e "$BOOT_JDK/bin/java.exe" ] ; then
|
|
||||||
JAVAC=javac.exe
|
|
||||||
else
|
|
||||||
JAVAC=javac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If we are on WSL, the boot JDK might be either Windows or Linux,
|
if [ "$VERBOSE" = true ] ; then
|
||||||
# and we need to use realpath instead of CYGPATH to make javac work on both.
|
IDEA_PROJECT_DIR="`dirname $IDEA_OUTPUT`"
|
||||||
# We need to handle this case first since CYGPATH might be set on WSL.
|
if [ "x$PATHTOOL" != "x" ]; then
|
||||||
if [ "x$WSL_DISTRO_NAME" != "x" ]; then
|
IDEA_PROJECT_DIR="`$PATHTOOL -am $IDEA_PROJECT_DIR`"
|
||||||
JAVAC_SOURCE_FILE=`realpath --relative-to=./ $IDEA_OUTPUT/src/idea/IdeaLoggerWrapper.java`
|
fi
|
||||||
JAVAC_SOURCE_PATH=`realpath --relative-to=./ $IDEA_OUTPUT/src`
|
echo "
|
||||||
JAVAC_CLASSES=`realpath --relative-to=./ $CLASSES`
|
Now you can open \"$IDEA_PROJECT_DIR\" as IDEA project
|
||||||
ANT_TEMP=`mktemp -d -p ./`
|
You can also run 'bash \"$IDEA_OUTPUT/jdk-clion/update-project.sh\"' to generate Clion project"
|
||||||
cp $ANT_HOME/lib/ant.jar $ANT_TEMP/ant.jar
|
|
||||||
JAVAC_CP=$ANT_TEMP/ant.jar
|
|
||||||
elif [ "x$CYGPATH" != "x" ] ; then ## CYGPATH may be set in env.cfg
|
|
||||||
JAVAC_SOURCE_FILE=`$CYGPATH -am $IDEA_OUTPUT/src/idea/IdeaLoggerWrapper.java`
|
|
||||||
JAVAC_SOURCE_PATH=`$CYGPATH -am $IDEA_OUTPUT/src`
|
|
||||||
JAVAC_CLASSES=`$CYGPATH -am $CLASSES`
|
|
||||||
JAVAC_CP=`$CYGPATH -am $CP`
|
|
||||||
else
|
|
||||||
JAVAC_SOURCE_FILE=$IDEA_OUTPUT/src/idea/IdeaLoggerWrapper.java
|
|
||||||
JAVAC_SOURCE_PATH=$IDEA_OUTPUT/src
|
|
||||||
JAVAC_CLASSES=$CLASSES
|
|
||||||
JAVAC_CP=$CP
|
|
||||||
fi
|
|
||||||
|
|
||||||
$BOOT_JDK/bin/$JAVAC -d $JAVAC_CLASSES -sourcepath $JAVAC_SOURCE_PATH -cp $JAVAC_CP $JAVAC_SOURCE_FILE
|
|
||||||
|
|
||||||
if [ "x$WSL_DISTRO_NAME" != "x" ]; then
|
|
||||||
rm -rf $ANT_TEMP
|
|
||||||
fi
|
fi
|
||||||
192
bin/unshuffle_list.txt
Normal file
192
bin/unshuffle_list.txt
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
#
|
||||||
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
|
# questions.
|
||||||
|
#
|
||||||
|
|
||||||
|
src/bsd : jdk/src/bsd
|
||||||
|
src/demo : jdk/src/demo
|
||||||
|
src/java.activation : jaxws/src/java.activation
|
||||||
|
src/java.base : jdk/src/java.base
|
||||||
|
src/java.compiler : langtools/src/java.compiler
|
||||||
|
src/java.corba : corba/src/java.corba
|
||||||
|
src/java.datatransfer : jdk/src/java.datatransfer
|
||||||
|
src/java.desktop : jdk/src/java.desktop
|
||||||
|
src/java.instrument : jdk/src/java.instrument
|
||||||
|
src/java.logging : jdk/src/java.logging
|
||||||
|
src/java.management : jdk/src/java.management
|
||||||
|
src/java.management.rmi : jdk/src/java.management.rmi
|
||||||
|
src/java.naming : jdk/src/java.naming
|
||||||
|
src/java.prefs : jdk/src/java.prefs
|
||||||
|
src/java.rmi : jdk/src/java.rmi
|
||||||
|
src/java.scripting : jdk/src/java.scripting
|
||||||
|
src/java.se : jdk/src/java.se
|
||||||
|
src/java.security.jgss : jdk/src/java.security.jgss
|
||||||
|
src/java.security.sasl : jdk/src/java.security.sasl
|
||||||
|
src/java.se.ee : jdk/src/java.se.ee
|
||||||
|
src/java.smartcardio : jdk/src/java.smartcardio
|
||||||
|
src/java.sql : jdk/src/java.sql
|
||||||
|
src/java.sql.rowset : jdk/src/java.sql.rowset
|
||||||
|
src/java.transaction : jdk/src/java.transaction
|
||||||
|
src/java.xml : jaxp/src/java.xml
|
||||||
|
src/java.xml.bind : jaxws/src/java.xml.bind
|
||||||
|
src/java.xml.crypto : jdk/src/java.xml.crypto
|
||||||
|
src/java.xml.ws : jaxws/src/java.xml.ws
|
||||||
|
src/java.xml.ws.annotation : jaxws/src/java.xml.ws.annotation
|
||||||
|
src/jdk.accessibility : jdk/src/jdk.accessibility
|
||||||
|
src/jdk.aot : hotspot/src/jdk.aot
|
||||||
|
src/jdk.attach : jdk/src/jdk.attach
|
||||||
|
src/jdk.charsets : jdk/src/jdk.charsets
|
||||||
|
src/jdk.compiler : jdk/src/jdk.compiler langtools/src/jdk.compiler
|
||||||
|
src/jdk.crypto.cryptoki : jdk/src/jdk.crypto.cryptoki
|
||||||
|
src/jdk.crypto.ec : jdk/src/jdk.crypto.ec
|
||||||
|
src/jdk.crypto.mscapi : jdk/src/jdk.crypto.mscapi
|
||||||
|
src/jdk.dynalink : nashorn/src/jdk.dynalink
|
||||||
|
src/jdk.editpad : jdk/src/jdk.editpad
|
||||||
|
src/jdk.hotspot.agent : hotspot/src/jdk.hotspot.agent
|
||||||
|
src/jdk.httpserver : jdk/src/jdk.httpserver
|
||||||
|
src/jdk.incubator.httpclient : jdk/src/jdk.incubator.httpclient
|
||||||
|
src/jdk.internal.ed : jdk/src/jdk.internal.ed
|
||||||
|
src/jdk.internal.jvmstat : jdk/src/jdk.internal.jvmstat
|
||||||
|
src/jdk.internal.le : jdk/src/jdk.internal.le
|
||||||
|
src/jdk.internal.opt : jdk/src/jdk.internal.opt
|
||||||
|
src/jdk.internal.vm.ci : hotspot/src/jdk.internal.vm.ci
|
||||||
|
src/jdk.internal.vm.compiler : hotspot/src/jdk.internal.vm.compiler
|
||||||
|
src/jdk.jartool : jdk/src/jdk.jartool
|
||||||
|
src/jdk.javadoc : langtools/src/jdk.javadoc
|
||||||
|
src/jdk.jcmd : jdk/src/jdk.jcmd
|
||||||
|
src/jdk.jconsole : jdk/src/jdk.jconsole
|
||||||
|
src/jdk.jdeps : langtools/src/jdk.jdeps
|
||||||
|
src/jdk.jdi : jdk/src/jdk.jdi
|
||||||
|
src/jdk.jdwp.agent : jdk/src/jdk.jdwp.agent
|
||||||
|
src/jdk.jlink : jdk/src/jdk.jlink
|
||||||
|
src/jdk.jshell : langtools/src/jdk.jshell
|
||||||
|
src/jdk.jsobject : jdk/src/jdk.jsobject
|
||||||
|
src/jdk.jstatd : jdk/src/jdk.jstatd
|
||||||
|
src/jdk.localedata : jdk/src/jdk.localedata
|
||||||
|
src/jdk.management : jdk/src/jdk.management
|
||||||
|
src/jdk.management.agent : jdk/src/jdk.management.agent
|
||||||
|
src/jdk.naming.dns : jdk/src/jdk.naming.dns
|
||||||
|
src/jdk.naming.rmi : jdk/src/jdk.naming.rmi
|
||||||
|
src/jdk.net : jdk/src/jdk.net
|
||||||
|
src/jdk.pack : jdk/src/jdk.pack
|
||||||
|
src/jdk.scripting.nashorn : nashorn/src/jdk.scripting.nashorn
|
||||||
|
src/jdk.scripting.nashorn.shell : nashorn/src/jdk.scripting.nashorn.shell
|
||||||
|
src/jdk.sctp : jdk/src/jdk.sctp
|
||||||
|
src/jdk.security.auth : jdk/src/jdk.security.auth
|
||||||
|
src/jdk.security.jgss : jdk/src/jdk.security.jgss
|
||||||
|
src/jdk.unsupported : jdk/src/jdk.unsupported
|
||||||
|
src/jdk.xml.bind : jaxws/src/jdk.xml.bind
|
||||||
|
src/jdk.xml.dom : jaxp/src/jdk.xml.dom
|
||||||
|
src/jdk.xml.ws : jaxws/src/jdk.xml.ws
|
||||||
|
src/jdk.zipfs : jdk/src/jdk.zipfs
|
||||||
|
src/langtools/sample : langtools/src/sample
|
||||||
|
src/linux : jdk/src/linux
|
||||||
|
src/sample : jdk/src/sample
|
||||||
|
src/hotspot/share : hotspot/src/share/vm
|
||||||
|
src/hotspot/cpu/aarch64 : hotspot/src/cpu/aarch64/vm
|
||||||
|
src/hotspot/cpu/arm : hotspot/src/cpu/arm/vm
|
||||||
|
src/hotspot/cpu/ppc : hotspot/src/cpu/ppc/vm
|
||||||
|
src/hotspot/cpu/s390 : hotspot/src/cpu/s390/vm
|
||||||
|
src/hotspot/cpu/x86 : hotspot/src/cpu/x86/vm
|
||||||
|
src/hotspot/cpu/zero : hotspot/src/cpu/zero/vm
|
||||||
|
src/hotspot/os/aix : hotspot/src/os/aix/vm
|
||||||
|
src/hotspot/os/bsd : hotspot/src/os/bsd/vm
|
||||||
|
src/hotspot/os/linux : hotspot/src/os/linux/vm
|
||||||
|
src/hotspot/os/posix/dtrace : hotspot/src/os/posix/dtrace
|
||||||
|
src/hotspot/os/posix : hotspot/src/os/posix/vm
|
||||||
|
src/hotspot/os/windows : hotspot/src/os/windows/vm
|
||||||
|
src/hotspot/os_cpu/aix_ppc : hotspot/src/os_cpu/aix_ppc/vm
|
||||||
|
src/hotspot/os_cpu/bsd_x86 : hotspot/src/os_cpu/bsd_x86/vm
|
||||||
|
src/hotspot/os_cpu/bsd_zero : hotspot/src/os_cpu/bsd_zero/vm
|
||||||
|
src/hotspot/os_cpu/linux_aarch64 : hotspot/src/os_cpu/linux_aarch64/vm
|
||||||
|
src/hotspot/os_cpu/linux_arm : hotspot/src/os_cpu/linux_arm/vm
|
||||||
|
src/hotspot/os_cpu/linux_ppc : hotspot/src/os_cpu/linux_ppc/vm
|
||||||
|
src/hotspot/os_cpu/linux_s390 : hotspot/src/os_cpu/linux_s390/vm
|
||||||
|
src/hotspot/os_cpu/linux_x86 : hotspot/src/os_cpu/linux_x86/vm
|
||||||
|
src/hotspot/os_cpu/linux_zero : hotspot/src/os_cpu/linux_zero/vm
|
||||||
|
src/hotspot/os_cpu/windows_x86 : hotspot/src/os_cpu/windows_x86/vm
|
||||||
|
src/hotspot : hotspot/src
|
||||||
|
src/utils/IdealGraphVisualizer : hotspot/src/share/tools/IdealGraphVisualizer
|
||||||
|
src/utils/LogCompilation : hotspot/src/share/tools/LogCompilation
|
||||||
|
src/utils/hsdis : hotspot/src/share/tools/hsdis
|
||||||
|
src/utils/reorder : jdk/make/non-build-utils/reorder
|
||||||
|
src/utils/src/build : jdk/make/non-build-utils/src/build
|
||||||
|
make/BuildNashorn.gmk : nashorn/make/BuildNashorn.gmk
|
||||||
|
make/CompileDemos.gmk : jdk/make/CompileDemos.gmk
|
||||||
|
make/CompileInterimLangtools.gmk : langtools/make/CompileInterim.gmk
|
||||||
|
make/CompileModuleTools.gmk : jdk/make/CompileModuleTools.gmk
|
||||||
|
make/CompileToolsHotspot.gmk : hotspot/make/CompileTools.gmk
|
||||||
|
make/CompileToolsJdk.gmk : jdk/make/CompileTools.gmk
|
||||||
|
make/CopyInterimCLDRConverter.gmk : jdk/make/CopyInterimCLDRConverter.gmk
|
||||||
|
make/GenerateModuleSummary.gmk : jdk/make/GenerateModuleSummary.gmk
|
||||||
|
make/ModuleTools.gmk : jdk/make/ModuleTools.gmk
|
||||||
|
make/ToolsJdk.gmk : jdk/make/Tools.gmk
|
||||||
|
make/ToolsLangtools.gmk : langtools/make/Tools.gmk
|
||||||
|
make/UnpackSecurity.gmk : jdk/make/UnpackSecurity.gmk
|
||||||
|
make/autoconf : common/autoconf
|
||||||
|
make/conf : common/conf
|
||||||
|
make/copy : jdk/make/copy
|
||||||
|
make/copy/Copy-java.corba.gmk : corba/make/copy/Copy-java.corba.gmk
|
||||||
|
make/corba : corba/make
|
||||||
|
make/data : jdk/make/data
|
||||||
|
make/gendata : jdk/make/gendata
|
||||||
|
make/gendata/Gendata-jdk.compiler.gmk : langtools/make/gendata/Gendata-jdk.compiler.gmk
|
||||||
|
make/gensrc : jdk/make/gensrc
|
||||||
|
make/gensrc/Gensrc-java.corba.gmk : corba/make/gensrc/Gensrc-java.corba.gmk
|
||||||
|
make/gensrc/Gensrc-jdk.compiler.gmk : langtools/make/gensrc/Gensrc-jdk.compiler.gmk
|
||||||
|
make/gensrc/Gensrc-jdk.hotspot.agent.gmk : hotspot/make/gensrc/Gensrc-jdk.hotspot.agent.gmk
|
||||||
|
make/gensrc/Gensrc-jdk.internal.vm.compiler.gmk : hotspot/make/gensrc/Gensrc-jdk.internal.vm.compiler.gmk
|
||||||
|
make/gensrc/Gensrc-jdk.javadoc.gmk : langtools/make/gensrc/Gensrc-jdk.javadoc.gmk
|
||||||
|
make/gensrc/Gensrc-jdk.jdeps.gmk : langtools/make/gensrc/Gensrc-jdk.jdeps.gmk
|
||||||
|
make/gensrc/Gensrc-jdk.jshell.gmk : langtools/make/gensrc/Gensrc-jdk.jshell.gmk
|
||||||
|
make/gensrc/GensrcCommonLangtools.gmk : langtools/make/gensrc/GensrcCommon.gmk
|
||||||
|
make/hotspot : hotspot/make
|
||||||
|
make/jdk : jdk/make
|
||||||
|
make/langtools : langtools/make
|
||||||
|
make/launcher : jdk/make/launcher
|
||||||
|
make/lib : jdk/make/lib
|
||||||
|
make/lib/Lib-jdk.hotspot.agent.gmk : hotspot/make/lib/Lib-jdk.hotspot.agent.gmk
|
||||||
|
make/mapfiles : jdk/make/mapfiles
|
||||||
|
make/mapfiles/libjsig : hotspot/make/mapfiles/libjsig
|
||||||
|
make/mapfiles/libjvm_db : hotspot/make/mapfiles/libjvm_db
|
||||||
|
make/mapfiles/libjvm_dtrace : hotspot/make/mapfiles/libjvm_dtrace
|
||||||
|
make/mapfiles/libsaproc : hotspot/make/mapfiles/libsaproc
|
||||||
|
make/nashorn : nashorn/make
|
||||||
|
make/nb_native : common/nb_native
|
||||||
|
make/scripts/addNotices.sh : jdk/make/scripts/addNotices.sh
|
||||||
|
make/scripts/compare.sh : common/bin/compare.sh
|
||||||
|
make/scripts/compare_exceptions.sh.incl : common/bin/compare_exceptions.sh.incl
|
||||||
|
make/scripts/genExceptions.sh : jdk/make/scripts/genExceptions.sh
|
||||||
|
make/scripts/hide_important_warnings_from_javac.sh : common/bin/hide_important_warnings_from_javac.sh
|
||||||
|
make/scripts/logger.sh : common/bin/logger.sh
|
||||||
|
make/src/native/fixpath.c : common/src/fixpath.c
|
||||||
|
make/test/JtregNativeHotspot.gmk : hotspot/make/test/JtregNative.gmk
|
||||||
|
make/test/JtregNativeJdk.gmk : jdk/make/test/JtregNative.gmk
|
||||||
|
test/jdk : jdk/test
|
||||||
|
test/langtools : langtools/test
|
||||||
|
test/nashorn : nashorn/test
|
||||||
|
test/jaxp : jaxp/test
|
||||||
|
test/hotspot/gtest : hotspot/test/native
|
||||||
|
test/hotspot/jtreg : hotspot/test
|
||||||
|
bin : common/bin
|
||||||
|
bin/nashorn : nashorn/bin
|
||||||
|
doc : common/doc
|
||||||
|
doc/nashorn : nashorn/docs
|
||||||
237
bin/unshuffle_patch.sh
Normal file
237
bin/unshuffle_patch.sh
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
#
|
||||||
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
|
# questions.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Script for updating a patch file as per the shuffled/unshuffled source location.
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 [-h|--help] [-v|--verbose] [-to9|-to10] [-r <repo>] <input_patch> <output_patch>"
|
||||||
|
echo "where:"
|
||||||
|
echo " -to9 create patches appropriate for a JDK 9 source tree"
|
||||||
|
echo " When going to 9, the output patches will be suffixed with the"
|
||||||
|
echo " repo name"
|
||||||
|
echo " -to10 create patches appropriate for a JDK 10 source tree"
|
||||||
|
echo " -r <repo> specify repo for source patch, set to 'top' for top repo"
|
||||||
|
echo " <input_patch> is the input patch file, that needs shuffling/unshuffling"
|
||||||
|
echo " <output_patch> is the updated patch file "
|
||||||
|
echo " "
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRIPT_DIR=`dirname $0`
|
||||||
|
UNSHUFFLE_LIST=$SCRIPT_DIR"/unshuffle_list.txt"
|
||||||
|
|
||||||
|
if [ ! -f "$UNSHUFFLE_LIST" ] ; then
|
||||||
|
echo "FATAL: cannot find $UNSHUFFLE_LIST" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
vflag="false"
|
||||||
|
while [ $# -gt 0 ]
|
||||||
|
do
|
||||||
|
case $1 in
|
||||||
|
-h | --help )
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v | --verbose )
|
||||||
|
vflag="true"
|
||||||
|
;;
|
||||||
|
|
||||||
|
-r)
|
||||||
|
repo="$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
|
-to9)
|
||||||
|
shuffle_to=9
|
||||||
|
;;
|
||||||
|
|
||||||
|
-to10)
|
||||||
|
shuffle_to=10
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*) # bad option
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
|
||||||
|
* ) # non option
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# Make sure we have the right number of arguments
|
||||||
|
if [ ! $# -eq 2 ] ; then
|
||||||
|
echo "ERROR: Invalid number of arguments." >&2
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check the given repo
|
||||||
|
repos="top corba jaxp jaxws jdk langtools nashorn hotspot"
|
||||||
|
found="false"
|
||||||
|
if [ -n "$repo" ]; then
|
||||||
|
for r in $repos ; do
|
||||||
|
if [ $repo = "$r" ] ; then
|
||||||
|
found="true"
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ $found = "false" ] ; then
|
||||||
|
echo "ERROR: Unknown repo: $repo. Should be one of [$repos]." >&2
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$shuffle_to" != "9" -a "$shuffle_to" != "10" ]; then
|
||||||
|
echo "ERROR: Must pick either -to9 or -to10"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# When going to 10, a repo must be specified for the source patch
|
||||||
|
if [ "$shuffle_to" = "10" -a -z "$repo" ]; then
|
||||||
|
echo "ERROR: Must specify src repo for JDK 9 patch"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check given input/output files
|
||||||
|
input="$1"
|
||||||
|
if [ "x$input" = "x-" ] ; then
|
||||||
|
input="/dev/stdin"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $input -a "x$input" != "x/dev/stdin" ] ; then
|
||||||
|
echo "ERROR: Cannot find input patch file: $input" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
output="$2"
|
||||||
|
if [ "x$output" = "x-" ] ; then
|
||||||
|
output="/dev/stdout"
|
||||||
|
fi
|
||||||
|
base_output="$output"
|
||||||
|
|
||||||
|
if [ "$shuffle_to" = "10" ]; then
|
||||||
|
if [ -f $output -a "x$output" != "x/dev/stdout" ] ; then
|
||||||
|
echo "ERROR: Output patch already exists: $output" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
for r in $repos; do
|
||||||
|
if [ -f "$output.$r" ]; then
|
||||||
|
echo "ERROR: Output patch already exists: $output.$r" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
verbose() {
|
||||||
|
if [ ${vflag} = "true" ] ; then
|
||||||
|
echo "$@" >&2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
unshuffle() {
|
||||||
|
line=$@
|
||||||
|
verbose "Attempting to rewrite: \"$line\""
|
||||||
|
|
||||||
|
# Retrieve the file name
|
||||||
|
path=
|
||||||
|
if echo "$line" | egrep '^diff' > /dev/null ; then
|
||||||
|
if ! echo "$line" | egrep '\-\-git' > /dev/null ; then
|
||||||
|
echo "ERROR: Only git patches supported. Please use 'hg export --git ...'." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
path="`echo "$line" | sed -e s@'diff --git a/'@@ -e s@' b/.*$'@@`"
|
||||||
|
elif echo "$line" | egrep '^\-\-\-' > /dev/null ; then
|
||||||
|
path="`echo "$line" | sed -e s@'--- a/'@@`"
|
||||||
|
elif echo "$line" | egrep '^\+\+\+' > /dev/null ; then
|
||||||
|
path="`echo "$line" | sed s@'+++ b/'@@`"
|
||||||
|
fi
|
||||||
|
verbose "Extracted path: \"$path\""
|
||||||
|
|
||||||
|
# Find the most specific matches in the shuffle list
|
||||||
|
matches=
|
||||||
|
if [ -n "$repo" -a "$repo" != "top" ]; then
|
||||||
|
matchpath="$repo"/"$path"/x
|
||||||
|
else
|
||||||
|
matchpath="$path"/x
|
||||||
|
fi
|
||||||
|
while [ "$matchpath" != "" ] ; do
|
||||||
|
matchpath="`echo $matchpath | sed s@'\(.*\)/.*$'@'\1'@`"
|
||||||
|
|
||||||
|
if [ "$shuffle_to" = "10" ] ; then
|
||||||
|
pattern=": $matchpath$"
|
||||||
|
else
|
||||||
|
pattern="^$matchpath :"
|
||||||
|
fi
|
||||||
|
verbose "Attempting to find \"$matchpath\""
|
||||||
|
matches=`egrep "$pattern" "$UNSHUFFLE_LIST"`
|
||||||
|
if ! [ "x${matches}" = "x" ] ; then
|
||||||
|
verbose "Got matches: [$matches]"
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! echo "$matchpath" | egrep '.*/.*' > /dev/null ; then
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Rewrite the line, if we have a match
|
||||||
|
if ! [ "x${matches}" = "x" ] ; then
|
||||||
|
shuffled="${matches%% : *}"
|
||||||
|
unshuffled="${matches#* : }"
|
||||||
|
patch_suffix_9=""
|
||||||
|
for r in $repos; do
|
||||||
|
if [ "$unshuffled" != "${unshuffled#$r}" ]; then
|
||||||
|
unshuffled="${unshuffled#$r\/}"
|
||||||
|
patch_suffix_9=".$r"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
verbose "shuffled: $shuffled"
|
||||||
|
verbose "unshuffled: $unshuffled"
|
||||||
|
verbose "patch_suffix_9: $patch_suffix_9"
|
||||||
|
if [ "$shuffle_to" = "10" ] ; then
|
||||||
|
newline="`echo "$line" | sed -e s@"$unshuffled"@"$shuffled"@g`"
|
||||||
|
else
|
||||||
|
newline="`echo "$line" | sed -e s@"$shuffled"@"$unshuffled"@g`"
|
||||||
|
output=$base_output$patch_suffix_9
|
||||||
|
verbose "Writing to $output"
|
||||||
|
fi
|
||||||
|
verbose "Rewriting to \"$newline\""
|
||||||
|
echo "$newline" >> $output
|
||||||
|
else
|
||||||
|
echo "WARNING: no match found for $path"
|
||||||
|
echo "$line" >> $output
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
while IFS= read -r line
|
||||||
|
do
|
||||||
|
if echo "$line" | egrep '^diff|^\-\-\-|^\+\+\+' > /dev/null ; then
|
||||||
|
unshuffle "$line"
|
||||||
|
else
|
||||||
|
printf "%s\n" "$line" >> $output
|
||||||
|
fi
|
||||||
|
done < "$input"
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
|
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
||||||
#
|
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
|
||||||
# under the terms of the GNU General Public License version 2 only, as
|
|
||||||
# published by the Free Software Foundation.
|
|
||||||
#
|
|
||||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
# version 2 for more details (a copy is included in the LICENSE file that
|
|
||||||
# accompanied this code).
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License version
|
|
||||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
|
||||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
||||||
# or visit www.oracle.com if you need additional information or have any
|
|
||||||
# questions.
|
|
||||||
|
|
||||||
# The output of this script may require some degree of human curation:
|
|
||||||
# - Redundant headers, e.g. both x.hpp, x.inline.hpp are included;
|
|
||||||
# - Headers relative to a non-default feature should be protected by an
|
|
||||||
# appropriate 'if' clause to make sure all variants can build without
|
|
||||||
# errors.
|
|
||||||
|
|
||||||
source_path="$(dirname ${0})"
|
|
||||||
this_script_dir="$(cd -- "${source_path}" > /dev/null && pwd)"
|
|
||||||
if test -z "${this_script_dir}"; then
|
|
||||||
echo "Error: Could not determine location of this script"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Work in top directory
|
|
||||||
cd $this_script_dir/..
|
|
||||||
|
|
||||||
# Time threshold for header compilation, if the time exceeds the
|
|
||||||
# threshold the header will be precompiled.
|
|
||||||
if [ -z "$MIN_MS" ]; then
|
|
||||||
MIN_MS=100000
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$CLEAN" ]; then
|
|
||||||
CLEAN=true
|
|
||||||
elif [ "$CLEAN" != "true" ] && [ "$CLEAN" != "false" ]; then
|
|
||||||
echo "Expected either 'true' or 'false' for CLEAN"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# CBA_PATH should point to a valid ClangBuildAnalyzer executable.
|
|
||||||
# Build steps:
|
|
||||||
# git clone --depth 1 git@github.com:aras-p/ClangBuildAnalyzer.git
|
|
||||||
# cd ClangBuildAnalyzer
|
|
||||||
# make -f projects/make/Makefile
|
|
||||||
if [ -z "$CBA_PATH" ]; then
|
|
||||||
CBA_PATH="./ClangBuildAnalyzer/build/ClangBuildAnalyzer"
|
|
||||||
fi
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
PRECOMPILED_HPP="src/hotspot/share/precompiled/precompiled.hpp"
|
|
||||||
CBA_CONFIG="ClangBuildAnalyzer.ini"
|
|
||||||
TIMESTAMP="$(date +%Y%m%d-%H%M)"
|
|
||||||
RUN_NAME="pch_update_$TIMESTAMP"
|
|
||||||
CBA_OUTPUT="cba_out_$TIMESTAMP"
|
|
||||||
|
|
||||||
if [ "$CLEAN" = "true" ]; then
|
|
||||||
trap 'rm -rf "build/'"$RUN_NAME"'" "$CBA_OUTPUT" "$CBA_CONFIG"' EXIT
|
|
||||||
fi
|
|
||||||
|
|
||||||
sh configure --with-toolchain-type=clang \
|
|
||||||
--with-conf-name="$RUN_NAME" \
|
|
||||||
--disable-precompiled-headers \
|
|
||||||
--with-extra-cxxflags="-ftime-trace" \
|
|
||||||
--with-extra-cflags="-ftime-trace"
|
|
||||||
|
|
||||||
make clean CONF_NAME="$RUN_NAME"
|
|
||||||
make hotspot CONF_NAME="$RUN_NAME"
|
|
||||||
"$CBA_PATH" --all "./build/$RUN_NAME/hotspot/variant-server/libjvm/objs" \
|
|
||||||
"$CBA_OUTPUT"
|
|
||||||
|
|
||||||
# Preserve license and comments on top
|
|
||||||
cat "$PRECOMPILED_HPP" | awk '/^#include/ {exit} {print}' > "$PRECOMPILED_HPP.tmp"
|
|
||||||
|
|
||||||
if [ ! -f "$CBA_CONFIG" ]; then
|
|
||||||
cat <<EOF > "$CBA_CONFIG"
|
|
||||||
[counts]
|
|
||||||
header=100
|
|
||||||
headerChain=0
|
|
||||||
template=0
|
|
||||||
function=0
|
|
||||||
fileCodegen=0
|
|
||||||
fileParse=0
|
|
||||||
|
|
||||||
[misc]
|
|
||||||
onlyRootHeaders=true
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
"$CBA_PATH" --analyze "$CBA_OUTPUT" | \
|
|
||||||
grep " ms: " | \
|
|
||||||
# Keep the headers more expensive than ${1}ms
|
|
||||||
awk -v x="$MIN_MS" '$1 < x { exit } { print $3 }' | \
|
|
||||||
# Filter away non-hotspot headers
|
|
||||||
grep hotspot/share | \
|
|
||||||
awk -F "hotspot/share/" '{ printf "#include \"%s\"\n", $2 }' \
|
|
||||||
>> "$PRECOMPILED_HPP.tmp"
|
|
||||||
mv "$PRECOMPILED_HPP.tmp" "$PRECOMPILED_HPP"
|
|
||||||
|
|
||||||
java test/hotspot/jtreg/sources/SortIncludes.java --update "$PRECOMPILED_HPP"
|
|
||||||
@@ -282,34 +282,9 @@ possible, use an SSD. The build process is very disk intensive, and
|
|||||||
having slow disk access will significantly increase build times. If you
|
having slow disk access will significantly increase build times. If you
|
||||||
need to use a network share for the source code, see below for
|
need to use a network share for the source code, see below for
|
||||||
suggestions on how to keep the build artifacts on a local disk.</p></li>
|
suggestions on how to keep the build artifacts on a local disk.</p></li>
|
||||||
<li><p>UTF-8 support is needed to compile the JDK. On Unix systems, this
|
<li><p>On Windows, if using <a href="#cygwin">Cygwin</a>, extra care
|
||||||
typically means that the <code>C.UTF-8</code> or
|
must be taken to make sure the environment is consistent. It is
|
||||||
<code>en_US.UTF-8</code> locale needs to be available. For Windows
|
recommended that you follow this procedure:</p>
|
||||||
users, please see the section on <a href="#locale-requirements">Locale
|
|
||||||
Requirements</a> below.</p></li>
|
|
||||||
<li><p>On Windows, extra care must be taken to have a smooth building
|
|
||||||
experience:</p>
|
|
||||||
<ul>
|
|
||||||
<li><p>Make sure that all relevant paths have short names. Short names
|
|
||||||
are used by the build system to create space-free alternative paths.
|
|
||||||
Short name creation is enabled per volume. The default setting can be
|
|
||||||
checked with the command: <code>fsutil 8dot3name query</code>. If short
|
|
||||||
name creation was turned off when a directory was created, it will not
|
|
||||||
have a short name. Whether a short name exists can be checked by running
|
|
||||||
<code>dir /X</code> in the containing directory (in cmd.exe). If a short
|
|
||||||
path is present you should see something like 'ASDF~1' being displayed
|
|
||||||
in one of the columns of the ouput. If a directory is missing a short
|
|
||||||
name, the safest way to get one is to enable short names for that
|
|
||||||
particular volume with
|
|
||||||
<code>fsutil 8dot3name set <drive letter>: 0</code> (note that
|
|
||||||
you need to run as administrator for this), and then re-create the
|
|
||||||
particular directory. A short name should be generated automatically
|
|
||||||
then. Another option is to manually assign a short name to the directory
|
|
||||||
using
|
|
||||||
<code>fsutil file setShortName <path> <short name></code>.</p></li>
|
|
||||||
<li><p>If using <a href="#cygwin">Cygwin</a>, you must make sure the
|
|
||||||
file permissions and attributes between Windows and Cygwin are
|
|
||||||
consistent. It is recommended that you follow this procedure:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><p>Create the directory that is going to contain the top directory
|
<li><p>Create the directory that is going to contain the top directory
|
||||||
of the JDK clone by using the <code>mkdir</code> command in the Cygwin
|
of the JDK clone by using the <code>mkdir</code> command in the Cygwin
|
||||||
@@ -319,9 +294,6 @@ it's children will inherit those attributes.</p></li>
|
|||||||
<li><p>Do not put the JDK clone in a path under your Cygwin home
|
<li><p>Do not put the JDK clone in a path under your Cygwin home
|
||||||
directory. This is especially important if your user name contains
|
directory. This is especially important if your user name contains
|
||||||
spaces and/or mixed upper and lower case letters.</p></li>
|
spaces and/or mixed upper and lower case letters.</p></li>
|
||||||
</ul>
|
|
||||||
<p>Failure to follow these procedures might result in hard-to-debug
|
|
||||||
build problems.</p></li>
|
|
||||||
<li><p>You need to install a git client. You have two choices, Cygwin
|
<li><p>You need to install a git client. You have two choices, Cygwin
|
||||||
git or Git for Windows. Unfortunately there are pros and cons with each
|
git or Git for Windows. Unfortunately there are pros and cons with each
|
||||||
choice.</p>
|
choice.</p>
|
||||||
@@ -339,7 +311,9 @@ It does work well with the Skara CLI tooling, however. To alleviate the
|
|||||||
line ending problems, make sure you set <code>core.autocrlf</code> to
|
line ending problems, make sure you set <code>core.autocrlf</code> to
|
||||||
<code>false</code> (this is asked during installation).</p></li>
|
<code>false</code> (this is asked during installation).</p></li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul></li>
|
</ul>
|
||||||
|
<p>Failure to follow this procedure might result in hard-to-debug build
|
||||||
|
problems.</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="build-hardware-requirements">Build Hardware Requirements</h2>
|
<h2 id="build-hardware-requirements">Build Hardware Requirements</h2>
|
||||||
<p>The JDK is a massive project, and require machines ranging from
|
<p>The JDK is a massive project, and require machines ranging from
|
||||||
@@ -402,7 +376,7 @@ to date at the time of writing.</p>
|
|||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td>macOS</td>
|
<td>macOS</td>
|
||||||
<td>macOS 14.x</td>
|
<td>macOS 13.x (Ventura)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td>Windows</td>
|
<td>Windows</td>
|
||||||
@@ -539,13 +513,8 @@ this makes it difficult for a project such as the JDK to keep pace with
|
|||||||
a continuously updated machine running macOS. See the section on <a
|
a continuously updated machine running macOS. See the section on <a
|
||||||
href="#apple-xcode">Apple Xcode</a> on some strategies to deal with
|
href="#apple-xcode">Apple Xcode</a> on some strategies to deal with
|
||||||
this.</p>
|
this.</p>
|
||||||
<p>It is recommended that you use at least macOS 14 and Xcode 15.4, but
|
<p>It is recommended that you use at least macOS 13 (Ventura) and Xcode
|
||||||
earlier versions may also work.</p>
|
14, but earlier versions may also work.</p>
|
||||||
<p>Starting with Xcode 26, introduced in macOS 26, the Metal toolchain
|
|
||||||
no longer comes bundled with Xcode, so it needs to be installed
|
|
||||||
separately. This can either be done via the Xcode's Settings/Components
|
|
||||||
UI, or in the command line calling
|
|
||||||
<code>xcodebuild -downloadComponent metalToolchain</code>.</p>
|
|
||||||
<p>The standard macOS environment contains the basic tooling needed to
|
<p>The standard macOS environment contains the basic tooling needed to
|
||||||
build, but for external libraries a package manager is recommended. The
|
build, but for external libraries a package manager is recommended. The
|
||||||
JDK uses <a href="https://brew.sh/">homebrew</a> in the examples, but
|
JDK uses <a href="https://brew.sh/">homebrew</a> in the examples, but
|
||||||
@@ -617,15 +586,15 @@ to compile successfully without issues.</p>
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td>Linux</td>
|
<td>Linux</td>
|
||||||
<td>gcc 14.2.0</td>
|
<td>gcc 13.2.0</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td>macOS</td>
|
<td>macOS</td>
|
||||||
<td>Apple Xcode 15.4 (using clang 15.0.0)</td>
|
<td>Apple Xcode 14.3.1 (using clang 14.0.3)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td>Windows</td>
|
<td>Windows</td>
|
||||||
<td>Microsoft Visual Studio 2022 version 17.13.2</td>
|
<td>Microsoft Visual Studio 2022 version 17.6.5</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -635,7 +604,7 @@ standard for C, and C++14 for C++.</p>
|
|||||||
<p>The minimum accepted version of gcc is 10.0. Older versions will not
|
<p>The minimum accepted version of gcc is 10.0. Older versions will not
|
||||||
be accepted by <code>configure</code>.</p>
|
be accepted by <code>configure</code>.</p>
|
||||||
<p>The JDK is currently known to compile successfully with gcc version
|
<p>The JDK is currently known to compile successfully with gcc version
|
||||||
14.2 or newer.</p>
|
13.2 or newer.</p>
|
||||||
<p>In general, any version between these two should be usable.</p>
|
<p>In general, any version between these two should be usable.</p>
|
||||||
<h3 id="clang">clang</h3>
|
<h3 id="clang">clang</h3>
|
||||||
<p>The minimum accepted version of clang is 13. Older versions will not
|
<p>The minimum accepted version of clang is 13. Older versions will not
|
||||||
@@ -673,7 +642,7 @@ update.</p>
|
|||||||
(Note that this version is often presented as "MSVC 14.28", and reported
|
(Note that this version is often presented as "MSVC 14.28", and reported
|
||||||
by cl.exe as 19.28.) Older versions will not be accepted by
|
by cl.exe as 19.28.) Older versions will not be accepted by
|
||||||
<code>configure</code> and will not work. The maximum accepted version
|
<code>configure</code> and will not work. The maximum accepted version
|
||||||
of Visual Studio is 2026.</p>
|
of Visual Studio is 2022.</p>
|
||||||
<p>If you have multiple versions of Visual Studio installed,
|
<p>If you have multiple versions of Visual Studio installed,
|
||||||
<code>configure</code> will by default pick the latest. You can request
|
<code>configure</code> will by default pick the latest. You can request
|
||||||
a specific version to be used by setting
|
a specific version to be used by setting
|
||||||
@@ -1456,10 +1425,10 @@ of a cross-compiling toolchain and a sysroot environment which can
|
|||||||
easily be used together with the <code>--with-devkit</code> configure
|
easily be used together with the <code>--with-devkit</code> configure
|
||||||
option to cross compile the JDK. On Linux/x86_64, the following
|
option to cross compile the JDK. On Linux/x86_64, the following
|
||||||
command:</p>
|
command:</p>
|
||||||
<pre><code>bash configure --with-devkit=<devkit-path> --openjdk-target=ppc64le-linux-gnu && make</code></pre>
|
<pre><code>bash configure --with-devkit=<devkit-path> --openjdk-target=ppc64-linux-gnu && make</code></pre>
|
||||||
<p>will configure and build the JDK for Linux/ppc64le assuming that
|
<p>will configure and build the JDK for Linux/ppc64 assuming that
|
||||||
<code><devkit-path></code> points to a Linux/x86_64 to
|
<code><devkit-path></code> points to a Linux/x86_64 to Linux/ppc64
|
||||||
Linux/ppc64le devkit.</p>
|
devkit.</p>
|
||||||
<p>Devkits can be created from the <code>make/devkit</code> directory by
|
<p>Devkits can be created from the <code>make/devkit</code> directory by
|
||||||
executing:</p>
|
executing:</p>
|
||||||
<pre><code>make [ TARGETS="<TARGET_TRIPLET>+" ] [ BASE_OS=<OS> ] [ BASE_OS_VERSION=<VER> ]</code></pre>
|
<pre><code>make [ TARGETS="<TARGET_TRIPLET>+" ] [ BASE_OS=<OS> ] [ BASE_OS_VERSION=<VER> ]</code></pre>
|
||||||
@@ -1486,22 +1455,22 @@ following targets are known to work:</p>
|
|||||||
<td>arm-linux-gnueabihf</td>
|
<td>arm-linux-gnueabihf</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td>ppc64le-linux-gnu</td>
|
<td>ppc64-linux-gnu</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td>riscv64-linux-gnu</td>
|
<td>ppc64le-linux-gnu</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td>s390x-linux-gnu</td>
|
<td>s390x-linux-gnu</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p><code>BASE_OS</code> must be one of <code>OL</code> for Oracle
|
<p><code>BASE_OS</code> must be one of "OEL6" for Oracle Enterprise
|
||||||
Enterprise Linux or <code>Fedora</code>. If the base OS is
|
Linux 6 or "Fedora" (if not specified "OEL6" will be the default). If
|
||||||
<code>Fedora</code> the corresponding Fedora release can be specified
|
the base OS is "Fedora" the corresponding Fedora release can be
|
||||||
with the help of the <code>BASE_OS_VERSION</code> option. If the build
|
specified with the help of the <code>BASE_OS_VERSION</code> option (with
|
||||||
is successful, the new devkits can be found in the
|
"27" as default version). If the build is successful, the new devkits
|
||||||
<code>build/devkit/result</code> subdirectory:</p>
|
can be found in the <code>build/devkit/result</code> subdirectory:</p>
|
||||||
<pre><code>cd make/devkit
|
<pre><code>cd make/devkit
|
||||||
make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=21
|
make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=21
|
||||||
ls -1 ../../build/devkit/result/
|
ls -1 ../../build/devkit/result/
|
||||||
@@ -1753,20 +1722,6 @@ packages in the sysroot, configure the build with
|
|||||||
--with-devkit=$DEVKIT \
|
--with-devkit=$DEVKIT \
|
||||||
--with-sysroot=$SYSROOT</code></pre>
|
--with-sysroot=$SYSROOT</code></pre>
|
||||||
<p>and run <code>make</code> normally.</p>
|
<p>and run <code>make</code> normally.</p>
|
||||||
<h4 id="building-for-windows-aarch64">Building for Windows AArch64</h4>
|
|
||||||
<p>The Visual Studio Build Tools can be used for building the JDK
|
|
||||||
without a full Visual Studio installation. To set up the Visual Studio
|
|
||||||
2022 Build Tools on a Windows AArch64 machine for a native build, launch
|
|
||||||
the installer as follows in a Windows command prompt:</p>
|
|
||||||
<pre><code>vs_buildtools.exe --quiet --wait --norestart --nocache ^
|
|
||||||
--installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" ^
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.CoreBuildTools ^
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
|
|
||||||
--add Microsoft.VisualStudio.Component.Windows11SDK.22621</code></pre>
|
|
||||||
<p>To generate Windows AArch64 builds using Cygwin on a Windows x64
|
|
||||||
machine, you must set the proper target platform by adding
|
|
||||||
<code>--openjdk-target=aarch64-unknown-cygwin</code> to your configure
|
|
||||||
command line.</p>
|
|
||||||
<h2 id="build-performance">Build Performance</h2>
|
<h2 id="build-performance">Build Performance</h2>
|
||||||
<p>Building the JDK requires a lot of horsepower. Some of the build
|
<p>Building the JDK requires a lot of horsepower. Some of the build
|
||||||
tools can be adjusted to utilize more or less of resources such as
|
tools can be adjusted to utilize more or less of resources such as
|
||||||
|
|||||||
109
doc/building.md
109
doc/building.md
@@ -83,44 +83,19 @@ on where and how to check out the source code.
|
|||||||
for the source code, see below for suggestions on how to keep the build
|
for the source code, see below for suggestions on how to keep the build
|
||||||
artifacts on a local disk.
|
artifacts on a local disk.
|
||||||
|
|
||||||
* UTF-8 support is needed to compile the JDK. On Unix systems, this typically
|
* On Windows, if using [Cygwin](#cygwin), extra care must be taken to make sure
|
||||||
means that the `C.UTF-8` or `en_US.UTF-8` locale needs to be available. For
|
the environment is consistent. It is recommended that you follow this
|
||||||
Windows users, please see the section on [Locale
|
procedure:
|
||||||
Requirements](#locale-requirements) below.
|
|
||||||
|
|
||||||
* On Windows, extra care must be taken to have a smooth building experience:
|
* Create the directory that is going to contain the top directory of the JDK
|
||||||
|
clone by using the `mkdir` command in the Cygwin bash shell. That is, do
|
||||||
|
*not* create it using Windows Explorer. This will ensure that it will have
|
||||||
|
proper Cygwin attributes, and that it's children will inherit those
|
||||||
|
attributes.
|
||||||
|
|
||||||
* Make sure that all relevant paths have short names. Short names are used by
|
* Do not put the JDK clone in a path under your Cygwin home directory. This
|
||||||
the build system to create space-free alternative paths. Short name
|
is especially important if your user name contains spaces and/or mixed
|
||||||
creation is enabled per volume. The default setting can be checked with the
|
upper and lower case letters.
|
||||||
command: `fsutil 8dot3name query`. If short name creation was turned off
|
|
||||||
when a directory was created, it will not have a short name. Whether a
|
|
||||||
short name exists can be checked by running `dir /X` in the containing
|
|
||||||
directory (in cmd.exe). If a short path is present you should see something
|
|
||||||
like 'ASDF~1' being displayed in one of the columns of the ouput. If a
|
|
||||||
directory is missing a short name, the safest way to get one is to enable
|
|
||||||
short names for that particular volume with `fsutil 8dot3name set <drive
|
|
||||||
letter>: 0` (note that you need to run as administrator for this), and then
|
|
||||||
re-create the particular directory. A short name should be generated
|
|
||||||
automatically then. Another option is to manually assign a short name to
|
|
||||||
the directory using `fsutil file setShortName <path> <short name>`.
|
|
||||||
|
|
||||||
* If using [Cygwin](#cygwin), you must make sure the file permissions and
|
|
||||||
attributes between Windows and Cygwin are consistent. It is recommended
|
|
||||||
that you follow this procedure:
|
|
||||||
|
|
||||||
* Create the directory that is going to contain the top directory of the
|
|
||||||
JDK clone by using the `mkdir` command in the Cygwin bash shell. That is,
|
|
||||||
do *not* create it using Windows Explorer. This will ensure that it will
|
|
||||||
have proper Cygwin attributes, and that it's children will inherit those
|
|
||||||
attributes.
|
|
||||||
|
|
||||||
* Do not put the JDK clone in a path under your Cygwin home directory. This
|
|
||||||
is especially important if your user name contains spaces and/or mixed
|
|
||||||
upper and lower case letters.
|
|
||||||
|
|
||||||
Failure to follow these procedures might result in hard-to-debug build
|
|
||||||
problems.
|
|
||||||
|
|
||||||
* You need to install a git client. You have two choices, Cygwin git or Git
|
* You need to install a git client. You have two choices, Cygwin git or Git
|
||||||
for Windows. Unfortunately there are pros and cons with each choice.
|
for Windows. Unfortunately there are pros and cons with each choice.
|
||||||
@@ -138,6 +113,9 @@ on where and how to check out the source code.
|
|||||||
make sure you set `core.autocrlf` to `false` (this is asked during
|
make sure you set `core.autocrlf` to `false` (this is asked during
|
||||||
installation).
|
installation).
|
||||||
|
|
||||||
|
Failure to follow this procedure might result in hard-to-debug build
|
||||||
|
problems.
|
||||||
|
|
||||||
## Build Hardware Requirements
|
## Build Hardware Requirements
|
||||||
|
|
||||||
The JDK is a massive project, and require machines ranging from decent to
|
The JDK is a massive project, and require machines ranging from decent to
|
||||||
@@ -197,7 +175,7 @@ time of writing.
|
|||||||
| ----------------- | ---------------------------------- |
|
| ----------------- | ---------------------------------- |
|
||||||
| Linux/x64 | Oracle Enterprise Linux 6.4 / 8.x |
|
| Linux/x64 | Oracle Enterprise Linux 6.4 / 8.x |
|
||||||
| Linux/aarch64 | Oracle Enterprise Linux 7.6 / 8.x |
|
| Linux/aarch64 | Oracle Enterprise Linux 7.6 / 8.x |
|
||||||
| macOS | macOS 14.x |
|
| macOS | macOS 13.x (Ventura) |
|
||||||
| Windows | Windows Server 2016 |
|
| Windows | Windows Server 2016 |
|
||||||
|
|
||||||
The double version numbers for Linux are due to the hybrid model used at
|
The double version numbers for Linux are due to the hybrid model used at
|
||||||
@@ -349,14 +327,9 @@ difficult for a project such as the JDK to keep pace with a continuously
|
|||||||
updated machine running macOS. See the section on [Apple Xcode](#apple-xcode)
|
updated machine running macOS. See the section on [Apple Xcode](#apple-xcode)
|
||||||
on some strategies to deal with this.
|
on some strategies to deal with this.
|
||||||
|
|
||||||
It is recommended that you use at least macOS 14 and Xcode 15.4, but
|
It is recommended that you use at least macOS 13 (Ventura) and Xcode 14, but
|
||||||
earlier versions may also work.
|
earlier versions may also work.
|
||||||
|
|
||||||
Starting with Xcode 26, introduced in macOS 26, the Metal toolchain no longer
|
|
||||||
comes bundled with Xcode, so it needs to be installed separately. This can
|
|
||||||
either be done via the Xcode's Settings/Components UI, or in the command line
|
|
||||||
calling `xcodebuild -downloadComponent metalToolchain`.
|
|
||||||
|
|
||||||
The standard macOS environment contains the basic tooling needed to build, but
|
The standard macOS environment contains the basic tooling needed to build, but
|
||||||
for external libraries a package manager is recommended. The JDK uses
|
for external libraries a package manager is recommended. The JDK uses
|
||||||
[homebrew](https://brew.sh/) in the examples, but feel free to use whatever
|
[homebrew](https://brew.sh/) in the examples, but feel free to use whatever
|
||||||
@@ -417,11 +390,11 @@ possible to compile the JDK with both older and newer versions, but the closer
|
|||||||
you stay to this list, the more likely you are to compile successfully without
|
you stay to this list, the more likely you are to compile successfully without
|
||||||
issues.
|
issues.
|
||||||
|
|
||||||
| Operating system | Toolchain version |
|
| Operating system | Toolchain version |
|
||||||
| ------------------ | -------------------------------------------- |
|
| ------------------ | ------------------------------------------- |
|
||||||
| Linux | gcc 14.2.0 |
|
| Linux | gcc 13.2.0 |
|
||||||
| macOS | Apple Xcode 15.4 (using clang 15.0.0) |
|
| macOS | Apple Xcode 14.3.1 (using clang 14.0.3) |
|
||||||
| Windows | Microsoft Visual Studio 2022 version 17.13.2 |
|
| Windows | Microsoft Visual Studio 2022 version 17.6.5 |
|
||||||
|
|
||||||
All compilers are expected to be able to handle the C11 language standard for
|
All compilers are expected to be able to handle the C11 language standard for
|
||||||
C, and C++14 for C++.
|
C, and C++14 for C++.
|
||||||
@@ -431,7 +404,7 @@ C, and C++14 for C++.
|
|||||||
The minimum accepted version of gcc is 10.0. Older versions will not be accepted
|
The minimum accepted version of gcc is 10.0. Older versions will not be accepted
|
||||||
by `configure`.
|
by `configure`.
|
||||||
|
|
||||||
The JDK is currently known to compile successfully with gcc version 14.2 or
|
The JDK is currently known to compile successfully with gcc version 13.2 or
|
||||||
newer.
|
newer.
|
||||||
|
|
||||||
In general, any version between these two should be usable.
|
In general, any version between these two should be usable.
|
||||||
@@ -473,7 +446,7 @@ available for this update.
|
|||||||
The minimum accepted version is Visual Studio 2019 version 16.8. (Note that
|
The minimum accepted version is Visual Studio 2019 version 16.8. (Note that
|
||||||
this version is often presented as "MSVC 14.28", and reported by cl.exe as
|
this version is often presented as "MSVC 14.28", and reported by cl.exe as
|
||||||
19.28.) Older versions will not be accepted by `configure` and will not work.
|
19.28.) Older versions will not be accepted by `configure` and will not work.
|
||||||
The maximum accepted version of Visual Studio is 2026.
|
The maximum accepted version of Visual Studio is 2022.
|
||||||
|
|
||||||
If you have multiple versions of Visual Studio installed, `configure` will by
|
If you have multiple versions of Visual Studio installed, `configure` will by
|
||||||
default pick the latest. You can request a specific version to be used by
|
default pick the latest. You can request a specific version to be used by
|
||||||
@@ -1263,11 +1236,11 @@ toolchain and a sysroot environment which can easily be used together with the
|
|||||||
following command:
|
following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
bash configure --with-devkit=<devkit-path> --openjdk-target=ppc64le-linux-gnu && make
|
bash configure --with-devkit=<devkit-path> --openjdk-target=ppc64-linux-gnu && make
|
||||||
```
|
```
|
||||||
|
|
||||||
will configure and build the JDK for Linux/ppc64le assuming that `<devkit-path>`
|
will configure and build the JDK for Linux/ppc64 assuming that `<devkit-path>`
|
||||||
points to a Linux/x86_64 to Linux/ppc64le devkit.
|
points to a Linux/x86_64 to Linux/ppc64 devkit.
|
||||||
|
|
||||||
Devkits can be created from the `make/devkit` directory by executing:
|
Devkits can be created from the `make/devkit` directory by executing:
|
||||||
|
|
||||||
@@ -1286,14 +1259,16 @@ at least the following targets are known to work:
|
|||||||
| x86_64-linux-gnu |
|
| x86_64-linux-gnu |
|
||||||
| aarch64-linux-gnu |
|
| aarch64-linux-gnu |
|
||||||
| arm-linux-gnueabihf |
|
| arm-linux-gnueabihf |
|
||||||
|
| ppc64-linux-gnu |
|
||||||
| ppc64le-linux-gnu |
|
| ppc64le-linux-gnu |
|
||||||
| riscv64-linux-gnu |
|
|
||||||
| s390x-linux-gnu |
|
| s390x-linux-gnu |
|
||||||
|
|
||||||
`BASE_OS` must be one of `OL` for Oracle Enterprise Linux or `Fedora`. If the
|
`BASE_OS` must be one of "OEL6" for Oracle Enterprise Linux 6 or "Fedora" (if
|
||||||
base OS is `Fedora` the corresponding Fedora release can be specified with the
|
not specified "OEL6" will be the default). If the base OS is "Fedora" the
|
||||||
help of the `BASE_OS_VERSION` option. If the build is successful, the new
|
corresponding Fedora release can be specified with the help of the
|
||||||
devkits can be found in the `build/devkit/result` subdirectory:
|
`BASE_OS_VERSION` option (with "27" as default version). If the build is
|
||||||
|
successful, the new devkits can be found in the `build/devkit/result`
|
||||||
|
subdirectory:
|
||||||
|
|
||||||
```
|
```
|
||||||
cd make/devkit
|
cd make/devkit
|
||||||
@@ -1482,24 +1457,6 @@ sh ./configure --with-jvm-variants=server \
|
|||||||
|
|
||||||
and run `make` normally.
|
and run `make` normally.
|
||||||
|
|
||||||
#### Building for Windows AArch64
|
|
||||||
The Visual Studio Build Tools can be used for building the JDK without a full
|
|
||||||
Visual Studio installation. To set up the Visual Studio 2022 Build Tools on a
|
|
||||||
Windows AArch64 machine for a native build, launch the installer as follows
|
|
||||||
in a Windows command prompt:
|
|
||||||
|
|
||||||
```
|
|
||||||
vs_buildtools.exe --quiet --wait --norestart --nocache ^
|
|
||||||
--installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" ^
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.CoreBuildTools ^
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
|
|
||||||
--add Microsoft.VisualStudio.Component.Windows11SDK.22621
|
|
||||||
```
|
|
||||||
|
|
||||||
To generate Windows AArch64 builds using Cygwin on a Windows x64 machine,
|
|
||||||
you must set the proper target platform by adding
|
|
||||||
`--openjdk-target=aarch64-unknown-cygwin` to your configure command line.
|
|
||||||
|
|
||||||
## Build Performance
|
## Build Performance
|
||||||
|
|
||||||
Building the JDK requires a lot of horsepower. Some of the build tools can be
|
Building the JDK requires a lot of horsepower. Some of the build tools can be
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -189,7 +189,7 @@ wants to find) and design tests using those models.</p>
|
|||||||
<p>Prefer having checks inside test code.</p>
|
<p>Prefer having checks inside test code.</p>
|
||||||
<p>Not only does having test logic outside, e.g. verification method,
|
<p>Not only does having test logic outside, e.g. verification method,
|
||||||
depending on asserts in product code contradict with several items above
|
depending on asserts in product code contradict with several items above
|
||||||
but also decreases test's readability and stability. It is much easier
|
but also decreases test’s readability and stability. It is much easier
|
||||||
to understand that a test is testing when all testing logic is located
|
to understand that a test is testing when all testing logic is located
|
||||||
inside a test or nearby in shared test libraries. As a rule of thumb,
|
inside a test or nearby in shared test libraries. As a rule of thumb,
|
||||||
the closer a check to a test, the better.</p>
|
the closer a check to a test, the better.</p>
|
||||||
@@ -198,7 +198,7 @@ the closer a check to a test, the better.</p>
|
|||||||
<p>Prefer <code>EXPECT</code> over <code>ASSERT</code> if possible.</p>
|
<p>Prefer <code>EXPECT</code> over <code>ASSERT</code> if possible.</p>
|
||||||
<p>This is related to the <a href="#informativeness">informativeness</a>
|
<p>This is related to the <a href="#informativeness">informativeness</a>
|
||||||
property of tests, information for other checks can help to better
|
property of tests, information for other checks can help to better
|
||||||
localize a defect's root-cause. One should use <code>ASSERT</code> if it
|
localize a defect’s root-cause. One should use <code>ASSERT</code> if it
|
||||||
is impossible to continue test execution or if it does not make much
|
is impossible to continue test execution or if it does not make much
|
||||||
sense. Later in the text, <code>EXPECT</code> forms will be used to
|
sense. Later in the text, <code>EXPECT</code> forms will be used to
|
||||||
refer to both <code>ASSERT/EXPECT</code>.</p>
|
refer to both <code>ASSERT/EXPECT</code>.</p>
|
||||||
@@ -235,7 +235,7 @@ which checks that the absolute value of the difference between
|
|||||||
<code>eps</code>.</p>
|
<code>eps</code>.</p>
|
||||||
<h3 id="c-string-comparison">C string comparison</h3>
|
<h3 id="c-string-comparison">C string comparison</h3>
|
||||||
<p>Use string special macros for C strings comparisons.</p>
|
<p>Use string special macros for C strings comparisons.</p>
|
||||||
<p><code>EXPECT_EQ</code> just compares pointers' values, which is
|
<p><code>EXPECT_EQ</code> just compares pointers’ values, which is
|
||||||
hardly what one wants comparing C strings. GoogleTest provides
|
hardly what one wants comparing C strings. GoogleTest provides
|
||||||
<code>EXPECT_STREQ</code> and <code>EXPECT_STRNE</code> macros to
|
<code>EXPECT_STREQ</code> and <code>EXPECT_STRNE</code> macros to
|
||||||
compare C string contents. There are also case-insensitive versions
|
compare C string contents. There are also case-insensitive versions
|
||||||
@@ -293,7 +293,7 @@ subsystem, etc.</p>
|
|||||||
<p>This naming scheme helps to find tests, filter them and simplifies
|
<p>This naming scheme helps to find tests, filter them and simplifies
|
||||||
test failure analysis. For example, class <code>Foo</code> - test group
|
test failure analysis. For example, class <code>Foo</code> - test group
|
||||||
<code>Foo</code>, compiler logging subsystem - test group
|
<code>Foo</code>, compiler logging subsystem - test group
|
||||||
<code>CompilerLogging</code>, G1 GC - test group <code>G1GC</code>, and
|
<code>CompilerLogging</code>, G1 GC — test group <code>G1GC</code>, and
|
||||||
so forth.</p>
|
so forth.</p>
|
||||||
<h3 id="filename">Filename</h3>
|
<h3 id="filename">Filename</h3>
|
||||||
<p>A test file must have <code>test_</code> prefix and <code>.cpp</code>
|
<p>A test file must have <code>test_</code> prefix and <code>.cpp</code>
|
||||||
@@ -305,11 +305,11 @@ recognize your tests.</p>
|
|||||||
the product.</p>
|
the product.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><p>All unit tests for a class from <code>foo/bar/baz.cpp</code>
|
<li><p>All unit tests for a class from <code>foo/bar/baz.cpp</code>
|
||||||
should be placed <code>foo/bar/test_baz.cpp</code> in the
|
should be placed <code>foo/bar/test_baz.cpp</code> in
|
||||||
<code>test/hotspot/gtest/</code> directory. Having all tests for a class
|
<code>hotspot/test/native/</code> directory. Having all tests for a
|
||||||
in one file is a common practice for unit tests, it helps to see all
|
class in one file is a common practice for unit tests, it helps to see
|
||||||
existing tests at once, share functions and/or resources without losing
|
all existing tests at once, share functions and/or resources without
|
||||||
encapsulation.</p></li>
|
losing encapsulation.</p></li>
|
||||||
<li><p>For tests which test more than one class, directory hierarchy
|
<li><p>For tests which test more than one class, directory hierarchy
|
||||||
should be the same as product hierarchy, and file name should reflect
|
should be the same as product hierarchy, and file name should reflect
|
||||||
the name of the tested subsystem/functionality. For example, if a
|
the name of the tested subsystem/functionality. For example, if a
|
||||||
@@ -319,7 +319,7 @@ placed in <code>gc/g1</code> directory.</p></li>
|
|||||||
<p>Please note that framework prepends directory name to a test group
|
<p>Please note that framework prepends directory name to a test group
|
||||||
name. For example, if <code>TEST(foo, check_this)</code> and
|
name. For example, if <code>TEST(foo, check_this)</code> and
|
||||||
<code>TEST(bar, check_that)</code> are defined in
|
<code>TEST(bar, check_that)</code> are defined in
|
||||||
<code>test/hotspot/gtest/gc/shared/test_foo.cpp</code> file, they will
|
<code>hotspot/test/native/gc/shared/test_foo.cpp</code> file, they will
|
||||||
be reported as <code>gc/shared/foo::check_this</code> and
|
be reported as <code>gc/shared/foo::check_this</code> and
|
||||||
<code>gc/shared/bar::check_that</code>.</p>
|
<code>gc/shared/bar::check_that</code>.</p>
|
||||||
<h3 id="test-names">Test names</h3>
|
<h3 id="test-names">Test names</h3>
|
||||||
@@ -345,7 +345,7 @@ name starts or ends with an underscore are enough to be safe.</p>
|
|||||||
<h3 id="friend-classes">Friend classes</h3>
|
<h3 id="friend-classes">Friend classes</h3>
|
||||||
<p>All test purpose friends should have either <code>Test</code> or
|
<p>All test purpose friends should have either <code>Test</code> or
|
||||||
<code>Testable</code> suffix.</p>
|
<code>Testable</code> suffix.</p>
|
||||||
<p>It greatly simplifies understanding of friendship's purpose and
|
<p>It greatly simplifies understanding of friendship’s purpose and
|
||||||
allows statically check that private members are not exposed
|
allows statically check that private members are not exposed
|
||||||
unexpectedly. Having <code>FooTest</code> as a friend of
|
unexpectedly. Having <code>FooTest</code> as a friend of
|
||||||
<code>Foo</code> without any comments will be understood as a necessary
|
<code>Foo</code> without any comments will be understood as a necessary
|
||||||
@@ -435,7 +435,7 @@ inapplicable tests.</p>
|
|||||||
<h3 id="flag-restoring">Flag restoring</h3>
|
<h3 id="flag-restoring">Flag restoring</h3>
|
||||||
<p>Restore changed flags.</p>
|
<p>Restore changed flags.</p>
|
||||||
<p>It is quite common for tests to configure JVM in a certain way
|
<p>It is quite common for tests to configure JVM in a certain way
|
||||||
changing flags' values. GoogleTest provides two ways to set up
|
changing flags’ values. GoogleTest provides two ways to set up
|
||||||
environment before a test and restore it afterward: using either
|
environment before a test and restore it afterward: using either
|
||||||
constructor and destructor or <code>SetUp</code> and
|
constructor and destructor or <code>SetUp</code> and
|
||||||
<code>TearDown</code> functions. Both ways require to use a test fixture
|
<code>TearDown</code> functions. Both ways require to use a test fixture
|
||||||
@@ -444,7 +444,7 @@ class, which sometimes is too wordy. The simpler facilities like
|
|||||||
be used in such cases to restore/set values.</p>
|
be used in such cases to restore/set values.</p>
|
||||||
<p>Caveats:</p>
|
<p>Caveats:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><p>Changing a flag's value could break the invariants between flags'
|
<li><p>Changing a flag’s value could break the invariants between flags'
|
||||||
values and hence could lead to unexpected/unsupported JVM
|
values and hence could lead to unexpected/unsupported JVM
|
||||||
state.</p></li>
|
state.</p></li>
|
||||||
<li><p><code>FLAG_SET_*</code> macros can change more than one flag (in
|
<li><p><code>FLAG_SET_*</code> macros can change more than one flag (in
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ Prefer having checks inside test code.
|
|||||||
|
|
||||||
Not only does having test logic outside, e.g. verification method,
|
Not only does having test logic outside, e.g. verification method,
|
||||||
depending on asserts in product code contradict with several items
|
depending on asserts in product code contradict with several items
|
||||||
above but also decreases test's readability and stability. It is much
|
above but also decreases test’s readability and stability. It is much
|
||||||
easier to understand that a test is testing when all testing logic is
|
easier to understand that a test is testing when all testing logic is
|
||||||
located inside a test or nearby in shared test libraries. As a rule of
|
located inside a test or nearby in shared test libraries. As a rule of
|
||||||
thumb, the closer a check to a test, the better.
|
thumb, the closer a check to a test, the better.
|
||||||
@@ -119,7 +119,7 @@ Prefer `EXPECT` over `ASSERT` if possible.
|
|||||||
|
|
||||||
This is related to the [informativeness](#informativeness) property of
|
This is related to the [informativeness](#informativeness) property of
|
||||||
tests, information for other checks can help to better localize a
|
tests, information for other checks can help to better localize a
|
||||||
defect's root-cause. One should use `ASSERT` if it is impossible to
|
defect’s root-cause. One should use `ASSERT` if it is impossible to
|
||||||
continue test execution or if it does not make much sense. Later in
|
continue test execution or if it does not make much sense. Later in
|
||||||
the text, `EXPECT` forms will be used to refer to both
|
the text, `EXPECT` forms will be used to refer to both
|
||||||
`ASSERT/EXPECT`.
|
`ASSERT/EXPECT`.
|
||||||
@@ -160,7 +160,7 @@ value of the difference between `v1` and `v2` is not greater than `eps`.
|
|||||||
|
|
||||||
Use string special macros for C strings comparisons.
|
Use string special macros for C strings comparisons.
|
||||||
|
|
||||||
`EXPECT_EQ` just compares pointers' values, which is hardly what one
|
`EXPECT_EQ` just compares pointers’ values, which is hardly what one
|
||||||
wants comparing C strings. GoogleTest provides `EXPECT_STREQ` and
|
wants comparing C strings. GoogleTest provides `EXPECT_STREQ` and
|
||||||
`EXPECT_STRNE` macros to compare C string contents. There are also
|
`EXPECT_STRNE` macros to compare C string contents. There are also
|
||||||
case-insensitive versions `EXPECT_STRCASEEQ`, `EXPECT_STRCASENE`.
|
case-insensitive versions `EXPECT_STRCASEEQ`, `EXPECT_STRCASENE`.
|
||||||
@@ -226,7 +226,7 @@ subsystem, etc.
|
|||||||
|
|
||||||
This naming scheme helps to find tests, filter them and simplifies
|
This naming scheme helps to find tests, filter them and simplifies
|
||||||
test failure analysis. For example, class `Foo` - test group `Foo`,
|
test failure analysis. For example, class `Foo` - test group `Foo`,
|
||||||
compiler logging subsystem - test group `CompilerLogging`, G1 GC - test
|
compiler logging subsystem - test group `CompilerLogging`, G1 GC — test
|
||||||
group `G1GC`, and so forth.
|
group `G1GC`, and so forth.
|
||||||
|
|
||||||
### Filename
|
### Filename
|
||||||
@@ -241,7 +241,7 @@ recognize your tests.
|
|||||||
Test file location should reflect a location of the tested part of the product.
|
Test file location should reflect a location of the tested part of the product.
|
||||||
|
|
||||||
* All unit tests for a class from `foo/bar/baz.cpp` should be placed
|
* All unit tests for a class from `foo/bar/baz.cpp` should be placed
|
||||||
`foo/bar/test_baz.cpp` in the `test/hotspot/gtest/` directory. Having all
|
`foo/bar/test_baz.cpp` in `hotspot/test/native/` directory. Having all
|
||||||
tests for a class in one file is a common practice for unit tests, it
|
tests for a class in one file is a common practice for unit tests, it
|
||||||
helps to see all existing tests at once, share functions and/or
|
helps to see all existing tests at once, share functions and/or
|
||||||
resources without losing encapsulation.
|
resources without losing encapsulation.
|
||||||
@@ -254,7 +254,7 @@ sub-system under tests belongs to `gc/g1`, tests should be placed in
|
|||||||
|
|
||||||
Please note that framework prepends directory name to a test group
|
Please note that framework prepends directory name to a test group
|
||||||
name. For example, if `TEST(foo, check_this)` and `TEST(bar, check_that)`
|
name. For example, if `TEST(foo, check_this)` and `TEST(bar, check_that)`
|
||||||
are defined in `test/hotspot/gtest/gc/shared/test_foo.cpp` file, they
|
are defined in `hotspot/test/native/gc/shared/test_foo.cpp` file, they
|
||||||
will be reported as `gc/shared/foo::check_this` and
|
will be reported as `gc/shared/foo::check_this` and
|
||||||
`gc/shared/bar::check_that`.
|
`gc/shared/bar::check_that`.
|
||||||
|
|
||||||
@@ -287,7 +287,7 @@ Fixture classes should be named after tested classes, subsystems, etc
|
|||||||
|
|
||||||
All test purpose friends should have either `Test` or `Testable` suffix.
|
All test purpose friends should have either `Test` or `Testable` suffix.
|
||||||
|
|
||||||
It greatly simplifies understanding of friendship's purpose and allows
|
It greatly simplifies understanding of friendship’s purpose and allows
|
||||||
statically check that private members are not exposed unexpectedly.
|
statically check that private members are not exposed unexpectedly.
|
||||||
Having `FooTest` as a friend of `Foo` without any comments will be
|
Having `FooTest` as a friend of `Foo` without any comments will be
|
||||||
understood as a necessary evil to get testability.
|
understood as a necessary evil to get testability.
|
||||||
@@ -397,7 +397,7 @@ and filter out inapplicable tests.
|
|||||||
Restore changed flags.
|
Restore changed flags.
|
||||||
|
|
||||||
It is quite common for tests to configure JVM in a certain way
|
It is quite common for tests to configure JVM in a certain way
|
||||||
changing flags' values. GoogleTest provides two ways to set up
|
changing flags’ values. GoogleTest provides two ways to set up
|
||||||
environment before a test and restore it afterward: using either
|
environment before a test and restore it afterward: using either
|
||||||
constructor and destructor or `SetUp` and `TearDown` functions. Both ways
|
constructor and destructor or `SetUp` and `TearDown` functions. Both ways
|
||||||
require to use a test fixture class, which sometimes is too wordy. The
|
require to use a test fixture class, which sometimes is too wordy. The
|
||||||
@@ -406,7 +406,7 @@ be used in such cases to restore/set values.
|
|||||||
|
|
||||||
Caveats:
|
Caveats:
|
||||||
|
|
||||||
* Changing a flag's value could break the invariants between flags' values and hence could lead to unexpected/unsupported JVM state.
|
* Changing a flag’s value could break the invariants between flags' values and hence could lead to unexpected/unsupported JVM state.
|
||||||
|
|
||||||
* `FLAG_SET_*` macros can change more than one flag (in order to
|
* `FLAG_SET_*` macros can change more than one flag (in order to
|
||||||
maintain invariants) so it is hard to predict what flags will be
|
maintain invariants) so it is hard to predict what flags will be
|
||||||
|
|||||||
@@ -1,127 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="generator" content="pandoc" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
||||||
<title>Explanation of start of release changes</title>
|
|
||||||
<style>
|
|
||||||
code{white-space: pre-wrap;}
|
|
||||||
span.smallcaps{font-variant: small-caps;}
|
|
||||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
|
||||||
div.column{flex: auto; overflow-x: auto;}
|
|
||||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
||||||
ul.task-list{list-style: none;}
|
|
||||||
ul.task-list li input[type="checkbox"] {
|
|
||||||
width: 0.8em;
|
|
||||||
margin: 0 0.8em 0.2em -1.6em;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
|
||||||
</style>
|
|
||||||
<link rel="stylesheet" href="../make/data/docs-resources/resources/jdk-default.css" />
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header id="title-block-header">
|
|
||||||
<h1 class="title">Explanation of start of release changes</h1>
|
|
||||||
</header>
|
|
||||||
<nav id="TOC" role="doc-toc">
|
|
||||||
<ul>
|
|
||||||
<li><a href="#overview" id="toc-overview">Overview</a></li>
|
|
||||||
<li><a href="#details-and-file-updates"
|
|
||||||
id="toc-details-and-file-updates">Details and file updates</a>
|
|
||||||
<ul>
|
|
||||||
<li><a href="#meta-data-files" id="toc-meta-data-files">Meta-data
|
|
||||||
files</a></li>
|
|
||||||
<li><a href="#src-files" id="toc-src-files"><code>src</code>
|
|
||||||
files</a></li>
|
|
||||||
<li><a href="#test-files" id="toc-test-files"><code>test</code>
|
|
||||||
files</a></li>
|
|
||||||
</ul></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
<h2 id="overview">Overview</h2>
|
|
||||||
<p>The start of release changes, the changes that turn JDK <em>N</em>
|
|
||||||
into JDK (<em>N</em>+1), are primarily small updates to various files
|
|
||||||
along with new files to store symbol information to allow
|
|
||||||
<code>javac --release N ...</code> to run on JDK (<em>N</em>+1).</p>
|
|
||||||
<p>The updates include changes to files holding meta-data about the
|
|
||||||
release, files under the <code>src</code> directory for API and tooling
|
|
||||||
updates, and incidental updates under the <code>test</code>
|
|
||||||
directory.</p>
|
|
||||||
<h2 id="details-and-file-updates">Details and file updates</h2>
|
|
||||||
<p>As a matter of policy, there are a number of semantically distinct
|
|
||||||
concepts which get incremented separately at the start of a new
|
|
||||||
release:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Feature value of <code>Runtime.version()</code></li>
|
|
||||||
<li>Highest source version modeled by
|
|
||||||
<code>javax.lang.model.SourceVersion</code></li>
|
|
||||||
<li>Highest class file format major version recognized by the
|
|
||||||
platform</li>
|
|
||||||
<li>Highest
|
|
||||||
<code>-source</code>/<code>-target</code>/<code>--release</code>
|
|
||||||
argument recognized by <code>javac</code> and related tools</li>
|
|
||||||
</ul>
|
|
||||||
<p>The expected file updates are listed below. Additional files may need
|
|
||||||
to be updated for a particular release.</p>
|
|
||||||
<h3 id="meta-data-files">Meta-data files</h3>
|
|
||||||
<ul>
|
|
||||||
<li><code>jcheck/conf</code>: update meta-data used by
|
|
||||||
<code>jcheck</code> and the Skara tooling</li>
|
|
||||||
<li><code>make/conf/version-numbers.conf</code>: update to meta-data
|
|
||||||
used in the build</li>
|
|
||||||
</ul>
|
|
||||||
<h3 id="src-files"><code>src</code> files</h3>
|
|
||||||
<ul>
|
|
||||||
<li><code>src/hotspot/share/classfile/classFileParser.cpp</code>: add a
|
|
||||||
<code>#define</code> for the new version</li>
|
|
||||||
<li><code>src/java.base/share/classes/java/lang/classfile/ClassFile.java</code>:
|
|
||||||
add a constant for the new class file format version</li>
|
|
||||||
<li><code>src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java</code>:
|
|
||||||
add an <code>enum</code> constant for the new class file format
|
|
||||||
version</li>
|
|
||||||
<li><code>src/java.compiler/share/classes/javax/lang/model/SourceVersion.java</code>:
|
|
||||||
add an <code>enum</code> constant for the new source version</li>
|
|
||||||
<li><code>src/java.compiler/share/classes/javax/lang/model/util/*</code>
|
|
||||||
visitors: Update <code>@SupportedSourceVersion</code> annotations to
|
|
||||||
latest value. Note this update is done in lieu of introducing another
|
|
||||||
set of visitors for each Java SE release.</li>
|
|
||||||
<li><code>src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java</code>:
|
|
||||||
add an <code>enum</code> constant for the new source version internal to
|
|
||||||
<code>javac</code></li>
|
|
||||||
<li><code>src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java</code>:
|
|
||||||
add an <code>enum</code> constant for the new class file format version
|
|
||||||
internal to <code>javac</code></li>
|
|
||||||
<li><code>src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java</code>:
|
|
||||||
add an <code>enum</code> constant for the new target version internal to
|
|
||||||
<code>javac</code></li>
|
|
||||||
<li><code>src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java</code>
|
|
||||||
update printing processor to support the new source version</li>
|
|
||||||
<li>The symbol information for <code>--release</code> is stored as new
|
|
||||||
text files in the <code>src/jdk.compiler/share/data/symbols</code>
|
|
||||||
directory, one file per module. The README file in that directory
|
|
||||||
contains directions on how to create the files.</li>
|
|
||||||
</ul>
|
|
||||||
<h3 id="test-files"><code>test</code> files</h3>
|
|
||||||
<ul>
|
|
||||||
<li><code>test/langtools/tools/javac/api/TestGetSourceVersions.java</code>:
|
|
||||||
add new <code>SourceVersion</code> constant to test matrix.</li>
|
|
||||||
<li><code>test/langtools/tools/javac/classfiles/ClassVersionChecker.java</code>:
|
|
||||||
add new enum constant for the new class file version</li>
|
|
||||||
<li><code>test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java</code>
|
|
||||||
update annotation processor extended by <code>javac</code> tests to
|
|
||||||
cover the new source version</li>
|
|
||||||
<li><code>test/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out</code>
|
|
||||||
and
|
|
||||||
<code>test/langtools/tools/javac/preview/classReaderTest/Client.preview.out</code>:
|
|
||||||
update expected messages for preview errors and warnings</li>
|
|
||||||
<li><code>test/langtools/tools/javac/versions/Versions.java</code>: add
|
|
||||||
new source version to the set of valid sources and add new enum constant
|
|
||||||
for the new class file version.</li>
|
|
||||||
</ul>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
% Explanation of start of release changes
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
The start of release changes, the changes that turn JDK _N_ into JDK
|
|
||||||
(_N_+1), are primarily small updates to various files along with new files to
|
|
||||||
store symbol information to allow `javac --release N ...` to run on
|
|
||||||
JDK (_N_+1).
|
|
||||||
|
|
||||||
The updates include changes to files holding meta-data about the
|
|
||||||
release, files under the `src` directory for API and tooling updates,
|
|
||||||
and incidental updates under the `test` directory.
|
|
||||||
|
|
||||||
## Details and file updates
|
|
||||||
|
|
||||||
As a matter of policy, there are a number of semantically distinct
|
|
||||||
concepts which get incremented separately at the start of a new
|
|
||||||
release:
|
|
||||||
|
|
||||||
* Feature value of `Runtime.version()`
|
|
||||||
* Highest source version modeled by `javax.lang.model.SourceVersion`
|
|
||||||
* Highest class file format major version recognized by the platform
|
|
||||||
* Highest `-source`/`-target`/`--release` argument recognized by
|
|
||||||
`javac` and related tools
|
|
||||||
|
|
||||||
The expected file updates are listed below. Additional files may need
|
|
||||||
to be updated for a particular release.
|
|
||||||
|
|
||||||
### Meta-data files
|
|
||||||
|
|
||||||
* `jcheck/conf`: update meta-data used by `jcheck` and the Skara tooling
|
|
||||||
* `make/conf/version-numbers.conf`: update to meta-data used in the build
|
|
||||||
|
|
||||||
### `src` files
|
|
||||||
|
|
||||||
* `src/hotspot/share/classfile/classFileParser.cpp`: add a `#define`
|
|
||||||
for the new version
|
|
||||||
* `src/java.base/share/classes/java/lang/classfile/ClassFile.java`:
|
|
||||||
add a constant for the new class file format version
|
|
||||||
* `src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java`:
|
|
||||||
add an `enum` constant for the new class file format version
|
|
||||||
* `src/java.compiler/share/classes/javax/lang/model/SourceVersion.java`:
|
|
||||||
add an `enum` constant for the new source version
|
|
||||||
* `src/java.compiler/share/classes/javax/lang/model/util/*` visitors: Update
|
|
||||||
`@SupportedSourceVersion` annotations to latest value. Note this update
|
|
||||||
is done in lieu of introducing another set of visitors for each Java
|
|
||||||
SE release.
|
|
||||||
* `src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java`:
|
|
||||||
add an `enum` constant for the new source version internal to `javac`
|
|
||||||
* `src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java`:
|
|
||||||
add an `enum` constant for the new class file format version internal to `javac`
|
|
||||||
* `src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java`:
|
|
||||||
add an `enum` constant for the new target version internal to `javac`
|
|
||||||
* `src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java`
|
|
||||||
update printing processor to support the new source version
|
|
||||||
* The symbol information for `--release` is stored as new text files in the
|
|
||||||
`src/jdk.compiler/share/data/symbols` directory, one file per
|
|
||||||
module. The README file in that directory contains directions on how
|
|
||||||
to create the files.
|
|
||||||
|
|
||||||
### `test` files
|
|
||||||
|
|
||||||
* `test/langtools/tools/javac/api/TestGetSourceVersions.java`: add new `SourceVersion` constant to test matrix.
|
|
||||||
* `test/langtools/tools/javac/classfiles/ClassVersionChecker.java`: add new enum constant for the new class file version
|
|
||||||
* `test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java`
|
|
||||||
update annotation processor extended by `javac` tests to cover the new source version
|
|
||||||
* `test/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out` and `test/langtools/tools/javac/preview/classReaderTest/Client.preview.out`: update expected messages for preview errors and warnings
|
|
||||||
* `test/langtools/tools/javac/versions/Versions.java`: add new source version to the set of valid sources and add new enum constant for the new class file version.
|
|
||||||
@@ -72,9 +72,6 @@ id="toc-notes-for-specific-tests">Notes for Specific Tests</a>
|
|||||||
<li><a href="#non-us-locale" id="toc-non-us-locale">Non-US
|
<li><a href="#non-us-locale" id="toc-non-us-locale">Non-US
|
||||||
locale</a></li>
|
locale</a></li>
|
||||||
<li><a href="#pkcs11-tests" id="toc-pkcs11-tests">PKCS11 Tests</a></li>
|
<li><a href="#pkcs11-tests" id="toc-pkcs11-tests">PKCS11 Tests</a></li>
|
||||||
<li><a href="#testing-ahead-of-time-optimizations"
|
|
||||||
id="toc-testing-ahead-of-time-optimizations">Testing Ahead-of-time
|
|
||||||
Optimizations</a></li>
|
|
||||||
<li><a href="#testing-with-alternative-security-providers"
|
<li><a href="#testing-with-alternative-security-providers"
|
||||||
id="toc-testing-with-alternative-security-providers">Testing with
|
id="toc-testing-with-alternative-security-providers">Testing with
|
||||||
alternative security providers</a></li>
|
alternative security providers</a></li>
|
||||||
@@ -398,8 +395,7 @@ TEST_OPTS keywords.</p>
|
|||||||
<h4 id="jobs">JOBS</h4>
|
<h4 id="jobs">JOBS</h4>
|
||||||
<p>Currently only applies to JTReg.</p>
|
<p>Currently only applies to JTReg.</p>
|
||||||
<h4 id="timeout_factor">TIMEOUT_FACTOR</h4>
|
<h4 id="timeout_factor">TIMEOUT_FACTOR</h4>
|
||||||
<p>Currently only applies to <a href="#timeout_factor-1">JTReg
|
<p>Currently only applies to JTReg.</p>
|
||||||
-timeoutFactor</a>.</p>
|
|
||||||
<h4 id="java_options">JAVA_OPTIONS</h4>
|
<h4 id="java_options">JAVA_OPTIONS</h4>
|
||||||
<p>Applies to JTReg, GTest and Micro.</p>
|
<p>Applies to JTReg, GTest and Micro.</p>
|
||||||
<h4 id="vm_options">VM_OPTIONS</h4>
|
<h4 id="vm_options">VM_OPTIONS</h4>
|
||||||
@@ -415,13 +411,6 @@ instrumentation
|
|||||||
special target <code>jcov-test</code> instead of <code>test</code>, e.g.
|
special target <code>jcov-test</code> instead of <code>test</code>, e.g.
|
||||||
<code>make jcov-test TEST=jdk_lang</code>. This will make sure the JCov
|
<code>make jcov-test TEST=jdk_lang</code>. This will make sure the JCov
|
||||||
image is built, and that JCov reporting is enabled.</p>
|
image is built, and that JCov reporting is enabled.</p>
|
||||||
<p>To include JCov coverage for just a subset of all modules, you can
|
|
||||||
use the <code>--with-jcov-modules</code> arguments to
|
|
||||||
<code>configure</code>, e.g.
|
|
||||||
<code>--with-jcov-modules=jdk.compiler,java.desktop</code>.</p>
|
|
||||||
<p>For more fine-grained control, you can pass arbitrary filters to JCov
|
|
||||||
using <code>--with-jcov-filters</code>, and you can specify a specific
|
|
||||||
JDK to instrument using <code>--with-jcov-input-jdk</code>.</p>
|
|
||||||
<p>The JCov report is stored in
|
<p>The JCov report is stored in
|
||||||
<code>build/$BUILD/test-results/jcov-output/report</code>.</p>
|
<code>build/$BUILD/test-results/jcov-output/report</code>.</p>
|
||||||
<p>Please note that running with JCov reporting can be very memory
|
<p>Please note that running with JCov reporting can be very memory
|
||||||
@@ -434,9 +423,6 @@ the diff between the specified revision and the repository tip.</p>
|
|||||||
<p>The report is stored in
|
<p>The report is stored in
|
||||||
<code>build/$BUILD/test-results/jcov-output/diff_coverage_report</code>
|
<code>build/$BUILD/test-results/jcov-output/diff_coverage_report</code>
|
||||||
file.</p>
|
file.</p>
|
||||||
<h4 id="aot_jdk">AOT_JDK</h4>
|
|
||||||
<p>See <a href="#testing-ahead-of-time-optimizations">Testing
|
|
||||||
Ahead-of-time optimizations</a>.</p>
|
|
||||||
<h3 id="jtreg-keywords">JTReg keywords</h3>
|
<h3 id="jtreg-keywords">JTReg keywords</h3>
|
||||||
<h4 id="jobs-1">JOBS</h4>
|
<h4 id="jobs-1">JOBS</h4>
|
||||||
<p>The test concurrency (<code>-concurrency</code>).</p>
|
<p>The test concurrency (<code>-concurrency</code>).</p>
|
||||||
@@ -445,12 +431,8 @@ otherwise it defaults to JOBS, except for Hotspot, where the default is
|
|||||||
<em>number of CPU cores/2</em>, but never more than <em>memory size in
|
<em>number of CPU cores/2</em>, but never more than <em>memory size in
|
||||||
GB/2</em>.</p>
|
GB/2</em>.</p>
|
||||||
<h4 id="timeout_factor-1">TIMEOUT_FACTOR</h4>
|
<h4 id="timeout_factor-1">TIMEOUT_FACTOR</h4>
|
||||||
<p>The <code>TIMEOUT_FACTOR</code> is forwarded to JTReg framework
|
<p>The timeout factor (<code>-timeoutFactor</code>).</p>
|
||||||
itself (<code>-timeoutFactor</code>). Also, some test cases that
|
<p>Defaults to 4.</p>
|
||||||
programmatically wait a certain amount of time will apply this factor.
|
|
||||||
If we run in forced compilation mode (<code>-Xcomp</code>), the build
|
|
||||||
system will automatically adjust this factor to compensate for less
|
|
||||||
performance. Defaults to 4.</p>
|
|
||||||
<h4 id="failure_handler_timeout">FAILURE_HANDLER_TIMEOUT</h4>
|
<h4 id="failure_handler_timeout">FAILURE_HANDLER_TIMEOUT</h4>
|
||||||
<p>Sets the argument <code>-timeoutHandlerTimeout</code> for JTReg. The
|
<p>Sets the argument <code>-timeoutHandlerTimeout</code> for JTReg. The
|
||||||
default value is 0. This is only valid if the failure handler is
|
default value is 0. This is only valid if the failure handler is
|
||||||
@@ -463,12 +445,6 @@ class, named Virtual, is currently part of the JDK build in the
|
|||||||
<code>test/jtreg_test_thread_factory/</code> directory. This class gets
|
<code>test/jtreg_test_thread_factory/</code> directory. This class gets
|
||||||
compiled during the test image build. The implementation of the Virtual
|
compiled during the test image build. The implementation of the Virtual
|
||||||
class creates a new virtual thread for executing each test class.</p>
|
class creates a new virtual thread for executing each test class.</p>
|
||||||
<h4 id="jvmti_stress_agent">JVMTI_STRESS_AGENT</h4>
|
|
||||||
<p>Executes JTReg tests with JVM TI stress agent. The stress agent is
|
|
||||||
the part of test library and located in
|
|
||||||
<code>test/lib/jdk/test/lib/jvmti/libJvmtiStressAgent.cpp</code>. The
|
|
||||||
value of this argument is set as JVM TI agent options. This mode uses
|
|
||||||
ProblemList-jvmti-stress-agent.txt as an additional exclude list.</p>
|
|
||||||
<h4 id="test_mode">TEST_MODE</h4>
|
<h4 id="test_mode">TEST_MODE</h4>
|
||||||
<p>The test mode (<code>agentvm</code> or <code>othervm</code>).</p>
|
<p>The test mode (<code>agentvm</code> or <code>othervm</code>).</p>
|
||||||
<p>Defaults to <code>agentvm</code>.</p>
|
<p>Defaults to <code>agentvm</code>.</p>
|
||||||
@@ -535,8 +511,6 @@ failure. This helps to reproduce intermittent test failures. Defaults to
|
|||||||
<h4 id="report">REPORT</h4>
|
<h4 id="report">REPORT</h4>
|
||||||
<p>Use this report style when reporting test results (sent to JTReg as
|
<p>Use this report style when reporting test results (sent to JTReg as
|
||||||
<code>-report</code>). Defaults to <code>files</code>.</p>
|
<code>-report</code>). Defaults to <code>files</code>.</p>
|
||||||
<h4 id="manual">MANUAL</h4>
|
|
||||||
<p>Set to <code>true</code> to execute manual tests only.</p>
|
|
||||||
<h3 id="gtest-keywords">Gtest keywords</h3>
|
<h3 id="gtest-keywords">Gtest keywords</h3>
|
||||||
<h4 id="repeat">REPEAT</h4>
|
<h4 id="repeat">REPEAT</h4>
|
||||||
<p>The number of times to repeat the tests
|
<p>The number of times to repeat the tests
|
||||||
@@ -570,12 +544,6 @@ each fork. Same as specifying <code>-wi <num></code>.</p>
|
|||||||
same values as <code>-rff</code>, i.e., <code>text</code>,
|
same values as <code>-rff</code>, i.e., <code>text</code>,
|
||||||
<code>csv</code>, <code>scsv</code>, <code>json</code>, or
|
<code>csv</code>, <code>scsv</code>, <code>json</code>, or
|
||||||
<code>latex</code>.</p>
|
<code>latex</code>.</p>
|
||||||
<h4 id="test_jdk">TEST_JDK</h4>
|
|
||||||
<p>The path to the JDK that will be used to run the benchmarks.</p>
|
|
||||||
<p>Defaults to <code>build/<CONF-NAME>/jdk</code>.</p>
|
|
||||||
<h4 id="benchmarks_jar">BENCHMARKS_JAR</h4>
|
|
||||||
<p>The path to the JAR containing the benchmarks.</p>
|
|
||||||
<p>Defaults to <code>test/micro/benchmarks.jar</code>.</p>
|
|
||||||
<h4 id="vm_options-2">VM_OPTIONS</h4>
|
<h4 id="vm_options-2">VM_OPTIONS</h4>
|
||||||
<p>Additional VM arguments to provide to forked off VMs. Same as
|
<p>Additional VM arguments to provide to forked off VMs. Same as
|
||||||
<code>-jvmArgs <args></code></p>
|
<code>-jvmArgs <args></code></p>
|
||||||
@@ -621,37 +589,6 @@ element of the appropriate <code>@Artifact</code> class. (See
|
|||||||
JTREG="JAVA_OPTIONS=-Djdk.test.lib.artifacts.nsslib-linux_aarch64=/path/to/NSS-libs"</code></pre>
|
JTREG="JAVA_OPTIONS=-Djdk.test.lib.artifacts.nsslib-linux_aarch64=/path/to/NSS-libs"</code></pre>
|
||||||
<p>For more notes about the PKCS11 tests, please refer to
|
<p>For more notes about the PKCS11 tests, please refer to
|
||||||
test/jdk/sun/security/pkcs11/README.</p>
|
test/jdk/sun/security/pkcs11/README.</p>
|
||||||
<h3 id="testing-ahead-of-time-optimizations">Testing Ahead-of-time
|
|
||||||
Optimizations</h3>
|
|
||||||
<p>One way to improve test coverage of ahead-of-time (AOT) optimizations
|
|
||||||
in the JDK is to run existing jtreg test cases in a special "AOT_JDK"
|
|
||||||
mode. Example:</p>
|
|
||||||
<pre><code>$ make test JTREG="AOT_JDK=onestep" \
|
|
||||||
TEST=open/test/hotspot/jtreg/runtime/invokedynamic</code></pre>
|
|
||||||
<p>In this testing mode, we first perform an AOT training run (see
|
|
||||||
https://openjdk.org/jeps/483) of a special test program (<a
|
|
||||||
href="../test/setup_aot/TestSetupAOT.java">test/setup_aot/TestSetupAOT.java</a>)
|
|
||||||
that accesses about 5,0000 classes in the JDK core libraries.
|
|
||||||
Optimization artifacts for these classes (such as pre-linked lambda
|
|
||||||
expressions, execution profiles, and pre-generated native code) are
|
|
||||||
stored into an AOT cache file, which will be used by all the JVMs
|
|
||||||
launched by the selected jtreg test cases.</p>
|
|
||||||
<p>When the jtreg tests call into the core libraries classes that are in
|
|
||||||
the AOT cache, we will be able to test the AOT optimizations that were
|
|
||||||
used on those classes.</p>
|
|
||||||
<p>Please note that not all existing jtreg test cases can be executed
|
|
||||||
with the AOT_JDK mode. See <a
|
|
||||||
href="../test/hotspot/jtreg/ProblemList-AotJdk.txt">test/hotspot/jtreg/ProblemList-AotJdk.txt</a>
|
|
||||||
and <a
|
|
||||||
href="../test/jdk/ProblemList-AotJdk.txt">test/jdk/ProblemList-AotJdk.txt</a>.</p>
|
|
||||||
<p>Also, test cases that were written specifically to test AOT, such as
|
|
||||||
the tests under <a
|
|
||||||
href="../test/hotspot/jtreg/runtime/cds/">test/hotspot/jtreg/runtime/cds</a>,
|
|
||||||
cannot be executed with the AOT_JDK mode.</p>
|
|
||||||
<p>Valid values for <code>AOT_JDK</code> are <code>onestep</code> and
|
|
||||||
<code>twostep</code>. These control how the AOT cache is generated. See
|
|
||||||
https://openjdk.org/jeps/514 for details. All other values are
|
|
||||||
ignored.</p>
|
|
||||||
<h3 id="testing-with-alternative-security-providers">Testing with
|
<h3 id="testing-with-alternative-security-providers">Testing with
|
||||||
alternative security providers</h3>
|
alternative security providers</h3>
|
||||||
<p>Some security tests use a hardcoded provider for
|
<p>Some security tests use a hardcoded provider for
|
||||||
|
|||||||
@@ -324,7 +324,7 @@ Currently only applies to JTReg.
|
|||||||
|
|
||||||
#### TIMEOUT_FACTOR
|
#### TIMEOUT_FACTOR
|
||||||
|
|
||||||
Currently only applies to [JTReg -timeoutFactor](#timeout_factor-1).
|
Currently only applies to JTReg.
|
||||||
|
|
||||||
#### JAVA_OPTIONS
|
#### JAVA_OPTIONS
|
||||||
|
|
||||||
@@ -345,14 +345,6 @@ The simplest way to run tests with JCov coverage report is to use the special
|
|||||||
target `jcov-test` instead of `test`, e.g. `make jcov-test TEST=jdk_lang`. This
|
target `jcov-test` instead of `test`, e.g. `make jcov-test TEST=jdk_lang`. This
|
||||||
will make sure the JCov image is built, and that JCov reporting is enabled.
|
will make sure the JCov image is built, and that JCov reporting is enabled.
|
||||||
|
|
||||||
To include JCov coverage for just a subset of all modules, you can use the
|
|
||||||
`--with-jcov-modules` arguments to `configure`, e.g.
|
|
||||||
`--with-jcov-modules=jdk.compiler,java.desktop`.
|
|
||||||
|
|
||||||
For more fine-grained control, you can pass arbitrary filters to JCov using
|
|
||||||
`--with-jcov-filters`, and you can specify a specific JDK to instrument
|
|
||||||
using `--with-jcov-input-jdk`.
|
|
||||||
|
|
||||||
The JCov report is stored in `build/$BUILD/test-results/jcov-output/report`.
|
The JCov report is stored in `build/$BUILD/test-results/jcov-output/report`.
|
||||||
|
|
||||||
Please note that running with JCov reporting can be very memory intensive.
|
Please note that running with JCov reporting can be very memory intensive.
|
||||||
@@ -367,10 +359,6 @@ between the specified revision and the repository tip.
|
|||||||
The report is stored in
|
The report is stored in
|
||||||
`build/$BUILD/test-results/jcov-output/diff_coverage_report` file.
|
`build/$BUILD/test-results/jcov-output/diff_coverage_report` file.
|
||||||
|
|
||||||
#### AOT_JDK
|
|
||||||
|
|
||||||
See [Testing Ahead-of-time optimizations](#testing-ahead-of-time-optimizations).
|
|
||||||
|
|
||||||
### JTReg keywords
|
### JTReg keywords
|
||||||
|
|
||||||
#### JOBS
|
#### JOBS
|
||||||
@@ -383,11 +371,9 @@ never more than *memory size in GB/2*.
|
|||||||
|
|
||||||
#### TIMEOUT_FACTOR
|
#### TIMEOUT_FACTOR
|
||||||
|
|
||||||
The `TIMEOUT_FACTOR` is forwarded to JTReg framework itself
|
The timeout factor (`-timeoutFactor`).
|
||||||
(`-timeoutFactor`). Also, some test cases that programmatically wait a
|
|
||||||
certain amount of time will apply this factor. If we run in forced
|
Defaults to 4.
|
||||||
compilation mode (`-Xcomp`), the build system will automatically
|
|
||||||
adjust this factor to compensate for less performance. Defaults to 4.
|
|
||||||
|
|
||||||
#### FAILURE_HANDLER_TIMEOUT
|
#### FAILURE_HANDLER_TIMEOUT
|
||||||
|
|
||||||
@@ -403,13 +389,6 @@ the `test/jtreg_test_thread_factory/` directory. This class gets compiled
|
|||||||
during the test image build. The implementation of the Virtual class creates a
|
during the test image build. The implementation of the Virtual class creates a
|
||||||
new virtual thread for executing each test class.
|
new virtual thread for executing each test class.
|
||||||
|
|
||||||
#### JVMTI_STRESS_AGENT
|
|
||||||
|
|
||||||
Executes JTReg tests with JVM TI stress agent. The stress agent is the part of
|
|
||||||
test library and located in `test/lib/jdk/test/lib/jvmti/libJvmtiStressAgent.cpp`.
|
|
||||||
The value of this argument is set as JVM TI agent options.
|
|
||||||
This mode uses ProblemList-jvmti-stress-agent.txt as an additional exclude list.
|
|
||||||
|
|
||||||
#### TEST_MODE
|
#### TEST_MODE
|
||||||
|
|
||||||
The test mode (`agentvm` or `othervm`).
|
The test mode (`agentvm` or `othervm`).
|
||||||
@@ -512,10 +491,6 @@ helps to reproduce intermittent test failures. Defaults to 0.
|
|||||||
Use this report style when reporting test results (sent to JTReg as `-report`).
|
Use this report style when reporting test results (sent to JTReg as `-report`).
|
||||||
Defaults to `files`.
|
Defaults to `files`.
|
||||||
|
|
||||||
#### MANUAL
|
|
||||||
|
|
||||||
Set to `true` to execute manual tests only.
|
|
||||||
|
|
||||||
### Gtest keywords
|
### Gtest keywords
|
||||||
|
|
||||||
#### REPEAT
|
#### REPEAT
|
||||||
@@ -562,18 +537,6 @@ Amount of time to spend in each warmup iteration. Same as specifying `-w
|
|||||||
Specify to have the test run save a log of the values. Accepts the same values
|
Specify to have the test run save a log of the values. Accepts the same values
|
||||||
as `-rff`, i.e., `text`, `csv`, `scsv`, `json`, or `latex`.
|
as `-rff`, i.e., `text`, `csv`, `scsv`, `json`, or `latex`.
|
||||||
|
|
||||||
#### TEST_JDK
|
|
||||||
|
|
||||||
The path to the JDK that will be used to run the benchmarks.
|
|
||||||
|
|
||||||
Defaults to `build/<CONF-NAME>/jdk`.
|
|
||||||
|
|
||||||
#### BENCHMARKS_JAR
|
|
||||||
|
|
||||||
The path to the JAR containing the benchmarks.
|
|
||||||
|
|
||||||
Defaults to `test/micro/benchmarks.jar`.
|
|
||||||
|
|
||||||
#### VM_OPTIONS
|
#### VM_OPTIONS
|
||||||
|
|
||||||
Additional VM arguments to provide to forked off VMs. Same as `-jvmArgs <args>`
|
Additional VM arguments to provide to forked off VMs. Same as `-jvmArgs <args>`
|
||||||
@@ -640,43 +603,6 @@ $ make test TEST="jtreg:sun/security/pkcs11/Secmod/AddTrustedCert.java" \
|
|||||||
For more notes about the PKCS11 tests, please refer to
|
For more notes about the PKCS11 tests, please refer to
|
||||||
test/jdk/sun/security/pkcs11/README.
|
test/jdk/sun/security/pkcs11/README.
|
||||||
|
|
||||||
### Testing Ahead-of-time Optimizations
|
|
||||||
|
|
||||||
One way to improve test coverage of ahead-of-time (AOT) optimizations in
|
|
||||||
the JDK is to run existing jtreg test cases in a special "AOT_JDK" mode.
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ make test JTREG="AOT_JDK=onestep" \
|
|
||||||
TEST=open/test/hotspot/jtreg/runtime/invokedynamic
|
|
||||||
```
|
|
||||||
|
|
||||||
In this testing mode, we first perform an AOT training run
|
|
||||||
(see https://openjdk.org/jeps/483) of a special test program
|
|
||||||
([test/setup_aot/TestSetupAOT.java](../test/setup_aot/TestSetupAOT.java))
|
|
||||||
that accesses about 5,0000 classes in the JDK core libraries.
|
|
||||||
Optimization artifacts for these classes (such as pre-linked
|
|
||||||
lambda expressions, execution profiles, and pre-generated native code)
|
|
||||||
are stored into an AOT cache file, which will be used by all the JVMs
|
|
||||||
launched by the selected jtreg test cases.
|
|
||||||
|
|
||||||
When the jtreg tests call into the core libraries classes that are in
|
|
||||||
the AOT cache, we will be able to test the AOT optimizations that were
|
|
||||||
used on those classes.
|
|
||||||
|
|
||||||
Please note that not all existing jtreg test cases can be executed with
|
|
||||||
the AOT_JDK mode. See
|
|
||||||
[test/hotspot/jtreg/ProblemList-AotJdk.txt](../test/hotspot/jtreg/ProblemList-AotJdk.txt)
|
|
||||||
and [test/jdk/ProblemList-AotJdk.txt](../test/jdk/ProblemList-AotJdk.txt).
|
|
||||||
|
|
||||||
Also, test cases that were written specifically to test AOT, such as the tests
|
|
||||||
under [test/hotspot/jtreg/runtime/cds](../test/hotspot/jtreg/runtime/cds/),
|
|
||||||
cannot be executed with the AOT_JDK mode.
|
|
||||||
|
|
||||||
Valid values for `AOT_JDK` are `onestep` and `twostep`. These control how
|
|
||||||
the AOT cache is generated. See https://openjdk.org/jeps/514 for details.
|
|
||||||
All other values are ignored.
|
|
||||||
|
|
||||||
### Testing with alternative security providers
|
### Testing with alternative security providers
|
||||||
|
|
||||||
Some security tests use a hardcoded provider for `KeyFactory`, `Cipher`,
|
Some security tests use a hardcoded provider for `KeyFactory`, `Cipher`,
|
||||||
|
|||||||
274
jb/branchdiff.py
Executable file
274
jb/branchdiff.py
Executable file
@@ -0,0 +1,274 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os.path
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
errors_count = 0
|
||||||
|
|
||||||
|
|
||||||
|
def fatal(msg):
|
||||||
|
sys.stderr.write(f"[fatal] {msg}\n")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def error(msg):
|
||||||
|
global errors_count
|
||||||
|
errors_count += 1
|
||||||
|
sys.stderr.write(f"[error] {msg}\n")
|
||||||
|
|
||||||
|
|
||||||
|
def verbose(options, *msg):
|
||||||
|
if options.verbose:
|
||||||
|
sys.stderr.write(f"[verbose] ")
|
||||||
|
sys.stderr.write(*msg)
|
||||||
|
sys.stderr.write('\n')
|
||||||
|
|
||||||
|
|
||||||
|
def first_line(str):
|
||||||
|
return "" if not str else str.splitlines()[0]
|
||||||
|
|
||||||
|
|
||||||
|
class Options:
|
||||||
|
def __init__(self):
|
||||||
|
ap = argparse.ArgumentParser(description="Show commit differences between branches of JBR git repos",
|
||||||
|
epilog="Example: %(prog)s --from origin/jbr17 --to jbr17.b469 --path "
|
||||||
|
"src/hotspot --limit 200")
|
||||||
|
ap.add_argument('--jbr', dest='jbrpath', help='path to JBR git root', required=True)
|
||||||
|
ap.add_argument('--from', dest='frombranch', help='branch to take commits from', required=True)
|
||||||
|
ap.add_argument('--to', dest='tobranch', help='branch to apply new commits to', required=True)
|
||||||
|
ap.add_argument('--path', dest='path', help='limit to changes in this path (relative to git root)')
|
||||||
|
ap.add_argument('--limit', dest='limit', help='limit to this many log entries in --jdk repo', type=int,
|
||||||
|
default=-1)
|
||||||
|
ap.add_argument('--html', dest="ishtml", help="print out HTML rather than plain text", action='store_true')
|
||||||
|
ap.add_argument('-o', dest="output", help="print the list of missing commits to this file"
|
||||||
|
" to be used as exclude list later")
|
||||||
|
ap.add_argument('--exclude', dest='exclude', help='exclude commits listed in the given file '
|
||||||
|
'(can use edited -o output file as input here)')
|
||||||
|
ap.add_argument('-v', dest='verbose', help="verbose output", default=False, action='store_true')
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
if not os.path.isdir(args.jbrpath):
|
||||||
|
fatal(f"{args.jbrpath} not a directory")
|
||||||
|
|
||||||
|
if not git_is_available():
|
||||||
|
fatal("can't run git commands; make sure git is in PATH")
|
||||||
|
|
||||||
|
self.frombranch = args.frombranch
|
||||||
|
self.tobranch = args.tobranch
|
||||||
|
self.jbrpath = args.jbrpath
|
||||||
|
self.path = args.path
|
||||||
|
self.limit = args.limit
|
||||||
|
self.exclude = args.exclude
|
||||||
|
self.output = args.output
|
||||||
|
self.ishtml = args.ishtml
|
||||||
|
self.verbose = args.verbose
|
||||||
|
|
||||||
|
|
||||||
|
class GitRepo:
|
||||||
|
def __init__(self, rootpath):
|
||||||
|
self.rootpath = rootpath
|
||||||
|
|
||||||
|
def run_git_cmd(self, git_args):
|
||||||
|
args = ["git", "-C", self.rootpath]
|
||||||
|
args.extend(git_args)
|
||||||
|
# print(f"Runnig git cmd '{' '.join(args)}'")
|
||||||
|
p = subprocess.run(args, capture_output=True, text=True)
|
||||||
|
if p.returncode != 0:
|
||||||
|
fatal(f"git returned non-zero code in {self.rootpath} ({first_line(p.stderr)})")
|
||||||
|
return p.stdout
|
||||||
|
|
||||||
|
def save_git_cmd(self, fname, git_args):
|
||||||
|
args = ["git", "-C", self.rootpath]
|
||||||
|
args.extend(git_args)
|
||||||
|
# print(f"Runnig git cmd '{' '.join(args)}'")
|
||||||
|
with open(fname, "w") as stdout_file:
|
||||||
|
p = subprocess.run(args, stdout=stdout_file)
|
||||||
|
if p.returncode != 0:
|
||||||
|
fatal(f"git returned non-zero code in {self.rootpath} ({first_line(p.stderr)})")
|
||||||
|
|
||||||
|
def current_branch(self):
|
||||||
|
branch_name = self.run_git_cmd(["branch", "--show-current"]).strip()
|
||||||
|
return branch_name
|
||||||
|
|
||||||
|
def log(self, branch, path=None, limit=None):
|
||||||
|
cmds = ["log", "--no-decorate", branch]
|
||||||
|
if limit:
|
||||||
|
cmds.extend(["-n", str(limit)])
|
||||||
|
if path:
|
||||||
|
cmds.append(path)
|
||||||
|
full_log = self.run_git_cmd(cmds)
|
||||||
|
return full_log
|
||||||
|
|
||||||
|
|
||||||
|
class Commit:
|
||||||
|
def __init__(self, lines):
|
||||||
|
self.sha = lines[0].split()[1]
|
||||||
|
self.message = ""
|
||||||
|
self.fullmessage = ""
|
||||||
|
self.bugid = ""
|
||||||
|
|
||||||
|
# Commit message starts after one blank line
|
||||||
|
read_message = False
|
||||||
|
for l in lines:
|
||||||
|
if read_message:
|
||||||
|
self.fullmessage += l.strip() + "\n"
|
||||||
|
if not read_message and l == "":
|
||||||
|
read_message = True
|
||||||
|
|
||||||
|
if len(self.fullmessage) > 0:
|
||||||
|
self.message = first_line(self.fullmessage).strip()
|
||||||
|
t = self.message.split(' ')
|
||||||
|
if len(t) > 1:
|
||||||
|
bugid = t[0]
|
||||||
|
if bugid.startswith("fixup"):
|
||||||
|
bugid = t[1]
|
||||||
|
bugid = bugid.strip(":")
|
||||||
|
if bugid.startswith("JBR-") or bugid.isnumeric():
|
||||||
|
self.bugid = bugid
|
||||||
|
|
||||||
|
|
||||||
|
class History:
|
||||||
|
def __init__(self, log):
|
||||||
|
log_itr = iter(log.splitlines())
|
||||||
|
self.commits = []
|
||||||
|
self.unique_fullmessages = set()
|
||||||
|
self.duplicates = set()
|
||||||
|
commit_lines = []
|
||||||
|
for line in log_itr:
|
||||||
|
if line.startswith("commit ") and len(commit_lines) > 0:
|
||||||
|
commit = Commit(commit_lines)
|
||||||
|
self.add_commit(commit)
|
||||||
|
commit_lines = []
|
||||||
|
commit_lines.append(line)
|
||||||
|
|
||||||
|
if len(commit_lines) > 0:
|
||||||
|
commit = Commit(commit_lines)
|
||||||
|
self.add_commit(commit)
|
||||||
|
|
||||||
|
def add_commit(self, commit):
|
||||||
|
self.commits.append(commit)
|
||||||
|
if commit.fullmessage in self.unique_fullmessages:
|
||||||
|
self.duplicates.add(commit.fullmessage)
|
||||||
|
else:
|
||||||
|
self.unique_fullmessages.add(commit.fullmessage)
|
||||||
|
|
||||||
|
def appears_more_than_once(self, commit):
|
||||||
|
return commit.fullmessage in self.duplicates
|
||||||
|
|
||||||
|
def contains(self, commit):
|
||||||
|
return commit.fullmessage in self.unique_fullmessages
|
||||||
|
|
||||||
|
def size(self):
|
||||||
|
return len(self.commits)
|
||||||
|
|
||||||
|
|
||||||
|
def print_explanation(options, jbr):
|
||||||
|
verbose(options, f"Reading history from '{jbr.rootpath}'")
|
||||||
|
if options.path:
|
||||||
|
verbose(options, f"\t(only under '{options.path}')")
|
||||||
|
if options.limit > 0:
|
||||||
|
verbose(options, f"\t(up to '{options.limit}' commits)")
|
||||||
|
verbose(options, f"Searching for missing fixes in '{options.tobranch}' compared with '{options.frombranch}'")
|
||||||
|
|
||||||
|
|
||||||
|
def git_is_available():
|
||||||
|
p = None
|
||||||
|
try:
|
||||||
|
p = subprocess.run(["git", "--help"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return p is not None and p.returncode == 0
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
check_python_min_requirements()
|
||||||
|
options = Options()
|
||||||
|
jbr = GitRepo(options.jbrpath)
|
||||||
|
print_explanation(options, jbr)
|
||||||
|
|
||||||
|
commits_to_save = []
|
||||||
|
try:
|
||||||
|
log_from = jbr.log(options.frombranch, options.path, options.limit)
|
||||||
|
log_to = jbr.log(options.tobranch, options.path, options.limit)
|
||||||
|
history_from = History(log_from)
|
||||||
|
history_to = History(log_to)
|
||||||
|
|
||||||
|
verbose(options,
|
||||||
|
f"Read {history_from.size()} commits from '{options.frombranch}', {history_to.size()} from {options.tobranch}")
|
||||||
|
|
||||||
|
exclude_list = []
|
||||||
|
if options.exclude:
|
||||||
|
with open(options.exclude, "r") as exclude_file:
|
||||||
|
l = exclude_file.read().split('\n')
|
||||||
|
exclude_list = list(filter(lambda line: not line.startswith("#"), l))
|
||||||
|
|
||||||
|
warned = set()
|
||||||
|
for c in history_from.commits:
|
||||||
|
if c.message:
|
||||||
|
verbose(options, f"Looking for commit '{c.message}'")
|
||||||
|
if c.message in exclude_list:
|
||||||
|
verbose(options, "...nope, in exclude list")
|
||||||
|
continue
|
||||||
|
|
||||||
|
if not history_to.contains(c):
|
||||||
|
commits_to_save.append(c)
|
||||||
|
else:
|
||||||
|
if history_from.appears_more_than_once(c) and c.fullmessage not in warned:
|
||||||
|
# Not sure which of those seemingly identical commits are present in the target branch
|
||||||
|
error(f"Commit '{c.message}' appears more than once in branch '{options.frombranch}'. ")
|
||||||
|
warned.add(c.fullmessage)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
fatal("Interrupted")
|
||||||
|
|
||||||
|
print_out_commits(options, commits_to_save)
|
||||||
|
save_commits_to_file(commits_to_save, options)
|
||||||
|
if errors_count > 0:
|
||||||
|
error(f"{errors_count} error(s) generated to stderr. MANUAL CHECK OF COMMITS IS REQUIRED.")
|
||||||
|
|
||||||
|
|
||||||
|
def save_commits_to_file(commits_to_save, options):
|
||||||
|
if len(commits_to_save) > 0 and options.output:
|
||||||
|
print()
|
||||||
|
with open(options.output, "w") as out:
|
||||||
|
for i, c in enumerate(reversed(commits_to_save)):
|
||||||
|
print(f"# {c.sha}", file=out)
|
||||||
|
print(c.message, file=out)
|
||||||
|
|
||||||
|
|
||||||
|
def print_out_commits(options, commits_to_save):
|
||||||
|
if options.ishtml:
|
||||||
|
print("<html><body>")
|
||||||
|
print(f"<p><b>Commits on <code>{options.frombranch}</code>"
|
||||||
|
f" missing from <code>{options.tobranch}</code></b></p></h1>")
|
||||||
|
if len(commits_to_save) > 0:
|
||||||
|
for c in sorted(commits_to_save, key=lambda commit: commit.bugid):
|
||||||
|
if options.ishtml:
|
||||||
|
msg = c.message
|
||||||
|
bugurl = ""
|
||||||
|
if c.bugid:
|
||||||
|
if c.bugid.isnumeric():
|
||||||
|
bugurl = f"https://bugs.openjdk.org/browse/JDK-{c.bugid}"
|
||||||
|
elif c.bugid.startswith("JBR-"):
|
||||||
|
bugurl = f"https://youtrack.jetbrains.com/issue/{c.bugid}"
|
||||||
|
|
||||||
|
if len(bugurl) > 0:
|
||||||
|
msg = msg.replace(c.bugid, f"<a href='{bugurl}'>{c.bugid}</a>")
|
||||||
|
|
||||||
|
sha = f"<a href='https://jetbrains.team/p/jbre/repositories/jbr/commits?commits={c.sha}'>" \
|
||||||
|
f"{c.sha[0:8]}</a>"
|
||||||
|
print(f"<li>{msg} ({sha})</li>")
|
||||||
|
else:
|
||||||
|
print(f"{c.message} ({c.sha[0:8]})")
|
||||||
|
if options.ishtml:
|
||||||
|
print("</body></html>")
|
||||||
|
|
||||||
|
|
||||||
|
def check_python_min_requirements():
|
||||||
|
if sys.version_info < (3, 6):
|
||||||
|
fatal("Minimum version 3.6 is required to run this script")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
12
jb/generate-wakefield.sh
Executable file
12
jb/generate-wakefield.sh
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z "$1" ]]; then
|
||||||
|
SCANNER=wayland-scanner
|
||||||
|
else
|
||||||
|
SCANNER="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
"$SCANNER" client-header src/java.desktop/share/native/libwakefield/protocol/wakefield.xml src/java.desktop/unix/native/libawt_wlawt/wakefield-client-protocol.h
|
||||||
|
"$SCANNER" private-code src/java.desktop/share/native/libwakefield/protocol/wakefield.xml src/java.desktop/unix/native/libawt_wlawt/wakefield-client-protocol.c
|
||||||
1
jb/jbr-api.version
Normal file
1
jb/jbr-api.version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
1.0.2
|
||||||
230
jb/jdkdiff.py
Executable file
230
jb/jdkdiff.py
Executable file
@@ -0,0 +1,230 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import math
|
||||||
|
import os.path
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
|
def fatal(msg):
|
||||||
|
sys.stderr.write(f"[fatal] {msg}\n")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def verbose(options, *msg):
|
||||||
|
if options.verbose:
|
||||||
|
sys.stdout.write(f"[verbose] ")
|
||||||
|
sys.stdout.write(*msg)
|
||||||
|
sys.stdout.write('\n')
|
||||||
|
|
||||||
|
|
||||||
|
def first_line(str):
|
||||||
|
return "" if not str else str.splitlines()[0]
|
||||||
|
|
||||||
|
|
||||||
|
class Options:
|
||||||
|
def __init__(self):
|
||||||
|
ap = argparse.ArgumentParser(description="Show bugfixes differences between JBR and OpenJDK git repos",
|
||||||
|
epilog="Example: %(prog)s --jdk ./jdk11u/ --jbr ./JetBrainsRuntime/ --path src/hotspot --limit 200")
|
||||||
|
ap.add_argument('--jdk', dest='jdkpath', help='path to OpenJDK git repo', required=True)
|
||||||
|
ap.add_argument('--jbr', dest='jbrpath', help='path to JBR git repo', required=True)
|
||||||
|
ap.add_argument('--path', dest='path', help='limit to changes in this path (relative to git root)')
|
||||||
|
ap.add_argument('--limit', dest='limit', help='limit to this many log entries in --jdk repo', type=int, default=-1)
|
||||||
|
ap.add_argument('-o', dest="output_dir", help="save patches to this directory (created if necessary)")
|
||||||
|
ap.add_argument('-v', dest='verbose', help="verbose output", default=False, action='store_true')
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
if not os.path.isdir(args.jdkpath):
|
||||||
|
fatal(f"{args.jdkpath} not a directory")
|
||||||
|
|
||||||
|
if not os.path.isdir(args.jbrpath):
|
||||||
|
fatal(f"{args.jbrpath} not a directory")
|
||||||
|
|
||||||
|
if not git_is_available():
|
||||||
|
fatal("can't run git commands; make sure git is in PATH")
|
||||||
|
|
||||||
|
self.jdkpath = args.jdkpath
|
||||||
|
self.jbrpath = args.jbrpath
|
||||||
|
self.path = args.path
|
||||||
|
self.limit = args.limit
|
||||||
|
self.output_dir = args.output_dir
|
||||||
|
self.verbose = args.verbose
|
||||||
|
|
||||||
|
|
||||||
|
class GitRepo:
|
||||||
|
def __init__(self, rootpath):
|
||||||
|
self.rootpath = rootpath
|
||||||
|
|
||||||
|
def run_git_cmd(self, git_args):
|
||||||
|
args = ["git", "-C", self.rootpath]
|
||||||
|
args.extend(git_args)
|
||||||
|
# print(f"Runnig git cmd '{' '.join(args)}'")
|
||||||
|
p = subprocess.run(args, capture_output=True, text=True)
|
||||||
|
if p.returncode != 0:
|
||||||
|
fatal(f"git returned non-zero code in {self.rootpath} ({first_line(p.stderr)})")
|
||||||
|
return p.stdout
|
||||||
|
|
||||||
|
def save_git_cmd(self, fname, git_args):
|
||||||
|
args = ["git", "-C", self.rootpath]
|
||||||
|
args.extend(git_args)
|
||||||
|
# print(f"Runnig git cmd '{' '.join(args)}'")
|
||||||
|
with open(fname, "w") as stdout_file:
|
||||||
|
p = subprocess.run(args, stdout=stdout_file)
|
||||||
|
if p.returncode != 0:
|
||||||
|
fatal(f"git returned non-zero code in {self.rootpath} ({first_line(p.stderr)})")
|
||||||
|
|
||||||
|
def current_branch(self):
|
||||||
|
branch_name = self.run_git_cmd(["branch", "--show-current"]).strip()
|
||||||
|
return branch_name
|
||||||
|
|
||||||
|
def log(self, path=None, limit=None):
|
||||||
|
cmds = ["log", "--no-decorate"]
|
||||||
|
if limit:
|
||||||
|
cmds.extend(["-n", str(limit)])
|
||||||
|
if path:
|
||||||
|
cmds.append(path)
|
||||||
|
full_log = self.run_git_cmd(cmds)
|
||||||
|
return full_log
|
||||||
|
|
||||||
|
|
||||||
|
class Commit:
|
||||||
|
def __init__(self, lines):
|
||||||
|
self.sha = lines[0].split()[1]
|
||||||
|
self.message = ""
|
||||||
|
self.bugid = None
|
||||||
|
|
||||||
|
# Commit message starts after one blank line
|
||||||
|
read_message = False
|
||||||
|
for l in lines:
|
||||||
|
if read_message:
|
||||||
|
self.message += l + "\n"
|
||||||
|
if not read_message and l == "":
|
||||||
|
read_message = True
|
||||||
|
|
||||||
|
if self.message and self.message != "" and ":" in self.message:
|
||||||
|
maybe_bugid = self.message.split(":")[0].strip()
|
||||||
|
if 10 >= len(maybe_bugid) >= 4:
|
||||||
|
self.bugid = maybe_bugid
|
||||||
|
|
||||||
|
|
||||||
|
class History:
|
||||||
|
def __init__(self, log):
|
||||||
|
log_itr = iter(log.splitlines())
|
||||||
|
self.commits = []
|
||||||
|
commit_lines = []
|
||||||
|
for line in log_itr:
|
||||||
|
if line.startswith("commit ") and len(commit_lines) > 0:
|
||||||
|
commit = Commit(commit_lines)
|
||||||
|
self.commits.append(commit)
|
||||||
|
commit_lines = []
|
||||||
|
commit_lines.append(line)
|
||||||
|
|
||||||
|
if len(commit_lines) > 0:
|
||||||
|
commit = Commit(commit_lines)
|
||||||
|
self.commits.append(commit)
|
||||||
|
|
||||||
|
def contains(self, str):
|
||||||
|
return any(str in commit.message for commit in self.commits)
|
||||||
|
|
||||||
|
def size(self):
|
||||||
|
return len(self.commits)
|
||||||
|
|
||||||
|
|
||||||
|
def print_explanation(options, jdk, jbr):
|
||||||
|
verbose(options, f"Reading history from '{jdk.rootpath}' on branch '{jdk.current_branch()}'")
|
||||||
|
if options.path:
|
||||||
|
verbose(options, f"\t(only under '{options.path}')")
|
||||||
|
verbose(options, f"Searching for same fixes in '{jbr.rootpath}' on branch '{jbr.current_branch()}'")
|
||||||
|
|
||||||
|
|
||||||
|
def git_is_available():
|
||||||
|
p = None
|
||||||
|
try:
|
||||||
|
p = subprocess.run(["git", "--help"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return p is not None and p.returncode == 0
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
check_python_min_requirements()
|
||||||
|
|
||||||
|
options = Options()
|
||||||
|
|
||||||
|
jdk = GitRepo(options.jdkpath)
|
||||||
|
jbr = GitRepo(options.jbrpath)
|
||||||
|
|
||||||
|
print_explanation(options, jdk, jbr)
|
||||||
|
|
||||||
|
commits_to_save = []
|
||||||
|
try:
|
||||||
|
jdk_log = jdk.log(options.path, options.limit)
|
||||||
|
jdk_history = History(jdk_log)
|
||||||
|
|
||||||
|
jbr_log = jbr.log(options.path)
|
||||||
|
jbr_history = History(jbr_log)
|
||||||
|
|
||||||
|
verbose(options, f"Read {jdk_history.size()} commits in JDK, {jbr_history.size()} in JBR")
|
||||||
|
|
||||||
|
for c in jdk_history.commits:
|
||||||
|
if c.bugid:
|
||||||
|
verbose(options, f"Looking for bugfix for {c.bugid}")
|
||||||
|
if not jbr_history.contains(c.bugid):
|
||||||
|
commits_to_save.append(c)
|
||||||
|
print(f"[note] Fix for {c.bugid} not found in JBR ({jbr.rootpath})")
|
||||||
|
print(f" commit {c.sha}")
|
||||||
|
print(f" {first_line(c.message).strip()}")
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
fatal("Interrupted")
|
||||||
|
|
||||||
|
if len(commits_to_save) > 0 and options.output_dir:
|
||||||
|
print()
|
||||||
|
if not os.path.exists(options.output_dir):
|
||||||
|
verbose(options, f"Creating output directory {options.output_dir}")
|
||||||
|
os.makedirs(options.output_dir)
|
||||||
|
nzeroes = len(str(len(commits_to_save)))
|
||||||
|
for i, c in enumerate(reversed(commits_to_save)):
|
||||||
|
fname = os.path.join(options.output_dir, f"{str(i).zfill(nzeroes)}-{c.bugid}.patch")
|
||||||
|
print(f"[note] {c.bugid} saved as {fname}")
|
||||||
|
fname = os.path.abspath(fname)
|
||||||
|
jdk.save_git_cmd(fname, ["format-patch", "-1", c.sha, "--stdout"])
|
||||||
|
|
||||||
|
script_fname = os.path.join(options.output_dir, "apply.sh")
|
||||||
|
with open(script_fname, "w") as script_file:
|
||||||
|
print(apply_script_code.format(os.path.abspath(jbr.rootpath), os.path.abspath(options.output_dir)),
|
||||||
|
file=script_file)
|
||||||
|
print(f"[note] Execute 'bash {script_fname}' to apply patches to {jbr.rootpath}")
|
||||||
|
|
||||||
|
|
||||||
|
def check_python_min_requirements():
|
||||||
|
if sys.version_info < (3, 6):
|
||||||
|
fatal("Minimum version 3.6 is required to run this script")
|
||||||
|
|
||||||
|
|
||||||
|
apply_script_code = """
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
GITROOT={0}
|
||||||
|
PATCHROOT={1}
|
||||||
|
|
||||||
|
cd $PATCHROOT || exit 1
|
||||||
|
PATCHES=$(find $PATCHROOT -name '*.patch' | sort -n)
|
||||||
|
|
||||||
|
for P in $PATCHES; do
|
||||||
|
git -C $GITROOT am $P
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
mv "$P" "$P.failed"
|
||||||
|
echo "[ERROR] Patch $P did not apply cleanly. Try applying it manually."
|
||||||
|
echo "[NOTE] Execute this script to apply the remaining patches."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
mv "$P" "$P.done"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "[NOTE] Done applying patches; check $PATCHROOT for .patch and .patch.failed to see if all have been applied."
|
||||||
|
"""
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
1
jb/project/idea-project-files/jdk-clion/.idea/.name
generated
Normal file
1
jb/project/idea-project-files/jdk-clion/.idea/.name
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
JetBrainsRuntime
|
||||||
20
jb/project/idea-project-files/jdk-clion/.idea/vcs.xml
generated
Normal file
20
jb/project/idea-project-files/jdk-clion/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="IssueNavigationConfiguration">
|
||||||
|
<option name="links">
|
||||||
|
<list>
|
||||||
|
<IssueNavigationLink>
|
||||||
|
<option name="issueRegexp" value="(?:^|\s|\p{Punct})([A-Z]+\-\d+)(?=$|\s|\p{Punct})" />
|
||||||
|
<option name="linkRegexp" value="https://youtrack.jetbrains.com/issue/$1" />
|
||||||
|
</IssueNavigationLink>
|
||||||
|
<IssueNavigationLink>
|
||||||
|
<option name="issueRegexp" value="(?:^|\s|\p{Punct})(?:JDK-)?(\d{7})(?=$|\s|\p{Punct})" />
|
||||||
|
<option name="linkRegexp" value="https://bugs.openjdk.java.net/browse/JDK-$1" />
|
||||||
|
</IssueNavigationLink>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
11
jb/project/idea-project-files/modules.xml
Normal file
11
jb/project/idea-project-files/modules.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/jdk.iml" filepath="$PROJECT_DIR$/.idea/jdk.iml" />
|
||||||
|
###MODULE_IMLS###
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/test.iml" filepath="$PROJECT_DIR$/.idea/test.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
||||||
20
jb/project/idea-project-files/vcs.xml
Normal file
20
jb/project/idea-project-files/vcs.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="IssueNavigationConfiguration">
|
||||||
|
<option name="links">
|
||||||
|
<list>
|
||||||
|
<IssueNavigationLink>
|
||||||
|
<option name="issueRegexp" value="(?:^|\s|\p{Punct})([A-Z]+\-\d+)(?=$|\s|\p{Punct})" />
|
||||||
|
<option name="linkRegexp" value="https://youtrack.jetbrains.com/issue/$1" />
|
||||||
|
</IssueNavigationLink>
|
||||||
|
<IssueNavigationLink>
|
||||||
|
<option name="issueRegexp" value="(?:^|\s|\p{Punct})(?:JDK-)?(\d{7})(?=$|\s|\p{Punct})" />
|
||||||
|
<option name="linkRegexp" value="https://bugs.openjdk.java.net/browse/JDK-$1" />
|
||||||
|
</IssueNavigationLink>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
135
jb/project/java-gradle/build.gradle
Normal file
135
jb/project/java-gradle/build.gradle
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
apply plugin: 'java'
|
||||||
|
import org.gradle.internal.os.OperatingSystem
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
def test_jvm = {
|
||||||
|
if (project.hasProperty('jbsdkhome')) {
|
||||||
|
file(jbsdkhome + (OperatingSystem.current().isWindows()?"/bin/java.exe" : "/bin/java")).absolutePath
|
||||||
|
} else {
|
||||||
|
if (OperatingSystem.current().isMacOsX()) {
|
||||||
|
file('../../../build/macosx-x86_64-normal-server-release/images/jdk-bundle/jdk-11.0.4.jdk/Contents/Home/bin/java').absolutePath
|
||||||
|
} else if (OperatingSystem.current().isLinux()) {
|
||||||
|
file('../../../build/linux-x86_64-normal-server-release/images/jdk/bin/java').absolutePath
|
||||||
|
} else {
|
||||||
|
file('../../../build/windows-x86_64-normal-server-release/images/jdk/bin/java.exe').absolutePath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
testCompile('junit:junit:4.12'){
|
||||||
|
exclude group: 'org.hamcrest'
|
||||||
|
}
|
||||||
|
testCompile 'org.hamcrest:hamcrest-library:1.3'
|
||||||
|
testCompile 'net.java.dev.jna:jna:4.4.0'
|
||||||
|
testCompile 'com.twelvemonkeys.imageio:imageio-tiff:3.3.2'
|
||||||
|
testCompile 'org.apache.commons:commons-lang3:3.0'
|
||||||
|
}
|
||||||
|
|
||||||
|
def jdk_modules = ["java.base", "java.logging", "java.prefs",
|
||||||
|
"java.se.ee", "java.sql", "java.datatransfer",
|
||||||
|
"java.management", "java.rmi", "java.security.jgss",
|
||||||
|
"java.sql.rowset", "java.desktop", "java.management.rmi",
|
||||||
|
"java.scripting", "java.security.sasl", "java.transaction",
|
||||||
|
"java.instrument", "java.naming", "java.se",
|
||||||
|
"java.smartcardio", "java.xml.crypto"]
|
||||||
|
|
||||||
|
def jdk_class_dirs = []
|
||||||
|
|
||||||
|
jdk_modules.collect(jdk_class_dirs) {
|
||||||
|
new File("../../../src/" + it + "/share/classes")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (OperatingSystem.current().isMacOsX())
|
||||||
|
jdk_modules.collect(jdk_class_dirs) {
|
||||||
|
"../../../src/" + it + "/macosx/classes"
|
||||||
|
}
|
||||||
|
else if (OperatingSystem.current().isLinux()) {
|
||||||
|
jdk_modules.collect(jdk_class_dirs) {
|
||||||
|
"../../../src/" + it + "/solaris/classes"
|
||||||
|
}
|
||||||
|
jdk_modules.collect(jdk_class_dirs) {
|
||||||
|
"../../../src/" + it + "/unix/classes"
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
jdk_modules.collect(jdk_class_dirs) {
|
||||||
|
"../../../src/" + it + "/windows/classes"
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets.main.java.srcDirs = jdk_class_dirs
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
test {
|
||||||
|
java {
|
||||||
|
srcDir "../../../test/jdk/jbu"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
test.dependsOn.clear()
|
||||||
|
|
||||||
|
test.dependsOn tasks.compileTestJava
|
||||||
|
|
||||||
|
test {
|
||||||
|
systemProperty "jb.java2d.metal", "true"
|
||||||
|
systemProperty "testdata", file('../../../test/jdk/jbu/testdata').absolutePath
|
||||||
|
|
||||||
|
// Generate golden images for DroidFontTest and MixedTextTest
|
||||||
|
// systemProperty "gentestdata", ""
|
||||||
|
|
||||||
|
// Enable Java2D logging (https://confluence.jetbrains.com/display/JRE/Java2D+Rendering+Logging)
|
||||||
|
// systemProperty "sun.java2d.trace", "log"
|
||||||
|
// systemProperty "sun.java2d.trace", "log,pimpl"
|
||||||
|
|
||||||
|
outputs.upToDateWhen { false }
|
||||||
|
executable = test_jvm()
|
||||||
|
|
||||||
|
// Enable async/dtrace profiler
|
||||||
|
jvmArgs "-XX:+PreserveFramePointer"
|
||||||
|
// Enable native J2D logging (only in debug build)
|
||||||
|
// Can be turned on for J2D by adding "#define DEBUG 1" into jdk/src/share/native/sun/java2d/Trace.h
|
||||||
|
|
||||||
|
// environment 'J2D_TRACE_LEVEL', '4'
|
||||||
|
}
|
||||||
|
|
||||||
|
def buildDir = project.buildscript.sourceFile.parentFile.parentFile.parentFile.parentFile
|
||||||
|
|
||||||
|
def make_cmd = "make"
|
||||||
|
if (OperatingSystem.current().isWindows()) {
|
||||||
|
def cyg_make_cmd = new File("c:/cygwin64/bin/make.exe")
|
||||||
|
if (cyg_make_cmd.exists()) make_cmd = cyg_make_cmd.absolutePath
|
||||||
|
}
|
||||||
|
def test_run = false
|
||||||
|
task make_images {
|
||||||
|
doLast {
|
||||||
|
if (!test_run) {
|
||||||
|
def pb = new ProcessBuilder().command(make_cmd.toString(), "-C", buildDir.absolutePath, "images")
|
||||||
|
def proc = pb.redirectErrorStream(true).start()
|
||||||
|
proc.inputStream.eachLine { println it }
|
||||||
|
assert proc.waitFor() == 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task make_clean {
|
||||||
|
doLast {
|
||||||
|
def pb = new ProcessBuilder().command(make_cmd.toString(), "-C", buildDir.absolutePath, "clean")
|
||||||
|
def proc = pb.redirectErrorStream(true).start()
|
||||||
|
proc.inputStream.eachLine { println it }
|
||||||
|
assert proc.waitFor() == 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task run_test {
|
||||||
|
doLast {
|
||||||
|
test_run = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.cleanTest.dependsOn tasks.run_test
|
||||||
|
classes.dependsOn.clear()
|
||||||
|
classes.dependsOn tasks.make_images
|
||||||
|
tasks.cleanClasses.dependsOn tasks.make_clean
|
||||||
54
jb/project/tools/common/modules.list
Normal file
54
jb/project/tools/common/modules.list
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
java.base,
|
||||||
|
java.compiler,
|
||||||
|
java.datatransfer,
|
||||||
|
java.desktop,
|
||||||
|
java.instrument,
|
||||||
|
java.logging,
|
||||||
|
java.management,
|
||||||
|
java.management.rmi,
|
||||||
|
java.naming,
|
||||||
|
java.net.http,
|
||||||
|
java.prefs,
|
||||||
|
java.rmi,
|
||||||
|
java.scripting,
|
||||||
|
java.se,
|
||||||
|
java.security.jgss,
|
||||||
|
java.security.sasl,
|
||||||
|
java.smartcardio,
|
||||||
|
java.sql,
|
||||||
|
java.sql.rowset,
|
||||||
|
java.transaction.xa,
|
||||||
|
java.xml,
|
||||||
|
java.xml.crypto,
|
||||||
|
jdk.accessibility,
|
||||||
|
jdk.attach,
|
||||||
|
jdk.charsets,
|
||||||
|
jdk.compiler,
|
||||||
|
jdk.crypto.cryptoki,
|
||||||
|
jdk.crypto.ec,
|
||||||
|
jdk.dynalink,
|
||||||
|
jdk.httpserver,
|
||||||
|
jdk.internal.ed,
|
||||||
|
jdk.internal.le,
|
||||||
|
jdk.internal.vm.ci,
|
||||||
|
jdk.javadoc,
|
||||||
|
jdk.jdi,
|
||||||
|
jdk.jdwp.agent,
|
||||||
|
jdk.jfr,
|
||||||
|
jdk.jsobject,
|
||||||
|
jdk.localedata,
|
||||||
|
jdk.management,
|
||||||
|
jdk.management.agent,
|
||||||
|
jdk.management.jfr,
|
||||||
|
jdk.naming.dns,
|
||||||
|
jdk.naming.rmi,
|
||||||
|
jdk.net,
|
||||||
|
jdk.sctp,
|
||||||
|
jdk.security.auth,
|
||||||
|
jdk.security.jgss,
|
||||||
|
jdk.unsupported,
|
||||||
|
jdk.unsupported.desktop,
|
||||||
|
jdk.xml.dom,
|
||||||
|
jdk.zipfs,
|
||||||
|
jdk.hotspot.agent,
|
||||||
|
jdk.jcmd
|
||||||
188
jb/project/tools/common/scripts/common.sh
Normal file
188
jb/project/tools/common/scripts/common.sh
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
function check_bundle_type_maketest() {
|
||||||
|
# check whether last char is 't', if so remove it
|
||||||
|
if [ "${bundle_type: -1}" == "t" ] && [ "${bundle_type: -2}" != "ft" ]; then
|
||||||
|
bundle_type="${bundle_type%?}"
|
||||||
|
do_maketest=1
|
||||||
|
else
|
||||||
|
do_maketest=0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function getVersionProp() {
|
||||||
|
grep "^${1}" make/conf/version-numbers.conf | cut -d'=' -f2
|
||||||
|
}
|
||||||
|
|
||||||
|
DISABLE_WARNINGS_AS_ERRORS=""
|
||||||
|
while getopts ":iw?" o; do
|
||||||
|
case "${o}" in
|
||||||
|
i) INC_BUILD=1 ;;
|
||||||
|
w) DISABLE_WARNINGS_AS_ERRORS="--disable-warnings-as-errors" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
if [[ $# -lt 2 ]]; then
|
||||||
|
echo "Required at least two arguments: build_number bundle_type"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
build_number=$1
|
||||||
|
bundle_type=$2
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
architecture=${3:-x64} # aarch64 or x64
|
||||||
|
|
||||||
|
check_bundle_type_maketest
|
||||||
|
|
||||||
|
tag_prefix="jdk-"
|
||||||
|
VERSION_FEATURE=$(getVersionProp "DEFAULT_VERSION_FEATURE")
|
||||||
|
VERSION_INTERIM=$(getVersionProp "DEFAULT_VERSION_INTERIM")
|
||||||
|
VERSION_UPDATE=$(getVersionProp "DEFAULT_VERSION_UPDATE")
|
||||||
|
VERSION_PATCH=$(getVersionProp "DEFAULT_VERSION_PATCH")
|
||||||
|
[[ $VERSION_UPDATE = 0 ]] && JBSDK_VERSION="$VERSION_FEATURE" || JBSDK_VERSION="${VERSION_FEATURE}.${VERSION_INTERIM}.${VERSION_UPDATE}"
|
||||||
|
[[ $VERSION_PATCH = 0 ]] || JBSDK_VERSION="${VERSION_FEATURE}.${VERSION_INTERIM}.${VERSION_UPDATE}.${VERSION_PATCH}"
|
||||||
|
echo "##teamcity[setParameter name='env.JBSDK_VERSION' value='${JBSDK_VERSION}']"
|
||||||
|
OPENJDK_TAG=$(git tag -l | grep "$tag_prefix$JBSDK_VERSION" | grep -v ga | sort -t "-" -k 2 -g | tail -n 1)
|
||||||
|
JDK_BUILD_NUMBER=${JDK_BUILD_NUMBER:=$(echo $OPENJDK_TAG | awk -F "-|[+]" '{print $3}')}
|
||||||
|
[ -z $JDK_BUILD_NUMBER ] && JDK_BUILD_NUMBER=1
|
||||||
|
re='^[0-9]+$'
|
||||||
|
if ! [[ $JDK_BUILD_NUMBER =~ $re ]] ; then
|
||||||
|
echo "error: JDK_BUILD_NUMBER Not a number: $JDK_BUILD_NUMBER"
|
||||||
|
JDK_BUILD_NUMBER=1
|
||||||
|
fi
|
||||||
|
echo "##teamcity[setParameter name='env.JDK_UPDATE_NUMBER' value='${JDK_BUILD_NUMBER}']"
|
||||||
|
|
||||||
|
VENDOR_NAME="JetBrains s.r.o."
|
||||||
|
VENDOR_VERSION_STRING="JBR-${JBSDK_VERSION}+${JDK_BUILD_NUMBER}-${build_number}"
|
||||||
|
[ -z "$bundle_type" ] || VENDOR_VERSION_STRING="${VENDOR_VERSION_STRING}-${bundle_type}"
|
||||||
|
|
||||||
|
do_reset_changes=0
|
||||||
|
do_reset_dcevm=0
|
||||||
|
HEAD_REVISION=0
|
||||||
|
|
||||||
|
STATIC_CONF_ARGS=""
|
||||||
|
common_conf_props_file="jb/project/tools/common/static_conf_args.txt"
|
||||||
|
if [[ -f "$common_conf_props_file" ]]; then
|
||||||
|
STATIC_CONF_ARGS=$(<$common_conf_props_file)
|
||||||
|
fi
|
||||||
|
OS_NAME=$(uname -s)
|
||||||
|
# Enable reproducible builds
|
||||||
|
TZ=UTC
|
||||||
|
export TZ
|
||||||
|
SOURCE_DATE_EPOCH="$(git log -1 --pretty=%ct)"
|
||||||
|
export SOURCE_DATE_EPOCH
|
||||||
|
|
||||||
|
COPYRIGHT_YEAR=""
|
||||||
|
BUILD_TIME=""
|
||||||
|
TOUCH_TIME=""
|
||||||
|
REPRODUCIBLE_TAR_OPTS=""
|
||||||
|
case "$OS_NAME" in
|
||||||
|
Linux)
|
||||||
|
COPYRIGHT_YEAR="$(date --utc --date=@$SOURCE_DATE_EPOCH +%Y)"
|
||||||
|
BUILD_TIME="$(date --utc --date=@$SOURCE_DATE_EPOCH +%F)"
|
||||||
|
REPRODUCIBLE_TAR_OPTS="--mtime=@$SOURCE_DATE_EPOCH --owner=0 --group=0 --numeric-owner --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime"
|
||||||
|
;;
|
||||||
|
CYGWIN*)
|
||||||
|
COPYRIGHT_YEAR="$(date --utc --date=@$SOURCE_DATE_EPOCH +%Y)"
|
||||||
|
BUILD_TIME="$(date --utc --date=@$SOURCE_DATE_EPOCH +%F)"
|
||||||
|
REPRODUCIBLE_TAR_OPTS="--mtime=@$SOURCE_DATE_EPOCH --owner=0 --group=0 --numeric-owner --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime"
|
||||||
|
;;
|
||||||
|
Darwin)
|
||||||
|
COPYRIGHT_YEAR="$(date -u -r $SOURCE_DATE_EPOCH +%Y)"
|
||||||
|
BUILD_TIME="$(date -u -r $SOURCE_DATE_EPOCH +%F)"
|
||||||
|
TOUCH_TIME="$(date -u -r $SOURCE_DATE_EPOCH +%Y%m%d%H%M.%S)"
|
||||||
|
REPRODUCIBLE_TAR_OPTS="--uid 0 --gid 0 --numeric-owner"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS="--with-native-debug-symbols=zipped"
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "nomodft" ]; then
|
||||||
|
WITH_BUNDLED_FREETYPE="--with-freetype=bundled"
|
||||||
|
else
|
||||||
|
WITH_BUNDLED_FREETYPE=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
REPRODUCIBLE_BUILD_OPTS="--with-source-date=$SOURCE_DATE_EPOCH
|
||||||
|
--with-hotspot-build-time=$BUILD_TIME
|
||||||
|
--with-copyright-year=$COPYRIGHT_YEAR
|
||||||
|
--disable-absolute-paths-in-output
|
||||||
|
--with-build-user=builduser"
|
||||||
|
|
||||||
|
function zip_native_debug_symbols() {
|
||||||
|
image_bundle_path=$(echo $1 | cut -d"/" -f-4)
|
||||||
|
jdk_name=$(echo $1 | cut -d"/" -f5)
|
||||||
|
jbr_diz_name=$2
|
||||||
|
|
||||||
|
[ -d "dizfiles" ] && rm -rf dizfiles
|
||||||
|
mkdir dizfiles
|
||||||
|
|
||||||
|
rsync_target="../../../../dizfiles"
|
||||||
|
[ -z "$jdk_name" ] && rsync_target=$rsync_target"/"$jbr_diz_name
|
||||||
|
(cd $image_bundle_path && find . -name '*.diz' -exec rsync -R {} $rsync_target \;)
|
||||||
|
[ ! -z "$jdk_name" ] && mv dizfiles/$jdk_name dizfiles/$jbr_diz_name
|
||||||
|
|
||||||
|
(cd dizfiles && find $jbr_diz_name -print0 | COPYFILE_DISABLE=1 \
|
||||||
|
tar --no-recursion --null -T - -czf ../"$jbr_diz_name".tar.gz) || do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_exit() {
|
||||||
|
exit_code=$1
|
||||||
|
[ $do_reset_changes -eq 1 ] && git checkout HEAD jb/project/tools/common/modules.list src/java.desktop/share/classes/module-info.java
|
||||||
|
if [ $do_reset_dcevm -eq 1 ]; then
|
||||||
|
[ ! -z $HEAD_REVISION ] && git reset --hard $HEAD_REVISION
|
||||||
|
fi
|
||||||
|
exit "$exit_code"
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_jsdk_mods() {
|
||||||
|
__jsdk=$1
|
||||||
|
__jcef_mods=$2
|
||||||
|
__orig_jsdk_mods=$3
|
||||||
|
__updated_jsdk_mods=$4
|
||||||
|
|
||||||
|
# re-create java.desktop.jmod with updated module-info.class
|
||||||
|
tmp=.java.desktop.$$.tmp
|
||||||
|
mkdir "$tmp" || exit $?
|
||||||
|
"$__jsdk"/bin/jmod extract --dir "$tmp" "$__orig_jsdk_mods"/java.desktop.jmod || exit $?
|
||||||
|
"$__jsdk"/bin/javac \
|
||||||
|
--patch-module java.desktop="$__orig_jsdk_mods"/java.desktop.jmod \
|
||||||
|
--module-path "$__jcef_mods" -d "$tmp"/classes src/java.desktop/share/classes/module-info.java || exit $?
|
||||||
|
"$__jsdk"/bin/jmod \
|
||||||
|
create --class-path "$tmp"/classes --config "$tmp"/conf --header-files "$tmp"/include --legal-notice "$tmp"/legal --libs "$tmp"/lib \
|
||||||
|
java.desktop.jmod || exit $?
|
||||||
|
mv java.desktop.jmod "$__updated_jsdk_mods" || exit $?
|
||||||
|
rm -rf "$tmp"
|
||||||
|
|
||||||
|
# re-create java.base.jmod with updated hashes
|
||||||
|
tmp=.java.base.$$.tmp
|
||||||
|
mkdir "$tmp" || exit $?
|
||||||
|
hash_modules=$("$__jsdk"/bin/jmod describe "$__orig_jsdk_mods"/java.base.jmod | grep hashes | awk '{print $2}' | tr '\n' '|' | sed s/\|$//) || exit $?
|
||||||
|
"$__jsdk"/bin/jmod extract --dir "$tmp" "$__orig_jsdk_mods"/java.base.jmod || exit $?
|
||||||
|
rm "$__updated_jsdk_mods"/java.base.jmod || exit $? # temp exclude from path
|
||||||
|
"$__jsdk"/bin/jmod \
|
||||||
|
create --module-path "$__updated_jsdk_mods" --hash-modules "$hash_modules" \
|
||||||
|
--class-path "$tmp"/classes --cmds "$tmp"/bin --config "$tmp"/conf --header-files "$tmp"/include --legal-notice "$tmp"/legal --libs "$tmp"/lib \
|
||||||
|
java.base.jmod || exit $?
|
||||||
|
mv java.base.jmod "$__updated_jsdk_mods" || exit $?
|
||||||
|
rm -rf "$tmp"
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_mods_list() {
|
||||||
|
__mods=$1
|
||||||
|
echo $(ls $__mods) | sed s/\.jmod/,/g | sed s/,$//g | sed s/' '//g
|
||||||
|
}
|
||||||
|
|
||||||
|
function copy_jmods() {
|
||||||
|
__mods_list=$1
|
||||||
|
__jmods_from=$2
|
||||||
|
__jmods_to=$3
|
||||||
|
|
||||||
|
mkdir -p $__jmods_to
|
||||||
|
|
||||||
|
echo "${__mods_list}," | while read -d, mod; do cp $__jmods_from/$mod.jmod $__jmods_to/; done
|
||||||
|
}
|
||||||
4
jb/project/tools/common/static_conf_args.txt
Normal file
4
jb/project/tools/common/static_conf_args.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
--with-vendor-url=https://www.jetbrains.com/
|
||||||
|
--with-vendor-bug-url=https://youtrack.jetbrains.com/issues/JBR
|
||||||
|
--with-vendor-vm-bug-url=https://youtrack.jetbrains.com/issues/JBR
|
||||||
|
|
||||||
173
jb/project/tools/linux/scripts/mkimages_aarch64.sh
Executable file
173
jb/project/tools/linux/scripts/mkimages_aarch64.sh
Executable file
@@ -0,0 +1,173 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# This script makes test-image along with JDK images when bundle_type is set to "jcef".
|
||||||
|
# If the character 't' is added at the end of bundle_type then it also makes test-image along with JDK images.
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument
|
||||||
|
# to configure
|
||||||
|
# By default JDK_BUILD_NUMBER is set zero
|
||||||
|
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
|
||||||
|
# By default JCEF binaries should be located in ./jcef_linux_aarch64
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
JCEF_PATH=${JCEF_PATH:=./jcef_linux_aarch64}
|
||||||
|
|
||||||
|
function do_configure {
|
||||||
|
sh configure \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="$VENDOR_NAME" \
|
||||||
|
--with-vendor-version-string="$VENDOR_VERSION_STRING" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build="$JDK_BUILD_NUMBER" \
|
||||||
|
--with-version-opt=b"$build_number" \
|
||||||
|
--with-boot-jdk="$BOOT_JDK" \
|
||||||
|
--enable-cds=yes \
|
||||||
|
--with-gtk-shell1-protocol=/gtk-shell.xml \
|
||||||
|
--with-vulkan \
|
||||||
|
$DISABLE_WARNINGS_AS_ERRORS \
|
||||||
|
$STATIC_CONF_ARGS \
|
||||||
|
$REPRODUCIBLE_BUILD_OPTS \
|
||||||
|
$WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS \
|
||||||
|
$WITH_BUNDLED_FREETYPE \
|
||||||
|
|| do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_musl {
|
||||||
|
libc=$(ldd /bin/ls | grep 'musl' | head -1 | cut -d ' ' -f1)
|
||||||
|
if [ -z $libc ]; then
|
||||||
|
# This is not Musl, return 1 == false
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_image_bundle {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
__modules_path=$3
|
||||||
|
__modules=$4
|
||||||
|
|
||||||
|
libc_type_suffix=''
|
||||||
|
fastdebug_infix=''
|
||||||
|
__cds_opt=''
|
||||||
|
|
||||||
|
if is_musl; then libc_type_suffix='musl-' ; fi
|
||||||
|
__cds_opt="--generate-cds-archive"
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
JBR=${__bundle_name}-${JBSDK_VERSION}-linux-${libc_type_suffix}aarch64-${fastdebug_infix}b${build_number}
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-linux-${libc_type_suffix}aarch64-${fastdebug_infix:-}b${build_number}
|
||||||
|
|
||||||
|
echo Running jlink....
|
||||||
|
[ -d "$IMAGES_DIR"/"$__root_dir" ] && rm -rf "${IMAGES_DIR:?}"/"$__root_dir"
|
||||||
|
$JSDK/bin/jlink \
|
||||||
|
--module-path "$__modules_path" --no-man-pages --compress=2 \
|
||||||
|
$__cds_opt --add-modules "$__modules" --output "$IMAGES_DIR"/"$__root_dir"
|
||||||
|
|
||||||
|
grep -v "^JAVA_VERSION" "$JSDK"/release | grep -v "^MODULES" >> "$IMAGES_DIR"/"$__root_dir"/release
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
sed 's/JBR/JBRSDK/g' "$IMAGES_DIR"/"$__root_dir"/release > release
|
||||||
|
mv release "$IMAGES_DIR"/"$__root_dir"/release
|
||||||
|
cp $IMAGES_DIR/jdk/lib/src.zip "$IMAGES_DIR"/"$__root_dir"/lib
|
||||||
|
copy_jmods "$__modules" "$__modules_path" "$IMAGES_DIR"/"$__root_dir"/jmods
|
||||||
|
zip_native_debug_symbols $IMAGES_DIR/jdk "${JBR}_diz"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# jmod does not preserve file permissions (JDK-8173610)
|
||||||
|
[ -f "$IMAGES_DIR"/"$__root_dir"/lib/jcef_helper ] && chmod a+x "$IMAGES_DIR"/"$__root_dir"/lib/jcef_helper
|
||||||
|
[ -f "$IMAGES_DIR"/"$__root_dir"/lib/cef_server ] && chmod a+x "$IMAGES_DIR"/"$__root_dir"/lib/cef_server
|
||||||
|
|
||||||
|
echo Creating "$JBR".tar.gz ...
|
||||||
|
|
||||||
|
(cd "$IMAGES_DIR" &&
|
||||||
|
find "$__root_dir" -print0 | LC_ALL=C sort -z | \
|
||||||
|
tar $REPRODUCIBLE_TAR_OPTS \
|
||||||
|
--no-recursion --null -T - -cf "$JBR".tar) || do_exit $?
|
||||||
|
mv "$IMAGES_DIR"/"$JBR".tar ./"$JBR".tar
|
||||||
|
[ -f "$JBR".tar.gz ] && rm "$JBR.tar.gz"
|
||||||
|
touch -c -d "@$SOURCE_DATE_EPOCH" "$JBR".tar
|
||||||
|
gzip "$JBR".tar || do_exit $?
|
||||||
|
rm -rf "${IMAGES_DIR:?}"/"$__root_dir"
|
||||||
|
}
|
||||||
|
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
RELEASE_NAME=linux-aarch64-server-release
|
||||||
|
|
||||||
|
jbr_name_postfix=""
|
||||||
|
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
do_reset_changes=1
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
do_maketest=1
|
||||||
|
;;
|
||||||
|
"nomod" | "")
|
||||||
|
bundle_type=""
|
||||||
|
;;
|
||||||
|
"nomodft" | "")
|
||||||
|
jbr_name_postfix="_ft"
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
do_reset_changes=1
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=linux-aarch64-server-fastdebug
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "${INC_BUILD:-}" ]; then
|
||||||
|
do_configure || do_exit $?
|
||||||
|
make clean CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
fi
|
||||||
|
make images CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
JSDK=$IMAGES_DIR/jdk
|
||||||
|
JSDK_MODS_DIR=$IMAGES_DIR/jmods
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
echo Fixing permissions
|
||||||
|
chmod -R a+r $JSDK
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module_aarch64.patch || do_exit $?
|
||||||
|
update_jsdk_mods $JSDK $JCEF_PATH/jmods $JSDK/jmods $JSDK_MODS_DIR || do_exit $?
|
||||||
|
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||||
|
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create runtime image bundle
|
||||||
|
modules=$(xargs < jb/project/tools/common/modules.list | sed s/" "//g) || do_exit $?
|
||||||
|
create_image_bundle "jbr${jbr_name_postfix}" "jbr" $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
# create sdk image bundle
|
||||||
|
modules=$(cat $JSDK/release | grep MODULES | sed s/MODULES=//g | sed s/' '/','/g | sed s/\"//g | sed s/\\n//g) || do_exit $?
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
modules=${modules},$(get_mods_list "$JCEF_PATH"/jmods)
|
||||||
|
fi
|
||||||
|
create_image_bundle "$JBRSDK_BUNDLE${jbr_name_postfix}" $JBRSDK_BUNDLE $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
JBRSDK_TEST=${JBRSDK_BUNDLE}-${JBSDK_VERSION}-linux-${libc_type_suffix}test-aarch64-b${build_number}
|
||||||
|
echo Creating "$JBRSDK_TEST" ...
|
||||||
|
[ $do_reset_changes -eq 1 ] && git checkout HEAD jb/project/tools/common/modules.list src/java.desktop/share/classes/module-info.java
|
||||||
|
make test-image CONF=$RELEASE_NAME JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
tar -pcf "$JBRSDK_TEST".tar -C $IMAGES_DIR --exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
[ -f "$JBRSDK_TEST.tar.gz" ] && rm "$JBRSDK_TEST.tar.gz"
|
||||||
|
gzip "$JBRSDK_TEST".tar || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
190
jb/project/tools/linux/scripts/mkimages_x64.sh
Executable file
190
jb/project/tools/linux/scripts/mkimages_x64.sh
Executable file
@@ -0,0 +1,190 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# This script makes test-image along with JDK images when bundle_type is set to "jcef".
|
||||||
|
# If the character 't' is added at the end of bundle_type then it also makes test-image along with JDK images.
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument
|
||||||
|
# to configure
|
||||||
|
# By default JDK_BUILD_NUMBER is set zero
|
||||||
|
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
|
||||||
|
# By default JCEF binaries should be located in ./jcef_linux_x64
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
JCEF_PATH=${JCEF_PATH:=./jcef_linux_x64}
|
||||||
|
|
||||||
|
function do_configure {
|
||||||
|
if is_musl; then
|
||||||
|
LINUX_TARGET=""
|
||||||
|
else
|
||||||
|
LINUX_TARGET="\
|
||||||
|
--build=x86_64-unknown-linux-gnu \
|
||||||
|
--openjdk-target=x86_64-unknown-linux-gnu"
|
||||||
|
fi
|
||||||
|
sh configure \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="$VENDOR_NAME" \
|
||||||
|
--with-vendor-version-string="$VENDOR_VERSION_STRING" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build="$JDK_BUILD_NUMBER" \
|
||||||
|
--with-version-opt=b"$build_number" \
|
||||||
|
--with-boot-jdk="$BOOT_JDK" \
|
||||||
|
--enable-cds=yes \
|
||||||
|
--with-gtk-shell1-protocol=/gtk-shell.xml \
|
||||||
|
--with-vulkan \
|
||||||
|
$LINUX_TARGET \
|
||||||
|
$DISABLE_WARNINGS_AS_ERRORS \
|
||||||
|
$STATIC_CONF_ARGS \
|
||||||
|
$REPRODUCIBLE_BUILD_OPTS \
|
||||||
|
$WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS \
|
||||||
|
$WITH_BUNDLED_FREETYPE \
|
||||||
|
|| do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_musl {
|
||||||
|
libc=$(ldd /bin/ls | grep 'musl' | head -1 | cut -d ' ' -f1)
|
||||||
|
if [ -z $libc ]; then
|
||||||
|
# This is not Musl, return 1 == false
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_image_bundle {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
__modules_path=$3
|
||||||
|
__modules=$4
|
||||||
|
|
||||||
|
libc_type_suffix=''
|
||||||
|
fastdebug_infix=''
|
||||||
|
__cds_opt=''
|
||||||
|
|
||||||
|
if is_musl; then
|
||||||
|
libc_type_suffix='musl-'
|
||||||
|
else
|
||||||
|
LINUX_TARGET="\
|
||||||
|
--build=x86_64-unknown-linux-gnu \
|
||||||
|
--openjdk-target=x86_64-unknown-linux-gnu"
|
||||||
|
fi
|
||||||
|
__cds_opt="--generate-cds-archive"
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
JBR=${__bundle_name}-${JBSDK_VERSION}-linux-${libc_type_suffix}x64-${fastdebug_infix}b${build_number}
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-linux-${libc_type_suffix}x64-${fastdebug_infix:-}b${build_number}
|
||||||
|
|
||||||
|
echo Running jlink....
|
||||||
|
[ -d "$IMAGES_DIR"/"$__root_dir" ] && rm -rf "${IMAGES_DIR:?}"/"$__root_dir"
|
||||||
|
$JSDK/bin/jlink \
|
||||||
|
--module-path "$__modules_path" --no-man-pages --compress=2 \
|
||||||
|
$__cds_opt --add-modules "$__modules" --output "$IMAGES_DIR"/"$__root_dir"
|
||||||
|
|
||||||
|
grep -v "^JAVA_VERSION" "$JSDK"/release | grep -v "^MODULES" >> "$IMAGES_DIR"/"$__root_dir"/release
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
sed 's/JBR/JBRSDK/g' "$IMAGES_DIR"/"$__root_dir"/release > release
|
||||||
|
mv release "$IMAGES_DIR"/"$__root_dir"/release
|
||||||
|
cp $IMAGES_DIR/jdk/lib/src.zip "$IMAGES_DIR"/"$__root_dir"/lib
|
||||||
|
copy_jmods "$__modules" "$__modules_path" "$IMAGES_DIR"/"$__root_dir"/jmods
|
||||||
|
zip_native_debug_symbols $IMAGES_DIR/jdk "${JBR}_diz"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# jmod does not preserve file permissions (JDK-8173610)
|
||||||
|
[ -f "$IMAGES_DIR"/"$__root_dir"/lib/jcef_helper ] && chmod a+x "$IMAGES_DIR"/"$__root_dir"/lib/jcef_helper
|
||||||
|
[ -f "$IMAGES_DIR"/"$__root_dir"/lib/cef_server ] && chmod a+x "$IMAGES_DIR"/"$__root_dir"/lib/cef_server
|
||||||
|
|
||||||
|
echo Creating "$JBR".tar.gz ...
|
||||||
|
|
||||||
|
(cd "$IMAGES_DIR" &&
|
||||||
|
find "$__root_dir" -print0 | LC_ALL=C sort -z | \
|
||||||
|
tar $REPRODUCIBLE_TAR_OPTS \
|
||||||
|
--no-recursion --null -T - -cf "$JBR".tar) || do_exit $?
|
||||||
|
mv "$IMAGES_DIR"/"$JBR".tar ./"$JBR".tar
|
||||||
|
[ -f "$JBR".tar.gz ] && rm "$JBR.tar.gz"
|
||||||
|
touch -c -d "@$SOURCE_DATE_EPOCH" "$JBR".tar
|
||||||
|
gzip "$JBR".tar || do_exit $?
|
||||||
|
rm -rf "${IMAGES_DIR:?}"/"$__root_dir"
|
||||||
|
}
|
||||||
|
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
RELEASE_NAME=linux-x86_64-server-release
|
||||||
|
|
||||||
|
jbr_name_postfix=""
|
||||||
|
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
do_reset_changes=1
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
jbrsdk_name_postfix="_${bundle_type}"
|
||||||
|
do_maketest=1
|
||||||
|
;;
|
||||||
|
"nomod" | "")
|
||||||
|
bundle_type=""
|
||||||
|
jbrsdk_name_postfix="_${bundle_type}"
|
||||||
|
;;
|
||||||
|
"nomodft" | "")
|
||||||
|
jbr_name_postfix="_ft"
|
||||||
|
jbrsdk_name_postfix="_ft"
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
do_reset_changes=1
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=linux-x86_64-server-fastdebug
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "${INC_BUILD:-}" ]; then
|
||||||
|
do_configure || do_exit $?
|
||||||
|
make clean CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
fi
|
||||||
|
make images CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
JSDK=$IMAGES_DIR/jdk
|
||||||
|
JSDK_MODS_DIR=$IMAGES_DIR/jmods
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
echo Fixing permissions
|
||||||
|
chmod -R a+r $JSDK
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
update_jsdk_mods $JSDK $JCEF_PATH/jmods $JSDK/jmods $JSDK_MODS_DIR || do_exit $?
|
||||||
|
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||||
|
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create runtime image bundle
|
||||||
|
modules=$(xargs < jb/project/tools/common/modules.list | sed s/" "//g) || do_exit $?
|
||||||
|
create_image_bundle "jbr${jbr_name_postfix}" "jbr" $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
# create sdk image bundle
|
||||||
|
modules=$(cat $JSDK/release | grep MODULES | sed s/MODULES=//g | sed s/' '/','/g | sed s/\"//g | sed s/\\n//g) || do_exit $?
|
||||||
|
if [ "$bundle_type" == "jcef" ]|| [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
modules=${modules},$(get_mods_list "$JCEF_PATH"/jmods)
|
||||||
|
fi
|
||||||
|
create_image_bundle "$JBRSDK_BUNDLE${jbr_name_postfix}" $JBRSDK_BUNDLE $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
JBRSDK_TEST=${JBRSDK_BUNDLE}-${JBSDK_VERSION}-linux-${libc_type_suffix}test-x64-b${build_number}
|
||||||
|
echo Creating "$JBRSDK_TEST" ...
|
||||||
|
[ $do_reset_changes -eq 1 ] && git checkout HEAD jb/project/tools/common/modules.list src/java.desktop/share/classes/module-info.java
|
||||||
|
make test-image CONF=$RELEASE_NAME JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
tar -pcf "$JBRSDK_TEST".tar -C $IMAGES_DIR --exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
[ -f "$JBRSDK_TEST.tar.gz" ] && rm "$JBRSDK_TEST.tar.gz"
|
||||||
|
gzip "$JBRSDK_TEST".tar || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
146
jb/project/tools/linux/scripts/mkimages_x86.sh
Executable file
146
jb/project/tools/linux/scripts/mkimages_x86.sh
Executable file
@@ -0,0 +1,146 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
function do_configure {
|
||||||
|
linux32 bash configure \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="$VENDOR_NAME" \
|
||||||
|
--with-vendor-version-string="$VENDOR_VERSION_STRING" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build="$JDK_BUILD_NUMBER" \
|
||||||
|
--with-version-opt=b"$build_number" \
|
||||||
|
--with-boot-jdk="$BOOT_JDK" \
|
||||||
|
$STATIC_CONF_ARGS \
|
||||||
|
--enable-cds=yes \
|
||||||
|
$DISABLE_WARNINGS_AS_ERRORS \
|
||||||
|
$REPRODUCIBLE_BUILD_OPTS \
|
||||||
|
$WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS \
|
||||||
|
|| do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_musl {
|
||||||
|
libc=$(ldd /bin/ls | grep 'musl' | head -1 | cut -d ' ' -f1)
|
||||||
|
if [ -z $libc ]; then
|
||||||
|
# This is not Musl, return 1 == false
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_image_bundle {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
__modules_path=$3
|
||||||
|
__modules=$4
|
||||||
|
|
||||||
|
libc_type_suffix=''
|
||||||
|
fastdebug_infix=''
|
||||||
|
__cds_opt=''
|
||||||
|
|
||||||
|
if is_musl; then libc_type_suffix='musl-' ; fi
|
||||||
|
__cds_opt="--generate-cds-archive"
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
JBR=${__bundle_name}-${JBSDK_VERSION}-linux-${libc_type_suffix}x86-${fastdebug_infix}b${build_number}
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-linux-${libc_type_suffix}x86-${fastdebug_infix:-}b${build_number}
|
||||||
|
|
||||||
|
echo Running jlink....
|
||||||
|
[ -d "$IMAGES_DIR"/"$__root_dir" ] && rm -rf "${IMAGES_DIR:?}"/"$__root_dir"
|
||||||
|
$JSDK/bin/jlink \
|
||||||
|
--module-path "$__modules_path" --no-man-pages --compress=2 \
|
||||||
|
$__cds_opt --add-modules "$__modules" --output "$IMAGES_DIR"/"$__root_dir"
|
||||||
|
|
||||||
|
grep -v "^JAVA_VERSION" "$JSDK"/release | grep -v "^MODULES" >> "$IMAGES_DIR"/"$__root_dir"/release
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
sed 's/JBR/JBRSDK/g' "$IMAGES_DIR"/"$__root_dir"/release > release
|
||||||
|
mv release "$IMAGES_DIR"/"$__root_dir"/release
|
||||||
|
cp $IMAGES_DIR/jdk/lib/src.zip "$IMAGES_DIR"/"$__root_dir"/lib
|
||||||
|
copy_jmods "$__modules" "$__modules_path" "$IMAGES_DIR"/"$__root_dir"/jmods
|
||||||
|
zip_native_debug_symbols $IMAGES_DIR/jdk "${JBR}_diz"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# jmod does not preserve file permissions (JDK-8173610)
|
||||||
|
[ -f "$IMAGES_DIR"/"$__root_dir"/lib/jcef_helper ] && chmod a+x "$IMAGES_DIR"/"$__root_dir"/lib/jcef_helper
|
||||||
|
|
||||||
|
echo Creating "$JBR".tar.gz ...
|
||||||
|
|
||||||
|
(cd "$IMAGES_DIR" &&
|
||||||
|
find "$__root_dir" -print0 | LC_ALL=C sort -z | \
|
||||||
|
tar $REPRODUCIBLE_TAR_OPTS \
|
||||||
|
--no-recursion --null -T - -cf "$JBR".tar) || do_exit $?
|
||||||
|
mv "$IMAGES_DIR"/"$JBR".tar ./"$JBR".tar
|
||||||
|
[ -f "$JBR".tar.gz ] && rm "$JBR.tar.gz"
|
||||||
|
touch -c -d "@$SOURCE_DATE_EPOCH" "$JBR".tar
|
||||||
|
gzip "$JBR".tar || do_exit $?
|
||||||
|
rm -rf "${IMAGES_DIR:?}"/"$__root_dir"
|
||||||
|
}
|
||||||
|
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
RELEASE_NAME=linux-x86-server-release
|
||||||
|
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
echo "not implemented" && do_exit 1
|
||||||
|
;;
|
||||||
|
"nomod" | "")
|
||||||
|
bundle_type=""
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
do_reset_changes=1
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=linux-x86-server-fastdebug
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "${INC_BUILD:-}" ]; then
|
||||||
|
do_configure || do_exit $?
|
||||||
|
make clean CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
fi
|
||||||
|
make images CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
JSDK=$IMAGES_DIR/jdk
|
||||||
|
JSDK_MODS_DIR=$IMAGES_DIR/jmods
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
echo Fixing permissions
|
||||||
|
chmod -R a+r $JSDK
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
else
|
||||||
|
jbr_name_postfix=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create runtime image bundle
|
||||||
|
modules=$(grep -v "jdk.internal.vm" jb/project/tools/common/modules.list | xargs | sed s/" "//g) || do_exit $?
|
||||||
|
create_image_bundle "jbr${jbr_name_postfix}" "jbr" $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
# create sdk image bundle
|
||||||
|
modules=$(cat $JSDK/release | grep MODULES | sed s/MODULES=//g | sed s/' '/','/g | sed s/\"//g | sed s/\\n//g) || do_exit $?
|
||||||
|
create_image_bundle "$JBRSDK_BUNDLE${jbr_name_postfix}" $JBRSDK_BUNDLE $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
JBRSDK_TEST=${JBRSDK_BUNDLE}-${JBSDK_VERSION}-linux-${libc_type_suffix}test-x86-b${build_number}
|
||||||
|
echo Creating "$JBRSDK_TEST" ...
|
||||||
|
[ $do_reset_changes -eq 1 ] && git checkout HEAD jb/project/tools/common/modules.list src/java.desktop/share/classes/module-info.java
|
||||||
|
make test-image CONF=$RELEASE_NAME JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
tar -pcf "$JBRSDK_TEST".tar -C $IMAGES_DIR --exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
[ -f "$JBRSDK_TEST.tar.gz" ] && rm "$JBRSDK_TEST.tar.gz"
|
||||||
|
gzip "$JBRSDK_TEST".tar || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
63
jb/project/tools/mac/scripts/codesign.sh
Executable file
63
jb/project/tools/mac/scripts/codesign.sh
Executable file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" >/dev/null && pwd)"
|
||||||
|
|
||||||
|
source "$SCRIPT_DIR/jetsign-common.sh" || exit 1
|
||||||
|
|
||||||
|
function isMacOsBinary() {
|
||||||
|
file "$1" | grep -q 'Mach-O'
|
||||||
|
}
|
||||||
|
|
||||||
|
function isSigned() {
|
||||||
|
codesign --verify "$1" >/dev/null 2>&1 && ! grep -q Signature=adhoc < <(codesign --display --verbose "$1" 2>&1)
|
||||||
|
}
|
||||||
|
|
||||||
|
# last argument is a path to be signed
|
||||||
|
pathToBeSigned="$(pwd)/${*: -1}"
|
||||||
|
jetSignArgs=("${@:1:$#-1}")
|
||||||
|
if [[ ! -f "$pathToBeSigned" ]]; then
|
||||||
|
echo "$pathToBeSigned is missing or not a file"
|
||||||
|
exit 1
|
||||||
|
elif isSigned "$pathToBeSigned" && ! isForced "${jetSignArgs[@]}" ; then
|
||||||
|
echo "Already signed: $pathToBeSigned"
|
||||||
|
elif [[ "$JETSIGN_CLIENT" == "null" ]]; then
|
||||||
|
echo "JetSign client is missing, cannot proceed with signing"
|
||||||
|
exit 1
|
||||||
|
elif ! isMacOsBinary "$pathToBeSigned" && [[ "$pathToBeSigned" != *.sit ]] && [[ "$pathToBeSigned" != *.tar.gz ]]; then
|
||||||
|
echo "$pathToBeSigned won't be signed, assumed not to be a macOS executable"
|
||||||
|
else
|
||||||
|
if isMacOsBinary "$pathToBeSigned" && ! isSigned "$pathToBeSigned" ; then
|
||||||
|
echo "Unsigned macOS binary: $pathToBeSigned"
|
||||||
|
fi
|
||||||
|
workDir=$(dirname "$pathToBeSigned")
|
||||||
|
pathSigned="$workDir/signed/${pathToBeSigned##*/}"
|
||||||
|
jetSignExtensions=$(jetSignExtensions "${jetSignArgs[@]}")
|
||||||
|
contentType=$(jetSignContentType "$pathToBeSigned")
|
||||||
|
(
|
||||||
|
cd "$workDir" || exit 1
|
||||||
|
|
||||||
|
max_attempts=3
|
||||||
|
attempt=1
|
||||||
|
while [ $attempt -le $max_attempts ]; do
|
||||||
|
if "$JETSIGN_CLIENT" -log-format text -max-wait 1m -denoted-content-type "$contentType" -extensions "$jetSignExtensions" "$pathToBeSigned"; then
|
||||||
|
break
|
||||||
|
else
|
||||||
|
if [ $attempt -eq $max_attempts ]; then
|
||||||
|
echo "Failed to sign after $max_attempts attempts"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Attempt $attempt failed, retrying in 5 seconds..."
|
||||||
|
sleep 5
|
||||||
|
((attempt++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# SRE-1223 (Codesign removes execute bits in executable files) workaround
|
||||||
|
chmod "$(stat -f %A "$pathToBeSigned")" "$pathSigned"
|
||||||
|
if isMacOsBinary "$pathSigned"; then
|
||||||
|
isSigned "$pathSigned"
|
||||||
|
fi
|
||||||
|
rm "$pathToBeSigned"
|
||||||
|
mv "$pathSigned" "$pathToBeSigned"
|
||||||
|
rm -rf "$workDir/signed"
|
||||||
|
)
|
||||||
|
fi
|
||||||
16
jb/project/tools/mac/scripts/entitlements.xml
Normal file
16
jb/project/tools/mac/scripts/entitlements.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>com.apple.security.cs.allow-jit</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.cs.disable-library-validation</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.cs.disable-executable-page-protection</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
63
jb/project/tools/mac/scripts/jetsign-common.sh
Executable file
63
jb/project/tools/mac/scripts/jetsign-common.sh
Executable file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
function isForced() {
|
||||||
|
for arg in "$@"; do
|
||||||
|
if [[ "$arg" == --force ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function jetSignExtensions() {
|
||||||
|
args=("$@")
|
||||||
|
((lastElementIndex=${#args[@]}-1))
|
||||||
|
for index in "${!args[@]}"; do
|
||||||
|
arg=${args[$index]}
|
||||||
|
case "$arg" in
|
||||||
|
--sign | -s)
|
||||||
|
echo -n 'mac_codesign_identity='
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
--entitlements)
|
||||||
|
echo -n 'mac_codesign_entitlements='
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
--options=runtime)
|
||||||
|
echo -n 'mac_codesign_options=runtime'
|
||||||
|
;;
|
||||||
|
--force)
|
||||||
|
echo -n 'mac_codesign_force=true'
|
||||||
|
;;
|
||||||
|
--timestamp | --verbose | -v)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -n "$arg"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [[ $index != "$lastElementIndex" ]]; then
|
||||||
|
echo -n ","
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# See jetbrains.sign.util.FileUtil.contentType
|
||||||
|
function jetSignContentType() {
|
||||||
|
case "${1##*/}" in
|
||||||
|
*.sit)
|
||||||
|
echo -n 'application/x-mac-app-zip'
|
||||||
|
;;
|
||||||
|
*.tar.gz)
|
||||||
|
echo -n 'application/x-mac-app-targz'
|
||||||
|
;;
|
||||||
|
*.pkg)
|
||||||
|
echo -n 'application/x-mac-pkg'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -n 'application/x-mac-app-bin'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
172
jb/project/tools/mac/scripts/mkimages.sh
Executable file
172
jb/project/tools/mac/scripts/mkimages.sh
Executable file
@@ -0,0 +1,172 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# This script makes test-image along with JDK images when bundle_type is set to "jcef".
|
||||||
|
# If the character 't' is added at the end of bundle_type then it also makes test-image along with JDK images.
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument
|
||||||
|
# to configure
|
||||||
|
# By default JDK_BUILD_NUMBER is set zero
|
||||||
|
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
|
||||||
|
# By default JCEF binaries should be located in ./jcef_mac
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
JCEF_PATH=${JCEF_PATH:=./jcef_mac}
|
||||||
|
BOOT_JDK=${BOOT_JDK:=$(/usr/libexec/java_home -v 17)}
|
||||||
|
|
||||||
|
function do_configure {
|
||||||
|
sh configure \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="$VENDOR_NAME" \
|
||||||
|
--with-vendor-version-string="$VENDOR_VERSION_STRING" \
|
||||||
|
--with-macosx-bundle-name-base=${VENDOR_VERSION_STRING} \
|
||||||
|
--with-macosx-bundle-id-base="com.jetbrains.jbr" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build="$JDK_BUILD_NUMBER" \
|
||||||
|
--with-version-opt=b"$build_number" \
|
||||||
|
--with-boot-jdk="$BOOT_JDK" \
|
||||||
|
--enable-cds=yes \
|
||||||
|
$DISABLE_WARNINGS_AS_ERRORS \
|
||||||
|
$STATIC_CONF_ARGS \
|
||||||
|
$REPRODUCIBLE_BUILD_OPTS \
|
||||||
|
$WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS \
|
||||||
|
|| do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_image_bundle {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
__modules_path=$3
|
||||||
|
__modules=$4
|
||||||
|
|
||||||
|
fastdebug_infix=''
|
||||||
|
__cds_opt=''
|
||||||
|
__cds_opt="--generate-cds-archive"
|
||||||
|
|
||||||
|
tmp=.bundle.$$.tmp
|
||||||
|
mkdir "$tmp" || do_exit $?
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
JBR=${__bundle_name}-${JBSDK_VERSION}-osx-${architecture}-${fastdebug_infix:-}b${build_number}
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-osx-${architecture}-${fastdebug_infix:-}b${build_number}
|
||||||
|
|
||||||
|
JRE_CONTENTS=$tmp/$__root_dir/Contents
|
||||||
|
mkdir -p "$JRE_CONTENTS" || do_exit $?
|
||||||
|
|
||||||
|
echo Running jlink...
|
||||||
|
"$JSDK"/bin/jlink \
|
||||||
|
--module-path "$__modules_path" --no-man-pages --compress=2 \
|
||||||
|
$__cds_opt --add-modules "$__modules" --output "$JRE_CONTENTS/Home" || do_exit $?
|
||||||
|
|
||||||
|
grep -v "^JAVA_VERSION" "$JSDK"/release | grep -v "^MODULES" >> "$JRE_CONTENTS/Home/release"
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
sed 's/JBR/JBRSDK/g' $JRE_CONTENTS/Home/release > release
|
||||||
|
mv release $JRE_CONTENTS/Home/release
|
||||||
|
cp $IMAGES_DIR/jdk-bundle/jdk-$JBSDK_VERSION.jdk/Contents/Home/lib/src.zip $JRE_CONTENTS/Home/lib
|
||||||
|
copy_jmods "$__modules" "$__modules_path" "$JRE_CONTENTS"/Home/jmods
|
||||||
|
zip_native_debug_symbols $IMAGES_DIR/jdk-bundle/jdk-$JBSDK_VERSION.jdk "${JBR}_diz"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
cat $JCEF_PATH/jcef.version >> "$JRE_CONTENTS/Home/release"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp -R "$JSDK"/../MacOS "$JRE_CONTENTS"
|
||||||
|
cp "$JSDK"/../Info.plist "$JRE_CONTENTS"
|
||||||
|
|
||||||
|
[ -n "$bundle_type" ] && (cp -a $JCEF_PATH/Frameworks "$JRE_CONTENTS" || do_exit $?)
|
||||||
|
|
||||||
|
echo Creating "$JBR".tar.gz ...
|
||||||
|
# Normalize timestamp
|
||||||
|
find "$tmp"/"$__root_dir" -print0 | xargs -0 touch -c -h -t "$TOUCH_TIME"
|
||||||
|
|
||||||
|
(cd "$tmp" &&
|
||||||
|
find "$__root_dir" -print0 | LC_ALL=C sort -z | \
|
||||||
|
COPYFILE_DISABLE=1 tar $REPRODUCIBLE_TAR_OPTS --no-recursion --null -T - \
|
||||||
|
-czf "$JBR".tar.gz --exclude='*.dSYM' --exclude='man') || do_exit $?
|
||||||
|
mv "$tmp"/"$JBR".tar.gz "$JBR".tar.gz
|
||||||
|
rm -rf "$tmp"
|
||||||
|
}
|
||||||
|
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
CONF_ARCHITECTURE=x86_64
|
||||||
|
if [[ "${architecture}" == *aarch64* ]]; then
|
||||||
|
CONF_ARCHITECTURE=aarch64
|
||||||
|
fi
|
||||||
|
RELEASE_NAME=macosx-${CONF_ARCHITECTURE}-server-release
|
||||||
|
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
do_reset_changes=1
|
||||||
|
do_maketest=1
|
||||||
|
;;
|
||||||
|
"nomod" | "")
|
||||||
|
bundle_type=""
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
do_reset_changes=1
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=macosx-${CONF_ARCHITECTURE}-server-fastdebug
|
||||||
|
JBSDK=macosx-${architecture}-server-release
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "${INC_BUILD:-}" ]; then
|
||||||
|
do_configure || do_exit $?
|
||||||
|
make clean CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
fi
|
||||||
|
make images CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
|
||||||
|
JSDK=$IMAGES_DIR/jdk-bundle/jdk-$JBSDK_VERSION.jdk/Contents/Home
|
||||||
|
JSDK_MODS_DIR=$IMAGES_DIR/jmods
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
# test/jdk/jb/java/awt/Focus/FullScreenFocusStealing.java test/jdk/java/awt/color/ICC_ColorSpace/MTTransformReplacedProfile.java test/jdk/java/awt/datatransfer/DataFlavor/DataFlavorRemoteTest.java test/jdk/java/awt/Robot/NonEmptyErrorStream.java
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
update_jsdk_mods "$JSDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||||
|
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||||
|
fi
|
||||||
|
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
else
|
||||||
|
jbr_name_postfix=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create runtime image bundle
|
||||||
|
modules=$(xargs < jb/project/tools/common/modules.list | sed s/" "//g) || do_exit $?
|
||||||
|
create_image_bundle "jbr${jbr_name_postfix}" "jbr" $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
# create sdk image bundle
|
||||||
|
modules=$(cat "$JSDK"/release | grep MODULES | sed s/MODULES=//g | sed s/' '/','/g | sed s/\"//g | sed s/\\n//g) || do_exit $?
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
modules=${modules},$(get_mods_list "$JCEF_PATH"/jmods)
|
||||||
|
fi
|
||||||
|
create_image_bundle "$JBRSDK_BUNDLE${jbr_name_postfix}" "$JBRSDK_BUNDLE" "$JSDK_MODS_DIR" "$modules" || do_exit $?
|
||||||
|
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
JBRSDK_TEST=${JBRSDK_BUNDLE}-${JBSDK_VERSION}-osx-test-${architecture}-b${build_number}
|
||||||
|
echo Creating "$JBRSDK_TEST" ...
|
||||||
|
[ $do_reset_changes -eq 1 ] && git checkout HEAD jb/project/tools/common/modules.list src/java.desktop/share/classes/module-info.java
|
||||||
|
make test-image CONF=$RELEASE_NAME JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
[ -f "$JBRSDK_TEST.tar.gz" ] && rm "$JBRSDK_TEST.tar.gz"
|
||||||
|
COPYFILE_DISABLE=1 tar -pczf "$JBRSDK_TEST".tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
63
jb/project/tools/mac/scripts/notarize.sh
Executable file
63
jb/project/tools/mac/scripts/notarize.sh
Executable file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#immediately exit script with an error if a command fails
|
||||||
|
set -euo pipefail
|
||||||
|
[[ "${SCRIPT_VERBOSE:-}" == "1" ]] && set -x
|
||||||
|
|
||||||
|
APP_PATH=$1
|
||||||
|
|
||||||
|
if [[ -z "$APP_PATH" ]]; then
|
||||||
|
echo "Usage: $0 AppPath"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -f "$APP_PATH" ]]; then
|
||||||
|
echo "AppName '$APP_PATH' does not exist or not a file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
function log() {
|
||||||
|
echo "$(date '+[%H:%M:%S]') $*"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# check required parameters
|
||||||
|
: "${APPLE_ISSUER_ID}"
|
||||||
|
: "${APPLE_KEY_ID}"
|
||||||
|
: "${APPLE_PRIVATE_KEY}"
|
||||||
|
|
||||||
|
# shellcheck disable=SC2064
|
||||||
|
trap "rm -f \"$PWD/tmp_key\"" INT EXIT RETURN
|
||||||
|
echo -n "${APPLE_PRIVATE_KEY}" > tmp_key
|
||||||
|
|
||||||
|
log "Notarizing $APP_PATH..."
|
||||||
|
xcrun notarytool submit --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}" "$APP_PATH" 2>&1 --wait| tee "notarytool.submit.out"
|
||||||
|
REQUEST_ID="$(grep -e " id: " "notarytool.submit.out" | grep -oE '([0-9a-f-]{36})'| head -n1)"
|
||||||
|
|
||||||
|
waitOutput=$(xcrun notarytool wait "$REQUEST_ID" --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}" --timeout 6h)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Notarizing failed (wait command)"
|
||||||
|
echo "$waitOutput"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "$waitOutput"
|
||||||
|
fi
|
||||||
|
|
||||||
|
logOutout=$(xcrun notarytool log "$REQUEST_ID" --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}" developer_log.json)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Notarizing failed (log command)"
|
||||||
|
echo "$logOutout"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "$logOutout"
|
||||||
|
fi
|
||||||
|
|
||||||
|
infoOUtput=$(xcrun notarytool info "$REQUEST_ID" --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Notarizing failed (info command)"
|
||||||
|
echo "$infoOUtput"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "$infoOUtput"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Notarizing finished"
|
||||||
41
jb/project/tools/mac/scripts/productsign.sh
Executable file
41
jb/project/tools/mac/scripts/productsign.sh
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" >/dev/null && pwd)"
|
||||||
|
|
||||||
|
source "$SCRIPT_DIR/jetsign-common.sh" || exit 1
|
||||||
|
|
||||||
|
function isSigned() {
|
||||||
|
pkgutil --check-signature "$1" >/dev/null 2>&1 && grep -q "signed by a developer certificate" < <(pkgutil --check-signature "$1" 2>&1)
|
||||||
|
}
|
||||||
|
|
||||||
|
# second last argument is a path to be signed
|
||||||
|
pathToBeSigned="$(pwd)/${*:(-2):1}"
|
||||||
|
# last argument is a path to signed file
|
||||||
|
pathOut="$(pwd)/${*:(-1)}"
|
||||||
|
jetSignArgs=("${@:1:$#-2}")
|
||||||
|
if [[ ! -f "$pathToBeSigned" ]]; then
|
||||||
|
echo "$pathToBeSigned is missing or not a file"
|
||||||
|
exit 1
|
||||||
|
elif isSigned "$pathToBeSigned" && ! isForced "${jetSignArgs[@]}" ; then
|
||||||
|
echo "Already signed: $pathToBeSigned"
|
||||||
|
elif [[ "$JETSIGN_CLIENT" == "null" ]]; then
|
||||||
|
echo "JetSign client is missing, cannot proceed with signing"
|
||||||
|
exit 1
|
||||||
|
elif [[ "$pathToBeSigned" != *.pkg ]]; then
|
||||||
|
echo "$pathToBeSigned won't be signed, assumed not to be a macOS package"
|
||||||
|
else
|
||||||
|
if ! isSigned "$pathToBeSigned" ; then
|
||||||
|
echo "Unsigned macOS package: $pathToBeSigned"
|
||||||
|
fi
|
||||||
|
workDir=$(dirname "$pathToBeSigned")
|
||||||
|
pathSigned="$workDir/signed/${pathToBeSigned##*/}"
|
||||||
|
jetSignExtensions=$(jetSignExtensions "${jetSignArgs[@]}")
|
||||||
|
contentType=$(jetSignContentType "$pathToBeSigned")
|
||||||
|
(
|
||||||
|
cd "$workDir" || exit 1
|
||||||
|
"$JETSIGN_CLIENT" -log-format text -denoted-content-type "$contentType" -extensions "$jetSignExtensions" "$pathToBeSigned"
|
||||||
|
isSigned "$pathSigned"
|
||||||
|
rm -f "$pathOut"
|
||||||
|
mv "$pathSigned" "$pathOut"
|
||||||
|
rm -rf "$workDir/signed"
|
||||||
|
)
|
||||||
|
fi
|
||||||
238
jb/project/tools/mac/scripts/sign.sh
Executable file
238
jb/project/tools/mac/scripts/sign.sh
Executable file
@@ -0,0 +1,238 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#immediately exit script with an error if a command fails
|
||||||
|
set -euo pipefail
|
||||||
|
[[ "${SCRIPT_VERBOSE:-}" == "1" ]] && set -x
|
||||||
|
|
||||||
|
if [[ $# -lt 5 ]]; then
|
||||||
|
echo "Usage: $0 AppDirectory AppName BundleId CertificateID InstallerCertificateID"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
APPLICATION_PATH=$1
|
||||||
|
PKG_NAME=$2
|
||||||
|
BUNDLE_ID=$3
|
||||||
|
JB_DEVELOPER_CERT=$4
|
||||||
|
JB_INSTALLER_CERT=$5
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" >/dev/null && pwd)"
|
||||||
|
|
||||||
|
# Use JetBrains sign utility if it's available
|
||||||
|
if [[ "${JETSIGN_CLIENT:=}" == "null" ]] || [[ "$JETSIGN_CLIENT" == "" ]]; then
|
||||||
|
JB_SIGN=false
|
||||||
|
SIGN_UTILITY="codesign"
|
||||||
|
PRODUCTSIGN_UTILITY="productsign"
|
||||||
|
else
|
||||||
|
JB_SIGN=true
|
||||||
|
SIGN_UTILITY="$SCRIPT_DIR/codesign.sh"
|
||||||
|
PRODUCTSIGN_UTILITY="$SCRIPT_DIR/productsign.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "$APPLICATION_PATH" ]]; then
|
||||||
|
echo "AppDirectory '$APPLICATION_PATH' does not exist or not a directory"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
function log() {
|
||||||
|
echo "$(date '+[%H:%M:%S]') $*"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cleanup files left from previous sign attempt (if any)
|
||||||
|
find "$APPLICATION_PATH" -name '*.cstemp' -exec rm '{}' \;
|
||||||
|
|
||||||
|
log "Signing libraries and executables..."
|
||||||
|
# -perm +111 searches for executables
|
||||||
|
for f in \
|
||||||
|
"Contents/Home/lib" "Contents/MacOS" \
|
||||||
|
"Contents/Home/Frameworks" \
|
||||||
|
"Contents/Frameworks"; do
|
||||||
|
if [ -d "$APPLICATION_PATH/$f" ]; then
|
||||||
|
find "$APPLICATION_PATH/$f" \
|
||||||
|
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "*.tbd" -o -name "*.node" -o -perm +111 \) \
|
||||||
|
-exec sh -c '"$1" --timestamp -v -s "$2" --options=runtime --force --entitlements "$3" "$4" || exit 1' sh "$SIGN_UTILITY" "$JB_DEVELOPER_CERT" "$SCRIPT_DIR/entitlements.xml" {} \;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
log "Signing jmod files"
|
||||||
|
JMODS_DIR="$APPLICATION_PATH/Contents/Home/jmods"
|
||||||
|
JMOD_EXE="$BOOT_JDK/bin/jmod"
|
||||||
|
if [ -d "$JMODS_DIR" ]; then
|
||||||
|
log "processing jmods"
|
||||||
|
|
||||||
|
for jmod_file in "$JMODS_DIR"/*.jmod; do
|
||||||
|
log "Processing $jmod_file"
|
||||||
|
|
||||||
|
TMP_DIR="$JMODS_DIR/tmp"
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
mkdir "$TMP_DIR"
|
||||||
|
|
||||||
|
log "Unzipping $jmod_file"
|
||||||
|
$JMOD_EXE extract --dir "$TMP_DIR" "$jmod_file" >/dev/null
|
||||||
|
|
||||||
|
log "Signing dylibs in $TMP_DIR"
|
||||||
|
find "$TMP_DIR" \
|
||||||
|
-type f \( -name "*.dylib" -o -name "*.so"-o -perm +111 -o -name jarsigner -o -name jnativescan -o -name jdeps -o -name jpackageapplauncher -o -name jspawnhelper -o -name jar -o -name javap -o -name jdeprscan -o -name jfr -o -name rmiregistry -o -name java -o -name jhsdb -o -name jstatd -o -name jstatd -o -name jpackage -o -name keytool -o -name jmod -o -name jlink -o -name jimage -o -name jstack -o -name jcmd -o -name jps -o -name jmap -o -name jstat -o -name jinfo -o -name jshell -o -name jwebserver -o -name javac -o -name serialver -o -name jrunscript -o -name jdb -o -name jconsole -o -name javadoc \) \
|
||||||
|
-exec sh -c '"$1" --timestamp -v -s "$2" --options=runtime --force --entitlements "$3" "$4" || exit 1' sh "$SIGN_UTILITY" "$JB_DEVELOPER_CERT" "$SCRIPT_DIR/entitlements.xml" {} \;
|
||||||
|
|
||||||
|
log "Removing $jmod_file"
|
||||||
|
rm -f "$jmod_file"
|
||||||
|
cmd="$JMOD_EXE create --class-path $TMP_DIR/classes"
|
||||||
|
|
||||||
|
# Check each directory and add to the command if it exists
|
||||||
|
[ -d "$TMP_DIR/bin" ] && cmd="$cmd --cmds $TMP_DIR/bin"
|
||||||
|
[ -d "$TMP_DIR/conf" ] && cmd="$cmd --config $TMP_DIR/conf"
|
||||||
|
[ -d "$TMP_DIR/lib" ] && cmd="$cmd --libs $TMP_DIR/lib"
|
||||||
|
[ -d "$TMP_DIR/include" ] && cmd="$cmd --header-files $TMP_DIR/include"
|
||||||
|
[ -d "$TMP_DIR/legal" ] && cmd="$cmd --legal-notices $TMP_DIR/legal"
|
||||||
|
[ -d "$TMP_DIR/man" ] && cmd="$cmd --man-pages $TMP_DIR/man"
|
||||||
|
|
||||||
|
log "Creating jmod file"
|
||||||
|
log "$cmd"
|
||||||
|
# Add the output file
|
||||||
|
cmd="$cmd $jmod_file"
|
||||||
|
|
||||||
|
# Execute the command
|
||||||
|
eval $cmd
|
||||||
|
|
||||||
|
log "Removing $TMP_DIR"
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
done
|
||||||
|
|
||||||
|
log "Repack java.base.jmod with new hashes of modules"
|
||||||
|
hash_modules=$($JMOD_EXE describe $JMODS_DIR/java.base.jmod | grep hashes | awk '{print $2}' | tr '\n' '|' | sed s/\|$//) || exit $?
|
||||||
|
|
||||||
|
TMP_DIR="$JMODS_DIR/tmp"
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
mkdir "$TMP_DIR"
|
||||||
|
|
||||||
|
jmod_file="$JMODS_DIR/java.base.jmod"
|
||||||
|
log "Unzipping $jmod_file"
|
||||||
|
$JMOD_EXE extract --dir "$TMP_DIR" "$jmod_file" >/dev/null
|
||||||
|
|
||||||
|
log "Removing java.base.jmod"
|
||||||
|
rm -f "$jmod_file"
|
||||||
|
|
||||||
|
cmd="$JMOD_EXE create --class-path $TMP_DIR/classes --hash-modules \"$hash_modules\" --module-path $JMODS_DIR"
|
||||||
|
|
||||||
|
# Check each directory and add to the command if it exists
|
||||||
|
[ -d "$TMP_DIR/bin" ] && cmd="$cmd --cmds $TMP_DIR/bin"
|
||||||
|
[ -d "$TMP_DIR/conf" ] && cmd="$cmd --config $TMP_DIR/conf"
|
||||||
|
[ -d "$TMP_DIR/lib" ] && cmd="$cmd --libs $TMP_DIR/lib"
|
||||||
|
[ -d "$TMP_DIR/include" ] && cmd="$cmd --header-files $TMP_DIR/include"
|
||||||
|
[ -d "$TMP_DIR/legal" ] && cmd="$cmd --legal-notices $TMP_DIR/legal"
|
||||||
|
[ -d "$TMP_DIR/man" ] && cmd="$cmd --man-pages $TMP_DIR/man"
|
||||||
|
|
||||||
|
log "Creating jmod file"
|
||||||
|
log "$cmd"
|
||||||
|
# Add the output file
|
||||||
|
cmd="$cmd $jmod_file"
|
||||||
|
|
||||||
|
# Execute the command
|
||||||
|
eval $cmd
|
||||||
|
|
||||||
|
log "Removing $TMP_DIR"
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
else
|
||||||
|
echo "Directory '$JMODS_DIR' does not exist. Skipping signing of jmod files."
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Signing libraries in jars in $APPLICATION_PATH"
|
||||||
|
|
||||||
|
# todo: add set -euo pipefail; into the inner sh -c
|
||||||
|
# `-e` prevents `grep -q && printf` loginc
|
||||||
|
# with `-o pipefail` there's no input for 'while' loop
|
||||||
|
find "$APPLICATION_PATH" -name '*.jar' \
|
||||||
|
-exec sh -c "set -u; unzip -l \"\$0\" | grep -q -e '\.dylib\$' -e '\.jnilib\$' -e '\.so\$' -e '\.tbd\$' -e '^jattach\$' && printf \"\$0\0\" " {} \; |
|
||||||
|
while IFS= read -r -d $'\0' file; do
|
||||||
|
log "Processing libraries in $file"
|
||||||
|
|
||||||
|
rm -rf jarfolder jar.jar
|
||||||
|
mkdir jarfolder
|
||||||
|
filename="${file##*/}"
|
||||||
|
log "Filename: $filename"
|
||||||
|
cp "$file" jarfolder && (cd jarfolder && jar xf "$filename" && rm "$filename")
|
||||||
|
|
||||||
|
find jarfolder \
|
||||||
|
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "*.tbd" -o -name "jattach" \) \
|
||||||
|
-exec sh -c '"$1" --timestamp --force -v -s "$2" --options=runtime --entitlements "$3" "$4" || exit 1' sh "$SIGN_UTILITY" "$JB_DEVELOPER_CERT" "$SCRIPT_DIR/entitlements.xml" {} \;
|
||||||
|
|
||||||
|
(cd jarfolder; zip -q -r -o -0 ../jar.jar .)
|
||||||
|
mv jar.jar "$file"
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -rf jarfolder jar.jar
|
||||||
|
|
||||||
|
log "Signing other files..."
|
||||||
|
# shellcheck disable=SC2043
|
||||||
|
for f in \
|
||||||
|
"Contents/Home/bin"; do
|
||||||
|
if [ -d "$APPLICATION_PATH/$f" ]; then
|
||||||
|
find "$APPLICATION_PATH/$f" \
|
||||||
|
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "*.tbd" -o -perm +111 \) \
|
||||||
|
-exec sh -c '"$1" --timestamp -v -s "$2" --options=runtime --force --entitlements "$3" "$4" || exit 1' sh "$SIGN_UTILITY" "$JB_DEVELOPER_CERT" "$SCRIPT_DIR/entitlements.xml" {} \;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
log "Signing whole frameworks..."
|
||||||
|
# shellcheck disable=SC2043
|
||||||
|
if [ "$JB_SIGN" = true ]; then for f in \
|
||||||
|
"Contents/Frameworks/cef_server.app/Contents/Frameworks" "Contents/Home/Frameworks" "Contents/Frameworks"; do
|
||||||
|
if [ -d "$APPLICATION_PATH/$f" ]; then
|
||||||
|
find "$APPLICATION_PATH/$f" \( -name '*.framework' -o -name '*.app' \) -maxdepth 1 | while read -r line
|
||||||
|
do
|
||||||
|
log "Signing '$line':"
|
||||||
|
tar -pczf tmp-to-sign.tar.gz -C "$(dirname "$line")" "$(basename "$line")"
|
||||||
|
"$SIGN_UTILITY" --timestamp \
|
||||||
|
-v -s "$JB_DEVELOPER_CERT" --options=runtime \
|
||||||
|
--force \
|
||||||
|
--entitlements "$SCRIPT_DIR/entitlements.xml" tmp-to-sign.tar.gz || exit 1
|
||||||
|
rm -rf "$line"
|
||||||
|
tar -xzf tmp-to-sign.tar.gz --directory "$(dirname "$line")"
|
||||||
|
rm -f tmp-to-sign.tar.gz
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done; fi
|
||||||
|
|
||||||
|
log "Checking framework signatures..."
|
||||||
|
for f in \
|
||||||
|
"Contents/Home/Frameworks" "Contents/Frameworks"; do
|
||||||
|
if [ -d "$APPLICATION_PATH/$f" ]; then
|
||||||
|
find "$APPLICATION_PATH/$f" -name '*.framework' -maxdepth 1 | while read -r line
|
||||||
|
do
|
||||||
|
log "Checking '$line':"
|
||||||
|
codesign --verify --deep --strict --verbose=4 "$line"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
log "Signing whole app..."
|
||||||
|
if [ "$JB_SIGN" = true ]; then
|
||||||
|
tar -pczf tmp-to-sign.tar.gz --exclude='man' -C "$(dirname "$APPLICATION_PATH")" "$(basename "$APPLICATION_PATH")"
|
||||||
|
"$SIGN_UTILITY" --timestamp \
|
||||||
|
-v -s "$JB_DEVELOPER_CERT" --options=runtime \
|
||||||
|
--force \
|
||||||
|
--entitlements "$SCRIPT_DIR/entitlements.xml" tmp-to-sign.tar.gz || exit 1
|
||||||
|
rm -rf "$APPLICATION_PATH"
|
||||||
|
tar -xzf tmp-to-sign.tar.gz --directory "$(dirname "$APPLICATION_PATH")"
|
||||||
|
rm -f tmp-to-sign.tar.gz
|
||||||
|
else
|
||||||
|
"$SIGN_UTILITY" --timestamp \
|
||||||
|
-v -s "$JB_DEVELOPER_CERT" --options=runtime \
|
||||||
|
--force \
|
||||||
|
--entitlements "$SCRIPT_DIR/entitlements.xml" "$APPLICATION_PATH" || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
BUILD_NAME="$(basename "$APPLICATION_PATH")"
|
||||||
|
|
||||||
|
log "Creating $PKG_NAME..."
|
||||||
|
rm -rf "$PKG_NAME"
|
||||||
|
|
||||||
|
mkdir -p unsigned
|
||||||
|
pkgbuild --identifier $BUNDLE_ID --root $APPLICATION_PATH \
|
||||||
|
--install-location /Library/Java/JavaVirtualMachines/${BUILD_NAME} unsigned/${PKG_NAME}
|
||||||
|
log "Signing $PKG_NAME..."
|
||||||
|
"$PRODUCTSIGN_UTILITY" --timestamp --sign "$JB_INSTALLER_CERT" unsigned/${PKG_NAME} ${PKG_NAME}
|
||||||
|
|
||||||
|
log "Verifying java is not broken"
|
||||||
|
find "$APPLICATION_PATH" \
|
||||||
|
-type f -name 'java' -perm +111 -exec {} -version \;
|
||||||
153
jb/project/tools/mac/scripts/signapp.sh
Executable file
153
jb/project/tools/mac/scripts/signapp.sh
Executable file
@@ -0,0 +1,153 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#immediately exit script with an error if a command fails
|
||||||
|
set -euo pipefail
|
||||||
|
[[ "${SCRIPT_VERBOSE:-}" == "1" ]] && set -x
|
||||||
|
|
||||||
|
export COPY_EXTENDED_ATTRIBUTES_DISABLE=true
|
||||||
|
export COPYFILE_DISABLE=true
|
||||||
|
|
||||||
|
INPUT_FILE=$1
|
||||||
|
EXPLODED=$2.exploded
|
||||||
|
USERNAME=$3
|
||||||
|
PASSWORD=$4
|
||||||
|
CODESIGN_STRING=$5
|
||||||
|
JB_INSTALLER_CERT=$6
|
||||||
|
NOTARIZE=$7
|
||||||
|
BUNDLE_ID=$8
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" >/dev/null && pwd)"
|
||||||
|
|
||||||
|
function log() {
|
||||||
|
echo "$(date '+[%H:%M:%S]') $*"
|
||||||
|
}
|
||||||
|
|
||||||
|
log "Deleting $EXPLODED ..."
|
||||||
|
if test -d "$EXPLODED"; then
|
||||||
|
find "$EXPLODED" -mindepth 1 -maxdepth 1 -exec chmod -R u+wx '{}' \;
|
||||||
|
fi
|
||||||
|
rm -rf "$EXPLODED"
|
||||||
|
mkdir "$EXPLODED"
|
||||||
|
|
||||||
|
log "Unzipping $INPUT_FILE to $EXPLODED ..."
|
||||||
|
tar -xzvf "$INPUT_FILE" --directory $EXPLODED
|
||||||
|
BUILD_NAME="$(ls "$EXPLODED")"
|
||||||
|
#sed -i '' s/BNDL/APPL/ $EXPLODED/$BUILD_NAME/Contents/Info.plist
|
||||||
|
rm -f $EXPLODED/$BUILD_NAME/Contents/CodeResources
|
||||||
|
rm "$INPUT_FILE"
|
||||||
|
|
||||||
|
log "$INPUT_FILE extracted and removed"
|
||||||
|
|
||||||
|
APP_NAME=$(basename "$INPUT_FILE" | awk -F".tar" '{ print $1 }')
|
||||||
|
PKG_NAME="$APP_NAME.pkg"
|
||||||
|
APPLICATION_PATH=$EXPLODED/$(ls $EXPLODED)
|
||||||
|
|
||||||
|
find "$APPLICATION_PATH/Contents/Home/bin" \
|
||||||
|
-maxdepth 1 -type f -name '*.jnilib' -print0 |
|
||||||
|
while IFS= read -r -d $'\0' file; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
log "Linking $file"
|
||||||
|
b="$(basename "$file" .jnilib)"
|
||||||
|
ln -sf "$b.jnilib" "$(dirname "$file")/$b.dylib"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
find "$APPLICATION_PATH/Contents/" \
|
||||||
|
-maxdepth 1 -type f -name '*.txt' -print0 |
|
||||||
|
while IFS= read -r -d $'\0' file; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
log "Moving $file"
|
||||||
|
mv "$file" "$APPLICATION_PATH/Contents/Resources"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
non_plist=$(find "$APPLICATION_PATH/Contents/" -maxdepth 1 -type f -and -not -name 'Info.plist' | wc -l)
|
||||||
|
if [[ $non_plist -gt 0 ]]; then
|
||||||
|
log "Only Info.plist file is allowed in Contents directory but found $non_plist file(s):"
|
||||||
|
log "$(find "$APPLICATION_PATH/Contents/" -maxdepth 1 -type f -and -not -name 'Info.plist')"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${JETSIGN_CLIENT:=}" == "null" ]] || [[ "$JETSIGN_CLIENT" == "" ]]; then
|
||||||
|
log "Unlocking keychain..."
|
||||||
|
# Make sure *.p12 is imported into local KeyChain
|
||||||
|
security unlock-keychain -p "$PASSWORD" "/Users/$USERNAME/Library/Keychains/login.keychain"
|
||||||
|
fi
|
||||||
|
|
||||||
|
attempt=1
|
||||||
|
limit=3
|
||||||
|
set +e
|
||||||
|
while [[ $attempt -le $limit ]]; do
|
||||||
|
log "Signing (attempt $attempt) $APPLICATION_PATH ..."
|
||||||
|
"$SCRIPT_DIR/sign.sh" "$APPLICATION_PATH" "$PKG_NAME" "$BUNDLE_ID" "$CODESIGN_STRING" "$JB_INSTALLER_CERT"
|
||||||
|
ec=$?
|
||||||
|
if [[ $ec -ne 0 ]]; then
|
||||||
|
((attempt += 1))
|
||||||
|
if [ $attempt -eq $limit ]; then
|
||||||
|
set -e
|
||||||
|
fi
|
||||||
|
log "Signing failed, wait for 30 sec and try to sign again"
|
||||||
|
sleep 30
|
||||||
|
else
|
||||||
|
log "Signing done"
|
||||||
|
codesign -v "$APPLICATION_PATH" -vvvvv
|
||||||
|
log "Check sign done"
|
||||||
|
spctl -a -v $APPLICATION_PATH
|
||||||
|
((attempt += limit))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$NOTARIZE" = "yes" ]; then
|
||||||
|
log "Notarizing..."
|
||||||
|
"$SCRIPT_DIR/notarize.sh" "$PKG_NAME"
|
||||||
|
|
||||||
|
log "Stapling..."
|
||||||
|
appStaplerOutput=$(xcrun stapler staple "$APPLICATION_PATH")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Stapling application failed"
|
||||||
|
echo "$appStaplerOutput"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "$appStaplerOutput"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Stapling package..."
|
||||||
|
pkgStaplerOutput=$(xcrun stapler staple "$PKG_NAME")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Stapling package failed"
|
||||||
|
echo "$pkgStaplerOutput"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "$pkgStaplerOutput"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify stapling
|
||||||
|
log "Verifying stapling..."
|
||||||
|
if ! stapler validate "$APPLICATION_PATH"; then
|
||||||
|
log "Stapling verification failed for application"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! stapler validate "$PKG_NAME"; then
|
||||||
|
log "Stapling verification failed for package"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log "Notarization disabled"
|
||||||
|
log "Stapling disabled"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Zipping $BUILD_NAME to $INPUT_FILE ..."
|
||||||
|
(
|
||||||
|
if [[ "$APPLICATION_PATH" != "$EXPLODED/$BUILD_NAME" ]]; then
|
||||||
|
mv $APPLICATION_PATH $EXPLODED/$BUILD_NAME
|
||||||
|
else
|
||||||
|
echo "No move, source == destination: $APPLICATION_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
tar -pczvf $INPUT_FILE --exclude='man' -C $EXPLODED $BUILD_NAME
|
||||||
|
log "Finished zipping"
|
||||||
|
)
|
||||||
|
rm -rf "$EXPLODED"
|
||||||
|
log "Done"
|
||||||
30
jb/project/tools/patches/add_jcef_module.patch
Normal file
30
jb/project/tools/patches/add_jcef_module.patch
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
diff --git jb/project/tools/common/modules.list jb/project/tools/common/modules.list
|
||||||
|
index 522acb7cb43..c40e689d5de 100644
|
||||||
|
--- jb/project/tools/common/modules.list
|
||||||
|
+++ jb/project/tools/common/modules.list
|
||||||
|
@@ -51,4 +51,7 @@ jdk.unsupported.desktop,
|
||||||
|
jdk.xml.dom,
|
||||||
|
jdk.zipfs,
|
||||||
|
jdk.hotspot.agent,
|
||||||
|
-jdk.jcmd
|
||||||
|
+jdk.jcmd,
|
||||||
|
+jcef,
|
||||||
|
+gluegen.rt,
|
||||||
|
+jogl.all
|
||||||
|
diff --git src/java.desktop/share/classes/module-info.java src/java.desktop/share/classes/module-info.java
|
||||||
|
index 897647ee368..781d1809493 100644
|
||||||
|
--- src/java.desktop/share/classes/module-info.java
|
||||||
|
+++ src/java.desktop/share/classes/module-info.java
|
||||||
|
@@ -116,7 +116,11 @@ module java.desktop {
|
||||||
|
// see make/GensrcModuleInfo.gmk
|
||||||
|
exports sun.awt to
|
||||||
|
jdk.accessibility,
|
||||||
|
- jdk.unsupported.desktop;
|
||||||
|
+ jdk.unsupported.desktop,
|
||||||
|
+ jcef,
|
||||||
|
+ jogl.all;
|
||||||
|
+
|
||||||
|
+ exports java.awt.peer to jcef;
|
||||||
|
|
||||||
|
exports java.awt.dnd.peer to jdk.unsupported.desktop;
|
||||||
|
exports sun.awt.dnd to jdk.unsupported.desktop;
|
||||||
30
jb/project/tools/patches/add_jcef_module_aarch64.patch
Normal file
30
jb/project/tools/patches/add_jcef_module_aarch64.patch
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
diff --git jb/project/tools/common/modules.list jb/project/tools/common/modules.list
|
||||||
|
index 522acb7..c40e689 100644
|
||||||
|
--- jb/project/tools/common/modules.list
|
||||||
|
+++ jb/project/tools/common/modules.list
|
||||||
|
@@ -51,4 +51,7 @@ jdk.unsupported.desktop,
|
||||||
|
jdk.xml.dom,
|
||||||
|
jdk.zipfs,
|
||||||
|
jdk.hotspot.agent,
|
||||||
|
-jdk.jcmd
|
||||||
|
+jdk.jcmd,
|
||||||
|
+jcef,
|
||||||
|
+gluegen.rt,
|
||||||
|
+jogl.all
|
||||||
|
diff --git src/java.desktop/share/classes/module-info.java src/java.desktop/share/classes/module-info.java
|
||||||
|
index 897647e..781d180 100644
|
||||||
|
--- src/java.desktop/share/classes/module-info.java
|
||||||
|
+++ src/java.desktop/share/classes/module-info.java
|
||||||
|
@@ -116,7 +116,11 @@ module java.desktop {
|
||||||
|
// see make/GensrcModuleInfo.gmk
|
||||||
|
exports sun.awt to
|
||||||
|
jdk.accessibility,
|
||||||
|
- jdk.unsupported.desktop;
|
||||||
|
+ jdk.unsupported.desktop,
|
||||||
|
+ jcef,
|
||||||
|
+ jogl.all;
|
||||||
|
+
|
||||||
|
+ exports java.awt.peer to jcef;
|
||||||
|
|
||||||
|
exports java.awt.dnd.peer to jdk.unsupported.desktop;
|
||||||
|
exports sun.awt.dnd to jdk.unsupported.desktop;
|
||||||
267
jb/project/tools/perf/j2dbopts_poly250-AA-rand_col.txt
Normal file
267
jb/project/tools/perf/j2dbopts_poly250-AA-rand_col.txt
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
prog.verbose=disabled
|
||||||
|
prog.printresults=enabled
|
||||||
|
global.env.outputwidth=640
|
||||||
|
global.env.outputheight=480
|
||||||
|
global.env.runcount=5
|
||||||
|
global.env.repcount=0
|
||||||
|
global.env.testtime=2500
|
||||||
|
global.results.workunits=units
|
||||||
|
global.results.timeunits=sec
|
||||||
|
global.results.ratio=unitspersec
|
||||||
|
global.dest.offscreen=disabled
|
||||||
|
global.dest.frame.defaultframe=enabled
|
||||||
|
global.dest.frame.transframe=disabled
|
||||||
|
global.dest.frame.shapedframe=disabled
|
||||||
|
global.dest.frame.shapedtransframe=disabled
|
||||||
|
global.dest.compatimg.compatimg=disabled
|
||||||
|
global.dest.compatimg.opqcompatimg=disabled
|
||||||
|
global.dest.compatimg.bmcompatimg=disabled
|
||||||
|
global.dest.compatimg.transcompatimg=disabled
|
||||||
|
global.dest.volimg.volimg=disabled
|
||||||
|
global.dest.volimg.opqvolimg=disabled
|
||||||
|
global.dest.volimg.bmvolimg=disabled
|
||||||
|
global.dest.volimg.transvolimg=disabled
|
||||||
|
global.dest.bufimg.IntXrgb=disabled
|
||||||
|
global.dest.bufimg.IntArgb=disabled
|
||||||
|
global.dest.bufimg.IntArgbPre=disabled
|
||||||
|
global.dest.bufimg.3ByteBgr=disabled
|
||||||
|
global.dest.bufimg.ByteIndexed=disabled
|
||||||
|
global.dest.bufimg.ByteGray=disabled
|
||||||
|
global.dest.bufimg.4ByteAbgr=disabled
|
||||||
|
global.dest.bufimg.4ByteAbgrPre=disabled
|
||||||
|
global.dest.bufimg.custom=disabled
|
||||||
|
graphics.opts.anim=2
|
||||||
|
graphics.opts.sizes=250
|
||||||
|
graphics.opts.alpharule=SrcOver
|
||||||
|
graphics.opts.transform=ident
|
||||||
|
graphics.opts.extraalpha=Off
|
||||||
|
graphics.opts.xormode=Off
|
||||||
|
graphics.opts.clip=Off
|
||||||
|
graphics.opts.renderhint=Default
|
||||||
|
graphics.render.opts.paint=random
|
||||||
|
graphics.render.opts.alphacolor=Off
|
||||||
|
graphics.render.opts.antialias=On
|
||||||
|
graphics.render.opts.stroke=width1
|
||||||
|
graphics.render.tests.drawLine=disabled
|
||||||
|
graphics.render.tests.drawLineHoriz=disabled
|
||||||
|
graphics.render.tests.drawLineVert=disabled
|
||||||
|
graphics.render.tests.fillRect=disabled
|
||||||
|
graphics.render.tests.drawRect=disabled
|
||||||
|
graphics.render.tests.fillOval=disabled
|
||||||
|
graphics.render.tests.drawOval=disabled
|
||||||
|
graphics.render.tests.fillPoly=disabled
|
||||||
|
graphics.render.tests.drawPoly=enabled
|
||||||
|
graphics.render.tests.shape.fillCubic=disabled
|
||||||
|
graphics.render.tests.shape.drawCubic=disabled
|
||||||
|
graphics.render.tests.shape.fillEllipse2D=disabled
|
||||||
|
graphics.render.tests.shape.drawEllipse2D=disabled
|
||||||
|
graphics.imaging.src.offscr.opaque=disabled
|
||||||
|
graphics.imaging.src.offscr.bitmask=disabled
|
||||||
|
graphics.imaging.src.offscr.translucent=disabled
|
||||||
|
graphics.imaging.src.opqcompatimg.opaque=disabled
|
||||||
|
graphics.imaging.src.opqcompatimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.opqcompatimg.translucent=disabled
|
||||||
|
graphics.imaging.src.bmcompatimg.opaque=disabled
|
||||||
|
graphics.imaging.src.bmcompatimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.bmcompatimg.translucent=disabled
|
||||||
|
graphics.imaging.src.transcompatimg.opaque=disabled
|
||||||
|
graphics.imaging.src.transcompatimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.transcompatimg.translucent=disabled
|
||||||
|
graphics.imaging.src.opqvolimg.opaque=disabled
|
||||||
|
graphics.imaging.src.opqvolimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.opqvolimg.translucent=disabled
|
||||||
|
graphics.imaging.src.bmvolimg.opaque=disabled
|
||||||
|
graphics.imaging.src.bmvolimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.bmvolimg.translucent=disabled
|
||||||
|
graphics.imaging.src.transvolimg.opaque=disabled
|
||||||
|
graphics.imaging.src.transvolimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.transvolimg.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntXrgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntXrgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntXrgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgbPre.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgbPre.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgbPre.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteGray.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteGray.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteGray.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.3ByteBgr.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.3ByteBgr.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.3ByteBgr.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgr.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgr.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgr.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgrPre.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgrPre.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgrPre.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteIndexedBm.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteIndexedBm.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteIndexedBm.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntXrgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntXrgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntXrgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgbPre.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgbPre.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgbPre.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanaged3ByteBgr.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanaged3ByteBgr.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanaged3ByteBgr.translucent=disabled
|
||||||
|
graphics.imaging.benchmarks.opts.interpolation=Nearest neighbor
|
||||||
|
graphics.imaging.benchmarks.opts.touchsrc=Off
|
||||||
|
graphics.imaging.benchmarks.tests.drawimage=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagebg=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagescaleup=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagescaledown=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagescalesplit=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagetxform=disabled
|
||||||
|
graphics.imaging.imageops.opts.op=convolve3x3zero
|
||||||
|
graphics.imaging.imageops.tests.graphics2d.drawimageop=disabled
|
||||||
|
graphics.imaging.imageops.tests.bufimgop.filternull=disabled
|
||||||
|
graphics.imaging.imageops.tests.bufimgop.filtercached=disabled
|
||||||
|
graphics.imaging.imageops.tests.rasterop.filternull=disabled
|
||||||
|
graphics.imaging.imageops.tests.rasterop.filtercached=disabled
|
||||||
|
graphics.misc.copytests.copyAreaVert=disabled
|
||||||
|
graphics.misc.copytests.copyAreaHoriz=disabled
|
||||||
|
graphics.misc.copytests.copyAreaDiag=disabled
|
||||||
|
pixel.opts.renderto=Off
|
||||||
|
pixel.opts.renderfrom=Off
|
||||||
|
pixel.src.1BitBinary=disabled
|
||||||
|
pixel.src.2BitBinary=disabled
|
||||||
|
pixel.src.4BitBinary=disabled
|
||||||
|
pixel.src.ByteIndexed=disabled
|
||||||
|
pixel.src.ByteGray=disabled
|
||||||
|
pixel.src.Short555=disabled
|
||||||
|
pixel.src.Short565=disabled
|
||||||
|
pixel.src.ShortGray=disabled
|
||||||
|
pixel.src.3ByteBgr=disabled
|
||||||
|
pixel.src.4ByteAbgr=disabled
|
||||||
|
pixel.src.IntXrgb=disabled
|
||||||
|
pixel.src.IntXbgr=disabled
|
||||||
|
pixel.src.IntArgb=disabled
|
||||||
|
pixel.bimgtests.getrgb=disabled
|
||||||
|
pixel.bimgtests.setrgb=disabled
|
||||||
|
pixel.rastests.getdataelem=disabled
|
||||||
|
pixel.rastests.setdataelem=disabled
|
||||||
|
pixel.rastests.getpixel=disabled
|
||||||
|
pixel.rastests.setpixel=disabled
|
||||||
|
pixel.dbtests.getelem=disabled
|
||||||
|
pixel.dbtests.setelem=disabled
|
||||||
|
text.opts.data.tlength=16
|
||||||
|
text.opts.data.tscript=english
|
||||||
|
text.opts.font.fname=serif,physical
|
||||||
|
text.opts.font.fstyle=0
|
||||||
|
text.opts.font.fsize=13.0
|
||||||
|
text.opts.font.ftx=Identity
|
||||||
|
text.opts.graphics.textaa=Off
|
||||||
|
text.opts.graphics.tfm=Off
|
||||||
|
text.opts.graphics.gaa=Off
|
||||||
|
text.opts.graphics.gtx=Identity
|
||||||
|
text.opts.advopts.gvstyle=0
|
||||||
|
text.opts.advopts.tlruns=1
|
||||||
|
text.opts.advopts.maptype=FONT
|
||||||
|
text.Rendering.tests.drawString=disabled
|
||||||
|
text.Rendering.tests.drawChars=disabled
|
||||||
|
text.Rendering.tests.drawBytes=disabled
|
||||||
|
text.Rendering.tests.drawGlyphVectors=disabled
|
||||||
|
text.Rendering.tests.drawTextLayout=disabled
|
||||||
|
text.Measuring.tests.stringWidth=disabled
|
||||||
|
text.Measuring.tests.stringBounds=disabled
|
||||||
|
text.Measuring.tests.charsWidth=disabled
|
||||||
|
text.Measuring.tests.charsBounds=disabled
|
||||||
|
text.Measuring.tests.fontcandisplay=disabled
|
||||||
|
text.Measuring.tests.gvWidth=disabled
|
||||||
|
text.Measuring.tests.gvLogicalBounds=disabled
|
||||||
|
text.Measuring.tests.gvVisualBounds=disabled
|
||||||
|
text.Measuring.tests.gvPixelBounds=disabled
|
||||||
|
text.Measuring.tests.gvOutline=disabled
|
||||||
|
text.Measuring.tests.gvGlyphLogicalBounds=disabled
|
||||||
|
text.Measuring.tests.gvGlyphVisualBounds=disabled
|
||||||
|
text.Measuring.tests.gvGlyphPixelBounds=disabled
|
||||||
|
text.Measuring.tests.gvGlyphOutline=disabled
|
||||||
|
text.Measuring.tests.gvGlyphTransform=disabled
|
||||||
|
text.Measuring.tests.gvGlyphMetrics=disabled
|
||||||
|
text.Measuring.tests.tlAdvance=disabled
|
||||||
|
text.Measuring.tests.tlAscent=disabled
|
||||||
|
text.Measuring.tests.tlBounds=disabled
|
||||||
|
text.Measuring.tests.tlGetCaretInfo=disabled
|
||||||
|
text.Measuring.tests.tlGetNextHit=disabled
|
||||||
|
text.Measuring.tests.tlGetCaretShape=disabled
|
||||||
|
text.Measuring.tests.tlGetLogicalHighlightShape=disabled
|
||||||
|
text.Measuring.tests.tlHitTest=disabled
|
||||||
|
text.Measuring.tests.tlOutline=disabled
|
||||||
|
text.construction.tests.gvfromfontstring=disabled
|
||||||
|
text.construction.tests.gvfromfontchars=disabled
|
||||||
|
text.construction.tests.gvfromfontci=disabled
|
||||||
|
text.construction.tests.gvfromfontglyphs=disabled
|
||||||
|
text.construction.tests.gvfromfontlayout=disabled
|
||||||
|
text.construction.tests.tlfromfont=disabled
|
||||||
|
text.construction.tests.tlfrommap=disabled
|
||||||
|
imageio.opts.size=250
|
||||||
|
imageio.opts.content=photo
|
||||||
|
imageio.input.opts.general.source.file=disabled
|
||||||
|
imageio.input.opts.general.source.url=disabled
|
||||||
|
imageio.input.opts.general.source.byteArray=disabled
|
||||||
|
imageio.input.opts.imageio.useCache=Off
|
||||||
|
imageio.input.image.toolkit.opts.format=
|
||||||
|
imageio.input.image.toolkit.tests.createImage=disabled
|
||||||
|
imageio.input.image.imageio.opts.format=
|
||||||
|
imageio.input.image.imageio.tests.imageioRead=disabled
|
||||||
|
imageio.input.image.imageio.reader.opts.seekForwardOnly=On
|
||||||
|
imageio.input.image.imageio.reader.opts.ignoreMetadata=On
|
||||||
|
imageio.input.image.imageio.reader.opts.installListener=Off
|
||||||
|
imageio.input.image.imageio.reader.tests.read=disabled
|
||||||
|
imageio.input.image.imageio.reader.tests.getImageMetadata=disabled
|
||||||
|
imageio.input.stream.tests.construct=disabled
|
||||||
|
imageio.input.stream.tests.read=disabled
|
||||||
|
imageio.input.stream.tests.readByteArray=disabled
|
||||||
|
imageio.input.stream.tests.readFullyByteArray=disabled
|
||||||
|
imageio.input.stream.tests.readBit=disabled
|
||||||
|
imageio.input.stream.tests.readByte=disabled
|
||||||
|
imageio.input.stream.tests.readUnsignedByte=disabled
|
||||||
|
imageio.input.stream.tests.readShort=disabled
|
||||||
|
imageio.input.stream.tests.readUnsignedShort=disabled
|
||||||
|
imageio.input.stream.tests.readInt=disabled
|
||||||
|
imageio.input.stream.tests.readUnsignedInt=disabled
|
||||||
|
imageio.input.stream.tests.readFloat=disabled
|
||||||
|
imageio.input.stream.tests.readLong=disabled
|
||||||
|
imageio.input.stream.tests.readDouble=disabled
|
||||||
|
imageio.input.stream.tests.skipBytes=disabled
|
||||||
|
imageio.output.opts.general.dest.file=disabled
|
||||||
|
imageio.output.opts.general.dest.byteArray=disabled
|
||||||
|
imageio.output.opts.imageio.useCache=Off
|
||||||
|
imageio.output.image.imageio.opts.format=
|
||||||
|
imageio.output.image.imageio.tests.imageioWrite=disabled
|
||||||
|
imageio.output.image.imageio.writer.opts.installListener=Off
|
||||||
|
imageio.output.image.imageio.writer.tests.write=disabled
|
||||||
|
imageio.output.stream.tests.construct=disabled
|
||||||
|
imageio.output.stream.tests.write=disabled
|
||||||
|
imageio.output.stream.tests.writeByteArray=disabled
|
||||||
|
imageio.output.stream.tests.writeBit=disabled
|
||||||
|
imageio.output.stream.tests.writeByte=disabled
|
||||||
|
imageio.output.stream.tests.writeShort=disabled
|
||||||
|
imageio.output.stream.tests.writeInt=disabled
|
||||||
|
imageio.output.stream.tests.writeFloat=disabled
|
||||||
|
imageio.output.stream.tests.writeLong=disabled
|
||||||
|
imageio.output.stream.tests.writeDouble=disabled
|
||||||
|
cmm.opts.profiles=1001
|
||||||
|
cmm.colorconv.data.fromRGB=disabled
|
||||||
|
cmm.colorconv.data.toRGB=disabled
|
||||||
|
cmm.colorconv.data.fromCIEXYZ=disabled
|
||||||
|
cmm.colorconv.data.toCIEXYZ=disabled
|
||||||
|
cmm.colorconv.ccop.ccopOptions.size=250
|
||||||
|
cmm.colorconv.ccop.ccopOptions.content=photo
|
||||||
|
cmm.colorconv.ccop.ccopOptions.srcType=INT_RGB
|
||||||
|
cmm.colorconv.ccop.ccopOptions.dstType=INT_RGB
|
||||||
|
cmm.colorconv.ccop.op_img=disabled
|
||||||
|
cmm.colorconv.ccop.op_rst=disabled
|
||||||
|
cmm.colorconv.ccop.op_draw=disabled
|
||||||
|
cmm.colorconv.embed.embedOptions.Images=512x512
|
||||||
|
cmm.colorconv.embed.embd_img_read=disabled
|
||||||
|
cmm.profiles.getHeader=disabled
|
||||||
|
cmm.profiles.getNumComponents=disabled
|
||||||
267
jb/project/tools/perf/j2dbopts_poly250-rand_col.txt
Normal file
267
jb/project/tools/perf/j2dbopts_poly250-rand_col.txt
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
prog.verbose=disabled
|
||||||
|
prog.printresults=enabled
|
||||||
|
global.env.outputwidth=640
|
||||||
|
global.env.outputheight=480
|
||||||
|
global.env.runcount=5
|
||||||
|
global.env.repcount=0
|
||||||
|
global.env.testtime=2500
|
||||||
|
global.results.workunits=units
|
||||||
|
global.results.timeunits=sec
|
||||||
|
global.results.ratio=unitspersec
|
||||||
|
global.dest.offscreen=disabled
|
||||||
|
global.dest.frame.defaultframe=enabled
|
||||||
|
global.dest.frame.transframe=disabled
|
||||||
|
global.dest.frame.shapedframe=disabled
|
||||||
|
global.dest.frame.shapedtransframe=disabled
|
||||||
|
global.dest.compatimg.compatimg=disabled
|
||||||
|
global.dest.compatimg.opqcompatimg=disabled
|
||||||
|
global.dest.compatimg.bmcompatimg=disabled
|
||||||
|
global.dest.compatimg.transcompatimg=disabled
|
||||||
|
global.dest.volimg.volimg=disabled
|
||||||
|
global.dest.volimg.opqvolimg=disabled
|
||||||
|
global.dest.volimg.bmvolimg=disabled
|
||||||
|
global.dest.volimg.transvolimg=disabled
|
||||||
|
global.dest.bufimg.IntXrgb=disabled
|
||||||
|
global.dest.bufimg.IntArgb=disabled
|
||||||
|
global.dest.bufimg.IntArgbPre=disabled
|
||||||
|
global.dest.bufimg.3ByteBgr=disabled
|
||||||
|
global.dest.bufimg.ByteIndexed=disabled
|
||||||
|
global.dest.bufimg.ByteGray=disabled
|
||||||
|
global.dest.bufimg.4ByteAbgr=disabled
|
||||||
|
global.dest.bufimg.4ByteAbgrPre=disabled
|
||||||
|
global.dest.bufimg.custom=disabled
|
||||||
|
graphics.opts.anim=2
|
||||||
|
graphics.opts.sizes=250
|
||||||
|
graphics.opts.alpharule=SrcOver
|
||||||
|
graphics.opts.transform=ident
|
||||||
|
graphics.opts.extraalpha=Off
|
||||||
|
graphics.opts.xormode=Off
|
||||||
|
graphics.opts.clip=Off
|
||||||
|
graphics.opts.renderhint=Default
|
||||||
|
graphics.render.opts.paint=random
|
||||||
|
graphics.render.opts.alphacolor=Off
|
||||||
|
graphics.render.opts.antialias=Off
|
||||||
|
graphics.render.opts.stroke=width1
|
||||||
|
graphics.render.tests.drawLine=disabled
|
||||||
|
graphics.render.tests.drawLineHoriz=disabled
|
||||||
|
graphics.render.tests.drawLineVert=disabled
|
||||||
|
graphics.render.tests.fillRect=disabled
|
||||||
|
graphics.render.tests.drawRect=disabled
|
||||||
|
graphics.render.tests.fillOval=disabled
|
||||||
|
graphics.render.tests.drawOval=disabled
|
||||||
|
graphics.render.tests.fillPoly=disabled
|
||||||
|
graphics.render.tests.drawPoly=enabled
|
||||||
|
graphics.render.tests.shape.fillCubic=disabled
|
||||||
|
graphics.render.tests.shape.drawCubic=disabled
|
||||||
|
graphics.render.tests.shape.fillEllipse2D=disabled
|
||||||
|
graphics.render.tests.shape.drawEllipse2D=disabled
|
||||||
|
graphics.imaging.src.offscr.opaque=disabled
|
||||||
|
graphics.imaging.src.offscr.bitmask=disabled
|
||||||
|
graphics.imaging.src.offscr.translucent=disabled
|
||||||
|
graphics.imaging.src.opqcompatimg.opaque=disabled
|
||||||
|
graphics.imaging.src.opqcompatimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.opqcompatimg.translucent=disabled
|
||||||
|
graphics.imaging.src.bmcompatimg.opaque=disabled
|
||||||
|
graphics.imaging.src.bmcompatimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.bmcompatimg.translucent=disabled
|
||||||
|
graphics.imaging.src.transcompatimg.opaque=disabled
|
||||||
|
graphics.imaging.src.transcompatimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.transcompatimg.translucent=disabled
|
||||||
|
graphics.imaging.src.opqvolimg.opaque=disabled
|
||||||
|
graphics.imaging.src.opqvolimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.opqvolimg.translucent=disabled
|
||||||
|
graphics.imaging.src.bmvolimg.opaque=disabled
|
||||||
|
graphics.imaging.src.bmvolimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.bmvolimg.translucent=disabled
|
||||||
|
graphics.imaging.src.transvolimg.opaque=disabled
|
||||||
|
graphics.imaging.src.transvolimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.transvolimg.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntXrgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntXrgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntXrgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgbPre.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgbPre.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgbPre.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteGray.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteGray.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteGray.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.3ByteBgr.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.3ByteBgr.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.3ByteBgr.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgr.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgr.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgr.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgrPre.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgrPre.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgrPre.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteIndexedBm.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteIndexedBm.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteIndexedBm.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntXrgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntXrgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntXrgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgbPre.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgbPre.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgbPre.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanaged3ByteBgr.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanaged3ByteBgr.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanaged3ByteBgr.translucent=disabled
|
||||||
|
graphics.imaging.benchmarks.opts.interpolation=Nearest neighbor
|
||||||
|
graphics.imaging.benchmarks.opts.touchsrc=Off
|
||||||
|
graphics.imaging.benchmarks.tests.drawimage=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagebg=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagescaleup=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagescaledown=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagescalesplit=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagetxform=disabled
|
||||||
|
graphics.imaging.imageops.opts.op=convolve3x3zero
|
||||||
|
graphics.imaging.imageops.tests.graphics2d.drawimageop=disabled
|
||||||
|
graphics.imaging.imageops.tests.bufimgop.filternull=disabled
|
||||||
|
graphics.imaging.imageops.tests.bufimgop.filtercached=disabled
|
||||||
|
graphics.imaging.imageops.tests.rasterop.filternull=disabled
|
||||||
|
graphics.imaging.imageops.tests.rasterop.filtercached=disabled
|
||||||
|
graphics.misc.copytests.copyAreaVert=disabled
|
||||||
|
graphics.misc.copytests.copyAreaHoriz=disabled
|
||||||
|
graphics.misc.copytests.copyAreaDiag=disabled
|
||||||
|
pixel.opts.renderto=Off
|
||||||
|
pixel.opts.renderfrom=Off
|
||||||
|
pixel.src.1BitBinary=disabled
|
||||||
|
pixel.src.2BitBinary=disabled
|
||||||
|
pixel.src.4BitBinary=disabled
|
||||||
|
pixel.src.ByteIndexed=disabled
|
||||||
|
pixel.src.ByteGray=disabled
|
||||||
|
pixel.src.Short555=disabled
|
||||||
|
pixel.src.Short565=disabled
|
||||||
|
pixel.src.ShortGray=disabled
|
||||||
|
pixel.src.3ByteBgr=disabled
|
||||||
|
pixel.src.4ByteAbgr=disabled
|
||||||
|
pixel.src.IntXrgb=disabled
|
||||||
|
pixel.src.IntXbgr=disabled
|
||||||
|
pixel.src.IntArgb=disabled
|
||||||
|
pixel.bimgtests.getrgb=disabled
|
||||||
|
pixel.bimgtests.setrgb=disabled
|
||||||
|
pixel.rastests.getdataelem=disabled
|
||||||
|
pixel.rastests.setdataelem=disabled
|
||||||
|
pixel.rastests.getpixel=disabled
|
||||||
|
pixel.rastests.setpixel=disabled
|
||||||
|
pixel.dbtests.getelem=disabled
|
||||||
|
pixel.dbtests.setelem=disabled
|
||||||
|
text.opts.data.tlength=16
|
||||||
|
text.opts.data.tscript=english
|
||||||
|
text.opts.font.fname=serif,physical
|
||||||
|
text.opts.font.fstyle=0
|
||||||
|
text.opts.font.fsize=13.0
|
||||||
|
text.opts.font.ftx=Identity
|
||||||
|
text.opts.graphics.textaa=Off
|
||||||
|
text.opts.graphics.tfm=Off
|
||||||
|
text.opts.graphics.gaa=Off
|
||||||
|
text.opts.graphics.gtx=Identity
|
||||||
|
text.opts.advopts.gvstyle=0
|
||||||
|
text.opts.advopts.tlruns=1
|
||||||
|
text.opts.advopts.maptype=FONT
|
||||||
|
text.Rendering.tests.drawString=disabled
|
||||||
|
text.Rendering.tests.drawChars=disabled
|
||||||
|
text.Rendering.tests.drawBytes=disabled
|
||||||
|
text.Rendering.tests.drawGlyphVectors=disabled
|
||||||
|
text.Rendering.tests.drawTextLayout=disabled
|
||||||
|
text.Measuring.tests.stringWidth=disabled
|
||||||
|
text.Measuring.tests.stringBounds=disabled
|
||||||
|
text.Measuring.tests.charsWidth=disabled
|
||||||
|
text.Measuring.tests.charsBounds=disabled
|
||||||
|
text.Measuring.tests.fontcandisplay=disabled
|
||||||
|
text.Measuring.tests.gvWidth=disabled
|
||||||
|
text.Measuring.tests.gvLogicalBounds=disabled
|
||||||
|
text.Measuring.tests.gvVisualBounds=disabled
|
||||||
|
text.Measuring.tests.gvPixelBounds=disabled
|
||||||
|
text.Measuring.tests.gvOutline=disabled
|
||||||
|
text.Measuring.tests.gvGlyphLogicalBounds=disabled
|
||||||
|
text.Measuring.tests.gvGlyphVisualBounds=disabled
|
||||||
|
text.Measuring.tests.gvGlyphPixelBounds=disabled
|
||||||
|
text.Measuring.tests.gvGlyphOutline=disabled
|
||||||
|
text.Measuring.tests.gvGlyphTransform=disabled
|
||||||
|
text.Measuring.tests.gvGlyphMetrics=disabled
|
||||||
|
text.Measuring.tests.tlAdvance=disabled
|
||||||
|
text.Measuring.tests.tlAscent=disabled
|
||||||
|
text.Measuring.tests.tlBounds=disabled
|
||||||
|
text.Measuring.tests.tlGetCaretInfo=disabled
|
||||||
|
text.Measuring.tests.tlGetNextHit=disabled
|
||||||
|
text.Measuring.tests.tlGetCaretShape=disabled
|
||||||
|
text.Measuring.tests.tlGetLogicalHighlightShape=disabled
|
||||||
|
text.Measuring.tests.tlHitTest=disabled
|
||||||
|
text.Measuring.tests.tlOutline=disabled
|
||||||
|
text.construction.tests.gvfromfontstring=disabled
|
||||||
|
text.construction.tests.gvfromfontchars=disabled
|
||||||
|
text.construction.tests.gvfromfontci=disabled
|
||||||
|
text.construction.tests.gvfromfontglyphs=disabled
|
||||||
|
text.construction.tests.gvfromfontlayout=disabled
|
||||||
|
text.construction.tests.tlfromfont=disabled
|
||||||
|
text.construction.tests.tlfrommap=disabled
|
||||||
|
imageio.opts.size=250
|
||||||
|
imageio.opts.content=photo
|
||||||
|
imageio.input.opts.general.source.file=disabled
|
||||||
|
imageio.input.opts.general.source.url=disabled
|
||||||
|
imageio.input.opts.general.source.byteArray=disabled
|
||||||
|
imageio.input.opts.imageio.useCache=Off
|
||||||
|
imageio.input.image.toolkit.opts.format=
|
||||||
|
imageio.input.image.toolkit.tests.createImage=disabled
|
||||||
|
imageio.input.image.imageio.opts.format=
|
||||||
|
imageio.input.image.imageio.tests.imageioRead=disabled
|
||||||
|
imageio.input.image.imageio.reader.opts.seekForwardOnly=On
|
||||||
|
imageio.input.image.imageio.reader.opts.ignoreMetadata=On
|
||||||
|
imageio.input.image.imageio.reader.opts.installListener=Off
|
||||||
|
imageio.input.image.imageio.reader.tests.read=disabled
|
||||||
|
imageio.input.image.imageio.reader.tests.getImageMetadata=disabled
|
||||||
|
imageio.input.stream.tests.construct=disabled
|
||||||
|
imageio.input.stream.tests.read=disabled
|
||||||
|
imageio.input.stream.tests.readByteArray=disabled
|
||||||
|
imageio.input.stream.tests.readFullyByteArray=disabled
|
||||||
|
imageio.input.stream.tests.readBit=disabled
|
||||||
|
imageio.input.stream.tests.readByte=disabled
|
||||||
|
imageio.input.stream.tests.readUnsignedByte=disabled
|
||||||
|
imageio.input.stream.tests.readShort=disabled
|
||||||
|
imageio.input.stream.tests.readUnsignedShort=disabled
|
||||||
|
imageio.input.stream.tests.readInt=disabled
|
||||||
|
imageio.input.stream.tests.readUnsignedInt=disabled
|
||||||
|
imageio.input.stream.tests.readFloat=disabled
|
||||||
|
imageio.input.stream.tests.readLong=disabled
|
||||||
|
imageio.input.stream.tests.readDouble=disabled
|
||||||
|
imageio.input.stream.tests.skipBytes=disabled
|
||||||
|
imageio.output.opts.general.dest.file=disabled
|
||||||
|
imageio.output.opts.general.dest.byteArray=disabled
|
||||||
|
imageio.output.opts.imageio.useCache=Off
|
||||||
|
imageio.output.image.imageio.opts.format=
|
||||||
|
imageio.output.image.imageio.tests.imageioWrite=disabled
|
||||||
|
imageio.output.image.imageio.writer.opts.installListener=Off
|
||||||
|
imageio.output.image.imageio.writer.tests.write=disabled
|
||||||
|
imageio.output.stream.tests.construct=disabled
|
||||||
|
imageio.output.stream.tests.write=disabled
|
||||||
|
imageio.output.stream.tests.writeByteArray=disabled
|
||||||
|
imageio.output.stream.tests.writeBit=disabled
|
||||||
|
imageio.output.stream.tests.writeByte=disabled
|
||||||
|
imageio.output.stream.tests.writeShort=disabled
|
||||||
|
imageio.output.stream.tests.writeInt=disabled
|
||||||
|
imageio.output.stream.tests.writeFloat=disabled
|
||||||
|
imageio.output.stream.tests.writeLong=disabled
|
||||||
|
imageio.output.stream.tests.writeDouble=disabled
|
||||||
|
cmm.opts.profiles=1001
|
||||||
|
cmm.colorconv.data.fromRGB=disabled
|
||||||
|
cmm.colorconv.data.toRGB=disabled
|
||||||
|
cmm.colorconv.data.fromCIEXYZ=disabled
|
||||||
|
cmm.colorconv.data.toCIEXYZ=disabled
|
||||||
|
cmm.colorconv.ccop.ccopOptions.size=250
|
||||||
|
cmm.colorconv.ccop.ccopOptions.content=photo
|
||||||
|
cmm.colorconv.ccop.ccopOptions.srcType=INT_RGB
|
||||||
|
cmm.colorconv.ccop.ccopOptions.dstType=INT_RGB
|
||||||
|
cmm.colorconv.ccop.op_img=disabled
|
||||||
|
cmm.colorconv.ccop.op_rst=disabled
|
||||||
|
cmm.colorconv.ccop.op_draw=disabled
|
||||||
|
cmm.colorconv.embed.embedOptions.Images=512x512
|
||||||
|
cmm.colorconv.embed.embd_img_read=disabled
|
||||||
|
cmm.profiles.getHeader=disabled
|
||||||
|
cmm.profiles.getNumComponents=disabled
|
||||||
267
jb/project/tools/perf/j2dbopts_poly250.txt
Normal file
267
jb/project/tools/perf/j2dbopts_poly250.txt
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
prog.verbose=disabled
|
||||||
|
prog.printresults=enabled
|
||||||
|
global.env.outputwidth=640
|
||||||
|
global.env.outputheight=480
|
||||||
|
global.env.runcount=5
|
||||||
|
global.env.repcount=0
|
||||||
|
global.env.testtime=2500
|
||||||
|
global.results.workunits=units
|
||||||
|
global.results.timeunits=sec
|
||||||
|
global.results.ratio=unitspersec
|
||||||
|
global.dest.offscreen=disabled
|
||||||
|
global.dest.frame.defaultframe=enabled
|
||||||
|
global.dest.frame.transframe=disabled
|
||||||
|
global.dest.frame.shapedframe=disabled
|
||||||
|
global.dest.frame.shapedtransframe=disabled
|
||||||
|
global.dest.compatimg.compatimg=disabled
|
||||||
|
global.dest.compatimg.opqcompatimg=disabled
|
||||||
|
global.dest.compatimg.bmcompatimg=disabled
|
||||||
|
global.dest.compatimg.transcompatimg=disabled
|
||||||
|
global.dest.volimg.volimg=disabled
|
||||||
|
global.dest.volimg.opqvolimg=disabled
|
||||||
|
global.dest.volimg.bmvolimg=disabled
|
||||||
|
global.dest.volimg.transvolimg=disabled
|
||||||
|
global.dest.bufimg.IntXrgb=disabled
|
||||||
|
global.dest.bufimg.IntArgb=disabled
|
||||||
|
global.dest.bufimg.IntArgbPre=disabled
|
||||||
|
global.dest.bufimg.3ByteBgr=disabled
|
||||||
|
global.dest.bufimg.ByteIndexed=disabled
|
||||||
|
global.dest.bufimg.ByteGray=disabled
|
||||||
|
global.dest.bufimg.4ByteAbgr=disabled
|
||||||
|
global.dest.bufimg.4ByteAbgrPre=disabled
|
||||||
|
global.dest.bufimg.custom=disabled
|
||||||
|
graphics.opts.anim=2
|
||||||
|
graphics.opts.sizes=250
|
||||||
|
graphics.opts.alpharule=SrcOver
|
||||||
|
graphics.opts.transform=ident
|
||||||
|
graphics.opts.extraalpha=Off
|
||||||
|
graphics.opts.xormode=Off
|
||||||
|
graphics.opts.clip=Off
|
||||||
|
graphics.opts.renderhint=Default
|
||||||
|
graphics.render.opts.paint=single
|
||||||
|
graphics.render.opts.alphacolor=Off
|
||||||
|
graphics.render.opts.antialias=Off
|
||||||
|
graphics.render.opts.stroke=width1
|
||||||
|
graphics.render.tests.drawLine=disabled
|
||||||
|
graphics.render.tests.drawLineHoriz=disabled
|
||||||
|
graphics.render.tests.drawLineVert=disabled
|
||||||
|
graphics.render.tests.fillRect=disabled
|
||||||
|
graphics.render.tests.drawRect=disabled
|
||||||
|
graphics.render.tests.fillOval=disabled
|
||||||
|
graphics.render.tests.drawOval=disabled
|
||||||
|
graphics.render.tests.fillPoly=disabled
|
||||||
|
graphics.render.tests.drawPoly=enabled
|
||||||
|
graphics.render.tests.shape.fillCubic=disabled
|
||||||
|
graphics.render.tests.shape.drawCubic=disabled
|
||||||
|
graphics.render.tests.shape.fillEllipse2D=disabled
|
||||||
|
graphics.render.tests.shape.drawEllipse2D=disabled
|
||||||
|
graphics.imaging.src.offscr.opaque=disabled
|
||||||
|
graphics.imaging.src.offscr.bitmask=disabled
|
||||||
|
graphics.imaging.src.offscr.translucent=disabled
|
||||||
|
graphics.imaging.src.opqcompatimg.opaque=disabled
|
||||||
|
graphics.imaging.src.opqcompatimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.opqcompatimg.translucent=disabled
|
||||||
|
graphics.imaging.src.bmcompatimg.opaque=disabled
|
||||||
|
graphics.imaging.src.bmcompatimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.bmcompatimg.translucent=disabled
|
||||||
|
graphics.imaging.src.transcompatimg.opaque=disabled
|
||||||
|
graphics.imaging.src.transcompatimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.transcompatimg.translucent=disabled
|
||||||
|
graphics.imaging.src.opqvolimg.opaque=disabled
|
||||||
|
graphics.imaging.src.opqvolimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.opqvolimg.translucent=disabled
|
||||||
|
graphics.imaging.src.bmvolimg.opaque=disabled
|
||||||
|
graphics.imaging.src.bmvolimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.bmvolimg.translucent=disabled
|
||||||
|
graphics.imaging.src.transvolimg.opaque=disabled
|
||||||
|
graphics.imaging.src.transvolimg.bitmask=disabled
|
||||||
|
graphics.imaging.src.transvolimg.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntXrgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntXrgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntXrgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgbPre.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgbPre.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.IntArgbPre.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteGray.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteGray.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteGray.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.3ByteBgr.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.3ByteBgr.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.3ByteBgr.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgr.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgr.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgr.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgrPre.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgrPre.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.4ByteAbgrPre.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteIndexedBm.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteIndexedBm.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.ByteIndexedBm.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntXrgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntXrgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntXrgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgb.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgb.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgb.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgbPre.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgbPre.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanagedIntArgbPre.translucent=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanaged3ByteBgr.opaque=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanaged3ByteBgr.bitmask=disabled
|
||||||
|
graphics.imaging.src.bufimg.unmanaged3ByteBgr.translucent=disabled
|
||||||
|
graphics.imaging.benchmarks.opts.interpolation=Nearest neighbor
|
||||||
|
graphics.imaging.benchmarks.opts.touchsrc=Off
|
||||||
|
graphics.imaging.benchmarks.tests.drawimage=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagebg=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagescaleup=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagescaledown=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagescalesplit=disabled
|
||||||
|
graphics.imaging.benchmarks.tests.drawimagetxform=disabled
|
||||||
|
graphics.imaging.imageops.opts.op=convolve3x3zero
|
||||||
|
graphics.imaging.imageops.tests.graphics2d.drawimageop=disabled
|
||||||
|
graphics.imaging.imageops.tests.bufimgop.filternull=disabled
|
||||||
|
graphics.imaging.imageops.tests.bufimgop.filtercached=disabled
|
||||||
|
graphics.imaging.imageops.tests.rasterop.filternull=disabled
|
||||||
|
graphics.imaging.imageops.tests.rasterop.filtercached=disabled
|
||||||
|
graphics.misc.copytests.copyAreaVert=disabled
|
||||||
|
graphics.misc.copytests.copyAreaHoriz=disabled
|
||||||
|
graphics.misc.copytests.copyAreaDiag=disabled
|
||||||
|
pixel.opts.renderto=Off
|
||||||
|
pixel.opts.renderfrom=Off
|
||||||
|
pixel.src.1BitBinary=disabled
|
||||||
|
pixel.src.2BitBinary=disabled
|
||||||
|
pixel.src.4BitBinary=disabled
|
||||||
|
pixel.src.ByteIndexed=disabled
|
||||||
|
pixel.src.ByteGray=disabled
|
||||||
|
pixel.src.Short555=disabled
|
||||||
|
pixel.src.Short565=disabled
|
||||||
|
pixel.src.ShortGray=disabled
|
||||||
|
pixel.src.3ByteBgr=disabled
|
||||||
|
pixel.src.4ByteAbgr=disabled
|
||||||
|
pixel.src.IntXrgb=disabled
|
||||||
|
pixel.src.IntXbgr=disabled
|
||||||
|
pixel.src.IntArgb=disabled
|
||||||
|
pixel.bimgtests.getrgb=disabled
|
||||||
|
pixel.bimgtests.setrgb=disabled
|
||||||
|
pixel.rastests.getdataelem=disabled
|
||||||
|
pixel.rastests.setdataelem=disabled
|
||||||
|
pixel.rastests.getpixel=disabled
|
||||||
|
pixel.rastests.setpixel=disabled
|
||||||
|
pixel.dbtests.getelem=disabled
|
||||||
|
pixel.dbtests.setelem=disabled
|
||||||
|
text.opts.data.tlength=16
|
||||||
|
text.opts.data.tscript=english
|
||||||
|
text.opts.font.fname=serif,physical
|
||||||
|
text.opts.font.fstyle=0
|
||||||
|
text.opts.font.fsize=13.0
|
||||||
|
text.opts.font.ftx=Identity
|
||||||
|
text.opts.graphics.textaa=Off
|
||||||
|
text.opts.graphics.tfm=Off
|
||||||
|
text.opts.graphics.gaa=Off
|
||||||
|
text.opts.graphics.gtx=Identity
|
||||||
|
text.opts.advopts.gvstyle=0
|
||||||
|
text.opts.advopts.tlruns=1
|
||||||
|
text.opts.advopts.maptype=FONT
|
||||||
|
text.Rendering.tests.drawString=disabled
|
||||||
|
text.Rendering.tests.drawChars=disabled
|
||||||
|
text.Rendering.tests.drawBytes=disabled
|
||||||
|
text.Rendering.tests.drawGlyphVectors=disabled
|
||||||
|
text.Rendering.tests.drawTextLayout=disabled
|
||||||
|
text.Measuring.tests.stringWidth=disabled
|
||||||
|
text.Measuring.tests.stringBounds=disabled
|
||||||
|
text.Measuring.tests.charsWidth=disabled
|
||||||
|
text.Measuring.tests.charsBounds=disabled
|
||||||
|
text.Measuring.tests.fontcandisplay=disabled
|
||||||
|
text.Measuring.tests.gvWidth=disabled
|
||||||
|
text.Measuring.tests.gvLogicalBounds=disabled
|
||||||
|
text.Measuring.tests.gvVisualBounds=disabled
|
||||||
|
text.Measuring.tests.gvPixelBounds=disabled
|
||||||
|
text.Measuring.tests.gvOutline=disabled
|
||||||
|
text.Measuring.tests.gvGlyphLogicalBounds=disabled
|
||||||
|
text.Measuring.tests.gvGlyphVisualBounds=disabled
|
||||||
|
text.Measuring.tests.gvGlyphPixelBounds=disabled
|
||||||
|
text.Measuring.tests.gvGlyphOutline=disabled
|
||||||
|
text.Measuring.tests.gvGlyphTransform=disabled
|
||||||
|
text.Measuring.tests.gvGlyphMetrics=disabled
|
||||||
|
text.Measuring.tests.tlAdvance=disabled
|
||||||
|
text.Measuring.tests.tlAscent=disabled
|
||||||
|
text.Measuring.tests.tlBounds=disabled
|
||||||
|
text.Measuring.tests.tlGetCaretInfo=disabled
|
||||||
|
text.Measuring.tests.tlGetNextHit=disabled
|
||||||
|
text.Measuring.tests.tlGetCaretShape=disabled
|
||||||
|
text.Measuring.tests.tlGetLogicalHighlightShape=disabled
|
||||||
|
text.Measuring.tests.tlHitTest=disabled
|
||||||
|
text.Measuring.tests.tlOutline=disabled
|
||||||
|
text.construction.tests.gvfromfontstring=disabled
|
||||||
|
text.construction.tests.gvfromfontchars=disabled
|
||||||
|
text.construction.tests.gvfromfontci=disabled
|
||||||
|
text.construction.tests.gvfromfontglyphs=disabled
|
||||||
|
text.construction.tests.gvfromfontlayout=disabled
|
||||||
|
text.construction.tests.tlfromfont=disabled
|
||||||
|
text.construction.tests.tlfrommap=disabled
|
||||||
|
imageio.opts.size=250
|
||||||
|
imageio.opts.content=photo
|
||||||
|
imageio.input.opts.general.source.file=disabled
|
||||||
|
imageio.input.opts.general.source.url=disabled
|
||||||
|
imageio.input.opts.general.source.byteArray=disabled
|
||||||
|
imageio.input.opts.imageio.useCache=Off
|
||||||
|
imageio.input.image.toolkit.opts.format=
|
||||||
|
imageio.input.image.toolkit.tests.createImage=disabled
|
||||||
|
imageio.input.image.imageio.opts.format=
|
||||||
|
imageio.input.image.imageio.tests.imageioRead=disabled
|
||||||
|
imageio.input.image.imageio.reader.opts.seekForwardOnly=On
|
||||||
|
imageio.input.image.imageio.reader.opts.ignoreMetadata=On
|
||||||
|
imageio.input.image.imageio.reader.opts.installListener=Off
|
||||||
|
imageio.input.image.imageio.reader.tests.read=disabled
|
||||||
|
imageio.input.image.imageio.reader.tests.getImageMetadata=disabled
|
||||||
|
imageio.input.stream.tests.construct=disabled
|
||||||
|
imageio.input.stream.tests.read=disabled
|
||||||
|
imageio.input.stream.tests.readByteArray=disabled
|
||||||
|
imageio.input.stream.tests.readFullyByteArray=disabled
|
||||||
|
imageio.input.stream.tests.readBit=disabled
|
||||||
|
imageio.input.stream.tests.readByte=disabled
|
||||||
|
imageio.input.stream.tests.readUnsignedByte=disabled
|
||||||
|
imageio.input.stream.tests.readShort=disabled
|
||||||
|
imageio.input.stream.tests.readUnsignedShort=disabled
|
||||||
|
imageio.input.stream.tests.readInt=disabled
|
||||||
|
imageio.input.stream.tests.readUnsignedInt=disabled
|
||||||
|
imageio.input.stream.tests.readFloat=disabled
|
||||||
|
imageio.input.stream.tests.readLong=disabled
|
||||||
|
imageio.input.stream.tests.readDouble=disabled
|
||||||
|
imageio.input.stream.tests.skipBytes=disabled
|
||||||
|
imageio.output.opts.general.dest.file=disabled
|
||||||
|
imageio.output.opts.general.dest.byteArray=disabled
|
||||||
|
imageio.output.opts.imageio.useCache=Off
|
||||||
|
imageio.output.image.imageio.opts.format=
|
||||||
|
imageio.output.image.imageio.tests.imageioWrite=disabled
|
||||||
|
imageio.output.image.imageio.writer.opts.installListener=Off
|
||||||
|
imageio.output.image.imageio.writer.tests.write=disabled
|
||||||
|
imageio.output.stream.tests.construct=disabled
|
||||||
|
imageio.output.stream.tests.write=disabled
|
||||||
|
imageio.output.stream.tests.writeByteArray=disabled
|
||||||
|
imageio.output.stream.tests.writeBit=disabled
|
||||||
|
imageio.output.stream.tests.writeByte=disabled
|
||||||
|
imageio.output.stream.tests.writeShort=disabled
|
||||||
|
imageio.output.stream.tests.writeInt=disabled
|
||||||
|
imageio.output.stream.tests.writeFloat=disabled
|
||||||
|
imageio.output.stream.tests.writeLong=disabled
|
||||||
|
imageio.output.stream.tests.writeDouble=disabled
|
||||||
|
cmm.opts.profiles=1001
|
||||||
|
cmm.colorconv.data.fromRGB=disabled
|
||||||
|
cmm.colorconv.data.toRGB=disabled
|
||||||
|
cmm.colorconv.data.fromCIEXYZ=disabled
|
||||||
|
cmm.colorconv.data.toCIEXYZ=disabled
|
||||||
|
cmm.colorconv.ccop.ccopOptions.size=250
|
||||||
|
cmm.colorconv.ccop.ccopOptions.content=photo
|
||||||
|
cmm.colorconv.ccop.ccopOptions.srcType=INT_RGB
|
||||||
|
cmm.colorconv.ccop.ccopOptions.dstType=INT_RGB
|
||||||
|
cmm.colorconv.ccop.op_img=disabled
|
||||||
|
cmm.colorconv.ccop.op_rst=disabled
|
||||||
|
cmm.colorconv.ccop.op_draw=disabled
|
||||||
|
cmm.colorconv.embed.embedOptions.Images=512x512
|
||||||
|
cmm.colorconv.embed.embd_img_read=disabled
|
||||||
|
cmm.profiles.getHeader=disabled
|
||||||
|
cmm.profiles.getNumComponents=disabled
|
||||||
49
jb/project/tools/perf/run_dc.sh
Executable file
49
jb/project/tools/perf/run_dc.sh
Executable file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
BASE_DIR=$(dirname "$0")
|
||||||
|
source $BASE_DIR/run_inc.sh
|
||||||
|
|
||||||
|
if [ -z "$DACAPOTEST_DIR" ]; then
|
||||||
|
DACAPOTEST_DIR="./"
|
||||||
|
fi
|
||||||
|
|
||||||
|
DACAPOTEST=${DACAPOTEST:='dacapo-9.12-bach.jar'}
|
||||||
|
if [ -z "$DACAPOTEST" ]; then
|
||||||
|
if [ ! -f "$DACAPOTEST_DIR/$DACAPOTEST" ]; then
|
||||||
|
echo "ERR### cannot find $DACAPOTEST_DIR/$DACAPOTEST"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
TRACE=false
|
||||||
|
|
||||||
|
if [[ ($# -eq 1 && "$1" == "-help") ]] ; then
|
||||||
|
echo "Usage: run_dc.sh [rendering_options]"
|
||||||
|
echo "$RENDER_OPS_DOC"
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
OPTS=""
|
||||||
|
# use time + repeat
|
||||||
|
OPTS="$OPTS -no-validation $1"
|
||||||
|
|
||||||
|
echo "OPTS: $OPTS"
|
||||||
|
|
||||||
|
echo "Unit: Milliseconds (not FPS), lower is better"
|
||||||
|
|
||||||
|
for i in `seq $N` ; do
|
||||||
|
if [ $i -eq 1 ]; then
|
||||||
|
echo x
|
||||||
|
fi
|
||||||
|
|
||||||
|
$JAVA \
|
||||||
|
-jar $DACAPOTEST $OPTS 2>&1 | tee dacapo_$1$MODE_$i.log | grep "PASSED" | awk '{print $7 }'
|
||||||
|
|
||||||
|
if [ $i -ne $N ]; then
|
||||||
|
sleep $ST
|
||||||
|
fi
|
||||||
|
done | $DATAMASH_CMD | expand -t12 > dacapo_$1.log
|
||||||
102
jb/project/tools/perf/run_inc.sh
Normal file
102
jb/project/tools/perf/run_inc.sh
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
ST=1 # sleep between iterations
|
||||||
|
|
||||||
|
# number of iterations (jvm spawned)
|
||||||
|
N=5
|
||||||
|
# number of repeats (within jvm)
|
||||||
|
R=3
|
||||||
|
|
||||||
|
type datamash 2>&1 > /dev/null ; ec=$?
|
||||||
|
if [ $ec -ne 0 ] ; then
|
||||||
|
echo "Missing datamash utility"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
DATAMASH_CMD="datamash --format=%.2f -H count x min x q1 x median x q3 x max x mad x"
|
||||||
|
|
||||||
|
J2D_OPTS=""
|
||||||
|
OS=""
|
||||||
|
case "$OSTYPE" in
|
||||||
|
linux*) echo "Linux"
|
||||||
|
;;
|
||||||
|
darwin*) echo "OSX"
|
||||||
|
;;
|
||||||
|
*) echo "unknown: $OSTYPE"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
read -r -d '' RENDER_OPS_DOC << EOM
|
||||||
|
rendering_options:
|
||||||
|
-opengl # OpenGL pipeline (windows, linux, macOS)
|
||||||
|
-metal # Metal pipeline (macOS)
|
||||||
|
-vulkan # Vulkan pipeline (WLToolkit)
|
||||||
|
-tk tk_name # AWT toolkit (linux: WLToolkit|XToolkit)
|
||||||
|
-scale # UI scale
|
||||||
|
EOM
|
||||||
|
|
||||||
|
while [ $# -ge 1 ] ; do
|
||||||
|
case "$1" in
|
||||||
|
-opengl) J2D_OPTS=$J2D_OPTS" -Dsun.java2d.opengl=true"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-metal) J2D_OPTS=$J2D_OPTS" -Dsun.java2d.metal=true"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-vulkan) J2D_OPTS=$J2D_OPTS" -Dsun.java2d.vulkan=true"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-tk) shift
|
||||||
|
if [ $# -ge 1 ] ; then
|
||||||
|
J2D_OPTS=$J2D_OPTS" -Dawt.toolkit.name="$1
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
echo "Invalid parameters for -tk option. Use: -tk tkname"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-scale) shift
|
||||||
|
if [ $# -ge 1 ] ; then
|
||||||
|
J2D_OPTS=$J2D_OPTS" -Dsun.java2d.uiScale="$1
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
echo "Invalid parameters for -scale option. Use: -scale scale"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-dSync) shift
|
||||||
|
if [ $# -ge 1 ] ; then
|
||||||
|
J2D_OPTS=$J2D_OPTS" -Dsun.java2d.metal.displaySync="$1
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
echo "Invalid parameters for -dSync option. Use: -dSync [true|false]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-jdk) shift
|
||||||
|
if [ $# -ge 1 ] ; then
|
||||||
|
JAVA=$1/bin/java
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
echo "Invalid parameters for -jdk option"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*) break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
if [ -z "$JAVA" ] ; then
|
||||||
|
BUILD_DIR=`find $BASE_DIR/../../../../build -name '*-release' -type d | head -n 1`
|
||||||
|
JAVA=`find $BUILD_DIR/images/jdk -name java -type f | head -n 1`
|
||||||
|
fi
|
||||||
|
|
||||||
|
JAVA_HOME=`dirname $JAVA`/../
|
||||||
|
"$JAVA" -version
|
||||||
|
|
||||||
|
LANG=C
|
||||||
|
|
||||||
|
WS_ROOT=$BASE_DIR/../../../..
|
||||||
|
|
||||||
|
echo "N: $N"
|
||||||
|
echo "R: $R"
|
||||||
|
echo "J2D_OPTS: $J2D_OPTS"
|
||||||
53
jb/project/tools/perf/run_j2b.sh
Executable file
53
jb/project/tools/perf/run_j2b.sh
Executable file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
BASE_DIR=$(dirname "$0")
|
||||||
|
source $BASE_DIR/run_inc.sh
|
||||||
|
|
||||||
|
J2DBENCH_DIR=$WS_ROOT/src/demo/share/java2d/J2DBench
|
||||||
|
|
||||||
|
if [ -z "$J2DBENCH" ]; then
|
||||||
|
if [ ! -f "$J2DBENCH_DIR/dist/J2DBench.jar" ]; then
|
||||||
|
PATH=$JAVA_HOME/bin:$PATH make -C $J2DBENCH_DIR
|
||||||
|
fi
|
||||||
|
if [ ! -f "$J2DBENCH_DIR/dist/J2DBench.jar" ]; then
|
||||||
|
echo "Cannot build J2DBench. You may use J2DBench env variable instead pointing to the J2DBench.jar."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
J2DBENCH=$J2DBENCH_DIR/dist/J2DBench.jar
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $# -ne 1 ] ; then
|
||||||
|
echo "Usage: run_j2b.sh [rendering_options] bench_name"
|
||||||
|
echo
|
||||||
|
echo "bench_name: poly250 poly250-rand_col poly250-AA-rand_col"
|
||||||
|
echo ""
|
||||||
|
echo "$RENDER_OPS_DOC"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$BASE_DIR/j2dbopts_$1.txt" ]; then
|
||||||
|
echo "Unknown test: $1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OPTS="j2dbopts_$1.txt"
|
||||||
|
#OPTS=j2dbopts_poly250.txt
|
||||||
|
#OPTS=j2dbopts_poly250-rand_col.txt
|
||||||
|
#OPTS=j2dbopts_poly250-AA-rand_col.txt
|
||||||
|
|
||||||
|
echo "OPTS: $OPTS"
|
||||||
|
|
||||||
|
for i in `seq $N`; do
|
||||||
|
if [ $i -eq 1 ]; then
|
||||||
|
echo x
|
||||||
|
fi
|
||||||
|
echo `$JAVA $J2D_OPTS -jar $J2DBENCH \
|
||||||
|
-batch -loadopts $BASE_DIR/$OPTS -saveres pl.res \
|
||||||
|
-title pl -desc pl | awk '/averaged/{print $3}' | head -n1`
|
||||||
|
|
||||||
|
if [ $i -ne $N ]; then
|
||||||
|
sleep $ST
|
||||||
|
fi
|
||||||
|
done | $DATAMASH_CMD | expand -t12
|
||||||
90
jb/project/tools/perf/run_rp.sh
Executable file
90
jb/project/tools/perf/run_rp.sh
Executable file
@@ -0,0 +1,90 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
BASE_DIR=$(dirname "$0")
|
||||||
|
source $BASE_DIR/run_inc.sh
|
||||||
|
|
||||||
|
RENDERPERFTEST_DIR=$WS_ROOT/test/jdk/performance/client/RenderPerfTest
|
||||||
|
RENDERPERFTEST=""
|
||||||
|
if [ -z "$RENDERPERFTEST" ]; then
|
||||||
|
if [ ! -f "$RENDERPERFTEST_DIR/dist/RenderPerfTest.jar" ]; then
|
||||||
|
PATH=$JAVA_HOME/bin:$PATH make -C $RENDERPERFTEST_DIR
|
||||||
|
fi
|
||||||
|
if [ ! -f "$RENDERPERFTEST_DIR/dist/RenderPerfTest.jar" ]; then
|
||||||
|
echo "Cannot build RenderPerfTest. You may use RENDERPERFTEST env variable instead pointing to the RenderPerfTest.jar."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
RENDERPERFTEST=$RENDERPERFTEST_DIR/dist/RenderPerfTest.jar
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
TRACE=false
|
||||||
|
|
||||||
|
# removes leading hyphen
|
||||||
|
mode_param="${1/-}"
|
||||||
|
|
||||||
|
while [ $# -ge 1 ] ; do
|
||||||
|
case "$1" in
|
||||||
|
-onscreen) MODE="Robot"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-volatile) MODE="Volatile"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-buffer) MODE="Buffer"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*) break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ($# -eq 1 && "$1" == "-help") || ($# -eq 0) ]] ; then
|
||||||
|
echo "Usage: run_rp.sh [rp_rendering_mode] [rendering_options] bench_name"
|
||||||
|
echo
|
||||||
|
echo "bench_name: ArgbSurfaceBlitImage ArgbSwBlitImage BgrSurfaceBlitImage BgrSwBlitImage"
|
||||||
|
echo " Image ImageAA Image_XOR VolImage VolImageAA"
|
||||||
|
echo " ClipFlatBox ClipFlatBoxAA ClipFlatOval ClipFlatOvalAA"
|
||||||
|
echo " FlatBox FlatBoxAA FlatOval FlatOvalAA FlatOval_XOR FlatQuad FlatQuadAA"
|
||||||
|
echo " RotatedBox RotatedBoxAA RotatedBox_XOR RotatedOval RotatedOvalAA"
|
||||||
|
echo " WiredBox WiredBoxAA WiredBubbles WiredBubblesAA WiredQuad WiredQuadAA"
|
||||||
|
echo " Lines LinesAA Lines_XOR"
|
||||||
|
echo " TextGray TextLCD TextLCD_XOR TextNoAA TextNoAA_XOR"
|
||||||
|
echo " LargeTextGray LargeTextLCD LargeTextNoAA WhiteTextGray WhiteTextLCD WhiteTextNoAA"
|
||||||
|
echo " LinGrad3RotatedOval LinGrad3RotatedOvalAA LinGradRotatedOval LinGradRotatedOvalAA"
|
||||||
|
echo " RadGrad3RotatedOval RadGrad3RotatedOvalAA"
|
||||||
|
echo ""
|
||||||
|
echo "rp_rendering_mode: "
|
||||||
|
echo " -onscreen : rendering to the window and check it using Robot"
|
||||||
|
echo " -volatile : rendering to volatile image (default)"
|
||||||
|
echo " -buffer : rendering to buffered image"
|
||||||
|
echo "$RENDER_OPS_DOC"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
OPTS=""
|
||||||
|
# use time + repeat
|
||||||
|
OPTS="$OPTS -r=$R -t -e$MODE $1"
|
||||||
|
|
||||||
|
echo "OPTS: $OPTS"
|
||||||
|
|
||||||
|
echo "Unit: Milliseconds (not FPS), lower is better"
|
||||||
|
|
||||||
|
for i in `seq $N` ; do
|
||||||
|
if [ $i -eq 1 ]; then
|
||||||
|
echo x
|
||||||
|
fi
|
||||||
|
|
||||||
|
# echo "[debug] " + "test run"
|
||||||
|
# $JAVA $J2D_OPTS -DTRACE=$TRACE \
|
||||||
|
# -jar $RENDERPERFTEST $OPTS 2>&1 | awk '/'$1'/{print $3 }' | tee test_run.log
|
||||||
|
|
||||||
|
$JAVA $J2D_OPTS -DTRACE=$TRACE \
|
||||||
|
-jar $RENDERPERFTEST $OPTS -v 2>&1 | tee render_$1_${mode_param}_$i.log | grep -v "^#" | tail -n 2 | \
|
||||||
|
awk '{print $3 }'
|
||||||
|
if [ $i -ne $N ]; then
|
||||||
|
sleep $ST
|
||||||
|
fi
|
||||||
|
done | $DATAMASH_CMD | expand -t12 > render_$1_${mode_param}.log
|
||||||
39
jb/project/tools/perf/run_sm.sh
Executable file
39
jb/project/tools/perf/run_sm.sh
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
BASE_DIR=$(dirname "$0")
|
||||||
|
source $BASE_DIR/run_inc.sh
|
||||||
|
|
||||||
|
SWINGMARK_DIR=$WS_ROOT/test/jdk/performance/client/SwingMark
|
||||||
|
|
||||||
|
if [ -z "$SWINGMARK" ]; then
|
||||||
|
if [ ! -f "$SWINGMARK_DIR/dist/SwingMark.jar" ]; then
|
||||||
|
PATH=$JAVA_HOME/bin:$PATH make -C $SWINGMARK_DIR
|
||||||
|
fi
|
||||||
|
if [ ! -f "$SWINGMARK_DIR/dist/SwingMark.jar" ]; then
|
||||||
|
echo "Cannot build SwingMark. You may use SWINGMARK env variable instead pointing to the SwingMark.jar."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
SWINGMARK=$SWINGMARK_DIR/dist/SwingMark.jar
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $# -eq 1 -a "$1" == "--help" ] ; then
|
||||||
|
shift
|
||||||
|
echo "Usage: run_sm [rendering_options]"
|
||||||
|
echo ""
|
||||||
|
echo "$RENDER_OPS_DOC"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i in `seq $N` ; do
|
||||||
|
if [ $i -eq 1 ]; then
|
||||||
|
echo x
|
||||||
|
fi
|
||||||
|
|
||||||
|
# SwingMark gives 1 global 'Score: <value>'
|
||||||
|
echo `$JAVA $J2D_OPTS -jar $BASE_DIR/../../../../test/jdk/performance/client/SwingMark/dist/SwingMark.jar \
|
||||||
|
-r $R -q -lf javax.swing.plaf.metal.MetalLookAndFeel | awk '/Score/{print $2}'`
|
||||||
|
|
||||||
|
if [ $i -ne $N ]; then
|
||||||
|
sleep $ST
|
||||||
|
fi
|
||||||
|
done | $DATAMASH_CMD | expand -t12
|
||||||
162
jb/project/tools/test/check_jbr_size.sh
Normal file
162
jb/project/tools/test/check_jbr_size.sh
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
TC_PRINT=0
|
||||||
|
# Always print TeamCity service messages if running under TeamCity
|
||||||
|
[[ -n "${TEAMCITY_VERSION:-}" ]] && TC_PRINT=1
|
||||||
|
|
||||||
|
while getopts ":t" o; do
|
||||||
|
case "${o}" in
|
||||||
|
t) TC_PRINT=1 ;;
|
||||||
|
*);;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
NEWFILEPATH="$1"
|
||||||
|
CONFIGID="$2"
|
||||||
|
BUILDID="$3"
|
||||||
|
TOKEN="$4"
|
||||||
|
|
||||||
|
if [ ! -f "$NEWFILEPATH" ]; then
|
||||||
|
echo "File not found: $NEWFILEPATH"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
#
|
||||||
|
# Get the size of new artifact
|
||||||
|
#
|
||||||
|
|
||||||
|
unameOut="$(uname -s)"
|
||||||
|
case "${unameOut}" in
|
||||||
|
Linux*)
|
||||||
|
NEWFILESIZE=$(stat -c%s "$NEWFILEPATH")
|
||||||
|
;;
|
||||||
|
Darwin*)
|
||||||
|
NEWFILESIZE=$(stat -f%z "$NEWFILEPATH")
|
||||||
|
;;
|
||||||
|
CYGWIN*)
|
||||||
|
NEWFILESIZE=$(stat -c%s "$NEWFILEPATH")
|
||||||
|
;;
|
||||||
|
MINGW*)
|
||||||
|
NEWFILESIZE=$(stat -c%s "$NEWFILEPATH")
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown machine: ${unameOut}"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
FILENAME=$(basename "${NEWFILEPATH}")
|
||||||
|
|
||||||
|
#
|
||||||
|
# Get pattern of artifact name
|
||||||
|
# Base filename pattern: <BUNDLE_TYPE>-<JDK_VERSION>-<OS>-<ARCH>-b<BUILD>.tar.gz: jbr_dcevm-17.0.2-osx-x64-b1234.tar.gz
|
||||||
|
# BUNDLE_TYPE: jbr, jbrsdk, jbr_dcevm, jbrsdk_jcef etc.
|
||||||
|
# OS_ARCH_PATTERN - <os_architecture>: osx-x64, linux-aarch64, linux-musl-x64, windows-x64 etc.
|
||||||
|
|
||||||
|
BUNDLE_TYPE=jbrsdk
|
||||||
|
OS_ARCH_PATTERN=""
|
||||||
|
FILE_EXTENSION=tar.gz
|
||||||
|
|
||||||
|
re='(jbr[a-z_]*).*-[0-9_\.]+-(.+)-b[0-9]+(.+)'
|
||||||
|
if [[ $FILENAME =~ $re ]]; then
|
||||||
|
BUNDLE_TYPE=${BASH_REMATCH[1]}
|
||||||
|
OS_ARCH_PATTERN=${BASH_REMATCH[2]}
|
||||||
|
FILE_EXTENSION=${BASH_REMATCH[3]}
|
||||||
|
else
|
||||||
|
echo "File name $FILENAME does not match regex $re"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
function test_started_msg() {
|
||||||
|
if [ $TC_PRINT -eq 1 ]; then
|
||||||
|
echo "##teamcity[testStarted name='$1']"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_failed_msg() {
|
||||||
|
if [ $TC_PRINT -eq 1 ]; then
|
||||||
|
echo "##teamcity[testFailed name='$1' message='$2']"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_finished_msg() {
|
||||||
|
if [ $TC_PRINT -eq 1 ]; then
|
||||||
|
echo "##teamcity[testFinished name='$1']"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
test_name="${BUNDLE_TYPE}_${OS_ARCH_PATTERN//\-/_}${FILE_EXTENSION//\./_}"
|
||||||
|
test_started_msg "$test_name"
|
||||||
|
|
||||||
|
echo "BUNDLE_TYPE: $BUNDLE_TYPE"
|
||||||
|
echo "OS_ARCH_PATTERN: $OS_ARCH_PATTERN"
|
||||||
|
echo "FILE_EXTENSION: $FILE_EXTENSION"
|
||||||
|
echo "Size of $FILENAME is $NEWFILESIZE bytes"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Get previous successful build ID
|
||||||
|
# Example:
|
||||||
|
# CONFIGID=IntellijCustomJdk_Jdk17_Master_LinuxX64jcef
|
||||||
|
# BUILDID=12345678
|
||||||
|
#
|
||||||
|
# expected return value
|
||||||
|
# id="123".number="567"
|
||||||
|
#
|
||||||
|
CURL_RESPONSE=$(curl -sSL --header "Authorization: Bearer $TOKEN" "https://buildserver.labs.intellij.net/app/rest/builds/?locator=buildType:(id:$CONFIGID),status:success,count:1,finishDate:(build:$BUILDID,condition:before)")
|
||||||
|
re='id=\"([0-9]+)\".+number=\"([0-9\.]+)\"'
|
||||||
|
|
||||||
|
# ID: Previous successful build id
|
||||||
|
ID=0
|
||||||
|
if [[ $CURL_RESPONSE =~ $re ]]; then
|
||||||
|
ID=${BASH_REMATCH[1]}
|
||||||
|
echo "Previous build ID: $ID"
|
||||||
|
echo "Previous build number: ${BASH_REMATCH[2]}"
|
||||||
|
else
|
||||||
|
msg="ERROR: cannot find previous build"
|
||||||
|
echo "$msg"
|
||||||
|
echo "$CURL_RESPONSE"
|
||||||
|
test_failed_msg "$test_name" "$msg"
|
||||||
|
test_finished_msg "$test_name"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Get artifacts from previous successful build
|
||||||
|
#
|
||||||
|
# expected return value
|
||||||
|
# name="jbrsdk_jcef*.tar.gz size="123'
|
||||||
|
#
|
||||||
|
CURL_RESPONSE=$(curl -sSL --header "Authorization: Bearer $TOKEN" "https://buildserver.labs.intellij.net/app/rest/builds/$ID?fields=id,number,artifacts(file(name,size))")
|
||||||
|
echo "Artifacts of the previous build:"
|
||||||
|
echo "$CURL_RESPONSE"
|
||||||
|
|
||||||
|
# Find binary size (in response) with reg exp
|
||||||
|
re="name=\"(${BUNDLE_TYPE}[^\"]+${OS_ARCH_PATTERN}[^\"]+${FILE_EXTENSION})\" size=\"([0-9]+)\""
|
||||||
|
|
||||||
|
if [[ $CURL_RESPONSE =~ $re ]]; then
|
||||||
|
prevFileName=${BASH_REMATCH[1]}
|
||||||
|
echo "Previous artifact name: $prevFileName"
|
||||||
|
prevFileSize=${BASH_REMATCH[2]}
|
||||||
|
echo "Previous artifact size: $prevFileSize"
|
||||||
|
|
||||||
|
((allowedSize=prevFileSize+prevFileSize/20)) # use 5% threshold
|
||||||
|
echo "Allowed size: $allowedSize"
|
||||||
|
if [[ "$NEWFILESIZE" -gt "$allowedSize" ]]; then
|
||||||
|
msg="ERROR: new size is significantly greater than previous size (need to investigate)"
|
||||||
|
echo "$msg"
|
||||||
|
test_failed_msg "$test_name" "$msg"
|
||||||
|
test_finished_msg "$test_name"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "PASSED"
|
||||||
|
test_finished_msg "$test_name"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
msg="ERROR: cannot find string with size in xml response:"
|
||||||
|
echo "Regex: $re"
|
||||||
|
echo "$msg"
|
||||||
|
echo "$CURL_RESPONSE"
|
||||||
|
test_failed_msg "$test_name" "$msg"
|
||||||
|
test_finished_msg "$test_name"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
93
jb/project/tools/test/perfcmp.sh
Executable file
93
jb/project/tools/test/perfcmp.sh
Executable file
@@ -0,0 +1,93 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
usage ()
|
||||||
|
{
|
||||||
|
echo "Usage: perfcmp.sh [options] <test_results_cur> <test_results_ref> <results> <test_prefix> <noHeaders>"
|
||||||
|
echo "Options:"
|
||||||
|
echo -e " -h, --help\tdisplay this help"
|
||||||
|
echo -e " -tc\tprint teacmity statistic"
|
||||||
|
echo -e "test_results_cur - the file with metrics values for the current measuring"
|
||||||
|
echo -e "test_results_ref - the file with metrics values for the reference measuring"
|
||||||
|
echo -e "results - results of comaprison"
|
||||||
|
echo -e "test_prefix - specifys measuring type, makes sense for enabled -tc, by default no prefixes"
|
||||||
|
echo -e "noHeaders - by default 1-st line contains headers"
|
||||||
|
echo -e ""
|
||||||
|
echo -e "test_results_* files content should be in csv format with header and tab separator:"
|
||||||
|
echo -e "The 1-st column is the test name"
|
||||||
|
echo -e "The 2-st column is the test value"
|
||||||
|
echo -e ""
|
||||||
|
echo -e "Example:"
|
||||||
|
echo -e "Test Value"
|
||||||
|
echo -e "Testname 51.54"
|
||||||
|
}
|
||||||
|
|
||||||
|
while [ -n "$1" ]
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
-h | --help) usage
|
||||||
|
exit 1 ;;
|
||||||
|
-tc) tc=1
|
||||||
|
shift
|
||||||
|
break ;;
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$#" < "3" ]]; then
|
||||||
|
echo "Error: Invalid arguments"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
curFile=$1
|
||||||
|
refFile=$2
|
||||||
|
resFile=$3
|
||||||
|
testNamePrefix=$4
|
||||||
|
noHeaders=$5
|
||||||
|
echo $curFile
|
||||||
|
echo $refFile
|
||||||
|
echo $resFile
|
||||||
|
|
||||||
|
curValues=`cat "$curFile" | cut -f 2 | tr -d '\t'`
|
||||||
|
if [ -z $noHeaders ]; then
|
||||||
|
curValuesHeader=`echo "$curValues" | head -n +1`_cur
|
||||||
|
header=`cat "$refFile" | head -n +1 | awk -F'\t' -v x=$curValuesHeader '{print " "$1"\t"$2"_ref\t"x"\tratio"}'`
|
||||||
|
testContent=`paste -d '\t' $refFile <(echo "$curValues") | tail -n +2`
|
||||||
|
else
|
||||||
|
testContent=`paste -d '\t' $refFile <(echo "$curValues") | tail -n +1`
|
||||||
|
fi
|
||||||
|
|
||||||
|
testContent=`echo "$testContent" | tr "," "." | awk -F'\t' '{
|
||||||
|
if ($3>$2+$2*0.1) {
|
||||||
|
print "* "$1"\t"$2"\t"$3"\t"(($2>0)?$3/$2:"-")
|
||||||
|
} else {
|
||||||
|
print " "$1"\t"$2"\t"$3"\t"(($2>0)?$3/$2:"-")
|
||||||
|
}
|
||||||
|
}'`
|
||||||
|
if [ -z $noHeaders ]; then
|
||||||
|
echo "$header" > $resFile
|
||||||
|
fi
|
||||||
|
echo "$testContent" >> $resFile
|
||||||
|
cat "$resFile" | tr '\t' ';' | column -t -s ';' | tee $resFile
|
||||||
|
|
||||||
|
if [ -z $tc ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
failed=0
|
||||||
|
echo "$testContent" 2>&1 | (
|
||||||
|
while read -r s; do
|
||||||
|
testname=`echo "$s" | cut -f 1 | tr -d "[:space:]" | tr -d "*"`
|
||||||
|
duration=`echo "$s" | cut -f 3`
|
||||||
|
echo "$s" | cut -c1 | grep -c "*" && failed=1
|
||||||
|
echo \#\#teamcity[testStarted name=\'$testNamePrefix$testname\']
|
||||||
|
echo "===>$s"
|
||||||
|
echo \#\#teamcity[buildStatisticValue key=\'$testNamePrefix$testname\' value=\'$duration\']
|
||||||
|
[ $failed -eq 1 ] && echo \#\#teamcity[testFailed name=\'$testNamePrefix$testname\' message=\'$s\']
|
||||||
|
echo \#\#teamcity[testFinished name=\'$testNamePrefix$testname\' duration=\'$duration\']
|
||||||
|
failed=0
|
||||||
|
done
|
||||||
|
)
|
||||||
153
jb/project/tools/windows/scripts/mkimages_aarch64.sh
Normal file
153
jb/project/tools/windows/scripts/mkimages_aarch64.sh
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# This script makes test-image along with JDK images when bundle_type is set to "jcef".
|
||||||
|
# If the character 't' is added at the end of bundle_type then it also makes test-image along with JDK images.
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument
|
||||||
|
# to configure
|
||||||
|
# By default JDK_BUILD_NUMBER is set zero
|
||||||
|
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
|
||||||
|
# By default JCEF binaries should be located in ./jcef_win_aarch64
|
||||||
|
|
||||||
|
if [ -z "$BUILD_JDK" ]; then
|
||||||
|
echo "BUILD_JDK environment variable must be specified and point to a JDK built from the current sources" \
|
||||||
|
" and is able to run on the build system. See OpenJDK documentation for --with-build-jdk for more info."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
WORK_DIR=$(pwd)
|
||||||
|
JCEF_PATH=${JCEF_PATH:=$WORK_DIR/jcef_win_aarch64}
|
||||||
|
NVDA_PATH=${NVDA_PATH:=$WORK_DIR/nvda_controllerClient}
|
||||||
|
|
||||||
|
function do_configure {
|
||||||
|
sh ./configure \
|
||||||
|
--enable-option-checking=fatal \
|
||||||
|
--openjdk-target=aarch64-unknown-cygwin \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="$VENDOR_NAME" \
|
||||||
|
--with-vendor-version-string="$VENDOR_VERSION_STRING" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=$JDK_BUILD_NUMBER \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
--with-toolchain-version=$TOOLCHAIN_VERSION \
|
||||||
|
--with-boot-jdk=$BOOT_JDK \
|
||||||
|
--with-build-jdk=$BUILD_JDK \
|
||||||
|
--with-nvdacontrollerclient=$NVDA_PATH \
|
||||||
|
--disable-ccache \
|
||||||
|
--enable-cds=yes \
|
||||||
|
$DISABLE_WARNINGS_AS_ERRORS \
|
||||||
|
$STATIC_CONF_ARGS \
|
||||||
|
$REPRODUCIBLE_BUILD_OPTS \
|
||||||
|
|| do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_image_bundle {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
__modules_path=$3
|
||||||
|
__modules=$4
|
||||||
|
|
||||||
|
fastdebug_infix=''
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-windows-aarch64-${fastdebug_infix}b${build_number}
|
||||||
|
|
||||||
|
echo Running jlink ...
|
||||||
|
${BUILD_JDK}/bin/jlink \
|
||||||
|
--module-path $__modules_path --no-man-pages --compress=2 \
|
||||||
|
--add-modules $__modules --output $__root_dir || do_exit $?
|
||||||
|
|
||||||
|
grep -v "^JAVA_VERSION" "$JSDK"/release | grep -v "^MODULES" >> $__root_dir/release
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
sed 's/JBR/JBRSDK/g' $__root_dir/release > release
|
||||||
|
mv release $__root_dir/release
|
||||||
|
cp $IMAGES_DIR/jdk/lib/src.zip $__root_dir/lib
|
||||||
|
for dir in $(ls -d $IMAGES_DIR/jdk/*); do
|
||||||
|
rsync -amv --include="*/" --include="*.pdb" --exclude="*" $dir $__root_dir
|
||||||
|
done
|
||||||
|
copy_jmods "$__modules" "$__modules_path" "$__root_dir"/jmods
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
RELEASE_NAME=windows-aarch64-server-release
|
||||||
|
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
do_reset_changes=0
|
||||||
|
do_maketest=1
|
||||||
|
;;
|
||||||
|
"nomod" | "")
|
||||||
|
bundle_type=""
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
do_reset_changes=0
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=windows-aarch64-server-fastdebug
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "${INC_BUILD:-}" ]; then
|
||||||
|
do_configure || do_exit $?
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
make LOG=info CONF=$RELEASE_NAME clean images test-image JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
else
|
||||||
|
make LOG=info CONF=$RELEASE_NAME clean images || do_exit $?
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
make LOG=info CONF=$RELEASE_NAME images test-image JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
else
|
||||||
|
make LOG=info CONF=$RELEASE_NAME images || do_exit $?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
JSDK=$IMAGES_DIR/jdk
|
||||||
|
JSDK_MODS_DIR=$IMAGES_DIR/jmods
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
where cygpath
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
JCEF_PATH="$(cygpath -w $JCEF_PATH | sed 's/\\/\//g')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module_aarch64.patch || do_exit $?
|
||||||
|
update_jsdk_mods "$BUILD_JDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||||
|
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not unchanged
|
||||||
|
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||||
|
fi
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
else
|
||||||
|
jbr_name_postfix=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create runtime image bundle
|
||||||
|
modules=$(xargs < jb/project/tools/common/modules.list | sed s/" "//g) || do_exit $?
|
||||||
|
modules+=",jdk.crypto.mscapi"
|
||||||
|
create_image_bundle "jbr${jbr_name_postfix}" "jbr" $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
# create sdk image bundle
|
||||||
|
modules=$(cat ${JSDK}/release | grep MODULES | sed s/MODULES=//g | sed s/' '/','/g | sed s/\"//g | sed s/\\r//g | sed s/\\n//g) || do_exit $?
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
modules=${modules},$(get_mods_list "$JCEF_PATH"/jmods)
|
||||||
|
fi
|
||||||
|
create_image_bundle "$JBRSDK_BUNDLE${jbr_name_postfix}" "$JBRSDK_BUNDLE" "$JSDK_MODS_DIR" "$modules" || do_exit $?
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
146
jb/project/tools/windows/scripts/mkimages_x64.sh
Executable file
146
jb/project/tools/windows/scripts/mkimages_x64.sh
Executable file
@@ -0,0 +1,146 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# This script makes test-image along with JDK images when bundle_type is set to "jcef".
|
||||||
|
# If the character 't' is added at the end of bundle_type then it also makes test-image along with JDK images.
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument
|
||||||
|
# to configure
|
||||||
|
# By default JDK_BUILD_NUMBER is set zero
|
||||||
|
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
|
||||||
|
# By default JCEF binaries should be located in ./jcef_win_x64
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
WORK_DIR=$(pwd)
|
||||||
|
JCEF_PATH=${JCEF_PATH:=$WORK_DIR/jcef_win_x64}
|
||||||
|
NVDA_PATH=${NVDA_PATH:=$WORK_DIR/nvda_controllerClient}
|
||||||
|
|
||||||
|
function do_configure {
|
||||||
|
sh ./configure \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="$VENDOR_NAME" \
|
||||||
|
--with-vendor-version-string="$VENDOR_VERSION_STRING" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=$JDK_BUILD_NUMBER \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
--with-toolchain-version=$TOOLCHAIN_VERSION \
|
||||||
|
--with-boot-jdk=$BOOT_JDK \
|
||||||
|
--with-nvdacontrollerclient=$NVDA_PATH \
|
||||||
|
--disable-ccache \
|
||||||
|
--enable-cds=yes \
|
||||||
|
$DISABLE_WARNINGS_AS_ERRORS \
|
||||||
|
$STATIC_CONF_ARGS \
|
||||||
|
$REPRODUCIBLE_BUILD_OPTS \
|
||||||
|
|| do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_image_bundle {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
__modules_path=$3
|
||||||
|
__modules=$4
|
||||||
|
|
||||||
|
fastdebug_infix=''
|
||||||
|
__cds_opt=''
|
||||||
|
__cds_opt="--generate-cds-archive"
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-windows-x64-${fastdebug_infix}b${build_number}
|
||||||
|
|
||||||
|
echo Running jlink ...
|
||||||
|
${JSDK}/bin/jlink \
|
||||||
|
--module-path $__modules_path --no-man-pages --compress=2 \
|
||||||
|
$__cds_opt --add-modules $__modules --output $__root_dir || do_exit $?
|
||||||
|
|
||||||
|
grep -v "^JAVA_VERSION" "$JSDK"/release | grep -v "^MODULES" >> $__root_dir/release
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
sed 's/JBR/JBRSDK/g' $__root_dir/release > release
|
||||||
|
mv release $__root_dir/release
|
||||||
|
cp $IMAGES_DIR/jdk/lib/src.zip $__root_dir/lib
|
||||||
|
for dir in $(ls -d $IMAGES_DIR/jdk/*); do
|
||||||
|
rsync -amv --include="*/" --include="*.pdb" --exclude="*" $dir $__root_dir
|
||||||
|
done
|
||||||
|
copy_jmods "$__modules" "$__modules_path" "$__root_dir"/jmods
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
RELEASE_NAME=windows-x86_64-server-release
|
||||||
|
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
do_reset_changes=0
|
||||||
|
do_maketest=1
|
||||||
|
;;
|
||||||
|
"nomod" | "")
|
||||||
|
bundle_type=""
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
do_reset_changes=0
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=windows-x86_64-server-fastdebug
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "${INC_BUILD:-}" ]; then
|
||||||
|
do_configure || do_exit $?
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
make LOG=info CONF=$RELEASE_NAME clean images test-image JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
else
|
||||||
|
make LOG=info CONF=$RELEASE_NAME clean images || do_exit $?
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
make LOG=info CONF=$RELEASE_NAME images test-image JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
else
|
||||||
|
make LOG=info CONF=$RELEASE_NAME images || do_exit $?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
JSDK=$IMAGES_DIR/jdk
|
||||||
|
JSDK_MODS_DIR=$IMAGES_DIR/jmods
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
where cygpath
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
JCEF_PATH="$(cygpath -w $JCEF_PATH | sed 's/\\/\//g')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
update_jsdk_mods "$JSDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||||
|
cp $JCEF_PATH/jmods/* ${JSDK_MODS_DIR} # $JSDK/jmods is not unchanged
|
||||||
|
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||||
|
fi
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
else
|
||||||
|
jbr_name_postfix=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create runtime image bundle
|
||||||
|
modules=$(xargs < jb/project/tools/common/modules.list | sed s/" "//g) || do_exit $?
|
||||||
|
modules+=",jdk.crypto.mscapi"
|
||||||
|
create_image_bundle "jbr${jbr_name_postfix}" "jbr" $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
# create sdk image bundle
|
||||||
|
modules=$(cat ${JSDK}/release | grep MODULES | sed s/MODULES=//g | sed s/' '/','/g | sed s/\"//g | sed s/\\r//g | sed s/\\n//g)
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
modules=${modules},$(get_mods_list "$JCEF_PATH"/jmods)
|
||||||
|
fi
|
||||||
|
create_image_bundle "$JBRSDK_BUNDLE${jbr_name_postfix}" "$JBRSDK_BUNDLE" "$JSDK_MODS_DIR" "$modules" || do_exit $?
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
136
jb/project/tools/windows/scripts/mkimages_x86.sh
Executable file
136
jb/project/tools/windows/scripts/mkimages_x86.sh
Executable file
@@ -0,0 +1,136 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# $ ./java --version
|
||||||
|
# openjdk 11.0.6 2020-01-14
|
||||||
|
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||||
|
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||||
|
#
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
WORK_DIR=$(pwd)
|
||||||
|
NVDA_PATH=${NVDA_PATH:=$WORK_DIR/nvda_controllerClient}
|
||||||
|
|
||||||
|
|
||||||
|
function do_configure {
|
||||||
|
sh ./configure \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="$VENDOR_NAME" \
|
||||||
|
--with-vendor-version-string="$VENDOR_VERSION_STRING" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=$JDK_BUILD_NUMBER \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
--with-toolchain-version=$TOOLCHAIN_VERSION \
|
||||||
|
--with-boot-jdk=$BOOT_JDK \
|
||||||
|
--with-nvdacontrollerclient=$NVDA_PATH \
|
||||||
|
--disable-ccache \
|
||||||
|
--enable-cds=yes \
|
||||||
|
$DISABLE_WARNINGS_AS_ERRORS \
|
||||||
|
$STATIC_CONF_ARGS \
|
||||||
|
$REPRODUCIBLE_BUILD_OPTS \
|
||||||
|
|| do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_image_bundle {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
__modules_path=$3
|
||||||
|
__modules=$4
|
||||||
|
|
||||||
|
fastdebug_infix=''
|
||||||
|
__cds_opt=''
|
||||||
|
__cds_opt="--generate-cds-archive"
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-windows-x86-${fastdebug_infix}b${build_number}
|
||||||
|
|
||||||
|
echo Running jlink ...
|
||||||
|
${JSDK}/bin/jlink \
|
||||||
|
--module-path $__modules_path --no-man-pages --compress=2 \
|
||||||
|
$__cds_opt --add-modules $__modules --output $__root_dir || do_exit $?
|
||||||
|
|
||||||
|
grep -v "^JAVA_VERSION" "$JSDK"/release | grep -v "^MODULES" >> $__root_dir/release
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
sed 's/JBR/JBRSDK/g' $__root_dir/release > release
|
||||||
|
mv release $__root_dir/release
|
||||||
|
cp $IMAGES_DIR/jdk/lib/src.zip $__root_dir/lib
|
||||||
|
for dir in $(ls -d $IMAGES_DIR/jdk/*); do
|
||||||
|
rsync -amv --include="*/" --include="*.pdb" --exclude="*" $dir $__root_dir
|
||||||
|
done
|
||||||
|
copy_jmods "$__modules" "$__modules_path" "$__root_dir"/jmods
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
RELEASE_NAME=windows-x86_64-server-release
|
||||||
|
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
echo "not implemented" && do_exit 1
|
||||||
|
;;
|
||||||
|
"nomod" | "")
|
||||||
|
bundle_type=""
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
do_reset_changes=0
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=windows-x86_64-server-fastdebug
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "${INC_BUILD:-}" ]; then
|
||||||
|
do_configure || do_exit $?
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
make LOG=info CONF=$RELEASE_NAME clean images test-image JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
else
|
||||||
|
make LOG=info CONF=$RELEASE_NAME clean images || do_exit $?
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
make LOG=info CONF=$RELEASE_NAME images test-image JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
else
|
||||||
|
make LOG=info CONF=$RELEASE_NAME images || do_exit $?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
JSDK=$IMAGES_DIR/jdk
|
||||||
|
JSDK_MODS_DIR=$IMAGES_DIR/jmods
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
update_jsdk_mods "$JSDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||||
|
cp $JCEF_PATH/jmods/* ${JSDK_MODS_DIR} # $JSDK/jmods is not unchanged
|
||||||
|
fi
|
||||||
|
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
else
|
||||||
|
jbr_name_postfix=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create runtime image bundle
|
||||||
|
modules=$(grep -v "jdk.internal.vm" jb/project/tools/common/modules.list | xargs | sed s/" "//g) || do_exit $?
|
||||||
|
modules+=",jdk.crypto.mscapi"
|
||||||
|
create_image_bundle "jbr${jbr_name_postfix}" "jbr" $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||||
|
|
||||||
|
# create sdk image bundle
|
||||||
|
modules=$(cat ${JSDK}/release | grep MODULES | sed s/MODULES=//g | sed s/' '/','/g | sed s/\"//g | sed s/\\r//g | sed s/\\n//g)
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ] || [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||||
|
modules=${modules},$(get_mods_list "$JCEF_PATH"/jmods)
|
||||||
|
fi
|
||||||
|
create_image_bundle "$JBRSDK_BUNDLE${jbr_name_postfix}" "$JBRSDK_BUNDLE" "$JSDK_MODS_DIR" "$modules" || do_exit $?
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
59
jb/project/tools/windows/scripts/pack_aarch64.sh
Normal file
59
jb/project/tools/windows/scripts/pack_aarch64.sh
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# This script packs test-image along with JDK images when bundle_type is set to "jcef".
|
||||||
|
# If the character 't' is added at the end of bundle_type then it also makes test-image along with JDK images.
|
||||||
|
#
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
[ "$bundle_type" == "jcef" ] && do_maketest=1
|
||||||
|
|
||||||
|
function pack_jbr {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
|
||||||
|
fastdebug_infix=''
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
JBR=${__bundle_name}-${JBSDK_VERSION}-windows-aarch64-${fastdebug_infix}b${build_number}
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-windows-aarch64-${fastdebug_infix}b${build_number}
|
||||||
|
|
||||||
|
echo Creating $JBR.tar.gz ...
|
||||||
|
chmod -R ug+rwx,o+rx ${BASE_DIR}/$__root_dir
|
||||||
|
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR $__root_dir || do_exit $?
|
||||||
|
|
||||||
|
echo Creating $JBR.zip ...
|
||||||
|
/usr/bin/zip -r $JBR.zip $__root_dir || do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
[ "$bundle_type" == "nomod" ] && bundle_type=""
|
||||||
|
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
RELEASE_NAME=windows-aarch64-server-release
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
BASE_DIR=.
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "dcevm" ] || [ "$bundle_type" == "fd" ]; then
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
else
|
||||||
|
jbr_name_postfix=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
pack_jbr jbr${jbr_name_postfix} jbr
|
||||||
|
pack_jbr jbrsdk${jbr_name_postfix} jbrsdk
|
||||||
|
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
JBRSDK_TEST=$JBRSDK_BUNDLE-$JBSDK_VERSION-windows-test-aarch64-b$build_number
|
||||||
|
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||||
|
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
fi
|
||||||
59
jb/project/tools/windows/scripts/pack_x64.sh
Executable file
59
jb/project/tools/windows/scripts/pack_x64.sh
Executable file
@@ -0,0 +1,59 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# This script packs test-image along with JDK images when bundle_type is set to "jcef".
|
||||||
|
# If the character 't' is added at the end of bundle_type then it also makes test-image along with JDK images.
|
||||||
|
#
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
[ "$bundle_type" == "jcef" ] && do_maketest=1
|
||||||
|
|
||||||
|
function pack_jbr {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
|
||||||
|
fastdebug_infix=''
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
JBR=${__bundle_name}-${JBSDK_VERSION}-windows-x64-${fastdebug_infix}b${build_number}
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-windows-x64-${fastdebug_infix}b${build_number}
|
||||||
|
|
||||||
|
echo Creating $JBR.tar.gz ...
|
||||||
|
chmod -R ug+rwx,o+rx ${BASE_DIR}/$__root_dir
|
||||||
|
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR $__root_dir || do_exit $?
|
||||||
|
|
||||||
|
echo Creating $JBR.zip ...
|
||||||
|
/usr/bin/zip -r $JBR.zip $__root_dir || do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
[ "$bundle_type" == "nomod" ] && bundle_type=""
|
||||||
|
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
RELEASE_NAME=windows-x86_64-server-release
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
BASE_DIR=.
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "dcevm" ] || [ "$bundle_type" == "fd" ]; then
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
else
|
||||||
|
jbr_name_postfix=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
pack_jbr jbr${jbr_name_postfix} jbr
|
||||||
|
pack_jbr jbrsdk${jbr_name_postfix} jbrsdk
|
||||||
|
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
JBRSDK_TEST=$JBRSDK_BUNDLE-$JBSDK_VERSION-windows-test-x64-b$build_number
|
||||||
|
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||||
|
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
fi
|
||||||
55
jb/project/tools/windows/scripts/pack_x86.sh
Executable file
55
jb/project/tools/windows/scripts/pack_x86.sh
Executable file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built;possible values:
|
||||||
|
# <empty> or nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
|
||||||
|
source jb/project/tools/common/scripts/common.sh
|
||||||
|
|
||||||
|
[ "$bundle_type" == "jcef" ] && echo "not implemented" && do_exit 1
|
||||||
|
|
||||||
|
function pack_jbr {
|
||||||
|
__bundle_name=$1
|
||||||
|
__arch_name=$2
|
||||||
|
|
||||||
|
fastdebug_infix=''
|
||||||
|
|
||||||
|
[ "$bundle_type" == "fd" ] && [ "$__arch_name" == "$JBRSDK_BUNDLE" ] && __bundle_name=$__arch_name && fastdebug_infix="fastdebug-"
|
||||||
|
JBR=${__bundle_name}-${JBSDK_VERSION}-windows-x86-${fastdebug_infix}b${build_number}
|
||||||
|
__root_dir=${__bundle_name}-${JBSDK_VERSION}-windows-x86-${fastdebug_infix}b${build_number}
|
||||||
|
|
||||||
|
echo Creating $JBR.tar.gz ...
|
||||||
|
chmod -R ug+rwx,o+rx ${BASE_DIR}/$__root_dir
|
||||||
|
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR $__root_dir || do_exit $?
|
||||||
|
|
||||||
|
echo Creating $JBR.zip ...
|
||||||
|
/usr/bin/zip -r $JBR.zip $__root_dir || do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
[ "$bundle_type" == "nomod" ] && bundle_type=""
|
||||||
|
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
RELEASE_NAME=windows-x86_64-server-release
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
BASE_DIR=.
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "dcevm" ] || [ "$bundle_type" == "fd" ]; then
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
else
|
||||||
|
jbr_name_postfix=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
pack_jbr jbr${jbr_name_postfix} jbr
|
||||||
|
pack_jbr jbrsdk${jbr_name_postfix} jbrsdk
|
||||||
|
|
||||||
|
if [ $do_maketest -eq 1 ]; then
|
||||||
|
JBRSDK_TEST=$JBRSDK_BUNDLE-$JBSDK_VERSION-windows-test-x86-b$build_number
|
||||||
|
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||||
|
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $BASE_DIR --exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
fi
|
||||||
100
make/Bundles.gmk
100
make/Bundles.gmk
@@ -125,6 +125,13 @@ define SetupBundleFileBody
|
|||||||
&& $(TAR) cf - -$(TAR_INCLUDE_PARAM) $$($1_$$d_LIST_FILE) \
|
&& $(TAR) cf - -$(TAR_INCLUDE_PARAM) $$($1_$$d_LIST_FILE) \
|
||||||
$(TAR_IGNORE_EXIT_VALUE) ) \
|
$(TAR_IGNORE_EXIT_VALUE) ) \
|
||||||
| ( $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) && $(TAR) xf - )$$(NEWLINE) )
|
| ( $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) && $(TAR) xf - )$$(NEWLINE) )
|
||||||
|
# Rename stripped pdb files
|
||||||
|
ifeq ($(call isTargetOs, windows)+$(SHIP_DEBUG_SYMBOLS), true+public)
|
||||||
|
for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.stripped.pdb"`; do \
|
||||||
|
$(ECHO) Renaming $$$${f} to $$$${f%stripped.pdb}pdb $(LOG_INFO); \
|
||||||
|
$(MV) $$$${f} $$$${f%stripped.pdb}pdb; \
|
||||||
|
done
|
||||||
|
endif
|
||||||
# Unzip any zipped debuginfo files
|
# Unzip any zipped debuginfo files
|
||||||
ifeq ($$($1_UNZIP_DEBUGINFO), true)
|
ifeq ($$($1_UNZIP_DEBUGINFO), true)
|
||||||
for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.diz"`; do \
|
for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.diz"`; do \
|
||||||
@@ -167,11 +174,9 @@ else
|
|||||||
JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
|
JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
|
||||||
JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER)
|
JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER)
|
||||||
JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)
|
JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)
|
||||||
STATIC_JDK_BUNDLE_SUBDIR := static-jdk-$(VERSION_NUMBER)
|
|
||||||
ifneq ($(DEBUG_LEVEL), release)
|
ifneq ($(DEBUG_LEVEL), release)
|
||||||
JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
||||||
JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
||||||
STATIC_JDK_BUNDLE_SUBDIR := $(STATIC_JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
|
||||||
endif
|
endif
|
||||||
# In certain situations, the JDK_IMAGE_DIR points to an image without the
|
# In certain situations, the JDK_IMAGE_DIR points to an image without the
|
||||||
# the symbols and demos. If so, the symobls and demos can be found in a
|
# the symbols and demos. If so, the symobls and demos can be found in a
|
||||||
@@ -185,30 +190,93 @@ endif
|
|||||||
|
|
||||||
ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), )
|
ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), )
|
||||||
|
|
||||||
# There may be files with spaces in the names, so use ShellFindFiles explicitly.
|
SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.map
|
||||||
|
|
||||||
|
# There may be files with spaces in the names, so use ShellFindFiles
|
||||||
|
# explicitly.
|
||||||
ALL_JDK_FILES := $(call ShellFindFiles, $(JDK_IMAGE_DIR))
|
ALL_JDK_FILES := $(call ShellFindFiles, $(JDK_IMAGE_DIR))
|
||||||
|
ifneq ($(JDK_IMAGE_DIR), $(JDK_SYMBOLS_IMAGE_DIR))
|
||||||
|
ALL_JDK_SYMBOLS_FILES := $(call ShellFindFiles, $(JDK_SYMBOLS_IMAGE_DIR))
|
||||||
|
else
|
||||||
|
ALL_JDK_SYMBOLS_FILES := $(ALL_JDK_FILES)
|
||||||
|
endif
|
||||||
ifneq ($(JDK_IMAGE_DIR), $(JDK_DEMOS_IMAGE_DIR))
|
ifneq ($(JDK_IMAGE_DIR), $(JDK_DEMOS_IMAGE_DIR))
|
||||||
ALL_JDK_DEMOS_FILES := $(call ShellFindFiles, $(JDK_DEMOS_IMAGE_DIR))
|
ALL_JDK_DEMOS_FILES := $(call ShellFindFiles, $(JDK_DEMOS_IMAGE_DIR))
|
||||||
else
|
else
|
||||||
ALL_JDK_DEMOS_FILES := $(ALL_JDK_FILES)
|
ALL_JDK_DEMOS_FILES := $(ALL_JDK_FILES)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Create special filter rules when dealing with unzipped .dSYM directories on
|
||||||
|
# macosx
|
||||||
|
ifeq ($(call isTargetOs, macosx), true)
|
||||||
|
ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
|
||||||
|
JDK_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
|
||||||
|
$(call containing, .dSYM/, $(patsubst $(JDK_IMAGE_DIR)/%, %, \
|
||||||
|
$(ALL_JDK_SYMBOLS_FILES))))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Create special filter rules when dealing with debug symbols on windows
|
||||||
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
|
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
||||||
|
JDK_SYMBOLS_EXCLUDE_PATTERN := %.pdb
|
||||||
|
else
|
||||||
|
ifeq ($(SHIP_DEBUG_SYMBOLS), public)
|
||||||
|
JDK_SYMBOLS_EXCLUDE_PATTERN := \
|
||||||
|
$(filter-out \
|
||||||
|
%.stripped.pdb, \
|
||||||
|
$(filter %.pdb, $(ALL_JDK_FILES)) \
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
JDK_BUNDLE_FILES := \
|
JDK_BUNDLE_FILES := \
|
||||||
$(filter-out \
|
$(filter-out \
|
||||||
|
$(JDK_SYMBOLS_EXCLUDE_PATTERN) \
|
||||||
$(JDK_EXTRA_EXCLUDES) \
|
$(JDK_EXTRA_EXCLUDES) \
|
||||||
|
$(SYMBOLS_EXCLUDE_PATTERN) \
|
||||||
$(JDK_IMAGE_HOMEDIR)/demo/% \
|
$(JDK_IMAGE_HOMEDIR)/demo/% \
|
||||||
, \
|
, \
|
||||||
$(ALL_JDK_FILES) \
|
$(ALL_JDK_FILES) \
|
||||||
)
|
)
|
||||||
|
|
||||||
JDK_SYMBOLS_BUNDLE_FILES := $(call FindFiles, $(SYMBOLS_IMAGE_DIR))
|
JDK_SYMBOLS_BUNDLE_FILES := \
|
||||||
|
$(call FindFiles, $(SYMBOLS_IMAGE_DIR))
|
||||||
|
|
||||||
TEST_DEMOS_BUNDLE_FILES := $(filter $(JDK_DEMOS_IMAGE_HOMEDIR)/demo/%, \
|
TEST_DEMOS_BUNDLE_FILES := $(filter $(JDK_DEMOS_IMAGE_HOMEDIR)/demo/%, \
|
||||||
$(ALL_JDK_DEMOS_FILES))
|
$(ALL_JDK_DEMOS_FILES))
|
||||||
|
|
||||||
ALL_JRE_FILES := $(call ShellFindFiles, $(JRE_IMAGE_DIR))
|
ALL_JRE_FILES := $(call ShellFindFiles, $(JRE_IMAGE_DIR))
|
||||||
|
|
||||||
JRE_BUNDLE_FILES := $(ALL_JRE_FILES)
|
# Create special filter rules when dealing with unzipped .dSYM directories on
|
||||||
|
# macosx
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||||
|
ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
|
||||||
|
JRE_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
|
||||||
|
$(call containing, .dSYM/, $(patsubst $(JRE_IMAGE_DIR)/%, %, $(ALL_JRE_FILES))))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Create special filter rules when dealing with debug symbols on windows
|
||||||
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
|
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
||||||
|
JRE_SYMBOLS_EXCLUDE_PATTERN := %.pdb
|
||||||
|
else
|
||||||
|
ifeq ($(SHIP_DEBUG_SYMBOLS), public)
|
||||||
|
JRE_SYMBOLS_EXCLUDE_PATTERN := \
|
||||||
|
$(filter-out \
|
||||||
|
%.stripped.pdb, \
|
||||||
|
$(filter %.pdb, $(ALL_JRE_FILES)) \
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
JRE_BUNDLE_FILES := $(filter-out \
|
||||||
|
$(JRE_SYMBOLS_EXCLUDE_PATTERN) \
|
||||||
|
$(SYMBOLS_EXCLUDE_PATTERN), \
|
||||||
|
$(ALL_JRE_FILES))
|
||||||
|
|
||||||
ifeq ($(MACOSX_CODESIGN_MODE), hardened)
|
ifeq ($(MACOSX_CODESIGN_MODE), hardened)
|
||||||
# Macosx release build and code signing available.
|
# Macosx release build and code signing available.
|
||||||
@@ -228,7 +296,7 @@ ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), )
|
|||||||
$(call LogWarn, Signing $(JDK_BUNDLE_NAME))
|
$(call LogWarn, Signing $(JDK_BUNDLE_NAME))
|
||||||
$(CODESIGN) -s "$(MACOSX_CODESIGN_IDENTITY)" \
|
$(CODESIGN) -s "$(MACOSX_CODESIGN_IDENTITY)" \
|
||||||
--timestamp --options runtime --deep --force \
|
--timestamp --options runtime --deep --force \
|
||||||
$(JDK_MACOSX_BUNDLE_DIR_SIGNED)/$(JDK_MACOSX_BUNDLE_TOP_SUBDIR) $(LOG_DEBUG)
|
$(JDK_MACOSX_BUNDLE_DIR_SIGNED)/$(JDK_MACOSX_BUNDLE_TOP_DIR) $(LOG_DEBUG)
|
||||||
$(TOUCH) $@
|
$(TOUCH) $@
|
||||||
|
|
||||||
$(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \
|
$(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \
|
||||||
@@ -257,7 +325,7 @@ ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), )
|
|||||||
$(call LogWarn, Signing $(JRE_BUNDLE_NAME))
|
$(call LogWarn, Signing $(JRE_BUNDLE_NAME))
|
||||||
$(CODESIGN) -s "$(MACOSX_CODESIGN_IDENTITY)" \
|
$(CODESIGN) -s "$(MACOSX_CODESIGN_IDENTITY)" \
|
||||||
--timestamp --options runtime --deep --force \
|
--timestamp --options runtime --deep --force \
|
||||||
$(JRE_MACOSX_BUNDLE_DIR_SIGNED)/$(JRE_MACOSX_BUNDLE_TOP_SUBDIR) $(LOG_DEBUG)
|
$(JRE_MACOSX_BUNDLE_DIR_SIGNED)/$(JRE_MACOSX_BUNDLE_TOP_DIR) $(LOG_DEBUG)
|
||||||
$(TOUCH) $@
|
$(TOUCH) $@
|
||||||
|
|
||||||
$(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \
|
$(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \
|
||||||
@@ -429,21 +497,6 @@ ifneq ($(filter static-libs-graal-bundles, $(MAKECMDGOALS)), )
|
|||||||
STATIC_LIBS_GRAAL_TARGETS += $(BUILD_STATIC_LIBS_GRAAL_BUNDLE)
|
STATIC_LIBS_GRAAL_TARGETS += $(BUILD_STATIC_LIBS_GRAAL_BUNDLE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#################################################################################
|
|
||||||
|
|
||||||
ifneq ($(filter static-jdk-bundles, $(MAKECMDGOALS)), )
|
|
||||||
STATIC_JDK_BUNDLE_FILES := $(call FindFiles, $(STATIC_JDK_IMAGE_DIR))
|
|
||||||
|
|
||||||
$(eval $(call SetupBundleFile, BUILD_STATIC_JDK_BUNDLE, \
|
|
||||||
BUNDLE_NAME := $(STATIC_JDK_BUNDLE_NAME), \
|
|
||||||
FILES := $(STATIC_JDK_BUNDLE_FILES), \
|
|
||||||
BASE_DIRS := $(STATIC_JDK_IMAGE_DIR), \
|
|
||||||
SUBDIR := $(STATIC_JDK_BUNDLE_SUBDIR), \
|
|
||||||
))
|
|
||||||
|
|
||||||
STATIC_JDK_TARGETS += $(BUILD_STATIC_JDK_BUNDLE)
|
|
||||||
endif
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
product-bundles: $(PRODUCT_TARGETS)
|
product-bundles: $(PRODUCT_TARGETS)
|
||||||
@@ -454,12 +507,11 @@ docs-javase-bundles: $(DOCS_JAVASE_TARGETS)
|
|||||||
docs-reference-bundles: $(DOCS_REFERENCE_TARGETS)
|
docs-reference-bundles: $(DOCS_REFERENCE_TARGETS)
|
||||||
static-libs-bundles: $(STATIC_LIBS_TARGETS)
|
static-libs-bundles: $(STATIC_LIBS_TARGETS)
|
||||||
static-libs-graal-bundles: $(STATIC_LIBS_GRAAL_TARGETS)
|
static-libs-graal-bundles: $(STATIC_LIBS_GRAAL_TARGETS)
|
||||||
static-jdk-bundles: $(STATIC_JDK_TARGETS)
|
|
||||||
jcov-bundles: $(JCOV_TARGETS)
|
jcov-bundles: $(JCOV_TARGETS)
|
||||||
|
|
||||||
.PHONY: product-bundles test-bundles \
|
.PHONY: product-bundles test-bundles \
|
||||||
docs-jdk-bundles docs-javase-bundles docs-reference-bundles \
|
docs-jdk-bundles docs-javase-bundles docs-reference-bundles \
|
||||||
static-libs-bundles static-libs-graal-bundles static-jdk-bundles jcov-bundles
|
static-libs-bundles static-libs-graal-bundles jcov-bundles
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
|||||||
@@ -95,16 +95,14 @@ define SetupInterimModule
|
|||||||
SRC := $(BUILDTOOLS_OUTPUTDIR)/gensrc/$1.interim \
|
SRC := $(BUILDTOOLS_OUTPUTDIR)/gensrc/$1.interim \
|
||||||
$$(wildcard $(SUPPORT_OUTPUTDIR)/gensrc/$1) \
|
$$(wildcard $(SUPPORT_OUTPUTDIR)/gensrc/$1) \
|
||||||
$(TOPDIR)/src/$1/share/classes, \
|
$(TOPDIR)/src/$1/share/classes, \
|
||||||
EXCLUDES := sun, \
|
EXCLUDES := sun javax/tools/snippet-files, \
|
||||||
EXCLUDE_FILES := $(TOPDIR)/src/$1/share/classes/module-info.java \
|
EXCLUDE_FILES := $(TOPDIR)/src/$1/share/classes/module-info.java \
|
||||||
$(TOPDIR)/src/$1/share/classes/javax/tools/ToolProvider.java \
|
$(TOPDIR)/src/$1/share/classes/javax/tools/ToolProvider.java \
|
||||||
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/Main.java \
|
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/Main.java \
|
||||||
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/MemoryClassLoader.java \
|
|
||||||
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/MemoryContext.java \
|
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/MemoryContext.java \
|
||||||
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/MemoryModuleFinder.java \
|
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/MemoryModuleFinder.java \
|
||||||
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/SourceLauncher.java \
|
$(TOPDIR)/src/$1/share/classes/com/sun/tools/javac/launcher/SourceLauncher.java \
|
||||||
Standard.java, \
|
Standard.java, \
|
||||||
EXCLUDE_PATTERNS := -files, \
|
|
||||||
EXTRA_FILES := $(BUILDTOOLS_OUTPUTDIR)/gensrc/$1.interim/module-info.java \
|
EXTRA_FILES := $(BUILDTOOLS_OUTPUTDIR)/gensrc/$1.interim/module-info.java \
|
||||||
$($1.interim_EXTRA_FILES), \
|
$($1.interim_EXTRA_FILES), \
|
||||||
COPY := .gif .png .xml .css .svg .js .js.template .txt .woff .woff2 javax.tools.JavaCompilerTool, \
|
COPY := .gif .png .xml .css .svg .js .js.template .txt .woff .woff2 javax.tools.JavaCompilerTool, \
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ CreateHkTargets = \
|
|||||||
################################################################################
|
################################################################################
|
||||||
# Include module specific build settings
|
# Include module specific build settings
|
||||||
|
|
||||||
THIS_SNIPPET := $(call GetModuleSnippetName, Java)
|
THIS_SNIPPET := modules/$(MODULE)/Java.gmk
|
||||||
|
|
||||||
ifneq ($(wildcard $(THIS_SNIPPET)), )
|
ifneq ($(wildcard $(THIS_SNIPPET)), )
|
||||||
include MakeSnippetStart.gmk
|
include MakeSnippetStart.gmk
|
||||||
@@ -107,15 +107,14 @@ $(eval $(call SetupJavaCompilation, $(MODULE), \
|
|||||||
BIN := $(if $($(MODULE)_BIN), $($(MODULE)_BIN), $(JDK_OUTPUTDIR)/modules), \
|
BIN := $(if $($(MODULE)_BIN), $($(MODULE)_BIN), $(JDK_OUTPUTDIR)/modules), \
|
||||||
HEADERS := $(SUPPORT_OUTPUTDIR)/headers, \
|
HEADERS := $(SUPPORT_OUTPUTDIR)/headers, \
|
||||||
CREATE_API_DIGEST := true, \
|
CREATE_API_DIGEST := true, \
|
||||||
|
PROCESS_JBR_API := true, \
|
||||||
CLEAN := $(CLEAN), \
|
CLEAN := $(CLEAN), \
|
||||||
CLEAN_FILES := $(CLEAN_FILES), \
|
CLEAN_FILES := $(CLEAN_FILES), \
|
||||||
COPY := $(COPY), \
|
COPY := $(COPY), \
|
||||||
DISABLED_WARNINGS := $(DISABLED_WARNINGS_java), \
|
DISABLED_WARNINGS := $(DISABLED_WARNINGS_java), \
|
||||||
EXCLUDES := $(EXCLUDES), \
|
EXCLUDES := $(EXCLUDES), \
|
||||||
EXCLUDE_FILES := $(EXCLUDE_FILES), \
|
EXCLUDE_FILES := $(EXCLUDE_FILES), \
|
||||||
EXCLUDE_PATTERNS := -files, \
|
|
||||||
KEEP_ALL_TRANSLATIONS := $(KEEP_ALL_TRANSLATIONS), \
|
KEEP_ALL_TRANSLATIONS := $(KEEP_ALL_TRANSLATIONS), \
|
||||||
TARGET_RELEASE := $(TARGET_RELEASE), \
|
|
||||||
JAVAC_FLAGS := \
|
JAVAC_FLAGS := \
|
||||||
$(DOCLINT) \
|
$(DOCLINT) \
|
||||||
$(JAVAC_FLAGS) \
|
$(JAVAC_FLAGS) \
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ $(eval $(call SetupJavaCompilation, COMPILE_DEPEND, \
|
|||||||
TARGET_RELEASE := $(TARGET_RELEASE_BOOTJDK), \
|
TARGET_RELEASE := $(TARGET_RELEASE_BOOTJDK), \
|
||||||
SRC := $(TOPDIR)/make/jdk/src/classes, \
|
SRC := $(TOPDIR)/make/jdk/src/classes, \
|
||||||
INCLUDES := build/tools/depend, \
|
INCLUDES := build/tools/depend, \
|
||||||
BIN := $(BUILDTOOLS_OUTPUTDIR)/depend, \
|
BIN := $(BUILDTOOLS_OUTPUTDIR)/plugins, \
|
||||||
DISABLED_WARNINGS := options, \
|
DISABLED_WARNINGS := options, \
|
||||||
JAVAC_FLAGS := \
|
JAVAC_FLAGS := \
|
||||||
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
|
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
|
||||||
@@ -93,13 +93,21 @@ $(eval $(call SetupJavaCompilation, COMPILE_DEPEND, \
|
|||||||
--add-exports jdk.internal.opt/jdk.internal.opt=jdk.javadoc.interim, \
|
--add-exports jdk.internal.opt/jdk.internal.opt=jdk.javadoc.interim, \
|
||||||
))
|
))
|
||||||
|
|
||||||
DEPEND_SERVICE_PROVIDER := $(BUILDTOOLS_OUTPUTDIR)/depend/META-INF/services/com.sun.source.util.Plugin
|
$(eval $(call SetupJavaCompilation, COMPILE_JBR_API_PLUGIN, \
|
||||||
|
TARGET_RELEASE := $(TARGET_RELEASE_BOOTJDK), \
|
||||||
|
SRC := $(TOPDIR)/make/jdk/src/classes, \
|
||||||
|
INCLUDES := build/tools/jbrapi, \
|
||||||
|
BIN := $(BUILDTOOLS_OUTPUTDIR)/plugins, \
|
||||||
|
))
|
||||||
|
|
||||||
$(DEPEND_SERVICE_PROVIDER):
|
PLUGINS_SERVICE_PROVIDER := $(BUILDTOOLS_OUTPUTDIR)/plugins/META-INF/services/com.sun.source.util.Plugin
|
||||||
$(call MakeDir, $(BUILDTOOLS_OUTPUTDIR)/depend/META-INF/services)
|
|
||||||
|
$(PLUGINS_SERVICE_PROVIDER):
|
||||||
|
$(call MakeDir, $(BUILDTOOLS_OUTPUTDIR)/plugins/META-INF/services)
|
||||||
$(ECHO) build.tools.depend.Depend > $@
|
$(ECHO) build.tools.depend.Depend > $@
|
||||||
|
$(ECHO) build.tools.jbrapi.JBRApiPlugin >> $@
|
||||||
|
|
||||||
TARGETS += $(COMPILE_DEPEND) $(DEPEND_SERVICE_PROVIDER)
|
TARGETS += $(COMPILE_DEPEND) $(COMPILE_JBR_API_PLUGIN) $(PLUGINS_SERVICE_PROVIDER)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -34,28 +34,22 @@ else
|
|||||||
JCOV_INPUT_IMAGE_DIR := $(JDK_IMAGE_DIR)
|
JCOV_INPUT_IMAGE_DIR := $(JDK_IMAGE_DIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
JCOV_SUPPORT_DIR := $(SUPPORT_OUTPUTDIR)/jcov
|
|
||||||
|
|
||||||
#moving instrumented jdk image in and out of jcov_temp because of CODETOOLS-7902299
|
#moving instrumented jdk image in and out of jcov_temp because of CODETOOLS-7902299
|
||||||
JCOV_TEMP := $(JCOV_SUPPORT_DIR)/temp
|
JCOV_TEMP := $(SUPPORT_OUTPUTDIR)/jcov_temp
|
||||||
|
|
||||||
ifneq ($(JCOV_MODULES), )
|
|
||||||
JCOV_MODULES_FILTER := $(foreach m, $(JCOV_MODULES), -include_module $m)
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(JCOV_IMAGE_DIR)/release: $(JCOV_INPUT_IMAGE_DIR)/release
|
$(JCOV_IMAGE_DIR)/release: $(JCOV_INPUT_IMAGE_DIR)/release
|
||||||
$(call LogWarn, Creating instrumented jdk image with JCov)
|
$(call LogWarn, Creating instrumented jdk image with JCov)
|
||||||
$(call MakeDir, $(JCOV_TEMP) $(IMAGES_OUTPUTDIR))
|
$(call MakeDir, $(JCOV_TEMP) $(IMAGES_OUTPUTDIR))
|
||||||
$(RM) -r $(JCOV_IMAGE_DIR) $(JCOV_TEMP)/*
|
$(RM) -r $(JCOV_IMAGE_DIR) $(JCOV_TEMP)/*
|
||||||
$(CP) -r $(JCOV_INPUT_IMAGE_DIR) $(JCOV_TEMP)/$(JCOV_IMAGE_SUBDIR)
|
$(CP) -r $(JCOV_INPUT_IMAGE_DIR) $(JCOV_TEMP)/$(JCOV_IMAGE_SUBDIR)
|
||||||
$(call ExecuteWithLog, $(JCOV_SUPPORT_DIR)/run-jcov, \
|
$(JAVA) -Xmx3g -jar $(JCOV_HOME)/lib/jcov.jar JREInstr \
|
||||||
$(JAVA) -Xmx3g -jar $(JCOV_HOME)/lib/jcov.jar JREInstr \
|
|
||||||
-t $(JCOV_TEMP)/$(JCOV_IMAGE_SUBDIR)/template.xml \
|
-t $(JCOV_TEMP)/$(JCOV_IMAGE_SUBDIR)/template.xml \
|
||||||
-rt $(JCOV_HOME)/lib/jcov_network_saver.jar \
|
-rt $(JCOV_HOME)/lib/jcov_network_saver.jar \
|
||||||
-exclude 'java.lang.Object' \
|
-exclude 'java.lang.Object' \
|
||||||
|
-exclude 'jdk.internal.org.objectweb.**' \
|
||||||
-exclude jdk.test.Main -exclude '**\$Proxy*' \
|
-exclude jdk.test.Main -exclude '**\$Proxy*' \
|
||||||
$(JCOV_MODULES_FILTER) $(JCOV_FILTERS) \
|
$(JCOV_FILTERS) \
|
||||||
$(JCOV_TEMP)/$(JCOV_IMAGE_SUBDIR))
|
$(JCOV_TEMP)/$(JCOV_IMAGE_SUBDIR)
|
||||||
$(MV) $(JCOV_TEMP)/$(JCOV_IMAGE_SUBDIR) $(JCOV_IMAGE_DIR)
|
$(MV) $(JCOV_TEMP)/$(JCOV_IMAGE_SUBDIR) $(JCOV_IMAGE_DIR)
|
||||||
$(RMDIR) $(JCOV_TEMP)
|
$(RMDIR) $(JCOV_TEMP)
|
||||||
|
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ endif
|
|||||||
################################################################################
|
################################################################################
|
||||||
# Include module specific build settings
|
# Include module specific build settings
|
||||||
|
|
||||||
THIS_SNIPPET := $(call GetModuleSnippetName, Jmod)
|
THIS_SNIPPET := modules/$(MODULE)/Jmod.gmk
|
||||||
|
|
||||||
ifneq ($(wildcard $(THIS_SNIPPET)), )
|
ifneq ($(wildcard $(THIS_SNIPPET)), )
|
||||||
include MakeSnippetStart.gmk
|
include MakeSnippetStart.gmk
|
||||||
@@ -218,14 +218,10 @@ ifeq ($(call isTargetOs, windows), true)
|
|||||||
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
||||||
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*,*.diz,*.pdb,*.map}'
|
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*,*.diz,*.pdb,*.map}'
|
||||||
else
|
else
|
||||||
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*,*.map}'
|
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*,*.diz,*.map}'
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*,*.diz,*.debuginfo,*.dSYM/**,*.dSYM}'
|
||||||
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*,*.diz,*.debuginfo,*.dSYM/**,*.dSYM}'
|
|
||||||
else
|
|
||||||
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*}'
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Unless we are creating a very large module, use the small tool JVM options
|
# Unless we are creating a very large module, use the small tool JVM options
|
||||||
@@ -261,7 +257,6 @@ $(eval $(call SetupExecute, create_$(JMOD_FILE), \
|
|||||||
WARN := Creating $(INTERIM_MSG)$(JMOD_FILE), \
|
WARN := Creating $(INTERIM_MSG)$(JMOD_FILE), \
|
||||||
DEPS := $(DEPS), \
|
DEPS := $(DEPS), \
|
||||||
OUTPUT_FILE := $(JMODS_DIR)/$(JMOD_FILE), \
|
OUTPUT_FILE := $(JMODS_DIR)/$(JMOD_FILE), \
|
||||||
WORKING_DIR := $(WORKSPACE_ROOT), \
|
|
||||||
SUPPORT_DIR := $(JMODS_SUPPORT_DIR), \
|
SUPPORT_DIR := $(JMODS_SUPPORT_DIR), \
|
||||||
PRE_COMMAND := $(RM) $(JMODS_DIR)/$(JMOD_FILE) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \
|
PRE_COMMAND := $(RM) $(JMODS_DIR)/$(JMOD_FILE) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \
|
||||||
COMMAND := $(JMOD) $(JMOD_SMALL_FLAGS) create --module-version $(VERSION_SHORT) \
|
COMMAND := $(JMOD) $(JMOD_SMALL_FLAGS) create --module-version $(VERSION_SHORT) \
|
||||||
|
|||||||
@@ -92,20 +92,21 @@ REFERENCE_TAGS := $(JAVADOC_TAGS)
|
|||||||
JAVADOC_DISABLED_DOCLINT_WARNINGS := missing
|
JAVADOC_DISABLED_DOCLINT_WARNINGS := missing
|
||||||
JAVADOC_DISABLED_DOCLINT_PACKAGES := org.w3c.* javax.smartcardio
|
JAVADOC_DISABLED_DOCLINT_PACKAGES := org.w3c.* javax.smartcardio
|
||||||
|
|
||||||
|
# Allow overriding on the command line
|
||||||
|
# (intentionally sharing name with the javac option)
|
||||||
|
JAVA_WARNINGS_ARE_ERRORS ?= -Werror
|
||||||
|
|
||||||
# The initial set of options for javadoc
|
# The initial set of options for javadoc
|
||||||
# -XDaccessInternalAPI is a temporary workaround, see 8373909
|
|
||||||
JAVADOC_OPTIONS := -use -keywords -notimestamp \
|
JAVADOC_OPTIONS := -use -keywords -notimestamp \
|
||||||
-serialwarn -encoding utf-8 -docencoding utf-8 -breakiterator \
|
-encoding ISO-8859-1 -docencoding UTF-8 -breakiterator \
|
||||||
-splitIndex --system none -javafx --expand-requires transitive \
|
-splitIndex --system none -javafx --expand-requires transitive \
|
||||||
--override-methods=summary \
|
--override-methods=summary
|
||||||
-XDaccessInternalAPI
|
|
||||||
|
|
||||||
# The reference options must stay stable to allow for comparisons across the
|
# The reference options must stay stable to allow for comparisons across the
|
||||||
# development cycle.
|
# development cycle.
|
||||||
REFERENCE_OPTIONS := -XDignore.symbol.file=true -use -keywords -notimestamp \
|
REFERENCE_OPTIONS := -XDignore.symbol.file=true -use -keywords -notimestamp \
|
||||||
-serialwarn -encoding utf-8 -breakiterator -splitIndex --system none \
|
-encoding ISO-8859-1 -breakiterator -splitIndex --system none \
|
||||||
-html5 -javafx --expand-requires transitive \
|
-html5 -javafx --expand-requires transitive
|
||||||
-XDaccessInternalAPI
|
|
||||||
|
|
||||||
# Should we add DRAFT stamps to the generated javadoc?
|
# Should we add DRAFT stamps to the generated javadoc?
|
||||||
ifeq ($(VERSION_IS_GA), true)
|
ifeq ($(VERSION_IS_GA), true)
|
||||||
@@ -239,8 +240,8 @@ define create_overview_file
|
|||||||
#
|
#
|
||||||
ifneq ($$($1_GROUPS), )
|
ifneq ($$($1_GROUPS), )
|
||||||
$1_OVERVIEW_TEXT += \
|
$1_OVERVIEW_TEXT += \
|
||||||
<p>This document has \
|
<p>This document is divided into \
|
||||||
$$(subst 2,two,$$(subst 3,three,$$(words $$($1_GROUPS)))) major sections:</p> \
|
$$(subst 2,two,$$(subst 3,three,$$(words $$($1_GROUPS)))) sections:</p> \
|
||||||
<blockquote><dl> \
|
<blockquote><dl> \
|
||||||
#
|
#
|
||||||
$1_OVERVIEW_TEXT += $$(foreach g, $$($1_GROUPS), \
|
$1_OVERVIEW_TEXT += $$(foreach g, $$($1_GROUPS), \
|
||||||
@@ -249,10 +250,7 @@ define create_overview_file
|
|||||||
)
|
)
|
||||||
$1_OVERVIEW_TEXT += \
|
$1_OVERVIEW_TEXT += \
|
||||||
</dl></blockquote> \
|
</dl></blockquote> \
|
||||||
<p><a href="../specs/index.html">Related documents</a> specify the Java \
|
#
|
||||||
programming language, the Java Virtual Machine, various protocols and file \
|
|
||||||
formats pertaining to the Java platform, and tools included in the JDK.</p> \
|
|
||||||
#
|
|
||||||
endif
|
endif
|
||||||
$1_OVERVIEW_TEXT += \
|
$1_OVERVIEW_TEXT += \
|
||||||
</body></html> \
|
</body></html> \
|
||||||
@@ -266,7 +264,7 @@ define create_overview_file
|
|||||||
$$($1_OVERVIEW): $$($1_OVERVIEW_VARDEPS_FILE)
|
$$($1_OVERVIEW): $$($1_OVERVIEW_VARDEPS_FILE)
|
||||||
$$(call LogInfo, Creating overview.html for $1)
|
$$(call LogInfo, Creating overview.html for $1)
|
||||||
$$(call MakeDir, $$(@D))
|
$$(call MakeDir, $$(@D))
|
||||||
$$(PRINTF) "%s" '$$($1_OVERVIEW_TEXT)' > $$@
|
$$(PRINTF) > $$@ '$$($1_OVERVIEW_TEXT)'
|
||||||
endef
|
endef
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -294,7 +292,8 @@ define SetupApiDocsGenerationBody
|
|||||||
$1_INDIRECT_EXPORTS := $$(call FindTransitiveIndirectDepsForModules, $$($1_MODULES))
|
$1_INDIRECT_EXPORTS := $$(call FindTransitiveIndirectDepsForModules, $$($1_MODULES))
|
||||||
$1_ALL_MODULES := $$(sort $$($1_MODULES) $$($1_INDIRECT_EXPORTS))
|
$1_ALL_MODULES := $$(sort $$($1_MODULES) $$($1_INDIRECT_EXPORTS))
|
||||||
|
|
||||||
$1_JAVA_ARGS := -Dextlink.spec.version=$$(VERSION_SPECIFICATION)
|
$1_JAVA_ARGS := -Dextlink.spec.version=$$(VERSION_SPECIFICATION) \
|
||||||
|
-Djspec.version=$$(VERSION_SPECIFICATION)
|
||||||
|
|
||||||
ifeq ($$(ENABLE_FULL_DOCS), true)
|
ifeq ($$(ENABLE_FULL_DOCS), true)
|
||||||
$1_SEALED_GRAPHS_DIR := $$(SUPPORT_OUTPUTDIR)/docs/$1-sealed-graphs
|
$1_SEALED_GRAPHS_DIR := $$(SUPPORT_OUTPUTDIR)/docs/$1-sealed-graphs
|
||||||
@@ -323,9 +322,7 @@ define SetupApiDocsGenerationBody
|
|||||||
# Ignore the doclint warnings in certain packages
|
# Ignore the doclint warnings in certain packages
|
||||||
$1_OPTIONS += -Xdoclint/package:$$(call CommaList, $$(addprefix -, \
|
$1_OPTIONS += -Xdoclint/package:$$(call CommaList, $$(addprefix -, \
|
||||||
$$(JAVADOC_DISABLED_DOCLINT_PACKAGES)))
|
$$(JAVADOC_DISABLED_DOCLINT_PACKAGES)))
|
||||||
ifeq ($$(JAVA_WARNINGS_AS_ERRORS), true)
|
$1_OPTIONS += $$(JAVA_WARNINGS_ARE_ERRORS)
|
||||||
$1_OPTIONS += -Werror
|
|
||||||
endif
|
|
||||||
|
|
||||||
$1_DOC_TITLE := $$($1_LONG_NAME)<br>Version $$(VERSION_SPECIFICATION) API \
|
$1_DOC_TITLE := $$($1_LONG_NAME)<br>Version $$(VERSION_SPECIFICATION) API \
|
||||||
Specification
|
Specification
|
||||||
@@ -545,9 +542,7 @@ $(eval $(call SetupApiDocsGeneration, REFERENCE_API, \
|
|||||||
# Format: space-delimited list of names, including at most one '%' as a
|
# Format: space-delimited list of names, including at most one '%' as a
|
||||||
# wildcard. Spec source files match if their filename or any enclosing folder
|
# wildcard. Spec source files match if their filename or any enclosing folder
|
||||||
# name matches one of the items in SPEC_FILTER.
|
# name matches one of the items in SPEC_FILTER.
|
||||||
ifeq ($(SPEC_FILTER), )
|
SPEC_FILTER := %
|
||||||
SPEC_FILTER := %
|
|
||||||
endif
|
|
||||||
|
|
||||||
ApplySpecFilter = \
|
ApplySpecFilter = \
|
||||||
$(strip $(foreach file, $(1), \
|
$(strip $(foreach file, $(1), \
|
||||||
|
|||||||
@@ -76,14 +76,10 @@ $(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXECUTABLE_SUFFIX) $(CLASSLIST
|
|||||||
$(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $(JLI_TRACE_FILE)))
|
$(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $(JLI_TRACE_FILE)))
|
||||||
$(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@.raw \
|
$(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@.raw \
|
||||||
$(CLASSLIST_FILE_VM_OPTS) \
|
$(CLASSLIST_FILE_VM_OPTS) \
|
||||||
-Xlog:aot=off \
|
|
||||||
-Xlog:cds=off \
|
|
||||||
-cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
|
-cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
|
||||||
build.tools.classlist.HelloClasslist $(LOG_DEBUG)
|
build.tools.classlist.HelloClasslist $(LOG_DEBUG)
|
||||||
$(GREP) -v HelloClasslist $@.raw > $@.interim
|
$(GREP) -v HelloClasslist $@.raw > $@.interim
|
||||||
$(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -Xshare:dump \
|
$(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -Xshare:dump \
|
||||||
-Xlog:aot=off \
|
|
||||||
-Xlog:cds=off \
|
|
||||||
-XX:SharedClassListFile=$@.interim -XX:SharedArchiveFile=$@.jsa \
|
-XX:SharedClassListFile=$@.interim -XX:SharedArchiveFile=$@.jsa \
|
||||||
-Xmx128M -Xms128M $(LOG_INFO)
|
-Xmx128M -Xms128M $(LOG_INFO)
|
||||||
$(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@.raw.2 \
|
$(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@.raw.2 \
|
||||||
@@ -91,8 +87,6 @@ $(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXECUTABLE_SUFFIX) $(CLASSLIST
|
|||||||
-Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \
|
-Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \
|
||||||
$(CLASSLIST_FILE_VM_OPTS) \
|
$(CLASSLIST_FILE_VM_OPTS) \
|
||||||
--module-path $(SUPPORT_OUTPUTDIR)/classlist.jar \
|
--module-path $(SUPPORT_OUTPUTDIR)/classlist.jar \
|
||||||
-Xlog:aot=off \
|
|
||||||
-Xlog:cds=off \
|
|
||||||
-cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
|
-cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
|
||||||
build.tools.classlist.HelloClasslist \
|
build.tools.classlist.HelloClasslist \
|
||||||
2> $(LINK_OPT_DIR)/stderr > $(JLI_TRACE_FILE) \
|
2> $(LINK_OPT_DIR)/stderr > $(JLI_TRACE_FILE) \
|
||||||
@@ -106,8 +100,6 @@ $(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXECUTABLE_SUFFIX) $(CLASSLIST
|
|||||||
$(GREP) -v HelloClasslist $@.raw.2 > $@.raw.3
|
$(GREP) -v HelloClasslist $@.raw.2 > $@.raw.3
|
||||||
$(GREP) -v @cp $@.raw.3 > $@.raw.4
|
$(GREP) -v @cp $@.raw.3 > $@.raw.4
|
||||||
$(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java \
|
$(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java \
|
||||||
-Xlog:aot=off \
|
|
||||||
-Xlog:cds=off \
|
|
||||||
-cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
|
-cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
|
||||||
build.tools.classlist.SortClasslist $@.raw.4 > $@
|
build.tools.classlist.SortClasslist $@.raw.4 > $@
|
||||||
|
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ ifeq ($(HSDIS_BACKEND), binutils)
|
|||||||
TOOLCHAIN_TYPE := gcc
|
TOOLCHAIN_TYPE := gcc
|
||||||
OPENJDK_TARGET_OS := linux
|
OPENJDK_TARGET_OS := linux
|
||||||
OPENJDK_TARGET_OS_TYPE := unix
|
OPENJDK_TARGET_OS_TYPE := unix
|
||||||
|
CC_OUT_OPTION := -o$(SPACE)
|
||||||
GENDEPS_FLAGS := -MMD -MF
|
GENDEPS_FLAGS := -MMD -MF
|
||||||
CFLAGS_DEBUG_SYMBOLS := -g
|
CFLAGS_DEBUG_SYMBOLS := -g
|
||||||
DISABLED_WARNINGS :=
|
DISABLED_WARNINGS :=
|
||||||
|
|||||||
@@ -97,10 +97,6 @@ ifeq ($(JLINK_PRODUCE_LINKABLE_RUNTIME), true)
|
|||||||
JLINK_JDK_EXTRA_OPTS += --generate-linkable-runtime
|
JLINK_JDK_EXTRA_OPTS += --generate-linkable-runtime
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(JLINK_USER_EXTRA_FLAGS), )
|
|
||||||
JLINK_JDK_EXTRA_OPTS += $(JLINK_USER_EXTRA_FLAGS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(eval $(call SetupExecute, jlink_jdk, \
|
$(eval $(call SetupExecute, jlink_jdk, \
|
||||||
WARN := Creating jdk image, \
|
WARN := Creating jdk image, \
|
||||||
DEPS := $(JDK_JMODS) $(BASE_RELEASE_FILE) \
|
DEPS := $(JDK_JMODS) $(BASE_RELEASE_FILE) \
|
||||||
@@ -148,6 +144,7 @@ define CreateCDSArchive
|
|||||||
$1_$2_DUMP_EXTRA_ARG := $$($1_$2_COOPS_OPTION) $$($1_$2_COH_OPTION)
|
$1_$2_DUMP_EXTRA_ARG := $$($1_$2_COOPS_OPTION) $$($1_$2_COH_OPTION)
|
||||||
$1_$2_DUMP_TYPE := $(if $(findstring _nocoops, $2),-NOCOOPS,)$(if $(findstring _coh, $2),-COH,)
|
$1_$2_DUMP_TYPE := $(if $(findstring _nocoops, $2),-NOCOOPS,)$(if $(findstring _coh, $2),-COH,)
|
||||||
|
|
||||||
|
# Only G1 supports dumping the shared heap, so explicitly use G1 if the JVM supports it.
|
||||||
$1_$2_CDS_DUMP_FLAGS := $(CDS_DUMP_FLAGS) $(if $(filter g1gc, $(JVM_FEATURES_$1)), -XX:+UseG1GC)
|
$1_$2_CDS_DUMP_FLAGS := $(CDS_DUMP_FLAGS) $(if $(filter g1gc, $(JVM_FEATURES_$1)), -XX:+UseG1GC)
|
||||||
|
|
||||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
@@ -161,7 +158,7 @@ define CreateCDSArchive
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(DEBUG_CDS_ARCHIVE), true)
|
ifeq ($(DEBUG_CDS_ARCHIVE), true)
|
||||||
$1_$2_CDS_DUMP_FLAGS += -Xlog:aot+map*=trace:file=$$(JDK_IMAGE_DIR)/$$($1_$2_CDS_ARCHIVE).cdsmap:none:filesize=0
|
$1_$2_CDS_DUMP_FLAGS += -Xlog:cds+map*=trace:file=$$(JDK_IMAGE_DIR)/$$($1_$2_CDS_ARCHIVE).cdsmap:none:filesize=0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$$(eval $$(call SetupExecute, $1_$2_gen_cds_archive_jdk, \
|
$$(eval $$(call SetupExecute, $1_$2_gen_cds_archive_jdk, \
|
||||||
@@ -269,7 +266,6 @@ endif
|
|||||||
# Since debug symbols are not included in the jmod files, they need to be copied
|
# Since debug symbols are not included in the jmod files, they need to be copied
|
||||||
# in manually after generating the images.
|
# in manually after generating the images.
|
||||||
|
|
||||||
# These variables are read by SetupCopyDebuginfo
|
|
||||||
ALL_JDK_MODULES := $(JDK_MODULES)
|
ALL_JDK_MODULES := $(JDK_MODULES)
|
||||||
ALL_JRE_MODULES := $(sort $(JRE_MODULES), $(foreach m, $(JRE_MODULES), \
|
ALL_JRE_MODULES := $(sort $(JRE_MODULES), $(foreach m, $(JRE_MODULES), \
|
||||||
$(call FindTransitiveDepsForModule, $m)))
|
$(call FindTransitiveDepsForModule, $m)))
|
||||||
@@ -282,33 +278,29 @@ else
|
|||||||
endif
|
endif
|
||||||
CMDS_TARGET_SUBDIR := bin
|
CMDS_TARGET_SUBDIR := bin
|
||||||
|
|
||||||
# Copy debug info files into symbols bundle.
|
# Param 1 - either JDK or JRE
|
||||||
# In case of Windows and --with-external-symbols-in-bundles=public, take care to remove *.stripped.pdb files
|
|
||||||
SetupCopyDebuginfo = \
|
SetupCopyDebuginfo = \
|
||||||
$(foreach m, $(ALL_$1_MODULES), \
|
$(foreach m, $(ALL_$1_MODULES), \
|
||||||
$(eval dbgfiles := $(call FindDebuginfoFiles, $(SUPPORT_OUTPUTDIR)/modules_libs/$m)) \
|
|
||||||
$(eval dbgfiles := $(if $(filter true+public,$(call isTargetOs,windows)+$(SHIP_DEBUG_SYMBOLS)), \
|
|
||||||
$(filter-out %.stripped.pdb,$(dbgfiles)),$(dbgfiles)) \
|
|
||||||
) \
|
|
||||||
$(eval $(call SetupCopyFiles, COPY_$1_LIBS_DEBUGINFO_$m, \
|
$(eval $(call SetupCopyFiles, COPY_$1_LIBS_DEBUGINFO_$m, \
|
||||||
SRC := $(SUPPORT_OUTPUTDIR)/modules_libs/$m, \
|
SRC := $(SUPPORT_OUTPUTDIR)/modules_libs/$m, \
|
||||||
DEST := $($1_IMAGE_DIR)/$(LIBS_TARGET_SUBDIR), \
|
DEST := $($1_IMAGE_DIR)/$(LIBS_TARGET_SUBDIR), \
|
||||||
FILES := $(dbgfiles), \
|
FILES := $(call FindDebuginfoFiles, \
|
||||||
|
$(SUPPORT_OUTPUTDIR)/modules_libs/$m), \
|
||||||
)) \
|
)) \
|
||||||
$(eval $1_TARGETS += $$(COPY_$1_LIBS_DEBUGINFO_$m)) \
|
$(eval $1_TARGETS += $$(COPY_$1_LIBS_DEBUGINFO_$m)) \
|
||||||
$(eval dbgfiles := $(call FindDebuginfoFiles, $(SUPPORT_OUTPUTDIR)/modules_cmds/$m)) \
|
|
||||||
$(eval dbgfiles := $(if $(filter true+public,$(call isTargetOs,windows)+$(SHIP_DEBUG_SYMBOLS)), \
|
|
||||||
$(filter-out %.stripped.pdb,$(dbgfiles)),$(dbgfiles)) \
|
|
||||||
) \
|
|
||||||
$(eval $(call SetupCopyFiles, COPY_$1_CMDS_DEBUGINFO_$m, \
|
$(eval $(call SetupCopyFiles, COPY_$1_CMDS_DEBUGINFO_$m, \
|
||||||
SRC := $(SUPPORT_OUTPUTDIR)/modules_cmds/$m, \
|
SRC := $(SUPPORT_OUTPUTDIR)/modules_cmds/$m, \
|
||||||
DEST := $($1_IMAGE_DIR)/$(CMDS_TARGET_SUBDIR), \
|
DEST := $($1_IMAGE_DIR)/$(CMDS_TARGET_SUBDIR), \
|
||||||
FILES := $(dbgfiles), \
|
FILES := $(call FindDebuginfoFiles, \
|
||||||
|
$(SUPPORT_OUTPUTDIR)/modules_cmds/$m), \
|
||||||
)) \
|
)) \
|
||||||
$(eval $1_TARGETS += $$(COPY_$1_CMDS_DEBUGINFO_$m)) \
|
$(eval $1_TARGETS += $$(COPY_$1_CMDS_DEBUGINFO_$m)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
# No space before argument to avoid having to put $(strip ) everywhere in implementation above.
|
# No space before argument to avoid having to put $(strip ) everywhere in
|
||||||
|
# implementation above.
|
||||||
|
$(call SetupCopyDebuginfo,JDK)
|
||||||
|
$(call SetupCopyDebuginfo,JRE)
|
||||||
$(call SetupCopyDebuginfo,SYMBOLS)
|
$(call SetupCopyDebuginfo,SYMBOLS)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|||||||
@@ -110,18 +110,7 @@ reconfigure:
|
|||||||
CUSTOM_CONFIG_DIR="$(CUSTOM_CONFIG_DIR)" \
|
CUSTOM_CONFIG_DIR="$(CUSTOM_CONFIG_DIR)" \
|
||||||
$(RECONFIGURE_COMMAND) )
|
$(RECONFIGURE_COMMAND) )
|
||||||
|
|
||||||
# Create files that are needed to run most targets in Main.gmk
|
.PHONY: print-modules print-targets print-tests print-configuration reconfigure
|
||||||
create-make-helpers:
|
|
||||||
( cd $(TOPDIR) && \
|
|
||||||
$(MAKE) $(MAKE_ARGS) -j 1 -f make/GenerateFindTests.gmk \
|
|
||||||
$(USER_MAKE_VARS) )
|
|
||||||
( cd $(TOPDIR) && \
|
|
||||||
$(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
|
|
||||||
UPDATE_MODULE_DEPS=true NO_RECIPES=true \
|
|
||||||
create-main-targets-include )
|
|
||||||
|
|
||||||
.PHONY: print-modules print-targets print-tests print-configuration \
|
|
||||||
reconfigure create-make-helpers
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# The main target. This will delegate all other targets into Main.gmk.
|
# The main target. This will delegate all other targets into Main.gmk.
|
||||||
@@ -141,19 +130,16 @@ TARGET_DESCRIPTION := target$(if $(word 2, $(MAIN_TARGETS)),s) \
|
|||||||
# variables are explicitly propagated using $(USER_MAKE_VARS).
|
# variables are explicitly propagated using $(USER_MAKE_VARS).
|
||||||
main: MAKEOVERRIDES :=
|
main: MAKEOVERRIDES :=
|
||||||
|
|
||||||
main: $(INIT_TARGETS) create-make-helpers
|
main: $(INIT_TARGETS)
|
||||||
ifneq ($(SEQUENTIAL_TARGETS)$(PARALLEL_TARGETS), )
|
ifneq ($(SEQUENTIAL_TARGETS)$(PARALLEL_TARGETS), )
|
||||||
$(call RotateLogFiles)
|
$(call RotateLogFiles)
|
||||||
$(ECHO) "Building $(TARGET_DESCRIPTION)" $(BUILD_LOG_PIPE_SIMPLE)
|
$(PRINTF) "Building $(TARGET_DESCRIPTION)\n" $(BUILD_LOG_PIPE_SIMPLE)
|
||||||
ifneq ($(SEQUENTIAL_TARGETS), )
|
ifneq ($(SEQUENTIAL_TARGETS), )
|
||||||
# Don't touch build output dir since we might be cleaning. That
|
# Don't touch build output dir since we might be cleaning. That
|
||||||
# means no log pipe.
|
# means no log pipe.
|
||||||
( cd $(TOPDIR) && \
|
( cd $(TOPDIR) && \
|
||||||
$(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
|
$(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
|
||||||
$(SEQUENTIAL_TARGETS) )
|
$(SEQUENTIAL_TARGETS) )
|
||||||
# We might have cleaned away essential files, recreate them.
|
|
||||||
( cd $(TOPDIR) && \
|
|
||||||
$(MAKE) $(MAKE_ARGS) -j 1 -f make/Init.gmk create-make-helpers )
|
|
||||||
endif
|
endif
|
||||||
ifneq ($(PARALLEL_TARGETS), )
|
ifneq ($(PARALLEL_TARGETS), )
|
||||||
$(call PrepareFailureLogs)
|
$(call PrepareFailureLogs)
|
||||||
@@ -168,8 +154,7 @@ main: $(INIT_TARGETS) create-make-helpers
|
|||||||
-f make/Main.gmk $(USER_MAKE_VARS) \
|
-f make/Main.gmk $(USER_MAKE_VARS) \
|
||||||
$(PARALLEL_TARGETS) $(COMPARE_BUILD_MAKE) $(BUILD_LOG_PIPE) || \
|
$(PARALLEL_TARGETS) $(COMPARE_BUILD_MAKE) $(BUILD_LOG_PIPE) || \
|
||||||
( exitcode=$$? && \
|
( exitcode=$$? && \
|
||||||
$(ECHO) "" $(BUILD_LOG_PIPE_SIMPLE) && \
|
$(PRINTF) "\nERROR: Build failed for $(TARGET_DESCRIPTION) (exit code $$exitcode) \n" \
|
||||||
$(ECHO) "ERROR: Build failed for $(TARGET_DESCRIPTION) (exit code $$exitcode)" \
|
|
||||||
$(BUILD_LOG_PIPE_SIMPLE) && \
|
$(BUILD_LOG_PIPE_SIMPLE) && \
|
||||||
cd $(TOPDIR) && $(MAKE) $(MAKE_ARGS) -j 1 -f make/Init.gmk \
|
cd $(TOPDIR) && $(MAKE) $(MAKE_ARGS) -j 1 -f make/Init.gmk \
|
||||||
on-failure ; \
|
on-failure ; \
|
||||||
@@ -181,7 +166,7 @@ main: $(INIT_TARGETS) create-make-helpers
|
|||||||
if test -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error ; then \
|
if test -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error ; then \
|
||||||
exit 1 ; \
|
exit 1 ; \
|
||||||
fi
|
fi
|
||||||
$(ECHO) "Finished building $(TARGET_DESCRIPTION)" $(BUILD_LOG_PIPE_SIMPLE)
|
$(PRINTF) "Finished building $(TARGET_DESCRIPTION)\n" $(BUILD_LOG_PIPE_SIMPLE)
|
||||||
$(call ReportProfileTimes)
|
$(call ReportProfileTimes)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -192,8 +177,7 @@ on-failure:
|
|||||||
$(call PrintFailureReports)
|
$(call PrintFailureReports)
|
||||||
$(call PrintBuildLogFailures)
|
$(call PrintBuildLogFailures)
|
||||||
$(call ReportProfileTimes)
|
$(call ReportProfileTimes)
|
||||||
$(ECHO) "HELP: Run 'make doctor' to diagnose build problems."
|
$(PRINTF) "HELP: Run 'make doctor' to diagnose build problems.\n\n"
|
||||||
$(ECHO) ""
|
|
||||||
ifneq ($(COMPARE_BUILD), )
|
ifneq ($(COMPARE_BUILD), )
|
||||||
$(call CleanupCompareBuild)
|
$(call CleanupCompareBuild)
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -173,10 +173,9 @@ define PrintFailureReports
|
|||||||
$(RM) $(MAKESUPPORT_OUTPUTDIR)/failure-summary.log ; \
|
$(RM) $(MAKESUPPORT_OUTPUTDIR)/failure-summary.log ; \
|
||||||
$(if $(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*.log), \
|
$(if $(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*.log), \
|
||||||
( \
|
( \
|
||||||
$(ECHO) "" ; \
|
$(PRINTF) "\n=== Output from failing command(s) repeated here ===\n" ; \
|
||||||
$(ECHO) "=== Output from failing command(s) repeated here ===" ; \
|
|
||||||
$(foreach logfile, $(sort $(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*.log)), \
|
$(foreach logfile, $(sort $(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*.log)), \
|
||||||
$(ECHO) "* For target $(notdir $(basename $(logfile))):" ; \
|
$(PRINTF) "* For target $(notdir $(basename $(logfile))):\n" ; \
|
||||||
$(if $(filter all, $(LOG_REPORT)), \
|
$(if $(filter all, $(LOG_REPORT)), \
|
||||||
$(GREP) -v -e "^Note: including file:" < $(logfile) || true ; \
|
$(GREP) -v -e "^Note: including file:" < $(logfile) || true ; \
|
||||||
, \
|
, \
|
||||||
@@ -186,9 +185,8 @@ define PrintFailureReports
|
|||||||
fi ; \
|
fi ; \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
$(ECHO) "" ; \
|
$(PRINTF) "\n* All command lines available in $(MAKESUPPORT_OUTPUTDIR)/failure-logs.\n" ; \
|
||||||
$(ECHO) "* All command lines available in $(MAKESUPPORT_OUTPUTDIR)/failure-logs." ; \
|
$(PRINTF) "=== End of repeated output ===\n" ; \
|
||||||
$(ECHO) "=== End of repeated output ===" ; \
|
|
||||||
) >> $(MAKESUPPORT_OUTPUTDIR)/failure-summary.log \
|
) >> $(MAKESUPPORT_OUTPUTDIR)/failure-summary.log \
|
||||||
) \
|
) \
|
||||||
)
|
)
|
||||||
@@ -197,16 +195,13 @@ endef
|
|||||||
define PrintBuildLogFailures
|
define PrintBuildLogFailures
|
||||||
$(if $(filter none, $(LOG_REPORT)), , \
|
$(if $(filter none, $(LOG_REPORT)), , \
|
||||||
if $(GREP) -q "recipe for target .* failed" $(BUILD_LOG) 2> /dev/null; then \
|
if $(GREP) -q "recipe for target .* failed" $(BUILD_LOG) 2> /dev/null; then \
|
||||||
$(ECHO) "" ; \
|
$(PRINTF) "\n=== Make failed targets repeated here ===\n" ; \
|
||||||
$(ECHO) "=== Make failed targets repeated here ===" ; \
|
|
||||||
$(GREP) "recipe for target .* failed" $(BUILD_LOG) ; \
|
$(GREP) "recipe for target .* failed" $(BUILD_LOG) ; \
|
||||||
$(ECHO) "=== End of repeated output ===" ; \
|
$(PRINTF) "=== End of repeated output ===\n" ; \
|
||||||
$(ECHO) "" ; \
|
$(PRINTF) "\nHELP: Try searching the build log for the name of the first failed target.\n" ; \
|
||||||
$(ECHO) "HELP: Try searching the build log for the name of the first failed target." ; \
|
|
||||||
else \
|
else \
|
||||||
$(ECHO) "" ; \
|
$(PRINTF) "\nNo indication of failed target found.\n" ; \
|
||||||
$(ECHO) "No indication of failed target found." ; \
|
$(PRINTF) "HELP: Try searching the build log for '] Error'.\n" ; \
|
||||||
$(ECHO) "HELP: Try searching the build log for '] Error'." ; \
|
|
||||||
fi >> $(MAKESUPPORT_OUTPUTDIR)/failure-summary.log ; \
|
fi >> $(MAKESUPPORT_OUTPUTDIR)/failure-summary.log ; \
|
||||||
$(CAT) $(MAKESUPPORT_OUTPUTDIR)/failure-summary.log \
|
$(CAT) $(MAKESUPPORT_OUTPUTDIR)/failure-summary.log \
|
||||||
)
|
)
|
||||||
|
|||||||
73
make/JBRApi.gmk
Normal file
73
make/JBRApi.gmk
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
#
|
||||||
|
# Copyright 2000-2023 JetBrains s.r.o.
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
#
|
||||||
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation. Oracle designates this
|
||||||
|
# particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
|
# questions.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(SPEC)
|
||||||
|
include MakeBase.gmk
|
||||||
|
include Utils.gmk
|
||||||
|
|
||||||
|
JBR_API_ORIGIN := https://github.com/JetBrains/JetBrainsRuntimeApi.git
|
||||||
|
JBR_API_DIR := $(TOPDIR)/jbr-api
|
||||||
|
|
||||||
|
ARTIFACT_NAME := jbr-api-SNAPSHOT
|
||||||
|
ifeq ($(call isBuildOsEnv, windows.cygwin windows.msys2), true)
|
||||||
|
HOME := $$USERPROFILE
|
||||||
|
M2_REPO := $(shell $(PATHTOOL) $(HOME))/.m2/repository
|
||||||
|
else ifeq ($(call isBuildOsEnv, windows.wsl1 windows.wsl2), true)
|
||||||
|
HOME := `cmd.exe /C "echo %USERPROFILE%" 2> /dev/null`
|
||||||
|
M2_REPO := $(shell $(PATHTOOL) $(HOME))/.m2/repository
|
||||||
|
else
|
||||||
|
M2_REPO := $(HOME)/.m2/repository
|
||||||
|
endif
|
||||||
|
M2_ARTIFACT := $(M2_REPO)/com/jetbrains/jbr-api/SNAPSHOT
|
||||||
|
M2_POM_CONTENT := \
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?> \
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" \
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> \
|
||||||
|
<modelVersion>4.0.0</modelVersion> \
|
||||||
|
<groupId>com.jetbrains</groupId> \
|
||||||
|
<artifactId>jbr-api</artifactId> \
|
||||||
|
<version>SNAPSHOT</version> \
|
||||||
|
</project> \
|
||||||
|
|
||||||
|
jbr-api:
|
||||||
|
if [ -d "$(JBR_API_DIR)" ]; then \
|
||||||
|
$(GIT) -C "$(JBR_API_DIR)" fetch; \
|
||||||
|
$(GIT) -C "$(JBR_API_DIR)" merge-base --is-ancestor origin/main HEAD || \
|
||||||
|
$(ECHO) "!!! Current JBR API revision is outdated, update the branch in $(JBR_API_DIR) !!!"; \
|
||||||
|
else \
|
||||||
|
$(ECHO) "JBR API directory does not exist. Initializing..."; \
|
||||||
|
$(GIT) clone "$(JBR_API_ORIGIN)" "$(JBR_API_DIR)" --config core.autocrlf=false; \
|
||||||
|
fi
|
||||||
|
$(BASH) "$(JBR_API_DIR)/tools/build.sh" dev "$(BOOT_JDK)"
|
||||||
|
if [ -d "$(M2_REPO)" ]; then \
|
||||||
|
$(MKDIR) -p $(M2_ARTIFACT); \
|
||||||
|
$(ECHO) "$(M2_POM_CONTENT)" > $(M2_ARTIFACT)/$(ARTIFACT_NAME).pom; \
|
||||||
|
$(CP) "$(JBR_API_DIR)/out/$(ARTIFACT_NAME).jar" "$(M2_ARTIFACT)"; \
|
||||||
|
$(ECHO) "Installed into local Maven repository as com.jetbrains:jbr-api:SNAPSHOT"; \
|
||||||
|
else \
|
||||||
|
$(ECHO) "No Maven repository found at $(M2_REPO) - skipping local installation"; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: jbr-api
|
||||||
@@ -42,12 +42,6 @@ include MakeFileStart.gmk
|
|||||||
include $(TOPDIR)/make/MainSupport.gmk
|
include $(TOPDIR)/make/MainSupport.gmk
|
||||||
|
|
||||||
include FindTests.gmk
|
include FindTests.gmk
|
||||||
|
|
||||||
ifeq ($(UPDATE_MODULE_DEPS), true)
|
|
||||||
# Update module-deps.gmk if requested. This is read in Modules.gmk.
|
|
||||||
GENERATE_MODULE_DEPS_FILE := true
|
|
||||||
endif
|
|
||||||
|
|
||||||
include Modules.gmk
|
include Modules.gmk
|
||||||
|
|
||||||
# Are we requested to ignore dependencies?
|
# Are we requested to ignore dependencies?
|
||||||
@@ -358,7 +352,7 @@ $(eval $(call SetupTarget, vscode-project-ccls, \
|
|||||||
|
|
||||||
$(eval $(call SetupTarget, idea-gen-config, \
|
$(eval $(call SetupTarget, idea-gen-config, \
|
||||||
MAKEFILE := ide/idea/jdk/IdeaGenConfig, \
|
MAKEFILE := ide/idea/jdk/IdeaGenConfig, \
|
||||||
ARGS := IDEA_OUTPUT="$(IDEA_OUTPUT)" MODULES="$(MODULES)", \
|
ARGS := IDEA_OUTPUT="$(IDEA_OUTPUT)" MODULES="$(MODULES)" TOPLEVEL_DIR="$(TOPLEVEL_DIR)" IDEA_OUTPUT_PARENT="$(IDEA_OUTPUT_PARENT)", \
|
||||||
))
|
))
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -417,14 +411,12 @@ $(eval $(call SetupTarget, create-source-revision-tracker, \
|
|||||||
))
|
))
|
||||||
|
|
||||||
BOOTCYCLE_TARGET := product-images
|
BOOTCYCLE_TARGET := product-images
|
||||||
BOOTCYCLE_SPEC := $(dir $(SPEC))bootcycle-spec.gmk
|
|
||||||
|
|
||||||
bootcycle-images:
|
bootcycle-images:
|
||||||
ifneq ($(COMPILE_TYPE), cross)
|
ifneq ($(COMPILE_TYPE), cross)
|
||||||
$(call LogWarn, Boot cycle build step 2: Building a new JDK image using previously built image)
|
$(call LogWarn, Boot cycle build step 2: Building a new JDK image using previously built image)
|
||||||
$(call MakeDir, $(OUTPUTDIR)/bootcycle-build)
|
$(call MakeDir, $(OUTPUTDIR)/bootcycle-build)
|
||||||
+$(MAKE) $(MAKE_ARGS) -f $(TOPDIR)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \
|
+$(MAKE) $(MAKE_ARGS) -f $(TOPDIR)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \
|
||||||
LOG_PREFIX="[bootcycle] " JOBS= SPEC=$(BOOTCYCLE_SPEC) main
|
LOG_PREFIX="[bootcycle] " JOBS= SPEC=$(dir $(SPEC))bootcycle-spec.gmk main
|
||||||
else
|
else
|
||||||
$(call LogWarn, Boot cycle build disabled when cross compiling)
|
$(call LogWarn, Boot cycle build disabled when cross compiling)
|
||||||
endif
|
endif
|
||||||
@@ -461,9 +453,9 @@ $(eval $(call SetupTarget, symbols-image, \
|
|||||||
TARGET := symbols, \
|
TARGET := symbols, \
|
||||||
))
|
))
|
||||||
|
|
||||||
$(eval $(call SetupTarget, static-launchers, \
|
$(eval $(call SetupTarget, static-launcher, \
|
||||||
MAKEFILE := StaticLibs, \
|
MAKEFILE := StaticLibs, \
|
||||||
TARGET := static-launchers, \
|
TARGET := static-launcher, \
|
||||||
DEPS := hotspot-static-libs static-libs, \
|
DEPS := hotspot-static-libs static-libs, \
|
||||||
))
|
))
|
||||||
|
|
||||||
@@ -883,12 +875,6 @@ $(eval $(call SetupTarget, static-libs-graal-bundles, \
|
|||||||
DEPS := static-libs-graal-image, \
|
DEPS := static-libs-graal-image, \
|
||||||
))
|
))
|
||||||
|
|
||||||
$(eval $(call SetupTarget, static-jdk-bundles, \
|
|
||||||
MAKEFILE := Bundles, \
|
|
||||||
TARGET := static-jdk-bundles, \
|
|
||||||
DEPS := static-jdk-image, \
|
|
||||||
))
|
|
||||||
|
|
||||||
ifeq ($(JCOV_ENABLED), true)
|
ifeq ($(JCOV_ENABLED), true)
|
||||||
$(eval $(call SetupTarget, jcov-bundles, \
|
$(eval $(call SetupTarget, jcov-bundles, \
|
||||||
MAKEFILE := Bundles, \
|
MAKEFILE := Bundles, \
|
||||||
@@ -1014,7 +1000,7 @@ else
|
|||||||
else ifeq ($(EXTERNAL_BUILDJDK), false)
|
else ifeq ($(EXTERNAL_BUILDJDK), false)
|
||||||
# When not cross compiling, the BUILD_JDK is the interim jdk image, and
|
# When not cross compiling, the BUILD_JDK is the interim jdk image, and
|
||||||
# the javac launcher is needed.
|
# the javac launcher is needed.
|
||||||
jdk.compiler-gendata: jdk.compiler-launchers java.base-launchers
|
jdk.compiler-gendata: jdk.compiler-launchers
|
||||||
jdk.javadoc-gendata: jdk.compiler-launchers
|
jdk.javadoc-gendata: jdk.compiler-launchers
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -1290,7 +1276,7 @@ ifeq ($(call isTargetOs, macosx), true)
|
|||||||
legacy-images: mac-legacy-jre-bundle
|
legacy-images: mac-legacy-jre-bundle
|
||||||
endif
|
endif
|
||||||
|
|
||||||
static-exploded-image: static-launchers exploded-image
|
static-exploded-image: static-launcher exploded-image
|
||||||
|
|
||||||
# These targets build the various documentation images
|
# These targets build the various documentation images
|
||||||
docs-jdk-image: docs-jdk
|
docs-jdk-image: docs-jdk
|
||||||
@@ -1335,7 +1321,10 @@ endif
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
# all-images builds all our deliverables as images.
|
# all-images builds all our deliverables as images.
|
||||||
all-images: product-images static-jdk-image test-image all-docs-images
|
all-images: product-images test-image all-docs-images
|
||||||
|
ifeq ($(call isTargetOs, linux macosx windows), true)
|
||||||
|
all-images: static-jdk-image
|
||||||
|
endif
|
||||||
|
|
||||||
# all-bundles packages all our deliverables as tar.gz bundles.
|
# all-bundles packages all our deliverables as tar.gz bundles.
|
||||||
all-bundles: product-bundles test-bundles docs-bundles static-libs-bundles
|
all-bundles: product-bundles test-bundles docs-bundles static-libs-bundles
|
||||||
@@ -1407,7 +1396,7 @@ CLEAN_SUPPORT_DIRS += demos
|
|||||||
CLEAN_SUPPORT_DIR_TARGETS := $(addprefix clean-, $(CLEAN_SUPPORT_DIRS))
|
CLEAN_SUPPORT_DIR_TARGETS := $(addprefix clean-, $(CLEAN_SUPPORT_DIRS))
|
||||||
CLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native lib
|
CLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native lib
|
||||||
CLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS))
|
CLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS))
|
||||||
CLEAN_PHASES += gensrc java native include
|
CLEAN_PHASES := gensrc java native include
|
||||||
CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES))
|
CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES))
|
||||||
CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES))
|
CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES))
|
||||||
# Construct targets of the form clean-$module-$phase
|
# Construct targets of the form clean-$module-$phase
|
||||||
@@ -1496,10 +1485,17 @@ print-tests:
|
|||||||
|
|
||||||
create-main-targets-include:
|
create-main-targets-include:
|
||||||
$(call LogInfo, Generating main target list)
|
$(call LogInfo, Generating main target list)
|
||||||
$(call MakeDir, $(MAKESUPPORT_OUTPUTDIR))
|
|
||||||
@$(ECHO) ALL_MAIN_TARGETS := $(sort $(ALL_TARGETS)) > \
|
@$(ECHO) ALL_MAIN_TARGETS := $(sort $(ALL_TARGETS)) > \
|
||||||
$(MAKESUPPORT_OUTPUTDIR)/main-targets.gmk
|
$(MAKESUPPORT_OUTPUTDIR)/main-targets.gmk
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# JBR API
|
||||||
|
|
||||||
|
$(eval $(call SetupTarget, jbr-api, \
|
||||||
|
MAKEFILE := JBRApi, \
|
||||||
|
TARGET := jbr-api \
|
||||||
|
))
|
||||||
|
|
||||||
.PHONY: $(ALL_TARGETS)
|
.PHONY: $(ALL_TARGETS)
|
||||||
|
|
||||||
FRC: # Force target
|
FRC: # Force target
|
||||||
|
|||||||
@@ -58,76 +58,76 @@ endef
|
|||||||
|
|
||||||
define CleanDocs
|
define CleanDocs
|
||||||
@$(PRINTF) "Cleaning docs ..."
|
@$(PRINTF) "Cleaning docs ..."
|
||||||
@$(ECHO) "" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/docs
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/docs
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/javadoc
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/javadoc
|
||||||
$(RM) -r $(IMAGES_OUTPUTDIR)/docs
|
$(RM) -r $(IMAGES_OUTPUTDIR)/docs
|
||||||
@$(ECHO) " done"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# Cleans the dir given as $1
|
# Cleans the dir given as $1
|
||||||
define CleanDir
|
define CleanDir
|
||||||
@$(PRINTF) "Cleaning %s build artifacts ..." "$(strip $1)"
|
@$(PRINTF) "Cleaning $(strip $1) build artifacts ..."
|
||||||
@$(ECHO) "" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
($(CD) $(OUTPUTDIR) && $(RM) -r $1)
|
($(CD) $(OUTPUTDIR) && $(RM) -r $1)
|
||||||
@$(ECHO) " done"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define CleanSupportDir
|
define CleanSupportDir
|
||||||
@$(PRINTF) "Cleaning %s build artifacts ..." "$(strip $1)"
|
@$(PRINTF) "Cleaning $(strip $1) build artifacts ..."
|
||||||
@$(ECHO) "" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/$(strip $1)
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/$(strip $1)
|
||||||
@$(ECHO) " done"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define CleanMakeSupportDir
|
define CleanMakeSupportDir
|
||||||
@$(PRINTF) "Cleaning %s make support artifacts ..." "$(strip $1)"
|
@$(PRINTF) "Cleaning $(strip $1) make support artifacts ..."
|
||||||
@$(ECHO) "" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
$(RM) -r $(MAKESUPPORT_OUTPUTDIR)/$(strip $1)
|
$(RM) -r $(MAKESUPPORT_OUTPUTDIR)/$(strip $1)
|
||||||
@$(ECHO) " done"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define CleanTest
|
define CleanTest
|
||||||
@$(PRINTF) "Cleaning test %s ..." "$(strip $1)"
|
@$(PRINTF) "Cleaning test $(strip $1) ..."
|
||||||
@$(ECHO) "" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))
|
||||||
# Remove as much of the test directory structure as is empty
|
# Remove as much of the test directory structure as is empty
|
||||||
$(RMDIR) -p $(dir $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))) 2> /dev/null || true
|
$(RMDIR) -p $(dir $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))) 2> /dev/null || true
|
||||||
@$(ECHO) " done"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Clean-gensrc
|
define Clean-gensrc
|
||||||
@$(PRINTF) "Cleaning gensrc %s..." "$(if $1,for $(strip $1) )"
|
@$(PRINTF) "Cleaning gensrc $(if $1,for $(strip $1) )..."
|
||||||
@$(ECHO) "" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/gensrc/$(strip $1)
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/gensrc/$(strip $1)
|
||||||
@$(ECHO) " done"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Clean-java
|
define Clean-java
|
||||||
@$(PRINTF) "Cleaning java %s..." "$(if $1,for $(strip $1) )"
|
@$(PRINTF) "Cleaning java $(if $1,for $(strip $1) )..."
|
||||||
@$(ECHO) "" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
$(RM) -r $(JDK_OUTPUTDIR)/modules/$(strip $1)
|
$(RM) -r $(JDK_OUTPUTDIR)/modules/$(strip $1)
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/special_classes/$(strip $1)
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/special_classes/$(strip $1)
|
||||||
$(ECHO) " done"
|
$(PRINTF) " done\n"
|
||||||
$(PRINTF) "Cleaning headers %s..." "$(if $1,for $(strip $1) )"
|
$(PRINTF) "Cleaning headers $(if $1,for $(strip $1)) ..."
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/headers/$(strip $1)
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/headers/$(strip $1)
|
||||||
@$(ECHO) " done"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Clean-native
|
define Clean-native
|
||||||
@$(PRINTF) "Cleaning native %s..." "$(if $1,for $(strip $1) )"
|
@$(PRINTF) "Cleaning native $(if $1,for $(strip $1) )..."
|
||||||
@$(ECHO) "" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/native/$(strip $1)
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/native/$(strip $1)
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/modules_cmds/$(strip $1)
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/modules_cmds/$(strip $1)
|
||||||
@$(ECHO) " done"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Clean-include
|
define Clean-include
|
||||||
@$(PRINTF) "Cleaning include %s..." "$(if $1,for $(strip $1) )"
|
@$(PRINTF) "Cleaning include $(if $1,for $(strip $1) )..."
|
||||||
@$(ECHO) "" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/modules_include/$(strip $1)
|
$(RM) -r $(SUPPORT_OUTPUTDIR)/modules_include/$(strip $1)
|
||||||
@$(ECHO) " done"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define CleanModule
|
define CleanModule
|
||||||
@@ -149,7 +149,7 @@ endef
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PHASE_MAKEDIRS += $(TOPDIR)/make
|
PHASE_MAKEDIRS := $(TOPDIR)/make
|
||||||
|
|
||||||
# Helper macro for DeclareRecipesForPhase
|
# Helper macro for DeclareRecipesForPhase
|
||||||
# Declare a recipe for calling the module and phase specific makefile.
|
# Declare a recipe for calling the module and phase specific makefile.
|
||||||
|
|||||||
@@ -34,23 +34,18 @@ include MakeFileStart.gmk
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
include CopyFiles.gmk
|
include CopyFiles.gmk
|
||||||
include Modules.gmk
|
|
||||||
|
|
||||||
MODULE_SRC := $(TOPDIR)/src/$(MODULE)
|
MODULE_SRC := $(TOPDIR)/src/$(MODULE)
|
||||||
|
|
||||||
################################################################################
|
# Define the snippet for MakeSnippetStart/End
|
||||||
# Include module specific build settings
|
THIS_SNIPPET := modules/$(MODULE)/$(MAKEFILE_PREFIX).gmk
|
||||||
|
|
||||||
THIS_SNIPPET := $(call GetModuleSnippetName, $(MAKEFILE_PREFIX))
|
include MakeSnippetStart.gmk
|
||||||
|
|
||||||
ifneq ($(wildcard $(THIS_SNIPPET)), )
|
# Include the file being wrapped.
|
||||||
include MakeSnippetStart.gmk
|
include $(THIS_SNIPPET)
|
||||||
|
|
||||||
# Include the file being wrapped.
|
include MakeSnippetEnd.gmk
|
||||||
include $(THIS_SNIPPET)
|
|
||||||
|
|
||||||
include MakeSnippetEnd.gmk
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(MAKEFILE_PREFIX), Lib)
|
ifeq ($(MAKEFILE_PREFIX), Lib)
|
||||||
# We need to keep track of what libraries are generated/needed by this
|
# We need to keep track of what libraries are generated/needed by this
|
||||||
|
|||||||
@@ -48,11 +48,6 @@ include $(TOPDIR)/make/common/LogUtils.gmk
|
|||||||
# a configuration. This will define ALL_GLOBAL_TARGETS.
|
# a configuration. This will define ALL_GLOBAL_TARGETS.
|
||||||
include $(TOPDIR)/make/Global.gmk
|
include $(TOPDIR)/make/Global.gmk
|
||||||
|
|
||||||
# Targets provided by Init.gmk.
|
|
||||||
ALL_INIT_TARGETS := print-modules print-targets print-configuration \
|
|
||||||
print-tests reconfigure pre-compare-build post-compare-build \
|
|
||||||
create-make-helpers
|
|
||||||
|
|
||||||
# CALLED_TARGETS is the list of targets that the user provided,
|
# CALLED_TARGETS is the list of targets that the user provided,
|
||||||
# or "default" if unspecified.
|
# or "default" if unspecified.
|
||||||
CALLED_TARGETS := $(if $(MAKECMDGOALS), $(MAKECMDGOALS), default)
|
CALLED_TARGETS := $(if $(MAKECMDGOALS), $(MAKECMDGOALS), default)
|
||||||
@@ -80,6 +75,7 @@ ifneq ($(SKIP_SPEC), true)
|
|||||||
|
|
||||||
# Basic checks on environment and command line.
|
# Basic checks on environment and command line.
|
||||||
$(eval $(call CheckControlVariables))
|
$(eval $(call CheckControlVariables))
|
||||||
|
$(eval $(call CheckDeprecatedEnvironment))
|
||||||
$(eval $(call CheckInvalidMakeFlags))
|
$(eval $(call CheckInvalidMakeFlags))
|
||||||
|
|
||||||
# Check that CONF_CHECK is valid.
|
# Check that CONF_CHECK is valid.
|
||||||
@@ -98,6 +94,10 @@ ifneq ($(SKIP_SPEC), true)
|
|||||||
# This will setup ALL_MAIN_TARGETS.
|
# This will setup ALL_MAIN_TARGETS.
|
||||||
$(eval $(call DefineMainTargets, FORCE, $(firstword $(SPECS))))
|
$(eval $(call DefineMainTargets, FORCE, $(firstword $(SPECS))))
|
||||||
|
|
||||||
|
# Targets provided by Init.gmk.
|
||||||
|
ALL_INIT_TARGETS := print-modules print-targets print-configuration \
|
||||||
|
print-tests reconfigure pre-compare-build post-compare-build
|
||||||
|
|
||||||
# Separate called targets depending on type.
|
# Separate called targets depending on type.
|
||||||
INIT_TARGETS := $(filter $(ALL_INIT_TARGETS), $(CALLED_SPEC_TARGETS))
|
INIT_TARGETS := $(filter $(ALL_INIT_TARGETS), $(CALLED_SPEC_TARGETS))
|
||||||
MAIN_TARGETS := $(filter $(ALL_MAIN_TARGETS), $(CALLED_SPEC_TARGETS))
|
MAIN_TARGETS := $(filter $(ALL_MAIN_TARGETS), $(CALLED_SPEC_TARGETS))
|
||||||
@@ -162,19 +162,19 @@ ifneq ($(SKIP_SPEC), true)
|
|||||||
( cd $(TOPDIR) && \
|
( cd $(TOPDIR) && \
|
||||||
$(foreach spec, $(SPECS), \
|
$(foreach spec, $(SPECS), \
|
||||||
$(MAKE) $(MAKE_INIT_ARGS) -j 1 -f $(TOPDIR)/make/Init.gmk \
|
$(MAKE) $(MAKE_INIT_ARGS) -j 1 -f $(TOPDIR)/make/Init.gmk \
|
||||||
SPEC=$(spec) TOPDIR_ALT=$(TOPDIR) \
|
SPEC=$(spec) $(MAKE_INIT_MAIN_TARGET_ARGS) \
|
||||||
$(MAKE_INIT_MAIN_TARGET_ARGS) main && \
|
main && \
|
||||||
$(if $(and $(COMPARE_BUILD), $(PARALLEL_TARGETS)), \
|
$(if $(and $(COMPARE_BUILD), $(PARALLEL_TARGETS)), \
|
||||||
$(MAKE) $(MAKE_INIT_ARGS) -f $(TOPDIR)/make/Init.gmk \
|
$(MAKE) $(MAKE_INIT_ARGS) -f $(TOPDIR)/make/Init.gmk \
|
||||||
SPEC=$(spec) TOPDIR_ALT=$(TOPDIR) \
|
SPEC=$(spec) \
|
||||||
COMPARE_BUILD="$(COMPARE_BUILD)" \
|
COMPARE_BUILD="$(COMPARE_BUILD)" \
|
||||||
pre-compare-build && \
|
pre-compare-build && \
|
||||||
$(MAKE) $(MAKE_INIT_ARGS) -j 1 -f $(TOPDIR)/make/Init.gmk \
|
$(MAKE) $(MAKE_INIT_ARGS) -j 1 -f $(TOPDIR)/make/Init.gmk \
|
||||||
SPEC=$(spec) TOPDIR_ALT=$(TOPDIR) \
|
SPEC=$(spec) $(MAKE_INIT_MAIN_TARGET_ARGS) \
|
||||||
COMPARE_BUILD="$(COMPARE_BUILD):NODRYRUN=true" \
|
COMPARE_BUILD="$(COMPARE_BUILD):NODRYRUN=true" \
|
||||||
$(MAKE_INIT_MAIN_TARGET_ARGS) main && \
|
main && \
|
||||||
$(MAKE) $(MAKE_INIT_ARGS) -f $(TOPDIR)/make/Init.gmk \
|
$(MAKE) $(MAKE_INIT_ARGS) -f $(TOPDIR)/make/Init.gmk \
|
||||||
SPEC=$(spec) TOPDIR_ALT=$(TOPDIR) \
|
SPEC=$(spec) \
|
||||||
COMPARE_BUILD="$(COMPARE_BUILD):NODRYRUN=true" \
|
COMPARE_BUILD="$(COMPARE_BUILD):NODRYRUN=true" \
|
||||||
post-compare-build && \
|
post-compare-build && \
|
||||||
) \
|
) \
|
||||||
|
|||||||
@@ -94,6 +94,18 @@ define CheckControlVariables
|
|||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
# Check for deprecated ALT_ variables
|
||||||
|
define CheckDeprecatedEnvironment
|
||||||
|
defined_alt_variables := $$(filter ALT_%, $$(.VARIABLES))
|
||||||
|
ifneq ($$(defined_alt_variables), )
|
||||||
|
$$(info Warning: You have the following ALT_ variables set:)
|
||||||
|
$$(foreach var, $$(defined_alt_variables), $$(info * $$(var)=$$($$(var))))
|
||||||
|
$$(info ALT_ variables are deprecated, and may result in a failed build.)
|
||||||
|
$$(info Please clean your environment.)
|
||||||
|
$$(info )
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
# Check for invalid make flags like -j
|
# Check for invalid make flags like -j
|
||||||
define CheckInvalidMakeFlags
|
define CheckInvalidMakeFlags
|
||||||
# This is a trick to get this rule to execute before any other rules
|
# This is a trick to get this rule to execute before any other rules
|
||||||
@@ -250,14 +262,13 @@ endef
|
|||||||
# Param 1: FORCE = force generation of main-targets.gmk or LAZY = do not force.
|
# Param 1: FORCE = force generation of main-targets.gmk or LAZY = do not force.
|
||||||
# Param 2: The SPEC file to use.
|
# Param 2: The SPEC file to use.
|
||||||
define DefineMainTargets
|
define DefineMainTargets
|
||||||
SPEC_FILE := $(strip $2)
|
|
||||||
|
|
||||||
# We will start by making sure the main-targets.gmk file is removed, if
|
# We will start by making sure the main-targets.gmk file is removed, if
|
||||||
# make has not been restarted. By the -include, we will trigger the
|
# make has not been restarted. By the -include, we will trigger the
|
||||||
# rule for generating the file (which is never there since we removed it),
|
# rule for generating the file (which is never there since we removed it),
|
||||||
# thus generating it fresh, and make will restart, incrementing the restart
|
# thus generating it fresh, and make will restart, incrementing the restart
|
||||||
# count.
|
# count.
|
||||||
main_targets_file := $$(dir $$(SPEC_FILE))make-support/main-targets.gmk
|
main_targets_file := $$(dir $(strip $2))make-support/main-targets.gmk
|
||||||
|
|
||||||
ifeq ($$(MAKE_RESTARTS), )
|
ifeq ($$(MAKE_RESTARTS), )
|
||||||
# Only do this if make has not been restarted, and if we do not force it.
|
# Only do this if make has not been restarted, and if we do not force it.
|
||||||
@@ -268,12 +279,8 @@ define DefineMainTargets
|
|||||||
|
|
||||||
$$(main_targets_file):
|
$$(main_targets_file):
|
||||||
@( cd $$(TOPDIR) && \
|
@( cd $$(TOPDIR) && \
|
||||||
$$(MAKE) $$(MAKE_LOG_FLAGS) -s -r -R -f $$(TOPDIR)/make/GenerateFindTests.gmk \
|
$$(MAKE) $$(MAKE_LOG_FLAGS) -r -R -f $$(TOPDIR)/make/Main.gmk \
|
||||||
-I $$(TOPDIR)/make/common SPEC=$$(SPEC_FILE) TOPDIR_ALT=$$(TOPDIR))
|
-I $$(TOPDIR)/make/common SPEC=$(strip $2) NO_RECIPES=true \
|
||||||
@( cd $$(TOPDIR) && \
|
|
||||||
$$(MAKE) $$(MAKE_LOG_FLAGS) -s -r -R -f $$(TOPDIR)/make/Main.gmk \
|
|
||||||
-I $$(TOPDIR)/make/common SPEC=$$(SPEC_FILE) TOPDIR_ALT=$$(TOPDIR) \
|
|
||||||
UPDATE_MODULE_DEPS=true NO_RECIPES=true \
|
|
||||||
$$(MAKE_LOG_VARS) \
|
$$(MAKE_LOG_VARS) \
|
||||||
create-main-targets-include )
|
create-main-targets-include )
|
||||||
|
|
||||||
|
|||||||
@@ -75,6 +75,9 @@ endif
|
|||||||
|
|
||||||
# This is the JDK that we will test
|
# This is the JDK that we will test
|
||||||
JDK_UNDER_TEST := $(JDK_IMAGE_DIR)
|
JDK_UNDER_TEST := $(JDK_IMAGE_DIR)
|
||||||
|
# The JDK used to compile jtreg test code. By default it is the same as
|
||||||
|
# JDK_UNDER_TEST.
|
||||||
|
JDK_FOR_COMPILE := $(JDK_IMAGE_DIR)
|
||||||
|
|
||||||
TEST_RESULTS_DIR := $(OUTPUTDIR)/test-results
|
TEST_RESULTS_DIR := $(OUTPUTDIR)/test-results
|
||||||
TEST_SUPPORT_DIR := $(OUTPUTDIR)/test-support
|
TEST_SUPPORT_DIR := $(OUTPUTDIR)/test-support
|
||||||
@@ -115,7 +118,6 @@ JTREG_COV_OPTIONS :=
|
|||||||
|
|
||||||
ifeq ($(TEST_OPTS_JCOV), true)
|
ifeq ($(TEST_OPTS_JCOV), true)
|
||||||
JCOV_OUTPUT_DIR := $(TEST_RESULTS_DIR)/jcov-output
|
JCOV_OUTPUT_DIR := $(TEST_RESULTS_DIR)/jcov-output
|
||||||
JCOV_SUPPORT_DIR := $(TEST_SUPPORT_DIR)/jcov-support
|
|
||||||
JCOV_GRABBER_LOG := $(JCOV_OUTPUT_DIR)/grabber.log
|
JCOV_GRABBER_LOG := $(JCOV_OUTPUT_DIR)/grabber.log
|
||||||
JCOV_RESULT_FILE := $(JCOV_OUTPUT_DIR)/result.xml
|
JCOV_RESULT_FILE := $(JCOV_OUTPUT_DIR)/result.xml
|
||||||
JCOV_REPORT := $(JCOV_OUTPUT_DIR)/report
|
JCOV_REPORT := $(JCOV_OUTPUT_DIR)/report
|
||||||
@@ -204,9 +206,8 @@ $(eval $(call SetTestOpt,AOT_JDK,JTREG))
|
|||||||
|
|
||||||
$(eval $(call ParseKeywordVariable, JTREG, \
|
$(eval $(call ParseKeywordVariable, JTREG, \
|
||||||
SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR FAILURE_HANDLER_TIMEOUT \
|
SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR FAILURE_HANDLER_TIMEOUT \
|
||||||
TEST_MODE ASSERT VERBOSE RETAIN TEST_THREAD_FACTORY JVMTI_STRESS_AGENT \
|
TEST_MODE ASSERT VERBOSE RETAIN TEST_THREAD_FACTORY MAX_MEM RUN_PROBLEM_LISTS \
|
||||||
MAX_MEM RUN_PROBLEM_LISTS RETRY_COUNT REPEAT_COUNT MAX_OUTPUT REPORT \
|
RETRY_COUNT REPEAT_COUNT MAX_OUTPUT REPORT AOT_JDK $(CUSTOM_JTREG_SINGLE_KEYWORDS), \
|
||||||
AOT_JDK MANUAL $(CUSTOM_JTREG_SINGLE_KEYWORDS), \
|
|
||||||
STRING_KEYWORDS := OPTIONS JAVA_OPTIONS VM_OPTIONS KEYWORDS \
|
STRING_KEYWORDS := OPTIONS JAVA_OPTIONS VM_OPTIONS KEYWORDS \
|
||||||
EXTRA_PROBLEM_LISTS LAUNCHER_OPTIONS \
|
EXTRA_PROBLEM_LISTS LAUNCHER_OPTIONS \
|
||||||
$(CUSTOM_JTREG_STRING_KEYWORDS), \
|
$(CUSTOM_JTREG_STRING_KEYWORDS), \
|
||||||
@@ -509,7 +510,7 @@ define SetupRunGtestTestBody
|
|||||||
$$(call LogWarn)
|
$$(call LogWarn)
|
||||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
||||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/gtest, \
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/gtest, ( \
|
||||||
$$(CD) $$($1_TEST_SUPPORT_DIR) && \
|
$$(CD) $$($1_TEST_SUPPORT_DIR) && \
|
||||||
$$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/$$($1_VARIANT)/gtestLauncher \
|
$$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/$$($1_VARIANT)/gtestLauncher \
|
||||||
-jdk $(JDK_UNDER_TEST) $$($1_GTEST_FILTER) \
|
-jdk $(JDK_UNDER_TEST) $$($1_GTEST_FILTER) \
|
||||||
@@ -520,7 +521,7 @@ define SetupRunGtestTestBody
|
|||||||
> >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) \
|
> >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) \
|
||||||
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
)
|
))
|
||||||
|
|
||||||
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt
|
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt
|
||||||
|
|
||||||
@@ -529,33 +530,21 @@ define SetupRunGtestTestBody
|
|||||||
$$(call LogWarn, Test report is stored in $$(strip \
|
$$(call LogWarn, Test report is stored in $$(strip \
|
||||||
$$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR))))
|
$$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR))))
|
||||||
$$(if $$(wildcard $$($1_RESULT_FILE)), \
|
$$(if $$(wildcard $$($1_RESULT_FILE)), \
|
||||||
$$(eval $1_RUN := $$(shell $$(AWK) \
|
$$(eval $1_TOTAL := $$(shell $$(AWK) '/==========.* tests? from .* \
|
||||||
'/==========.* tests? from .* test (cases?|suites?) ran/ { print $$$$2 }' \
|
test (cases?|suites?) ran/ { print $$$$2 }' $$($1_RESULT_FILE))) \
|
||||||
$$($1_RESULT_FILE))) \
|
$$(if $$($1_TOTAL), , $$(eval $1_TOTAL := 0)) \
|
||||||
$$(if $$($1_RUN), , $$(eval $1_RUN := 0)) \
|
|
||||||
$$(eval $1_PASSED := $$(shell $$(AWK) '/\[ PASSED \] .* tests?./ \
|
$$(eval $1_PASSED := $$(shell $$(AWK) '/\[ PASSED \] .* tests?./ \
|
||||||
{ print $$$$4 }' $$($1_RESULT_FILE))) \
|
{ print $$$$4 }' $$($1_RESULT_FILE))) \
|
||||||
$$(if $$($1_PASSED), , $$(eval $1_PASSED := 0)) \
|
$$(if $$($1_PASSED), , $$(eval $1_PASSED := 0)) \
|
||||||
$$(eval $1_GTEST_DISABLED := $$(shell $$(AWK) '/YOU HAVE .* DISABLED TEST/ \
|
|
||||||
{ print $$$$3 }' $$($1_RESULT_FILE))) \
|
|
||||||
$$(if $$($1_GTEST_DISABLED), , $$(eval $1_GTEST_DISABLED := 0)) \
|
|
||||||
$$(eval $1_GTEST_SKIPPED := $$(shell $$(AWK) '/\[ SKIPPED \] .* tests?.*/ \
|
|
||||||
{ print $$$$4 }' $$($1_RESULT_FILE))) \
|
|
||||||
$$(if $$($1_GTEST_SKIPPED), , $$(eval $1_GTEST_SKIPPED := 0)) \
|
|
||||||
$$(eval $1_SKIPPED := $$(shell \
|
|
||||||
$$(EXPR) $$($1_GTEST_DISABLED) + $$($1_GTEST_SKIPPED))) \
|
|
||||||
$$(eval $1_FAILED := $$(shell $$(AWK) '/\[ FAILED \] .* tests?, \
|
$$(eval $1_FAILED := $$(shell $$(AWK) '/\[ FAILED \] .* tests?, \
|
||||||
listed below/ { print $$$$4 }' $$($1_RESULT_FILE))) \
|
listed below/ { print $$$$4 }' $$($1_RESULT_FILE))) \
|
||||||
$$(if $$($1_FAILED), , $$(eval $1_FAILED := 0)) \
|
$$(if $$($1_FAILED), , $$(eval $1_FAILED := 0)) \
|
||||||
$$(eval $1_ERROR := $$(shell \
|
$$(eval $1_ERROR := $$(shell \
|
||||||
$$(EXPR) $$($1_RUN) - $$($1_PASSED) - $$($1_FAILED) - $$($1_GTEST_SKIPPED))) \
|
$$(EXPR) $$($1_TOTAL) - $$($1_PASSED) - $$($1_FAILED))) \
|
||||||
$$(eval $1_TOTAL := $$(shell \
|
|
||||||
$$(EXPR) $$($1_RUN) + $$($1_GTEST_DISABLED))) \
|
|
||||||
, \
|
, \
|
||||||
$$(eval $1_PASSED := 0) \
|
$$(eval $1_PASSED := 0) \
|
||||||
$$(eval $1_FAILED := 0) \
|
$$(eval $1_FAILED := 0) \
|
||||||
$$(eval $1_ERROR := 1) \
|
$$(eval $1_ERROR := 1) \
|
||||||
$$(eval $1_SKIPPED := 0) \
|
|
||||||
$$(eval $1_TOTAL := 1) \
|
$$(eval $1_TOTAL := 1) \
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -584,8 +573,6 @@ define SetMicroValue
|
|||||||
else
|
else
|
||||||
ifneq ($3, )
|
ifneq ($3, )
|
||||||
$1_$2 := $3
|
$1_$2 := $3
|
||||||
else
|
|
||||||
$1_$2 :=
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
@@ -644,7 +631,7 @@ define SetupRunMicroTestBody
|
|||||||
$$(call LogWarn)
|
$$(call LogWarn)
|
||||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
||||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/micro, \
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/micro, ( \
|
||||||
$$(CD) $$(TEST_IMAGE_DIR) && \
|
$$(CD) $$(TEST_IMAGE_DIR) && \
|
||||||
$$(FIXPATH) $$($1_MICRO_TEST_JDK)/bin/java $$($1_MICRO_JAVA_OPTIONS) \
|
$$(FIXPATH) $$($1_MICRO_TEST_JDK)/bin/java $$($1_MICRO_JAVA_OPTIONS) \
|
||||||
-jar $$($1_MICRO_BENCHMARKS_JAR) \
|
-jar $$($1_MICRO_BENCHMARKS_JAR) \
|
||||||
@@ -655,7 +642,7 @@ define SetupRunMicroTestBody
|
|||||||
> >($(TEE) $$($1_TEST_RESULTS_DIR)/micro.txt) \
|
> >($(TEE) $$($1_TEST_RESULTS_DIR)/micro.txt) \
|
||||||
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
)
|
))
|
||||||
|
|
||||||
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/micro.txt
|
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/micro.txt
|
||||||
|
|
||||||
@@ -681,7 +668,6 @@ define SetupRunMicroTestBody
|
|||||||
$$(eval $1_ERROR := 1) \
|
$$(eval $1_ERROR := 1) \
|
||||||
$$(eval $1_TOTAL := 1) \
|
$$(eval $1_TOTAL := 1) \
|
||||||
)
|
)
|
||||||
$$(eval $1_SKIPPED := 0)
|
|
||||||
|
|
||||||
$1: run-test-$1 parse-test-$1
|
$1: run-test-$1 parse-test-$1
|
||||||
|
|
||||||
@@ -712,8 +698,6 @@ define SetJtregValue
|
|||||||
else
|
else
|
||||||
ifneq ($3, )
|
ifneq ($3, )
|
||||||
$1_$2 := $3
|
$1_$2 := $3
|
||||||
else
|
|
||||||
$1_$2 :=
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -726,7 +710,6 @@ endef
|
|||||||
# Parameter 1 is the name of the rule.
|
# Parameter 1 is the name of the rule.
|
||||||
#
|
#
|
||||||
# Remaining parameters are named arguments.
|
# Remaining parameters are named arguments.
|
||||||
# TRAINING The AOT training mode: onestep or twostep
|
|
||||||
# VM_OPTIONS List of JVM arguments to use when creating AOT cache
|
# VM_OPTIONS List of JVM arguments to use when creating AOT cache
|
||||||
#
|
#
|
||||||
# After calling this, the following variables are defined
|
# After calling this, the following variables are defined
|
||||||
@@ -735,16 +718,14 @@ endef
|
|||||||
#
|
#
|
||||||
SetupAOT = $(NamedParamsMacroTemplate)
|
SetupAOT = $(NamedParamsMacroTemplate)
|
||||||
define SetupAOTBody
|
define SetupAOTBody
|
||||||
$1_AOT_JDK_OUTPUT_DIR := $$($1_TEST_SUPPORT_DIR)/aot
|
$1_AOT_JDK_CONF := $$($1_TEST_SUPPORT_DIR)/aot/jdk.aotconf
|
||||||
$1_AOT_JDK_CONF := $$($1_AOT_JDK_OUTPUT_DIR)/jdk.aotconf
|
$1_AOT_JDK_CACHE := $$($1_TEST_SUPPORT_DIR)/aot/jdk.aotcache
|
||||||
$1_AOT_JDK_CACHE := $$($1_AOT_JDK_OUTPUT_DIR)/jdk.aotcache
|
$1_AOT_JDK_LOG := $$($1_TEST_SUPPORT_DIR)/aot/TestSetupAOT.log
|
||||||
$1_AOT_JDK_LOG := $$($1_AOT_JDK_OUTPUT_DIR)/TestSetupAOT.log
|
|
||||||
|
|
||||||
# We execute the training run with the TestSetupAOT class from $(TEST_IMAGE_DIR)/setup_aot/TestSetupAOT.jar
|
# We execute the training run with $(TEST_IMAGE_DIR)/setup_aot/TestSetupAOT.class
|
||||||
# to touch a fair number of classes inside the JDK. Note that we can't specify a classpath,
|
# to touch a fair number of classes inside the JDK. Note that we can't specify a classpath,
|
||||||
# or else the AOT cache cannot be used with jtreg test cases that use a different value
|
# or else the AOT cache cannot be used with jtreg test cases that use a different value
|
||||||
# for their classpaths. Instead, we cd in the $$($1_AOT_JDK_OUTPUT_DIR) directory,
|
# for their classpaths. Instead, we run in the $(TEST_IMAGE_DIR)/setup_aot/ directory.
|
||||||
# extract the TestSetupAOT.jar there, and run in that directory without specifying a classpath.
|
|
||||||
# The "java" launcher will have an implicit classpath of ".", so it can pick up the TestSetupAOT
|
# The "java" launcher will have an implicit classpath of ".", so it can pick up the TestSetupAOT
|
||||||
# class from the JVM's current directory.
|
# class from the JVM's current directory.
|
||||||
#
|
#
|
||||||
@@ -753,41 +734,24 @@ define SetupAOTBody
|
|||||||
# only classes from the JDK.
|
# only classes from the JDK.
|
||||||
|
|
||||||
$$($1_AOT_JDK_CACHE): $$(JDK_IMAGE_DIR)/release
|
$$($1_AOT_JDK_CACHE): $$(JDK_IMAGE_DIR)/release
|
||||||
$$(call MakeDir, $$($1_AOT_JDK_OUTPUT_DIR))
|
$$(call MakeDir, $$($1_TEST_SUPPORT_DIR)/aot)
|
||||||
|
|
||||||
ifeq ($$($1_TRAINING), onestep)
|
$$(call LogWarn, AOT: Create cache configuration) \
|
||||||
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/aot, ( \
|
||||||
|
$(CD) $(TEST_IMAGE_DIR)/setup_aot; \
|
||||||
|
$$(FIXPATH) $(JDK_UNDER_TEST)/bin/java $$($1_VM_OPTIONS) \
|
||||||
|
-Xlog:cds,cds+class=debug:file=$$($1_AOT_JDK_CONF).log -Xlog:cds*=error \
|
||||||
|
-XX:AOTMode=record -XX:AOTConfiguration=$$($1_AOT_JDK_CONF) \
|
||||||
|
TestSetupAOT > $$($1_AOT_JDK_LOG) \
|
||||||
|
))
|
||||||
|
|
||||||
$$(call LogWarn, AOT: Create AOT cache $$($1_AOT_JDK_CACHE) in one step with flags: $$($1_VM_OPTIONS)) \
|
$$(call LogWarn, AOT: Generate AOT cache $$($1_AOT_JDK_CACHE) with flags: $$($1_VM_OPTIONS))
|
||||||
$$(call ExecuteWithLog, $$($1_AOT_JDK_OUTPUT_DIR), \
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/aot, ( \
|
||||||
cd $$($1_AOT_JDK_OUTPUT_DIR); \
|
$$(FIXPATH) $(JDK_UNDER_TEST)/bin/java \
|
||||||
$(JAR) --extract --file $(TEST_IMAGE_DIR)/setup_aot/TestSetupAOT.jar; \
|
$$($1_VM_OPTIONS) -Xlog:cds,cds+class=debug:file=$$($1_AOT_JDK_CACHE).log -Xlog:cds*=error \
|
||||||
$$(FIXPATH) $(JDK_UNDER_TEST)/bin/java $$($1_VM_OPTIONS) \
|
-XX:ExtraSharedClassListFile=$(JDK_UNDER_TEST)/lib/classlist \
|
||||||
-Xlog:class+load$$(COMMA)aot$$(COMMA)aot+class=debug:file=$$($1_AOT_JDK_CACHE).log -Xlog:cds*=error -Xlog:aot*=error \
|
-XX:AOTMode=create -XX:AOTConfiguration=$$($1_AOT_JDK_CONF) -XX:AOTCache=$$($1_AOT_JDK_CACHE) \
|
||||||
-XX:AOTMode=record -XX:AOTCacheOutput=$$($1_AOT_JDK_CACHE) \
|
))
|
||||||
TestSetupAOT $$($1_AOT_JDK_OUTPUT_DIR) > $$($1_AOT_JDK_LOG) \
|
|
||||||
)
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
$$(call LogWarn, AOT: Create cache configuration) \
|
|
||||||
$$(call ExecuteWithLog, $$($1_AOT_JDK_OUTPUT_DIR), \
|
|
||||||
cd $$($1_AOT_JDK_OUTPUT_DIR); \
|
|
||||||
$(JAR) --extract --file $(TEST_IMAGE_DIR)/setup_aot/TestSetupAOT.jar; \
|
|
||||||
$$(FIXPATH) $(JDK_UNDER_TEST)/bin/java $$($1_VM_OPTIONS) \
|
|
||||||
-Xlog:class+load$$(COMMA)aot$$(COMMA)aot+class=debug:file=$$($1_AOT_JDK_CONF).log -Xlog:cds*=error -Xlog:aot*=error \
|
|
||||||
-XX:AOTMode=record -XX:AOTConfiguration=$$($1_AOT_JDK_CONF) \
|
|
||||||
TestSetupAOT $$($1_AOT_JDK_OUTPUT_DIR) > $$($1_AOT_JDK_LOG) \
|
|
||||||
)
|
|
||||||
|
|
||||||
$$(call LogWarn, AOT: Generate AOT cache $$($1_AOT_JDK_CACHE) with flags: $$($1_VM_OPTIONS))
|
|
||||||
$$(call ExecuteWithLog, $$($1_AOT_JDK_OUTPUT_DIR), \
|
|
||||||
$$(FIXPATH) $(JDK_UNDER_TEST)/bin/java \
|
|
||||||
$$($1_VM_OPTIONS) -Xlog:aot$$(COMMA)aot+class=debug:file=$$($1_AOT_JDK_CACHE).log -Xlog:cds*=error -Xlog:aot*=error \
|
|
||||||
-XX:ExtraSharedClassListFile=$(JDK_UNDER_TEST)/lib/classlist \
|
|
||||||
-XX:AOTMode=create -XX:AOTConfiguration=$$($1_AOT_JDK_CONF) -XX:AOTCache=$$($1_AOT_JDK_CACHE) \
|
|
||||||
)
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
$1_AOT_TARGETS += $$($1_AOT_JDK_CACHE)
|
$1_AOT_TARGETS += $$($1_AOT_JDK_CACHE)
|
||||||
|
|
||||||
@@ -853,7 +817,7 @@ define SetupRunJtregTestBody
|
|||||||
JTREG_RETRY_COUNT ?= 0
|
JTREG_RETRY_COUNT ?= 0
|
||||||
JTREG_REPEAT_COUNT ?= 0
|
JTREG_REPEAT_COUNT ?= 0
|
||||||
JTREG_REPORT ?= files
|
JTREG_REPORT ?= files
|
||||||
JTREG_AOT_JDK ?= none
|
JTREG_AOT_JDK ?= false
|
||||||
|
|
||||||
ifneq ($$(JTREG_RETRY_COUNT), 0)
|
ifneq ($$(JTREG_RETRY_COUNT), 0)
|
||||||
ifneq ($$(JTREG_REPEAT_COUNT), 0)
|
ifneq ($$(JTREG_REPEAT_COUNT), 0)
|
||||||
@@ -863,29 +827,14 @@ define SetupRunJtregTestBody
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($$(JTREG_RUN_PROBLEM_LISTS), true)
|
|
||||||
JTREG_PROBLEM_LIST_PREFIX := -match:
|
|
||||||
else
|
|
||||||
JTREG_PROBLEM_LIST_PREFIX := -exclude:
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($$(JTREG_TEST_THREAD_FACTORY), )
|
ifneq ($$(JTREG_TEST_THREAD_FACTORY), )
|
||||||
$1_JTREG_BASIC_OPTIONS += -testThreadFactoryPath:$$(JTREG_TEST_THREAD_FACTORY_JAR)
|
$1_JTREG_BASIC_OPTIONS += -testThreadFactoryPath:$$(JTREG_TEST_THREAD_FACTORY_JAR)
|
||||||
$1_JTREG_BASIC_OPTIONS += -testThreadFactory:$$(JTREG_TEST_THREAD_FACTORY)
|
$1_JTREG_BASIC_OPTIONS += -testThreadFactory:$$(JTREG_TEST_THREAD_FACTORY)
|
||||||
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \
|
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \
|
||||||
$$(addprefix $$($1_TEST_ROOT)/, ProblemList-$$(JTREG_TEST_THREAD_FACTORY).txt) \
|
$$(addprefix $$($1_TEST_ROOT)/, ProblemList-$$(JTREG_TEST_THREAD_FACTORY).txt) \
|
||||||
))
|
))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($$(JTREG_JVMTI_STRESS_AGENT), )
|
|
||||||
AGENT := $$(LIBRARY_PREFIX)JvmtiStressAgent$$(SHARED_LIBRARY_SUFFIX)=$$(JTREG_JVMTI_STRESS_AGENT)
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -javaoption:'-agentpath:$(TEST_IMAGE_DIR)/hotspot/jtreg/native/$$(AGENT)'
|
|
||||||
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \
|
|
||||||
$$(addprefix $$($1_TEST_ROOT)/, ProblemList-jvmti-stress-agent.txt) \
|
|
||||||
))
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
ifneq ($$(JTREG_LAUNCHER_OPTIONS), )
|
ifneq ($$(JTREG_LAUNCHER_OPTIONS), )
|
||||||
$1_JTREG_LAUNCHER_OPTIONS += $$(JTREG_LAUNCHER_OPTIONS)
|
$1_JTREG_LAUNCHER_OPTIONS += $$(JTREG_LAUNCHER_OPTIONS)
|
||||||
endif
|
endif
|
||||||
@@ -906,18 +855,12 @@ define SetupRunJtregTestBody
|
|||||||
# version of the JDK.
|
# version of the JDK.
|
||||||
$1_JTREG_BASIC_OPTIONS += -$$($1_JTREG_TEST_MODE) \
|
$1_JTREG_BASIC_OPTIONS += -$$($1_JTREG_TEST_MODE) \
|
||||||
-verbose:$$(JTREG_VERBOSE) -retain:$$(JTREG_RETAIN) \
|
-verbose:$$(JTREG_VERBOSE) -retain:$$(JTREG_RETAIN) \
|
||||||
-concurrency:$$($1_JTREG_JOBS) \
|
-concurrency:$$($1_JTREG_JOBS) -timeoutFactor:$$(JTREG_TIMEOUT_FACTOR) \
|
||||||
-vmoption:-XX:MaxRAMPercentage=$$($1_JTREG_MAX_RAM_PERCENTAGE) \
|
-vmoption:-XX:MaxRAMPercentage=$$($1_JTREG_MAX_RAM_PERCENTAGE) \
|
||||||
-vmoption:-Dtest.boot.jdk="$$(BOOT_JDK)" \
|
-vmoption:-Dtest.boot.jdk="$$(BOOT_JDK)" \
|
||||||
-vmoption:-Djava.io.tmpdir="$$($1_TEST_TMP_DIR)"
|
-vmoption:-Djava.io.tmpdir="$$($1_TEST_TMP_DIR)"
|
||||||
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -ignore:quiet
|
$1_JTREG_BASIC_OPTIONS += -automatic -ignore:quiet
|
||||||
|
|
||||||
ifeq ($$(JTREG_MANUAL), true)
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -manual
|
|
||||||
else
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -automatic
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Make it possible to specify the JIB_DATA_DIR for tests using the
|
# Make it possible to specify the JIB_DATA_DIR for tests using the
|
||||||
# JIB Artifact resolver
|
# JIB Artifact resolver
|
||||||
@@ -945,6 +888,12 @@ define SetupRunJtregTestBody
|
|||||||
$1_JTREG_BASIC_OPTIONS += -nativepath:$$($1_JTREG_NATIVEPATH)
|
$1_JTREG_BASIC_OPTIONS += -nativepath:$$($1_JTREG_NATIVEPATH)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($$(JTREG_RUN_PROBLEM_LISTS), true)
|
||||||
|
JTREG_PROBLEM_LIST_PREFIX := -match:
|
||||||
|
else
|
||||||
|
JTREG_PROBLEM_LIST_PREFIX := -exclude:
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($$($1_JTREG_PROBLEM_LIST), )
|
ifneq ($$($1_JTREG_PROBLEM_LIST), )
|
||||||
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$($1_JTREG_PROBLEM_LIST))
|
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$($1_JTREG_PROBLEM_LIST))
|
||||||
endif
|
endif
|
||||||
@@ -952,7 +901,6 @@ define SetupRunJtregTestBody
|
|||||||
JTREG_ALL_OPTIONS := $$(JTREG_JAVA_OPTIONS) $$(JTREG_VM_OPTIONS)
|
JTREG_ALL_OPTIONS := $$(JTREG_JAVA_OPTIONS) $$(JTREG_VM_OPTIONS)
|
||||||
|
|
||||||
JTREG_AUTO_PROBLEM_LISTS :=
|
JTREG_AUTO_PROBLEM_LISTS :=
|
||||||
# Please reach consensus before changing this.
|
|
||||||
JTREG_AUTO_TIMEOUT_FACTOR := 4
|
JTREG_AUTO_TIMEOUT_FACTOR := 4
|
||||||
|
|
||||||
ifneq ($$(findstring -Xcomp, $$(JTREG_ALL_OPTIONS)), )
|
ifneq ($$(findstring -Xcomp, $$(JTREG_ALL_OPTIONS)), )
|
||||||
@@ -968,11 +916,6 @@ define SetupRunJtregTestBody
|
|||||||
JTREG_AUTO_PROBLEM_LISTS += ProblemList-shenandoah.txt
|
JTREG_AUTO_PROBLEM_LISTS += ProblemList-shenandoah.txt
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($$(findstring --enable-preview, $$(JTREG_ALL_OPTIONS)), )
|
|
||||||
JTREG_AUTO_PROBLEM_LISTS += ProblemList-enable-preview.txt
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
ifneq ($$(JTREG_EXTRA_PROBLEM_LISTS), )
|
ifneq ($$(JTREG_EXTRA_PROBLEM_LISTS), )
|
||||||
# Accept both absolute paths as well as relative to the current test root.
|
# Accept both absolute paths as well as relative to the current test root.
|
||||||
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \
|
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \
|
||||||
@@ -985,11 +928,6 @@ define SetupRunJtregTestBody
|
|||||||
$1_JTREG_BASIC_OPTIONS += -e:JIB_HOME=$$(JIB_HOME)
|
$1_JTREG_BASIC_OPTIONS += -e:JIB_HOME=$$(JIB_HOME)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($$(JDK_FOR_COMPILE), )
|
|
||||||
# Allow overriding the JDK used for compilation from the command line
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -compilejdk:$$(JDK_FOR_COMPILE)
|
|
||||||
endif
|
|
||||||
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -e:TEST_IMAGE_DIR=$(TEST_IMAGE_DIR)
|
$1_JTREG_BASIC_OPTIONS += -e:TEST_IMAGE_DIR=$(TEST_IMAGE_DIR)
|
||||||
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -e:DOCS_JDK_IMAGE_DIR=$$(DOCS_JDK_IMAGE_DIR)
|
$1_JTREG_BASIC_OPTIONS += -e:DOCS_JDK_IMAGE_DIR=$$(DOCS_JDK_IMAGE_DIR)
|
||||||
@@ -1009,12 +947,12 @@ define SetupRunJtregTestBody
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($$(filter $$(JTREG_AOT_JDK), onestep twostep), )
|
ifeq ($$(JTREG_AOT_JDK), true)
|
||||||
$$(call LogWarn, Add AOT target for $1)
|
$$(call LogWarn, Add AOT target for $1)
|
||||||
$$(eval $$(call SetupAOT, $1, \
|
$$(eval $$(call SetupAOT, $1, VM_OPTIONS := $$(JTREG_ALL_OPTIONS) ))
|
||||||
TRAINING := $$(JTREG_AOT_JDK), \
|
|
||||||
VM_OPTIONS := $$(JTREG_ALL_OPTIONS) ))
|
|
||||||
$$(call LogWarn, AOT_JDK_CACHE=$$($1_AOT_JDK_CACHE))
|
$$(call LogWarn, AOT_JDK_CACHE=$$($1_AOT_JDK_CACHE))
|
||||||
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -vmoption:-XX:AOTCache="$$($1_AOT_JDK_CACHE)"
|
$1_JTREG_BASIC_OPTIONS += -vmoption:-XX:AOTCache="$$($1_AOT_JDK_CACHE)"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -1032,7 +970,6 @@ define SetupRunJtregTestBody
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
JTREG_TIMEOUT_FACTOR ?= $$(JTREG_AUTO_TIMEOUT_FACTOR)
|
JTREG_TIMEOUT_FACTOR ?= $$(JTREG_AUTO_TIMEOUT_FACTOR)
|
||||||
$1_JTREG_BASIC_OPTIONS += -timeoutFactor:$$(JTREG_TIMEOUT_FACTOR)
|
|
||||||
|
|
||||||
clean-outputdirs-$1:
|
clean-outputdirs-$1:
|
||||||
$$(call LogWarn, Clean up dirs for $1)
|
$$(call LogWarn, Clean up dirs for $1)
|
||||||
@@ -1043,6 +980,7 @@ define SetupRunJtregTestBody
|
|||||||
$$(JTREG_JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
$$(JTREG_JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
||||||
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
||||||
$$($1_JTREG_BASIC_OPTIONS) \
|
$$($1_JTREG_BASIC_OPTIONS) \
|
||||||
|
-compilejdk:$$(JDK_FOR_COMPILE) \
|
||||||
-testjdk:$$(JDK_UNDER_TEST) \
|
-testjdk:$$(JDK_UNDER_TEST) \
|
||||||
-dir:$$(JTREG_TOPDIR) \
|
-dir:$$(JTREG_TOPDIR) \
|
||||||
-reportDir:$$($1_TEST_RESULTS_DIR) \
|
-reportDir:$$($1_TEST_RESULTS_DIR) \
|
||||||
@@ -1061,8 +999,7 @@ define SetupRunJtregTestBody
|
|||||||
$1_COMMAND_LINE := \
|
$1_COMMAND_LINE := \
|
||||||
for i in {0..$$(JTREG_RETRY_COUNT)}; do \
|
for i in {0..$$(JTREG_RETRY_COUNT)}; do \
|
||||||
if [ "$$$$i" != 0 ]; then \
|
if [ "$$$$i" != 0 ]; then \
|
||||||
$$(ECHO) ""; \
|
$$(PRINTF) "\nRetrying Jtreg run. Attempt: $$$$i\n"; \
|
||||||
$$(ECHO) "Retrying Jtreg run. Attempt: $$$$i"; \
|
|
||||||
fi; \
|
fi; \
|
||||||
$$($1_COMMAND_LINE); \
|
$$($1_COMMAND_LINE); \
|
||||||
if [ "`$$(CAT) $$($1_EXITCODE)`" = "0" ]; then \
|
if [ "`$$(CAT) $$($1_EXITCODE)`" = "0" ]; then \
|
||||||
@@ -1075,12 +1012,10 @@ define SetupRunJtregTestBody
|
|||||||
ifneq ($$(JTREG_REPEAT_COUNT), 0)
|
ifneq ($$(JTREG_REPEAT_COUNT), 0)
|
||||||
$1_COMMAND_LINE := \
|
$1_COMMAND_LINE := \
|
||||||
for i in {1..$$(JTREG_REPEAT_COUNT)}; do \
|
for i in {1..$$(JTREG_REPEAT_COUNT)}; do \
|
||||||
$$(ECHO) ""; \
|
$$(PRINTF) "\nRepeating Jtreg run: $$$$i out of $$(JTREG_REPEAT_COUNT)\n"; \
|
||||||
$$(ECHO) "Repeating Jtreg run: $$$$i out of $$(JTREG_REPEAT_COUNT)"; \
|
|
||||||
$$($1_COMMAND_LINE); \
|
$$($1_COMMAND_LINE); \
|
||||||
if [ "`$$(CAT) $$($1_EXITCODE)`" != "0" ]; then \
|
if [ "`$$(CAT) $$($1_EXITCODE)`" != "0" ]; then \
|
||||||
$$(ECHO) ""; \
|
$$(PRINTF) "\nFailures detected, no more repeats.\n"; \
|
||||||
$$(ECHO) "Failures detected, no more repeats."; \
|
|
||||||
break; \
|
break; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
@@ -1091,9 +1026,9 @@ define SetupRunJtregTestBody
|
|||||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR) \
|
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR) \
|
||||||
$$($1_TEST_TMP_DIR))
|
$$($1_TEST_TMP_DIR))
|
||||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, \
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, ( \
|
||||||
$$(COV_ENVIRONMENT) $$($1_COMMAND_LINE) \
|
$$(COV_ENVIRONMENT) $$($1_COMMAND_LINE) \
|
||||||
)
|
))
|
||||||
|
|
||||||
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/text/stats.txt
|
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/text/stats.txt
|
||||||
|
|
||||||
@@ -1101,65 +1036,23 @@ define SetupRunJtregTestBody
|
|||||||
$$(call LogWarn, Finished running test '$$($1_TEST)')
|
$$(call LogWarn, Finished running test '$$($1_TEST)')
|
||||||
$$(call LogWarn, Test report is stored in $$(strip \
|
$$(call LogWarn, Test report is stored in $$(strip \
|
||||||
$$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR))))
|
$$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR))))
|
||||||
|
|
||||||
# Read jtreg documentation to learn on the test stats categories:
|
|
||||||
# https://github.com/openjdk/jtreg/blob/master/src/share/doc/javatest/regtest/faq.md#what-do-all-those-numbers-in-the-test-results-line-mean
|
|
||||||
# In jtreg, "skipped:" category accounts for tests that threw jtreg.SkippedException at runtime.
|
|
||||||
# At the same time these tests contribute to "passed:" tests.
|
|
||||||
# In here we don't want that and so we substract number of "skipped:" from "passed:".
|
|
||||||
|
|
||||||
$$(if $$(wildcard $$($1_RESULT_FILE)), \
|
$$(if $$(wildcard $$($1_RESULT_FILE)), \
|
||||||
$$(eval $1_PASSED_AND_RUNTIME_SKIPPED := $$(shell $$(AWK) '{ gsub(/[,;]/, ""); \
|
$$(eval $1_PASSED := $$(shell $$(AWK) '{ gsub(/[,;]/, ""); \
|
||||||
for (i=1; i<=NF; i++) { if ($$$$i == "passed:") \
|
for (i=1; i<=NF; i++) { if ($$$$i == "passed:") \
|
||||||
print $$$$(i+1) } }' $$($1_RESULT_FILE))) \
|
print $$$$(i+1) } }' $$($1_RESULT_FILE))) \
|
||||||
$$(if $$($1_PASSED_AND_RUNTIME_SKIPPED), , $$(eval $1_PASSED_AND_RUNTIME_SKIPPED := 0)) \
|
$$(if $$($1_PASSED), , $$(eval $1_PASSED := 0)) \
|
||||||
$$(eval $1_FAILED := $$(shell $$(AWK) '{gsub(/[,;]/, ""); \
|
$$(eval $1_FAILED := $$(shell $$(AWK) '{gsub(/[,;]/, ""); \
|
||||||
for (i=1; i<=NF; i++) { if ($$$$i == "failed:") \
|
for (i=1; i<=NF; i++) { if ($$$$i == "failed:") \
|
||||||
print $$$$(i+1) } }' $$($1_RESULT_FILE))) \
|
print $$$$(i+1) } }' $$($1_RESULT_FILE))) \
|
||||||
$$(if $$($1_FAILED), , $$(eval $1_FAILED := 0)) \
|
$$(if $$($1_FAILED), , $$(eval $1_FAILED := 0)) \
|
||||||
$$(eval $1_RUNTIME_SKIPPED := $$(shell $$(AWK) '{gsub(/[,;]/, ""); \
|
|
||||||
for (i=1; i<=NF; i++) { if ($$$$i == "skipped:") \
|
|
||||||
print $$$$(i+1) } }' $$($1_RESULT_FILE))) \
|
|
||||||
$$(if $$($1_RUNTIME_SKIPPED), , $$(eval $1_RUNTIME_SKIPPED := 0)) \
|
|
||||||
$$(eval $1_SKIPPED := $$(shell \
|
|
||||||
$$(AWK) \
|
|
||||||
'BEGIN { \
|
|
||||||
overall_skipped = 0; \
|
|
||||||
patterns[1] = "skipped"; \
|
|
||||||
patterns[2] = "excluded"; \
|
|
||||||
patterns[3] = "not in match-list"; \
|
|
||||||
patterns[4] = "did not match keywords"; \
|
|
||||||
patterns[5] = "did not meet module requirements"; \
|
|
||||||
patterns[6] = "did not meet platform requirements"; \
|
|
||||||
patterns[7] = "did not match prior status"; \
|
|
||||||
patterns[8] = "did not meet time-limit requirements"; \
|
|
||||||
} { \
|
|
||||||
split($$$$0, arr, ";"); \
|
|
||||||
for (item in arr) { \
|
|
||||||
for (p in patterns) { \
|
|
||||||
if (match(arr[item], patterns[p] ": [0-9]+")) { \
|
|
||||||
overall_skipped += substr(arr[item], RSTART + length(patterns[p]) + 2, RLENGTH); \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
print overall_skipped; \
|
|
||||||
}' \
|
|
||||||
$$($1_RESULT_FILE) \
|
|
||||||
)) \
|
|
||||||
$$(eval $1_ERROR := $$(shell $$(AWK) '{gsub(/[,;]/, ""); \
|
$$(eval $1_ERROR := $$(shell $$(AWK) '{gsub(/[,;]/, ""); \
|
||||||
for (i=1; i<=NF; i++) { if ($$$$i == "error:") \
|
for (i=1; i<=NF; i++) { if ($$$$i == "error:") \
|
||||||
print $$$$(i+1) } }' $$($1_RESULT_FILE))) \
|
print $$$$(i+1) } }' $$($1_RESULT_FILE))) \
|
||||||
$$(if $$($1_ERROR), , $$(eval $1_ERROR := 0)) \
|
$$(if $$($1_ERROR), , $$(eval $1_ERROR := 0)) \
|
||||||
\
|
|
||||||
$$(eval $1_PASSED := $$(shell \
|
|
||||||
$$(EXPR) $$($1_PASSED_AND_RUNTIME_SKIPPED) - $$($1_RUNTIME_SKIPPED))) \
|
|
||||||
$$(eval $1_TOTAL := $$(shell \
|
$$(eval $1_TOTAL := $$(shell \
|
||||||
$$(EXPR) $$($1_PASSED) + $$($1_FAILED) + $$($1_ERROR) + $$($1_SKIPPED))) \
|
$$(EXPR) $$($1_PASSED) + $$($1_FAILED) + $$($1_ERROR))) \
|
||||||
, \
|
, \
|
||||||
$$(eval $1_PASSED_AND_RUNTIME_SKIPPED := 0) \
|
|
||||||
$$(eval $1_PASSED := 0) \
|
$$(eval $1_PASSED := 0) \
|
||||||
$$(eval $1_RUNTIME_SKIPPED := 0) \
|
|
||||||
$$(eval $1_SKIPPED := 0) \
|
|
||||||
$$(eval $1_FAILED := 0) \
|
$$(eval $1_FAILED := 0) \
|
||||||
$$(eval $1_ERROR := 1) \
|
$$(eval $1_ERROR := 1) \
|
||||||
$$(eval $1_TOTAL := 1) \
|
$$(eval $1_TOTAL := 1) \
|
||||||
@@ -1211,12 +1104,14 @@ define SetupRunSpecialTestBody
|
|||||||
$$(call LogWarn)
|
$$(call LogWarn)
|
||||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
||||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/test-execution, \
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/test-execution, ( \
|
||||||
$$($1_TEST_COMMAND_LINE) \
|
$$($1_TEST_COMMAND_LINE) \
|
||||||
> >($(TEE) $$($1_TEST_RESULTS_DIR)/test-output.txt) \
|
> >($(TEE) $$($1_TEST_RESULTS_DIR)/test-output.txt) \
|
||||||
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
)
|
))
|
||||||
|
|
||||||
|
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt
|
||||||
|
|
||||||
# We can not parse the various "special" tests.
|
# We can not parse the various "special" tests.
|
||||||
parse-test-$1: run-test-$1
|
parse-test-$1: run-test-$1
|
||||||
@@ -1227,7 +1122,6 @@ define SetupRunSpecialTestBody
|
|||||||
$$(eval $1_PASSED := $$(shell \
|
$$(eval $1_PASSED := $$(shell \
|
||||||
if [ `$(CAT) $$($1_EXITCODE)` = "0" ]; then $(ECHO) 1; else $(ECHO) 0; fi \
|
if [ `$(CAT) $$($1_EXITCODE)` = "0" ]; then $(ECHO) 1; else $(ECHO) 0; fi \
|
||||||
))
|
))
|
||||||
$$(eval $1_SKIPPED := 0)
|
|
||||||
$$(eval $1_FAILED := $$(shell \
|
$$(eval $1_FAILED := $$(shell \
|
||||||
if [ `$(CAT) $$($1_EXITCODE)` = "0" ]; then $(ECHO) 0; else $(ECHO) 1; fi \
|
if [ `$(CAT) $$($1_EXITCODE)` = "0" ]; then $(ECHO) 0; else $(ECHO) 1; fi \
|
||||||
))
|
))
|
||||||
@@ -1261,7 +1155,7 @@ UseSpecialTestHandler = \
|
|||||||
# Now process each test to run and setup a proper make rule
|
# Now process each test to run and setup a proper make rule
|
||||||
$(foreach test, $(TESTS_TO_RUN), \
|
$(foreach test, $(TESTS_TO_RUN), \
|
||||||
$(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \
|
$(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \
|
||||||
$(TR) -cs '[a-z][A-Z][0-9]\n' '_')) \
|
$(TR) -cs '[a-z][A-Z][0-9]\n' '[_*1000]')) \
|
||||||
$(eval ALL_TEST_IDS += $(TEST_ID)) \
|
$(eval ALL_TEST_IDS += $(TEST_ID)) \
|
||||||
$(if $(call UseCustomTestHandler, $(test)), \
|
$(if $(call UseCustomTestHandler, $(test)), \
|
||||||
$(eval $(call SetupRunCustomTest, $(TEST_ID), \
|
$(eval $(call SetupRunCustomTest, $(TEST_ID), \
|
||||||
@@ -1337,28 +1231,28 @@ run-test-report: post-run-test
|
|||||||
$(ECHO) >> $(TEST_SUMMARY) ==============================
|
$(ECHO) >> $(TEST_SUMMARY) ==============================
|
||||||
$(ECHO) >> $(TEST_SUMMARY) Test summary
|
$(ECHO) >> $(TEST_SUMMARY) Test summary
|
||||||
$(ECHO) >> $(TEST_SUMMARY) ==============================
|
$(ECHO) >> $(TEST_SUMMARY) ==============================
|
||||||
$(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s %5s %5s %5s %5s %5s %2s\n" " " \
|
$(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s %5s %5s %5s %5s %2s\n" " " \
|
||||||
TEST TOTAL PASS FAIL ERROR SKIP " "
|
TEST TOTAL PASS FAIL ERROR " "
|
||||||
$(foreach test, $(TESTS_TO_RUN), \
|
$(foreach test, $(TESTS_TO_RUN), \
|
||||||
$(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \
|
$(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \
|
||||||
$(TR) -cs '[a-z][A-Z][0-9]\n' '_')) \
|
$(TR) -cs '[a-z][A-Z][0-9]\n' '[_*1000]')) \
|
||||||
$(ECHO) >> $(TEST_LAST_IDS) $(TEST_ID) $(NEWLINE) \
|
$(ECHO) >> $(TEST_LAST_IDS) $(TEST_ID) $(NEWLINE) \
|
||||||
$(eval NAME_PATTERN := $(shell $(ECHO) $(test) | $(TR) -c '\n' '_')) \
|
$(eval NAME_PATTERN := $(shell $(ECHO) $(test) | $(TR) -c '\n' '[_*1000]')) \
|
||||||
$(if $(filter __________________________________________________%, $(NAME_PATTERN)), \
|
$(if $(filter __________________________________________________%, $(NAME_PATTERN)), \
|
||||||
$(eval TEST_NAME := ) \
|
$(eval TEST_NAME := ) \
|
||||||
$(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s\n" " " "$(test)" $(NEWLINE) \
|
$(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s\n" " " "$(test)" $(NEWLINE) \
|
||||||
, \
|
, \
|
||||||
$(eval TEST_NAME := $(test)) \
|
$(eval TEST_NAME := $(test)) \
|
||||||
) \
|
) \
|
||||||
$(if $(filter-out 0, $($(TEST_ID)_FAILED) $($(TEST_ID)_ERROR)), \
|
$(if $(filter $($(TEST_ID)_PASSED), $($(TEST_ID)_TOTAL)), \
|
||||||
$(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s %5d %5d %5d %5d %5d %2s\n" \
|
$(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s %5d %5d %5d %5d %2s\n" \
|
||||||
">>" "$(TEST_NAME)" $($(TEST_ID)_TOTAL) $($(TEST_ID)_PASSED) \
|
|
||||||
$($(TEST_ID)_FAILED) $($(TEST_ID)_ERROR) $($(TEST_ID)_SKIPPED) "<<" $(NEWLINE) \
|
|
||||||
$(eval TEST_FAILURE := true) \
|
|
||||||
, \
|
|
||||||
$(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s %5d %5d %5d %5d %5d %2s\n" \
|
|
||||||
" " "$(TEST_NAME)" $($(TEST_ID)_TOTAL) $($(TEST_ID)_PASSED) \
|
" " "$(TEST_NAME)" $($(TEST_ID)_TOTAL) $($(TEST_ID)_PASSED) \
|
||||||
$($(TEST_ID)_FAILED) $($(TEST_ID)_ERROR) $($(TEST_ID)_SKIPPED) " " $(NEWLINE) \
|
$($(TEST_ID)_FAILED) $($(TEST_ID)_ERROR) " " $(NEWLINE) \
|
||||||
|
, \
|
||||||
|
$(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s %5d %5d %5d %5d %2s\n" \
|
||||||
|
">>" "$(TEST_NAME)" $($(TEST_ID)_TOTAL) $($(TEST_ID)_PASSED) \
|
||||||
|
$($(TEST_ID)_FAILED) $($(TEST_ID)_ERROR) "<<" $(NEWLINE) \
|
||||||
|
$(eval TEST_FAILURE := true) \
|
||||||
) \
|
) \
|
||||||
)
|
)
|
||||||
$(ECHO) >> $(TEST_SUMMARY) ==============================
|
$(ECHO) >> $(TEST_SUMMARY) ==============================
|
||||||
@@ -1384,14 +1278,12 @@ TARGETS += run-all-tests pre-run-test post-run-test run-test-report run-test
|
|||||||
|
|
||||||
ifeq ($(TEST_OPTS_JCOV), true)
|
ifeq ($(TEST_OPTS_JCOV), true)
|
||||||
|
|
||||||
JCOV_VM_OPTS := -Xmx4g -Djdk.xml.totalEntitySizeLimit=0 -Djdk.xml.maxGeneralEntitySizeLimit=0
|
|
||||||
|
|
||||||
jcov-do-start-grabber:
|
jcov-do-start-grabber:
|
||||||
$(call MakeDir, $(JCOV_OUTPUT_DIR))
|
$(call MakeDir, $(JCOV_OUTPUT_DIR))
|
||||||
if $(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -status 1>/dev/null 2>&1 ; then \
|
if $(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -status 1>/dev/null 2>&1 ; then \
|
||||||
$(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -stop -stoptimeout 3600 ; \
|
$(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -stop -stoptimeout 3600 ; \
|
||||||
fi
|
fi
|
||||||
$(JAVA) $(JCOV_VM_OPTS) -jar $(JCOV_HOME)/lib/jcov.jar Grabber -v -t \
|
$(JAVA) -Xmx4g -jar $(JCOV_HOME)/lib/jcov.jar Grabber -v -t \
|
||||||
$(JCOV_IMAGE_DIR)/template.xml -o $(JCOV_RESULT_FILE) \
|
$(JCOV_IMAGE_DIR)/template.xml -o $(JCOV_RESULT_FILE) \
|
||||||
1>$(JCOV_GRABBER_LOG) 2>&1 &
|
1>$(JCOV_GRABBER_LOG) 2>&1 &
|
||||||
|
|
||||||
@@ -1404,10 +1296,6 @@ ifeq ($(TEST_OPTS_JCOV), true)
|
|||||||
$(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -stop -stoptimeout 3600
|
$(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -stop -stoptimeout 3600
|
||||||
|
|
||||||
JCOV_REPORT_TITLE := JDK code coverage report<br/>
|
JCOV_REPORT_TITLE := JDK code coverage report<br/>
|
||||||
ifneq ($(JCOV_MODULES), )
|
|
||||||
JCOV_MODULES_FILTER := $(foreach m, $(JCOV_MODULES), -include_module $m)
|
|
||||||
JCOV_REPORT_TITLE += Included modules: $(JCOV_MODULES)<br>
|
|
||||||
endif
|
|
||||||
ifneq ($(JCOV_FILTERS), )
|
ifneq ($(JCOV_FILTERS), )
|
||||||
JCOV_REPORT_TITLE += Code filters: $(JCOV_FILTERS)<br>
|
JCOV_REPORT_TITLE += Code filters: $(JCOV_FILTERS)<br>
|
||||||
endif
|
endif
|
||||||
@@ -1415,12 +1303,11 @@ ifeq ($(TEST_OPTS_JCOV), true)
|
|||||||
|
|
||||||
jcov-gen-report: jcov-stop-grabber
|
jcov-gen-report: jcov-stop-grabber
|
||||||
$(call LogWarn, Generating JCov report ...)
|
$(call LogWarn, Generating JCov report ...)
|
||||||
$(call ExecuteWithLog, $(JCOV_SUPPORT_DIR)/run-jcov-repgen, \
|
$(JAVA) -Xmx4g -jar $(JCOV_HOME)/lib/jcov.jar RepGen -sourcepath \
|
||||||
$(JAVA) $(JCOV_VM_OPTS) -jar $(JCOV_HOME)/lib/jcov.jar RepGen -sourcepath \
|
|
||||||
`$(ECHO) $(TOPDIR)/src/*/share/classes/ | $(TR) ' ' ':'` -fmt html \
|
`$(ECHO) $(TOPDIR)/src/*/share/classes/ | $(TR) ' ' ':'` -fmt html \
|
||||||
$(JCOV_MODULES_FILTER) $(JCOV_FILTERS) \
|
$(JCOV_FILTERS) \
|
||||||
-mainReportTitle "$(JCOV_REPORT_TITLE)" \
|
-mainReportTitle "$(JCOV_REPORT_TITLE)" \
|
||||||
-o $(JCOV_REPORT) $(JCOV_RESULT_FILE))
|
-o $(JCOV_REPORT) $(JCOV_RESULT_FILE)
|
||||||
|
|
||||||
TARGETS += jcov-do-start-grabber jcov-start-grabber jcov-stop-grabber \
|
TARGETS += jcov-do-start-grabber jcov-start-grabber jcov-stop-grabber \
|
||||||
jcov-gen-report
|
jcov-gen-report
|
||||||
@@ -1440,7 +1327,7 @@ ifeq ($(TEST_OPTS_JCOV), true)
|
|||||||
jcov-gen-diffcoverage: jcov-stop-grabber
|
jcov-gen-diffcoverage: jcov-stop-grabber
|
||||||
$(call LogWarn, Generating diff coverage with changeset $(TEST_OPTS_JCOV_DIFF_CHANGESET) ... )
|
$(call LogWarn, Generating diff coverage with changeset $(TEST_OPTS_JCOV_DIFF_CHANGESET) ... )
|
||||||
$(DIFF_COMMAND)
|
$(DIFF_COMMAND)
|
||||||
$(JAVA) $(JCOV_VM_OPTS) -jar $(JCOV_HOME)/lib/jcov.jar \
|
$(JAVA) -Xmx4g -jar $(JCOV_HOME)/lib/jcov.jar \
|
||||||
DiffCoverage -replaceDiff "src/.*/classes/:" -all \
|
DiffCoverage -replaceDiff "src/.*/classes/:" -all \
|
||||||
$(JCOV_RESULT_FILE) $(JCOV_SOURCE_DIFF) > \
|
$(JCOV_RESULT_FILE) $(JCOV_SOURCE_DIFF) > \
|
||||||
$(JCOV_DIFF_COVERAGE_REPORT)
|
$(JCOV_DIFF_COVERAGE_REPORT)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -140,6 +140,7 @@ $(eval $(call SetupVariable,JIB_JAR,OPTIONAL))
|
|||||||
include $(TOPDIR)/make/PreInitSupport.gmk
|
include $(TOPDIR)/make/PreInitSupport.gmk
|
||||||
include $(TOPDIR)/make/common/LogUtils.gmk
|
include $(TOPDIR)/make/common/LogUtils.gmk
|
||||||
|
|
||||||
|
$(eval $(call CheckDeprecatedEnvironment))
|
||||||
$(eval $(call CheckInvalidMakeFlags))
|
$(eval $(call CheckInvalidMakeFlags))
|
||||||
$(eval $(call ParseLogLevel))
|
$(eval $(call ParseLogLevel))
|
||||||
|
|
||||||
@@ -217,9 +218,9 @@ else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
|||||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
NUM_CORES := $(NUMBER_OF_PROCESSORS)
|
NUM_CORES := $(NUMBER_OF_PROCESSORS)
|
||||||
MEMORY_SIZE := $(shell \
|
MEMORY_SIZE := $(shell \
|
||||||
$(EXPR) `powershell -Command \
|
$(EXPR) `wmic computersystem get totalphysicalmemory -value \
|
||||||
"(Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory" \
|
| $(GREP) = | $(SED) 's/\\r//g' \
|
||||||
| $(SED) 's/\\r//g' ` / 1024 / 1024 \
|
| $(CUT) -d "=" -f 2-` / 1024 / 1024 \
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
ifeq ($(NUM_CORES), )
|
ifeq ($(NUM_CORES), )
|
||||||
@@ -298,7 +299,7 @@ test-prebuilt:
|
|||||||
@$(RM) -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error
|
@$(RM) -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error
|
||||||
# We need to fill the FindTest cache before entering RunTests.gmk.
|
# We need to fill the FindTest cache before entering RunTests.gmk.
|
||||||
@cd $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) SPEC=$(SPEC) \
|
@cd $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) SPEC=$(SPEC) \
|
||||||
-f GenerateFindTests.gmk
|
-f RunTestsPrebuiltFindTests.gmk
|
||||||
@cd $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test \
|
@cd $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test \
|
||||||
TEST="$(TEST)"
|
TEST="$(TEST)"
|
||||||
|
|
||||||
|
|||||||
@@ -176,19 +176,3 @@ ULIMIT := ulimit
|
|||||||
ifeq ($(OPENJDK_BUILD_OS), windows)
|
ifeq ($(OPENJDK_BUILD_OS), windows)
|
||||||
PATHTOOL := cygpath
|
PATHTOOL := cygpath
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# These settings are needed to run testing with jvmti agent
|
|
||||||
ifeq ($(OPENJDK_BUILD_OS), linux)
|
|
||||||
LIBRARY_PREFIX := lib
|
|
||||||
SHARED_LIBRARY_SUFFIX := .so
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(OPENJDK_BUILD_OS), windows)
|
|
||||||
LIBRARY_PREFIX :=
|
|
||||||
SHARED_LIBRARY_SUFFIX := .dll
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(OPENJDK_BUILD_OS), macosx)
|
|
||||||
LIBRARY_PREFIX := lib
|
|
||||||
SHARED_LIBRARY_SUFFIX := .dylib
|
|
||||||
endif
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ ifneq ($(and $(GIT), $(wildcard $(TOPDIR)/.git)), )
|
|||||||
SCM_DIR := .git
|
SCM_DIR := .git
|
||||||
ID_COMMAND := $(PRINTF) "git:%s%s\n" \
|
ID_COMMAND := $(PRINTF) "git:%s%s\n" \
|
||||||
"$$($(GIT) log -n1 --format=%H | cut -c1-12)" \
|
"$$($(GIT) log -n1 --format=%H | cut -c1-12)" \
|
||||||
"$$(if test -n "$$($(GIT) status --porcelain)"; then $(PRINTF) '+'; fi)"
|
"$$(if test -n "$$($(GIT) status --porcelain)"; then printf '+'; fi)"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(USE_SCM), true)
|
ifeq ($(USE_SCM), true)
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ include CopyFiles.gmk
|
|||||||
include DebugInfoUtils.gmk
|
include DebugInfoUtils.gmk
|
||||||
include Modules.gmk
|
include Modules.gmk
|
||||||
include modules/LauncherCommon.gmk
|
include modules/LauncherCommon.gmk
|
||||||
include Execute.gmk
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
@@ -48,8 +47,8 @@ ifneq ($(word 2, $(wildcard $(HOTSPOT_STATIC_LIB_PATH))), )
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# Find all modules with static libraries
|
# Find all modules with static libraries
|
||||||
STATIC_LIB_MODULES := $(sort $(patsubst $(SUPPORT_OUTPUTDIR)/modules_static-libs/%, \
|
STATIC_LIB_MODULES := $(patsubst $(SUPPORT_OUTPUTDIR)/modules_static-libs/%, \
|
||||||
%, $(wildcard $(SUPPORT_OUTPUTDIR)/modules_static-libs/*)))
|
%, $(wildcard $(SUPPORT_OUTPUTDIR)/modules_static-libs/*))
|
||||||
|
|
||||||
# Filter out known broken libraries. This is a temporary measure until
|
# Filter out known broken libraries. This is a temporary measure until
|
||||||
# proper support for these libraries can be provided.
|
# proper support for these libraries can be provided.
|
||||||
@@ -69,10 +68,6 @@ else ifeq ($(call isTargetOs, windows), true)
|
|||||||
BROKEN_STATIC_LIBS += sspi_bridge
|
BROKEN_STATIC_LIBS += sspi_bridge
|
||||||
# dt_shmem define jdwpTransport_OnLoad which conflict with dt_socket
|
# dt_shmem define jdwpTransport_OnLoad which conflict with dt_socket
|
||||||
BROKEN_STATIC_LIBS += dt_shmem
|
BROKEN_STATIC_LIBS += dt_shmem
|
||||||
else ifeq ($(call isTargetOs, aix), true)
|
|
||||||
# libsplashscreen has a name conflict with libawt in the function
|
|
||||||
# BitmapToYXBandedRectangles, so we exclude it for now.
|
|
||||||
BROKEN_STATIC_LIBS += splashscreen
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(foreach module, $(STATIC_LIB_MODULES), \
|
$(foreach module, $(STATIC_LIB_MODULES), \
|
||||||
@@ -104,37 +99,17 @@ else ifeq ($(call isTargetOs, linux), true)
|
|||||||
STATIC_LIBS := -Wl,--export-dynamic -Wl,--whole-archive $(STATIC_LIB_FILES) -Wl,--no-whole-archive
|
STATIC_LIBS := -Wl,--export-dynamic -Wl,--whole-archive $(STATIC_LIB_FILES) -Wl,--no-whole-archive
|
||||||
else ifeq ($(call isTargetOs, windows), true)
|
else ifeq ($(call isTargetOs, windows), true)
|
||||||
STATIC_LIBS := $(addprefix -wholearchive:, $(STATIC_LIB_FILES))
|
STATIC_LIBS := $(addprefix -wholearchive:, $(STATIC_LIB_FILES))
|
||||||
else ifeq ($(call isTargetOs, aix), true)
|
|
||||||
# on AIX we have to generate export files for all static libs, because we have no whole-archive linker flag
|
|
||||||
$(foreach lib, $(STATIC_LIB_FILES), \
|
|
||||||
$(eval $(call SetupExecute, generate_export_list_$(notdir $(lib)), \
|
|
||||||
INFO := Generating export list for $(notdir $(lib)), \
|
|
||||||
DEPS := $(lib), \
|
|
||||||
OUTPUT_FILE := $(lib).exp, \
|
|
||||||
COMMAND := $(AR) $(ARFLAGS) -w $(lib) | $(GREP) -v '^\.' | $(AWK) '{print $$1}' | $(SORT) -u > $(lib).exp, \
|
|
||||||
)) \
|
|
||||||
$(eval STATIC_LIB_EXPORT_FILES += $(lib).exp) \
|
|
||||||
)
|
|
||||||
STATIC_LIBS := -Wl,-bexpfull $(STATIC_LIB_FILES) $(addprefix -Wl$(COMMA)-bE:, $(STATIC_LIB_EXPORT_FILES))
|
|
||||||
ifeq ($(DEBUG_LEVEL), slowdebug)
|
|
||||||
STATIC_LIBS += -Wl,-bbigtoc
|
|
||||||
endif
|
|
||||||
else
|
else
|
||||||
$(error Unsupported platform)
|
$(error Unsupported platform)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Build the java static launcher
|
|
||||||
################################################################################
|
|
||||||
$(eval $(call SetupBuildLauncher, java, \
|
$(eval $(call SetupBuildLauncher, java, \
|
||||||
ENABLE_ARG_FILES := true, \
|
ENABLE_ARG_FILES := true, \
|
||||||
EXPAND_CLASSPATH_WILDCARDS := true, \
|
EXPAND_CLASSPATH_WILDCARDS := true, \
|
||||||
EXTRA_RCFLAGS := $(JAVA_RCFLAGS), \
|
EXTRA_RCFLAGS := $(JAVA_RCFLAGS), \
|
||||||
VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \
|
VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \
|
||||||
OPTIMIZATION := HIGH, \
|
OPTIMIZATION := HIGH, \
|
||||||
MACOSX_PRIVILEGED := true, \
|
|
||||||
STATIC_LAUNCHER := true, \
|
STATIC_LAUNCHER := true, \
|
||||||
CFLAGS := -DSTATIC_BUILD, \
|
|
||||||
LDFLAGS := $(LDFLAGS_STATIC_JDK), \
|
LDFLAGS := $(LDFLAGS_STATIC_JDK), \
|
||||||
LIBS := $(STATIC_LIBS) $(EXTERNAL_LIBS), \
|
LIBS := $(STATIC_LIBS) $(EXTERNAL_LIBS), \
|
||||||
LINK_TYPE := C++, \
|
LINK_TYPE := C++, \
|
||||||
@@ -143,61 +118,12 @@ $(eval $(call SetupBuildLauncher, java, \
|
|||||||
))
|
))
|
||||||
|
|
||||||
$(java): $(STATIC_LIB_FILES)
|
$(java): $(STATIC_LIB_FILES)
|
||||||
ifeq ($(call isTargetOs, aix), true)
|
|
||||||
$(java): $(STATIC_LIB_EXPORT_FILES)
|
|
||||||
endif
|
|
||||||
|
|
||||||
TARGETS += $(java)
|
TARGETS += $(java)
|
||||||
|
|
||||||
JAVA_LAUNCHER := $(BUILD_LAUNCHER_java_TARGET)
|
JAVA_LAUNCHER := $(BUILD_LAUNCHER_java_TARGET)
|
||||||
|
|
||||||
static-launchers: $(java)
|
static-launcher: $(java)
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Build relaunchers (thin wrappers calling the java binary) for all other
|
|
||||||
# JDK launchers.
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
RELAUNCHER_SRC := $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/launcher
|
|
||||||
|
|
||||||
# $1: The module name
|
|
||||||
# $2: The launcher name
|
|
||||||
define SetupRelauncher
|
|
||||||
$1_$2_LAUNCHER_ARGS_LINE := $$(call ReadFile, $$(SUPPORT_OUTPUTDIR)/static-native/relaunchers/$1/$2-relauncher-arguments.txt)
|
|
||||||
# Restore |||| with space
|
|
||||||
$1_$2_LAUNCHER_ARGS := '{ $$(subst ||||,$(SPACE),$$(strip $$(foreach a, $$($1_$2_LAUNCHER_ARGS_LINE), "-J$$a"$$(COMMA) )) ) }'
|
|
||||||
|
|
||||||
$$(eval $$(call SetupJdkExecutable, BUILD_relauncher_$2, \
|
|
||||||
NAME := $2, \
|
|
||||||
EXTRA_FILES := $$(RELAUNCHER_SRC)/relauncher.c, \
|
|
||||||
CFLAGS := -DLAUNCHER_ARGS=$$($1_$2_LAUNCHER_ARGS), \
|
|
||||||
LIBS_windows := shlwapi.lib, \
|
|
||||||
OUTPUT_DIR := $$(STATIC_LAUNCHER_OUTPUT_DIR), \
|
|
||||||
OBJECT_DIR := $$(STATIC_LAUNCHER_OUTPUT_DIR)/relaunchers/$2, \
|
|
||||||
))
|
|
||||||
|
|
||||||
TARGETS += $$(BUILD_relauncher_$2)
|
|
||||||
|
|
||||||
RELAUNCHERS += $$(BUILD_relauncher_$2_TARGET)
|
|
||||||
static-launchers: $$(BUILD_relauncher_$2)
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Find all modules with launchers
|
|
||||||
LAUNCHER_MODULES := $(sort $(patsubst $(SUPPORT_OUTPUTDIR)/modules_static-launchers/%, \
|
|
||||||
%, $(wildcard $(SUPPORT_OUTPUTDIR)/modules_static-launchers/*)))
|
|
||||||
|
|
||||||
# Find launchers for each module
|
|
||||||
$(foreach module, $(LAUNCHER_MODULES), \
|
|
||||||
$(eval LAUNCHERS_$(module) := $(if $(wildcard \
|
|
||||||
$(SUPPORT_OUTPUTDIR)/modules_static-launchers/$(module)/module-included-launchers.txt), \
|
|
||||||
$(shell cat \
|
|
||||||
$(SUPPORT_OUTPUTDIR)/modules_static-launchers/$(module)/module-included-launchers.txt))) \
|
|
||||||
)
|
|
||||||
|
|
||||||
# For all launchers (except java and javaw), setup a relauncher build
|
|
||||||
$(foreach module, $(LAUNCHER_MODULES), \
|
|
||||||
$(foreach launcher, $(filter-out java javaw, $(LAUNCHERS_$(module))), \
|
|
||||||
$(eval $(call SetupRelauncher,$(module),$(launcher)))))
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
@@ -239,72 +165,26 @@ TARGETS += $(copy-from-jdk-image)
|
|||||||
|
|
||||||
$(copy-from-jdk-image): | static-jdk-info
|
$(copy-from-jdk-image): | static-jdk-info
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles, copy-static-launchers, \
|
$(eval $(call SetupCopyFiles, copy-static-launcher, \
|
||||||
FILES := $(JAVA_LAUNCHER) $(RELAUNCHERS), \
|
FILES := $(JAVA_LAUNCHER), \
|
||||||
DEST := $(STATIC_JDK_IMAGE_DIR)/bin, \
|
DEST := $(STATIC_JDK_IMAGE_DIR)/bin, \
|
||||||
))
|
))
|
||||||
|
|
||||||
TARGETS += $(copy-static-launchers)
|
TARGETS += $(copy-static-launcher)
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles, copy-static-launchers-debuginfo, \
|
$(eval $(call SetupCopyFiles, copy-static-launcher-debuginfo, \
|
||||||
SRC := $(STATIC_LAUNCHER_OUTPUT_DIR), \
|
SRC := $(STATIC_LAUNCHER_OUTPUT_DIR), \
|
||||||
DEST := $(STATIC_JDK_IMAGE_DIR)/bin, \
|
DEST := $(STATIC_JDK_IMAGE_DIR)/bin, \
|
||||||
FILES := $(call FindDebuginfoFiles, $(STATIC_LAUNCHER_OUTPUT_DIR)), \
|
FILES := $(call FindDebuginfoFiles, $(STATIC_LAUNCHER_OUTPUT_DIR)), \
|
||||||
))
|
))
|
||||||
|
|
||||||
TARGETS += $(copy-static-launchers-debuginfo)
|
TARGETS += $(copy-static-launcher-debuginfo)
|
||||||
|
|
||||||
# Copy the microsoft runtime libraries on windows
|
static-jdk-image: $(copy-from-jdk-image) $(copy-static-launcher) $(copy-static-launcher-debuginfo)
|
||||||
ifeq ($(call isTargetOs, windows), true)
|
|
||||||
# Chmod to avoid permission issues if bundles are unpacked on unix platforms.
|
|
||||||
# Use separate macro calls in case the source files are not in the same
|
|
||||||
# directory.
|
|
||||||
$(eval $(call SetupCopyFiles, copy-windows-msvcr, \
|
|
||||||
DEST := $(STATIC_JDK_IMAGE_DIR)/bin, \
|
|
||||||
FILES := $(MSVCR_DLL), \
|
|
||||||
MACRO := copy-and-chmod-executable, \
|
|
||||||
))
|
|
||||||
|
|
||||||
TARGETS += $(copy-windows-msvcr)
|
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles, copy-windows-vcruntime, \
|
|
||||||
DEST := $(STATIC_JDK_IMAGE_DIR)/bin, \
|
|
||||||
FILES := $(VCRUNTIME_1_DLL), \
|
|
||||||
MACRO := copy-and-chmod-executable, \
|
|
||||||
))
|
|
||||||
|
|
||||||
TARGETS += $(copy-windows-vcruntime)
|
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles, copy-windows-msvcp, \
|
|
||||||
DEST := $(STATIC_JDK_IMAGE_DIR)/bin, \
|
|
||||||
FILES := $(MSVCP_DLL), \
|
|
||||||
MACRO := copy-and-chmod-executable, \
|
|
||||||
))
|
|
||||||
|
|
||||||
TARGETS += $(copy-windows-msvcp)
|
|
||||||
|
|
||||||
copy-windows-libs := $(copy-windows-msvcr) $(copy-windows-vcruntime) $(copy-windows-msvcp)
|
|
||||||
|
|
||||||
ifneq ($(UCRT_DLL_DIR), )
|
|
||||||
$(eval $(call SetupCopyFiles, copy-windows-ucrt, \
|
|
||||||
DEST := $(STATIC_JDK_IMAGE_DIR)/bin, \
|
|
||||||
SRC := $(UCRT_DLL_DIR), \
|
|
||||||
FILES := $(wildcard $(UCRT_DLL_DIR)/*.dll), \
|
|
||||||
MACRO := copy-and-chmod-executable, \
|
|
||||||
))
|
|
||||||
|
|
||||||
TARGETS += $(copy-windows-ucrt)
|
|
||||||
|
|
||||||
copy-windows-libs += $(copy-windows-ucrt)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
static-jdk-image: $(copy-from-jdk-image) $(copy-static-launchers) \
|
|
||||||
$(copy-static-launchers-debuginfo) $(copy-windows-libs)
|
|
||||||
|
|
||||||
TARGETS += static-jdk-image
|
TARGETS += static-jdk-image
|
||||||
|
|
||||||
.PHONY: static-launchers static-jdk-image
|
.PHONY: static-launcher static-jdk-image
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user