Mercurial > hg > icedtea7-forest
changeset 1410:0c642b015379 icedtea-2.7.0pre07
Merge jdk7u111-b01
author | andrew |
---|---|
date | Wed, 07 Sep 2016 06:06:17 +0100 |
parents | 852d913b4f57 (diff) d9cb02144778 (current diff) |
children | e95e10d502c6 |
files | .hgtags |
diffstat | 11 files changed, 1048 insertions(+), 150 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Fri Jul 22 15:37:49 2016 +0100 +++ b/.hgtags Wed Sep 07 06:06:17 2016 +0100 @@ -50,6 +50,7 @@ 3ac6dcf7823205546fbbc3d4ea59f37358d0b0d4 jdk7-b73 2c88089b6e1c053597418099a14232182c387edc jdk7-b74 d1516b9f23954b29b8e76e6f4efc467c08c78133 jdk7-b75 +f0bfd9bd1a0e674288a8a4d17dcbb9e632b42e6d icedtea7-1.12 c8b63075403d53a208104a8a6ea5072c1cb66aab jdk7-b76 1f17ca8353babb13f4908c1f87d11508232518c8 jdk7-b77 ab4ae8f4514693a9fe17ca2fec0239d8f8450d2c jdk7-b78 @@ -63,6 +64,7 @@ 433a60a9c0bf1b26ee7e65cebaa89c541f497aed jdk7-b86 6b1069f53fbc30663ccef49d78c31bb7d6967bde jdk7-b87 82135c848d5fcddb065e98ae77b81077c858f593 jdk7-b88 +195fcceefddce1963bb26ba32920de67806ed2db icedtea7-1.13 7f1ba4459972bf84b8201dc1cc4f62b1fe1c74f4 jdk7-b89 425ba3efabbfe0b188105c10aaf7c3c8fa8d1a38 jdk7-b90 97d8b6c659c29c8493a8b2b72c2796a021a8cf79 jdk7-b91 @@ -111,6 +113,7 @@ ddc2fcb3682ffd27f44354db666128827be7e3c3 jdk7-b134 783bd02b4ab4596059c74b10a1793d7bd2f1c157 jdk7-b135 2fe76e73adaa5133ac559f0b3c2c0707eca04580 jdk7-b136 +d4aea1a51d625f5601c840714c7c94f1de5bc1af icedtea-1.14 7654afc6a29e43cb0a1343ce7f1287bf690d5e5f jdk7-b137 fc47c97bbbd91b1f774d855c48a7e285eb1a351a jdk7-b138 7ed6d0b9aaa12320832a7ddadb88d6d8d0dda4c1 jdk7-b139 @@ -123,6 +126,7 @@ 2d38c2a79c144c30cd04d143d83ee7ec6af40771 jdk7-b146 3ac30b3852876ccad6bd61697b5f9efa91ca7bc6 jdk7u1-b01 d91364304d7c4ecd34caffdba2b840aeb0d10b51 jdk7-b147 +3defd24c2671eb2e7796b5dc45b98954341d73a7 icedtea-2.0-branchpoint 34451dc0580d5c95d97b95a564e6198f36545d68 jdk7u1-b02 bf735d852f79bdbb3373c777eec3ff27e035e7ba jdk7u1-b03 f66a2bada589f4157789e6f66472954d2f1c114e jdk7u1-b04 @@ -141,6 +145,7 @@ b2deaf5bde5ec455a06786e8e2aea2e673be13aa jdk7u2-b12 c95558e566ac3605c480a3d070b1102088dab07f jdk7u2-b13 e30fd289f0019700575593ee4e1635fbc5c9a484 jdk7u2-b21 +a66b58021165f5a43e3974fe5fb9fead29824098 icedtea-2.1-branchpoint e30fd289f0019700575593ee4e1635fbc5c9a484 jdk7u3-b02 becd013ae6072a6633ba015fc4f5862fca589cee jdk7u3-b03 d64361a28584728aa25dca3781cffbaf4199e088 jdk7u3-b04 @@ -157,6 +162,7 @@ 2b07c262a8a9ff78dc908efb9d7b3bb099df9ac4 jdk7u4-b10 1abfee16e8cc7e3950052befa78dbf14a5ca9cfc jdk7u4-b11 e6f915094dccbba16df6ebeb002e6867392eda40 jdk7u4-b12 +e7886f5ad6cc837092386fa513e670d4a770456c icedtea-2.2-branchpoint 9108e3c2f07ffa218641d93893ac9928e95d213a jdk7u4-b13 d9580838fd08872fc0da648ecfc6782704b4aac1 jdk7u4-b14 008753000680a2008175d14b25373356f531aa07 jdk7u4-b15 @@ -186,11 +192,15 @@ 5f3645aa920d373b26d01b21f3b8b30fc4e10a0d jdk7u6-b10 cd64596c2dd7f195a6d38b6269bab23e7fad4361 jdk7u6-b11 61cfcee1d00cb4af288e640216af2bccbc3c9ef0 jdk7u6-b12 +cdab3bfb573b8832d539a8fa3e9c20f9f4965132 ppc-aix-port-b01 +06179726206f1411ed254f786be3477ca5763e37 ppc-aix-port-b02 +50f2b3cacf77467befb95b7d4fea15bbdb4d650a ppc-aix-port-b03 9b9a6d318e8aa5b8f0e42d2d3d2c0c34cb3f986d jdk7u6-b13 eff9ea1ca63df8656ebef9fedca0c647a210d807 jdk7u6-b14 528f1589f5f2adf18d5d21384ba668b9aa79841e jdk7u6-b15 7b77364eb09faac4c37ce9dd2c2308ca5525f18f jdk7u6-b16 b7c1b441d131c70278de299b5d1e59dce0755dc5 jdk7u6-b17 +0e7b94bd450d4270d4e9bd6c040c94fa4be714a6 icedtea-2.3-branchpoint 9c41f7b1460b106d18676899d24b6ea07de5a369 jdk7u6-b18 56291720b5e578046bc02761dcad2a575f99fd8e jdk7u6-b19 e79fa743fe5a801db4acc7a7daa68f581423e5d3 jdk7u6-b20 @@ -258,11 +268,13 @@ c3e42860af1cfd997fe1895594f652f0d1e9984e jdk7u12-b07 1a03ef4794dc8face4de605ae480d4c763e6b494 jdk7u12-b08 87cf81226f2012e5c21131adac7880f7e4da1133 jdk7u12-b09 +8a10a3c51f1cd88009008cf1b82071797b5f516d icedtea-2.4-branchpoint 745a15bb6d94765bb5c68048ff146590df9b8441 jdk7u14-b10 2d8fdaa5bb55b937028e385633ce58de4dcdb69c jdk7u14-b11 594dbbbb84add4aa310d51af7e298470d8cda458 jdk7u14-b12 ae5c1b29297dae0375277a0b6428c266d8d77c71 jdk7u14-b13 bb97ad0c9e5a0566e82b3b4bc43eabe680b89d97 jdk7u14-b14 +a20ac67cdbc245d1c14fec3061703232501f8334 ppc-aix-port-b04 b534282bd377e3886b9d0d4760f6fdaa1804bdd3 jdk7u14-b15 0e52db2d9bb8bc789f6c66f2cfb7cd2d3b0b16c6 jdk7u15-b01 0324fca94d073b3aad77658224f17679f25c18b1 jdk7u15-b02 @@ -379,6 +391,7 @@ f0cdb08a4624a623bdd178b04c4bf5a2fa4dc39a jdk7u45-b18 82f1f76c44124c31cb1151833fc15c13547ab280 jdk7u45-b30 f4373de4b75ba8d7f7a5d9c1f77e7884d9064b7e jdk7u45-b31 +11147a12bd8c6b02f98016a8d1151e56f42a43b6 jdk7u60-b00 b73c006b5d81528dfb4104a79b994b56675bf75d jdk7u45-b33 05742477836cb30235328181c8e6cae5d4bb06fd jdk7u45-b34 d0d5badd77abce0469830466ff7b910d3621d847 jdk7u45-b35 @@ -428,8 +441,11 @@ 11147a12bd8c6b02f98016a8d1151e56f42a43b6 jdk7u60-b00 88113cabda386320a087b288d43e792f523cc0ba jdk7u60-b01 6bdacebbc97f0a03be45be48a6d5b5cf2f7fe77d jdk7u60-b02 +ba9872fc05cc333e3960551ae9fa61d51b8d5e06 icedtea-2.5pre01 +fc5d15cc35b4b47fe403c57fe4bf224fcfe1426c icedtea-2.5pre02 87f2193da40d3a2eedca95108ae78403c7bdcd49 jdk7u60-b03 d4397128f8b65eb96287128575dd1a3da6a7825b jdk7u60-b04 +9d6e6533c1e5f6c335a604f5b58e6f4f93b3e3dd icedtea-2.6pre01 ea798405286d97f643ef809abcb1e13024b4f951 jdk7u60-b05 b0940b205cab942512b5bca1338ab96a45a67832 jdk7u60-b06 cae7bacaa13bb8c42a42fa35b156a7660874e907 jdk7u60-b07 @@ -439,7 +455,11 @@ 798468b91bcbb81684aea8620dbb31eaceb24c6c jdk7u60-b11 e40360c10b2ce5b24b1eea63160b78e112aa5d3f jdk7u60-b12 5e540a4d55916519f5604a422bfbb7a0967d0594 jdk7u60-b13 +07a06f1124248527df6a0caec615198a75f54673 icedtea-2.6pre02 +edf01342f3cb375746dba3620d359ac9a6e50aa8 icedtea-2.6pre03 1ca6a368aec38ee91a41dc03899d7dc1037de44d jdk7u60-b14 +9f06098d4daa523fa85f5ee133ef91c3ecc1f242 icedtea-2.6pre04 +7c68cd21751684d6da92ef83e0128f473d2dddd6 icedtea-2.6pre05 a95b821a2627295b90fb4ae8f3b8bc2ff9c64acc jdk7u60-b15 19a3f6f48c541a8cf144eedffa0e52e108052e82 jdk7u60-b16 472f5930e6cc8f307b5508995ee2edcf9913a852 jdk7u60-b17 @@ -579,10 +599,27 @@ 127bfeeddc9cf2f8cbf58052f32f6c8676fb8840 jdk7u79-b15 d4397128f8b65eb96287128575dd1a3da6a7825b jdk7u80-b00 90564f0970e92b844122be27f051655aef6dc423 jdk7u80-b01 +390d699dae6114bbe08e4a9bb8da6fec390fb5d8 icedtea-2.6pre07 +b07e2aed0a26019953ce2ac6b88e73091374a541 icedtea-2.6pre06 +df23e37605061532939ee85bba23c8368425deee icedtea-2.6pre08 36e8397bf04d972519b80ca9e24e68a2ed1e4dbd jdk7u80-b02 +7faf56bdd78300c06ef2dae652877d17c9be0037 icedtea-2.6pre09 +200124c2f78dbf82ea3d023fab9ce4636c4fd073 icedtea-2.6pre10 +05e485acec14af17c2fc4d9d29d58b14f1a0f960 icedtea-2.6pre11 4093bbbc90009bfd9311ccd6373c7a2f2755c9d9 jdk7u80-b03 +b70554883dbd0b13fdb3a7230ac8102c7c61f475 icedtea-2.6pre12 +f16c298d91bda698cd428254df2c3d2d21cc83c0 icedtea-2.6pre13 +97260abdb038f6ff28ea93a19e82b69fd73a344c icedtea-2.6pre14 +bda108a874bc1678966b65e97a87fac293a54fc8 icedtea-2.6pre15 +78bdb9406195da1811f2f52b46dec790158ca364 icedtea-2.6pre16 +f92696272981c10e64a80cb91ca6a747d8de3188 icedtea-2.6pre17 928d01695cd2b65119bbfcd51032ae427a66f83d jdk7u80-b04 46d516760a680deaeffdb03e3221648bc14c0818 jdk7u80-b05 +e229119aa0a088058254ee783b0437ee441d0017 icedtea-2.6pre18 +55ce37199ce35e9c554fefb265a98ec137acbaa2 icedtea-2.6pre19 +10d65b91c33c9b87bc6012ce753daed42c840dde icedtea-2.6pre20 +513069c9fc2037af7038dc44b0f26057fa815584 icedtea-2.6pre21 +851deec2e741fcb09bf96fc7a15ae285890fb832 icedtea-2.6pre22 8fffdc2d1faaf2c61abff00ee41f50d28da2174a jdk7u80-b06 6d0aaea852b04d7270fde5c289827b00f2391374 jdk7u80-b07 e8daab5fb25eb513c53d6d766d50caf662131d79 jdk7u80-b08 @@ -595,9 +632,19 @@ 611f7d38d9346243b558dc78409b813241eb426f jdk7u80-b30 f19659de2034611095d307ccc68f777abc8b008e jdk7u80-b15 458545155c9326c27b4e84a8a087f4419e8f122e jdk7u80-b32 -3b6a81ffb63654d5148168c2ba00288dfc833fe4 jdk7u85-b00 -76707a6d46afa9a057756f4d3614c0da1320499c jdk7u85-b01 +88ad67ad5b51c1e7316828de177808d4776b5357 icedtea-2.6pre23 +dbfa75121acab9c4dfbf5b28e3eba0e58905c4ef icedtea-2.6pre24 +8d08525bb2541367a4908a5f97298e0b21c12280 jdk7u85-b00 +e3845b02b0d1bfe203ab4783941d852a2b2d412d jdk7u85-b01 +dbfa75121acab9c4dfbf5b28e3eba0e58905c4ef icedtea-2.6.0 +dbfa75121acab9c4dfbf5b28e3eba0e58905c4ef icedtea-2.6-branchpoint +39b2c4354d0a235a5bc20ce286374bb242e9c62d icedtea-2.7.0pre01 +7c427330aa46824ba2f4035a0149697e523d092c icedtea-2.7.0pre02 bc294917c5eb1ea2e655a2fcbd8fbb2e7cbd3313 jdk7u85-b02 +8a0021f6f237c04e3a672910fe34d72f8d35c0a5 icedtea-2.7.0pre03 +613ca59d428dedcdaf9bfb08bcc42f954177e4de icedtea-2.7.0pre04 +7f245987a28767ea9f74c69f513e9fef667dfdb0 icedtea-2.7.0pre05 +05d8ac2f0610fe547f07ade6b7774c60e2ae8ad4 icedtea-2.7.0pre06 63d687368ce5bca36efbe48db2cf26df171b162d jdk7u91-b00 03b03194afbe87a049a1c6d83f49788602c363d8 jdk7u91-b01 2be0ab1a24b2b6910d8f31e3314ffa48f30f21df jdk7u91-b02
--- a/.jcheck/conf Fri Jul 22 15:37:49 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -project=jdk7 -bugids=dup
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README-ppc.html Wed Sep 07 06:06:17 2016 +0100 @@ -0,0 +1,689 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"> +<head> + <title>OpenJDK PowerPC/AIX Port</title> + <style type="text/css" id="internalStyle"> + pre.terminal { + display: table; + color: white; + background-color: black; + border-style: solid; + border-width: 1px; + border-color: darkgray; + margin: 8px 0px 5px 0px; + padding: 2px; + width: auto; + overflow: auto; + font-family: monospace; + } + div.toc { + background-color: #ffffee; + border-bottom: 1px solid #cccccc; + border-top: 1px solid #cccccc; + border-left: 1px solid #cccccc; + border-right: 1px solid #cccccc; + padding: 5px; + position: fixed; + top: 10px; + right: 10px; + margin: 0px 5px 5px 5px; + line-height: 1.5em; + font-size: 80%; + } + div.tocHeader { + float: right; + } + div.toc ul { + list-style: none; + margin-left: 10px; + padding: 0; + } + + div.tocBody > ul > li { + counter-reset: toc2_counter toc3_counter toc4_counter toc5_counter toc6_counter; + } + div.tocBody > ul ul > li { + counter-reset: toc3_counter toc4_counter toc5_counter toc6_counter; + } + div.tocBody > ul ul ul > li { + counter-reset: toc4_counter toc5_counter toc6_counter; + } + div.tocBody > ul ul ul ul > li { + counter-reset: toc5_counter toc6_counter; + } + div.tocBody > ul ul ul ul ul > li { + counter-reset: toc6_counter; + } + div.tocBody > ul ul > li:before { + content: counter(toc2_counter) "\0000a0"; + counter-increment: toc2_counter; + } + div.tocBody > ul ul ul > li:before { + content: counter(toc2_counter) "." counter(toc3_counter) "\0000a0"; + counter-increment: toc3_counter; + } + div.tocBody > ul ul ul ul > li:before { + content: counter(toc2_counter) "." counter(toc3_counter) "." counter(toc4_counter) "\0000a0"; + counter-increment: toc4_counter; + } + div.tocBody > ul ul ul ul ul > li:before { + content: counter(toc2_counter) "." counter(toc3_counter) "." counter(toc4_counter) "." counter(toc5_counter) "\0000a0"; + counter-increment: toc5_counter; + } + div.tocBody > ul ul ul ul ul ul > li:before { + content: counter(toc2_counter) "." counter(toc3_counter) "." counter(toc4_counter) "." counter(toc5_counter) "." counter(toc6_counter) "\0000a0"; + counter-increment: toc6_counter; + } + + + body { + counter-reset: h2_counter h3_counter h4_counter h5_counter h6_counter; + } + h1 { + counter-reset: h2_counter h3_counter h4_counter h5_counter h6_counter; + } + h2 { + counter-reset: h3_counter h4_counter h5_counter h6_counter; + } + h3 { + counter-reset: h4_counter h5_counter h6_counter; + } + h4 { + counter-reset: h5_counter h6_counter; + } + h5 { + counter-reset: h6_counter; + } + h2:before { + content: counter(h2_counter) "\0000a0"; + counter-increment: h2_counter; + } + h3:before { + content: counter(h2_counter) "." counter(h3_counter) "\0000a0"; + counter-increment: h3_counter; + } + h4:before { + content: counter(h2_counter) "." counter(h3_counter) "." counter(h4_counter) "\0000a0"; + counter-increment: h4_counter; + } + h5:before { + content: counter(h2_counter) "." counter(h3_counter) "." counter(h4_counter) "." counter(h5_counter) "\0000a0"; + counter-increment: h5_counter; + } + h6:before { + content: counter(h2_counter) "." counter(h3_counter) "." counter(h4_counter) "." counter(h5_counter) "." counter(h6_counter) "\0000a0"; + counter-increment: h6_counter; + } + </style> + <script> + function findElements(node, filter) { + var result = new Array(); + var children = node.childNodes; + if (children.length === 0) return result; + for (var i=0; children[i]; i++) { + var child = children[i]; + if (filter(child)) { + result.push(child); + result = result.concat(findElements(child, filter)); + } + } + return result; + } + + function headingFilter(node) { + if (node.nodeType === 1 /*Node.ELEMENT_NODE*/ && /[hH][1-6]/.test(node.nodeName)) { + return true; + } + return false; + } + + function showOrHideTOC(tocID, buttonID) { + var toc = document.getElementById(tocID); + var button = document.getElementById(buttonID); + if (toc.style.display === "none") { + toc.style.display="block"; + // Use a Unicode "minus" here, to make it the same width like a "plus" + // (see http://en.wikipedia.org/wiki/Minus_sign#Character_codes) + button.innerHTML = "[\u2212] "; + } else { + toc.style.display="none"; + button.innerHTML = "[+] "; + } + } + + function createTOCHeader() { + var tocHeader = document.createElement('div'); + tocHeader.setAttribute("class", "tocHeader"); + var a = document.createElement('a'); + a.setAttribute("href","#"); + a.setAttribute("onclick","showOrHideTOC('_TOC_BODY_', '_TOC_EXPAND_BUTTON_'); return false;"); + var span = document.createElement('span'); + span.setAttribute("id", "_TOC_EXPAND_BUTTON_"); + span.appendChild(document.createTextNode("[\u2212] ")); + a.appendChild(span); + a.appendChild(document.createTextNode("Table of Contents")); + tocHeader.appendChild(a); + return tocHeader; + } + + function createTOCBody() { + var tocBody = document.createElement('div'); + tocBody.setAttribute("class", "tocBody"); + tocBody.setAttribute("id", "_TOC_BODY_"); + return tocBody; + } + + function createTOCElement(tocHeader, tocBody) { + var toc = document.createElement('div'); + toc.setAttribute("class", "toc"); + toc.appendChild(tocHeader); + toc.appendChild(tocBody); + return toc; + } + + function insertAnchor(heading, anchor) { + var tag = document.createElement('a'); + tag.setAttribute('name', anchor); + heading.parentNode.insertBefore(tag, heading); + } + + function createLink(heading, anchor) { + var li = document.createElement('li'); + var a = document.createElement('a'); + a.setAttribute('href', "#" + anchor); + a.innerHTML = heading.innerHTML; + li.appendChild(a); + return li; + } + + function createTOC(createIndex) { + if(typeof(createIndex)==='undefined') createIndex = false; + var headings = findElements(document.body, headingFilter); + var tocHeader = createTOCHeader(); + var tocBody = createTOCBody(); + var toc = createTOCElement(tocHeader, tocBody); + var ul = document.createElement('ul'); + tocBody.appendChild(ul); + var currentLevel = 1; + for (var i=0; headings[i]; i++) { + var heading = headings[i]; + var anchor = "_TOC_ANCHOR_" + i + "_"; + // Create anchor just before the heading + insertAnchor(heading, anchor); + // Create the corresponding TOC entry which links right to 'anchor' + var level = parseInt(heading.nodeName.charAt(1), 10); + while (level > currentLevel) { + var _ul = document.createElement('ul'); + if (ul.lastChild === null) { + ul.appendChild(_ul); + } + else { + ul.lastChild.appendChild(_ul); + } + ul = _ul; + currentLevel++; + } + while (level < currentLevel) { + do { + ul = ul.parentNode; + } while (ul.nodeName !== "UL"); + currentLevel--; + } + ul.appendChild(createLink(heading, anchor)); + } + document.body.insertBefore(toc, document.body.firstChild); + } + </script> +</head> +<body onload="createTOC();"> + +<h1>OpenJDK PowerPC Port</h1> + +<p> +This file contains some additional build instructions for +the <a href="http://openjdk.java.net/projects/ppc-aix-port"> OpenJDK PowerPC +Port for Linux and AIX</a>. It complements the general +OpenJDK <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/raw-file/tip/README-builds.html"> +README-builds.html</a> file. +</p> + +<h2>Building on Linux/PPC64</h2> + +<p> +Currently, i.e. all versions after +revision <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/file/ppc-aix-port-b01"><em>ppc-aix-port-b01</em></a>, +should successfully build and run on Linux/PPC64. Passing +<code>CORE_BUILD=true</code> on the build comamnd line will instruct the build +system to create an interpreter-only version of the VM which is in general about +an order of magnitude slower than a corresponding server VM with JIT +compiler. But it is still fully functional (e.g. it passes JVM98) and can even +be used to bootstrap itself. Starting with +revision <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/file/ppc-aix-port-b03"><em>ppc-aix-port-b03</em></a>, +it is possible to build without <code>CORE_BUILD=true</code> and create a +JIT-enabled version of the VM (containing the C2 "<em>Server</em>" JIT +compiler). +</p> + +<p> +Our current build system is a Power6 box running +SLES 10.3 with gcc version 4.1.2 (in general, more recent Linux distributions +should work as well). +</p> + +<h3>Building with the OpenJDK Linux/PPC64 port as bootstrap JDK</h3> + +<p> +A precompiled build of <em>ppc-aix-port-b03</em> is available +for <a href="http://openjdkpower.osuosl.org/OpenJDK/download/bootstrap/openjdk1.7.0-ppc-aix-port-linux-ppc64-b03.tar.bz2">download</a>. +With it and together with the other build dependencies fulfilled as described +in the +main <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/raw-file/tip/README-builds.html"> +README-builds.html</a> file you can build a debug version of the JDK from the +top-level source directory with the following command line (additionally +pass <code>CORE_BUILD=true</code> to build an interpreter-only version of the VM): +</p> + +<pre class="terminal"> +> make FT_CFLAGS=-m64 LANG=C \ + ALT_BOOTDIR=<path_to>/jdk1.7.0-ppc-aix-port-b01 \ + ARCH_DATA_MODEL=64 \ + HOTSPOT_BUILD_JOBS=8 \ + PARALLEL_COMPILE_JOBS=8 \ + ALT_FREETYPE_LIB_PATH=/usr/local/lib \ + ALT_FREETYPE_HEADERS_PATH=/usr/local/include \ + ANT_HOME=/usr/local/apache-ant-1.8.4 \ + VERBOSE=true \ + CC_INTERP=true \ + OPENJDK=true \ + debug_build 2>&1 | tee build_ppc-aix-port_dbg.log +</pre> + +<p> +After the build finished successfully the results can be found under +<tt>./build/linux-ppc64-debug/</tt>. Product and fastdebug versions can be +build with the make targets <tt>product_build</tt> and +<tt>fastdebug_build</tt> respectively (the build results will be located under +<tt>./build/linux-ppc64/</tt> and <tt>./build/linux-ppc64-fastdebug/</tt>). On +our transitional <a +href="http://cr.openjdk.java.net/~simonis/ppc-aix-port/index.html">ppc-aix-port +project page</a> you can find the build logs of our regular nightly makes. +</p> + +<h4>Problems with pre-installed ANT on newer Linux distros</h4> + +<p> +Notice that pre-installed ANT version (i.e. ANT versions installed with the +corresponding system package manager) may cause problems in conjunction with +our bootstrap JDK. This is because they use various scripts from the +<a href="http://www.jpackage.org/">jpackage</a> project to locate specific Java +libraries and jar files. These scripts (in particular +<code>set_jvm_dirs()</code> +in <code>/usr/share/java-utils/java-functions</code>) expect that executing +"<code>java -fullversion</code>" will return a string starting with "java" but +our OpenJDK port returns a string starting with "openjdk" instead. +</p> + +<p> +The problem can be easily solved by either editing the regular expressions +which parse the version string +in <code>/usr/share/java-utils/java-functions</code> (or the respective file of +your Linux distribution) or by installing a plain version of ANT +from <a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a> +and passing its installation directory to the build via +the <code>ANT_HOME</code> environment variable. +</p> + +<h3>Building with the IBM JDK for Linux/PPC64 as bootstrap JDK</h3> + +<p> +It is also possible to build with an <a +href="http://www.ibm.com/developerworks/java/jdk/linux/download.html#java7">IBM +JDK 7</a> bootstrap JDK (after all this is how we initially bootstrapped the +port). But because the IBM JDK uses a different default implementation of the +<tt>idlj</tt> and <tt>rmic</tt> compilers you will have to add the following +two additional variables to the build command line to force the IBM JDK to +fall back to the default Sun/Oracle version of the mentioned compilers (notice +that the single quotes are crucial here to prevent the immediate expansion of +<tt>$(ALT_BOOTDIR)</tt>): +</p> + +<pre class="terminal"> +IDLJ='$(ALT_BOOTDIR)/bin/java -cp $(ALT_BOOTDIR)/lib/tools.jar com.sun.tools.corba.se.idl.toJavaPortable.Compile' +RMIC='$(ALT_BOOTDIR)/bin/java -cp $(ALT_BOOTDIR)/lib/tools.jar sun.rmi.rmic.Main' +</pre> + +<p> +We successfully used build <tt>pxp6470-20110827_01</tt> of the IBM JDK but +there have been <a +href="http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2012-July/thread.html#21">reports</a> +on the <a +href="http://mail.openjdk.java.net/mailman/listinfo/ppc-aix-port-dev">ppc-aix-port-dev</a> +mailing list that newer version of the IBM JDK (starting with build <tt>pxp6470sr1-20120330_01(SR1)</tt>) require some additional +tweaking. Neil Richards advised in that mail thread to "<em>Just rename lib/ibmorbtools.jar to be something else. +As the tools.jar tries to chain onto a file of that name, and that file +contains the rmicext.properties files with the IBM-impl settings, moving +that file off to one side should consistently cause rmic invocations to +use the OpenJDK rmic IIOP generator. +Approaching things this way would also mean one would not need to use +the RMIC setting. +(NB: One still need to use the IDLJ setting to use the OpenJDK idlj +implementation, especially as moving the ibmorbtools.jar file aside also +eliminates the IBM idlj implementation from the classpath).</em>" +</p> + +<p> +For historical reasons two old build logs of a debug and a product build +bootstrapped with the IBM JDK are still available for inspection: <a +href="http://openjdkpower.osuosl.org/OpenJDK/download/build-logs/output_ppc-aix-port_dbg.log">output_ppc-aix-port_dbg.log</a>, +<a +href="http://openjdkpower.osuosl.org/OpenJDK/download/build-logs/output_ppc-aix-port_opt.log">output_ppc-aix-port_opt.log</a>. +</p> + +<h3>Running the OpenJDK Linux/PPC64 port</h3> + +<p> +Running the freshly build VM should give the following output: +</p> + +<pre class="terminal"> +> build/linux-ppc64-debug/bin/java -showversion HelloWorld +openjdk version "1.7.0-internal" +OpenJDK Runtime Environment (build 1.7.0-internal-jvmtests_2012_12_16_22_14-b00) +OpenJDK 64-Bit Server VM (build 23.2-b04, mixed mode) + +HelloWorld +</pre> + +<h2>Building on AIX/PPC64</h2> + +<p> +Currently, i.e. all versions after revision <a +href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/file/ppc-aix-port-b02"><em>ppc-aix-port-b02</em></a>, +should successfully build and run on AIX. Passing +<code>CORE_BUILD=true</code> on the build comamnd line will instruct the build +system to create an interpreter-only version of the VM which is in general about +an order of magnitude slower than a corresponding server VM with JIT +compiler. But it is still fully functional (e.g. it passes JVM98) and can even +be used to bootstrap itself. Starting with +revision <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/file/ppc-aix-port-b03"><em>ppc-aix-port-b03</em></a>, +it is possible to build without <code>CORE_BUILD=true</code> and create a +JIT-enabled version of the VM (containing the C2 "<em>Server</em>" JIT +compiler). +</p> + +<h3>Building with the OpenJDK AIX/PPC64 port as bootstrap JDK</h3> + +<p> +A precompiled build of <em>ppc-aix-port-b03</em> is available +for <a href="http://openjdkpower.osuosl.org/OpenJDK/download/bootstrap/openjdk1.7.0-ppc-aix-port-aix-ppc64-b03.tar.bz2">download</a>. +We recommend using it or a self compiled OpenJDK version for AIX as bootstrap JDK. +</p> + +<h3>Building with the IBM JDK for AIX as bootstrap JDK</h3> + +<p> +It is also possible to build with an <a +href="http://www.ibm.com/developerworks/java/jdk/aix/service.html#java6">IBM +JDK 6</a> bootstrap JDK (after all this is how we initially bootstrapped the +port). But because the IBM JDK uses a different default implementation of the +<tt>idlj</tt> and <tt>rmic</tt> compilers you will have to rename or +delete <code>lib/ibmorbtools.jar</code> and add the following additional +variable to the build command line to force the IBM JDK to fall back to the +default Sun/Oracle version of the IDLJ compiler (notice that the the single +quotes are crucial here to prevent the immediate expansion of +<tt>$(ALT_BOOTDIR)</tt>): +</p> + +<pre class="terminal"> +IDLJ='$(ALT_BOOTDIR)/bin/java -cp $(ALT_BOOTDIR)/lib/tools.jar com.sun.tools.corba.se.idl.toJavaPortable.Compile' +</pre> + +<h3>AIX build dependencies</h3> + +<p> +Our current build system is based on AIX 5.3 in order to produce binaries which +can be run on any AIX version higher than 5.3. However building on +newer version of AIX should in general work equally well (from time to time we +build on AIX 7.1 as well). It should be noticed +that the current build infrastructure only supports the +commercial <a href="http://www-01.ibm.com/software/awdtools/xlcpp/">XL +C/C++</a> compilers from IBM so getting a copy of the XL C/C++ compiler suite +10.1 (or higher) is the first prerequisite that has to be fulfilled. You also +need to to have the "AIXwindows Application Development Toolkit for X +Extensions" (i.e. <code>X11.adt.ext</code>) package installed on your +system. You can check this by doing: +</p> + +<pre class="terminal"> +> lslpp -l X11.adt.ext + Fileset Level State Description + ---------------------------------------------------------------------------- +Path: /usr/lib/objrepos + X11.adt.ext 7.1.0.0 COMMITTED AIXwindows Application + Development Toolkit for X + Extensions +</pre> + +<p> +There are several other build dependencies (mostly described in the +general <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/raw-file/tip/README-builds.html"> +README-builds.html</a> file) which are a little more complicate to fulfill on +AIX than on Linux platforms, but they are all freely available as described in +the following section. +</p> + + +<h4>Mercurial & Python</h4> + +<p> +The first thing to install +is <a href="http://mercurial.selenic.com">Mercurial</a>. The +Mercurial <a href=" http://mercurial.selenic.com/wiki/Download">download +wiki</a> contains a +special <a href="http://mercurial.selenic.com/wiki/Download#AIX">AIX</a> +section which links +to <a href="http://www.lunch.org.uk/wiki/aix_packages">http://www.lunch.org.uk/wiki/aix_packages</a>. The +site provides various <a href="http://www.lunch.org.uk/aix/rpms">RPM +packeges</a> for AIX 5.2 and higher. Download and +install <a href="http://www.lunch.org.uk/aix/rpms/python-2.4.6-1.aix5.2.ppc.rpm">python-2.4.6-1.aix5.2.ppc.rpm</a> +and <a href="http://www.lunch.org.uk/aix/rpms/mercurial-2.3.1-0.aix5.2.ppc.rpm">mercurial-2.3.1-0.aix5.2.ppc.rpm</a> +(with <code>rpm -i <package-name>.rpm</code>). All the "free" software +packages will be installed by default into the <code>/opt/freeware</code> +subdirectory under AIX which seems to be the equivalent +to <code>/usr/local</code> on Linux platforms. +</p> + +<p> +Notice that Python has a lot of dependencies on other freeware packages +from <code>/opt/freeware</code> and you'll have to download and install them +first before the installation of Python succeeds. Fortunately these packages can +be downloaded directly from IBM's +<a href="http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/alpha.html">AIX +Toolbox for Linux Applications</a> site (if you don't have the RPM package +manager installed already you'll first have to get +the <a href="ftp://public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/INSTALLP/ppc/rpm.rte">AIX +installp image for the rpm package manager for POWER</a> and install it with +the command '<code>installp -qacXgd rpm.rte rpm.rte +</code>'). On my AIX box, I had to install the following additional packages: +</p> + +<ul> + <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/bzip2/bzip2-1.0.5-3.aix5.3.ppc.rpm">bzip2-1.0.5-3.aix5.3.ppc.rpm</a></li> + <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/db/db-3.3.11-4.aix5.1.ppc.rpm">db-3.3.11-4.aix5.1.ppc.rpm</a></li> + <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gdbm/gdbm-1.8.3-5.aix5.2.ppc.rpm">gdbm-1.8.3-5.aix5.2.ppc.rpm</a></li> + <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/zlib/zlib-1.2.3-4.aix5.2.ppc.rpm">zlib-1.2.3-4.aix5.2.ppc.rpm</a></li> + <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/readline/readline-4.3-2.aix5.1.ppc.rpm">readline-4.3-2.aix5.1.ppc.rpm</a></li> +</ul> + +<p> +Python also requires OpenSSL which is available from the "AIX Toolbox for Linux +Applications" as well, but only after signing in with a universal IBM user +ID, which can be obtained for free +(follow the +link <a href="http://www.ibm.com/services/forms/preLogin.do?source=aixtbx">AIX +Toolbox Cryptographic Content</a> on +the <a href="http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/download.html">IBM +AIX Toolbox download information</a> page). +</p> + +<h4>GNU Make</h4> + +Unfortunately, the GNU Make package available from the "AIX Toolbox for Linux +Applications" is too old (version 3.80 vs. 3.82) for building OpenJDK so we +have to build our own one. Fortunately, that's not too hard: + +<pre class="terminal"> +> wget http://ftp.gnu.org/gnu/make/make-3.82.tar.gz +> tar -xzf make-3.82.tar.gz +> cd make-3.82 +> CC=xlc_r ./configure --prefix=/opt/freeware +> make +> make install +</pre> + + +<h4>Freetype, Cups and friends</h4> + +<p> +Luckily, a sufficiently new version of Freetype is available from the "AIX +Toolbox for Linux Applications" site as well. We need the Freetype development +package which itself has dependencies as listed below: +</p> + +<ul> + <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/freetype2/freetype2-2.3.9-1.aix5.2.ppc.rpm">freetype2-2.3.9-1.aix5.2.ppc.rpm</a></li> + <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/freetype2/freetype2-devel-2.3.9-1.aix5.2.ppc.rpm">freetype2-devel-2.3.9-1.aix5.2.ppc.rpm</a></li> + <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/zlib/zlib-devel-1.2.3-4.aix5.2.ppc.rpm">zlib-devel-1.2.3-4.aix5.2.ppc.rpm</a></li> + <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/pkg-config/pkg-config-0.19-6.aix5.2.ppc.rpm">pkg-config-0.19-6.aix5.2.ppc.rpm</a></li> +</ul> + +<p> +Notice that the Freetype package will only install a single archive +under <code>/opt/freeware/lib/libfreetype.a</code> but that archive contains +both 32- and 64-bit versions of the <code>libfreetype.so</code> shared library: +</p> + +<pre class="terminal"> +> ar -vt -Xany /opt/freeware/lib/libfreetype.a +rwxr-xr-x 0/0 966393 Aug 21 01:42 2009 libfreetype.so.6 +rwxr-xr-x 0/0 1048680 Aug 21 01:41 2009 libfreetype.so.6 +</pre> + +<p> +During a 64-bit build, the compiler will "magically" find the right version of +the shared library from the archive. +</p> + +<p> +Unfortunately the "AIX Toolbox for Linux Applications" site provides no Cups +package, so I +took <a href="ftp://www.oss4aix.org/latest/aix53/cups-devel-1.6.1-1.aix5.3.ppc.rpm">cups-devel-1.6.1-1.aix5.3.ppc.rpm</a> +from <a href="http://www.perzl.org/aix/">http://www.perzl.org/aix/</a>, another +great site with precompiled open source software for AIX. The Cups development +package has a lot of dependencies, but because the OpenJDK build only needs the +Cups header files it is enough to force the installation of the Cups +development package with <code>rpm -i --nodeps +cups-devel-1.6.1-1.aix5.3.ppc.rpm</code>. +</p> + +<p> +The default AIX <code>tar</code> may give you errors like +"<code>/usr/bin/tar: arg list too long</code>" during the build +process so we strongly recommend to install +the <a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/tar/tar-1.14-2.aix5.1.ppc.rpm">tar-1.14-2.aix5.1.ppc.rpm</a> +package from IBM's AIX Toolbox for Linux Applications site. +</p> + +<h4>Setting up the <code>PATH</code> and building</h4> + +<p> +If you prepend <code>/opt/freeware/bin</code> to you <code>PATH</code> +environment variable you should be finally able to start the build with the +following command line (additionally pass <code>CORE_BUILD=true</code> to build +an interpreter-only version of the VM): +</p> + +<pre class="terminal"> +make debug_build \ + ALT_BOOTDIR=/usr/work/openjdk/nb/rs6000_64/last_known_good/output-jdk7u/j2sdk-image \ + ANT_HOME=/sapmnt/depot/tools/gen/java/OpenSource/Ant/1.8.0 \ + ALT_FREETYPE_LIB_PATH=/opt/freeware/lib \ + ALT_FREETYPE_HEADERS_PATH=/opt/freeware/include \ + ALT_CUPS_HEADERS_PATH=/opt/freeware/include \ + VERBOSE=true \ + CC_INTERP=true \ + OPENJDK=true \ + HOTSPOT_BUILD_JOBS=8 \ + PARALLEL_COMPILE_JOBS=8 2>&1 | tee /priv/d046063/OpenJDK/output-ppc-aix-port-debug.log +</pre> + +<p> +After the build finished successfully the results can be found under +<tt>./build/aix-ppc64-debug/</tt>. Product and fastdebug versions can be +build with the make targets <tt>product_build</tt> and +<tt>fastdebug_build</tt> respectively (the build results will be located under +<tt>./build/aix-ppc64/</tt> and <tt>./build/aix-ppc64-fastdebug/</tt>). On +our transitional <a +href="http://cr.openjdk.java.net/~simonis/ppc-aix-port/index.html">ppc-aix-port +project page</a> you can find the build logs of our regular nightly makes. +</p> + +<h3>Running the OpenJDK AIX/PPC64 port</h3> + +<p> +Running the freshly build VM should give the following output: +</p> + +<pre class="terminal"> +> build/aix-ppc64-debug/bin/java -showversion HelloWorld +openjdk version "1.7.0-internal-debug" +OpenJDK Runtime Environment (build 1.7.0-internal-jvmtests_2012_12_16_23_22-b00) +OpenJDK 64-Bit Server VM (build 23.2-b04, mixed mode) + +HelloWorld +</pre> + +<h4>Fonts and Fontconfig (optional)</h4> + +<p> +If you want to run AWT/Swing applications you have to install +the <a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/fontconfig/fontconfig-2.4.2-1.aix5.2.ppc.rpm">fontconfig</a> +package from the "AIX Toolbox for Linux Applications" site as described +before. You will also have to install at least the "AIXwindows Latin Type1 +Fonts" package (<code>X11.fnt.iso_T1</code>) because Fontconfig +and the <code>fontconfig.properties</code> file of the OpenJDK currently rely on +the standard Type1 Postscript fonts. If you want to use other Type 1 or +TrueType fonts (e.g. <code>X11.fnt.ucs.ttf</code>) you'll probably have to edit +the +local <a href="http://www.freedesktop.org/software/fontconfig/fontconfig-user.html">Fontconfig +configuration file</a> (under <code>/opt/freeware/etc/fonts/local.conf</code>) +and +the <a href="http://download.java.net/jdk8/docs/technotes/guides/intl/fontconfig.html"><code><openjdk-path>/jre/lib/fontconfig.properties</code> +</a> file of your OpenJDK image. +</p> + +<p> +Also remember that we currently dynamically link against Freetype (see build +dependencies above) so if you copy the build results to another AIX machine you +have to ensure that the new host has at +least <a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/freetype2/freetype2-2.3.9-1.aix5.2.ppc.rpm">freetype2-2.3.9-1.aix5.2.ppc.rpm</a> +installed. +</p> + +<h4>Memory requirements</h4> + +<p> +Our VM is currently optimized for server class loads. This means that besides +the usual Java heap settings which are controlled trough command line options +the user has to make sure the environment provides reasonable data segment and +the stack size limits. We recommend setting the stack size limit to 4MB +(e.g. call '<code>ulimit -s 4000</code>') and the data segment limit to 1GB +(e.g. call '<code>ulimit -d 1000000</code>'). Higher limits should be OK (the +current limits can be inspected with '<code>ulimit -a</code>'). +</p> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buildhybrid.sh Wed Sep 07 06:06:17 2016 +0100 @@ -0,0 +1,61 @@ +#!/bin/sh +# check we have a simulator tree +if [ ! -d ../simulator ] ; then + echo "downloading aarch64 simulator code from sourceforge into directory ../simulator" + (cd .. ; hg clone http://hg.code.sourceforge.net/p/smallaarch64sim/code simulator) +fi + +# check we have a binutils tree + +if [ ! -d ../binutils ] ; then + echo "downloading aarch64 binutils code from sourceforge into directory ../binutils" + echo "by executing the following command" + (cd .. ; hg clone http://hg.code.sourceforge.net/p/binutilsaarch64/code binutils) +fi + +# ensure the sim lib has been built +if [ ! -f ../simulator/libarmsim.so ] ; then + (cd ../simulator ; make) +fi + +# ensure the hsdis lib has been built + +if [ ! -f hotspot/src/share/tools/hsdis/build/linux-amd64/hsdis-aarch64.so ] ; then + (export BINUTILS=`cd .. ; pwd`/binutils ; cd hotspot/src/share/tools/hsdis ; make BUILD_AARCH64=true) + mv hotspot/src/share/tools/hsdis/build/linux-amd64/hsdis-amd64.so hotspot/src/share/tools/hsdis/build/linux-amd64/hsdis-aarch64.so +fi + +unset JAVA_HOME +export LANG=C + +set -x + +if [ x"$JDK_TO_BUILD_WITH" == x ] ; then +JDK_TO_BUILD_WITH=/usr/lib/jvm/java-1.7.0 +fi + +source ./jdk/make/jdk_generic_profile.sh + +make \ +BUILTIN_SIM="true" \ +ALLOW_DOWNLOADS="true" \ +ALT_JDK_IMPORT_PATH="$JDK_TO_BUILD_WITH" \ +ALT_BOOTDIR="$JDK_TO_BUILD_WITH" \ +ANT="/usr/bin/ant" \ +FT2_CFLAGS="$(pkg-config --cflags freetype2)" \ +FT2_LIBS="$(pkg-config --libs freetype2)" \ +STATIC_CXX="false" \ +NO_DOCS="true" \ +DEBUG_CLASSFILES="true" \ +DEBUG_BINARIES="true" \ +STRIP_POLICY=no_strip \ +HOTSPOT_BUILD_JOBS=8 debug_build $* + +# ensure hsdis lib is installed +if [ ! -f build/linux-amd64-debug/j2sdk-image/jre/lib/amd64/hsdis-aarch64.so -a \ + -d build/linux-amd64-debug/j2sdk-image/jre/lib/amd64 ] ; then + cp hotspot/src/share/tools/hsdis/build/linux-amd64/hsdis-aarch64.so \ + build/linux-amd64-debug/j2sdk-image/jre/lib/amd64/hsdis-aarch64.so + cp hotspot/src/share/tools/hsdis/build/linux-amd64/hsdis-aarch64.so \ + build/linux-amd64-debug/j2sdk-server-image/jre/lib/amd64/hsdis-aarch64.so +fi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buildnative.sh Wed Sep 07 06:06:17 2016 +0100 @@ -0,0 +1,38 @@ +# ensure the hsdis lib has been built + +if [ ! -f hotspot/src/share/tools/hsdis/build/linux-aarch64/hsdis-aarch64.so ] ; then + (export BINUTILS=`cd .. ; pwd`/binutils-2.23.52 ; cd hotspot/src/share/tools/hsdis ; make) +fi + +unset JAVA_HOME +export LANG=C + +set -x + +if [ x"$JDK_TO_BUILD_WITH" == x ] ; then +JDK_TO_BUILD_WITH=/usr/lib/jvm/java-1.7.0 +fi + +source ./jdk/make/jdk_generic_profile.sh + +make \ +ALT_JDK_IMPORT_PATH="$JDK_TO_BUILD_WITH" \ +ALT_BOOTDIR="$JDK_TO_BUILD_WITH" \ +ANT="/usr/bin/ant" \ +FT2_CFLAGS="$(pkg-config --cflags freetype2)" \ +FT2_LIBS="$(pkg-config --libs freetype2)" \ +STATIC_CXX="false" \ +NO_DOCS="true" \ +DEBUG_CLASSFILES="true" \ +DEBUG_BINARIES="true" \ +STRIP_POLICY=no_strip \ +HOTSPOT_BUILD_JOBS=8 debug_build $* + +# ensure hsdis lib is installed +if [ ! -f build/linux-aarch64-debug/j2sdk-image/jre/lib/aarch64/hsdis-aarch64.so -a \ + -d build/linux-aarch64-debug/j2sdk-image/jre/lib/aarch64 ] ; then + cp hotspot/src/share/tools/hsdis/build/linux-aarch64/hsdis-aarch64.so \ + build/linux-aarch64-debug/j2sdk-image/jre/lib/aarch64/hsdis-aarch64.so + cp hotspot/src/share/tools/hsdis/build/linux-aarch64/hsdis-aarch64.so \ + build/linux-aarch64-debug/j2sdk-server-image/jre/lib/aarch64/hsdis-aarch64.so +fi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/bin/hgforest.sh Wed Sep 07 06:06:17 2016 +0100 @@ -0,0 +1,190 @@ +#!/bin/sh + +# +# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# Shell script for a fast parallel forest command +command="$1" +pull_extra_base="$2" + +if [ "" = "$command" ] ; then + echo No command to hg supplied! + exit 1 +fi + +# Clean out the temporary directory that stores the pid files. +tmp=/tmp/forest.$$ +rm -f -r ${tmp} +mkdir -p ${tmp} + +safe_interrupt () { + if [ -d ${tmp} ]; then + if [ "`ls ${tmp}/*.pid`" != "" ]; then + echo "Waiting for processes ( `cat ${tmp}/*.pid | tr '\n' ' '`) to terminate nicely!" + sleep 1 + # Pipe stderr to dev/null to silence kill, that complains when trying to kill + # a subprocess that has already exited. + kill -TERM `cat ${tmp}/*.pid | tr '\n' ' '` 2> /dev/null + wait + echo Interrupt complete! + fi + fi + rm -f -r ${tmp} + exit 1 +} + +nice_exit () { + if [ -d ${tmp} ]; then + if [ "`ls ${tmp}`" != "" ]; then + wait + fi + fi + rm -f -r ${tmp} +} + +trap 'safe_interrupt' INT QUIT +trap 'nice_exit' EXIT + +# Only look in specific locations for possible forests (avoids long searches) +pull_default="" +repos="" +repos_extra="" +if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then + subrepos="corba jaxp jaxws langtools jdk hotspot" + if [ -f .hg/hgrc ] ; then + pull_default=`hg paths default` + if [ "${pull_default}" = "" ] ; then + echo "ERROR: Need initial clone with 'hg paths default' defined" + exit 1 + fi + fi + if [ "${pull_default}" = "" ] ; then + echo "ERROR: Need initial repository to use this script" + exit 1 + fi + for i in ${subrepos} ; do + if [ ! -f ${i}/.hg/hgrc ] ; then + repos="${repos} ${i}" + fi + done + if [ "${pull_extra_base}" != "" ] ; then + subrepos_extra="jdk/src/closed jdk/make/closed jdk/test/closed hotspot/make/closed hotspot/src/closed hotspot/test/closed deploy install sponsors pubs" + pull_default_tail=`echo ${pull_default} | sed -e 's@^.*://[^/]*/\(.*\)@\1@'` + pull_extra="${pull_extra_base}/${pull_default_tail}" + for i in ${subrepos_extra} ; do + if [ ! -f ${i}/.hg/hgrc ] ; then + repos_extra="${repos_extra} ${i}" + fi + done + fi + at_a_time=2 + # Any repos to deal with? + if [ "${repos}" = "" -a "${repos_extra}" = "" ] ; then + exit + fi +else + hgdirs=`ls -d ./.hg ./*/.hg ./*/*/.hg ./*/*/*/.hg ./*/*/*/*/.hg 2>/dev/null` + # Derive repository names from the .hg directory locations + for i in ${hgdirs} ; do + repos="${repos} `echo ${i} | sed -e 's@/.hg$@@'`" + done + for i in ${repos} ; do + if [ -h ${i}/.hg/store/lock -o -f ${i}/.hg/store/lock ] ; then + locked="${i} ${locked}" + fi + done + at_a_time=8 + # Any repos to deal with? + if [ "${repos}" = "" ] ; then + echo "No repositories to process." + exit + fi + if [ "${locked}" != "" ] ; then + echo "These repositories are locked: ${locked}" + exit + fi +fi + +# Echo out what repositories we do a command on. +echo "# Repositories: ${repos} ${repos_extra}" +echo + +# Run the supplied command on all repos in parallel. +n=0 +for i in ${repos} ${repos_extra} ; do + n=`expr ${n} '+' 1` + repopidfile=`echo ${i} | sed -e 's@./@@' -e 's@/@_@g'` + reponame=`echo ${i} | sed -e :a -e 's/^.\{1,20\}$/ &/;ta'` + pull_base="${pull_default}" + for j in $repos_extra ; do + if [ "$i" = "$j" ] ; then + pull_base="${pull_extra}" + fi + done + ( + ( + if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then + pull_newrepo="${pull_base}/${i}" + # pull_newrepo="`echo ${pull_base}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`" + echo hg clone ${pull_newrepo} ${i} + path="`dirname ${i}`" + if [ "${path}" != "." ] ; then + times=0 + while [ ! -d "${path}" ] ## nested repo, ensure containing dir exists + do + times=`expr ${times} '+' 1` + if [ `expr ${times} '%' 10` -eq 0 ] ; then + echo ${path} still not created, waiting... + fi + sleep 5 + done + fi + (PYTHONUNBUFFERED=true hg clone ${pull_newrepo} ${i}; echo "$?" > ${tmp}/${repopidfile}.pid.rc )& + else + echo "cd ${i} && hg $*" + cd ${i} && (PYTHONUNBUFFERED=true hg "$@"; echo "$?" > ${tmp}/${repopidfile}.pid.rc )& + fi + echo $! > ${tmp}/${repopidfile}.pid + ) 2>&1 | sed -e "s@^@${reponame}: @") & + + if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then + sleep 2 + echo Waiting 5 secs before spawning next background command. + sleep 3 + fi +done +# Wait for all hg commands to complete +wait + +# Terminate with exit 0 only if all subprocesses were successful +ec=0 +if [ -d ${tmp} ]; then + for rc in ${tmp}/*.pid.rc ; do + exit_code=`cat ${rc} | tr -d ' \n\r'` + if [ "${exit_code}" != "0" ] ; then + echo "WARNING: ${rc} exited abnormally." + ec=1 + fi + done +fi +exit ${ec}
--- a/get_source.sh Fri Jul 22 15:37:49 2016 +0100 +++ b/get_source.sh Wed Sep 07 06:06:17 2016 +0100 @@ -26,8 +26,8 @@ # # Get clones of all nested repositories -sh ./make/scripts/hgforest.sh clone $* +sh ./common/bin/hgforest.sh clone "$@" || exit 1 # Update all existing repositories to the latest sources -sh ./make/scripts/hgforest.sh pull -u +sh ./common/bin/hgforest.sh pull -u
--- a/make/Defs-internal.gmk Fri Jul 22 15:37:49 2016 +0100 +++ b/make/Defs-internal.gmk Wed Sep 07 06:06:17 2016 +0100 @@ -335,6 +335,7 @@ PREVIOUS_MAJOR_VERSION=$(PREVIOUS_MAJOR_VERSION) \ PREVIOUS_MINOR_VERSION=$(PREVIOUS_MINOR_VERSION) \ PREVIOUS_MICRO_VERSION=$(PREVIOUS_MICRO_VERSION) \ + STATIC_CXX=$(STATIC_CXX) \ PAX_COMMAND=$(PAX_COMMAND) \ PAX_COMMAND_ARGS=$(PAX_COMMAND_ARGS)
--- a/make/hotspot-rules.gmk Fri Jul 22 15:37:49 2016 +0100 +++ b/make/hotspot-rules.gmk Wed Sep 07 06:06:17 2016 +0100 @@ -81,6 +81,10 @@ endif endif +ifeq ($(CORE_BUILD), true) + HOTSPOT_TARGET := $(HOTSPOT_TARGET)core +endif + HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS) HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR) HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH) @@ -101,6 +105,16 @@ HOTSPOT_BUILD_ARGUMENTS += FULL_DEBUG_SYMBOLS=$(FULL_DEBUG_SYMBOLS) endif +# Propagate HOTSPOT_BUILD_JOBS to the HotSpot make. Alternatively use the value +# of PARALLEL_COMPILE_JOBS if available and HOTSPOT_BUILD_JOBS was not defined. +ifdef HOTSPOT_BUILD_JOBS + HOTSPOT_BUILD_ARGUMENTS += HOTSPOT_BUILD_JOBS=$(HOTSPOT_BUILD_JOBS) +else + ifdef PARALLEL_COMPILE_JOBS + HOTSPOT_BUILD_ARGUMENTS += HOTSPOT_BUILD_JOBS=$(PARALLEL_COMPILE_JOBS) + endif +endif + ifdef ZIP_DEBUGINFO_FILES HOTSPOT_BUILD_ARGUMENTS += ZIP_DEBUGINFO_FILES="$(ZIP_DEBUGINFO_FILES)" endif
--- a/make/jdk-rules.gmk Fri Jul 22 15:37:49 2016 +0100 +++ b/make/jdk-rules.gmk Wed Sep 07 06:06:17 2016 +0100 @@ -80,6 +80,10 @@ JDK_BUILD_ARGUMENTS += ZIP_DEBUGINFO_FILES="$(ZIP_DEBUGINFO_FILES)" endif +# Propagate PARALLEL_COMPILE_JOBS to the JDK make +ifdef PARALLEL_COMPILE_JOBS + JDK_BUILD_ARGUMENTS += PARALLEL_COMPILE_JOBS=$(PARALLEL_COMPILE_JOBS) +endif $(JDK_JAVA_EXE):: jdk-build
--- a/make/scripts/hgforest.sh Fri Jul 22 15:37:49 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,144 +0,0 @@ -#!/bin/sh - -# -# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# Shell script for a fast parallel forest command -command="$1" -pull_extra_base="$2" - -tmp=/tmp/forest.$$ -rm -f -r ${tmp} -mkdir -p ${tmp} - -# Remove tmp area on A. B. Normal termination -trap 'rm -f -r ${tmp}' KILL -trap 'rm -f -r ${tmp}' EXIT - -# Only look in specific locations for possible forests (avoids long searches) -pull_default="" -repos="" -repos_extra="" -if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then - subrepos="corba jaxp jaxws langtools jdk hotspot" - if [ -f .hg/hgrc ] ; then - pull_default=`hg paths default` - if [ "${pull_default}" = "" ] ; then - echo "ERROR: Need initial clone with 'hg paths default' defined" - exit 1 - fi - fi - if [ "${pull_default}" = "" ] ; then - echo "ERROR: Need initial repository to use this script" - exit 1 - fi - for i in ${subrepos} ; do - if [ ! -f ${i}/.hg/hgrc ] ; then - repos="${repos} ${i}" - fi - done - if [ "${pull_extra_base}" != "" ] ; then - subrepos_extra="jdk/src/closed jdk/make/closed jdk/test/closed hotspot/make/closed hotspot/src/closed hotspot/test/closed deploy install sponsors pubs" - pull_default_tail=`echo ${pull_default} | sed -e 's@^.*://[^/]*/\(.*\)@\1@'` - pull_extra="${pull_extra_base}/${pull_default_tail}" - for i in ${subrepos_extra} ; do - if [ ! -f ${i}/.hg/hgrc ] ; then - repos_extra="${repos_extra} ${i}" - fi - done - fi - at_a_time=2 - # Any repos to deal with? - if [ "${repos}" = "" -a "${repos_extra}" = "" ] ; then - echo "No repositories to clone." - exit - fi -else - hgdirs=`ls -d ./.hg ./*/.hg ./*/*/.hg ./*/*/*/.hg ./*/*/*/*/.hg 2>/dev/null` - # Derive repository names from the .hg directory locations - for i in ${hgdirs} ; do - repos="${repos} `echo ${i} | sed -e 's@/.hg$@@'`" - done - at_a_time=8 - # Any repos to deal with? - if [ "${repos}" = "" ] ; then - echo "No repositories to process." - exit - fi -fi - -# Echo out what repositories we will clone -echo "# Repos: ${repos} ${repos_extra}" - -# Run the supplied command on all repos in parallel, save output until end -n=0 -for i in ${repos} ; do - echo "Starting on ${i}" - n=`expr ${n} '+' 1` - ( - ( - if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then - pull_newrepo="`echo ${pull_default}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`" - cline="hg clone ${pull_newrepo} ${i}" - echo "# ${cline}" - ( eval "${cline}" ) - else - cline="hg $*" - echo "# cd ${i} && ${cline}" - ( cd ${i} && eval "${cline}" ) - fi - echo "# exit code $?" - ) > ${tmp}/repo.${n} 2>&1 ; cat ${tmp}/repo.${n} ) & - if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then - sleep 5 - fi -done -# Wait for all hg commands to complete -wait - -if [ "${repos_extra}" != "" ] ; then - for i in ${repos_extra} ; do - echo "Starting on ${i}" - n=`expr ${n} '+' 1` - ( - ( - pull_newextrarepo="`echo ${pull_extra}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`" - cline="hg clone ${pull_newextrarepo} ${i}" - echo "# ${cline}" - ( eval "${cline}" ) - echo "# exit code $?" - ) > ${tmp}/repo.${n} 2>&1 ; cat ${tmp}/repo.${n} ) & - if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then - sleep 5 - fi - done - # Wait for all hg commands to complete - wait -fi - -# Cleanup -rm -f -r ${tmp} - -# Terminate with exit 0 all the time (hard to know when to say "failed") -exit 0 -