mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-11 03:49:40 +01:00
Compare commits
1025 Commits
jdk-23+35
...
nikita.tsa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d010192e2 | ||
|
|
5017512698 | ||
|
|
62a053e00f | ||
|
|
d38c61b431 | ||
|
|
452aa4aaf9 | ||
|
|
a52dc1e334 | ||
|
|
5fb3142b89 | ||
|
|
58ccffe83b | ||
|
|
17ca1e4264 | ||
|
|
ec2385cb2b | ||
|
|
68a88f21b6 | ||
|
|
43c86da9d6 | ||
|
|
192549a291 | ||
|
|
d3a3287c14 | ||
|
|
dc2636f993 | ||
|
|
7ce7f03ea6 | ||
|
|
7ad81e83dc | ||
|
|
f6da1d77a6 | ||
|
|
8891beaad6 | ||
|
|
79d2918c4a | ||
|
|
92eb910778 | ||
|
|
ad935fda21 | ||
|
|
a3db83a884 | ||
|
|
00da46fc7e | ||
|
|
0079f8f57d | ||
|
|
311a734447 | ||
|
|
01e9c2f0c6 | ||
|
|
10d51e1de3 | ||
|
|
7f68d303c0 | ||
|
|
8c21581f41 | ||
|
|
3ceea2792d | ||
|
|
cbcfda4487 | ||
|
|
72f4121dd4 | ||
|
|
5216fec0ae | ||
|
|
7f1df06339 | ||
|
|
7cf7167b92 | ||
|
|
45e9669630 | ||
|
|
11e5da6337 | ||
|
|
8122d2acbc | ||
|
|
c7be896938 | ||
|
|
292a7789cd | ||
|
|
cc5f85c447 | ||
|
|
c537066081 | ||
|
|
6f2e7b822a | ||
|
|
5c97254495 | ||
|
|
b44f17bcec | ||
|
|
e560a5bcbe | ||
|
|
abfb51e57f | ||
|
|
840dcd658a | ||
|
|
6f8b4a79d7 | ||
|
|
573f68aaad | ||
|
|
b982409544 | ||
|
|
d670f203eb | ||
|
|
a6fa1ebfaf | ||
|
|
6f98431845 | ||
|
|
e28ccde3ae | ||
|
|
ab8f5514e2 | ||
|
|
96fd5290d7 | ||
|
|
913325a5e8 | ||
|
|
ff6c15604f | ||
|
|
8848a73526 | ||
|
|
bc6ee6cc0d | ||
|
|
60372db46a | ||
|
|
f4c9e00034 | ||
|
|
4f2509c607 | ||
|
|
c5e346378f | ||
|
|
3e215c8946 | ||
|
|
01a3f73d8c | ||
|
|
37ce5209c0 | ||
|
|
dadade5efc | ||
|
|
f6b4da01ee | ||
|
|
65186e867b | ||
|
|
32894c9e94 | ||
|
|
9419a34dbd | ||
|
|
9c40d9ffe1 | ||
|
|
4c59676e9f | ||
|
|
10cd6c7c49 | ||
|
|
adc26bc051 | ||
|
|
62fab8aa22 | ||
|
|
66517a8e0a | ||
|
|
e964ff4894 | ||
|
|
65697ca859 | ||
|
|
41ce17fd83 | ||
|
|
6176607746 | ||
|
|
d524fe0396 | ||
|
|
5aa2965096 | ||
|
|
9e8f0602b6 | ||
|
|
f2ffaeaf3a | ||
|
|
ee5534ef25 | ||
|
|
bf8c1300cf | ||
|
|
250c903f83 | ||
|
|
7a4c372740 | ||
|
|
c4989bbae2 | ||
|
|
9d66079279 | ||
|
|
9fe0397dc8 | ||
|
|
fd170f3228 | ||
|
|
0b71e9663f | ||
|
|
d5911502e4 | ||
|
|
331521efe1 | ||
|
|
61b9f39e92 | ||
|
|
51f4b702e4 | ||
|
|
f102341f13 | ||
|
|
81cf0caa84 | ||
|
|
7b7236a454 | ||
|
|
6894e31e91 | ||
|
|
b556697d9f | ||
|
|
5ac83a4daf | ||
|
|
11300a89d5 | ||
|
|
7d5d9f24ce | ||
|
|
1082fa7790 | ||
|
|
416b3e73e6 | ||
|
|
c6022998aa | ||
|
|
d4e7e39b91 | ||
|
|
8d9f07dcab | ||
|
|
3841400463 | ||
|
|
09ce3a3e3d | ||
|
|
494e2c1c8c | ||
|
|
30998790df | ||
|
|
6cab29c6e1 | ||
|
|
0dc1d2e424 | ||
|
|
4f7e940b8c | ||
|
|
63c6d65f8d | ||
|
|
072aa04a94 | ||
|
|
a1b5ae8727 | ||
|
|
85ad371d80 | ||
|
|
9880b1c8ae | ||
|
|
085ec1244e | ||
|
|
f1d02ecfe8 | ||
|
|
24e31ed90a | ||
|
|
2bef5e306a | ||
|
|
026655cf4c | ||
|
|
968cf180cb | ||
|
|
88c035a7c1 | ||
|
|
346a30861c | ||
|
|
9d6b4013d2 | ||
|
|
ee676c6c52 | ||
|
|
66887d8f4c | ||
|
|
e04c4cd8dc | ||
|
|
9f359d7d83 | ||
|
|
88650a0a2c | ||
|
|
7e1362e2c5 | ||
|
|
821e600ab9 | ||
|
|
1e9b2e5d38 | ||
|
|
87570265dc | ||
|
|
0a604d6231 | ||
|
|
72525f4ff6 | ||
|
|
76afee41de | ||
|
|
db6f3974b1 | ||
|
|
db3ef87108 | ||
|
|
d395db61e9 | ||
|
|
ceeddee2b1 | ||
|
|
1fb95b103e | ||
|
|
a71a2fde41 | ||
|
|
24e9025ec3 | ||
|
|
0c0e33f6ed | ||
|
|
98ad44641f | ||
|
|
67d3075036 | ||
|
|
607a4e7d5a | ||
|
|
9db1ecba1d | ||
|
|
2d5958a3fa | ||
|
|
ac76246d2d | ||
|
|
9e054f0fc8 | ||
|
|
bd201d700a | ||
|
|
a486bc97b4 | ||
|
|
b375637662 | ||
|
|
e698d36ad3 | ||
|
|
64563bd1fd | ||
|
|
d90fc3a9e8 | ||
|
|
1d402a14aa | ||
|
|
78d672db3a | ||
|
|
a099a1f561 | ||
|
|
e00e6ce3bd | ||
|
|
b039dec72f | ||
|
|
5afed7e9c3 | ||
|
|
ae608d3794 | ||
|
|
3f30b4c6f5 | ||
|
|
1d97c282c1 | ||
|
|
1a02719ce0 | ||
|
|
8401d71f8c | ||
|
|
a4590e9fb8 | ||
|
|
812d6f1329 | ||
|
|
c1450973da | ||
|
|
b04cc1e1a8 | ||
|
|
f46e0393a9 | ||
|
|
1cf6dcfaac | ||
|
|
36b3f66e0a | ||
|
|
ae6b06b807 | ||
|
|
79812670d5 | ||
|
|
f13a833fcd | ||
|
|
6c578f5986 | ||
|
|
9cfede94de | ||
|
|
6c05b769e6 | ||
|
|
cb2b9129b4 | ||
|
|
767a3d13f0 | ||
|
|
a8b4c1948c | ||
|
|
1d3e21c990 | ||
|
|
c4903d0249 | ||
|
|
8aaaef0508 | ||
|
|
536bc4f0b5 | ||
|
|
d4c165e145 | ||
|
|
c1cc20c0c3 | ||
|
|
9628e069dc | ||
|
|
72812f3295 | ||
|
|
e7c67661e6 | ||
|
|
15dbade9ce | ||
|
|
ccdbc22041 | ||
|
|
bc2f370255 | ||
|
|
725015fab2 | ||
|
|
e91523fd1f | ||
|
|
a59654fd82 | ||
|
|
89b8be8cd2 | ||
|
|
45096724d2 | ||
|
|
ab7bf0a2e9 | ||
|
|
169ec9dd7f | ||
|
|
178e3b080b | ||
|
|
be55509a1c | ||
|
|
0c3f64051f | ||
|
|
7f1dbefc17 | ||
|
|
5c97aa137c | ||
|
|
f5a947b59c | ||
|
|
679433e97e | ||
|
|
4ae85d9311 | ||
|
|
325d30a364 | ||
|
|
a7eba2f4ca | ||
|
|
4cb234a7e4 | ||
|
|
ddff962409 | ||
|
|
0b8fd9f63b | ||
|
|
a17554656f | ||
|
|
9c8cb73bb8 | ||
|
|
0dddac0973 | ||
|
|
436530e971 | ||
|
|
803f1ec1dd | ||
|
|
9ab441a191 | ||
|
|
6db8ef1d9f | ||
|
|
e91976ec94 | ||
|
|
6345ccda51 | ||
|
|
6478644449 | ||
|
|
8fc9cee47f | ||
|
|
174772a2bb | ||
|
|
c10a5f6a1c | ||
|
|
25461f482d | ||
|
|
7d652ce35d | ||
|
|
9a51bfbd08 | ||
|
|
635519ff15 | ||
|
|
8c3b6868e8 | ||
|
|
a990290bb6 | ||
|
|
5f6a29ced0 | ||
|
|
191928c54e | ||
|
|
7ca9c8dacc | ||
|
|
040279ca65 | ||
|
|
2456acf9a2 | ||
|
|
95aa32f07b | ||
|
|
f3fb62418a | ||
|
|
29432f9a36 | ||
|
|
82f707bc36 | ||
|
|
2f766ed025 | ||
|
|
7ba29deed6 | ||
|
|
19e51dffee | ||
|
|
07a3a5a727 | ||
|
|
6e56b882bc | ||
|
|
4487e57c7d | ||
|
|
09dd4a4bee | ||
|
|
affac3e26d | ||
|
|
812581f19f | ||
|
|
6abb18a333 | ||
|
|
2b03aa8230 | ||
|
|
e5181400e1 | ||
|
|
8a8500a453 | ||
|
|
5074b8e923 | ||
|
|
5e774ddc04 | ||
|
|
65228f7830 | ||
|
|
6e521fc1a2 | ||
|
|
eaea7dacb2 | ||
|
|
9d56cf3256 | ||
|
|
d971ab2ec3 | ||
|
|
917790e258 | ||
|
|
766a6a3b49 | ||
|
|
b7a76ed192 | ||
|
|
4ba59d3249 | ||
|
|
fe74ac1c2f | ||
|
|
a75ee35895 | ||
|
|
abaca15b91 | ||
|
|
6520619692 | ||
|
|
b31966c88f | ||
|
|
70e8dee4a9 | ||
|
|
7896023d4e | ||
|
|
6f23f4f79f | ||
|
|
bbb52e980e | ||
|
|
aa4b59a606 | ||
|
|
5180a3020c | ||
|
|
a952391084 | ||
|
|
b85bf0e726 | ||
|
|
479cfa58f0 | ||
|
|
5f17c4c28c | ||
|
|
79bf68fd41 | ||
|
|
a90e3569d6 | ||
|
|
e99853df6d | ||
|
|
6ea7b038ce | ||
|
|
41e0d7646f | ||
|
|
6decbbbf0a | ||
|
|
3bd462f9de | ||
|
|
6dba2977c5 | ||
|
|
5d9bc36dca | ||
|
|
5cd1535a94 | ||
|
|
3fc68818ac | ||
|
|
418e3e0b63 | ||
|
|
5779f84bbd | ||
|
|
d8513d1815 | ||
|
|
2b3722b435 | ||
|
|
636b1312f5 | ||
|
|
7f9126b8e2 | ||
|
|
1d01cca6c1 | ||
|
|
ca2c328c91 | ||
|
|
0425130de7 | ||
|
|
32c826a232 | ||
|
|
b6e8df9ea5 | ||
|
|
9e0095f0f7 | ||
|
|
adbb729303 | ||
|
|
61abef620d | ||
|
|
277100b211 | ||
|
|
e47a571a06 | ||
|
|
229af6a611 | ||
|
|
f3e1a3e510 | ||
|
|
c1ec64a901 | ||
|
|
23e0436965 | ||
|
|
f7fcebc7b9 | ||
|
|
d601731b65 | ||
|
|
efab4f2a07 | ||
|
|
8651354f86 | ||
|
|
953d50aa57 | ||
|
|
20d8562144 | ||
|
|
13c5e3f40b | ||
|
|
27a17ae424 | ||
|
|
c17aa77ddf | ||
|
|
1dcd8fc16e | ||
|
|
8124a7a48e | ||
|
|
274ce12f7a | ||
|
|
01cec04692 | ||
|
|
1bad298dee | ||
|
|
eed76cb5f4 | ||
|
|
3687e3a3f4 | ||
|
|
eca87db90c | ||
|
|
e3fe6b74fa | ||
|
|
956777216e | ||
|
|
e8f5943d50 | ||
|
|
739488f219 | ||
|
|
5c0777f506 | ||
|
|
508d6aa20a | ||
|
|
2acaf65bae | ||
|
|
bfefafd522 | ||
|
|
2d5b690c2d | ||
|
|
a188eefbe0 | ||
|
|
cd6f5a9cd9 | ||
|
|
11831092aa | ||
|
|
b33190814d | ||
|
|
5b5a32df92 | ||
|
|
ec4fd1ca20 | ||
|
|
aa48e99792 | ||
|
|
e508fba60d | ||
|
|
09f68c602f | ||
|
|
73a8c2e878 | ||
|
|
1621bc9f13 | ||
|
|
0f10d466f8 | ||
|
|
b6a87b8792 | ||
|
|
f3673a5f66 | ||
|
|
b62daf7405 | ||
|
|
02ffd5eb3a | ||
|
|
9421bdade0 | ||
|
|
08bcbf0dc8 | ||
|
|
4c1a11df14 | ||
|
|
f4a3cb24ff | ||
|
|
84c78fdadc | ||
|
|
eeebea4ba3 | ||
|
|
412739c97a | ||
|
|
2d55829fa4 | ||
|
|
3e468668f6 | ||
|
|
95d6491fc7 | ||
|
|
8dcb96458d | ||
|
|
f9f57ee480 | ||
|
|
2b76fcf24e | ||
|
|
8b261f99a5 | ||
|
|
eb7813d35c | ||
|
|
0e5ebceef6 | ||
|
|
f55e24132b | ||
|
|
9913519930 | ||
|
|
411bd90377 | ||
|
|
a902e0bbd7 | ||
|
|
45f78d13bc | ||
|
|
280f41b5b3 | ||
|
|
8c6f89d851 | ||
|
|
9590018eb3 | ||
|
|
7f3f69175d | ||
|
|
385dd56800 | ||
|
|
b95a057417 | ||
|
|
3de7ce7b72 | ||
|
|
3155967548 | ||
|
|
82fc0a5870 | ||
|
|
85b7663e76 | ||
|
|
947035b471 | ||
|
|
b5e7f7142a | ||
|
|
f7e47d7b4c | ||
|
|
0a14e80ef6 | ||
|
|
73a90bc4d9 | ||
|
|
b6f71dc028 | ||
|
|
bd419af2e1 | ||
|
|
e87b77dbb6 | ||
|
|
fd1e80b840 | ||
|
|
5c83ecce3a | ||
|
|
d7f1476633 | ||
|
|
3f7548d930 | ||
|
|
b40b8734c5 | ||
|
|
5167767b09 | ||
|
|
fe7e91c2c9 | ||
|
|
9e94ca86e0 | ||
|
|
0fcc6b7f94 | ||
|
|
f56db5c2bf | ||
|
|
b7a54c3971 | ||
|
|
1c8b0ebb27 | ||
|
|
b92fca28e1 | ||
|
|
cdf8f0032d | ||
|
|
33fb800896 | ||
|
|
3018d13cb0 | ||
|
|
4c866c31a5 | ||
|
|
833df55981 | ||
|
|
4f44b4620b | ||
|
|
1190ce0eb3 | ||
|
|
792ba9cfb7 | ||
|
|
0caec3c767 | ||
|
|
33421768a3 | ||
|
|
090da18c62 | ||
|
|
5e4db3098e | ||
|
|
2a1cc32d3a | ||
|
|
7c88c7b240 | ||
|
|
76d580f431 | ||
|
|
e625808e78 | ||
|
|
caccc73806 | ||
|
|
4f2c0563e6 | ||
|
|
cf5208acf2 | ||
|
|
ae811f9b41 | ||
|
|
6d6c6031f0 | ||
|
|
2ce9c8cb84 | ||
|
|
b3a48301c5 | ||
|
|
c37f63181b | ||
|
|
5300896592 | ||
|
|
f9c299e433 | ||
|
|
059ad784c6 | ||
|
|
41767cb3e4 | ||
|
|
fa28de12bb | ||
|
|
22c4d782b5 | ||
|
|
87e73fabde | ||
|
|
bdd58b9751 | ||
|
|
165855dbf9 | ||
|
|
b241c7e184 | ||
|
|
162ac35ba8 | ||
|
|
0ad1bd04e7 | ||
|
|
40e2ac6cf7 | ||
|
|
8f70ba0c50 | ||
|
|
06b1a61f69 | ||
|
|
15c7ef7a1e | ||
|
|
8c27097dc8 | ||
|
|
1c7ff44693 | ||
|
|
e49d9bdff9 | ||
|
|
e254c3278e | ||
|
|
188fd21cdf | ||
|
|
e7f58615a0 | ||
|
|
1f9fb375ba | ||
|
|
b80df3848f | ||
|
|
4807413630 | ||
|
|
e28de52a5b | ||
|
|
caf2545618 | ||
|
|
a20fd8f6ad | ||
|
|
ec393eb26b | ||
|
|
9aee8bad80 | ||
|
|
63867faedc | ||
|
|
4be4aaed6f | ||
|
|
0b13be4ddf | ||
|
|
7633ce57a9 | ||
|
|
fcfc160d83 | ||
|
|
5e541c0b1b | ||
|
|
a5ed760f7a | ||
|
|
4cc77af533 | ||
|
|
ac5a0139d5 | ||
|
|
7c0687929b | ||
|
|
acf5ec712f | ||
|
|
08880fe266 | ||
|
|
b3edbedec2 | ||
|
|
fefecbed2c | ||
|
|
ab1796a23d | ||
|
|
9cc1d2b669 | ||
|
|
f9ce0b5c10 | ||
|
|
af5972869e | ||
|
|
cf2a0ca4c2 | ||
|
|
e0ba5c368e | ||
|
|
0a8da16585 | ||
|
|
c2ea9d814e | ||
|
|
061663688c | ||
|
|
b73d793444 | ||
|
|
ed738e4876 | ||
|
|
7bf4f073a0 | ||
|
|
0df7376819 | ||
|
|
e754deb55b | ||
|
|
916eb181d5 | ||
|
|
fb36563090 | ||
|
|
632cd33085 | ||
|
|
c0099f9308 | ||
|
|
30870ae8c5 | ||
|
|
5e4eaa6821 | ||
|
|
4ad1171114 | ||
|
|
bcea5abdc2 | ||
|
|
7b6a0b087c | ||
|
|
143711e98c | ||
|
|
7bac8c43f7 | ||
|
|
7cddbd6088 | ||
|
|
4a6255eff1 | ||
|
|
1cb2d81fe4 | ||
|
|
72431ae175 | ||
|
|
bc18b8e974 | ||
|
|
85d0054685 | ||
|
|
1bc17a3ebb | ||
|
|
cd5edcac07 | ||
|
|
8def7a5157 | ||
|
|
8d0cb99c6b | ||
|
|
33710c989a | ||
|
|
35d2ec2891 | ||
|
|
3843a1259b | ||
|
|
b98e3e59f0 | ||
|
|
47fe42eea8 | ||
|
|
fdf11b778d | ||
|
|
af86c90a90 | ||
|
|
7636c5f542 | ||
|
|
8ede343e2c | ||
|
|
03c2c7784a | ||
|
|
a833c98e17 | ||
|
|
ba09598bad | ||
|
|
e555b87a05 | ||
|
|
8aaded1edf | ||
|
|
40ed76262b | ||
|
|
5157862a5c | ||
|
|
687721e803 | ||
|
|
957a0d214e | ||
|
|
35109c478f | ||
|
|
39f5b5858e | ||
|
|
3f8d7d98e1 | ||
|
|
43b6472c53 | ||
|
|
068283f793 | ||
|
|
0f0814e596 | ||
|
|
a9ee5b4a80 | ||
|
|
7ece4ba9f8 | ||
|
|
a6c43b0c2a | ||
|
|
2fb3bd624f | ||
|
|
8d11fb4dce | ||
|
|
45bc62a34e | ||
|
|
8eb6a4e614 | ||
|
|
b536a08e00 | ||
|
|
9f828174ee | ||
|
|
40dc376f59 | ||
|
|
473af30bab | ||
|
|
69eee24391 | ||
|
|
ce04a4afa9 | ||
|
|
2fd3e2e8e4 | ||
|
|
a505597ffb | ||
|
|
a921321666 | ||
|
|
bae3746526 | ||
|
|
69987398c6 | ||
|
|
3dd18a3b87 | ||
|
|
90e913749d | ||
|
|
52c18cc9e6 | ||
|
|
3bfdb2f2a5 | ||
|
|
053f2b977a | ||
|
|
837db8e627 | ||
|
|
0a660b1072 | ||
|
|
0772484bce | ||
|
|
07e607a860 | ||
|
|
96dc0930a2 | ||
|
|
8b45f0b1ad | ||
|
|
08c7a8f4db | ||
|
|
c509bd6cdf | ||
|
|
8d2c1e70cf | ||
|
|
7e28f32c07 | ||
|
|
fc00116c1c | ||
|
|
220a05c4f3 | ||
|
|
54d6c86714 | ||
|
|
6d7953f2a6 | ||
|
|
2a85675196 | ||
|
|
8928bc7e36 | ||
|
|
91406f140a | ||
|
|
193ac501e9 | ||
|
|
540569cfe3 | ||
|
|
b0f8dabee1 | ||
|
|
2a3503585b | ||
|
|
97b5b51168 | ||
|
|
596a6bec3a | ||
|
|
59f0b50fbc | ||
|
|
9c45305e16 | ||
|
|
06e6475d74 | ||
|
|
009a1a02d5 | ||
|
|
fc7d143a71 | ||
|
|
50d1681ab1 | ||
|
|
ecd28fdeaf | ||
|
|
3a6c00c069 | ||
|
|
4a81638058 | ||
|
|
80c89c0ff3 | ||
|
|
18afc1b28a | ||
|
|
7b4c344ca9 | ||
|
|
1fcecb4c9d | ||
|
|
f5943913c6 | ||
|
|
f8dc4cc8b5 | ||
|
|
01df71e90f | ||
|
|
95f7204125 | ||
|
|
999f1a52c0 | ||
|
|
85754fc837 | ||
|
|
2bc125f5e7 | ||
|
|
4a8e10fc04 | ||
|
|
a34163b4a1 | ||
|
|
213d3ae624 | ||
|
|
f3f4adf680 | ||
|
|
f895ea0d87 | ||
|
|
4c089e3234 | ||
|
|
fc44d2eee3 | ||
|
|
d8cc2e6747 | ||
|
|
1b16e67366 | ||
|
|
1ae5707d2e | ||
|
|
f9189a3c94 | ||
|
|
7b5ca5c1ca | ||
|
|
84b431f3d4 | ||
|
|
c797abfd4f | ||
|
|
f88ba5c84a | ||
|
|
61e42e1c22 | ||
|
|
ad242f8277 | ||
|
|
fc9789b736 | ||
|
|
8d4d7ad06e | ||
|
|
2c5691252f | ||
|
|
7184113442 | ||
|
|
cf0ab0f9fb | ||
|
|
2a0961e67f | ||
|
|
846a937592 | ||
|
|
e60854fe44 | ||
|
|
baf938a089 | ||
|
|
144d29a89f | ||
|
|
4a0a0fd2f5 | ||
|
|
c6b794e45f | ||
|
|
afee3f4444 | ||
|
|
76a1ecad23 | ||
|
|
c4758b3099 | ||
|
|
cf797d99a2 | ||
|
|
64c16ae4e7 | ||
|
|
111d15c695 | ||
|
|
a73fb69287 | ||
|
|
2369bc8d65 | ||
|
|
55ae59667d | ||
|
|
0c813321fe | ||
|
|
68181aad4d | ||
|
|
867454b010 | ||
|
|
3dc0536f05 | ||
|
|
3434fa2914 | ||
|
|
826908f8c7 | ||
|
|
d2bd4aa6fe | ||
|
|
df10d01a67 | ||
|
|
e0c4cd0f63 | ||
|
|
211156ba9f | ||
|
|
87b3bae7ed | ||
|
|
6bc9027300 | ||
|
|
d2087303a8 | ||
|
|
d30f44fd7a | ||
|
|
cb9e1bd973 | ||
|
|
17639d5c6a | ||
|
|
c4aae97502 | ||
|
|
73ac925295 | ||
|
|
4bd2fee61e | ||
|
|
95350b305d | ||
|
|
a4e41ae891 | ||
|
|
d35df353bb | ||
|
|
b8256f84c7 | ||
|
|
7bf364b669 | ||
|
|
75f37d2d74 | ||
|
|
c9e90e7d00 | ||
|
|
d4a4b2aade | ||
|
|
e99319b8c3 | ||
|
|
8caac8aadc | ||
|
|
2ae2503a2a | ||
|
|
c51e3013fd | ||
|
|
c72400f486 | ||
|
|
b48ef6f809 | ||
|
|
be7c797eb3 | ||
|
|
d028cad583 | ||
|
|
679add8d06 | ||
|
|
b854a14a26 | ||
|
|
5f4e5b7145 | ||
|
|
abbdeb5e57 | ||
|
|
ef0229ece8 | ||
|
|
c004e45b22 | ||
|
|
befa5ad2de | ||
|
|
71e79d6f67 | ||
|
|
15cf3046c1 | ||
|
|
f6cda5cbdb | ||
|
|
b965803382 | ||
|
|
1b024c52cb | ||
|
|
897214c760 | ||
|
|
328941bb30 | ||
|
|
2e410f579d | ||
|
|
ff0937919e | ||
|
|
380541be07 | ||
|
|
8d29eda061 | ||
|
|
9e4d5cc338 | ||
|
|
28896c68da | ||
|
|
456d4eb9f3 | ||
|
|
7f310acb5d | ||
|
|
3e6995636a | ||
|
|
7f7ab93d1a | ||
|
|
640000a3ac | ||
|
|
3218a26ac9 | ||
|
|
756cb60286 | ||
|
|
634230e301 | ||
|
|
fc0e24f1a6 | ||
|
|
ed7c5452d0 | ||
|
|
4a22f8687d | ||
|
|
087466964b | ||
|
|
7c3afd64cf | ||
|
|
7503c0a38e | ||
|
|
230c953c32 | ||
|
|
bf298bc954 | ||
|
|
97115cd3cf | ||
|
|
3ce6ac8a7d | ||
|
|
07e8002aba | ||
|
|
c835a0cea7 | ||
|
|
7a2b8b4858 | ||
|
|
b0b3e6d44e | ||
|
|
231126341a | ||
|
|
37bb4816e7 | ||
|
|
d14f77618f | ||
|
|
b159e878b2 | ||
|
|
f04e792ebb | ||
|
|
66cb5adb16 | ||
|
|
baff989fca | ||
|
|
9a36660f2a | ||
|
|
0f6c1e4c2d | ||
|
|
b4fc1d0bd1 | ||
|
|
fbc6f2a65e | ||
|
|
0ac8e99cbd | ||
|
|
3e643b32ed | ||
|
|
017ee73dbb | ||
|
|
cd34eed50c | ||
|
|
7bc4fc2c38 | ||
|
|
95e4969384 | ||
|
|
b91d165b26 | ||
|
|
ecd2898d83 | ||
|
|
5d2983fd41 | ||
|
|
251c8b4fcb | ||
|
|
31ba07f4fa | ||
|
|
18e4a48388 | ||
|
|
73dd8451b9 | ||
|
|
d9d38eb9de | ||
|
|
feb8cf0aa4 | ||
|
|
82ed48e809 | ||
|
|
8c9dfa38b3 | ||
|
|
ef3667c417 | ||
|
|
56c4a2cdb4 | ||
|
|
14df428720 | ||
|
|
ad96cd1a12 | ||
|
|
e06f92bdc0 | ||
|
|
10f869dbf2 | ||
|
|
c79c0a8de4 | ||
|
|
5afe77af8e | ||
|
|
8f9ed1d0a0 | ||
|
|
d93cfee7ba | ||
|
|
8d4ad0209c | ||
|
|
2f55aa3e21 | ||
|
|
bc834f796c | ||
|
|
11c15ad336 | ||
|
|
97577b8b8c | ||
|
|
2150c09dfd | ||
|
|
b3b9fda9d3 | ||
|
|
3f15650d44 | ||
|
|
5cf0d84180 | ||
|
|
45b7d28806 | ||
|
|
6786031bd8 | ||
|
|
928afb1757 | ||
|
|
bd7fa3fb91 | ||
|
|
e45435eb4e | ||
|
|
85aa90d8e2 | ||
|
|
51b069450c | ||
|
|
569a544fd7 | ||
|
|
2b0c859239 | ||
|
|
ab68a851fd | ||
|
|
03261406b4 | ||
|
|
7c6b02f692 | ||
|
|
0c3ee464a8 | ||
|
|
958913c872 | ||
|
|
b99c0d018c | ||
|
|
1599aa8ab2 | ||
|
|
8379f5811e | ||
|
|
dac6649d6b | ||
|
|
4f798fcf34 | ||
|
|
c540889db6 | ||
|
|
174398900f | ||
|
|
c82da3ded3 | ||
|
|
79754140bc | ||
|
|
722e690c9c | ||
|
|
a162f157a9 | ||
|
|
e53b620610 | ||
|
|
6c5d53cd9c | ||
|
|
47c755f417 | ||
|
|
f0fc10fd79 | ||
|
|
44676402d3 | ||
|
|
abee671c67 | ||
|
|
18d6454146 | ||
|
|
071f153cee | ||
|
|
7abe1e9ef9 | ||
|
|
e0417707d8 | ||
|
|
8c0290eb6f | ||
|
|
108dc071f7 | ||
|
|
beaa146175 | ||
|
|
eb92faff36 | ||
|
|
8e7d071083 | ||
|
|
7854bf9a68 | ||
|
|
4adb328051 | ||
|
|
f5bf15b17a | ||
|
|
55a0b488cf | ||
|
|
1e8f4071d4 | ||
|
|
43cfd01cd1 | ||
|
|
4db9b7d638 | ||
|
|
3db8548acd | ||
|
|
036042f307 | ||
|
|
b94aa6e781 | ||
|
|
57069985df | ||
|
|
c3ba3c338a | ||
|
|
b9f88b578d | ||
|
|
7b0e978cab | ||
|
|
b2fff68cad | ||
|
|
c95187b027 | ||
|
|
12aa826c09 | ||
|
|
410423b330 | ||
|
|
c809264573 | ||
|
|
3b46b820be | ||
|
|
2f07cb50ff | ||
|
|
19e6a83da2 | ||
|
|
94d294f840 | ||
|
|
c45162bc17 | ||
|
|
2932c40c54 | ||
|
|
05e818a989 | ||
|
|
1bf63be247 | ||
|
|
f8d684d413 | ||
|
|
70a8906e31 | ||
|
|
3e64b431ca | ||
|
|
acd0f42b9d | ||
|
|
149049508d | ||
|
|
0064dd27c0 | ||
|
|
0f160ac9a1 | ||
|
|
c8aaed238b | ||
|
|
7c8eee9d41 | ||
|
|
1142e4c0f8 | ||
|
|
034fc6bd17 | ||
|
|
e334126a36 | ||
|
|
48880dca26 | ||
|
|
c3c5c0bfdf | ||
|
|
7cbef8b12e | ||
|
|
7f50d14923 | ||
|
|
c08a5a3248 | ||
|
|
487278aae1 | ||
|
|
5212928df5 | ||
|
|
287bce05f5 | ||
|
|
91cb7d4f79 | ||
|
|
31ed7786d5 | ||
|
|
d733c8d572 | ||
|
|
8ca807390c | ||
|
|
b9d27d4e98 | ||
|
|
faae1502c2 | ||
|
|
4d5932d732 | ||
|
|
1cd7e4b43e | ||
|
|
9332d69148 | ||
|
|
18a0f900d0 | ||
|
|
bcebb5059f | ||
|
|
0ce402a970 | ||
|
|
84e898467f | ||
|
|
b7572f1b55 | ||
|
|
2358d5843d | ||
|
|
f6b546e64d | ||
|
|
3ea246caa4 | ||
|
|
83570db539 | ||
|
|
94a38e0ac3 | ||
|
|
74b98bb4db | ||
|
|
515d018333 | ||
|
|
cb882092ea | ||
|
|
3a64c4d085 | ||
|
|
e673786718 | ||
|
|
3a914ed590 | ||
|
|
2cf2d3c2cc | ||
|
|
00e9028880 | ||
|
|
4b281fe712 | ||
|
|
b3eb84cb88 | ||
|
|
276d235644 | ||
|
|
eae9632a74 | ||
|
|
176bfd9640 | ||
|
|
d6e84247b8 | ||
|
|
49a417e259 | ||
|
|
c5efd32e13 | ||
|
|
0de71d5c35 | ||
|
|
7bac0cc607 | ||
|
|
e0a86eaea6 | ||
|
|
044d7322fe | ||
|
|
2aa3be71e7 | ||
|
|
80576de0eb | ||
|
|
f21ac7025d | ||
|
|
d94c536944 | ||
|
|
243e255f9c | ||
|
|
52978d971a | ||
|
|
4eca2eee02 | ||
|
|
74ac281ade | ||
|
|
3867a5aaff | ||
|
|
914c12a485 | ||
|
|
e5e526e9cd | ||
|
|
29204f02ef | ||
|
|
5667daa6c3 | ||
|
|
d6299779a3 | ||
|
|
f1112c17a1 | ||
|
|
f8efbc6271 | ||
|
|
af9a6cf3a6 | ||
|
|
c82a60213c | ||
|
|
565c595356 | ||
|
|
48b1c42c01 | ||
|
|
2ef760dc35 | ||
|
|
171f97cd91 | ||
|
|
26ef3d6382 | ||
|
|
76f71ebd8d | ||
|
|
48e5641c30 | ||
|
|
16f8f7a6cb | ||
|
|
8e7c59e662 | ||
|
|
90eb9f1eee | ||
|
|
db4bbbf73d | ||
|
|
ce02830f78 | ||
|
|
38c1ea2dcd | ||
|
|
3d5695eecb | ||
|
|
cdd428010e | ||
|
|
c31e7b0a2e | ||
|
|
f5c6a24882 | ||
|
|
01f8b4f3ca | ||
|
|
c9b2eafb41 | ||
|
|
5f02dba532 | ||
|
|
3de30c2ee6 | ||
|
|
de0a8d9407 | ||
|
|
e9eb5456c9 | ||
|
|
2bfdb177b4 | ||
|
|
f3552b87a8 | ||
|
|
aaca8873ec | ||
|
|
fc992b0447 | ||
|
|
f041028637 | ||
|
|
4be6259036 | ||
|
|
573c3c1321 | ||
|
|
8485fc2faa | ||
|
|
c1e72005e3 | ||
|
|
4c7d5de185 | ||
|
|
120286f013 | ||
|
|
b5894314c7 | ||
|
|
673675ae3f | ||
|
|
d5afcbde86 | ||
|
|
0aa75dfc43 | ||
|
|
34f5d4a633 | ||
|
|
56ff94d631 | ||
|
|
e15d009100 | ||
|
|
d8591e9a52 | ||
|
|
7eb1805c23 | ||
|
|
302bc294b3 | ||
|
|
16052a15b9 | ||
|
|
f7b38e5edb | ||
|
|
bd71af446f | ||
|
|
d8aea53885 | ||
|
|
7eb7262710 | ||
|
|
e0e30a14d7 | ||
|
|
9a02966e57 | ||
|
|
bf634411cd | ||
|
|
fb110ba595 | ||
|
|
4cbba5576d | ||
|
|
5956df575b | ||
|
|
6ea8e3c98a | ||
|
|
6d1acb4b83 | ||
|
|
a35570e126 | ||
|
|
0e4969142e | ||
|
|
87a28522cd | ||
|
|
ed9ac88294 | ||
|
|
4db8ee7b77 | ||
|
|
c01957859f | ||
|
|
0d4309e67d | ||
|
|
a2a330e794 | ||
|
|
fa6b0bb243 | ||
|
|
5ac678cd78 | ||
|
|
1b95ba84a2 | ||
|
|
936dbe8df9 | ||
|
|
ab385634d8 | ||
|
|
e337f1ca64 | ||
|
|
21a5ffb0e1 | ||
|
|
d8b8191149 | ||
|
|
78a281fe7f | ||
|
|
75b322e451 | ||
|
|
eddf0cd2ba | ||
|
|
6b30a83554 | ||
|
|
26ac3f1f3e | ||
|
|
129f85814b | ||
|
|
96d3946f41 | ||
|
|
11f5458b55 | ||
|
|
1114a96095 | ||
|
|
420c23ed0a | ||
|
|
0f51fab26c | ||
|
|
e38a3802c9 | ||
|
|
712b805924 | ||
|
|
033fb97b5f | ||
|
|
876f7c125d | ||
|
|
ea76365d5b | ||
|
|
7b313ac315 | ||
|
|
a84d7ba9b3 | ||
|
|
ed2390213e | ||
|
|
07845d209a | ||
|
|
fa5ba848b3 | ||
|
|
acb907fac5 | ||
|
|
bdbe2d95ea | ||
|
|
e049c1b38f | ||
|
|
5bc46402ea | ||
|
|
3de933198a | ||
|
|
5ce66573f0 | ||
|
|
b12d5ae48f | ||
|
|
c02caf36e3 | ||
|
|
002de92e7e | ||
|
|
058b898fe4 | ||
|
|
c82087b8a9 | ||
|
|
33fd19eabf | ||
|
|
a28ba1b26d |
222
.github/README.md
vendored
Normal file
222
.github/README.md
vendored
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
[](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 |
|
||||||
|
|-------------|---------------------------------------------------------------------------------------------------------|---------------|
|
||||||
|
| 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.1 | [17.0.10-b1207.12](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.10b1207.12)| 19-Mar-2024 |
|
||||||
|
| 2023.3 | [17.0.10-b1087.23](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.10b1087.23) | 20-Mar-2024|
|
||||||
|
| 2023.2 | [17.0.10-b1000.50](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.10b1000.50) | 20-Mar-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)
|
||||||
|
Create a container:
|
||||||
|
```
|
||||||
|
$ cd jb/project/docker
|
||||||
|
$ docker build .
|
||||||
|
...
|
||||||
|
Successfully built 942ea9900054
|
||||||
|
```
|
||||||
|
Run these commands in the new container:
|
||||||
|
```
|
||||||
|
$ docker run -v `pwd`../../../../:/JetBrainsRuntime -it 942ea9900054
|
||||||
|
# cd /JetBrainsRuntime
|
||||||
|
# sh ./configure
|
||||||
|
# make images CONF=linux-x86_64-normal-server-release
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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
|
||||||
|
```
|
||||||
|
Get Java 21 (for instance, [Azul Zulu Builds of OpenJDK 21](https://www.azul.com/downloads/?version=java-21-lts&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/`.
|
||||||
|
|
||||||
|
### 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/).
|
||||||
4
.github/workflows/main.yml
vendored
4
.github/workflows/main.yml
vendored
@@ -31,6 +31,7 @@ on:
|
|||||||
- master
|
- master
|
||||||
- pr/*
|
- pr/*
|
||||||
- jdk*
|
- jdk*
|
||||||
|
- main
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
platforms:
|
platforms:
|
||||||
@@ -60,7 +61,8 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
linux-x64: ${{ steps.include.outputs.linux-x64 }}
|
linux-x64: ${{ steps.include.outputs.linux-x64 }}
|
||||||
linux-x86: ${{ steps.include.outputs.linux-x86 }}
|
linux-x86: ${{ steps.include.outputs.linux-x86 }}
|
||||||
linux-x64-variants: ${{ steps.include.outputs.linux-x64-variants }}
|
# additional build options for linux-x64 are disabled
|
||||||
|
# linux-x64-variants: ${{ steps.include.outputs.linux-x64-variants }}
|
||||||
linux-cross-compile: ${{ steps.include.outputs.linux-cross-compile }}
|
linux-cross-compile: ${{ steps.include.outputs.linux-cross-compile }}
|
||||||
macos-x64: ${{ steps.include.outputs.macos-x64 }}
|
macos-x64: ${{ steps.include.outputs.macos-x64 }}
|
||||||
macos-aarch64: ${{ steps.include.outputs.macos-aarch64 }}
|
macos-aarch64: ${{ steps.include.outputs.macos-aarch64 }}
|
||||||
|
|||||||
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
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
[](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
|
||||||
|
|||||||
294
bin/idea.sh
294
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,31 +123,31 @@ 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 -f "$IDEA_MAKE/idea.gmk" -I $MAKE_DIR/.. idea MAKEOVERRIDES= OUT=$IDEA_OUTPUT/env.cfg MODULES="$*" $CONF_ARG || exit 1
|
cd $TOP ; make -f "$IDEA_MAKE/idea.gmk" -I "$OPENJDK_DIR" idea TOPLEVEL_DIR="$TOPLEVEL_DIR" \
|
||||||
|
MAKEOVERRIDES= IDEA_OUTPUT_PARENT="$IDEA_OUTPUT_PARENT" OUT="$IDEA_OUTPUT/env.cfg" 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
|
||||||
@@ -129,6 +158,43 @@ if [ -d "$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
|
||||||
@@ -152,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
|
fi
|
||||||
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
|
|
||||||
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()
|
||||||
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()
|
||||||
57
jb/project/docker/Dockerfile-jbrTest
Normal file
57
jb/project/docker/Dockerfile-jbrTest
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# NOTE: This Dockerfile is meant to be used from the mkdocker_jbrtest.sh script.
|
||||||
|
|
||||||
|
# Pull a concrete version of Linux that does NOT recieve updates after it's
|
||||||
|
# been created. This is so that the image is as stable as possible to make
|
||||||
|
# image creation reproducible.
|
||||||
|
# NB: this also means there may be no security-related fixes there, need to
|
||||||
|
# move the version to the next manually.
|
||||||
|
|
||||||
|
ARG ARCH_FROM
|
||||||
|
ARG ARCH=i386
|
||||||
|
ARG OS_NAME
|
||||||
|
ARG OS_VERSION
|
||||||
|
|
||||||
|
# jetbrains/runtime:jbrTest_${os_name}${os_version}-$arch
|
||||||
|
FROM ${ARCH_FROM}/${OS_NAME}:${OS_VERSION}
|
||||||
|
|
||||||
|
COPY jbr-11_0_16-linux-x86-b2043.64.tar.gz /jbr/
|
||||||
|
ARG ARCH
|
||||||
|
RUN \
|
||||||
|
if [ "$ARCH" = "i386" ]; then \
|
||||||
|
# Set up boot JDK for building
|
||||||
|
cd /jbr && \
|
||||||
|
tar --strip-components=1 -xzf jbr-11_0_16-linux-x86-b2043.64.tar.gz && \
|
||||||
|
rm jbr-11_0_16-linux-x86-b2043.64.tar.gz; \
|
||||||
|
echo Installing packages required for i386 only; \
|
||||||
|
dpkg --add-architecture i386; \
|
||||||
|
apt-get update -y; \
|
||||||
|
apt-get install -y \
|
||||||
|
libc6:i386 \
|
||||||
|
libncurses5 libncurses5:i386 \
|
||||||
|
libstdc++6:i386 \
|
||||||
|
zlib1g:i386; \
|
||||||
|
else \
|
||||||
|
echo Skipping the step installing packages specific for the platform; \
|
||||||
|
fi; \
|
||||||
|
apt-get update -y; \
|
||||||
|
apt-get install -y \
|
||||||
|
binutils:${ARCH} \
|
||||||
|
libcanberra-gtk-module:${ARCH} \
|
||||||
|
libgtk2.0-0:${ARCH} \
|
||||||
|
libxext6:${ARCH} \
|
||||||
|
libxi6:${ARCH} \
|
||||||
|
libxrender-dev:${ARCH} \
|
||||||
|
libxtst6:${ARCH} \
|
||||||
|
libxrandr2:${ARCH} \
|
||||||
|
libfreetype6:${ARCH} \
|
||||||
|
fontconfig:${ARCH} \
|
||||||
|
libnss3:${ARCH} \
|
||||||
|
libatk-bridge2.0-0:${ARCH} \
|
||||||
|
libgbm1:${ARCH} \
|
||||||
|
libxkbcommon0:${ARCH} \
|
||||||
|
libasound2:${ARCH};\
|
||||||
|
apt-get clean all
|
||||||
|
|
||||||
|
ENV JAVA_HOME=/jbr
|
||||||
|
ENV DISPLAY=:0
|
||||||
|
|
||||||
35
jb/project/docker/Dockerfile-jbrTest.musl
Normal file
35
jb/project/docker/Dockerfile-jbrTest.musl
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# NOTE: This Dockerfile is meant to be used from the mkdocker_jbrtest.sh script.
|
||||||
|
|
||||||
|
# Pull a concrete version of Linux that does NOT recieve updates after it's
|
||||||
|
# been created. This is so that the image is as stable as possible to make
|
||||||
|
# image creation reproducible.
|
||||||
|
# NB: this also means there may be no security-related fixes there, need to
|
||||||
|
# move the version to the next manually.
|
||||||
|
|
||||||
|
ARG ARCH_FROM
|
||||||
|
ARG ARCH=i386
|
||||||
|
ARG OS_NAME
|
||||||
|
ARG OS_VERSION
|
||||||
|
|
||||||
|
# jetbrains/runtime:jbrTest_${os_name}${os_version}-$arch
|
||||||
|
FROM ${ARCH_FROM}/${OS_NAME}:${OS_VERSION}
|
||||||
|
#FROM arm64v8/alpine:3.12
|
||||||
|
|
||||||
|
ARG ARCH
|
||||||
|
RUN \
|
||||||
|
apk --no-cache add --update \
|
||||||
|
binutils=2.34-r2 \
|
||||||
|
libcanberra-gtk2=0.30-r5 \
|
||||||
|
gtk+2.0=2.24.32-r1 \
|
||||||
|
libxext=1.3.4-r0 \
|
||||||
|
libxrender-dev=0.9.10-r3 \
|
||||||
|
libxtst=1.2.3-r3 \
|
||||||
|
freetype=2.10.4-r2 \
|
||||||
|
fontconfig=2.13.1-r2 \
|
||||||
|
font-xfree86-type1=1.0.4-r0
|
||||||
|
|
||||||
|
COPY jbrsdk_17.tar.gz /jdk17/
|
||||||
|
RUN cd /jdk17 && tar --strip-components=1 -xzf jbrsdk_17.tar.gz && rm /jdk17/jbrsdk_17.tar.gz
|
||||||
|
|
||||||
|
ENV JAVA_HOME=/jdk17
|
||||||
|
ENV DISPLAY=:0
|
||||||
46
jb/project/docker/Dockerfile.aarch64
Normal file
46
jb/project/docker/Dockerfile.aarch64
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# NOTE: This Dockerfile is meant to be used from the mkdocker_aarch64.sh script.
|
||||||
|
|
||||||
|
# Pull a concrete version of Linux that does NOT recieve updates after it's
|
||||||
|
# been created. This is so that the image is as stable as possible to make
|
||||||
|
# image creation reproducible.
|
||||||
|
# NB: this also means there may be no security-related fixes there, need to
|
||||||
|
# move the version to the next manually.
|
||||||
|
|
||||||
|
# jetbrains/runtime:jbr17env_aarch64
|
||||||
|
FROM arm64v8/centos:7
|
||||||
|
|
||||||
|
# Install the necessary build tools
|
||||||
|
RUN yum -y update; \
|
||||||
|
yum -y install centos-release-scl; \
|
||||||
|
yum -y install devtoolset-10-10.1-0.el7; \
|
||||||
|
yum -y install \
|
||||||
|
alsa-lib-devel-1.1.8-1.el7.aarch64 \
|
||||||
|
autoconf-2.69-11.el7.noarch \
|
||||||
|
automake-1.13.4-3.el7.noarch \
|
||||||
|
bzip2-1.0.6-13.el7.aarch64 \
|
||||||
|
cups-devel-1.6.3-51.el7.aarch64 \
|
||||||
|
file-5.11-37.el7.aarch64 \
|
||||||
|
fontconfig-devel-2.13.0-4.3.el7.aarch64 \
|
||||||
|
freetype-devel-2.8-14.el7_9.1.aarch64 \
|
||||||
|
giflib-devel-4.1.6-9.el7.aarch64 \
|
||||||
|
git-1.8.3.1-24.el7_9.aarch64 \
|
||||||
|
libtool-2.4.2-22.el7_3.aarch64 \
|
||||||
|
libXi-devel-1.7.9-1.el7.aarch64 \
|
||||||
|
libXrandr-devel-1.5.1-2.el7.aarch64 \
|
||||||
|
libXrender-devel-0.9.10-1.el7.aarch64 \
|
||||||
|
libXt-devel-1.1.5-3.el7.aarch64 \
|
||||||
|
libXtst-devel-1.2.3-1.el7.aarch64 \
|
||||||
|
make-3.82-24.el7.aarch64 \
|
||||||
|
rsync-3.1.2-12.el7_9.aarch64 \
|
||||||
|
tar-1.26-35.el7.aarch64 \
|
||||||
|
unzip-6.0-24.el7_9.aarch64 \
|
||||||
|
wayland-devel-1.15.0-1.el7 \
|
||||||
|
zip-3.0-11.el7.aarch64; \
|
||||||
|
yum -y clean all
|
||||||
|
|
||||||
|
ENV PATH="/opt/rh/devtoolset-10/root/usr/bin:${PATH}"
|
||||||
|
ENV LD_LIBRARY_PATH="/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/rh/devtoolset-10/root/usr/lib/dyninst:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib"
|
||||||
|
ENV PKG_CONFIG_PATH="/opt/rh/devtoolset-10/root/usr/lib64/pkgconfig"
|
||||||
|
|
||||||
|
RUN git config --global user.email "teamcity@jetbrains.com" && \
|
||||||
|
git config --global user.name "builduser"
|
||||||
22
jb/project/docker/Dockerfile.musl_aarch64
Normal file
22
jb/project/docker/Dockerfile.musl_aarch64
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# NOTE: This Dockerfile is meant to be used from the mkdocker_musl_aarch64.sh script.
|
||||||
|
|
||||||
|
# Pull a concrete version of Linux that does NOT recieve updates after it's
|
||||||
|
# been created. This is so that the image is as stable as possible to make
|
||||||
|
# image creation reproducible.
|
||||||
|
# NB: this also means there may be no security-related fixes there, need to
|
||||||
|
# move the version to the next manually.
|
||||||
|
FROM arm64v8/alpine:3.12
|
||||||
|
|
||||||
|
# Install the necessary build tools
|
||||||
|
RUN apk --no-cache add --update bash grep tar zip bzip2 rsync fontconfig build-base \
|
||||||
|
git libx11-dev libxext-dev libxrandr-dev libxrender-dev libxt-dev \
|
||||||
|
libxtst-dev autoconf freetype-dev cups-dev alsa-lib-dev file \
|
||||||
|
fontconfig fontconfig-dev linux-headers
|
||||||
|
|
||||||
|
# Set up boot JDK for building
|
||||||
|
COPY boot_jdk_musl_aarch64.tar.gz /jdk17/
|
||||||
|
RUN cd /jdk17 && tar --strip-components=1 -xzf boot_jdk_musl_aarch64.tar.gz && rm /jdk17/boot_jdk_musl_aarch64.tar.gz
|
||||||
|
ENV BOOT_JDK=/jdk17
|
||||||
|
|
||||||
|
RUN git config --global user.email "teamcity@jetbrains.com" && \
|
||||||
|
git config --global user.name "builduser"
|
||||||
22
jb/project/docker/Dockerfile.musl_x64
Normal file
22
jb/project/docker/Dockerfile.musl_x64
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# NOTE: This Dockerfile is meant to be used from the mkdocker_musl_x64.sh script.
|
||||||
|
|
||||||
|
# Pull a concrete version of Linux that does NOT recieve updates after it's
|
||||||
|
# been created. This is so that the image is as stable as possible to make
|
||||||
|
# image creation reproducible.
|
||||||
|
# NB: this also means there may be no security-related fixes there, need to
|
||||||
|
# move the version to the next manually.
|
||||||
|
FROM alpine:3.14
|
||||||
|
|
||||||
|
# Install the necessary build tools
|
||||||
|
RUN apk --no-cache add --update bash grep tar zip bzip2 rsync fontconfig build-base \
|
||||||
|
git libx11-dev libxext-dev libxrandr-dev libxrender-dev libxt-dev \
|
||||||
|
libxtst-dev autoconf freetype-dev cups-dev alsa-lib-dev file \
|
||||||
|
fontconfig fontconfig-dev linux-headers
|
||||||
|
|
||||||
|
# Set up boot JDK for building
|
||||||
|
COPY boot_jdk_musl_amd64.tar.gz /jdk17/
|
||||||
|
RUN cd /jdk17 && tar --strip-components=1 -xzf boot_jdk_musl_amd64.tar.gz && rm /jdk17/boot_jdk_musl_amd64.tar.gz
|
||||||
|
ENV BOOT_JDK=/jdk17
|
||||||
|
|
||||||
|
RUN git config --global user.email "teamcity@jetbrains.com" && \
|
||||||
|
git config --global user.name "builduser"
|
||||||
55
jb/project/docker/Dockerfile.x86
Normal file
55
jb/project/docker/Dockerfile.x86
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# NOTE: This Dockerfile is meant to be used from the mkdocker_x86.sh script.
|
||||||
|
|
||||||
|
# Pull a concrete version of Linux that does NOT receive updates after it's
|
||||||
|
# been created. This is so that the image is as stable as possible to make
|
||||||
|
# image creation reproducible.
|
||||||
|
# NB: this also means there may be no security-related fixes there, need to
|
||||||
|
# move the version to the next manually.
|
||||||
|
#FROM i386/ubuntu:xenial
|
||||||
|
#FROM i386/ubuntu:bionic
|
||||||
|
FROM i386/ubuntu:focal
|
||||||
|
|
||||||
|
RUN linux32 \
|
||||||
|
apt-get update && apt-get install -y --no-install-recommends apt-utils
|
||||||
|
RUN export DEBIAN_FRONTEND=noninteractive \
|
||||||
|
export DEBCONF_NONINTERACTIVE_SEEN=true && \
|
||||||
|
echo 'tzdata tzdata/Areas select Etc' | debconf-set-selections; \
|
||||||
|
echo 'tzdata tzdata/Zones/Etc select UTC' | debconf-set-selections; \
|
||||||
|
linux32 \
|
||||||
|
apt-get -y install \
|
||||||
|
autoconf \
|
||||||
|
build-essential \
|
||||||
|
curl \
|
||||||
|
file \
|
||||||
|
git \
|
||||||
|
libx11-dev \
|
||||||
|
libxext-dev \
|
||||||
|
libxrender-dev \
|
||||||
|
libxrandr-dev \
|
||||||
|
libxtst-dev \
|
||||||
|
libxt-dev \
|
||||||
|
libcups2-dev \
|
||||||
|
libasound2-data \
|
||||||
|
# libpng12-0 \
|
||||||
|
libasound2 \
|
||||||
|
libfreetype6 \
|
||||||
|
libfontconfig1-dev \
|
||||||
|
libasound2-dev \
|
||||||
|
rsync \
|
||||||
|
unzip \
|
||||||
|
zip
|
||||||
|
RUN linux32 \
|
||||||
|
apt-get -y install \
|
||||||
|
g++-10 \
|
||||||
|
gcc-10 && \
|
||||||
|
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 && \
|
||||||
|
apt-get clean -qy && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# Set up boot JDK for building
|
||||||
|
COPY boot_jdk_x86.tar.gz /jdk17/
|
||||||
|
RUN cd /jdk17 && tar --strip-components=1 -xzf boot_jdk_x86.tar.gz && rm /jdk17/boot_jdk_x86.tar.gz
|
||||||
|
ENV BOOT_JDK=/jdk17
|
||||||
|
|
||||||
|
RUN git config --global user.email "teamcity@jetbrains.com" && \
|
||||||
|
git config --global user.name "builduser"
|
||||||
36
jb/project/docker/Dockerfile.x86_64
Normal file
36
jb/project/docker/Dockerfile.x86_64
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# jetbrains/runtime:jbr17env_x86_64
|
||||||
|
FROM centos:7
|
||||||
|
RUN yum -y install centos-release-scl; \
|
||||||
|
yum -y install devtoolset-10-10.1-0.el7; \
|
||||||
|
yum -y install \
|
||||||
|
alsa-lib-devel-1.1.8-1.el7 \
|
||||||
|
autoconf-2.69-11.el7 \
|
||||||
|
automake-1.13.4-3.el7 \
|
||||||
|
bzip2-1.0.6-13.el7 \
|
||||||
|
cups-devel-1.6.3-51.el7 \
|
||||||
|
file-5.11-37.el7 \
|
||||||
|
fontconfig-devel-2.13.0-4.3.el7 \
|
||||||
|
freetype-devel-2.8-14.el7_9.1 \
|
||||||
|
giflib-devel-4.1.6-9.el7 \
|
||||||
|
git-1.8.3.1-24.el7_9 \
|
||||||
|
libtool-2.4.2-22.el7_3 \
|
||||||
|
libXi-devel-1.7.9-1.el7 \
|
||||||
|
libXrandr-devel-1.5.1-2.el7 \
|
||||||
|
libXrender-devel-0.9.10-1.el7 \
|
||||||
|
libXt-devel-1.1.5-3.el7 \
|
||||||
|
libXtst-devel-1.2.3-1.el7 \
|
||||||
|
make-3.82-24.el7 \
|
||||||
|
tar-1.26-35.el7 \
|
||||||
|
unzip-6.0-24.el7_9 \
|
||||||
|
wayland-devel-1.15.0-1.el7 \
|
||||||
|
wget-1.14-18.el7_6.1 \
|
||||||
|
which-2.20-7.el7 \
|
||||||
|
zip-3.0-11.el7
|
||||||
|
|
||||||
|
RUN mkdir .git && \
|
||||||
|
git config user.email "teamcity@jetbrains.com" && \
|
||||||
|
git config user.name "builduser"
|
||||||
|
|
||||||
|
ENV LD_LIBRARY_PATH="/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/rh/devtoolset-10/root/usr/lib/dyninst:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib"
|
||||||
|
ENV PATH="/opt/rh/devtoolset-10/root/usr/bin::${PATH}"
|
||||||
|
ENV PKG_CONFIG_PATH="/opt/rh/devtoolset-10/root/usr/lib64/pkgconfig"
|
||||||
29
jb/project/docker/mkdocker_aarch64.sh
Executable file
29
jb/project/docker/mkdocker_aarch64.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# This script creates a Docker image suitable for building AArch64 variant
|
||||||
|
# of the JetBrains Runtime "dev" version.
|
||||||
|
|
||||||
|
BOOT_JDK_REMOTE_FILE=zulu17.30.15-ca-jdk17.0.1-linux_aarch64.tar.gz
|
||||||
|
BOOT_JDK_SHA=4d9c9116eb0cdd2d7fb220d6d27059f4bf1b7e95cc93d5512bd8ce3791af86c7
|
||||||
|
BOOT_JDK_LOCAL_FILE=boot_jdk.tar.gz
|
||||||
|
|
||||||
|
if [ ! -f $BOOT_JDK_LOCAL_FILE ]; then
|
||||||
|
# Obtain "boot JDK" from outside of the container.
|
||||||
|
wget -nc https://cdn.azul.com/zulu/bin/${BOOT_JDK_REMOTE_FILE} -O $BOOT_JDK_LOCAL_FILE
|
||||||
|
else
|
||||||
|
echo "boot JDK \"$BOOT_JDK_LOCAL_FILE\" present, skipping download"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify that what we've downloaded can be trusted.
|
||||||
|
sha256sum -c - <<EOF
|
||||||
|
$BOOT_JDK_SHA *$BOOT_JDK_LOCAL_FILE
|
||||||
|
EOF
|
||||||
|
|
||||||
|
docker build -t jbrdevenv_arm64v8 -f Dockerfile.aarch64 .
|
||||||
|
|
||||||
|
# NB: the resulting container can (and should) be used without the network
|
||||||
|
# connection (--network none) during build in order to reduce the chance
|
||||||
|
# of build contamination.
|
||||||
70
jb/project/docker/mkdocker_jbrtest.sh
Executable file
70
jb/project/docker/mkdocker_jbrtest.sh
Executable file
@@ -0,0 +1,70 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
machine=$(uname -m)
|
||||||
|
|
||||||
|
echo "Building image for "$machine" arch"
|
||||||
|
|
||||||
|
case "$machine" in
|
||||||
|
"aarch64" | "arm64v8" | "arm64")
|
||||||
|
arch=arm64
|
||||||
|
arch_from=arm64v8
|
||||||
|
;;
|
||||||
|
"x86_64" | "amd64")
|
||||||
|
arch=amd64
|
||||||
|
arch_from=amd64
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
# This script creates Docker images for testing JBR executables
|
||||||
|
|
||||||
|
|
||||||
|
function build {
|
||||||
|
local arch=$1
|
||||||
|
local os_name=$2
|
||||||
|
local os_version=$3
|
||||||
|
local arch_from=${4:-$arch}
|
||||||
|
|
||||||
|
echo "Building image for ${os_name} ${os_version} ${arch}"
|
||||||
|
echo "====================================="
|
||||||
|
|
||||||
|
docker build -t jetbrains/runtime:jbrTest_${os_name}${os_version}-$arch \
|
||||||
|
--build-arg ARCH="$arch" \
|
||||||
|
--build-arg ARCH_FROM=$arch_from \
|
||||||
|
--build-arg OS_NAME=${os_name} \
|
||||||
|
--build-arg OS_VERSION="${os_version}" \
|
||||||
|
-f Dockerfile-jbrTest .
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function downloadJBR {
|
||||||
|
JBR_REMOTE_FILE=jbr-11_0_16-linux-x86-b2043.64.tar.gz
|
||||||
|
JBR_SHA=d3e4d488bb8e0edf4fa0832a4ff5b5dcac69e646640ae06afb1b49e419536762
|
||||||
|
JBR_LOCAL_FILE=$JBR_REMOTE_FILE
|
||||||
|
|
||||||
|
if [ ! -f $JBR_LOCAL_FILE ]; then
|
||||||
|
# Obtain "JBR" from outside of the container.
|
||||||
|
curl -o $JBR_LOCAL_FILE https://cache-redirector.jetbrains.com/intellij-jbr/${JBR_REMOTE_FILE} -O
|
||||||
|
else
|
||||||
|
echo "Runtime \"$JBR_LOCAL_FILE\" present, skipping download"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify that what we've downloaded can be trusted.
|
||||||
|
sha256sum -c - <<EOF
|
||||||
|
$JBR_SHA *$JBR_LOCAL_FILE
|
||||||
|
EOF
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
build $arch "ubuntu" "20.04" ${arch_from}
|
||||||
|
if [ "$arch" == "amd64" ]; then
|
||||||
|
downloadJBR
|
||||||
|
build "i386" "ubuntu" "20.04" $arch
|
||||||
|
fi
|
||||||
|
build $arch "ubuntu" "22.04" ${arch_from}
|
||||||
76
jb/project/docker/mkdocker_jbrtest_musl.sh
Executable file
76
jb/project/docker/mkdocker_jbrtest_musl.sh
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
machine=$(uname -m)
|
||||||
|
|
||||||
|
echo "Building image for "$machine" arch"
|
||||||
|
|
||||||
|
case "$machine" in
|
||||||
|
"aarch64" | "arm64v8" | "arm64")
|
||||||
|
arch=arm64
|
||||||
|
arch_from=arm64v8
|
||||||
|
os_version_alpine="3.12"
|
||||||
|
;;
|
||||||
|
"x86_64" | "amd64")
|
||||||
|
arch=amd64
|
||||||
|
arch_from=amd64
|
||||||
|
os_version_alpine="3.12"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
# This script creates Docker images for testing JBR executables
|
||||||
|
|
||||||
|
|
||||||
|
function build {
|
||||||
|
local arch=$1
|
||||||
|
local os_name=$2
|
||||||
|
local os_version=$3
|
||||||
|
local arch_from=${4:-$arch}
|
||||||
|
|
||||||
|
echo "Building image for ${os_name} ${os_version} ${arch}"
|
||||||
|
echo "====================================="
|
||||||
|
|
||||||
|
docker build -t jetbrains/runtime:jbrTest_${os_name}${os_version}-$arch \
|
||||||
|
--build-arg ARCH="$arch" \
|
||||||
|
--build-arg ARCH_FROM=$arch_from \
|
||||||
|
--build-arg OS_NAME=${os_name} \
|
||||||
|
--build-arg OS_VERSION="${os_version}" \
|
||||||
|
-f Dockerfile-jbrTest.musl .
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function downloadJBR {
|
||||||
|
JBR_REMOTE_FILE=$1
|
||||||
|
JBR_SHA=$2
|
||||||
|
JBR_LOCAL_FILE=jbrsdk_17.tar.gz
|
||||||
|
|
||||||
|
if [ ! -f $JBR_REMOTE_FILE ]; then
|
||||||
|
# Obtain "JBR" from outside of the container.
|
||||||
|
wget -nc https://cache-redirector.jetbrains.com/intellij-jbr/${JBR_REMOTE_FILE} -O $JBR_REMOTE_FILE
|
||||||
|
# Verify that what we've downloaded can be trusted.
|
||||||
|
# sha256sum -c - <<EOF
|
||||||
|
#$JBR_SHA *$JBR_LOCAL_FILE
|
||||||
|
#EOF
|
||||||
|
cp $JBR_REMOTE_FILE $JBR_LOCAL_FILE
|
||||||
|
else
|
||||||
|
echo "Runtime \"$JBR_LOCAL_FILE\" present, skipping download"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$arch" == "amd64" ]; then
|
||||||
|
JBR_REMOTE_FILE=jbrsdk-17.0.10-linux-musl-x64-b1087.23.tar.gz
|
||||||
|
JBR_SHA=4424739563c8735e81972a651b6f6851b2c835c6a9d192385b3dc934eecfae86e0a6e853fcea9b2353e71a576c7ff029e5a6836c6d9b7cd98d1c23b42763fd3e
|
||||||
|
else
|
||||||
|
JBR_REMOTE_FILE=jbrsdk-17.0.10-linux-musl-aarch64-b1087.23.tar.gz
|
||||||
|
JBR_SHA=936668fd2c7375fa7e728dcf7988eb36f4ea886b95782cd84cb129585c7bec5de5e94072b0c24817b1ec1873b058b6d30c09edf7d1789e031121a7737b687c4f
|
||||||
|
fi
|
||||||
|
downloadJBR $JBR_REMOTE_FILE $JBR_SHA
|
||||||
|
|
||||||
|
build $arch "alpine" ${os_version_alpine} ${arch_from}
|
||||||
29
jb/project/docker/mkdocker_musl_aarch64.sh
Executable file
29
jb/project/docker/mkdocker_musl_aarch64.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# This script creates a Docker image suitable for building musl AArch64 variant
|
||||||
|
# of the JetBrains Runtime version 17.
|
||||||
|
|
||||||
|
BOOT_JDK_REMOTE_FILE=zulu17.32.13-ca-jdk17.0.2-linux_musl_aarch64.tar.gz
|
||||||
|
BOOT_JDK_SHA=6b920559abafbe9bdef386a20ecf3a2f318bc1f0d8359eb1f95aee26606bbc70
|
||||||
|
BOOT_JDK_LOCAL_FILE=boot_jdk_musl_aarch64.tar.gz
|
||||||
|
|
||||||
|
if [ ! -f $BOOT_JDK_LOCAL_FILE ]; then
|
||||||
|
# Obtain "boot JDK" from outside of the container.
|
||||||
|
wget -nc https://cdn.azul.com/zulu/bin/${BOOT_JDK_REMOTE_FILE} -O $BOOT_JDK_LOCAL_FILE
|
||||||
|
else
|
||||||
|
echo "boot JDK \"$BOOT_JDK_LOCAL_FILE\" present, skipping download"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify that what we've downloaded can be trusted.
|
||||||
|
sha256sum -c - <<EOF
|
||||||
|
$BOOT_JDK_SHA *$BOOT_JDK_LOCAL_FILE
|
||||||
|
EOF
|
||||||
|
|
||||||
|
docker build -t jbr17buildenv -f Dockerfile.musl_aarch64 .
|
||||||
|
|
||||||
|
# NB: the resulting container can (and should) be used without the network
|
||||||
|
# connection (--network none) during build in order to reduce the chance
|
||||||
|
# of build contamination.
|
||||||
29
jb/project/docker/mkdocker_musl_x64.sh
Executable file
29
jb/project/docker/mkdocker_musl_x64.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# This script creates a Docker image suitable for building musl-x64 variant
|
||||||
|
# of the JetBrains Runtime version 17.
|
||||||
|
|
||||||
|
BOOT_JDK_REMOTE_FILE=zulu17.32.13-ca-jdk17.0.2-linux_musl_x64.tar.gz
|
||||||
|
BOOT_JDK_SHA=bcc5342011bd9f3643372aadbdfa68d47463ff0d8621668a0bdf2910614d95c6
|
||||||
|
BOOT_JDK_LOCAL_FILE=boot_jdk_musl_amd64.tar.gz
|
||||||
|
|
||||||
|
if [ ! -f $BOOT_JDK_LOCAL_FILE ]; then
|
||||||
|
# Obtain "boot JDK" from outside of the container.
|
||||||
|
wget -nc https://cdn.azul.com/zulu/bin/${BOOT_JDK_REMOTE_FILE} -O $BOOT_JDK_LOCAL_FILE
|
||||||
|
else
|
||||||
|
echo "boot JDK \"$BOOT_JDK_LOCAL_FILE\" present, skipping download"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify that what we've downloaded can be trusted.
|
||||||
|
sha256sum -c - <<EOF
|
||||||
|
$BOOT_JDK_SHA *$BOOT_JDK_LOCAL_FILE
|
||||||
|
EOF
|
||||||
|
|
||||||
|
docker build -t jbr17buildenv -f Dockerfile.musl_x64 .
|
||||||
|
|
||||||
|
# NB: the resulting container can (and should) be used without the network
|
||||||
|
# connection (--network none) during build in order to reduce the chance
|
||||||
|
# of build contamination.
|
||||||
26
jb/project/docker/mkdocker_x86.sh
Executable file
26
jb/project/docker/mkdocker_x86.sh
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
# This script creates a Docker image suitable for building x86 variant
|
||||||
|
# of the JetBrains Runtime version 17.
|
||||||
|
|
||||||
|
BOOT_JDK_REMOTE_FILE=zulu17.34.19-ca-jdk17.0.3-linux_i686.tar.gz
|
||||||
|
BOOT_JDK_SHA=1c35c374ba0001e675d6e80819d5be900c4e141636d5e484992a8c550be14481
|
||||||
|
BOOT_JDK_LOCAL_FILE=boot_jdk_x86.tar.gz
|
||||||
|
|
||||||
|
if [ ! -f $BOOT_JDK_LOCAL_FILE ]; then
|
||||||
|
# Obtain "boot JDK" from outside of the container.
|
||||||
|
wget -nc https://cdn.azul.com/zulu/bin/${BOOT_JDK_REMOTE_FILE} -O $BOOT_JDK_LOCAL_FILE
|
||||||
|
else
|
||||||
|
echo "boot JDK \"$BOOT_JDK_LOCAL_FILE\" present, skipping download"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify that what we've downloaded can be trusted.
|
||||||
|
sha256sum -c - <<EOF
|
||||||
|
$BOOT_JDK_SHA *$BOOT_JDK_LOCAL_FILE
|
||||||
|
EOF
|
||||||
|
|
||||||
|
docker build -t jetbrains/runtime:jbr17env_x86 -f Dockerfile.x86 .
|
||||||
|
|
||||||
|
# NB: the resulting container can (and should) be used without the network
|
||||||
|
# connection (--network none) during build in order to reduce the chance
|
||||||
|
# of build contamination.
|
||||||
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>
|
||||||
13
jb/project/idea-project-files/jetbrains.api.iml
Normal file
13
jb/project/idea-project-files/jetbrains.api.iml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$/src/jetbrains.api">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/jetbrains.api/src" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/jetbrains.api/templates" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
|
|
||||||
12
jb/project/idea-project-files/modules.xml
Normal file
12
jb/project/idea-project-files/modules.xml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?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/jetbrains.api.iml" filepath="$PROJECT_DIR$/.idea/jetbrains.api.iml" />
|
||||||
|
<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
|
||||||
18
jb/project/tools/common/scripts/build-jbr-api.sh
Normal file
18
jb/project/tools/common/scripts/build-jbr-api.sh
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin//bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# $1 - Boot JDK
|
||||||
|
# $2 - JBR part of API version
|
||||||
|
|
||||||
|
cd "`dirname "$0"`/../../../../.."
|
||||||
|
PWD="`pwd`"
|
||||||
|
CONF="$PWD/build/jbr-api.conf"
|
||||||
|
./configure --with-debug-level=release --with-boot-jdk=$1 || exit $?
|
||||||
|
make jbr-api CONF=release MAKEOVERRIDES= "JBR_API_CONF_FILE=$CONF" JBR_API_JBR_VERSION=$2 || exit $?
|
||||||
|
. $CONF || exit $?
|
||||||
|
echo "##teamcity[buildNumber '$VERSION']"
|
||||||
|
cp "$JAR" ./jbr-api-${VERSION}.jar || exit $?
|
||||||
|
cp "$SOURCES_JAR" ./jbr-api-${VERSION}-sources.jar || exit $?
|
||||||
|
echo "##teamcity[publishArtifacts '$PWD/jbr-api-${VERSION}.jar']"
|
||||||
|
echo "##teamcity[publishArtifacts '$PWD/jbr-api-${VERSION}-sources.jar']"
|
||||||
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
|
||||||
|
|
||||||
171
jb/project/tools/linux/scripts/mkimages_aarch64.sh
Executable file
171
jb/project/tools/linux/scripts/mkimages_aarch64.sh
Executable file
@@ -0,0 +1,171 @@
|
|||||||
|
#!/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 \
|
||||||
|
$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
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then __cds_opt="--generate-cds-archive"; fi
|
||||||
|
|
||||||
|
[ "$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
|
||||||
|
|
||||||
|
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" ] || [ "$bundle_type" == "fd" ]; 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" == "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 $?
|
||||||
|
|
||||||
|
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 jbr-api CONF=$RELEASE_NAME JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
cp "build/${RELEASE_NAME}/jbr-api/jbr-api.jar" "${IMAGES_DIR}/test"
|
||||||
|
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
|
||||||
188
jb/project/tools/linux/scripts/mkimages_x64.sh
Executable file
188
jb/project/tools/linux/scripts/mkimages_x64.sh
Executable file
@@ -0,0 +1,188 @@
|
|||||||
|
#!/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 \
|
||||||
|
$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
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then __cds_opt="--generate-cds-archive"; fi
|
||||||
|
|
||||||
|
[ "$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
|
||||||
|
|
||||||
|
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" ] || [ "$bundle_type" == "fd" ]; 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" == "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 $?
|
||||||
|
|
||||||
|
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 jbr-api CONF=$RELEASE_NAME JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
cp "build/${RELEASE_NAME}/jbr-api/jbr-api.jar" "${IMAGES_DIR}/test"
|
||||||
|
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
|
||||||
147
jb/project/tools/linux/scripts/mkimages_x86.sh
Executable file
147
jb/project/tools/linux/scripts/mkimages_x86.sh
Executable file
@@ -0,0 +1,147 @@
|
|||||||
|
#!/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
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then __cds_opt="--generate-cds-archive"; fi
|
||||||
|
|
||||||
|
[ "$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 jbr-api CONF=$RELEASE_NAME JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
cp "build/${RELEASE_NAME}/jbr-api/jbr-api.jar" "${IMAGES_DIR}/test"
|
||||||
|
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
|
||||||
47
jb/project/tools/mac/scripts/codesign.sh
Executable file
47
jb/project/tools/mac/scripts/codesign.sh
Executable file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/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
|
||||||
|
"$JETSIGN_CLIENT" -log-format text -denoted-content-type "$contentType" -extensions "$jetSignExtensions" "$pathToBeSigned"
|
||||||
|
# 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
|
||||||
|
}
|
||||||
|
|
||||||
171
jb/project/tools/mac/scripts/mkimages.sh
Executable file
171
jb/project/tools/mac/scripts/mkimages.sh
Executable file
@@ -0,0 +1,171 @@
|
|||||||
|
#!/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=''
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then __cds_opt="--generate-cds-archive"; fi
|
||||||
|
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
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" == "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 $?
|
||||||
|
|
||||||
|
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 jbr-api CONF=$RELEASE_NAME JBR_API_JBR_VERSION=TEST || do_exit $?
|
||||||
|
cp "build/${RELEASE_NAME}/jbr-api/jbr-api.jar" "${IMAGES_DIR}/test"
|
||||||
|
[ -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
|
||||||
40
jb/project/tools/mac/scripts/notarize.sh
Executable file
40
jb/project/tools/mac/scripts/notarize.sh
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/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 | tee "notarytool.submit.out"
|
||||||
|
REQUEST_ID="$(grep -e " id: " "notarytool.submit.out" | grep -oE '([0-9a-f-]{36})'| head -n1)"
|
||||||
|
|
||||||
|
xcrun notarytool wait "$REQUEST_ID" --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}" --timeout 6h ||:
|
||||||
|
xcrun notarytool log "$REQUEST_ID" --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}" developer_log.json ||:
|
||||||
|
xcrun notarytool info "$REQUEST_ID" --key tmp_key --key-id "${APPLE_KEY_ID}" --issuer "${APPLE_ISSUER_ID}"
|
||||||
|
|
||||||
|
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
|
||||||
162
jb/project/tools/mac/scripts/sign.sh
Executable file
162
jb/project/tools/mac/scripts/sign.sh
Executable file
@@ -0,0 +1,162 @@
|
|||||||
|
#!/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 "$SIGN_UTILITY" --timestamp \
|
||||||
|
-v -s "$JB_DEVELOPER_CERT" --options=runtime --force \
|
||||||
|
--entitlements "$SCRIPT_DIR/entitlements.xml" {} \;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
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 "$SIGN_UTILITY" --timestamp \
|
||||||
|
--force \
|
||||||
|
-v -s "$JB_DEVELOPER_CERT" --options=runtime \
|
||||||
|
--entitlements "$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 "$SIGN_UTILITY" --timestamp \
|
||||||
|
-v -s "$JB_DEVELOPER_CERT" --options=runtime --force \
|
||||||
|
--entitlements "$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
|
||||||
|
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
|
||||||
|
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"
|
||||||
|
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 \;
|
||||||
136
jb/project/tools/mac/scripts/signapp.sh
Executable file
136
jb/project/tools/mac/scripts/signapp.sh
Executable file
@@ -0,0 +1,136 @@
|
|||||||
|
#!/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
|
||||||
|
BACKUP_JMODS=$2.backup
|
||||||
|
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"
|
||||||
|
rm -rf "$BACKUP_JMODS"
|
||||||
|
mkdir "$BACKUP_JMODS"
|
||||||
|
|
||||||
|
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"
|
||||||
|
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/jmods; then
|
||||||
|
mv $EXPLODED/$BUILD_NAME/Contents/Home/jmods $BACKUP_JMODS
|
||||||
|
fi
|
||||||
|
|
||||||
|
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..."
|
||||||
|
xcrun stapler staple "$APPLICATION_PATH" ||:
|
||||||
|
xcrun stapler staple "$PKG_NAME" ||:
|
||||||
|
else
|
||||||
|
log "Notarization disabled"
|
||||||
|
log "Stapling disabled"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Zipping $BUILD_NAME to $INPUT_FILE ..."
|
||||||
|
(
|
||||||
|
#cd "$EXPLODED"
|
||||||
|
#ditto -c -k --sequesterRsrc --keepParent "$BUILD_NAME" "../$INPUT_FILE"
|
||||||
|
if test -d $BACKUP_JMODS/jmods; then
|
||||||
|
mv $BACKUP_JMODS/jmods $APPLICATION_PATH/Contents/Home
|
||||||
|
fi
|
||||||
|
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
|
||||||
98
jb/project/tools/perf/run_inc.sh
Normal file
98
jb/project/tools/perf/run_inc.sh
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
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)
|
||||||
|
-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
|
||||||
|
;;
|
||||||
|
-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
|
||||||
83
jb/project/tools/perf/run_rp.sh
Executable file
83
jb/project/tools/perf/run_rp.sh
Executable file
@@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
BASE_DIR=$(dirname "$0")
|
||||||
|
source $BASE_DIR/run_inc.sh
|
||||||
|
|
||||||
|
RENDERPERFTEST_DIR=$WS_ROOT/test/jdk/performance/client/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
|
||||||
|
|
||||||
|
#MODE=Robot
|
||||||
|
#MODE=Buffer
|
||||||
|
MODE=Volatile
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
$JAVA $J2D_OPTS -DTRACE=$TRACE \
|
||||||
|
-jar $RENDERPERFTEST $OPTS 2>&1 | tail -n +2 | \
|
||||||
|
awk '/'$1'/{print $3 }'
|
||||||
|
if [ $i -ne $N ]; then
|
||||||
|
sleep $ST
|
||||||
|
fi
|
||||||
|
done | $DATAMASH_CMD | expand -t12
|
||||||
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
|
||||||
|
)
|
||||||
152
jb/project/tools/windows/scripts/mkimages_aarch64.sh
Normal file
152
jb/project/tools/windows/scripts/mkimages_aarch64.sh
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
#!/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_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_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
|
||||||
|
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
|
||||||
|
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||||
|
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" == "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
|
||||||
145
jb/project/tools/windows/scripts/mkimages_x64.sh
Executable file
145
jb/project/tools/windows/scripts/mkimages_x64.sh
Executable file
@@ -0,0 +1,145 @@
|
|||||||
|
#!/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=''
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then __cds_opt="--generate-cds-archive"; fi
|
||||||
|
|
||||||
|
[ "$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_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_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
|
||||||
|
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
|
||||||
|
|
||||||
|
jbr_name_postfix="_${bundle_type}"
|
||||||
|
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||||
|
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" == "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
|
||||||
134
jb/project/tools/windows/scripts/mkimages_x86.sh
Executable file
134
jb/project/tools/windows/scripts/mkimages_x86.sh
Executable file
@@ -0,0 +1,134 @@
|
|||||||
|
#!/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=''
|
||||||
|
if [ "$__arch_name" == "$JBRSDK_BUNDLE" ]; then __cds_opt="--generate-cds-archive"; fi
|
||||||
|
|
||||||
|
[ "$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_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_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
|
||||||
|
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
|
||||||
|
|
||||||
|
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
|
||||||
57
jb/project/tools/windows/scripts/pack_aarch64.sh
Normal file
57
jb/project/tools/windows/scripts/pack_aarch64.sh
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
#!/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 ...
|
||||||
|
|
||||||
|
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR $__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
|
||||||
|
cp "build/${RELEASE_NAME}/jbr-api/jbr-api.jar" "${IMAGES_DIR}/test" || do_exit $?
|
||||||
|
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
|
||||||
57
jb/project/tools/windows/scripts/pack_x64.sh
Executable file
57
jb/project/tools/windows/scripts/pack_x64.sh
Executable file
@@ -0,0 +1,57 @@
|
|||||||
|
#!/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 $?
|
||||||
|
}
|
||||||
|
|
||||||
|
[ "$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
|
||||||
|
cp "build/${RELEASE_NAME}/jbr-api/jbr-api.jar" "${IMAGES_DIR}/test" || do_exit $?
|
||||||
|
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
|
||||||
53
jb/project/tools/windows/scripts/pack_x86.sh
Executable file
53
jb/project/tools/windows/scripts/pack_x86.sh
Executable file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/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 $?
|
||||||
|
}
|
||||||
|
|
||||||
|
[ "$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
|
||||||
|
cp "build/${RELEASE_NAME}/jbr-api/jbr-api.jar" "${IMAGES_DIR}/test" || do_exit $?
|
||||||
|
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
|
||||||
93
make/JBRApi.gmk
Normal file
93
make/JBRApi.gmk
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
#
|
||||||
|
# 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 JavaCompilation.gmk
|
||||||
|
|
||||||
|
JBR_API_ROOT_DIR := $(TOPDIR)/src/jetbrains.api
|
||||||
|
JBR_API_TOOLS_DIR := $(JBR_API_ROOT_DIR)/tools
|
||||||
|
JBR_API_SRC_DIR := $(JBR_API_ROOT_DIR)/src
|
||||||
|
JBR_API_OUTPUT_DIR := $(OUTPUTDIR)/jbr-api
|
||||||
|
JBR_API_GENSRC_DIR := $(JBR_API_OUTPUT_DIR)/gensrc
|
||||||
|
JBR_API_BIN_DIR := $(JBR_API_OUTPUT_DIR)/bin
|
||||||
|
JBR_API_VERSION_PROPERTIES := $(JBR_API_ROOT_DIR)/version.properties
|
||||||
|
JBR_API_VERSION_GENSRC := $(JBR_API_OUTPUT_DIR)/jbr-api.version
|
||||||
|
JBR_API_GENSRC_BATCH := $(JBR_API_VERSION_GENSRC)
|
||||||
|
|
||||||
|
JBR_API_SRC_FILES := $(call FindFiles, $(JBR_API_SRC_DIR))
|
||||||
|
JBR_API_GENSRC_FILES := $(foreach f, $(call FindFiles, $(JBR_API_SRC_DIR)), \
|
||||||
|
$(JBR_API_GENSRC_DIR)/$(call RelativePath, $f, $(JBR_API_SRC_DIR)))
|
||||||
|
|
||||||
|
ifeq ($(JBR_API_JBR_VERSION),)
|
||||||
|
JBR_API_JBR_VERSION := DEVELOPMENT
|
||||||
|
JBR_API_FAIL_ON_HASH_MISMATCH := false
|
||||||
|
else
|
||||||
|
.PHONY: $(JBR_API_VERSION_PROPERTIES)
|
||||||
|
JBR_API_FAIL_ON_HASH_MISMATCH := true
|
||||||
|
endif
|
||||||
|
|
||||||
|
ARCHIVE_BUILD_JBR_API_BIN := $(JBR_API_BIN_DIR)
|
||||||
|
$(eval $(call SetupJavaCompilation, BUILD_JBR_API, \
|
||||||
|
SMALL_JAVA := true, \
|
||||||
|
COMPILER := bootjdk, \
|
||||||
|
SRC := $(JBR_API_GENSRC_DIR), \
|
||||||
|
EXTRA_FILES := $(JBR_API_GENSRC_FILES), \
|
||||||
|
BIN := $(JBR_API_BIN_DIR), \
|
||||||
|
JAR := $(JBR_API_OUTPUT_DIR)/jbr-api.jar, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupJarArchive, BUILD_JBR_API_SOURCES_JAR, \
|
||||||
|
DEPENDENCIES := $(JBR_API_GENSRC_FILES), \
|
||||||
|
SRCS := $(JBR_API_GENSRC_DIR), \
|
||||||
|
JAR := $(JBR_API_OUTPUT_DIR)/jbr-api-sources.jar, \
|
||||||
|
SUFFIXES := .java, \
|
||||||
|
BIN := $(JBR_API_BIN_DIR), \
|
||||||
|
))
|
||||||
|
|
||||||
|
# Grouped targets may not be supported, so hack dependencies: sources -> version file -> generated sources
|
||||||
|
$(JBR_API_VERSION_GENSRC): $(JBR_API_SRC_FILES) $(JBR_API_VERSION_PROPERTIES) $(JBR_API_TOOLS_DIR)/Gensrc.java
|
||||||
|
$(ECHO) Generating sources for JBR API
|
||||||
|
$(JAVA_CMD) $(JAVA_FLAGS_SMALL) "$(JBR_API_TOOLS_DIR)/Gensrc.java" \
|
||||||
|
"$(TOPDIR)/src" "$(JBR_API_OUTPUT_DIR)" "$(JBR_API_JBR_VERSION)"
|
||||||
|
$(JBR_API_GENSRC_FILES): $(JBR_API_VERSION_GENSRC)
|
||||||
|
$(TOUCH) $@
|
||||||
|
|
||||||
|
jbr-api-check-version: $(JBR_API_GENSRC_FILES) $(JBR_API_VERSION_PROPERTIES)
|
||||||
|
$(JAVA_CMD) $(JAVA_FLAGS_SMALL) "$(JBR_API_TOOLS_DIR)/CheckVersion.java" \
|
||||||
|
"$(JBR_API_ROOT_DIR)" "$(JBR_API_GENSRC_DIR)" "$(JBR_API_FAIL_ON_HASH_MISMATCH)"
|
||||||
|
|
||||||
|
jbr-api: $(BUILD_JBR_API) $(BUILD_JBR_API_SOURCES_JAR) jbr-api-check-version
|
||||||
|
|
||||||
|
.PHONY: jbr-api jbr-api-check-version
|
||||||
|
|
||||||
|
ifneq ($(JBR_API_CONF_FILE),)
|
||||||
|
$(JBR_API_CONF_FILE): $(JBR_API_GENSRC_FILES)
|
||||||
|
$(ECHO) "VERSION=`$(CAT) $(JBR_API_VERSION_GENSRC)`" > $(JBR_API_CONF_FILE)
|
||||||
|
$(ECHO) "JAR=$(JBR_API_OUTPUT_DIR)/jbr-api.jar" >> $(JBR_API_CONF_FILE)
|
||||||
|
$(ECHO) "SOURCES_JAR=$(JBR_API_OUTPUT_DIR)/jbr-api-sources.jar" >> $(JBR_API_CONF_FILE)
|
||||||
|
jbr-api: $(JBR_API_CONF_FILE)
|
||||||
|
.PHONY: $(JBR_API_CONF_FILE)
|
||||||
|
endif
|
||||||
@@ -1453,6 +1453,14 @@ create-main-targets-include:
|
|||||||
@$(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 \
|
||||||
|
))
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Hook to include the corresponding custom file, if present.
|
# Hook to include the corresponding custom file, if present.
|
||||||
$(eval $(call IncludeCustomExtension, Main-post.gmk))
|
$(eval $(call IncludeCustomExtension, Main-post.gmk))
|
||||||
|
|||||||
@@ -89,8 +89,8 @@ AC_DEFUN([BASIC_SETUP_PATHS_WINDOWS],
|
|||||||
WINENV_TEMP_DIR=$($PATHTOOL -u $($CMD /q /c echo %TEMP% 2> /dev/null) | $TR -d '\r\n')
|
WINENV_TEMP_DIR=$($PATHTOOL -u $($CMD /q /c echo %TEMP% 2> /dev/null) | $TR -d '\r\n')
|
||||||
AC_MSG_RESULT([$WINENV_TEMP_DIR])
|
AC_MSG_RESULT([$WINENV_TEMP_DIR])
|
||||||
|
|
||||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl2"; then
|
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl1" || test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl2"; then
|
||||||
# Don't trust the current directory for WSL2, but change to an OK temp dir
|
# Don't trust the current directory for WSL, but change to an OK temp dir
|
||||||
cd "$WINENV_TEMP_DIR"
|
cd "$WINENV_TEMP_DIR"
|
||||||
# Bring along confdefs.h or autoconf gets all confused
|
# Bring along confdefs.h or autoconf gets all confused
|
||||||
cp "$CONFIGURE_START_DIR/confdefs.h" "$WINENV_TEMP_DIR"
|
cp "$CONFIGURE_START_DIR/confdefs.h" "$WINENV_TEMP_DIR"
|
||||||
@@ -228,7 +228,7 @@ AC_DEFUN([BASIC_WINDOWS_FINALIZE_FIXPATH],
|
|||||||
# Platform-specific finalization
|
# Platform-specific finalization
|
||||||
AC_DEFUN([BASIC_WINDOWS_FINALIZE],
|
AC_DEFUN([BASIC_WINDOWS_FINALIZE],
|
||||||
[
|
[
|
||||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl2"; then
|
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl1" || test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl2"; then
|
||||||
# Change back from temp dir
|
# Change back from temp dir
|
||||||
cd $CONFIGURE_START_DIR
|
cd $CONFIGURE_START_DIR
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -234,6 +234,31 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS],
|
|||||||
fi
|
fi
|
||||||
AC_SUBST(HOTSPOT_OVERRIDE_LIBPATH)
|
AC_SUBST(HOTSPOT_OVERRIDE_LIBPATH)
|
||||||
|
|
||||||
|
# Should we build the client for the JAWS screen reader?
|
||||||
|
if test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||||
|
AC_MSG_CHECKING([if JAWS client support is enabled])
|
||||||
|
|
||||||
|
A11Y_JAWS_ANNOUNCING_ENABLED=true
|
||||||
|
AC_ARG_ENABLE(
|
||||||
|
[jaws-client],
|
||||||
|
[AS_HELP_STRING([--disable-jaws-client], [Set to disable to exclude the client for the JAWS screen reader from the build])],
|
||||||
|
[
|
||||||
|
if test "x$ENABLE_HEADLESS_ONLY" = xtrue; then
|
||||||
|
AC_MSG_WARN([--[enable|disable]-jaws-client[=*] flags are ignored for headless builds])
|
||||||
|
elif test "x$enableval" != xyes; then
|
||||||
|
A11Y_JAWS_ANNOUNCING_ENABLED=false
|
||||||
|
fi
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if test "x$ENABLE_HEADLESS_ONLY" = xtrue; then
|
||||||
|
A11Y_JAWS_ANNOUNCING_ENABLED=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_RESULT([$A11Y_JAWS_ANNOUNCING_ENABLED])
|
||||||
|
else
|
||||||
|
A11Y_JAWS_ANNOUNCING_ENABLED=false
|
||||||
|
fi
|
||||||
|
AC_SUBST(A11Y_JAWS_ANNOUNCING_ENABLED)
|
||||||
])
|
])
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|||||||
121
make/autoconf/lib-nvdacontrollerclient.m4
Normal file
121
make/autoconf/lib-nvdacontrollerclient.m4
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
# Copyright (c) 2022, JetBrains s.r.o.. All rights reserved.
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
#
|
||||||
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation. Oracle designates this
|
||||||
|
# particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
|
# questions.
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup nvdacontrollerclient (The library for communication with
|
||||||
|
# NVDA - a screen reader for Microsoft Windows)
|
||||||
|
################################################################################
|
||||||
|
AC_DEFUN_ONCE([LIB_SETUP_NVDACONTROLLERCLIENT], [
|
||||||
|
# To enable NVDA, user specifies neither --with-nvdacontrollerclient or
|
||||||
|
# a pair (--with-nvdacontrollerclient-include, --with-nvdacontrollerclient-lib)
|
||||||
|
AC_ARG_WITH(nvdacontrollerclient, [AS_HELP_STRING([--with-nvdacontrollerclient],
|
||||||
|
[specify prefix directory for the NVDA Controller Client library package
|
||||||
|
(expecting headers and libs under PATH/<target-arch>/)])])
|
||||||
|
AC_ARG_WITH(nvdacontrollerclient-include, [AS_HELP_STRING([--with-nvdacontrollerclient-include],
|
||||||
|
[specify directory for the NVDA Controller Client include files])])
|
||||||
|
AC_ARG_WITH(nvdacontrollerclient-lib, [AS_HELP_STRING([--with-nvdacontrollerclient-lib],
|
||||||
|
[specify directory for the NVDA Controller Client library])])
|
||||||
|
|
||||||
|
NVDACONTROLLERCLIENT_FOUND=no
|
||||||
|
NVDACONTROLLERCLIENT_LIB=
|
||||||
|
NVDACONTROLLERCLIENT_DLL=
|
||||||
|
NVDACONTROLLERCLIENT_CFLAGS=
|
||||||
|
|
||||||
|
if test "x${NEEDS_LIB_NVDACONTROLLERCLIENT}" = "xtrue" ; then
|
||||||
|
if (test "x${with_nvdacontrollerclient_include}" = "x" && test "x${with_nvdacontrollerclient_lib}" != "x") || \
|
||||||
|
(test "x${with_nvdacontrollerclient_include}" != "x" && test "x${with_nvdacontrollerclient_lib}" = "x") ; then
|
||||||
|
AC_MSG_ERROR([Must specify both or neither of --with-nvdacontrollerclient-include and --with-nvdacontrollerclient-lib])
|
||||||
|
elif (test "x${with_nvdacontrollerclient}" != "x" && test "x${with_nvdacontrollerclient_include}" != "x") ; then
|
||||||
|
AC_MSG_ERROR([Must specify either --with-nvdacontrollerclient or a pair (--with-nvdacontrollerclient-include, --with-nvdacontrollerclient-lib)])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (test "x${with_nvdacontrollerclient}" != "x") || \
|
||||||
|
(test "x${with_nvdacontrollerclient_include}" != "x" && test "x${with_nvdacontrollerclient_lib}" != "x") ; then
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for nvdacontrollerclient])
|
||||||
|
|
||||||
|
if test "x${OPENJDK_TARGET_OS}" != "xwindows" ; then
|
||||||
|
AC_MSG_ERROR([--with-nvdacontrollerclient[-*] flags are applicable only to Windows builds])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x${OPENJDK_TARGET_CPU_ARCH}" = "xaarch64" ; then
|
||||||
|
NVDACONTROLLERCLIENT_BIN_BASENAME="nvdaControllerClient32"
|
||||||
|
NVDACONTROLLERCLIENT_ARCHDIR="arm64"
|
||||||
|
elif test "x${OPENJDK_TARGET_CPU_ARCH}" = "xx86" && test "x${OPENJDK_TARGET_CPU_BITS}" = "x64" ; then
|
||||||
|
NVDACONTROLLERCLIENT_BIN_BASENAME="nvdaControllerClient64"
|
||||||
|
NVDACONTROLLERCLIENT_ARCHDIR="x64"
|
||||||
|
elif test "x${OPENJDK_TARGET_CPU_ARCH}" = "xx86" && test "x${OPENJDK_TARGET_CPU_BITS}" = "x32" ; then
|
||||||
|
NVDACONTROLLERCLIENT_BIN_BASENAME="nvdaControllerClient32"
|
||||||
|
NVDACONTROLLERCLIENT_ARCHDIR="x86"
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([The nvdacontrollerclient library exists only for x86_32, x86_64, AArch64 architectures])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x${with_nvdacontrollerclient}" != "x" ; then
|
||||||
|
# NVDACONTROLLERCLIENT_ARCHDIR is used only here
|
||||||
|
NVDACONTROLLERCLIENT_INC_PATH="${with_nvdacontrollerclient}/${NVDACONTROLLERCLIENT_ARCHDIR}"
|
||||||
|
NVDACONTROLLERCLIENT_BIN_PATH="${with_nvdacontrollerclient}/${NVDACONTROLLERCLIENT_ARCHDIR}"
|
||||||
|
else
|
||||||
|
NVDACONTROLLERCLIENT_INC_PATH="${with_nvdacontrollerclient_include}"
|
||||||
|
NVDACONTROLLERCLIENT_BIN_PATH="${with_nvdacontrollerclient_lib}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
POTENTIAL_NVDACONTROLLERCLIENT_DLL="${NVDACONTROLLERCLIENT_BIN_PATH}/${NVDACONTROLLERCLIENT_BIN_BASENAME}.dll"
|
||||||
|
POTENTIAL_NVDACONTROLLERCLIENT_LIB="${NVDACONTROLLERCLIENT_BIN_PATH}/${NVDACONTROLLERCLIENT_BIN_BASENAME}.lib"
|
||||||
|
POTENTIAL_NVDACONTROLLERCLIENT_EXP="${NVDACONTROLLERCLIENT_BIN_PATH}/${NVDACONTROLLERCLIENT_BIN_BASENAME}.exp"
|
||||||
|
|
||||||
|
if ! test -s "${POTENTIAL_NVDACONTROLLERCLIENT_DLL}" || \
|
||||||
|
! test -s "${POTENTIAL_NVDACONTROLLERCLIENT_LIB}" || \
|
||||||
|
! test -s "${POTENTIAL_NVDACONTROLLERCLIENT_EXP}" ; then
|
||||||
|
AC_MSG_ERROR([Could not find ${NVDACONTROLLERCLIENT_BIN_BASENAME}.dll and/or ${NVDACONTROLLERCLIENT_BIN_BASENAME}.lib and/or ${NVDACONTROLLERCLIENT_BIN_BASENAME}.exp inside ${NVDACONTROLLERCLIENT_BIN_PATH}])
|
||||||
|
fi
|
||||||
|
if ! test -s "${NVDACONTROLLERCLIENT_INC_PATH}/nvdaController.h" ; then
|
||||||
|
AC_MSG_ERROR([Could not find the header file nvdaController.h inside ${NVDACONTROLLERCLIENT_INC_PATH}])
|
||||||
|
fi
|
||||||
|
|
||||||
|
NVDACONTROLLERCLIENT_CFLAGS="-I${NVDACONTROLLERCLIENT_INC_PATH}"
|
||||||
|
NVDACONTROLLERCLIENT_DLL="${POTENTIAL_NVDACONTROLLERCLIENT_DLL}"
|
||||||
|
NVDACONTROLLERCLIENT_LIB="${POTENTIAL_NVDACONTROLLERCLIENT_LIB}"
|
||||||
|
NVDACONTROLLERCLIENT_FOUND=yes
|
||||||
|
|
||||||
|
AC_MSG_RESULT([includes at ${NVDACONTROLLERCLIENT_INC_PATH} ; binaries at ${NVDACONTROLLERCLIENT_BIN_PATH}])
|
||||||
|
fi
|
||||||
|
elif test "x${with_nvdacontrollerclient}" != "x" || \
|
||||||
|
test "x${with_nvdacontrollerclient_include}" != "x" || test "x${with_nvdacontrollerclient_lib}" != "x" ; then
|
||||||
|
AC_MSG_WARN([[nvdacontrollerclient is not used, so --with-nvdacontrollerclient[-*] is ignored]])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x${NVDACONTROLLERCLIENT_FOUND}" = "xyes" ; then
|
||||||
|
A11Y_NVDA_ANNOUNCING_ENABLED=true
|
||||||
|
else
|
||||||
|
A11Y_NVDA_ANNOUNCING_ENABLED=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(A11Y_NVDA_ANNOUNCING_ENABLED)
|
||||||
|
AC_SUBST(NVDACONTROLLERCLIENT_CFLAGS)
|
||||||
|
AC_SUBST(NVDACONTROLLERCLIENT_DLL)
|
||||||
|
AC_SUBST(NVDACONTROLLERCLIENT_LIB)
|
||||||
|
])
|
||||||
92
make/autoconf/lib-speechd.m4
Normal file
92
make/autoconf/lib-speechd.m4
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
# Copyright (c) 2022, JetBrains s.r.o.. All rights reserved.
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
#
|
||||||
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation. Oracle designates this
|
||||||
|
# particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
|
# questions.
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup speechd
|
||||||
|
################################################################################
|
||||||
|
AC_DEFUN_ONCE([LIB_SETUP_SPEECHD],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH(speechd, [AS_HELP_STRING([--with-speechd],
|
||||||
|
[specify prefix directory for the libspeechd package
|
||||||
|
(expecting the headers under PATH/include); required for AccessibleAnnouncer to work])])
|
||||||
|
AC_ARG_WITH(speechd-include, [AS_HELP_STRING([--with-speechd-include],
|
||||||
|
[specify directory for the speechd include files])])
|
||||||
|
|
||||||
|
if test "x$NEEDS_LIB_SPEECHD" = xfalse || test "x${with_speechd}" = xno || \
|
||||||
|
test "x${with_speechd_include}" = xno; then
|
||||||
|
if (test "x${with_speechd}" != x && test "x${with_speechd}" != xno) || \
|
||||||
|
(test "x${with_speechd_include}" != x && test "x${with_speechd_include}" != xno); then
|
||||||
|
AC_MSG_WARN([[speechd not used, so --with-speechd[-*] is ignored]])
|
||||||
|
fi
|
||||||
|
A11Y_SPEECHD_ANNOUNCING_ENABLED=false
|
||||||
|
SPEECHD_CFLAGS=
|
||||||
|
SPEECHD_LIBS=
|
||||||
|
else
|
||||||
|
SPEECHD_FOUND=no
|
||||||
|
|
||||||
|
if test "x${with_speechd}" != x && test "x${with_speechd}" != xyes; then
|
||||||
|
AC_MSG_CHECKING([for speechd header and library])
|
||||||
|
if test -s "${with_speechd}/include/libspeechd.h"; then
|
||||||
|
SPEECHD_CFLAGS="-I${with_speechd}/include"
|
||||||
|
SPEECHD_LIBS="-L${with_speechd}/lib -lspeechd"
|
||||||
|
SPEECHD_FOUND=yes
|
||||||
|
AC_MSG_RESULT([$SPEECHD_FOUND])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Can't find 'include/libspeechd.h' under ${with_speechd} given with the --with-speechd option.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "x${with_speechd_include}" != x; then
|
||||||
|
AC_MSG_CHECKING([for speechd headers])
|
||||||
|
if test -s "${with_speechd_include}/libspeechd.h"; then
|
||||||
|
SPEECHD_CFLAGS="-I${with_speechd_include}"
|
||||||
|
SPEECHD_FOUND=yes
|
||||||
|
AC_MSG_RESULT([$SPEECHD_FOUND])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Can't find 'include/libspeechd.h' under ${with_speechd} given with the --with-speechd-include option.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "x$SPEECHD_FOUND" = xno; then
|
||||||
|
# Are the libspeechd headers installed in the default /usr/include location?
|
||||||
|
AC_CHECK_HEADERS([libspeechd.h],
|
||||||
|
[ SPEECHD_FOUND=yes ],
|
||||||
|
[ SPEECHD_FOUND=no; break ]
|
||||||
|
)
|
||||||
|
if test "x$SPEECHD_FOUND" = xyes; then
|
||||||
|
SPEECHD_CFLAGS=
|
||||||
|
SPEECHD_LIBS="-lspeechd"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "x$SPEECHD_FOUND" = xno; then
|
||||||
|
A11Y_SPEECHD_ANNOUNCING_ENABLED=false
|
||||||
|
else
|
||||||
|
A11Y_SPEECHD_ANNOUNCING_ENABLED=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(A11Y_SPEECHD_ANNOUNCING_ENABLED)
|
||||||
|
AC_SUBST(SPEECHD_CFLAGS)
|
||||||
|
AC_SUBST(SPEECHD_LIBS)
|
||||||
|
])
|
||||||
@@ -33,7 +33,9 @@ m4_include([lib-freetype.m4])
|
|||||||
m4_include([lib-hsdis.m4])
|
m4_include([lib-hsdis.m4])
|
||||||
m4_include([lib-std.m4])
|
m4_include([lib-std.m4])
|
||||||
m4_include([lib-x11.m4])
|
m4_include([lib-x11.m4])
|
||||||
|
m4_include([lib-fontconfig.m4])
|
||||||
|
m4_include([lib-speechd.m4])
|
||||||
|
m4_include([lib-nvdacontrollerclient.m4])
|
||||||
m4_include([lib-tests.m4])
|
m4_include([lib-tests.m4])
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -45,10 +47,16 @@ AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
|
|||||||
if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||||
# No X11 support on windows or macosx
|
# No X11 support on windows or macosx
|
||||||
NEEDS_LIB_X11=false
|
NEEDS_LIB_X11=false
|
||||||
|
NEEDS_LIB_SPEECHD=false
|
||||||
|
elif test "x$ENABLE_HEADLESS_ONLY" = xtrue; then
|
||||||
|
# No X11 support needed when building headless only
|
||||||
|
NEEDS_LIB_X11=false
|
||||||
|
NEEDS_LIB_SPEECHD=false
|
||||||
else
|
else
|
||||||
# All other instances need X11, even if building headless only, libawt still
|
# All other instances need X11, even if building headless only, libawt still
|
||||||
# needs X11 headers.
|
# needs X11 headers.
|
||||||
NEEDS_LIB_X11=true
|
NEEDS_LIB_X11=true
|
||||||
|
NEEDS_LIB_SPEECHD=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if fontconfig is needed
|
# Check if fontconfig is needed
|
||||||
@@ -87,6 +95,13 @@ AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
|
|||||||
else
|
else
|
||||||
NEEDS_LIB_FFI=false
|
NEEDS_LIB_FFI=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check if nvdacontrollerclient is needed
|
||||||
|
if test "x$OPENJDK_TARGET_OS" = xwindows && test "x$ENABLE_HEADLESS_ONLY" != xtrue; then
|
||||||
|
NEEDS_LIB_NVDACONTROLLERCLIENT=true
|
||||||
|
else
|
||||||
|
NEEDS_LIB_NVDACONTROLLERCLIENT=false
|
||||||
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -126,7 +141,8 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
|
|||||||
LIB_SETUP_LIBFFI
|
LIB_SETUP_LIBFFI
|
||||||
LIB_SETUP_MISC_LIBS
|
LIB_SETUP_MISC_LIBS
|
||||||
LIB_SETUP_X11
|
LIB_SETUP_X11
|
||||||
|
LIB_SETUP_SPEECHD
|
||||||
|
LIB_SETUP_NVDACONTROLLERCLIENT
|
||||||
LIB_TESTS_SETUP_GTEST
|
LIB_TESTS_SETUP_GTEST
|
||||||
|
|
||||||
BASIC_JDKLIB_LIBS=""
|
BASIC_JDKLIB_LIBS=""
|
||||||
|
|||||||
@@ -468,6 +468,20 @@ UBSAN_LDFLAGS := @UBSAN_LDFLAGS@
|
|||||||
X_CFLAGS := @X_CFLAGS@
|
X_CFLAGS := @X_CFLAGS@
|
||||||
X_LIBS := @X_LIBS@
|
X_LIBS := @X_LIBS@
|
||||||
|
|
||||||
|
# Linux speechd a11y announcer
|
||||||
|
A11Y_SPEECHD_ANNOUNCING_ENABLED:=@A11Y_SPEECHD_ANNOUNCING_ENABLED@
|
||||||
|
SPEECHD_CFLAGS:=@SPEECHD_CFLAGS@
|
||||||
|
SPEECHD_LIBS:=@SPEECHD_LIBS@
|
||||||
|
|
||||||
|
# Windows NVDA a11y announcer
|
||||||
|
A11Y_NVDA_ANNOUNCING_ENABLED:=@A11Y_NVDA_ANNOUNCING_ENABLED@
|
||||||
|
NVDACONTROLLERCLIENT_CFLAGS:=@NVDACONTROLLERCLIENT_CFLAGS@
|
||||||
|
NVDACONTROLLERCLIENT_DLL:=@NVDACONTROLLERCLIENT_DLL@
|
||||||
|
NVDACONTROLLERCLIENT_LIB:=@NVDACONTROLLERCLIENT_LIB@
|
||||||
|
|
||||||
|
# Windows the client for the JAWS screen reader
|
||||||
|
A11Y_JAWS_ANNOUNCING_ENABLED:=@A11Y_JAWS_ANNOUNCING_ENABLED@
|
||||||
|
|
||||||
# The lowest required version of macosx
|
# The lowest required version of macosx
|
||||||
MACOSX_VERSION_MIN := @MACOSX_VERSION_MIN@
|
MACOSX_VERSION_MIN := @MACOSX_VERSION_MIN@
|
||||||
# The highest allowed version of macosx
|
# The highest allowed version of macosx
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
<!-- importing.xml -->
|
|
||||||
<project name="jdk">
|
|
||||||
|
|
||||||
<taskdef name="wrapLogger" classname="idea.IdeaLoggerWrapper" classpath="${idea.dir}/classes"/>
|
|
||||||
|
|
||||||
<wrapLogger/>
|
|
||||||
|
|
||||||
<macrodef name="call-make">
|
|
||||||
<attribute name="dir"/>
|
|
||||||
<attribute name="args"/>
|
|
||||||
<sequential>
|
|
||||||
<exec executable="make" dir="@{dir}" failonerror="true">
|
|
||||||
<arg line="@{args}"/>
|
|
||||||
<env key="CLASSPATH" value = ""/>
|
|
||||||
</exec>
|
|
||||||
</sequential>
|
|
||||||
</macrodef>
|
|
||||||
|
|
||||||
<target name="cond-clean" unless="${intellij.ismake}">
|
|
||||||
<antcall target="clean"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="post-make" depends="cond-clean, build-module"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
**** Global JDK Build Targets
|
|
||||||
-->
|
|
||||||
|
|
||||||
<target name="clean">
|
|
||||||
<echo message="base = ${basedir}"/>
|
|
||||||
<call-make dir = "${build.target.dir}" args = "reconfigure"/>
|
|
||||||
<call-make dir = "${build.target.dir}" args = "clean"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="images">
|
|
||||||
<call-make dir = "${build.target.dir}" args = "images"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="build-module">
|
|
||||||
<call-make dir = "${build.target.dir}" args = "${module.name}"/>
|
|
||||||
</target>
|
|
||||||
</project>
|
|
||||||
@@ -46,13 +46,18 @@ else #with SPEC
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
idea:
|
idea:
|
||||||
$(ECHO) "SUPPORT=$(SUPPORT_OUTPUTDIR)" >> $(OUT)
|
$(ECHO) "MODULES=\"$(foreach mod, $(SEL_MODULES), \
|
||||||
$(ECHO) "MODULE_ROOTS=\"$(foreach mod, $(SEL_MODULES), $(call FindModuleSrcDirs,$(mod)))\"" >> $(OUT)
|
module='$(mod)' \
|
||||||
|
moduleSrcDirs='$(foreach m,$(call FindModuleSrcDirs,$(mod)),$(call RelativePath,$m,$(topdir)))' \
|
||||||
|
moduleDependencies='$(call FindTransitiveDepsForModule,$(mod))' \
|
||||||
|
#)\"" > $(OUT)
|
||||||
$(ECHO) "MODULE_NAMES=\"$(strip $(foreach mod, $(SEL_MODULES), $(mod)))\"" >> $(OUT)
|
$(ECHO) "MODULE_NAMES=\"$(strip $(foreach mod, $(SEL_MODULES), $(mod)))\"" >> $(OUT)
|
||||||
$(ECHO) "SEL_MODULES=\"$(SEL_MODULES)\"" >> $(OUT)
|
$(ECHO) "RELATIVE_TOPLEVEL_PROJECT_DIR=\"$(call RelativePath,$(TOPLEVEL_DIR),$(IDEA_OUTPUT_PARENT))\"" >> $(OUT)
|
||||||
$(ECHO) "BOOT_JDK=\"$(BOOT_JDK)\"" >> $(OUT)
|
$(ECHO) "RELATIVE_PROJECT_DIR=\"$(call RelativePath,$(topdir),$(IDEA_OUTPUT_PARENT))\"" >> $(OUT)
|
||||||
$(ECHO) "CYGPATH=\"$(PATHTOOL)\"" >> $(OUT)
|
$(ECHO) "RELATIVE_BUILD_DIR=\"$(call RelativePath,$(OUTPUTDIR),$(IDEA_OUTPUT_PARENT))\"" >> $(OUT)
|
||||||
$(ECHO) "SPEC=\"$(SPEC)\"" >> $(OUT)
|
$(ECHO) "CLION_RELATIVE_PROJECT_DIR=\"$(call RelativePath,$(topdir),$(IDEA_OUTPUT_PARENT)/.idea/jdk-clion)\"" >> $(OUT)
|
||||||
|
$(ECHO) "PATHTOOL=\"$(PATHTOOL)\"" >> $(OUT)
|
||||||
$(ECHO) "JT_HOME=\"$(JT_HOME)\"" >> $(OUT)
|
$(ECHO) "JT_HOME=\"$(JT_HOME)\"" >> $(OUT)
|
||||||
|
$(ECHO) "WINENV_ROOT=\"$(WINENV_ROOT)\"" >> $(OUT)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="AntConfiguration">
|
|
||||||
<buildFile url="file://###ROOT_DIR###/make/ide/idea/jdk/build.xml">
|
|
||||||
<properties>
|
|
||||||
<property name="intellij.ismake" value="$IsMake$" />
|
|
||||||
<property name="build.target.dir" value="###BUILD_DIR###" />
|
|
||||||
<property name="module.name" value="###MODULE_NAMES###" />
|
|
||||||
<property name="idea.dir" value="###IDEA_DIR###" />
|
|
||||||
</properties>
|
|
||||||
<executeOn event="afterCompilation" target="post-make" />
|
|
||||||
</buildFile>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -3,10 +3,10 @@
|
|||||||
<component name="CompilerConfiguration">
|
<component name="CompilerConfiguration">
|
||||||
<option name="DEFAULT_COMPILER" value="Javac" />
|
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||||
<excludeFromCompile>
|
<excludeFromCompile>
|
||||||
<directory url="file://###ROOT_DIR###/src" includeSubdirectories="true" />
|
<directory url="file://###PROJECT_DIR###/src" includeSubdirectories="true" />
|
||||||
<directory url="file://###ROOT_DIR###/build" includeSubdirectories="true" />
|
<directory url="file://###PROJECT_DIR###/build" includeSubdirectories="true" />
|
||||||
<directory url="file://###ROOT_DIR###/make" includeSubdirectories="true" />
|
<directory url="file://###PROJECT_DIR###/make" includeSubdirectories="true" />
|
||||||
<directory url="file://###ROOT_DIR###/test" includeSubdirectories="true" />
|
<directory url="file://###PROJECT_DIR###/test" includeSubdirectories="false" />
|
||||||
</excludeFromCompile>
|
</excludeFromCompile>
|
||||||
<resourceExtensions />
|
<resourceExtensions />
|
||||||
<wildcardResourcePatterns>
|
<wildcardResourcePatterns>
|
||||||
|
|||||||
9
make/ide/idea/jdk/template/copyright/JetBrains.xml
Normal file
9
make/ide/idea/jdk/template/copyright/JetBrains.xml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="CopyrightManager">
|
||||||
|
<copyright>
|
||||||
|
<option name="notice" value="Copyright &#36;originalComment.match("Copyright (\d+)", 1, "-")&#36;today.year 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. 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." />
|
||||||
|
<option name="keyword" value="Copyright" />
|
||||||
|
<option name="allowReplaceKeyword" value="JetBrains" />
|
||||||
|
<option name="myName" value="JetBrains" />
|
||||||
|
<option name="myLocal" value="true" />
|
||||||
|
</copyright>
|
||||||
|
</component>
|
||||||
7
make/ide/idea/jdk/template/copyright/JetBrainsCE.xml
Normal file
7
make/ide/idea/jdk/template/copyright/JetBrainsCE.xml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="CopyrightManager">
|
||||||
|
<copyright>
|
||||||
|
<option name="allowReplaceRegexp" value="JetBrains" />
|
||||||
|
<option name="notice" value="Copyright &#36;originalComment.match("Copyright (\d+)", 1, "-")&#36;today.year 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." />
|
||||||
|
<option name="myName" value="JetBrainsCE" />
|
||||||
|
</copyright>
|
||||||
|
</component>
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
<component name="CopyrightManager">
|
<component name="CopyrightManager">
|
||||||
<settings default="" />
|
<settings default="JetBrainsCE">
|
||||||
</component>
|
<module2copyright>
|
||||||
|
<element module="TestFiles" copyright="JetBrains" />
|
||||||
|
</module2copyright>
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
9
make/ide/idea/jdk/template/jdk-clion/.idea/copyright/JetBrains.xml
generated
Normal file
9
make/ide/idea/jdk/template/jdk-clion/.idea/copyright/JetBrains.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="CopyrightManager">
|
||||||
|
<copyright>
|
||||||
|
<option name="notice" value="Copyright &#36;originalComment.match("Copyright (\d+)", 1, "-")&#36;today.year 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. 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." />
|
||||||
|
<option name="keyword" value="Copyright" />
|
||||||
|
<option name="allowReplaceKeyword" value="JetBrains" />
|
||||||
|
<option name="myName" value="JetBrains" />
|
||||||
|
<option name="myLocal" value="true" />
|
||||||
|
</copyright>
|
||||||
|
</component>
|
||||||
7
make/ide/idea/jdk/template/jdk-clion/.idea/copyright/JetBrainsCE.xml
generated
Normal file
7
make/ide/idea/jdk/template/jdk-clion/.idea/copyright/JetBrainsCE.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="CopyrightManager">
|
||||||
|
<copyright>
|
||||||
|
<option name="allowReplaceRegexp" value="JetBrains" />
|
||||||
|
<option name="notice" value="Copyright &#36;originalComment.match("Copyright (\d+)", 1, "-")&#36;today.year 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." />
|
||||||
|
<option name="myName" value="JetBrainsCE" />
|
||||||
|
</copyright>
|
||||||
|
</component>
|
||||||
7
make/ide/idea/jdk/template/jdk-clion/.idea/copyright/profiles_settings.xml
generated
Normal file
7
make/ide/idea/jdk/template/jdk-clion/.idea/copyright/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="CopyrightManager">
|
||||||
|
<settings default="JetBrainsCE">
|
||||||
|
<module2copyright>
|
||||||
|
<element module="TestFiles" copyright="JetBrains" />
|
||||||
|
</module2copyright>
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
25
make/ide/idea/jdk/template/jdk-clion/.idea/misc.xml
generated
Normal file
25
make/ide/idea/jdk/template/jdk-clion/.idea/misc.xml
generated
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CidrRootsConfiguration">
|
||||||
|
<excludeRoots>
|
||||||
|
<file path="###CLION_PROJECT_DIR###/build" />
|
||||||
|
<file path="###CLION_PROJECT_DIR###/make" />
|
||||||
|
</excludeRoots>
|
||||||
|
</component>
|
||||||
|
<component name="CompDBSettings">
|
||||||
|
<option name="linkedExternalProjectsSettings">
|
||||||
|
<CompDBProjectSettings>
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="modules">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</CompDBProjectSettings>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="CompDBWorkspace" PROJECT_DIR="$PROJECT_DIR$">
|
||||||
|
<contentRoot DIR="###CLION_PROJECT_DIR###" />
|
||||||
|
</component>
|
||||||
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
|
</project>
|
||||||
3
make/ide/idea/jdk/template/jdk-clion/.idea/scopes/TestFiles.xml
generated
Normal file
3
make/ide/idea/jdk/template/jdk-clion/.idea/scopes/TestFiles.xml
generated
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<component name="DependencyValidationManager">
|
||||||
|
<scope name="TestFiles" pattern="file[test]:*/" />
|
||||||
|
</component>
|
||||||
5
make/ide/idea/jdk/template/jdk-clion/.idea/scopes/scope_settings.xml
generated
Normal file
5
make/ide/idea/jdk/template/jdk-clion/.idea/scopes/scope_settings.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<component name="DependencyValidationManager">
|
||||||
|
<state>
|
||||||
|
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
16
make/ide/idea/jdk/template/jdk-clion/.idea/vcs.xml
generated
Normal file
16
make/ide/idea/jdk/template/jdk-clion/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?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})(?: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="###CLION_PROJECT_DIR###" vcs="###VCS_TYPE###" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
55
make/ide/idea/jdk/template/jdk-clion/.idea/workspace.xml
generated
Normal file
55
make/ide/idea/jdk/template/jdk-clion/.idea/workspace.xml
generated
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AutoImportSettings">
|
||||||
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
|
</component>
|
||||||
|
<component name="ClangdSettings">
|
||||||
|
<option name="formatViaClangd" value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="CompDBLocalSettings">
|
||||||
|
<option name="availableProjects">
|
||||||
|
<map>
|
||||||
|
<entry>
|
||||||
|
<key>
|
||||||
|
<ExternalProjectPojo>
|
||||||
|
<option name="name" value="jdk-clion" />
|
||||||
|
<option name="path" value="$PROJECT_DIR$" />
|
||||||
|
</ExternalProjectPojo>
|
||||||
|
</key>
|
||||||
|
<value>
|
||||||
|
<list>
|
||||||
|
<ExternalProjectPojo>
|
||||||
|
<option name="name" value="jdk-clion" />
|
||||||
|
<option name="path" value="$PROJECT_DIR$" />
|
||||||
|
</ExternalProjectPojo>
|
||||||
|
</list>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
<option name="projectSyncType">
|
||||||
|
<map>
|
||||||
|
<entry key="$PROJECT_DIR$" value="RE_IMPORT" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ExternalProjectsData">
|
||||||
|
<projectState path="$PROJECT_DIR$">
|
||||||
|
<ProjectState />
|
||||||
|
</projectState>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectViewState">
|
||||||
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
|
<option name="showLibraryContents" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PropertiesComponent">
|
||||||
|
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
||||||
|
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||||
|
<property name="RunOnceActivity.cidr.known.project.marker" value="true" />
|
||||||
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||||
|
<property name="cf.first.check.clang-format" value="false" />
|
||||||
|
<property name="cidr.known.project.marker" value="true" />
|
||||||
|
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||||
|
<property name="settings.editor.selected.configurable" value="CPPToolchains" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
29
make/ide/idea/jdk/template/jdk-clion/update-project.sh
Normal file
29
make/ide/idea/jdk/template/jdk-clion/update-project.sh
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
TOPDIR="###CLION_SCRIPT_TOPDIR###"
|
||||||
|
BUILD_DIR="###RELATIVE_BUILD_DIR###"
|
||||||
|
PATHTOOL="###PATHTOOL###"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cd "`dirname $0`"
|
||||||
|
SCRIPT_DIR="`pwd`"
|
||||||
|
cd "$TOPDIR"
|
||||||
|
|
||||||
|
echo "Updating Clion project files in \"$SCRIPT_DIR\" for project \"`pwd`\""
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
make compile-commands SPEC="$BUILD_DIR/spec.gmk" | sed 's/^/ /' || exit 1
|
||||||
|
|
||||||
|
if [ "x$PATHTOOL" != "x" ]; then
|
||||||
|
CLION_PROJECT_DIR="`$PATHTOOL -am $SCRIPT_DIR`"
|
||||||
|
sed "s/\\\\\\\\\\\\\\\\/\\\\\\\\/g" "$BUILD_DIR/compile_commands.json" > "$SCRIPT_DIR/compile_commands.json"
|
||||||
|
else
|
||||||
|
CLION_PROJECT_DIR="$SCRIPT_DIR"
|
||||||
|
cp "$BUILD_DIR/compile_commands.json" "$SCRIPT_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "
|
||||||
|
Now you can open \"$CLION_PROJECT_DIR\" as Clion project
|
||||||
|
If Clion complains about missing files when loading a project, building it may help:
|
||||||
|
cd \"`pwd`\" && make SPEC=\"$BUILD_DIR/spec.gmk\""
|
||||||
@@ -2,10 +2,9 @@
|
|||||||
<module type="JAVA_MODULE" version="4">
|
<module type="JAVA_MODULE" version="4">
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
<exclude-output />
|
<exclude-output />
|
||||||
<content url="file://###ROOT_DIR###">
|
<content url="file://###TOPLEVEL_MODULE_DIR###">
|
||||||
###SOURCE_ROOTS###
|
<excludeFolder url="file://###MODULE_DIR###/build" />
|
||||||
<excludeFolder url="file://###ROOT_DIR###/build" />
|
<excludeFolder url="file://###MODULE_DIR###/make" />
|
||||||
<excludeFolder url="file://###ROOT_DIR###/make" />
|
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
|
|||||||
@@ -6,11 +6,8 @@
|
|||||||
<component name="JTRegService">
|
<component name="JTRegService">
|
||||||
<path>###JTREG_HOME###</path>
|
<path>###JTREG_HOME###</path>
|
||||||
<workDir>###BUILD_DIR###</workDir>
|
<workDir>###BUILD_DIR###</workDir>
|
||||||
<jre alt="true" value="###IMAGES_DIR###" />
|
<jre alt="true" value="###BUILD_DIR###/images/jdk" />
|
||||||
<options></options>
|
<options></options>
|
||||||
<ant>
|
|
||||||
<target file="file://###ROOT_DIR###/make/ide/idea/jdk/build.xml" name="images" />
|
|
||||||
</ant>
|
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_X" assert-keyword="true" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_X" assert-keyword="true" project-jdk-type="JavaSDK">
|
||||||
<output url="file://###BUILD_DIR###/idea" />
|
<output url="file://###BUILD_DIR###/idea" />
|
||||||
|
|||||||
11
make/ide/idea/jdk/template/module.iml
Normal file
11
make/ide/idea/jdk/template/module.iml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
###MODULE_CONTENT_ROOTS###
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
###DEPENDENCIES###
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
|
|
||||||
@@ -3,6 +3,8 @@
|
|||||||
<component name="ProjectModuleManager">
|
<component name="ProjectModuleManager">
|
||||||
<modules>
|
<modules>
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/jdk.iml" filepath="$PROJECT_DIR$/.idea/jdk.iml" />
|
<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>
|
</modules>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
3
make/ide/idea/jdk/template/scopes/TestFiles.xml
Normal file
3
make/ide/idea/jdk/template/scopes/TestFiles.xml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<component name="DependencyValidationManager">
|
||||||
|
<scope name="TestFiles" pattern="file[test]:*/" />
|
||||||
|
</component>
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package idea;
|
|
||||||
|
|
||||||
import org.apache.tools.ant.Task;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class implements a custom Ant task which replaces the standard Intellij IDEA Ant logger
|
|
||||||
* with a custom one which generates tighter output.
|
|
||||||
*/
|
|
||||||
public class IdeaLoggerWrapper extends Task {
|
|
||||||
public void execute() {
|
|
||||||
new JdkIdeaAntLogger(getProject());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,375 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2014, 2023, Oracle and/or its affiliates. All rights reserved.
|
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
||||||
*
|
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
|
||||||
* published by the Free Software Foundation. Oracle designates this
|
|
||||||
* particular file as subject to the "Classpath" exception as provided
|
|
||||||
* by Oracle in the LICENSE file that accompanied this code.
|
|
||||||
*
|
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
* version 2 for more details (a copy is included in the LICENSE file that
|
|
||||||
* accompanied this code).
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License version
|
|
||||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
|
||||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*
|
|
||||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
||||||
* or visit www.oracle.com if you need additional information or have any
|
|
||||||
* questions.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package idea;
|
|
||||||
|
|
||||||
import org.apache.tools.ant.BuildEvent;
|
|
||||||
import org.apache.tools.ant.BuildListener;
|
|
||||||
import org.apache.tools.ant.DefaultLogger;
|
|
||||||
import org.apache.tools.ant.Project;
|
|
||||||
|
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.Stack;
|
|
||||||
|
|
||||||
import static org.apache.tools.ant.Project.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class is used to wrap the IntelliJ ant logger in order to provide more meaningful
|
|
||||||
* output when building langtools. The basic ant output in IntelliJ can be quite cumbersome to
|
|
||||||
* work with, as it provides two separate views: (i) a tree view, which is good to display build task
|
|
||||||
* in a hierarchical fashion as they are processed; and a (ii) plain text view, which gives you
|
|
||||||
* the full ant output. The main problem is that javac-related messages are buried into the
|
|
||||||
* ant output (which is made very verbose by IntelliJ in order to support the tree view). It is
|
|
||||||
* not easy to figure out which node to expand in order to see the error message; switching
|
|
||||||
* to plain text doesn't help either, as now the output is totally flat.
|
|
||||||
*
|
|
||||||
* This logger class removes a lot of verbosity from the IntelliJ ant logger by not propagating
|
|
||||||
* all the events to the IntelliJ's logger. In addition, certain events are handled in a custom
|
|
||||||
* fashion, to generate better output during the build.
|
|
||||||
*/
|
|
||||||
public final class JdkIdeaAntLogger extends DefaultLogger {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is just a way to pass in customized binary string predicates;
|
|
||||||
*
|
|
||||||
* TODO: replace with {@code BiPredicate<String, String>} and method reference when moving to 8
|
|
||||||
*/
|
|
||||||
enum StringBinaryPredicate {
|
|
||||||
CONTAINS() {
|
|
||||||
@Override
|
|
||||||
boolean apply(String s1, String s2) {
|
|
||||||
return s1.contains(s2);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
STARTS_WITH {
|
|
||||||
@Override
|
|
||||||
boolean apply(String s1, String s2) {
|
|
||||||
return s1.startsWith(s2);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
MATCHES {
|
|
||||||
@Override
|
|
||||||
boolean apply(String s1, String s2) {
|
|
||||||
return s1.matches(s2);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
abstract boolean apply(String s1, String s2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Various kinds of ant messages that we shall intercept
|
|
||||||
*/
|
|
||||||
enum MessageKind {
|
|
||||||
|
|
||||||
/** a make error */
|
|
||||||
MAKE_ERROR(StringBinaryPredicate.CONTAINS, MSG_ERR, "error:", "compiler.err"),
|
|
||||||
/** a make warning */
|
|
||||||
MAKE_WARNING(StringBinaryPredicate.CONTAINS, MSG_WARN, "warning:", "compiler.warn"),
|
|
||||||
/** a make note */
|
|
||||||
MAKE_NOTE(StringBinaryPredicate.CONTAINS, MSG_INFO, "note:", "compiler.note"),
|
|
||||||
/** std make output */
|
|
||||||
MAKE_OTHER(StringBinaryPredicate.MATCHES, MSG_INFO, ".*"),
|
|
||||||
/** a javac crash */
|
|
||||||
JAVAC_CRASH(StringBinaryPredicate.STARTS_WITH, MSG_ERR, "An exception has occurred in the compiler"),
|
|
||||||
/** jtreg test success */
|
|
||||||
JTREG_TEST_PASSED(StringBinaryPredicate.STARTS_WITH, MSG_INFO, "Passed: "),
|
|
||||||
/** jtreg test failure */
|
|
||||||
JTREG_TEST_FAILED(StringBinaryPredicate.STARTS_WITH, MSG_ERR, "FAILED: "),
|
|
||||||
/** jtreg test error */
|
|
||||||
JTREG_TEST_ERROR(StringBinaryPredicate.STARTS_WITH, MSG_ERR, "Error: "),
|
|
||||||
/** jtreg report */
|
|
||||||
JTREG_TEST_REPORT(StringBinaryPredicate.STARTS_WITH, MSG_INFO, "Report written");
|
|
||||||
|
|
||||||
StringBinaryPredicate sbp;
|
|
||||||
int priority;
|
|
||||||
String[] keys;
|
|
||||||
|
|
||||||
MessageKind(StringBinaryPredicate sbp, int priority, String... keys) {
|
|
||||||
this.sbp = sbp;
|
|
||||||
this.priority = priority;
|
|
||||||
this.keys = keys;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Does a given message string matches this kind?
|
|
||||||
*/
|
|
||||||
boolean matches(String s) {
|
|
||||||
for (String key : keys) {
|
|
||||||
if (sbp.apply(s, key)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This enum is used to represent the list of tasks we need to keep track of during logging.
|
|
||||||
*/
|
|
||||||
enum Task {
|
|
||||||
/** javac task - invoked during compilation */
|
|
||||||
MAKE("exec", MessageKind.MAKE_ERROR, MessageKind.MAKE_WARNING, MessageKind.MAKE_NOTE,
|
|
||||||
MessageKind.MAKE_OTHER, MessageKind.JAVAC_CRASH),
|
|
||||||
/** jtreg task - invoked during test execution */
|
|
||||||
JTREG("jtreg", MessageKind.JTREG_TEST_PASSED, MessageKind.JTREG_TEST_FAILED, MessageKind.JTREG_TEST_ERROR, MessageKind.JTREG_TEST_REPORT),
|
|
||||||
/** initial synthetic task when the logger is created */
|
|
||||||
ROOT("") {
|
|
||||||
@Override
|
|
||||||
boolean matches(String s) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/** synthetic task catching any other tasks not in this list */
|
|
||||||
ANY("") {
|
|
||||||
@Override
|
|
||||||
boolean matches(String s) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
String taskName;
|
|
||||||
MessageKind[] msgs;
|
|
||||||
|
|
||||||
Task(String taskName, MessageKind... msgs) {
|
|
||||||
this.taskName = taskName;
|
|
||||||
this.msgs = msgs;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean matches(String s) {
|
|
||||||
return s.equals(taskName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This enum is used to represent the list of targets we need to keep track of during logging.
|
|
||||||
* A regular expression is used to match a given target name.
|
|
||||||
*/
|
|
||||||
enum Target {
|
|
||||||
/** jtreg target - executed when launching tests */
|
|
||||||
JTREG("jtreg") {
|
|
||||||
@Override
|
|
||||||
String getDisplayMessage(BuildEvent e) {
|
|
||||||
return "Running jtreg tests: " + e.getProject().getProperty("jtreg.tests");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/** build selected modules */
|
|
||||||
BUILD_MODULE("build-module") {
|
|
||||||
@Override
|
|
||||||
String getDisplayMessage(BuildEvent e) {
|
|
||||||
return "Building modules: " + e.getProject().getProperty("module.name") + "...";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/** build images */
|
|
||||||
BUILD_IMAGES("images") {
|
|
||||||
@Override
|
|
||||||
String getDisplayMessage(BuildEvent e) {
|
|
||||||
return "Building images...";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/** build images */
|
|
||||||
CONFIGURE("-do-configure") {
|
|
||||||
@Override
|
|
||||||
String getDisplayMessage(BuildEvent e) {
|
|
||||||
return "Configuring build...";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/** synthetic target catching any other target not in this list */
|
|
||||||
ANY("") {
|
|
||||||
@Override
|
|
||||||
String getDisplayMessage(BuildEvent e) {
|
|
||||||
return "Executing Ant target(s): " + e.getProject().getProperty("ant.project.invoked-targets");
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
boolean matches(String msg) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
String targetRegex;
|
|
||||||
|
|
||||||
Target(String targetRegex) {
|
|
||||||
this.targetRegex = targetRegex;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean matches(String msg) {
|
|
||||||
return msg.matches(targetRegex);
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract String getDisplayMessage(BuildEvent e);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A custom build event used to represent status changes which should be notified inside
|
|
||||||
* Intellij
|
|
||||||
*/
|
|
||||||
static class StatusEvent extends BuildEvent {
|
|
||||||
|
|
||||||
/** the target to which the status update refers */
|
|
||||||
Target target;
|
|
||||||
|
|
||||||
StatusEvent(BuildEvent e, Target target) {
|
|
||||||
super(new StatusTask(e, target.getDisplayMessage(e)));
|
|
||||||
this.target = target;
|
|
||||||
setMessage(getTask().getTaskName(), 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A custom task used to channel info regarding a status change
|
|
||||||
*/
|
|
||||||
static class StatusTask extends org.apache.tools.ant.Task {
|
|
||||||
StatusTask(BuildEvent event, String msg) {
|
|
||||||
setProject(event.getProject());
|
|
||||||
setOwningTarget(event.getTarget());
|
|
||||||
setTaskName(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** wrapped ant logger (IntelliJ's own logger) */
|
|
||||||
DefaultLogger logger;
|
|
||||||
|
|
||||||
/** flag - is this the first target we encounter? */
|
|
||||||
boolean firstTarget = true;
|
|
||||||
|
|
||||||
/** flag - should subsequent failures be suppressed ? */
|
|
||||||
boolean suppressTaskFailures = false;
|
|
||||||
|
|
||||||
/** flag - have we ran into a javac crash ? */
|
|
||||||
boolean crashFound = false;
|
|
||||||
|
|
||||||
/** stack of status changes associated with pending targets */
|
|
||||||
Stack<StatusEvent> statusEvents = new Stack<>();
|
|
||||||
|
|
||||||
/** stack of pending tasks */
|
|
||||||
Stack<Task> tasks = new Stack<>();
|
|
||||||
|
|
||||||
public JdkIdeaAntLogger(Project project) {
|
|
||||||
for (Object o : project.getBuildListeners()) {
|
|
||||||
if (o instanceof DefaultLogger) {
|
|
||||||
this.logger = (DefaultLogger)o;
|
|
||||||
project.removeBuildListener((BuildListener)o);
|
|
||||||
project.addBuildListener(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tasks.push(Task.ROOT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void buildStarted(BuildEvent event) {
|
|
||||||
//do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void buildFinished(BuildEvent event) {
|
|
||||||
//do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void targetStarted(BuildEvent event) {
|
|
||||||
EnumSet<Target> statusKinds = firstTarget ?
|
|
||||||
EnumSet.allOf(Target.class) :
|
|
||||||
EnumSet.complementOf(EnumSet.of(Target.ANY));
|
|
||||||
|
|
||||||
String targetName = event.getTarget().getName();
|
|
||||||
|
|
||||||
for (Target statusKind : statusKinds) {
|
|
||||||
if (statusKind.matches(targetName)) {
|
|
||||||
StatusEvent statusEvent = new StatusEvent(event, statusKind);
|
|
||||||
statusEvents.push(statusEvent);
|
|
||||||
logger.taskStarted(statusEvent);
|
|
||||||
firstTarget = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void targetFinished(BuildEvent event) {
|
|
||||||
if (!statusEvents.isEmpty()) {
|
|
||||||
StatusEvent lastEvent = statusEvents.pop();
|
|
||||||
if (lastEvent.target.matches(event.getTarget().getName())) {
|
|
||||||
logger.taskFinished(lastEvent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void taskStarted(BuildEvent event) {
|
|
||||||
String taskName = event.getTask().getTaskName();
|
|
||||||
System.err.println("task started " + taskName);
|
|
||||||
for (Task task : Task.values()) {
|
|
||||||
if (task.matches(taskName)) {
|
|
||||||
tasks.push(task);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void taskFinished(BuildEvent event) {
|
|
||||||
if (tasks.peek() == Task.ROOT) {
|
|
||||||
//we need to 'close' the root task to get nicer output
|
|
||||||
logger.taskFinished(event);
|
|
||||||
} else if (!suppressTaskFailures && event.getException() != null) {
|
|
||||||
//the first (innermost) task failure should always be logged
|
|
||||||
event.setMessage(event.getException().toString(), 0);
|
|
||||||
event.setException(null);
|
|
||||||
//note: we turn this into a plain message to avoid stack trace being logged by Idea
|
|
||||||
logger.messageLogged(event);
|
|
||||||
suppressTaskFailures = true;
|
|
||||||
}
|
|
||||||
tasks.pop();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void messageLogged(BuildEvent event) {
|
|
||||||
String msg = event.getMessage();
|
|
||||||
|
|
||||||
boolean processed = false;
|
|
||||||
|
|
||||||
if (!tasks.isEmpty()) {
|
|
||||||
Task task = tasks.peek();
|
|
||||||
for (MessageKind messageKind : task.msgs) {
|
|
||||||
if (messageKind.matches(msg)) {
|
|
||||||
event.setMessage(msg, messageKind.priority);
|
|
||||||
processed = true;
|
|
||||||
if (messageKind == MessageKind.JAVAC_CRASH) {
|
|
||||||
crashFound = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.getPriority() == MSG_ERR || crashFound) {
|
|
||||||
//we log errors regardless of owning task
|
|
||||||
logger.messageLogged(event);
|
|
||||||
suppressTaskFailures = true;
|
|
||||||
} else if (processed) {
|
|
||||||
logger.messageLogged(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
10
make/ide/idea/jdk/template/test.iml
Normal file
10
make/ide/idea/jdk/template/test.iml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://###MODULE_DIR###/test/jdk"></content>
|
||||||
|
<orderEntry type="sourceFolder" forTests="true" />
|
||||||
|
###TEST_MODULE_DEPENDENCIES###
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
@@ -4,13 +4,13 @@
|
|||||||
<option name="links">
|
<option name="links">
|
||||||
<list>
|
<list>
|
||||||
<IssueNavigationLink>
|
<IssueNavigationLink>
|
||||||
<option name="issueRegexp" value="\d{7}" />
|
<option name="issueRegexp" value="(?:^|\s|\p{Punct})(?:JDK-)?(\d{7})(?=$|\s|\p{Punct})" />
|
||||||
<option name="linkRegexp" value="https://bugs.openjdk.org/browse/JDK-$0" />
|
<option name="linkRegexp" value="https://bugs.openjdk.java.net/browse/JDK-$1" />
|
||||||
</IssueNavigationLink>
|
</IssueNavigationLink>
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="###ROOT_DIR###" vcs="###VCS_TYPE###" />
|
<mapping directory="###TOPLEVEL_PROJECT_DIR###" vcs="###VCS_TYPE###" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -2,63 +2,62 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<ignored path="jdk.iws" />
|
<ignored path="jdk.iws" />
|
||||||
<ignored path="###ROOT_DIR###/build/idea/out/" />
|
<ignored path="###PROJECT_DIR###/build/idea/out/" />
|
||||||
<ignored path=".idea/" />
|
<ignored path=".idea/" />
|
||||||
</component>
|
</component>
|
||||||
<component name="StructureViewFactory">
|
<component name="StructureViewFactory">
|
||||||
<option name="ACTIVE_ACTIONS" value=",ALPHA_COMPARATOR" />
|
<option name="ACTIVE_ACTIONS" value=",ALPHA_COMPARATOR" />
|
||||||
</component>
|
</component>
|
||||||
<component name="antWorkspaceConfiguration">
|
<component name="RunManager" selected="Shell Script.images">
|
||||||
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
|
<configuration name="clean" type="ShConfigurationType" folderName="make">
|
||||||
<option name="FILTER_TARGETS" value="false" />
|
<option name="SCRIPT_TEXT" value="###BASH_RUNNER_PREFIX### make clean" />
|
||||||
<buildFile url="file://###ROOT_DIR###/make/ide/idea/jdk/build.xml">
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
<runInBackground value="false" />
|
<option name="SCRIPT_PATH" value="" />
|
||||||
<targetFilters>
|
<option name="SCRIPT_OPTIONS" value="" />
|
||||||
<filter targetName="clean" isVisible="true" />
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
<filter targetName="images" isVisible="true" />
|
<option name="SCRIPT_WORKING_DIRECTORY" value="###PROJECT_DIR###" />
|
||||||
</targetFilters>
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
<treeView value="false" />
|
<option name="INTERPRETER_PATH" value="" />
|
||||||
<expanded value="true" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
</buildFile>
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
</component>
|
<option name="EXECUTE_SCRIPT_FILE" value="false" />
|
||||||
<component name="ProjectView">
|
<envs />
|
||||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
<method v="2" />
|
||||||
<flattenPackages />
|
</configuration>
|
||||||
<showMembers />
|
<configuration name="images" type="ShConfigurationType" folderName="make">
|
||||||
<showModules />
|
<option name="SCRIPT_TEXT" value="###BASH_RUNNER_PREFIX### make images" />
|
||||||
<showLibraryContents />
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
<hideEmptyPackages />
|
<option name="SCRIPT_PATH" value="" />
|
||||||
<abbreviatePackageNames />
|
<option name="SCRIPT_OPTIONS" value="" />
|
||||||
<autoscrollToSource />
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
<autoscrollFromSource />
|
<option name="SCRIPT_WORKING_DIRECTORY" value="###PROJECT_DIR###" />
|
||||||
<sortByType />
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
</navigator>
|
<option name="INTERPRETER_PATH" value="" />
|
||||||
<panes>
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<pane id="ProjectPane">
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
<subPane>
|
<option name="EXECUTE_SCRIPT_FILE" value="false" />
|
||||||
<PATH>
|
<envs />
|
||||||
<PATH_ELEMENT>
|
<method v="2" />
|
||||||
<option name="myItemId" value="jdk" />
|
</configuration>
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
<configuration name="reconfigure" type="ShConfigurationType" folderName="make">
|
||||||
</PATH_ELEMENT>
|
<option name="SCRIPT_TEXT" value="###BASH_RUNNER_PREFIX### make reconfigure" />
|
||||||
</PATH>
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
</subPane>
|
<option name="SCRIPT_PATH" value="" />
|
||||||
</pane>
|
<option name="SCRIPT_OPTIONS" value="" />
|
||||||
<pane id="PackagesPane">
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
<subPane>
|
<option name="SCRIPT_WORKING_DIRECTORY" value="###PROJECT_DIR###" />
|
||||||
<PATH>
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
<PATH_ELEMENT>
|
<option name="INTERPRETER_PATH" value="" />
|
||||||
<option name="myItemId" value="jdk" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
</PATH_ELEMENT>
|
<option name="EXECUTE_SCRIPT_FILE" value="false" />
|
||||||
<PATH_ELEMENT>
|
<envs />
|
||||||
<option name="myItemId" value="jdk" />
|
<method v="2" />
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
|
</configuration>
|
||||||
</PATH_ELEMENT>
|
<list>
|
||||||
</PATH>
|
<item itemvalue="Shell Script.images" />
|
||||||
</subPane>
|
<item itemvalue="Shell Script.clean" />
|
||||||
</pane>
|
<item itemvalue="Shell Script.reconfigure" />
|
||||||
<pane id="Scope" />
|
</list>
|
||||||
</panes>
|
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -1142,6 +1142,8 @@ public class WrapperGenerator {
|
|||||||
pw.println("/* This file is an automatically generated file, please do not edit this file, modify the XlibParser.java file instead !*/\n" );
|
pw.println("/* This file is an automatically generated file, please do not edit this file, modify the XlibParser.java file instead !*/\n" );
|
||||||
pw.println("#include <X11/Xlib.h>\n#include <X11/Xutil.h>\n#include <X11/Xos.h>\n#include <X11/Xatom.h>\n#include <stdio.h>\n");
|
pw.println("#include <X11/Xlib.h>\n#include <X11/Xutil.h>\n#include <X11/Xos.h>\n#include <X11/Xatom.h>\n#include <stdio.h>\n");
|
||||||
pw.println("#include <X11/extensions/Xdbe.h>");
|
pw.println("#include <X11/extensions/Xdbe.h>");
|
||||||
|
pw.println("#include <X11/extensions/XI2.h>");
|
||||||
|
pw.println("#include <X11/extensions/XInput2.h>");
|
||||||
pw.println("#include <X11/XKBlib.h>");
|
pw.println("#include <X11/XKBlib.h>");
|
||||||
pw.println("#include \"awt_p.h\"");
|
pw.println("#include \"awt_p.h\"");
|
||||||
pw.println("#include \"color.h\"");
|
pw.println("#include \"color.h\"");
|
||||||
|
|||||||
@@ -82,3 +82,13 @@ $(eval $(call SetupCopyLegalFiles, COPY_LEGAL, \
|
|||||||
TARGETS += $(COPY_LEGAL)
|
TARGETS += $(COPY_LEGAL)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
FONTFILE_SRC_DIR := $(TOPDIR)/src/java.desktop/share
|
||||||
|
FONTFILE_SRCS := $(wildcard $(FONTFILE_SRC_DIR)/fonts/*.ttf) $(wildcard $(FONTFILE_SRC_DIR)/fonts/*.otf) $(FONTFILE_SRC_DIR)/fonts/fonts.dir $(FONTFILE_SRC_DIR)/fonts/font.conf
|
||||||
|
FONTFILE_TARGET_FILES := $(subst $(FONTFILE_SRC_DIR),$(LIB_DST_DIR),$(FONTFILE_SRCS))
|
||||||
|
|
||||||
|
$(LIB_DST_DIR)/fonts/%: $(FONTFILE_SRC_DIR)/fonts/%
|
||||||
|
$(call install-file)
|
||||||
|
|
||||||
|
|
||||||
|
TARGETS += $(FONTFILE_TARGET_FILES)
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ ifeq ($(call isTargetOs, windows), true)
|
|||||||
$(TOPDIR)/src/$(MODULE)/share/native/common/font \
|
$(TOPDIR)/src/$(MODULE)/share/native/common/font \
|
||||||
$(TOPDIR)/src/$(MODULE)/share/native/common/java2d/opengl \
|
$(TOPDIR)/src/$(MODULE)/share/native/common/java2d/opengl \
|
||||||
$(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt/systemscale \
|
$(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt/systemscale \
|
||||||
|
$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/launcher \
|
||||||
#
|
#
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -117,6 +118,37 @@ endif
|
|||||||
|
|
||||||
# -fgcse-after-reload improves performance of MaskFill in Java2D by 20% for
|
# -fgcse-after-reload improves performance of MaskFill in Java2D by 20% for
|
||||||
# some gcc
|
# some gcc
|
||||||
|
|
||||||
|
# Setup NVDA a11y announcer
|
||||||
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
|
A11Y_NVDA_ANNOUNCING_CFLAGS := -DNO_A11Y_NVDA_ANNOUNCING
|
||||||
|
A11Y_NVDA_ANNOUNCING_LIBS :=
|
||||||
|
A11Y_NVDA_ANNOUNCING_DEPENDENCIES :=
|
||||||
|
|
||||||
|
ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
||||||
|
ifeq ($(A11Y_NVDA_ANNOUNCING_ENABLED), true)
|
||||||
|
A11Y_NVDA_ANNOUNCING_CFLAGS := $(NVDACONTROLLERCLIENT_CFLAGS)
|
||||||
|
A11Y_NVDA_ANNOUNCING_LIBS := $(NVDACONTROLLERCLIENT_LIB)
|
||||||
|
A11Y_NVDA_ANNOUNCING_DEPENDENCIES := $(NVDACONTROLLERCLIENT_DLL)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
LIBAWT_CFLAGS += $(A11Y_NVDA_ANNOUNCING_CFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Setup the client for the JAWS screen reader
|
||||||
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
|
A11Y_JAWS_ANNOUNCING_CFLAGS := -DNO_A11Y_JAWS_ANNOUNCING
|
||||||
|
|
||||||
|
ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
||||||
|
ifeq ($(A11Y_JAWS_ANNOUNCING_ENABLED), true)
|
||||||
|
A11Y_JAWS_ANNOUNCING_CFLAGS :=
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
LIBAWT_CFLAGS += $(A11Y_JAWS_ANNOUNCING_CFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
$(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
|
$(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
|
||||||
NAME := awt, \
|
NAME := awt, \
|
||||||
EXTRA_SRC := $(LIBAWT_EXTRA_SRC), \
|
EXTRA_SRC := $(LIBAWT_EXTRA_SRC), \
|
||||||
@@ -136,11 +168,12 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
|
|||||||
DISABLED_WARNINGS_clang_debug_trace.c := format-nonliteral, \
|
DISABLED_WARNINGS_clang_debug_trace.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_clang_Trace.c := format-nonliteral, \
|
DISABLED_WARNINGS_clang_Trace.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_clang_TransformHelper.c := sign-compare, \
|
DISABLED_WARNINGS_clang_TransformHelper.c := sign-compare, \
|
||||||
|
DISABLED_WARNINGS_clang_system_properties.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_microsoft := 4244 4996, \
|
DISABLED_WARNINGS_microsoft := 4244 4996, \
|
||||||
DISABLED_WARNINGS_microsoft_awt_Toolkit.cpp := 4267, \
|
DISABLED_WARNINGS_microsoft_awt_Toolkit.cpp := 4267, \
|
||||||
LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
|
LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
|
||||||
LDFLAGS_windows := -delayload:comctl32.dll -delayload:comdlg32.dll \
|
LDFLAGS_windows := -delayload:comctl32.dll -delayload:comdlg32.dll \
|
||||||
-delayload:gdi32.dll -delayload:imm32.dll -delayload:ole32.dll \
|
-delayload:gdi32.dll -delayload:gdiplus.dll -delayload:imm32.dll -delayload:ole32.dll \
|
||||||
-delayload:shell32.dll -delayload:shlwapi.dll -delayload:user32.dll \
|
-delayload:shell32.dll -delayload:shlwapi.dll -delayload:user32.dll \
|
||||||
-delayload:winmm.dll -delayload:winspool.drv, \
|
-delayload:winmm.dll -delayload:winspool.drv, \
|
||||||
JDK_LIBS_unix := -ljava -ljvm, \
|
JDK_LIBS_unix := -ljava -ljvm, \
|
||||||
@@ -157,8 +190,8 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
|
|||||||
-framework Metal \
|
-framework Metal \
|
||||||
-framework OpenGL, \
|
-framework OpenGL, \
|
||||||
LIBS_windows := advapi32.lib comctl32.lib comdlg32.lib delayimp.lib \
|
LIBS_windows := advapi32.lib comctl32.lib comdlg32.lib delayimp.lib \
|
||||||
gdi32.lib imm32.lib kernel32.lib ole32.lib shell32.lib shlwapi.lib \
|
gdi32.lib gdiplus.lib imm32.lib kernel32.lib ole32.lib shell32.lib shlwapi.lib \
|
||||||
user32.lib uuid.lib winmm.lib winspool.lib, \
|
user32.lib uuid.lib winmm.lib winspool.lib dwmapi.lib $(A11Y_NVDA_ANNOUNCING_LIBS), \
|
||||||
VERSIONINFO_RESOURCE := $(LIBAWT_VERSIONINFO_RESOURCE), \
|
VERSIONINFO_RESOURCE := $(LIBAWT_VERSIONINFO_RESOURCE), \
|
||||||
EXTRA_RCFLAGS := $(LIBAWT_RCFLAGS), \
|
EXTRA_RCFLAGS := $(LIBAWT_RCFLAGS), \
|
||||||
))
|
))
|
||||||
@@ -169,6 +202,18 @@ ifeq ($(call isTargetOs, macosx), true)
|
|||||||
$(BUILD_LIBAWT): $(BUILD_LIBMLIB_IMAGE)
|
$(BUILD_LIBAWT): $(BUILD_LIBMLIB_IMAGE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(call isTargetOs, windows)+$(ENABLE_HEADLESS_ONLY)+$(A11Y_NVDA_ANNOUNCING_ENABLED), true+false+true)
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_NVDA_DEPENDENCIES, \
|
||||||
|
FILES := $(A11Y_NVDA_ANNOUNCING_DEPENDENCIES), \
|
||||||
|
DEST := $(BUILD_LIBAWT_OUTPUT_DIR), \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(COPY_NVDA_DEPENDENCIES): $(A11Y_NVDA_ANNOUNCING_DEPENDENCIES)
|
||||||
|
$(BUILD_LIBAWT): $(COPY_NVDA_DEPENDENCIES)
|
||||||
|
|
||||||
|
TARGETS += $(COPY_NVDA_DEPENDENCIES)
|
||||||
|
endif
|
||||||
|
|
||||||
TARGETS += $(BUILD_LIBAWT)
|
TARGETS += $(BUILD_LIBAWT)
|
||||||
|
|
||||||
ifeq ($(call isTargetOs, windows macosx)+$(ENABLE_HEADLESS_ONLY), false+false)
|
ifeq ($(call isTargetOs, windows macosx)+$(ENABLE_HEADLESS_ONLY), false+false)
|
||||||
@@ -182,6 +227,19 @@ ifeq ($(call isTargetOs, windows macosx)+$(ENABLE_HEADLESS_ONLY), false+false)
|
|||||||
common/font \
|
common/font \
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
ifeq ($(A11Y_SPEECHD_ANNOUNCING_ENABLED), true)
|
||||||
|
A11Y_SPEECHD_ANNOUNCING_CFLAGS :=
|
||||||
|
else
|
||||||
|
A11Y_SPEECHD_ANNOUNCING_CFLAGS := -DNO_A11Y_SPEECHD_ANNOUNCING
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(call isTargetOs, linux), true)
|
||||||
|
LIBAWT_XAWT_EXTRA_SRC += \
|
||||||
|
$(TOPDIR)/src/$(MODULE)/linux/native/libawt_xawt \
|
||||||
|
#
|
||||||
|
endif
|
||||||
|
|
||||||
LIBAWT_XAWT_EXTRA_HEADER_DIRS := \
|
LIBAWT_XAWT_EXTRA_HEADER_DIRS := \
|
||||||
$(LIBAWT_DEFAULT_HEADER_DIRS) \
|
$(LIBAWT_DEFAULT_HEADER_DIRS) \
|
||||||
libawt_xawt/awt \
|
libawt_xawt/awt \
|
||||||
@@ -215,13 +273,15 @@ ifeq ($(call isTargetOs, windows macosx)+$(ENABLE_HEADLESS_ONLY), false+false)
|
|||||||
EXCLUDES := medialib debug, \
|
EXCLUDES := medialib debug, \
|
||||||
OPTIMIZATION := LOW, \
|
OPTIMIZATION := LOW, \
|
||||||
CFLAGS := -DXAWT -DXAWT_HACK $(LIBAWT_XAWT_CFLAGS) \
|
CFLAGS := -DXAWT -DXAWT_HACK $(LIBAWT_XAWT_CFLAGS) \
|
||||||
$(FONTCONFIG_CFLAGS) $(CUPS_CFLAGS) $(X_CFLAGS), \
|
$(FONTCONFIG_CFLAGS) $(CUPS_CFLAGS) $(X_CFLAGS) \
|
||||||
|
$(SPEECHD_CFLAGS) $(A11Y_SPEECHD_ANNOUNCING_CFLAGS), \
|
||||||
DISABLED_WARNINGS_gcc := int-to-pointer-cast, \
|
DISABLED_WARNINGS_gcc := int-to-pointer-cast, \
|
||||||
DISABLED_WARNINGS_gcc_awt_Taskbar.c := parentheses, \
|
DISABLED_WARNINGS_gcc_awt_Taskbar.c := parentheses, \
|
||||||
DISABLED_WARNINGS_gcc_GLXSurfaceData.c := unused-function, \
|
DISABLED_WARNINGS_gcc_GLXSurfaceData.c := unused-function, \
|
||||||
DISABLED_WARNINGS_gcc_gtk2_interface.c := parentheses type-limits, \
|
DISABLED_WARNINGS_gcc_gtk2_interface.c := parentheses type-limits, \
|
||||||
DISABLED_WARNINGS_gcc_gtk3_interface.c := parentheses type-limits \
|
DISABLED_WARNINGS_gcc_gtk3_interface.c := parentheses type-limits \
|
||||||
unused-function, \
|
unused-function, \
|
||||||
|
DISABLED_WARNINGS_gcc_keycode_cache.c := unused-function, \
|
||||||
DISABLED_WARNINGS_gcc_OGLBufImgOps.c := format-nonliteral, \
|
DISABLED_WARNINGS_gcc_OGLBufImgOps.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_gcc_OGLPaints.c := format-nonliteral, \
|
DISABLED_WARNINGS_gcc_OGLPaints.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_gcc_screencast_pipewire.c := undef, \
|
DISABLED_WARNINGS_gcc_screencast_pipewire.c := undef, \
|
||||||
@@ -254,7 +314,7 @@ ifeq ($(call isTargetOs, windows macosx)+$(ENABLE_HEADLESS_ONLY), false+false)
|
|||||||
LDFLAGS := -L$(INSTALL_LIBRARIES_HERE), \
|
LDFLAGS := -L$(INSTALL_LIBRARIES_HERE), \
|
||||||
JDK_LIBS_unix := -lawt -ljava -ljvm, \
|
JDK_LIBS_unix := -lawt -ljava -ljvm, \
|
||||||
LIBS_unix := $(LIBDL) $(LIBM) $(X_LIBS) -lX11 -lXext -lXi -lXrender \
|
LIBS_unix := $(LIBDL) $(LIBM) $(X_LIBS) -lX11 -lXext -lXi -lXrender \
|
||||||
-lXtst, \
|
-lXtst $(SPEECHD_LIBS), \
|
||||||
LIBS_linux := -lpthread, \
|
LIBS_linux := -lpthread, \
|
||||||
STATIC_LIB_EXCLUDE_OBJS := $(LIBAWT_XAWT_STATIC_EXCLUDE_OBJS), \
|
STATIC_LIB_EXCLUDE_OBJS := $(LIBAWT_XAWT_STATIC_EXCLUDE_OBJS), \
|
||||||
))
|
))
|
||||||
@@ -505,9 +565,9 @@ ifeq ($(call isTargetOs, windows), true)
|
|||||||
LIBFONTMANAGER_OPTIMIZATION := HIGHEST
|
LIBFONTMANAGER_OPTIMIZATION := HIGHEST
|
||||||
else ifeq ($(call isTargetOs, macosx), true)
|
else ifeq ($(call isTargetOs, macosx), true)
|
||||||
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c X11TextRenderer.c \
|
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c X11TextRenderer.c \
|
||||||
fontpath.c lcdglyph.c
|
lcdglyph.c lcdglyphDW.cpp
|
||||||
else
|
else
|
||||||
LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c lcdglyph.c
|
LIBFONTMANAGER_EXCLUDE_FILES += lcdglyph.c lcdglyphDW.cpp
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LIBFONTMANAGER_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS
|
LIBFONTMANAGER_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS
|
||||||
@@ -833,6 +893,8 @@ ifeq ($(call isTargetOs, macosx), true)
|
|||||||
DISABLED_WARNINGS_clang_OGLBufImgOps.c := format-nonliteral, \
|
DISABLED_WARNINGS_clang_OGLBufImgOps.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_clang_OGLPaints.c := format-nonliteral, \
|
DISABLED_WARNINGS_clang_OGLPaints.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_clang_PrinterView.m := enum-conversion, \
|
DISABLED_WARNINGS_clang_PrinterView.m := enum-conversion, \
|
||||||
|
DISABLED_WARNINGS_clang_SystemHotkey.m := format-nonliteral, \
|
||||||
|
DISABLED_WARNINGS_clang_system_properties.c := format-nonliteral, \
|
||||||
LDFLAGS := -L$(INSTALL_LIBRARIES_HERE), \
|
LDFLAGS := -L$(INSTALL_LIBRARIES_HERE), \
|
||||||
JDK_LIBS_macosx := -lawt -ljava -ljvm -lmlib_image -losxapp, \
|
JDK_LIBS_macosx := -lawt -ljava -ljvm -lmlib_image -losxapp, \
|
||||||
LIBS_macosx := $(LIBM) \
|
LIBS_macosx := $(LIBM) \
|
||||||
@@ -841,6 +903,7 @@ ifeq ($(call isTargetOs, macosx), true)
|
|||||||
-framework AudioToolbox \
|
-framework AudioToolbox \
|
||||||
-framework Carbon \
|
-framework Carbon \
|
||||||
-framework Cocoa \
|
-framework Cocoa \
|
||||||
|
-framework IOKit \
|
||||||
-framework ExceptionHandling \
|
-framework ExceptionHandling \
|
||||||
-framework JavaRuntimeSupport \
|
-framework JavaRuntimeSupport \
|
||||||
-framework Metal \
|
-framework Metal \
|
||||||
|
|||||||
@@ -115,6 +115,17 @@ else
|
|||||||
BUILD_JDK_JTREG_EXCLUDE += exeLibraryCache.c
|
BUILD_JDK_JTREG_EXCLUDE += exeLibraryCache.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_LIBS_libwindows_touch_robot := user32.lib
|
||||||
|
BUILD_JDK_JTREG_EXCLUDE += libtouchscreen_device.c
|
||||||
|
else
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS), linux)
|
||||||
|
BUILD_JDK_JTREG_EXCLUDE += libwindows_touch_robot.c
|
||||||
|
else
|
||||||
|
BUILD_JDK_JTREG_EXCLUDE += libtouchscreen_device.c libwindows_touch_robot.c
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(call isTargetOs, linux), true)
|
ifeq ($(call isTargetOs, linux), true)
|
||||||
# Unconditionally compile with debug symbols and don't ever perform
|
# Unconditionally compile with debug symbols and don't ever perform
|
||||||
# stripping during the test libraries' build.
|
# stripping during the test libraries' build.
|
||||||
|
|||||||
@@ -0,0 +1,320 @@
|
|||||||
|
package j2dbench.report;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.DirectoryIteratorException;
|
||||||
|
import java.nio.file.DirectoryStream;
|
||||||
|
import java.nio.file.FileSystem;
|
||||||
|
import java.nio.file.FileSystems;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class reads J2DBench scores and reports them into output stream in format applicable for TeamCity charts.
|
||||||
|
* The directory, where J2DBench result files placed, is specified via command line parameter like follows:
|
||||||
|
* <p>
|
||||||
|
* <code>-basexml | -b <xml file path></code>
|
||||||
|
* </p>
|
||||||
|
* This directory must contain one file with pattern <code>*{openjdk}*.{res}</code> which is considered as a container
|
||||||
|
* of reference scores and several <code>*{jbsdk}*.{res}</code>.
|
||||||
|
* <p>
|
||||||
|
* <p> Names of these files have several mandatory fields separated by <code>"_"</code> and look like
|
||||||
|
* <code>osName_jdkName_renderName_*.res</code>
|
||||||
|
* </p>
|
||||||
|
* <p>
|
||||||
|
* If any of score is less than corresponding reference value by 5% then exit code <code>1</code> is returned otherwise
|
||||||
|
* exit code <code>0</code> is returned.
|
||||||
|
* <p>
|
||||||
|
* Standard output will contain scores in format required for TeamCity charts.
|
||||||
|
* <p>
|
||||||
|
* Created by vprovodin on 13/02/2017.
|
||||||
|
*/
|
||||||
|
public class TCChartReporter {
|
||||||
|
|
||||||
|
private static boolean printTCValues = false;
|
||||||
|
private static boolean printValues = false;
|
||||||
|
|
||||||
|
private static final DecimalFormat decimalFormat =
|
||||||
|
new DecimalFormat("0.00");
|
||||||
|
|
||||||
|
private static FileSystem defaultFileSystem = FileSystems.getDefault();
|
||||||
|
|
||||||
|
private static double getMeasurementError(String testCaseName, String osName) {
|
||||||
|
if (testCaseName.contains("text.Rendering.tests.drawString") && osName.toLowerCase().contains("lin") )
|
||||||
|
return 0.18;
|
||||||
|
return 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Level at which tests are grouped to be displayed in summary
|
||||||
|
*/
|
||||||
|
private static final int LEVEL = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds the groups and corresponding group-display-names
|
||||||
|
*/
|
||||||
|
private static List<String> groups = new ArrayList<>();
|
||||||
|
private static Map<String, Double> referenceValues = new HashMap<>();
|
||||||
|
private static boolean testFailed = false;
|
||||||
|
|
||||||
|
private static void printUsage() {
|
||||||
|
String usage =
|
||||||
|
"\njava TCChartReporter [options] " +
|
||||||
|
" \n\n" +
|
||||||
|
"where options include: " +
|
||||||
|
" \n" +
|
||||||
|
" -basexml | -b <xml file path> " +
|
||||||
|
"path to base-build result";
|
||||||
|
System.out.println(usage);
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* String = getTestResultsTableForSummary()
|
||||||
|
*/
|
||||||
|
private static double generateTestCaseReport(
|
||||||
|
Object key,
|
||||||
|
Map<String, J2DAnalyzer.ResultHolder> testCaseResult,
|
||||||
|
Map<String, Integer> testCaseResultCount) {
|
||||||
|
|
||||||
|
Integer curTestCountObj = testCaseResultCount.get(key.toString());
|
||||||
|
int curTestCount = 0;
|
||||||
|
if (curTestCountObj != null) {
|
||||||
|
curTestCount = curTestCountObj;
|
||||||
|
}
|
||||||
|
|
||||||
|
double totalScore = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < curTestCount; i++) {
|
||||||
|
J2DAnalyzer.ResultHolder resultTCR = testCaseResult.get(key.toString() + "_" + i);
|
||||||
|
totalScore = totalScore + resultTCR.getScore();
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalScore;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate Testcase Summary Report for TC - *.out
|
||||||
|
*/
|
||||||
|
private static void generateTestCaseSummaryReport(
|
||||||
|
String OJRname,
|
||||||
|
Map<String, Double> consoleResult,
|
||||||
|
Map<String, J2DAnalyzer.ResultHolder> testCaseResult,
|
||||||
|
Map<String, Integer> testCaseResultCount,
|
||||||
|
boolean rememberReference) {
|
||||||
|
|
||||||
|
String curGroupName, curTestName;
|
||||||
|
|
||||||
|
Object[] groupNameArray = groups.toArray();
|
||||||
|
|
||||||
|
Object[] testCaseList = consoleResult.keySet().toArray();
|
||||||
|
Arrays.sort(testCaseList);
|
||||||
|
|
||||||
|
for (Object aGroupNameArray : groupNameArray) {
|
||||||
|
|
||||||
|
double value;
|
||||||
|
curGroupName = aGroupNameArray.toString();
|
||||||
|
|
||||||
|
for (Object aTestCaseList : testCaseList) {
|
||||||
|
|
||||||
|
curTestName = aTestCaseList.toString();
|
||||||
|
|
||||||
|
if (curTestName.contains(curGroupName)) {
|
||||||
|
|
||||||
|
value = generateTestCaseReport(curTestName, testCaseResult, testCaseResultCount);
|
||||||
|
|
||||||
|
if (printTCValues)
|
||||||
|
System.out.println("##teamcity[buildStatisticValue key='" + (OJRname.isEmpty() ? "" : OJRname + ".") + curTestName
|
||||||
|
+ "' value='" + decimalFormat.format(value) + "']");
|
||||||
|
if (printValues)
|
||||||
|
System.out.println((OJRname.isEmpty() ? "" : OJRname + ".") + curTestName + "," + decimalFormat.format(value));
|
||||||
|
if (rememberReference) {
|
||||||
|
referenceValues.put(curTestName, value);
|
||||||
|
} else {
|
||||||
|
double refValue = referenceValues.getOrDefault(curTestName, 0.);
|
||||||
|
if (Math.abs(value/refValue - 1) >= getMeasurementError(curTestName, OJRname)) {
|
||||||
|
System.err.println(OJRname);
|
||||||
|
System.err.println(curTestName);
|
||||||
|
System.err.println("\treferenceValue=" + refValue);
|
||||||
|
System.err.println("\t actualValue=" + value);
|
||||||
|
System.err.println("\t diff:" + ((value / refValue - 1) * 100));
|
||||||
|
testFailed = (value < refValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main
|
||||||
|
*/
|
||||||
|
public static void main(String args[]) {
|
||||||
|
|
||||||
|
String baseXML = null;
|
||||||
|
int group = 2;
|
||||||
|
|
||||||
|
/* ---- Analysis Mode ----
|
||||||
|
BEST = 1;
|
||||||
|
WORST = 2;
|
||||||
|
AVERAGE = 3;
|
||||||
|
MIDAVG = 4;
|
||||||
|
------------------------ */
|
||||||
|
int analyzerMode = 4;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
for (int i = 0; i < args.length; i++) {
|
||||||
|
|
||||||
|
if (args[i].startsWith("-basexml") ||
|
||||||
|
args[i].startsWith("-b")) {
|
||||||
|
i++;
|
||||||
|
baseXML = args[i];
|
||||||
|
} else if (args[i].startsWith("-tc")) {
|
||||||
|
printTCValues = true;
|
||||||
|
} else if (args[i].startsWith("-v"))
|
||||||
|
printValues = true;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
printUsage();
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLHTMLReporter.setGroupLevel(group);
|
||||||
|
J2DAnalyzer.setMode(analyzerMode);
|
||||||
|
if (baseXML != null) {
|
||||||
|
generateComparisonReport(defaultFileSystem.getPath(baseXML));
|
||||||
|
} else {
|
||||||
|
printUsage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (testFailed)
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add Test Group to the list
|
||||||
|
*/
|
||||||
|
private static void addGroup(String testName) {
|
||||||
|
|
||||||
|
String testNameSplit[] = testName.replace('.', '_').split("_");
|
||||||
|
StringBuilder group = new StringBuilder(testNameSplit[0]);
|
||||||
|
for (int i = 1; i < LEVEL; i++) {
|
||||||
|
group.append(".").append(testNameSplit[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!groups.contains(group.toString()))
|
||||||
|
groups.add(group.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Path> listResFiles(Path dir, String pattern) throws IOException {
|
||||||
|
List<Path> result = new ArrayList<>();
|
||||||
|
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, pattern)) {
|
||||||
|
for (Path entry : stream) {
|
||||||
|
result.add(entry);
|
||||||
|
}
|
||||||
|
} catch (DirectoryIteratorException ex) {
|
||||||
|
throw ex.getCause();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate the reports from the base & target result XML
|
||||||
|
*/
|
||||||
|
private static void generateComparisonReport(Path directoryToResFiles) {
|
||||||
|
|
||||||
|
if (directoryToResFiles.toFile().isDirectory()) {
|
||||||
|
List<Path> jbsdkFiles, openjdkFiles;
|
||||||
|
|
||||||
|
try {
|
||||||
|
jbsdkFiles = listResFiles(directoryToResFiles, "*{jbsdk,jbre}*.{res}");
|
||||||
|
openjdkFiles = listResFiles(directoryToResFiles, "*{openjdk}*.{res}");
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
readScores(openjdkFiles.get(0), true);
|
||||||
|
|
||||||
|
for (Path file : jbsdkFiles) {
|
||||||
|
readScores(file, false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
readScores(directoryToResFiles, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void readScores(Path file, boolean rememberReference) {
|
||||||
|
String fileName = file.getName(file.getNameCount() - 1).toString();
|
||||||
|
String osName="", jdkName="", renderName="";
|
||||||
|
if (fileName.contains("win") || fileName.contains("linux") || fileName.contains("osx")) {
|
||||||
|
String[] fileNameComponents = fileName.split("_");
|
||||||
|
if (fileNameComponents.length > 0)
|
||||||
|
osName = fileNameComponents[0];
|
||||||
|
if (fileNameComponents.length > 1)
|
||||||
|
jdkName = fileNameComponents[1];
|
||||||
|
if (fileNameComponents.length > 2)
|
||||||
|
renderName = fileNameComponents[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
String resultXMLFileName = file.toString();
|
||||||
|
|
||||||
|
J2DAnalyzer.results = new Vector();
|
||||||
|
J2DAnalyzer.readResults(resultXMLFileName);
|
||||||
|
J2DAnalyzer.SingleResultSetHolder baseSRSH =
|
||||||
|
(J2DAnalyzer.SingleResultSetHolder) J2DAnalyzer.results.elementAt(0);
|
||||||
|
Enumeration baseEnum_ = baseSRSH.getKeyEnumeration();
|
||||||
|
Vector<String> baseKeyvector = new Vector<>();
|
||||||
|
while (baseEnum_.hasMoreElements()) {
|
||||||
|
baseKeyvector.add((String) baseEnum_.nextElement());
|
||||||
|
}
|
||||||
|
String baseKeys[] = new String[baseKeyvector.size()];
|
||||||
|
baseKeyvector.copyInto(baseKeys);
|
||||||
|
J2DAnalyzer.sort(baseKeys);
|
||||||
|
|
||||||
|
Map<String, Double> consoleBaseRes = new HashMap<>();
|
||||||
|
|
||||||
|
Map<String, J2DAnalyzer.ResultHolder> testCaseBaseResult = new HashMap<>();
|
||||||
|
Map<String, Integer> testCaseResultCount = new HashMap<>();
|
||||||
|
|
||||||
|
for (String baseKey : baseKeys) {
|
||||||
|
|
||||||
|
J2DAnalyzer.ResultHolder baseTCR =
|
||||||
|
baseSRSH.getResultByKey(baseKey);
|
||||||
|
|
||||||
|
Integer curTestCountObj = testCaseResultCount.get(baseTCR.getName());
|
||||||
|
int curTestCount = 0;
|
||||||
|
if (curTestCountObj != null) {
|
||||||
|
curTestCount = curTestCountObj;
|
||||||
|
}
|
||||||
|
curTestCount++;
|
||||||
|
testCaseBaseResult.put(baseTCR.getName() + "_" + (curTestCount - 1), baseTCR);
|
||||||
|
testCaseResultCount.put(baseTCR.getName(), curTestCount);
|
||||||
|
|
||||||
|
addGroup(baseTCR.getName());
|
||||||
|
|
||||||
|
Double curTotalScoreObj = consoleBaseRes.get(baseTCR.getName());
|
||||||
|
double curTotalScore = 0;
|
||||||
|
if (curTotalScoreObj != null) {
|
||||||
|
curTotalScore = curTotalScoreObj;
|
||||||
|
}
|
||||||
|
curTotalScore = curTotalScore + baseTCR.getScore();
|
||||||
|
consoleBaseRes.put(baseTCR.getName(), curTotalScore);
|
||||||
|
}
|
||||||
|
|
||||||
|
String OJRname = osName + "." + jdkName + "." + renderName;
|
||||||
|
generateTestCaseSummaryReport((OJRname.length() == 2? "": OJRname),
|
||||||
|
consoleBaseRes,
|
||||||
|
testCaseBaseResult,
|
||||||
|
testCaseResultCount,
|
||||||
|
rememberReference);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1101,6 +1101,10 @@ void *os::dll_load(const char *filename, char *ebuf, int ebuflen) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void * os::dll_load_utf8(const char *filename, char *ebuf, int ebuflen) {
|
||||||
|
return os::dll_load(filename, ebuf, ebuflen);
|
||||||
|
}
|
||||||
|
|
||||||
void os::print_dll_info(outputStream *st) {
|
void os::print_dll_info(outputStream *st) {
|
||||||
st->print_cr("Dynamic libraries:");
|
st->print_cr("Dynamic libraries:");
|
||||||
LoadedLibraries::print(st);
|
LoadedLibraries::print(st);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user