At ${WORK} we have a so-called “monster server” as our resident FreeBSD builder. Unpatched Synth 3.09 handles up to 64 hyperthreads, i.e. 64 scanners and 128 builders. Our builder has 88 hyperthreads, necessitating an expansion to 88 scanners and 176 builders.

Below is a “Git diff” ready for git apply.

diff --git a/ports-mgmt/synth/files/patch-src_definitions.ads b/ports-mgmt/synth/files/patch-src_definitions.ads
new file mode 100644
index 000000000000..041e66248235
--- /dev/null
+++ b/ports-mgmt/synth/files/patch-src_definitions.ads
@@ -0,0 +1,11 @@
+--- src/definitions.ads.orig	2025-02-13 02:08:58 UTC
++++ src/definitions.ads
+@@ -18,7 +18,7 @@ package Definitions is
+    chroot_make_program : constant String := chroot_make;
+    jobs_per_cpu        : constant := 2;
+ 
+-   type cpu_range is range 1 .. 64;
++   type cpu_range is range 1 .. 88;
+    type scanners  is range cpu_range'First .. cpu_range'Last;
+    type builders  is range cpu_range'First .. cpu_range'Last * jobs_per_cpu;
+    type package_system is (ports_collection, pkgsrc);
diff --git a/ports-mgmt/synth/files/patch-src_display.adb b/ports-mgmt/synth/files/patch-src_display.adb
new file mode 100644
index 000000000000..e194244adbae
--- /dev/null
+++ b/ports-mgmt/synth/files/patch-src_display.adb
@@ -0,0 +1,12 @@
+--- src/display.adb.orig	2025-02-13 02:08:58 UTC
++++ src/display.adb
+@@ -556,6 +556,9 @@ package body Display is
+       for bld in builders (33) .. builders (64)  loop
+          c_slave (bld) := c_slave (bld - 32);
+       end loop;
++      for bld in builders (65) .. builders (88)  loop
++         c_slave (bld) := c_slave (bld - 64);
++      end loop;
+ 
+       return True;
+ 
diff --git a/ports-mgmt/synth/files/patch-src_portscan-ops.adb b/ports-mgmt/synth/files/patch-src_portscan-ops.adb
new file mode 100644
index 000000000000..99d5de6db178
--- /dev/null
+++ b/ports-mgmt/synth/files/patch-src_portscan-ops.adb
@@ -0,0 +1,59 @@
+--- src/portscan-ops.adb.orig	2025-02-13 02:08:58 UTC
++++ src/portscan-ops.adb
+@@ -240,6 +240,56 @@ package body PortScan.Ops is
+       builder_127 : build (builder => 127);
+       builder_128 : build (builder => 128);
+ 
++      --  Expansion of cpu_range from 64 to 88 means 176 possible builders
++      builder_129 : build (builder => 129);
++      builder_130 : build (builder => 130);
++      builder_131 : build (builder => 131);
++      builder_132 : build (builder => 132);
++      builder_133 : build (builder => 133);
++      builder_134 : build (builder => 134);
++      builder_135 : build (builder => 135);
++      builder_136 : build (builder => 136);
++      builder_137 : build (builder => 137);
++      builder_138 : build (builder => 138);
++      builder_139 : build (builder => 139);
++      builder_140 : build (builder => 140);
++      builder_141 : build (builder => 141);
++      builder_142 : build (builder => 142);
++      builder_143 : build (builder => 143);
++      builder_144 : build (builder => 144);
++      builder_145 : build (builder => 145);
++      builder_146 : build (builder => 146);
++      builder_147 : build (builder => 147);
++      builder_148 : build (builder => 148);
++      builder_149 : build (builder => 149);
++      builder_150 : build (builder => 150);
++      builder_151 : build (builder => 151);
++      builder_152 : build (builder => 152);
++      builder_153 : build (builder => 153);
++      builder_154 : build (builder => 154);
++      builder_155 : build (builder => 155);
++      builder_156 : build (builder => 156);
++      builder_157 : build (builder => 157);
++      builder_158 : build (builder => 158);
++      builder_159 : build (builder => 159);
++      builder_160 : build (builder => 160);
++      builder_161 : build (builder => 161);
++      builder_162 : build (builder => 162);
++      builder_163 : build (builder => 163);
++      builder_164 : build (builder => 164);
++      builder_165 : build (builder => 165);
++      builder_166 : build (builder => 166);
++      builder_167 : build (builder => 167);
++      builder_168 : build (builder => 168);
++      builder_169 : build (builder => 169);
++      builder_170 : build (builder => 170);
++      builder_171 : build (builder => 171);
++      builder_172 : build (builder => 172);
++      builder_173 : build (builder => 173);
++      builder_174 : build (builder => 174);
++      builder_175 : build (builder => 175);
++      builder_176 : build (builder => 176);
++
+    begin
+       loop
+          all_idle := True;
diff --git a/ports-mgmt/synth/files/patch-src_portscan-packages.adb b/ports-mgmt/synth/files/patch-src_portscan-packages.adb
new file mode 100644
index 000000000000..bd79cbaf380b
--- /dev/null
+++ b/ports-mgmt/synth/files/patch-src_portscan-packages.adb
@@ -0,0 +1,69 @@
+--- src/portscan-packages.adb.orig	2025-02-13 02:08:58 UTC
++++ src/portscan-packages.adb
+@@ -1022,6 +1022,32 @@ package body PortScan.Packages is
+       scan_63 : scan (lot => 63);
+       scan_64 : scan (lot => 64);
+ 
++      --  Expansion of cpu_range from 64 to 88 means 88 possible scanners
++      scan_65 : scan (lot => 65);
++      scan_66 : scan (lot => 66);
++      scan_67 : scan (lot => 67);
++      scan_68 : scan (lot => 68);
++      scan_69 : scan (lot => 69);
++      scan_70 : scan (lot => 70);
++      scan_71 : scan (lot => 71);
++      scan_72 : scan (lot => 72);
++      scan_73 : scan (lot => 73);
++      scan_74 : scan (lot => 74);
++      scan_75 : scan (lot => 75);
++      scan_76 : scan (lot => 76);
++      scan_77 : scan (lot => 77);
++      scan_78 : scan (lot => 78);
++      scan_79 : scan (lot => 79);
++      scan_80 : scan (lot => 80);
++      scan_81 : scan (lot => 81);
++      scan_82 : scan (lot => 82);
++      scan_83 : scan (lot => 83);
++      scan_84 : scan (lot => 84);
++      scan_85 : scan (lot => 85);
++      scan_86 : scan (lot => 86);
++      scan_87 : scan (lot => 87);
++      scan_88 : scan (lot => 88);
++
+    begin
+       while combined_wait loop
+          delay 1.0;
+@@ -1167,6 +1193,33 @@ package body PortScan.Packages is
+       scan_62 : scan (lot => 62);
+       scan_63 : scan (lot => 63);
+       scan_64 : scan (lot => 64);
++
++      --  Expansion of cpu_range from 64 to 88 means 88 possible scanners
++      scan_65 : scan (lot => 65);
++      scan_66 : scan (lot => 66);
++      scan_67 : scan (lot => 67);
++      scan_68 : scan (lot => 68);
++      scan_69 : scan (lot => 69);
++      scan_70 : scan (lot => 70);
++      scan_71 : scan (lot => 71);
++      scan_72 : scan (lot => 72);
++      scan_73 : scan (lot => 73);
++      scan_74 : scan (lot => 74);
++      scan_75 : scan (lot => 75);
++      scan_76 : scan (lot => 76);
++      scan_77 : scan (lot => 77);
++      scan_78 : scan (lot => 78);
++      scan_79 : scan (lot => 79);
++      scan_80 : scan (lot => 80);
++      scan_81 : scan (lot => 81);
++      scan_82 : scan (lot => 82);
++      scan_83 : scan (lot => 83);
++      scan_84 : scan (lot => 84);
++      scan_85 : scan (lot => 85);
++      scan_86 : scan (lot => 86);
++      scan_87 : scan (lot => 87);
++      scan_88 : scan (lot => 88);
++
+    begin
+       while combined_wait loop
+          delay 1.0;
diff --git a/ports-mgmt/synth/files/patch-src_portscan.adb b/ports-mgmt/synth/files/patch-src_portscan.adb
new file mode 100644
index 000000000000..76404bf9ea21
--- /dev/null
+++ b/ports-mgmt/synth/files/patch-src_portscan.adb
@@ -0,0 +1,60 @@
+--- src/portscan.adb.orig	2025-02-13 02:08:58 UTC
++++ src/portscan.adb
+@@ -365,6 +368,33 @@ package body PortScan is
+       scan_62 : scan (lot => 62);
+       scan_63 : scan (lot => 63);
+       scan_64 : scan (lot => 64);
++
++      --  Expansion of cpu_range from 64 to 88 means 88 possible scanners
++      scan_65 : scan (lot => 65);
++      scan_66 : scan (lot => 66);
++      scan_67 : scan (lot => 67);
++      scan_68 : scan (lot => 68);
++      scan_69 : scan (lot => 69);
++      scan_70 : scan (lot => 70);
++      scan_71 : scan (lot => 71);
++      scan_72 : scan (lot => 72);
++      scan_73 : scan (lot => 73);
++      scan_74 : scan (lot => 74);
++      scan_75 : scan (lot => 75);
++      scan_76 : scan (lot => 76);
++      scan_77 : scan (lot => 77);
++      scan_78 : scan (lot => 78);
++      scan_79 : scan (lot => 79);
++      scan_80 : scan (lot => 80);
++      scan_81 : scan (lot => 81);
++      scan_82 : scan (lot => 82);
++      scan_83 : scan (lot => 83);
++      scan_84 : scan (lot => 84);
++      scan_85 : scan (lot => 85);
++      scan_86 : scan (lot => 86);
++      scan_87 : scan (lot => 87);
++      scan_88 : scan (lot => 88);
++
+    begin
+       TIO.Put_Line ("Scanning entire ports tree.");
+       while combined_wait loop

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>