xref: /dflybsd-src/usr.bin/dsynth/dsynth.1 (revision c6142119a41f3367aae8da9d7ccd38a047ce8f45)
17a57a34fSSascha Wildner.\"
2*c6142119SAntonio Huete Jimenez.\" Copyright (c) 2021 The DragonFly Project.  All rights reserved.
38ec23ca1SMatthew Dillon.\"
48ec23ca1SMatthew Dillon.\" This code is derived from software contributed to The DragonFly Project
58ec23ca1SMatthew Dillon.\" by Matthew Dillon <dillon@backplane.com>
68ec23ca1SMatthew Dillon.\" This code is based on a concept originally developed by John R. Marino.
78ec23ca1SMatthew Dillon.\"
88ec23ca1SMatthew Dillon.\" Redistribution and use in source and binary forms, with or without
98ec23ca1SMatthew Dillon.\" modification, are permitted provided that the following conditions
108ec23ca1SMatthew Dillon.\" are met:
118ec23ca1SMatthew Dillon.\"
128ec23ca1SMatthew Dillon.\" 1. Redistributions of source code must retain the above copyright
138ec23ca1SMatthew Dillon.\"    notice, this list of conditions and the following disclaimer.
148ec23ca1SMatthew Dillon.\" 2. Redistributions in binary form must reproduce the above copyright
158ec23ca1SMatthew Dillon.\"    notice, this list of conditions and the following disclaimer in
168ec23ca1SMatthew Dillon.\"    the documentation and/or other materials provided with the
178ec23ca1SMatthew Dillon.\"    distribution.
188ec23ca1SMatthew Dillon.\" 3. Neither the name of The DragonFly Project nor the names of its
198ec23ca1SMatthew Dillon.\"    contributors may be used to endorse or promote products derived
208ec23ca1SMatthew Dillon.\"    from this software without specific, prior written permission.
218ec23ca1SMatthew Dillon.\"
228ec23ca1SMatthew Dillon.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
238ec23ca1SMatthew Dillon.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
248ec23ca1SMatthew Dillon.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
258ec23ca1SMatthew Dillon.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
268ec23ca1SMatthew Dillon.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
278ec23ca1SMatthew Dillon.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
288ec23ca1SMatthew Dillon.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
298ec23ca1SMatthew Dillon.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
308ec23ca1SMatthew Dillon.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
318ec23ca1SMatthew Dillon.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
328ec23ca1SMatthew Dillon.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
338ec23ca1SMatthew Dillon.\" SUCH DAMAGE.
348ec23ca1SMatthew Dillon.\"
35*c6142119SAntonio Huete Jimenez.Dd January 26, 2021
367a57a34fSSascha Wildner.Dt DSYNTH 1
378ec23ca1SMatthew Dillon.Os
388ec23ca1SMatthew Dillon.Sh NAME
398ec23ca1SMatthew Dillon.Nm dsynth
408ec23ca1SMatthew Dillon.Nd dsynth bulk dports builder utility
418ec23ca1SMatthew Dillon.Sh SYNOPSIS
428ec23ca1SMatthew Dillon.Nm
43b6bd007bSMatthew Dillon.Op Fl dhvxyDSN
442c9f4f91SMatthew Dillon.Op Fl p Ar profile
458ec23ca1SMatthew Dillon.Op Fl s Ar n
467f0eca56SMatthew Dillon.Op Fl m Ar gb
478ec23ca1SMatthew Dillon.Ar directive
488ec23ca1SMatthew Dillon.Op origins
498ec23ca1SMatthew Dillon.Nm
508ec23ca1SMatthew Dillon.Ar help
518ec23ca1SMatthew Dillon.Sh DESCRIPTION
528ec23ca1SMatthew DillonThe
538ec23ca1SMatthew Dillon.Nm
548ec23ca1SMatthew Dillonutility allows a user to build and maintain part or all of dports
558ec23ca1SMatthew Dillonlocally.
568ec23ca1SMatthew Dillon.Nm
57f1a6aed6SSascha Wildnerfigures out the dependency topology of the dport(s) for you and
588ec23ca1SMatthew Dillonis capable of building any number of ports concurrently based
598ec23ca1SMatthew Dillonon the configuration parameters you supply.
608ec23ca1SMatthew Dillon.Pp
61b6bd007bSMatthew Dillonalso detects changes made to the ports tree and rebuilds packages
62b6bd007bSMatthew Dillonand anything that depends on those packages as needed.
63b6bd007bSMatthew Dillon.Pp
648ec23ca1SMatthew Dillon.Nm
658ec23ca1SMatthew Dillonis based on an application called
668ec23ca1SMatthew Dillon.Xr synth 1
67650b8785SSascha Wildnerwhich was written by John Marino in Ada and served as the conceptual base
688ec23ca1SMatthew Dillonfor this program.
698ec23ca1SMatthew Dillon.Nm
708ec23ca1SMatthew Dillonis written in C and designed to be as portable as possible given a
718ec23ca1SMatthew Dillonports-style infrastructure.
728ec23ca1SMatthew Dillon.Pp
738ec23ca1SMatthew DillonOur recommended build topology is with a configuration as follows:
748ec23ca1SMatthew Dillon.Bd -literal
758ec23ca1SMatthew Dillon[Global Configuration]
768ec23ca1SMatthew Dillonprofile_selected= LiveSystem
778ec23ca1SMatthew Dillon
788ec23ca1SMatthew Dillon[LiveSystem]
798ec23ca1SMatthew DillonOperating_system= DragonFly
808ec23ca1SMatthew DillonDirectory_packages= /build/synth/live_packages
818ec23ca1SMatthew DillonDirectory_repository= /build/synth/live_packages/All
828ec23ca1SMatthew DillonDirectory_portsdir= /build/synth/dports
838ec23ca1SMatthew DillonDirectory_options= /build/synth/options
848ec23ca1SMatthew DillonDirectory_distfiles= /build/synth/distfiles
858ec23ca1SMatthew DillonDirectory_buildbase= /build/synth/build
868ec23ca1SMatthew DillonDirectory_logs= /build/synth/logs
878ec23ca1SMatthew DillonDirectory_ccache= disabled
888ec23ca1SMatthew DillonDirectory_system= /
89483dbac9SMatthew DillonPackage_suffix= .txz
908ec23ca1SMatthew DillonNumber_of_builders= 8
918ec23ca1SMatthew DillonMax_jobs_per_builder= 8
928ec23ca1SMatthew DillonDisplay_with_ncurses= true
938ec23ca1SMatthew Dillon.Ed
948ec23ca1SMatthew Dillon.Pp
958ec23ca1SMatthew DillonThis places all major directories under
968ec23ca1SMatthew Dillon.Pa /build/synth .
978ec23ca1SMatthew DillonIf you want to use the same dports and the same distfiles as your base
988ec23ca1SMatthew Dillonsystem, you can null-mount /usr/distfiles onto /build/synth/distfiles
998ec23ca1SMatthew Dillonand /usr/dports onto /build/synth/dports with
1008ec23ca1SMatthew Dillon.Pa /etc/fstab
1018ec23ca1SMatthew Dillonentries as follows:
1028ec23ca1SMatthew Dillon.Bd -literal
1038ec23ca1SMatthew Dillon# Device              Mountpoint		FStype  Options DumpPass#
1048ec23ca1SMatthew Dillon/usr/distfiles        /build/synth/distfiles	null    rw      4 4
1058ec23ca1SMatthew Dillon/usr/dports           /build/synth/dports	null    rw      4 4
1068ec23ca1SMatthew Dillon.Ed
1078ec23ca1SMatthew Dillon.Pp
1088ec23ca1SMatthew DillonPlease set the number of builders and the maximum number of jobs per
109650b8785SSascha Wildnerbuilder according to available system resources.
110650b8785SSascha WildnerRemember that the total
1118ec23ca1SMatthew Dillonload on the system can be as high as (builders x jobs), and at least 4x
112650b8785SSascha Wildnerthat value in processes.
113650b8785SSascha WildnerSystems are typically restricted by memory and CPU horsepower.
114650b8785SSascha WildnerStart conservative and ramp up according to what your system can handle.
115650b8785SSascha WildnerA good rule of thumb is to set workers to the number of CPU threads your
1168ec23ca1SMatthew Dillonmachine has or to 1/2 the number of gigabytes of memory your system has,
117650b8785SSascha Wildnerwhichever is lower.
118650b8785SSascha WildnerThen set the jobs per worker to no more than the
119650b8785SSascha Wildnernumber of CPU threads your machine has.
1208ec23ca1SMatthew Dillon.Pp
1218ec23ca1SMatthew Dillon.Nm
12217be4d43SSascha Wildnerhas numerous features to manage machine load and swap usage to
1238ec23ca1SMatthew Dillonprevent a machine from being overloaded, allowing more workers
1248ec23ca1SMatthew Dillonto be configured than you might otherwise think is reasonable
1258ec23ca1SMatthew Dillon(which helps a lot when building the smaller ports).
1268ec23ca1SMatthew DillonHowever, users running this program should be aware that very high loads
1278ec23ca1SMatthew Dillonand modest swap use are still likely to develop when building a large
1288ec23ca1SMatthew Dillonnumber of ports or when building very large ports like chromium.
1298ec23ca1SMatthew DillonIf the system is not dedicated to building packages you can reduce the
1308ec23ca1SMatthew Dillonimpact to the rest of the system by running
1318ec23ca1SMatthew Dillon.Nm
1328ec23ca1SMatthew Dillonat nice +20 and also by reducing the number of workers and number of
1338ec23ca1SMatthew Dillonjobs per worker somewhat.
1348ec23ca1SMatthew Dillon.Pp
1358ec23ca1SMatthew DillonWe recommend that a minimum of 64GB of SSD-based swap be configured,
1368ec23ca1SMatthew Dillonor twice as much swap as main memory, whichever is the higher value.
1378ec23ca1SMatthew Dillon.Pp
1388ec23ca1SMatthew DillonWe recommend a minimum of 500GB of storage be configured in
1398ec23ca1SMatthew Dillon.Pa /build
1408ec23ca1SMatthew Dillonor wherever you have configured various directories.
1418ec23ca1SMatthew DillonA full set of distfiles requires at least 120GB, a full dports including
1428ec23ca1SMatthew Dillonthe git repo requires at least 1.5GB, and a full set of built packages
143650b8785SSascha Wildnerrequires at least 75GB.
144650b8785SSascha WildnerIf using a filesystem such as HAMMER or HAMMER2
1458ec23ca1SMatthew Dillonwhich frees space overnight, double all of those numbers.
1468ec23ca1SMatthew Dillon.Pp
1478ec23ca1SMatthew DillonThe actual build infrastructure uses tmpfs... memory and swap, and does
1488ec23ca1SMatthew Dillonnot use regular filesystem space.
1498ec23ca1SMatthew Dillon.Sh OPTIONS
1508ec23ca1SMatthew Dillon.Bl -tag -width indent
151a67bf8dbSMatthew Dillon.It Fl d[d...]
152650b8785SSascha WildnerRun in debug mode.
153650b8785SSascha WildnerIf specified two or more times this will turn off
15454f2fefcSMatthew Dillonncurses and output the primary log (00_last_results.log) to the standard
15554f2fefcSMatthew Dillonoutput, along with additional spew.
1568ec23ca1SMatthew Dillon.It Fl h
1578ec23ca1SMatthew DillonQuickly output a synopsis of options and directives and exit.
1587f0eca56SMatthew Dillon.It Fl m Ar gb
1597f0eca56SMatthew DillonOverride the default package dependency memory target, in gigabytes.
160650b8785SSascha WildnerThe default is 1/2 physical memory.
161650b8785SSascha WildnerThe number of workers will be limited
1627f0eca56SMatthew Dillonsuch that the aggregate size of package dependencies installed in each
1637f0eca56SMatthew Dillonworker slot does not exceed this value.
1647f0eca56SMatthew Dillon.Pp
1657f0eca56SMatthew DillonThis handles a well-known effect where the sheer amount of data that has
1667f0eca56SMatthew Dillonto be installed in tmpfs filesystems for large ports, when multiplied by
1677f0eca56SMatthew Dillonthe number of worker slots, can force excessive paging to occur and leave
168650b8785SSascha Wildnerpreciously little memory available to actually run compiles.
169650b8785SSascha WildnerSome paging
170650b8785SSascha Wildneris necessary to maintain maximum CPU utilization, but excessive paging
1717f0eca56SMatthew Dilloncan cause the whole machine to essentially become idle for extended
1727f0eca56SMatthew Dillonperiods of time.
1732c9f4f91SMatthew Dillon.It Fl p Ar profile
1742c9f4f91SMatthew DillonOverride the global profile default in
1752c9f4f91SMatthew Dillon.Pa /etc/dsynth/dsynth.ini ,
1762c9f4f91SMatthew Dillonallowing you to trivially run whatever profile you like without having to
1772c9f4f91SMatthew Dillonedit the configuration file when switching.
1782c9f4f91SMatthew DillonIn addition, you can now run any number of dsynth's concurrently on the same
1792c9f4f91SMatthew Dillonmachine without having to use a jail, each with a different profile,
1802c9f4f91SMatthew Dillonas long as the packages, repository, buildbase, and logs directories
1812c9f4f91SMatthew Dillonare different.
1822c9f4f91SMatthew Dillon.Pp
1832c9f4f91SMatthew DillonNote that the distfiles directory can be shared and will not conflict
1842c9f4f91SMatthew Dillonor get confused with concurrent fetches.
1858ec23ca1SMatthew Dillon.It Fl s Ar n
1868ec23ca1SMatthew Dillon.Nm
1878ec23ca1SMatthew Dillonusually slow-starts the worker slots, beginning with one slot and increasing
1888ec23ca1SMatthew Dillonby one every 5 seconds until the maximum configured number of workers is
1898ec23ca1SMatthew Dillonreached.
1908ec23ca1SMatthew DillonThis gives
1918ec23ca1SMatthew Dillon.Nm
1928ec23ca1SMatthew Dillona slower ramp that it can load manage against.
1938ec23ca1SMatthew DillonSpecifying 0 disables the slow-start feature and the maximum number of
1948ec23ca1SMatthew Dillonworker slots (limited by the dependency graph) will be loaded immediately.
195*c6142119SAntonio Huete Jimenez.It Fl v
196*c6142119SAntonio Huete JimenezQuickly output the version and exit.
197*c6142119SAntonio Huete Jimenez.It Fl x
198*c6142119SAntonio Huete Jimenez.It Fl xx
199*c6142119SAntonio Huete JimenezNormally dsynth builds a package for any of three reasons: (1) If the contents
200*c6142119SAntonio Huete Jimenezof the ports directory changes, (2) If anything the port depends on requires
201*c6142119SAntonio Huete Jimenezrebuilding so to will the port be rebuilt, (3) If there is no binary package
202*c6142119SAntonio Huete Jimenezalready built for the port.
203*c6142119SAntonio Huete Jimenez.Pp
204*c6142119SAntonio Huete JimenezIf this option is specified, the first test is ignored.
205*c6142119SAntonio Huete JimenezIf this option is specified twice, the first and second tests are ignored.
206*c6142119SAntonio Huete Jimenez.It Fl y
207*c6142119SAntonio Huete JimenezAutomatically answer 'y'es to any questions.
208a67bf8dbSMatthew Dillon.It Fl D
209a67bf8dbSMatthew DillonTurn on DEVELOPER mode when building ports.
210*c6142119SAntonio Huete Jimenez.It Fl P
211*c6142119SAntonio Huete JimenezInclude the check-plist stage.
212*c6142119SAntonio Huete JimenezThis is the default for the
213*c6142119SAntonio Huete Jimenez.Cm everything
214*c6142119SAntonio Huete Jimenezdirective.
215a67bf8dbSMatthew Dillon.It Fl S[S]
216650b8785SSascha WildnerTurn off curses for script friendliness.
217650b8785SSascha WildnerThe output will be log 00 and
21854f2fefcSMatthew Dillonshould be redirected to /dev/null or something similar.
219a67bf8dbSMatthew DillonIf you supply the options twice, color output escapes will also be
220a67bf8dbSMatthew Dillonturned off.
22154f2fefcSMatthew DillonYou may also wish to use the
22254f2fefcSMatthew Dillon.Fl y
22354f2fefcSMatthew Dillonoption for scripting dsynth.
2246d1478d9SMatthew Dillon.It Fl N
2256d1478d9SMatthew DillonNormally
2266d1478d9SMatthew Dillon.Nm
2276d1478d9SMatthew Dillonnices its sub-processes to +10.
2286d1478d9SMatthew DillonThis option disables the feature.
2298ec23ca1SMatthew Dillon.El
2308ec23ca1SMatthew Dillon.Sh DIRECTIVES
2318ec23ca1SMatthew DillonGenerally
2328ec23ca1SMatthew Dillon.Nm
2338ec23ca1SMatthew Dillonis run with a directive and some directives allow a list of ports to be
234650b8785SSascha Wildnerspecified.
235650b8785SSascha WildnerThis list should be space-delimited in DIR/SUBDIR format, for example:
2368ec23ca1SMatthew Dillon.Ar www/chromium .
2378ec23ca1SMatthew DillonFor directives with an optional ports list, your current installed set
2388ec23ca1SMatthew Dillonof ports will be used if you do not specify a list.
2398ec23ca1SMatthew Dillon.Bl -tag -width indent
2408ec23ca1SMatthew Dillon.It Cm init
2418ec23ca1SMatthew DillonCreates and initializes the
2428ec23ca1SMatthew Dillon.Pa /etc/dsynth
2438ec23ca1SMatthew Dillondirectory if it does not exst.
2448ec23ca1SMatthew DillonThis directive will complain and exit if either
2458ec23ca1SMatthew Dillon.Pa /etc/dsynth
2468ec23ca1SMatthew Dillonor
2478ec23ca1SMatthew Dillon.Pa /usr/local/etc/dsynth
248650b8785SSascha Wildnerexists.
249650b8785SSascha WildnerIt will not create
2508ec23ca1SMatthew Dillon.Pa /etc/dsynth
2518ec23ca1SMatthew Dillonin this situation.
252*c6142119SAntonio Huete Jimenez.It Cm status
253*c6142119SAntonio Huete JimenezThis will do a dry-run of
254*c6142119SAntonio Huete Jimenez.Cm upgrade-system
255*c6142119SAntonio Huete Jimenezbut not actually build anything.
256*c6142119SAntonio Huete Jimenez.It Cm cleanup
257*c6142119SAntonio Huete JimenezThis will clean up any left-over mounts from prior builds.
258*c6142119SAntonio Huete Jimenez.Nm
259*c6142119SAntonio Huete Jimenezattempts to clean up all processes and mounts when you interrupt
260*c6142119SAntonio Huete Jimeneza build but doesn't always succeed.
2618ec23ca1SMatthew Dillon.It Cm configure
2628ec23ca1SMatthew DillonNOT CURRENTLY IMPLEMENTED
2638ec23ca1SMatthew Dillon.It Cm upgrade-system
264650b8785SSascha WildnerNOT CURRENTLY IMPLEMENTED.
265650b8785SSascha WildnerIncrementally build and upgrade your locally
2668ec23ca1SMatthew Dilloninstalled packages, then upgrade your local system with them.
2678ec23ca1SMatthew Dillon.It Cm prepare-system
2688ec23ca1SMatthew DillonIncrementally build and upgrade your locally installed packages, but
2698ec23ca1SMatthew Dillondo not upgrade your system with them.
2708ec23ca1SMatthew Dillon.It Cm rebuild-repository
2718ec23ca1SMatthew DillonBuild or rebuild the database files for the configured repository.
2728ec23ca1SMatthew Dillon.It Cm purge-distfiles
2738ec23ca1SMatthew DillonDelete any obsolete source distribution files.
274b6bd007bSMatthew Dillon.It Cm reset-db
275*c6142119SAntonio Huete JimenezDelete ports_crc.db from the build directory.
276*c6142119SAntonio Huete JimenezThis database is used to detect changes made to the dports tree.
277*c6142119SAntonio Huete JimenezIt will be regenerated on your next build without forcing any packages to be rebuilt.
2788ec23ca1SMatthew Dillon.It Cm status-everything
2798ec23ca1SMatthew DillonThis will do a dry-run of a full bulk build of everything,
2808ec23ca1SMatthew Dillonbut not actually build anything.
2818ec23ca1SMatthew Dillon.It Cm everything
2828ec23ca1SMatthew DillonThis will build the entire dports tree and then rebuild the repository
2838ec23ca1SMatthew Dillonwhen it finishes.
2848ec23ca1SMatthew Dillon.It Cm version
285650b8785SSascha WildnerThis is for synth compatibility.
286650b8785SSascha WildnerThe version of
2878ec23ca1SMatthew Dillon.Nm
2888ec23ca1SMatthew Dillonwill be printed and the program will exit.
2898ec23ca1SMatthew Dillon.It Cm help
2908ec23ca1SMatthew DillonOutput a synopsis of options and directives and exit.
2918ec23ca1SMatthew Dillon.It Cm status Op Ar ports
2928ec23ca1SMatthew DillonDo a dry-run with 'build' of the given list.
2938ec23ca1SMatthew Dillon.It Cm build Op Ar ports
294650b8785SSascha WildnerIncrementally build dports based on the given list.
295650b8785SSascha WildnerWhen done, ask whether the repository should be rebuilt or not.
2968ec23ca1SMatthew Dillon.It Cm just-build Op Ar ports
2978ec23ca1SMatthew DillonIncrementally build dports based on the given list, then
298650b8785SSascha Wildnerexits.
299650b8785SSascha WildnerNo post-build steps will be taken.
3008ec23ca1SMatthew Dillon.It Cm install Op Ar ports
3018ec23ca1SMatthew DillonNOT CURRENTLY IMPLEMENTED.  'build' based on the supplied
3028ec23ca1SMatthew Dillonlist (or using currently installed packages), then rebuild
30317be4d43SSascha Wildnerthe repository and upgrade the system without asking any further
3048ec23ca1SMatthew Dillonquestions.
3058ec23ca1SMatthew Dillon.It Cm force Op Ar ports
306650b8785SSascha WildnerThis is the same as 'build' but will delete existing packages first.
307650b8785SSascha WildnerDependencies are not deleted unless they are out of date.
3088ec23ca1SMatthew Dillon.It Cm test Op Ar ports
3098ec23ca1SMatthew DillonThis is the same as 'build' but sets the environment variable
310650b8785SSascha Wildner.Ev DEVELOPER
311650b8785SSascha Wildnerto
312650b8785SSascha Wildner.Sq yes
313650b8785SSascha Wildnerand pre-deletes specified packages.
314650b8785SSascha WildnerDependencies are not deleted unless they are out of date.
315bc7e28d2SMatthew Dillon.It Cm debug Op Ar ports
316bc7e28d2SMatthew DillonThis is the same as 'build' but leaves the chroot mounts intact
317bc7e28d2SMatthew Dillonupon completion.
318*c6142119SAntonio Huete Jimenez.It Cm monitor Op Ar datfile
319*c6142119SAntonio Huete JimenezMonitors a running dsynth instance.
3208ec23ca1SMatthew Dillon.El
3218ec23ca1SMatthew Dillon.Sh FILES
3228ec23ca1SMatthew Dillon.Bl -tag -width ".It Pa <fs>/abc/defghi/<name>" -compact
3232c9f4f91SMatthew Dillon.It Pa /etc/dsynth/dsynth.ini
324650b8785SSascha WildnerThe primary configuration file.
325650b8785SSascha WildnerIf not found,
3268ec23ca1SMatthew Dillon.Nm
3278ec23ca1SMatthew Dillonwill also look in
3282c9f4f91SMatthew Dillon.Pa /usr/local/etc/dsynth/dsynth.ini .
3298ec23ca1SMatthew Dillon.Pp
3308ec23ca1SMatthew Dillon.It Pa /etc/dsynth/LiveSystem-make.conf
3318ec23ca1SMatthew DillonTypically contains the environment variables that will be set in
3328ec23ca1SMatthew Dillonthe workers.
3338ec23ca1SMatthew Dillon.Nm
3348ec23ca1SMatthew Dillonfirewalls the environment it is run under from the environment it
3358ec23ca1SMatthew Dillonprovides to the workers.
3368ec23ca1SMatthew Dillon.Pp
3378ec23ca1SMatthew Dillon.It Pa /build/synth/build
3388ec23ca1SMatthew DillonRecommended setting for
339650b8785SSascha Wildner.Va Directory_buildbase ,
3408ec23ca1SMatthew Dilloncontains the build infrastructure... typically a template, mirrored
3418ec23ca1SMatthew Dillonsystem directories, and mount points for all the worker slots.
3428ec23ca1SMatthew DillonThe template will be [re]generated if 'pkg' needs to be built or
3438ec23ca1SMatthew Dillonif the
3448ec23ca1SMatthew Dillon.Pa .template.good
3458ec23ca1SMatthew Dillonfile in this directory is deleted.
3468ec23ca1SMatthew Dillon.Pp
3478ec23ca1SMatthew Dillon.It Pa /build/synth/distfiles
3488ec23ca1SMatthew DillonRecommended setting for
349650b8785SSascha Wildner.Va Directory_distfiles ,
3508ec23ca1SMatthew Dillonports to a directory into which
3518ec23ca1SMatthew Dillon.Nm
3528ec23ca1SMatthew Dillonwill download any source distribution files required for building.
3538ec23ca1SMatthew Dillon.Pp
3548ec23ca1SMatthew Dillon.It Pa /build/synth/dports
3558ec23ca1SMatthew DillonRecommended setting for
356650b8785SSascha Wildner.Va Directory_portsdir ,
3578ec23ca1SMatthew Dillonpoints to a checked out dports repo.
3588ec23ca1SMatthew DillonNote that
3598ec23ca1SMatthew Dillon.Nm
3608ec23ca1SMatthew Dillondoes not automatically 'git pull' or otherwise synchronize the dports repo,
3618ec23ca1SMatthew Dillonyou must do that yourself prior to starting a build.
3628ec23ca1SMatthew Dillon.Pp
3638ec23ca1SMatthew Dillon.It Pa /build/synth/live_packages
3648ec23ca1SMatthew DillonRecommended setting for
365650b8785SSascha Wildner.Va Directory_packages ,
3668ec23ca1SMatthew Dillonpoints to a directory which will contain the completed application
3678ec23ca1SMatthew Dillonpackages.
3688ec23ca1SMatthew Dillon.Pp
3698ec23ca1SMatthew Dillon.It Pa /build/synth/logs
3708ec23ca1SMatthew DillonRecommended setting for
371650b8785SSascha Wildner.Va Directory_logs ,
3728ec23ca1SMatthew Dillonall log files will be placed in this directory.
3738ec23ca1SMatthew DillonSpecial management logfiles begin with the numeral '0' for easily
3748ec23ca1SMatthew Dillonlocation.
3758ec23ca1SMatthew DillonThe logfiles for ports while and after building are stored in the
3768ec23ca1SMatthew Dillonform subdir____portname.log, with three underscores.
3778ec23ca1SMatthew Dillon.Pp
3788ec23ca1SMatthew Dillon.It Pa /build/synth/options
3798ec23ca1SMatthew DillonRecommended setting for
380650b8785SSascha Wildner.Va Directory_options ,
3818ec23ca1SMatthew Dillonwhere options overrides for specific ports may be located.
3828ec23ca1SMatthew Dillon.Pp
3838ec23ca1SMatthew Dillon.It Pa /
3848ec23ca1SMatthew DillonRecommended setting for
385650b8785SSascha Wildner.Va Directory_system ,
3868ec23ca1SMatthew Dillonwhich
3878ec23ca1SMatthew Dillon.Nm
3888ec23ca1SMatthew Dillonuses as a basis for creating the jails or chroots in each worker slot
3898ec23ca1SMatthew Dillonduring building.
3908ec23ca1SMatthew DillonNo part of the system root is ever NULL-mounted read-write... it is always
3918ec23ca1SMatthew DillonNULL-mounted read-only.
3928ec23ca1SMatthew DillonSome elements from the system base will be mirrored in the build-base
3938ec23ca1SMatthew Dillonas an optimization.
3948ec23ca1SMatthew Dillon.Pp
3958ec23ca1SMatthew DillonNote that the packages directory and the distfiles directory is mounted
396650b8785SSascha Wildnerread-write in jails or chroots.
397650b8785SSascha WildnerAll other r/w filesystems in the workers are
3988ec23ca1SMatthew Dillon.Xr tmpfs 5
3998ec23ca1SMatthew Dillonbased filesystems and will be created and torn-down for each port.
400483dbac9SMatthew Dillon.Pp
401483dbac9SMatthew Dillon.It Pa .txz
402483dbac9SMatthew Dillon.It Pa .tgz
403483dbac9SMatthew Dillon.It Pa .tar
404483dbac9SMatthew Dillon.It Pa .tbz
405483dbac9SMatthew DillonThe recommended setting for
406483dbac9SMatthew Dillon.Va Package_suffix
407483dbac9SMatthew Dillonis either
408483dbac9SMatthew Dillon.Pa .txz
409483dbac9SMatthew Dillonor
410483dbac9SMatthew Dillon.Pa .tgz .
411483dbac9SMatthew DillonUse
412483dbac9SMatthew Dillon.Pa .txz
413483dbac9SMatthew Dillonfor better compression at the cost of somewhat slower bulk builds due
414483dbac9SMatthew Dillonto the time overhead for compression and decompression, or
415483dbac9SMatthew Dillonuse
416483dbac9SMatthew Dillon.Pa .tgz
417483dbac9SMatthew Dillonfor modest compression and very fast compression and decompression.
418483dbac9SMatthew DillonDue to the way the builder works, package dependencies are fresly
419483dbac9SMatthew Dilloninstalled into the chroot slot for each package being built, so
420483dbac9SMatthew Dillondecompression time matters.
4218ec23ca1SMatthew Dillon.El
4228ec23ca1SMatthew Dillon.Sh EXIT STATUS
4238ec23ca1SMatthew Dillon.Ex -std
4248ec23ca1SMatthew Dillon.Sh SEE ALSO
42517be4d43SSascha Wildner.Xr synth 1 ,
4268ec23ca1SMatthew Dillon.Xr dports 7
4278ec23ca1SMatthew Dillon.Sh HISTORY
4288ec23ca1SMatthew DillonThe
4298ec23ca1SMatthew Dillon.Nm
4308ec23ca1SMatthew Dillonutility first appeared in
4318ec23ca1SMatthew Dillon.Dx 5.7 .
4328ec23ca1SMatthew Dillon.Sh AUTHORS
4338ec23ca1SMatthew Dillon.An Matthew Dillon Aq Mt dillon@backplane.com
434