#
a361ab31 |
| 02-Jan-2024 |
Matthew Dillon <dillon@apollo.backplane.com> |
Add integrated dports build feature to build-all and install-all targets
When WITH_DPORTS=YES is used build-all and install-all, these targets will also build the base set of ports and all of their
Add integrated dports build feature to build-all and install-all targets
When WITH_DPORTS=YES is used build-all and install-all, these targets will also build the base set of ports and all of their dependencies using configuration data and the "dragonfly/base" dport found in "/usr/src/dports.base".
This feature is intended to be used by the nrelease build in an upcoming commit, and may also be used manually.
The /usr/dports tree must exist and contains the dports repo to use as the basis of the dports build. It will be null-mounted in the chroot and the "/usr/src/dports.base/dragonfly" directory will be null-mounted under it to provide the "dragonfly/base" meta-port. The DPORTSBASE make variable may be used to override the location of the main dports repo.
The build-all and install-all targets use a sophisticated chrooted environment to do a completely clean dports build with dsynth. It It will actually "make installworld" plus a clean "make distribution" inside the chroot environment to create the environment, and the host system's /etc/resolv.conf will be copied in.
build-all - Augmented when used WITH_DPORTS=YES install-all - Augmented when used WITH_DPORTS=YES buildportschroot - Build a fresh chroot environment for dsynth mountports - Do all null mounts and cp's needed for the env buildports - Run dsynth build dragonfly/base in the env installports - Install the built ports on the host system (see note) umountports - Remove the null mounts
WITH_DPORTS=YES - executes buildportschroot, mountports, buildports, and umountports when run from build-all.
executes mountports, installports, umountports when run from install-all.
DPORTSBASE=path - Defaults to /usr/dports, may be used to override the location where the main dports tree can be found.
NOTE: Installports may require interactivity as the base system might already have installed ports. Generally speaking it is best to not revert any ports you might already have installed, so feel free to tell it not to install anything.
* Added various make targets and augmented build-all and install-all
* /usr/local/sbin added and the stale /usr/pkg/bin removed from _HOSTPATH.
* Add /usr/src/dports.base infrastructure.
It contains the dsynth.ini and pkg.conf files that will be used for the local dsynth operations. Some paths are replaced with SED when copied to the chroot. The dsynth.ini is relative to the chroot.
It also contains the dragonfly/base dport which is the meta-port that dsynth will be told to build.
All other dports related files and directories are null-mounted from /usr/dports.
* Add /usr/distfiles.base to mtree/BSD.usr.dist. This directory is also created by the build if it does not exist since the host system might not have run a new installworld recently.
This directory will be used during build-all (buildports) to store the distfiles required to build dragonfly/base, so they only need to be fetched once.
* Add the "-C ConfigBase" option to dsynth to make running it from the chrooted environment easier. This overrides the /etc/dsynth directory and removes /etc/dsynth as a fallback.
* dsynth conditionalizes calling syscap_set() for backwards compatibility with older host systems that might not have been upgraded to include the feature yet.
show more ...
|
#
2b3f93ea |
| 13-Oct-2023 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Add per-process capability-based restrictions
* This new system allows userland to set capability restrictions which turns off numerous kernel features and root accesses. These restricti
kernel - Add per-process capability-based restrictions
* This new system allows userland to set capability restrictions which turns off numerous kernel features and root accesses. These restrictions are inherited by sub-processes recursively. Once set, restrictions cannot be removed.
Basic restrictions that mimic an unadorned jail can be enabled without creating a jail, but generally speaking real security also requires creating a chrooted filesystem topology, and a jail is still needed to really segregate processes from each other. If you do so, however, you can (for example) disable mount/umount and most global root-only features.
* Add new system calls and a manual page for syscap_get(2) and syscap_set(2)
* Add sys/caps.h
* Add the "setcaps" userland utility and manual page.
* Remove priv.9 and the priv_check infrastructure, replacing it with a newly designed caps infrastructure.
* The intention is to add path restriction lists and similar features to improve jailess security in the near future, and to optimize the priv_check code.
show more ...
|
#
2c5f241e |
| 30-Aug-2023 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Add -f option for purge-distfiles
* purge-distfiles normally refuses to run if the dports tree has Makefile or dependency errors, because that may cause it to remove distfiles that are
dsynth - Add -f option for purge-distfiles
* purge-distfiles normally refuses to run if the dports tree has Makefile or dependency errors, because that may cause it to remove distfiles that are actually needed.
* Add the -f option to force it to run anyway.
show more ...
|
#
3bd7e0a7 |
| 27-Feb-2023 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Add Numa_setsize option (defaults to disabled)
* Currently only for testing purposes and not recommended for general use. Default is 0 (disabled).
* If enabled, a value of 2 or 4 are th
dsynth - Add Numa_setsize option (defaults to disabled)
* Currently only for testing purposes and not recommended for general use. Default is 0 (disabled).
* If enabled, a value of 2 or 4 are the only really viable choices, otherwise the cpu mask will be so fragmented that even highly parallel bulks are going to wind up with cpu threads left idle.
The NUMA partitioning is hacked at the moment but will generally work with both AMD and Intel.
This works by round-robining N cpumask domains across available builder slots. Insofar as DragonFlyBSD goes, this will localize per-process / per-thread anonymous page allocations and kernel memory resources.
* However, DragonFlyBSD still spreads buffer cache pages (the file cache) across all domains, including for tmpfs, The reason is that such pages tend to be very long-lived and fully localizing them can exhaust the VM page queues for related cpus and domains, forcing contention inside vm_page_alloc() as multiple cpu threads contend for fewer VM page queue slots.
show more ...
|
Revision tags: v6.4.0, v6.4.0rc1, v6.5.0 |
|
#
c819d181 |
| 04-Nov-2022 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Implement a new 'add' directive
* This directive allows adding additional port(s) to the build list of a running dsynth. It can be useful when the user does not wish to interrupt the r
dsynth - Implement a new 'add' directive
* This directive allows adding additional port(s) to the build list of a running dsynth. It can be useful when the user does not wish to interrupt the running dsynth but wishes to add more ports and then leave the dsynth unintended. For example because it might be half way through building a huge package and interrupting it would be bad.
* dsynth will complete the current build as-per normal, including rebuilding the repository if it would normally do so (without asking interactively), and will then re-exec itself with the same options and directive for the additional ports that were added in the interim.
show more ...
|
#
9cb4fab1 |
| 04-Nov-2022 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Add Check_plist config file option
* dsynth -P turns on plist checking for builds. Note that this feature is already automatically turned on when the 'everything' and 'test' directives
dsynth - Add Check_plist config file option
* dsynth -P turns on plist checking for builds. Note that this feature is already automatically turned on when the 'everything' and 'test' directives are used.
* Add a Check_plist configuration file option that does the same thing so -P does not have to be specified if the developer wants to always do plist checking.
Requested-by: daftaupe
show more ...
|
#
1644605e |
| 06-Sep-2022 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - add 'list-system' directive
* Add a 'list-system' directive which generates a list of installed ports on the current machine that can then be used as a build list on another machine.
|
Revision tags: v6.2.2 |
|
#
d1fffdda |
| 20-Apr-2022 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Add 'fetch-only {list/everything}*' directive (2)
* Add to basic help output
|
#
325ef124 |
| 19-Apr-2022 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Add 'fetch-only {list/everything}*' directive
* Implements a fetch-only feature which tells dsynth to fetch all source distributions required to build the specified ports. If 'everythin
dsynth - Add 'fetch-only {list/everything}*' directive
* Implements a fetch-only feature which tells dsynth to fetch all source distributions required to build the specified ports. If 'everything' is specified, the source distribuitons needed to build the whole of dports will be fetched.
* Any source distributions already fetched are tested against their checksum and re-fetched if necessary.
show more ...
|
Revision tags: v6.2.1, v6.2.0, v6.3.0 |
|
#
bd73b895 |
| 17-Oct-2021 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Add PKG_COMPRESSION_FORMAT
* Generate a PKG_COMPRESSION_FORMAT env variable in addition to PKG_SUFX. This should fix the compression format used for package generation to be the one sp
dsynth - Add PKG_COMPRESSION_FORMAT
* Generate a PKG_COMPRESSION_FORMAT env variable in addition to PKG_SUFX. This should fix the compression format used for package generation to be the one specified in dsynth.ini.
* For now keep PKG_SUFX in case dsynth is run on an older system. It will cause dports to generate warnings in the logs, which can be ignored.
show more ...
|
Revision tags: v6.0.1 |
|
#
4ad2f7b8 |
| 17-May-2021 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Add -M scale option
* Add option to scale the number of workers allowed. The dynamic workers calculation operates normally but all results are scaled accordingly. Values between 0.01 a
dsynth - Add -M scale option
* Add option to scale the number of workers allowed. The dynamic workers calculation operates normally but all results are scaled accordingly. Values between 0.01 and 99.0 are acceptable.
This option does not modify the number of jobs for each worker.
* Typically used for load testing. Generally speaking, for actual use the scale should be specified between 0.8 and 1.2. The default scale factor is 1.0.
show more ...
|
Revision tags: v6.0.0, v6.0.0rc1, v6.1.0 |
|
#
a3dccc55 |
| 13-Dec-2020 |
Antonio Huete Jimenez <tuxillo@quantumachine.net> |
dsynth: Delete obsolete packages upon 'prepare-system'
- Remove old versions of packages when doing 'prepare-system' thus avoiding duplicate dependencies due to old versions still being pr
dsynth: Delete obsolete packages upon 'prepare-system'
- Remove old versions of packages when doing 'prepare-system' thus avoiding duplicate dependencies due to old versions still being present along with newer ones.
show more ...
|
#
29d8adfc |
| 17-Nov-2020 |
Antonio Huete Jimenez <tuxillo@quantumachine.net> |
dsynth: Enable 'install' and 'deinstall' phases on test.
|
Revision tags: v5.8.3, v5.8.2 |
|
#
b6bd007b |
| 31-May-2020 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Track contents of dports to detect changes
* Stat information and path names for the files making up a port (in the dports directly tree) is rolled-up into a CRC and tracked by dsynth.
dsynth - Track contents of dports to detect changes
* Stat information and path names for the files making up a port (in the dports directly tree) is rolled-up into a CRC and tracked by dsynth.
* By default, dsynth automatically rebuilds any dport that it detects has changed, even if a binary package file already exists, including any dependent ports.
* Add the -x and -xx options which may be used to override this behavior.
show more ...
|
Revision tags: v5.8.1 |
|
#
6d1478d9 |
| 01-May-2020 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Automatically run at nice 10 by default
* dsynth now automatically nices sub-processes to +10. This is a good middle-of-the-road nice to ensure that dsynth does not interfere with othe
dsynth - Automatically run at nice 10 by default
* dsynth now automatically nices sub-processes to +10. This is a good middle-of-the-road nice to ensure that dsynth does not interfere with other system tasks too much (beyond the massive amount of memory and cpu these builds burn normally).
We don't want to nice it too high or the scheduler won't have enough room for its normal dynamic priority management.
* This feature may be disabled via -N.
show more ...
|
Revision tags: v5.8.0, v5.9.0, v5.8.0rc1 |
|
#
b8ab713e |
| 11-Feb-2020 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Improve auto SlowStart a bit
* When MaxWorkers is >= 16, set the SlowStart at MaxWorkers / 4 instead of at 1 so we do not have to wait forever for it to inch up to a stable value.
|
Revision tags: v5.6.3 |
|
#
dc46751b |
| 03-Jan-2020 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Delete obsolete packages for 'dsynth everything'
* When runnig 'dsynth everything', delete any obsolete packages in the repo that don't show up in the dports scan.
Requested-by: zrj
|
#
927e4e3e |
| 27-Dec-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Abort on certain probe errors during pkglist scan
* If any directly-specified package or any direct dependency of any directly-specified package fails to probe, we now abort prior to en
dsynth - Abort on certain probe errors during pkglist scan
* If any directly-specified package or any direct dependency of any directly-specified package fails to probe, we now abort prior to entering ncurses mode.
* Note that 'dsynth everything' does not abort.
Requested-by: zrj
show more ...
|
#
b1224b54 |
| 25-Nov-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Adjust directive tests
* Adjust 'monitor' so it works as expected.
* 'version' does not need a working configuration to report.
|
#
9e1d0b12 |
| 24-Nov-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Add profile selection options
* Allow the profile to be specified via the DSYNTH_PROFILE env variable or via the -p profile option, overriding the default in /etc/dsynth.ini.
NOTE: I
dsynth - Add profile selection options
* Allow the profile to be specified via the DSYNTH_PROFILE env variable or via the -p profile option, overriding the default in /etc/dsynth.ini.
NOTE: If running more than one dsynth simultaneously on the same machine, the following directives in dsynth.ini must be different:
Directory_packages Directory_repository Directory_buildbase Directory_logs
NOTE: The Directory_distfiles directive can be shared across any number of running instances without running afoul of colliding fetches.
* Allows easy selection from multiple profiles specified in dsynth.ini.
* Create an active .lock file in the buildbase and complain if another dsynth is running.
show more ...
|
#
710838f7 |
| 22-Nov-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Fix 'debug' mode
* Fix the 'debug' directive to proper build pre-cursor packages without freezing and to only build the packages explicitly specified on the command line with freezing.
dsynth - Fix 'debug' mode
* Fix the 'debug' directive to proper build pre-cursor packages without freezing and to only build the packages explicitly specified on the command line with freezing.
* This reworks the global flag a bit. It wasn't entirely easy because the WORKERs are exec'd sub-processes.
show more ...
|
#
53c9b6f3 |
| 22-Nov-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Parse flavors on command line, parse text file
* Parse flavor specifications on the command line.
* Allow a text file containing the list of packages to be specified on the command line.
dsynth - Parse flavors on command line, parse text file
* Parse flavor specifications on the command line.
* Allow a text file containing the list of packages to be specified on the command line.
* Make 'dsynth help' work even if no configuration file.
Reported-by: ftigeot
show more ...
|
#
9bb2c592 |
| 10-Nov-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Improve 'debug' target, fix "x\n" in logs
* Improve the 'debug' target. Remove the target packages first, just like the 'test' target, and include a description for the 'debug' target
dsynth - Improve 'debug' target, fix "x\n" in logs
* Improve the 'debug' target. Remove the target packages first, just like the 'test' target, and include a description for the 'debug' target in dsynth help.
* Change the pty handshake to just a newline, it still shows up in the logs due to (probably) master-pty echo mode, but it isn't really noticeable verses the previous "x\n".
show more ...
|
#
2478c21a |
| 05-Nov-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Add ARCH make var to bulk scan
* Add the ARCH make variable and env variable to bulk scan operations.
Reported-by: tuxillo
|
#
32f62172 |
| 04-Nov-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
dsynth - Conditionalize use of check-plist stage
* Only run the check-plist stage for:
dsynth -P <anything> dsynth -D everything dsynth test ...
|