(no commit message)
authordillon <dillon@web>
Fri, 23 Nov 2018 18:44:36 +0000 (18:44 +0000)
committerIkiWiki <ikiwiki.info>
Fri, 23 Nov 2018 18:44:36 +0000 (18:44 +0000)
docs/howtos/How_To_Create_Official_Synth_Repo/index.mdwn [new file with mode: 0644]

diff --git a/docs/howtos/How_To_Create_Official_Synth_Repo/index.mdwn b/docs/howtos/How_To_Create_Official_Synth_Repo/index.mdwn
new file mode 100644 (file)
index 0000000..9a04aef
--- /dev/null
@@ -0,0 +1,78 @@
+## How to Create an Official Synth Repo
+
+### System Environment
+
+* Make sure /usr/dports is updated and that it contains no cruft (git pull; git status).  Remove any cruft.
+
+* Make sure your 'synth' is up-to-date 'pkg upgrade synth'. If you already updated your system you may have to build synth from scratch, from /usr/dports/ports-mgmt/synth.
+
+* Make sure /etc/make.conf is clean.
+
+* Update /usr/src to the current master, make sure there is no cruft in it
+
+* Do a full buildworld, buildkernel, installkernel and installworld
+
+* Reboot
+
+### Synth Environment
+
+* /usr/local/etc/synth/ contains the synth configuation.  It should contain a synth.ini file (you may have to rename the template), and you will have to create or edit a LiveSystem-make.conf file.
+
+* System requirements are hefty.  Just linking chromium alone eats at least 30GB, for example.  Concurrent c++ compiles can eat up to 2GB per process.  We recommend at least 100GB of SSD based swap space and 300GB of free space on the filesystem.
+
+* synth.ini should contain this.  Plus modify the builders and jobs to suit your system.  With 128G of ram, 30/30 or 40/25 works well.  If you have 32G of ram, maybe 8/8 or less.
+
+<pre>
+    ; Take care when hand editing!
+
+    [Global Configuration]
+    profile_selected= LiveSystem
+
+    [LiveSystem]
+    Operating_system= DragonFly
+    Directory_packages= /build/synth/live_packages
+    Directory_repository= /build/synth/live_packages/All
+    Directory_portsdir= /build/synth/dports
+    Directory_options= /build/synth/options
+    Directory_distfiles= /usr/distfiles
+    Directory_buildbase= /build/synth/build
+    Directory_logs= /build/synth/logs
+    Directory_ccache= disabled
+    Directory_system= /
+    Number_of_builders= 30
+    Max_jobs_per_builder= 30
+    Tmpfs_workdir= true
+    Tmpfs_localbase= true
+    Display_with_ncurses= true
+    leverage_prebuilt= false
+</pre>
+
+* LiveSystem-make.conf should contain one line to restrict licensing to only what is allowed to be built as a binary package:
+
+<pre>
+    LICENSES_ACCEPTED=      NONE
+</pre>
+
+* Make sure there is no other cruft in /usr/local/etc/synth/
+
+* In the example above, the synth working dirs are in "/build/synth".  Make sure the base directories exist.  Clean out any cruft for a fresh build from-scratch:
+
+<pre>
+    rm -rf /build/synth/live_packages/*
+    rm -rf /build/synth/logs
+    mkdir /build/synth/logs
+</pre>
+
+* Run synth everything.  I recommend doing this in a 'screen' session in case you lose your ssh session (assuming you are ssh'd into the build machine).
+
+<pre>
+    (optionally start a screen session)
+    synth everything
+</pre>
+
+* A full synth build takes over 24 hours to run on a 48-core box, around 12 hours to run on a 64-core box.  On a 4-core/8-thread box it will take at least 3 days.  There will be times when swap space is heavily used.  If you have not run synth before, monitor your memory and swap loads to make sure you have configured the jobs properly.  If you are overloading the system, you may have to ^C the synth run, reduce the jobs, and start it again.  It will pick up where it left off.
+
+* When synth finishes, let it rebuild the database.  You then have a working binary repo.
+
+* It is usually a good idea to run synth several times to pick up any stuff it couldn't build the first time.  Each of these incremental runs may take a few hours, depending on what it tries to build.
+