git: Add integrated dports build feature to build-all and install-all targets

Matthew Dillon dillon at
Tue Jan 16 14:23:14 PST 2024

commit a361ab312536a661d74caf5630c7ae20bcd8e3e4
Author: Matthew Dillon <dillon at>
Date:   Mon Jan 1 20:57:00 2024 -0800

    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
    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
    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
    * 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.

Summary of changes:
 Makefile                             |  13 +++-
 Makefile.inc1                        | 122 +++++++++++++++++++++++++++++++++--
 dports.base/README.dports.base       |  29 +++++++++
 dports.base/dragonfly/base/Makefile  |  26 ++++++++
 dports.base/dragonfly/base/pkg-descr |   1 +
 dports.base/dsynth.ini               |  27 ++++++++
 dports.base/pkg.conf                 |  12 ++++
 etc/mtree/BSD.usr.dist               |   2 +
 usr.bin/dsynth/Makefile              |   1 +
 usr.bin/dsynth/build.c               |   1 +
 usr.bin/dsynth/config.c              |   7 +-
 usr.bin/dsynth/dsynth.c              |   9 ++-
 usr.bin/dsynth/subs.c                |   2 +
 13 files changed, 241 insertions(+), 11 deletions(-)
 create mode 100644 dports.base/README.dports.base
 create mode 100644 dports.base/dragonfly/base/Makefile
 create mode 100644 dports.base/dragonfly/base/pkg-descr
 create mode 100644 dports.base/dsynth.ini
 create mode 100644 dports.base/pkg.conf

DragonFly BSD source repository

More information about the Commits mailing list