71 lines
19 KiB
PowerShell
71 lines
19 KiB
PowerShell
# Prover floor (5 October 2026): builds sp1-gpu-server 6.8.1 from source with the Igneum floor patch on PC 2 inside
|
|
# WSL2 Ubuntu-24.04 as root, into /opt/igneum-floor (the live /root/.sp1/bin/sp1-gpu-server and /opt/igneum are
|
|
# never touched). CPU only: the miners keep mining, the card is not used. Generated by make-build-playbook.sh;
|
|
# patch sha256 08ce05557ee756ff5c302912a0b36910603e67eb786ed58b6529455e0c3b2d52. CUDA_ARCHS=86,89,120 (the 12 GB tier is sm_86 (3060) and sm_89 (4070), the 16 GB tier sm_89 and sm_120; PC 2 runs sm_120; a shipped build lists every target the stock server does: 80, 86, 89, 90, 100, 120).
|
|
$ErrorActionPreference = 'Continue'
|
|
function Stamp { (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ') }
|
|
"RESULT start $(Stamp)"
|
|
$job = $env:IGNEUM_JOB_DIR; if (-not $job) { $job = Join-Path $env:TEMP 'igneum-floor' }; New-Item -ItemType Directory -Force -Path $job | Out-Null
|
|
function WslPath($p) { $w = (& wsl.exe -d Ubuntu-24.04 -u root -- wslpath -a ($p -replace '\\', '/') 2>$null); if ($w) { ($w -replace "`0", '').Trim() } else { '/mnt/c' + ($p.Substring(2) -replace '\\', '/') } }
|
|
$patchB64 = 'ZGlmZiAtLWdpdCBhL3NwMS1ncHUvY3JhdGVzL2phZ2dlZF90cmFjZWdlbi9zcmMvbGliLnJzIGIvc3AxLWdwdS9jcmF0ZXMvamFnZ2VkX3RyYWNlZ2VuL3NyYy9saWIucnMKaW5kZXggNTc5ZjcwYS4uMDllNzNlOCAxMDA2NDQKLS0tIGEvc3AxLWdwdS9jcmF0ZXMvamFnZ2VkX3RyYWNlZ2VuL3NyYy9saWIucnMKKysrIGIvc3AxLWdwdS9jcmF0ZXMvamFnZ2VkX3RyYWNlZ2VuL3NyYy9saWIucnMKQEAgLTQ4MSw2ICs0ODEsMzMgQEAgYXN5bmMgZm4gZGV2aWNlX3ByZXByb2Nlc3NlZF90cmFjZWdlbjxBOiBDdWRhVHJhY2VnZW5BaXI8RmVsdD4+KAogICAgIG5hbWVkX3RyYWNlcwogfQogCisvLy8gSWduZXVtIHByb3Zlci1mbG9vciBwYXRjaDogdGhlIGRlbnNlIGVsZW1lbnRzIGEgc2V0IG9mIHRyYWNlcyB3aWxsIG9jY3VweSBvbmNlIGBnZW5lcmF0ZV9qYWdnZWRfdHJhY2VzYAorLy8vIGhhcyBsYWlkIHRoZW0gb3V0LCB0aGF0IGlzIHRoZSBzdW0gb2YgdGhlaXIgYnVmZmVycyBwYWRkZWQgdG8gdGhlIG5leHQgbXVsdGlwbGUgb2YgMl5sb2dfc3RhY2tpbmdfaGVpZ2h0CisvLy8gKHRoZSAiZmluYWwgcGFkZGluZyIgc3RlcCBiZWxvdykuIEVhY2ggcGhhc2UgKHByZXByb2Nlc3NlZCwgdGhlbiBtYWluKSBpcyBwYWRkZWQgb24gaXRzIG93bi4KK3B1YiBmbiBwYWRkZWRfdHJhY2VfZWxlbWVudHMoCisgICAgdHJhY2VzOiAmQlRyZWVNYXA8U3RyaW5nLCBUcmFjZTxUYXNrU2NvcGU+PiwKKyAgICBsb2dfc3RhY2tpbmdfaGVpZ2h0OiB1MzIsCispIC0+IHVzaXplIHsKKyAgICBsZXQgdG90YWw6IHVzaXplID0gdHJhY2VzCisgICAgICAgIC52YWx1ZXMoKQorICAgICAgICAubWFwKHx0fCBtYXRjaCB0IHsKKyAgICAgICAgICAgIFRyYWNlOjpSZWFsKHRyYWNlKSA9PiB0cmFjZS5ndXRzKCkuYXNfYnVmZmVyKCkubGVuKCksCisgICAgICAgICAgICBUcmFjZTo6UGFkZGluZyhfKSA9PiAwLAorICAgICAgICB9KQorICAgICAgICAuc3VtKCk7CisgICAgdG90YWwubmV4dF9tdWx0aXBsZV9vZigxIDw8IGxvZ19zdGFja2luZ19oZWlnaHQpCit9CisKKy8vLyBJZ25ldW0gcHJvdmVyLWZsb29yIHBhdGNoOiB0aGUgY2FwYWNpdHkgdG8gYWxsb2NhdGUgZm9yIGEgdHJhY2Ugc2V0OiB0aGUgZXhhY3QgcGFkZGVkIHNpemUgcGx1cyBvbmUKKy8vLyBzdGFja2luZyBoZWlnaHQgb2Ygc2xhY2ssIG5ldmVyIG1vcmUgdGhhbiB0aGUgcHJvdmVyJ3MgYG1heF90cmFjZV9zaXplYC4gYFNQMV9HUFVfRkxPT1JfRVhBQ1Q9MGAgcmVzdG9yZXMKKy8vLyB1cHN0cmVhbSdzIGZ1bGwtY2FwYWNpdHkgYWxsb2NhdGlvbi4KK2ZuIGZsb29yX2NhcGFjaXR5KG1heF90cmFjZV9zaXplOiB1c2l6ZSwgbmVlZGVkOiB1c2l6ZSwgbG9nX3N0YWNraW5nX2hlaWdodDogdTMyKSAtPiB1c2l6ZSB7CisgICAgaWYgc3RkOjplbnY6OnZhcigiU1AxX0dQVV9GTE9PUl9FWEFDVCIpLm1hcCh8dnwgdiA9PSAiMCIpLnVud3JhcF9vcihmYWxzZSkgeworICAgICAgICByZXR1cm4gbWF4X3RyYWNlX3NpemU7CisgICAgfQorICAgIG1heF90cmFjZV9zaXplLm1pbihuZWVkZWQgKyAoMSA8PCBsb2dfc3RhY2tpbmdfaGVpZ2h0KSkKK30KKwogYXN5bmMgZm4gYWxsb2NhdGVfYW5kX2luaXRpYWxpemVfdHJhY2VzKAogICAgIHByZXByb2Nlc3NlZF90cmFjZXM6IEJUcmVlTWFwPFN0cmluZywgVHJhY2U8VGFza1Njb3BlPj4sCiAgICAgbWF4X3RyYWNlX3NpemU6IHVzaXplLApAQCAtNDk0LDYgKzUyMSwxMSBAQCBhc3luYyBmbiBhbGxvY2F0ZV9hbmRfaW5pdGlhbGl6ZV90cmFjZXMoCiAKICAgICBsZXQgdG90YWxfZ2IgPSB0b3RhbF9ieXRlcyBhcyBmNjQgLyAoMSA8PCAzMCkgYXMgZjY0OwogICAgIHRyYWNpbmc6OmRlYnVnISgiQWxsb2NhdGluZyB7Oj99IEdCIG9mIHRyYWNlcyIsIHRvdGFsX2diKTsKKyAgICBpZiBzdGQ6OmVudjo6dmFyKCJTUDFfR1BVX0ZMT09SX0xPRyIpLmlzX29rKCkgeworICAgICAgICBlcHJpbnRsbiEoCisgICAgICAgICAgICAiRkxPT1IgdHJhY2VnZW4gYWxsb2MgY2FwYWNpdHlfZWxlbWVudHM9e21heF90cmFjZV9zaXplfSBieXRlcz17dG90YWxfYnl0ZXN9ICh7dG90YWxfZ2I6LjN9IEdCKSIKKyAgICAgICAgKTsKKyAgICB9CiAgICAgbGV0IG11dCBkZW5zZV9kYXRhOiBCdWZmZXI8RmVsdCwgVGFza1Njb3BlPiA9CiAgICAgICAgIEJ1ZmZlcjo6d2l0aF9jYXBhY2l0eV9pbihtYXhfdHJhY2Vfc2l6ZSwgYmFja2VuZC5jbG9uZSgpKTsKICAgICBsZXQgbXV0IGNvbF9pbmRleDogQnVmZmVyPHUzMiwgVGFza1Njb3BlPiA9CkBAIC02NzcsOSArNzA5LDE0IEBAIHB1YiBhc3luYyBmbiBzZXR1cF90cmFjZWdlbjxBOiBDdWRhVHJhY2VnZW5BaXI8RmVsdD4+KAogICAgIGxldCBwcmVwcm9jZXNzZWRfdHJhY2VzID0KICAgICAgICAgZGV2aWNlX3ByZXByb2Nlc3NlZF90cmFjZWdlbihwcm9ncmFtLCBob3N0X3BoYXNlX3RyYWNlZ2VuLCBiYWNrZW5kKS5hd2FpdDsKIAorICAgIGxldCBjYXBhY2l0eSA9IGZsb29yX2NhcGFjaXR5KAorICAgICAgICBtYXhfdHJhY2Vfc2l6ZSwKKyAgICAgICAgcGFkZGVkX3RyYWNlX2VsZW1lbnRzKCZwcmVwcm9jZXNzZWRfdHJhY2VzLCBsb2dfc3RhY2tpbmdfaGVpZ2h0KSwKKyAgICAgICAgbG9nX3N0YWNraW5nX2hlaWdodCwKKyAgICApOwogICAgIGxldCBqYWdnZWRfdHJhY2VzID0gYWxsb2NhdGVfYW5kX2luaXRpYWxpemVfdHJhY2VzKAogICAgICAgICBwcmVwcm9jZXNzZWRfdHJhY2VzLAotICAgICAgICBtYXhfdHJhY2Vfc2l6ZSwKKyAgICAgICAgY2FwYWNpdHksCiAgICAgICAgIGxvZ19zdGFja2luZ19oZWlnaHQsCiAgICAgICAgIG1heF9sb2dfcm93X2NvdW50LAogICAgICAgICBiYWNrZW5kLApAQCAtOTg0LDkgKzEwMjEsMTUgQEAgcHViIGFzeW5jIGZuIGZ1bGxfdHJhY2VnZW48QTogQ3VkYVRyYWNlZ2VuQWlyPEZlbHQ+PigKIAogICAgIGxvZ19jaGlwX3N0YXRzKG1hY2hpbmUsICZjaGlwX3NldCwgJm1haW5fdHJhY2VzKTsKIAorICAgIGxldCBjYXBhY2l0eSA9IGZsb29yX2NhcGFjaXR5KAorICAgICAgICBtYXhfdHJhY2Vfc2l6ZSwKKyAgICAgICAgcGFkZGVkX3RyYWNlX2VsZW1lbnRzKCZwcmVwcm9jZXNzZWRfdHJhY2VzLCBsb2dfc3RhY2tpbmdfaGVpZ2h0KQorICAgICAgICAgICAgKyBwYWRkZWRfdHJhY2VfZWxlbWVudHMoJm1haW5fdHJhY2VzLCBsb2dfc3RhY2tpbmdfaGVpZ2h0KSwKKyAgICAgICAgbG9nX3N0YWNraW5nX2hlaWdodCwKKyAgICApOwogICAgIGxldCBtdXQgamFnZ2VkX21sZSA9IGFsbG9jYXRlX2FuZF9pbml0aWFsaXplX3RyYWNlcygKICAgICAgICAgcHJlcHJvY2Vzc2VkX3RyYWNlcywKLSAgICAgICAgbWF4X3RyYWNlX3NpemUsCisgICAgICAgIGNhcGFjaXR5LAogICAgICAgICBsb2dfc3RhY2tpbmdfaGVpZ2h0LAogICAgICAgICBtYXhfbG9nX3Jvd19jb3VudCwKICAgICAgICAgYmFja2VuZCwKQEAgLTEwMDIsNiArMTA0NSwxOCBAQCBwdWIgYXN5bmMgZm4gZnVsbF90cmFjZWdlbjxBOiBDdWRhVHJhY2VnZW5BaXI8RmVsdD4+KAogICAgICkKICAgICAuYXdhaXQ7CiAKKyAgICBpZiBzdGQ6OmVudjo6dmFyKCJTUDFfR1BVX0ZMT09SX0xPRyIpLmlzX29rKCkgeworICAgICAgICBsZXQgZGVuc2UgPSBqYWdnZWRfbWxlLmRlbnNlKCk7CisgICAgICAgIGxldCAoZnJlZSwgdG90YWwpID0gc3AxX2dwdV9jdWRhcnQ6OmN1ZGFfbWVtb3J5X2luZm8oKS51bndyYXBfb3IoKDAsIDApKTsKKyAgICAgICAgZXByaW50bG4hKAorICAgICAgICAgICAgIkZMT09SIHRyYWNlZ2VuIHVzZWQgcHJlcHJvY2Vzc2VkX2VsZW1lbnRzPXt9IG1haW5fZWxlbWVudHM9e30gZGVuc2VfbGVuPXt9IGNhcGFjaXR5X2VsZW1lbnRzPXtjYXBhY2l0eX0gbWF4X3RyYWNlX3NpemU9e21heF90cmFjZV9zaXplfSBkZXZpY2VfdXNlZF9taWI9e30iLAorICAgICAgICAgICAgZGVuc2UucHJlcHJvY2Vzc2VkX29mZnNldCwKKyAgICAgICAgICAgIGRlbnNlLm1haW5fc2l6ZSgpLAorICAgICAgICAgICAgZGVuc2UuZGVuc2UubGVuKCksCisgICAgICAgICAgICAodG90YWwgLSBmcmVlKSA+PiAyMAorICAgICAgICApOworICAgIH0KKwogICAgIChwdWJsaWNfdmFsdWVzLCBqYWdnZWRfbWxlLCBjaGlwX3NldCwgcGVybWl0KQogfQogCmRpZmYgLS1naXQgYS9zcDEtZ3B1L2NyYXRlcy9wcm92ZXJfY29tcG9uZW50cy9zcmMvYnVpbGRlci5ycyBiL3NwMS1ncHUvY3JhdGVzL3Byb3Zlcl9jb21wb25lbnRzL3NyYy9idWlsZGVyLnJzCmluZGV4IDVkY2NkOWQuLjU3NGQ0ZmEgMTAwNjQ0Ci0tLSBhL3NwMS1ncHUvY3JhdGVzL3Byb3Zlcl9jb21wb25lbnRzL3NyYy9idWlsZGVyLnJzCisrKyBiL3NwMS1ncHUvY3JhdGVzL3Byb3Zlcl9jb21wb25lbnRzL3NyYy9idWlsZGVyLnJzCkBAIC0yMywyOCArMjMsNzUgQEAgdXNlIGNyYXRlOjp7CiAgICAgU1AxQ3VkYVByb3ZlckNvbXBvbmVudHMsCiB9OwogCisvLy8gSWduZXVtIHByb3Zlci1mbG9vciBwYXRjaCAoNSBPY3RvYmVyIDIwMjYpLiBVcHN0cmVhbSBzaXplcyBldmVyeSBkZXZpY2UgYnVmZmVyIGZvciBhIDI0IEdCIGNhcmQgb3IgbGFyZ2VyCisvLy8gYW5kIHBhbmljcyBiZWxvdyB0aGF0LCB3aGF0ZXZlciB0aGUgc2hhcmQuIEhlcmUgdGhlIGNhcmQncyBtZW1vcnkgKG9yIGBTUDFfR1BVX01FTU9SWV9CVURHRVRfR0JgKSBwaWNrcyBhCisvLy8gdGllciwgYW5kIGBTUDFfR1BVX0VMRU1FTlRfVEhSRVNIT0xEYCAvIGBTUDFfR1BVX1JFQ1VSU0lPTl9UUkFDRV9BTExPQ0FUSU9OYCBzZXQgdGhlIHR3byBidWZmZXJzIGRpcmVjdGx5LgorLy8vIFRoZSBwcm9vZiBmb3JtYXQsIHRoZSB2ZXJpZmllciBhbmQgdGhlIHByb2dyYW0gaWRzIGRvIG5vdCBjaGFuZ2U6IHRoZSBlbGVtZW50IHRocmVzaG9sZCBvbmx5IGRlY2lkZXMgd2hlcmUKKy8vLyB0aGUgZXhlY3V0b3Igc3BsaXRzIHNoYXJkcywgYXMgdXBzdHJlYW0ncyBvd24gMjQgR0IgdGllciBhbHJlYWR5IGRvZXMuCitmbiBlbnZfdXNpemUobmFtZTogJnN0cikgLT4gT3B0aW9uPHVzaXplPiB7CisgICAgc3RkOjplbnY6OnZhcihuYW1lKS5vaygpLmFuZF90aGVuKHxzfCBzLnBhcnNlOjo8dXNpemU+KCkub2soKSkKK30KKworZm4gZW52X2Y2NChuYW1lOiAmc3RyKSAtPiBPcHRpb248ZjY0PiB7CisgICAgc3RkOjplbnY6OnZhcihuYW1lKS5vaygpLmFuZF90aGVuKHxzfCBzLnBhcnNlOjo8ZjY0PigpLm9rKCkpCit9CisKKy8vLyBUaGUgY29yZSBlbGVtZW50IHRocmVzaG9sZCBmb3IgYSBtZW1vcnkgYnVkZ2V0IGluIEdCICh1cHN0cmVhbSdzIG93biBmaWd1cmUgZm9yIHRoZSBidWRnZXQsICs0LCBhcyBpdAorLy8vIGNvbXB1dGVkIGl0OiBhIDMyIEdCIGNhcmQgaXMgMzYsIGEgMjQgR0IgY2FyZCAyOCwgYSAxNiBHQiBjYXJkIDIwLCBhIDEyIEdCIGNhcmQgMTYpLgorcHViIGZuIGVsZW1lbnRfdGhyZXNob2xkX2Zvcl9idWRnZXQoZ3B1X21lbW9yeV9nYjogdXNpemUsIGZ1bGxfc2l6ZV9zaGFyZHM6IGJvb2wpIC0+IHU2NCB7CisgICAgaWYgZ3B1X21lbW9yeV9nYiA+IDMwIHx8IChmdWxsX3NpemVfc2hhcmRzICYmIGdwdV9tZW1vcnlfZ2IgPj0gMjQpIHsKKyAgICAgICAgRUxFTUVOVF9USFJFU0hPTEQKKyAgICB9IGVsc2UgaWYgZ3B1X21lbW9yeV9nYiA+PSAyNCB7CisgICAgICAgIEVMRU1FTlRfVEhSRVNIT0xEIC0gKDEgPDwgMjYpIC0gKDEgPDwgMjUpIC0gKDEgPDwgMjQpCisgICAgfSBlbHNlIGlmIGdwdV9tZW1vcnlfZ2IgPj0gMTggeworICAgICAgICAoMSA8PCAyNykgKyAoMSA8PCAyNikKKyAgICB9IGVsc2UgeworICAgICAgICAxIDw8IDI3CisgICAgfQorfQorCisvLy8gVGhlIHJlY3Vyc2lvbiB0cmFjZSBhbGxvY2F0aW9uIChlbGVtZW50cykgZm9yIGEgbWVtb3J5IGJ1ZGdldC4KK3B1YiBmbiByZWN1cnNpb25fdHJhY2VfYWxsb2NhdGlvbl9mb3JfYnVkZ2V0KGdwdV9tZW1vcnlfZ2I6IHVzaXplKSAtPiB1c2l6ZSB7CisgICAgaWYgZ3B1X21lbW9yeV9nYiA+PSAyNCB7CisgICAgICAgIFJFQ1VSU0lPTl9UUkFDRV9BTExPQ0FUSU9OCisgICAgfSBlbHNlIHsKKyAgICAgICAgUkVDVVJTSU9OX1RSQUNFX0FMTE9DQVRJT04KKyAgICB9Cit9CisKK3B1YiBmbiBncHVfbWVtb3J5X2diKCkgLT4gdXNpemUgeworICAgIGxldCBnYiA9IDEwMjQuMCAqIDEwMjQuMCAqIDEwMjQuMDsKKyAgICBtYXRjaCBlbnZfZjY0KCJTUDFfR1BVX01FTU9SWV9CVURHRVRfR0IiKSB7CisgICAgICAgIFNvbWUoYikgPT4gKGIuY2VpbCgpIGFzIHVzaXplKSArIDQsCisgICAgICAgIE5vbmUgPT4gKCgoY3VkYV9tZW1vcnlfaW5mbygpLnVud3JhcCgpLjEgYXMgZjY0KSAvIGdiKS5jZWlsKCkgYXMgdXNpemUpICsgNCwKKyAgICB9Cit9CisKK3B1YiBmbiByZWN1cnNpb25fdHJhY2VfYWxsb2NhdGlvbigpIC0+IHVzaXplIHsKKyAgICBlbnZfdXNpemUoIlNQMV9HUFVfUkVDVVJTSU9OX1RSQUNFX0FMTE9DQVRJT04iKQorICAgICAgICAudW53cmFwX29yX2Vsc2UofHwgcmVjdXJzaW9uX3RyYWNlX2FsbG9jYXRpb25fZm9yX2J1ZGdldChncHVfbWVtb3J5X2diKCkpKQorfQorCiBwdWIgZm4gbG9jYWxfZ3B1X29wdHMoKSAtPiBTUDFDb3JlT3B0cyB7CiAgICAgbGV0IG11dCBvcHRzID0gU1AxQ29yZU9wdHM6OmRlZmF1bHQoKTsKIAogICAgIGxldCBsb2cyX3NoYXJkX3NpemUgPSAyNDsKICAgICBvcHRzLnNoYXJkX3NpemUgPSAxIDw8IGxvZzJfc2hhcmRfc2l6ZTsKIAotICAgIGxldCBnYiA9IDEwMjQuMCAqIDEwMjQuMCAqIDEwMjQuMDsKLQotICAgIC8vIEdldCB0aGUgYW1vdW50IG9mIG1lbW9yeSBvbiB0aGUgR1BVLgotICAgIGxldCBncHVfbWVtb3J5X2diOiB1c2l6ZSA9ICgoKGN1ZGFfbWVtb3J5X2luZm8oKS51bndyYXAoKS4xIGFzIGY2NCkgLyBnYikuY2VpbCgpIGFzIHVzaXplKSArIDQ7Ci0KLSAgICBpZiBncHVfbWVtb3J5X2diIDwgMjQgewotICAgICAgICBwYW5pYyEoIlVuc3VwcG9ydGVkIEdQVSBtZW1vcnk6IHtncHVfbWVtb3J5X2difSwgbXVzdCBiZSBhdCBsZWFzdCAyNEdCIik7Ci0gICAgfQorICAgIC8vIFRoZSBjYXJkJ3MgbWVtb3J5IHBsdXMgNCwgYXMgdXBzdHJlYW0gY29tcHV0ZWQgaXQgKGEgMzIgR0IgY2FyZCByZWFkcyAzNiksIG9yIHRoZSBidWRnZXQgZ2l2ZW4uCisgICAgbGV0IGdwdV9tZW1vcnlfZ2IgPSBncHVfbWVtb3J5X2diKCk7CiAKLSAgICBsZXQgc2hhcmRfdGhyZXNob2xkID0gaWYgIW9wdHMuZnVsbF9zaXplX3NoYXJkcyAmJiBncHVfbWVtb3J5X2diIDw9IDMwIHsKLSAgICAgICAgRUxFTUVOVF9USFJFU0hPTEQgLSAoMSA8PCAyNikgLSAoMSA8PCAyNSkgLSAoMSA8PCAyNCkKLSAgICB9IGVsc2UgewotICAgICAgICBFTEVNRU5UX1RIUkVTSE9MRAorICAgIGxldCBzaGFyZF90aHJlc2hvbGQgPSBtYXRjaCBlbnZfdXNpemUoIlNQMV9HUFVfRUxFTUVOVF9USFJFU0hPTEQiKSB7CisgICAgICAgIFNvbWUodCkgPT4gdCBhcyB1NjQsCisgICAgICAgIE5vbmUgPT4gZWxlbWVudF90aHJlc2hvbGRfZm9yX2J1ZGdldChncHVfbWVtb3J5X2diLCBvcHRzLmZ1bGxfc2l6ZV9zaGFyZHMpLAogICAgIH07CisgICAgbGV0IGhlaWdodF90aHJlc2hvbGQgPSBvcHRzLnNoYXJkaW5nX3RocmVzaG9sZC5oZWlnaHRfdGhyZXNob2xkOwogCi0gICAgdHJhY2luZzo6ZGVidWchKCJTaGFyZCB0aHJlc2hvbGQ6IHtzaGFyZF90aHJlc2hvbGR9Iik7CisgICAgZXByaW50bG4hKAorICAgICAgICAiRkxPT1Igb3B0cyBncHVfbWVtb3J5X2diPXtncHVfbWVtb3J5X2difSBlbGVtZW50X3RocmVzaG9sZD17c2hhcmRfdGhyZXNob2xkfSBoZWlnaHRfdGhyZXNob2xkPXtoZWlnaHRfdGhyZXNob2xkfSByZWN1cnNpb25fdHJhY2VfYWxsb2NhdGlvbj17fSBmdWxsX3NpemVfc2hhcmRzPXt9IiwKKyAgICAgICAgcmVjdXJzaW9uX3RyYWNlX2FsbG9jYXRpb24oKSwKKyAgICAgICAgb3B0cy5mdWxsX3NpemVfc2hhcmRzCisgICAgKTsKICAgICBvcHRzLnNoYXJkaW5nX3RocmVzaG9sZC5lbGVtZW50X3RocmVzaG9sZCA9IHNoYXJkX3RocmVzaG9sZDsKIAogICAgIG9wdHMuZ2xvYmFsX2RlcGVuZGVuY2llc19vcHQgPSB0cnVlOwpAQCAtOTIsNyArMTM5LDcgQEAgcHViIGFzeW5jIGZuIHJlY3Vyc2lvbl9wcm92ZXJfYW5kX3ZlcmlmaWVyKAogKSB7CiAgICAgbGV0IHJlY3Vyc2lvbl92ZXJpZmllciA9IFNQMUN1ZGFQcm92ZXJDb21wb25lbnRzOjpjb21wcmVzc192ZXJpZmllcigpOwogICAgICgKLSAgICAgICAgbmV3X2N1ZGFfcHJvdmVyKCZyZWN1cnNpb25fdmVyaWZpZXIsIFJFQ1VSU0lPTl9UUkFDRV9BTExPQ0FUSU9OLCA0LCBmYWxzZSwgZmFsc2UsIHNjb3BlKQorICAgICAgICBuZXdfY3VkYV9wcm92ZXIoJnJlY3Vyc2lvbl92ZXJpZmllciwgcmVjdXJzaW9uX3RyYWNlX2FsbG9jYXRpb24oKSwgNCwgZmFsc2UsIGZhbHNlLCBzY29wZSkKICAgICAgICAgICAgIC5hd2FpdCwKICAgICAgICAgcmVjdXJzaW9uX3ZlcmlmaWVyLAogICAgICkKZGlmZiAtLWdpdCBhL3NwMS1ncHUvY3JhdGVzL3NlcnZlci9zcmMvc2VydmVyLnJzIGIvc3AxLWdwdS9jcmF0ZXMvc2VydmVyL3NyYy9zZXJ2ZXIucnMKaW5kZXggNDAzNWYxZi4uMGQwZDkwNyAxMDA2NDQKLS0tIGEvc3AxLWdwdS9jcmF0ZXMvc2VydmVyL3NyYy9zZXJ2ZXIucnMKKysrIGIvc3AxLWdwdS9jcmF0ZXMvc2VydmVyL3NyYy9zZXJ2ZXIucnMKQEAgLTE1Nyw2ICsxNTcsNyBAQCBpbXBsIFNlcnZlciB7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBsZXQgcGsgPSBDYWNoZWRQcm9ncmFtIHsgZWxmOiBBcmM6Om5ldyhFbGY6OkR5bmFtaWMoZWxmLmludG8oKSkpLCB2azogdmsuY2xvbmUoKSB9OwogICAgICAgICAgICAgICAgIGN0eC5wa19jYWNoZS5pbnNlcnQoZWxmX2hhc2gsIHBrKTsKKyAgICAgICAgICAgICAgICBmbG9vcl9tZW1vcnlfbGluZSgiYWZ0ZXIgc2V0dXAiKTsKICAgICAgICAgICAgICAgICBSZXNwb25zZTo6U2V0dXAgeyBpZDogZWxmX2hhc2gsIHZrIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJlcXVlc3Q6OkRlc3Ryb3kgeyBrZXkgfSA9PiB7CkBAIC0xNzcsMTUgKzE3OCwzMSBAQCBpbXBsIFNlcnZlciB7CiAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBsZXQgY29udGV4dCA9IFNQMUNvbnRleHQ6OmJ1aWxkZXIoKS5wcm9vZl9ub25jZShwcm9vZl9ub25jZSkuYnVpbGQoKTsKLSAgICAgICAgICAgICAgICBtYXRjaCBwcm92ZXIucHJvdmVfd2l0aF9tb2RlKCZjYWNoZWQuZWxmLCBzdGRpbiwgY29udGV4dCwgbW9kZSkuYXdhaXQgeworICAgICAgICAgICAgICAgIGxldCBzdGFydGVkID0gc3RkOjp0aW1lOjpJbnN0YW50Ojpub3coKTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBtYXRjaCBwcm92ZXIucHJvdmVfd2l0aF9tb2RlKCZjYWNoZWQuZWxmLCBzdGRpbiwgY29udGV4dCwgbW9kZSkuYXdhaXQgewogICAgICAgICAgICAgICAgICAgICBPayhwcm9vZikgPT4gUmVzcG9uc2U6OlByb29mIHsgcHJvb2YgfSwKICAgICAgICAgICAgICAgICAgICAgRXJyKGUpID0+IFJlc3BvbnNlOjpQcm92ZXJFcnJvcihlLnRvX3N0cmluZygpKSwKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBmbG9vcl9tZW1vcnlfbGluZSgmZm9ybWF0ISgiYWZ0ZXIgcHJvdmUgezo/fSBpbiB7Oi4xfSBzIiwgbW9kZSwgc3RhcnRlZC5lbGFwc2VkKCkuYXNfc2Vjc19mNjQoKSkpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CiAKKy8vLyBJZ25ldW0gcHJvdmVyLWZsb29yIHBhdGNoOiB0aGUgZGV2aWNlIG1lbW9yeSBpbiB1c2UgKHRvdGFsIG1pbnVzIGZyZWUsIGFzIHRoZSBkcml2ZXIgcmVwb3J0cyBpdCkgYXQgdGhlCisvLy8gcG9pbnRzIHRoYXQgYm91bmQgYSBwcm9vZiwgc28gYSBydW4ncyBsb2cgY2FycmllcyB0aGUgdGVybXMgb2YgdGhlIHBlYWsgd2l0aG91dCBhIHNhbXBsZXIuCitmbiBmbG9vcl9tZW1vcnlfbGluZSh3aGF0OiAmc3RyKSB7CisgICAgaWYgbGV0IE9rKChmcmVlLCB0b3RhbCkpID0gc3AxX2dwdV9jdWRhcnQ6OmN1ZGFfbWVtb3J5X2luZm8oKSB7CisgICAgICAgIGVwcmludGxuISgKKyAgICAgICAgICAgICJGTE9PUiBtZW1vcnkge3doYXR9OiBkZXZpY2VfdXNlZF9taWI9e30gZnJlZV9taWI9e30gdG90YWxfbWliPXt9IiwKKyAgICAgICAgICAgICh0b3RhbCAtIGZyZWUpID4+IDIwLAorICAgICAgICAgICAgZnJlZSA+PiAyMCwKKyAgICAgICAgICAgIHRvdGFsID4+IDIwCisgICAgICAgICk7CisgICAgfQorfQorCiBmbiBzaGEyNTYoZGF0YTogJlt1OF0pIC0+IFt1ODsgMzJdIHsKICAgICB1c2Ugc2hhMjo6e0RpZ2VzdCwgU2hhMjU2fTsKICAgICBsZXQgbXV0IGhhc2hlciA9IFNoYTI1Njo6bmV3KCk7Cg=='
|
|
[IO.File]::WriteAllBytes((Join-Path $job 'floor.patch'), [Convert]::FromBase64String($patchB64))
|
|
$patchW = WslPath (Join-Path $job 'floor.patch')
|
|
$bash = @'
|
|
set -uo pipefail
|
|
export PATH="$HOME/.cargo/bin:/usr/local/go/bin:$PATH"
|
|
CUDA_DIR="$(ls -d /usr/local/cuda-12.* 2>/dev/null | sort -V | tail -1 || true)"
|
|
if [ -z "$CUDA_DIR" ]; then echo "RESULT build_failed no /usr/local/cuda-12.*"; exit 2; fi
|
|
export CUDA_PATH="$CUDA_DIR" CUDACXX="$CUDA_DIR/bin/nvcc" PATH="$CUDA_DIR/bin:$PATH" LD_LIBRARY_PATH="$CUDA_DIR/lib64:/usr/lib/wsl/lib:${LD_LIBRARY_PATH:-}"
|
|
stamp() { date -u +%Y-%m-%dT%H:%M:%SZ; }
|
|
FLOOR=/opt/igneum-floor; SRC=$FLOOR/sp1; mkdir -p $FLOOR/bin $FLOOR/home/.sp1/bin $FLOOR/logs
|
|
PATCH="PATCH_PATH_PLACEHOLDER"
|
|
echo "RESULT patch_sha256 $(sha256sum "$PATCH" | cut -c1-64) expected 08ce05557ee756ff5c302912a0b36910603e67eb786ed58b6529455e0c3b2d52"
|
|
echo "RESULT toolchain nvcc=$(nvcc --version | grep -o 'release [0-9.]*') cargo=$(cargo --version) go=$(go version 2>/dev/null || echo MISSING) protoc=$(protoc --version 2>/dev/null || echo MISSING) cmake=$(cmake --version 2>/dev/null | head -1 || echo MISSING) nproc=$(nproc) disk_avail=$(df -BG /opt | awk 'NR==2 {print $4}')"
|
|
if [ ! -d "$SRC/.git" ]; then
|
|
echo "STAGE clone $(stamp)"
|
|
git clone -q --depth 1 --branch v6.8.1 https://github.com/succinctlabs/sp1 "$SRC" 2>&1 | tail -2 || { echo "RESULT build_failed clone"; exit 2; }
|
|
fi
|
|
cd "$SRC"
|
|
git checkout -q -- . && git clean -qfd sp1-gpu/crates >/dev/null 2>&1
|
|
echo "RESULT source $(git describe --tags --always) $(git rev-parse HEAD)"
|
|
git apply "$PATCH" || { echo "RESULT build_failed patch does not apply"; exit 2; }
|
|
touch sp1-gpu/crates/prover_components/src/builder.rs sp1-gpu/crates/jagged_tracegen/src/lib.rs sp1-gpu/crates/server/src/server.rs
|
|
echo "RESULT patched $(git diff --stat | tail -1)"
|
|
# Go, as the release workflow installs it (the server's native-gnark feature compiles the gnark library with go;
|
|
# the wrap path is never run by a compressed proof, but the feature is upstream's and stays): a pinned tarball
|
|
# unpacked under /opt/igneum-floor, on this job's PATH only, no package installed on the PC.
|
|
if ! command -v go >/dev/null 2>&1; then
|
|
if [ ! -x $FLOOR/go/bin/go ]; then
|
|
echo "STAGE go $(stamp) fetching go1.27.1 (70,553,950 bytes, sha256 63d339f0...)"
|
|
curl -sSL -o $FLOOR/go.tgz https://go.dev/dl/go1.27.1.linux-amd64.tar.gz || { echo "RESULT build_failed go download"; exit 2; }
|
|
echo "63d339f0da5ab53635a56f2490a7984dfe12dfcff22ad749f63edaf590168445 $FLOOR/go.tgz" | sha256sum -c - >/dev/null || { echo "RESULT build_failed go sha256 mismatch: $(sha256sum $FLOOR/go.tgz)"; exit 2; }
|
|
echo "RESULT go_tarball sha256 $(sha256sum $FLOOR/go.tgz | cut -c1-64) matches 63d339f0da5ab53635a56f2490a7984dfe12dfcff22ad749f63edaf590168445"
|
|
tar -xzf $FLOOR/go.tgz -C $FLOOR && rm -f $FLOOR/go.tgz
|
|
fi
|
|
export PATH="$FLOOR/go/bin:$PATH" GOPATH=$FLOOR/gopath GOCACHE=$FLOOR/gocache GOFLAGS=-mod=mod
|
|
fi
|
|
echo "RESULT go $(go version 2>&1 | head -1)"
|
|
LOG=$FLOOR/logs/build.log; : > "$LOG"
|
|
echo "RESULT dirs $(ls -ld $FLOOR $FLOOR/logs 2>&1 | tr '\n' ' ') pwd=$(pwd)"
|
|
export CUDA_ARCHS=86,89,120 CARGO_TARGET_DIR=$FLOOR/target
|
|
JOBS=8
|
|
echo "STAGE build $(stamp) jobs=$JOBS"
|
|
t0=$(date +%s)
|
|
nice -n 19 cargo build --release --bin sp1-gpu-server -j $JOBS >> "$LOG" 2>&1 &
|
|
BP=$!
|
|
while kill -0 $BP 2>/dev/null; do sleep 120; echo "STAGE building $(stamp) $(( ($(date +%s) - t0) / 60 )) min: $(grep -c '^ Compiling' "$LOG") crates compiled, last: $(grep '^ Compiling' "$LOG" | tail -1 | tr -s ' ' | cut -c1-80)"; done
|
|
wait $BP; rc=$?
|
|
echo "RESULT build_exit $rc time_s=$(( $(date +%s) - t0 )) crates=$(grep -c '^ Compiling' "$LOG")"
|
|
if [ $rc -ne 0 ]; then echo "RESULT build_failed"; echo "== error lines =="; grep -n -B2 -A12 -E '^(error|warning: unused manifest| process didn|caused by)' "$LOG" | head -100; echo "== log tail =="; tail -n 60 "$LOG"; exit 2; fi
|
|
BIN=$FLOOR/target/release/sp1-gpu-server
|
|
cp "$BIN" $FLOOR/bin/sp1-gpu-server && cp "$BIN" $FLOOR/home/.sp1/bin/sp1-gpu-server && chmod +x $FLOOR/bin/sp1-gpu-server $FLOOR/home/.sp1/bin/sp1-gpu-server
|
|
echo "RESULT binary bytes=$(stat -c %s "$BIN") sha256=$(sha256sum "$BIN" | cut -c1-64) version=$($BIN --version 2>/dev/null)"
|
|
echo "RESULT elf_targets $(cuobjdump --list-elf "$BIN" 2>/dev/null | grep -o 'sm_[0-9]*' | sort -u | tr '\n' ' ')"
|
|
echo "RESULT live_server_untouched sha256=$(sha256sum /root/.sp1/bin/sp1-gpu-server | cut -c1-16) (expected c2642ad1c42e85d8)"
|
|
echo "RESULT end $(stamp)"
|
|
'@
|
|
$bash = $bash.Replace('PATCH_PATH_PLACEHOLDER', $patchW)
|
|
$bashFile = Join-Path $job 'build.sh'
|
|
[IO.File]::WriteAllText($bashFile, ($bash -replace "`r`n", "`n"), (New-Object System.Text.UTF8Encoding $false))
|
|
& wsl.exe -d Ubuntu-24.04 -u root -- bash (WslPath $bashFile) 2>&1 | ForEach-Object { ($_ -replace "`0", '') }
|
|
"RESULT end $(Stamp)"
|