Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
bpkg-pkg-build(1)	    General Commands Manual	     bpkg-pkg-build(1)

NAME
       bpkg-pkg-build -	build package

SYNOPSIS
       bpkg pkg-build|build [options] [--upgrade|-u | --patch|-p]
			    [cfg-var...	--] pkg-spec...
       bpkg pkg-build|build [options]  --upgrade|-u | --patch|-p
			    [cfg-var...	--]

       pkg-spec	= [flags](([scheme:]pkg[ver-spec]),...[@rep-loc] |
			  [@]rep-loc				|
			  file					|
			  dir/)
       flags	  = ?
       scheme	  = sys
       ver-spec	  = /version | version-constraint

DESCRIPTION
       The  pkg-build  command builds one or more packages including all their
       dependencies. Besides building new packages, this command is also  used
       to  upgrade  or downgrade packages that are already present in the con-
       figuration.  And	unless the --keep-unused|-K option is specified,  pkg-
       build will also drop dependency packages	that would otherwise no	longer
       be used.

       The  first  form	(one or	more packages are specified) builds new	or up-
       grades (by default or if	--upgrade is specified)	or patches (if --patch
       is specified) the specified packages. The second	form (no arguments but
       either --upgrade	or --patch is specified) upgrades or patches  all  the
       held packages in	the configuration (see below for details on held pack-
       age).

       In  both	 forms	specifying the --immediate|-i or --recursive|-r	option
       causes pkg-build	to also	upgrade	or patch the immediate or  all	depen-
       dencies	of  the	specified (first form) or held (second form) packages,
       respectively. Note also that in the first form these options  can  only
       be specified with an explicit --upgrade or --patch.

       Each package can	be specified as	just the name (pkg) with optional ver-
       sion  specification  (ver-spec),	 in which case the source code for the
       package will be automatically fetched from one of the configured	repos-
       itories.	See the	bpkg-rep-add(1)	 and  bpkg-rep-fetch(1)	 commands  for
       more  information  on  package  repositories. The version specification
       (ver-spec) can be either	the exact version in the /version form or  the
       version	constraint  as described in Package Version Constraint (#pack-
       age-version-constraint).	If ver-spec is not specified, then the	latest
       available version will be built.	To downgrade, the desired version must
       be specified explicitly.	For example:

       bpkg build foo libfoo/1.2.3 "bar	< 2.0.0"

       Alternatively,  the package repository location (rep-loc) can be	speci-
       fied as part of the build command. In this case,	 if  ver-spec  is  not
       specified,  then	the latest available from this repository version will
       be built. For example:

       bpkg build foo,libfoo/1.2.3@https://git.example.org/foo.git#master

       If only the location is specified, then the latest versions of all  the
       packages	 available  directly  from this	repository will	be built (note
       that this does not include packages available from complement reposito-
       ries). The @ delimiter can be omitted if	the location is	a URL. For ex-
       ample:

       bpkg build https://git.example.org/foo.git#master
       bpkg build @/path/to/repository/

       A package name (pkg) can	be prefixed with a  package  scheme  (scheme).
       Currently  the  only recognized scheme is sys which instructs pkg-build
       to configure the	package	as  available  from  the  system  rather  than
       building	it from	source.

       The  system  package version (ver-spec) may not be a version constraint
       but may be the special '/*' value, which	 indicates  that  the  version
       should  be considered unknown but satisfying any	version	constraint. If
       unspecified, then pkg-build will	attempt	to query  the  system  package
       manager	for the	installed version unless the system package manager is
       unsupported or this functionality is disabled with  --sys-no-query,  in
       which  case the '/*' ver-spec is	assumed. If the	system package manager
       is supported, then the automatic	installation of	an  available  package
       can  be	requested with the --sys-install option. Note that if the ver-
       sion is not explicitly specified, then at least a stub package must  be
       available  from one of the repositories unless the --sys-no-stub	option
       is specified.

       Finally,	a package can be specified as either the path to  the  package
       archive (file) or to the	package	directory (dir/; note that it must end
       with a directory	separator). See	the bpkg-pkg-fetch(1) and bpkg-pkg-un-
       pack(1)	commands  for  more information	on the semantics of specifying
       the package as an archive or a directory.

       Additional configuration	variables (cfg-var), if	any, should be	speci-
       fied  before  packages (pkg-spec) and should be separated with --. Such
       variables are effective only when configuring  and  only	 for  packages
       that were explicitly specified on the command line (unless global over-
       rides).	They  can also be specified to only apply to specific packages
       using the argument grouping mechanism discussed	below.	See  bpkg-pkg-
       configure(1) for	more information on configuration variables.

       By  default  a package that is specified	explicitly on the command line
       is built	to hold: it will not be	considered for automatic removal if it
       no longer has any dependents. Only versions from	repositories that were
       added to	the configuration (bpkg-rep-add(1)) are	considered  as	avail-
       able for	build to hold.

       Alternatively,	a  package  can	 be  built  (or,  more	commonly,  up-
       graded/downgraded) as a dependency by specifying	the ? flag (flags)  or
       the  --dependency option. Such a	package	will only be added to the con-
       figuration if it	actually has any dependents and	once no	 longer	 used,
       it  will	 be  automatically  dropped.  Only  versions from prerequisite
       repositories of dependent packages  are	considered  as	available  for
       build as	a dependency.

       Packages	 (both	built  to hold and as dependencies) that are specified
       with an explicit	package	version	(ver-spec) or as an archive or	direc-
       tory, will have their versions held, that is, they will not be automat-
       ically upgraded.

       As an illustration, let's assume	in the following example that the sta-
       ble  repository contains	packages foo 1.0.0 as well as libfoo 1.0.0 and
       1.1.0 while testing - libfoo 2.0.0, that	 testing  is  complemented  by
       stable, and that	foo depends on libfoo >= 1.0.0:

       bpkg fetch https://example.org/1/testing

       bpkg build foo		 # build foo	1.0.0 to hold
				 # build libfoo	1.1.0 as dependency

       bpkg build ?libfoo/1.0.0	 # downgrade libfoo 1.0.0 as dependency,
				 #	     also hold version 1.0.0

       bpkg build ?libfoo/2.0.0	 # error: 2.0.0	unavailable in dependent's
				 #	  (foo)	repository (stable)

       bpkg build libfoo/2.0.0	 # upgrade libfoo 2.0.0	to hold,
				 #	   also	hold version 2.0.0

       A  package  can be built	in one of the linked configurations instead of
       the current (or host/build system module, for build-time	 dependencies)
       configuration  by  specifying  one of the --config-* options (see bpkg-
       cfg-create(1) for background on linked configurations). For example:

       bpkg build foo {	--config-name=alt-host }+ ?bison

PKG-BUILD PACKAGE OPTIONS
       The following options (as well as additional  configuration  variables)
       can  be	grouped	 to  apply to a	specific pkg-spec as well as specified
       globally, in which case they apply to all the specified	packages  (see
       bpkg-argument-grouping(1) for details).

       --upgrade|-u
	      Upgrade  packages	to the latest available	version	that satisfies
	      all the constraints.

       --patch|-p
	      Upgrade packages to the latest available patch version that sat-
	      isfies all the constraints.

       --deorphan
	      Replace orphaned packages	with the best matching available pack-
	      age versions which satisfy all the constraints.

	      It may happen that a built package no longer has the correspond-
	      ing package available in the repository it came from (for	 exam-
	      ple,  as	a  result of bpkg-rep-fetch(1) or bpkg-rep-remove(1)).
	      Such a package is	called an orphan. Without the  --deorphan  op-
	      tion,  upgrading,	 downgrading, or patching an orphan will leave
	      it unchanged if a	more suitable version of the  package  is  not
	      available. If the	--deorphan option is specified,	then an	orphan
	      will  be replaced	with a non-orphan. In this case, if --upgrade,
	      --patch, or the package version is specified, then the new  ver-
	      sion  is selected	accordingly. Otherwise,	the closest version to
	      the orphaned version is selected using the following  preference
	      order: (1) same version, revision, and iteration,	(2) latest it-
	      eration of same version and revision, (3)	later revision of same
	      version,	(4)  later  patch  of same version, (5)	later minor of
	      same version, (6)	latest available  version,  including  earlier
	      (see Package Version (#package-version) for details).

       --immediate|-i
	      Also upgrade, patch, or deorphan immediate dependencies.

       --recursive|-r
	      Also upgrade, patch, or deorphan all dependencies, recursively.

       --upgrade-immediate
	      Upgrade immediate	dependencies.

       --patch-immediate
	      Patch immediate dependencies.

       --deorphan-immediate
	      Deorphan immediate dependencies.

       --upgrade-recursive
	      Upgrade all dependencies,	recursively.

       --patch-recursive
	      Patch all	dependencies, recursively.

       --deorphan-recursive
	      Deorphan all dependencies, recursively.

       --dependency
	      Build,  upgrade,	or  downgrade a	package	as a dependency	rather
	      than to hold.

       --keep-out
	      Keep output directories of external  packages  between  upgrades
	      and downgrades.  Refer to	bpkg-pkg-disfigure(1) for details.

       --disfigure
	      Disfigure	 packages  between upgrades and	downgrades effectively
	      causing a	from-scratch reconfiguration.

       --checkout-root dir
	      Check out	packages that come from	version	control-based  reposi-
	      tories into the specified	directory rather than into the config-
	      uration  directory.  Refer  to the --output-root option in bpkg-
	      pkg-checkout(1) for details.

       --checkout-purge
	      Remove the checked out package  (source)	directories  when  the
	      packages are purged. Refer to the	--output-purge option in bpkg-
	      pkg-checkout(1) for details.

       --config-name name
	      Name of the linked configuration to build	this package(s)	in. By
	      default,	the package is built in	the current configuration. Re-
	      peat this	option to specify multiple configurations.

       --config-id num
	      Numeric id of the	linked configuration to	build this  package(s)
	      in.  By  default,	the package is built in	the current configura-
	      tion. Repeat this	option to specify multiple configurations.

       --config-uuid uuid
	      UUID of the linked configuration to build	this package(s)	in. By
	      default, the package is built in the current configuration.  Re-
	      peat this	this option to specify multiple	configurations.

PKG-BUILD GLOBAL OPTIONS
       --yes|-y
	      Assume the answer	to all prompts is yes. Note that this excludes
	      the system package manager prompts; see --sys-yes	for details.

       --for|-f	operation
	      Instead  of  the	default	update build system operation, perform
	      the update-for-operation variant where operation is normally in-
	      stall or test.

       --keep-unused|-K
	      Don't drop dependency packages that were automatically built but
	      will no longer be	used.

       --update-dependent|-U
	      Update without confirmation dependent packages that  are	recon-
	      figured due to their dependencies	being upgraded or downgraded.

       --leave-dependent|-L
	      Don't  offer  to update dependent	packages that are reconfigured
	      due to their dependencies	being upgraded or downgraded.

       --configure-only|-c
	      Configure	all the	packages but don't update.

       --print-only
	      Print to stdout what would be done without actually  doing  any-
	      thing.

       --plan header
	      Print  the  plan	(even if --yes is specified) and start it with
	      the header line (unless it is empty).

       --no-fetch
	      Don't fetch repositories specified as part of the	build command.

       --fetch-shallow
	      Don't  re-fetch  complement  and	prerequisite  repositories  of
	      repositories  specified  as  part	of the build command. Refer to
	      the --shallow option in bpkg-rep-fetch(1)	for details.

       --mask-repository rep
	      For the duration of the command execution	pretend	the  specified
	      repository  was  removed as if by	performing the rep-remove com-
	      mand. The	repository can be specified  either  as	 a  repository
	      name or as a repository location (URL or a directory path). Note
	      that  the	 repository's complement and prerequisite repositories
	      are also considered masked, recursively, unless they are comple-
	      ments and/or prerequisites of other unmasked  repositories.  Re-
	      peat this	option to mask multiple	repositories.

       --mask-repository-uuid v
	      For  the duration	of the command execution pretend the specified
	      repository was removed from the specified	configuration. Similar
	      to --mask-repository but only masks the repository in  a	single
	      configuration. The option	value is a key-value pair in the form:

	      config-uuid=rep

	      Repeat this option to mask multiple repositories.

       --no-refinement
	      Don't  try  to  refine the configuration by offering to drop any
	      unused dependencies that were potentially	 left  behind  on  the
	      previous	pkg-build or pkg-drop command execution	if the command
	      is otherwise a noop (performs no new package  builds,  upgrades,
	      etc).

       --no-move
	      Don't  move  dependency packages between configurations. In this
	      mode the --config-* options  specify  packages'  current	rather
	      than new locations.

       --noop-exit code
	      Exit with	the specified error code if the	command	execution is a
	      noop (performs no	new package builds, upgrades, etc).

       --rebuild-checksum sum
	      Hash the names, versions,	and configurations of all the packages
	      that would be built. If the resulting checksum matches the spec-
	      ified,  then  exit without building anything (potentially	with a
	      special error code specified with	the --noop-exit	option).  Oth-
	      erwise, proceed to build as normal. In both cases, print the re-
	      sulting checksum to stdout.

       --no-private-config code
	      If  no  configuration  of	 a  suitable type is linked to build a
	      build-time dependency, instead of	automatically creating a  pri-
	      vate  configuration  of this type, exit with the specified error
	      code printing to stdout the dependency chain starting  from  the
	      build-time dependency (together with its constraint, if present)
	      and  ending  with	 the  top-level	dependent (together with their
	      configuration directories), one entry per	line. For example:

	      yacc ^1.0.0
	      libbar/1.0.0 /path/to/libbar/cfg/
	      libfoo/1.0.0 /path/to/libfoo/cfg/

	      See bpkg-cfg-create(1) for details on linked configurations.

       --sys-no-query
	      Do not query the system package manager for the  installed  ver-
	      sions of packages	specified with the sys scheme.

       --sys-install
	      Instruct	the  system  package manager to	install	available ver-
	      sions of packages	specified with the sys scheme that are not al-
	      ready installed. See also	 the  --sys-no-fetch,  --sys-yes,  and
	      --sys-sudo options.

       --sys-no-fetch
	      Do not fetch the system package manager metadata before querying
	      for  available  versions	of  packages  specified	 with  the sys
	      scheme. This option only makes  sense  together  with  --sys-in-
	      stall.

       --sys-no-stub
	      Do no require a stub for packages	specified with the sys scheme.
	      Note that	this option has	effect only if the system package man-
	      ager interactions	are supported and not disabled.

       --sys-yes
	      Assume  the answer to the	system package manager prompts is yes.
	      Note that	system package manager	interactions  may  break  your
	      system  and  you	should normally	only use this option on	throw-
	      away setups (test	virtual	machines, etc).

       --sys-sudo prog
	      The sudo program to use for system package manager  interactions
	      that  normally  require administrative privileges	(fetch package
	      metadata,	install	packages, etc).	If unspecified,	sudo  is  used
	      by default. Pass empty or	the special false value	to disable the
	      use of the sudo program.	Note that the sudo program is normally
	      only  needed  if the system package installation is enabled with
	      the --sys-install	option.

       --sys-distribution name
	      Alternative  system/distribution	package	 manager  to  interact
	      with.  The  valid	name values are	debian (Debian and alike, such
	      as Ubuntu, etc) and fedora (Fedora and alike, such as RHEL, Cen-
	      tOS, etc). Note that some	package	managers may only be supported
	      when running on certain host operating systems.

       --sys-architecture name
	      Alternative architecture to use when interacting with the	system
	      package manager. The valid name values  are  system/distribution
	      package  manager-specific. If unspecified, the host architecture
	      is used.

       --directory|-d dir
	      Assume current configuration is in dir rather than in  the  cur-
	      rent  working  directory.	Repeat this option to specify multiple
	      current configurations. If multiple  configurations  are	speci-
	      fied,  they  need	 not  belong  to the same linked configuration
	      cluster.

COMMON OPTIONS
       The common options are summarized below with a more  detailed  descrip-
       tion available in bpkg-common-options(1).

       -v     Print essential underlying commands being	executed.

       -V     Print all	underlying commands being executed.

       --quiet|-q
	      Run quietly, only	printing error messages.

       --verbose level
	      Set the diagnostics verbosity to level between 0 and 6.

       --stdout-format format
	      Representation format to use for printing	to stdout.

       --jobs|-j num
	      Number of	jobs to	perform	in parallel.

       --no-result
	      Don't print informational	messages about the outcome of perform-
	      ing a command or some of its parts.

       --structured-result fmt
	      Write the	result of performing a command in a structured form.

       --progress
	      Display progress indicators for long-lasting operations, such as
	      network transfers, building, etc.

       --no-progress
	      Suppress	progress  indicators for long-lasting operations, such
	      as network transfers, building, etc.

       --diag-color
	      Use color	in diagnostics.

       --no-diag-color
	      Don't use	color in diagnostics.

       --build path
	      The build	program	to be used to build packages.

       --build-option opt
	      Additional option	to be passed to	the build program.

       --fetch path
	      The fetch	program	to be used to download resources.

       --fetch-option opt
	      Additional option	to be passed to	the fetch program.

       --fetch-timeout sec
	      The fetch	and fetch-like (for example, git) program timeout.

       --pkg-proxy url
	      HTTP proxy server	to use when  fetching  package	manifests  and
	      archives from remote pkg repositories.

       --git path
	      The git program to be used to fetch git repositories.

       --git-option opt
	      Additional common	option to be passed to the git program.

       --sha256	path
	      The sha256 program to be used to calculate SHA256	sums.

       --sha256-option opt
	      Additional option	to be passed to	the sha256 program.

       --tar path
	      The tar program to be used to extract package archives.

       --tar-option opt
	      Additional option	to be passed to	the tar	program.

       --openssl path
	      The openssl program to be	used for crypto	operations.

       --openssl-option	opt
	      Additional option	to be passed to	the openssl program.

       --auth type
	      Types of repositories to authenticate.

       --trust fingerprint
	      Trust repository certificate with	a SHA256 fingerprint.

       --trust-yes
	      Assume the answer	to all authentication prompts is yes.

       --trust-no
	      Assume the answer	to all authentication prompts is no.

       --git-capabilities up=pc
	      Protocol capabilities (pc) for a git repository URL prefix (up).

       --pager path
	      The pager	program	to be used to show long	text.

       --pager-option opt
	      Additional option	to be passed to	the pager program.

       --options-file file
	      Read additional options from file.

       --default-options dir
	      The directory to load additional default options files from.

       --no-default-options
	      Don't load default options files.

       --keep-tmp
	      Don't  remove  the  bpkg's temporary directory at	the end	of the
	      command execution	and print its path at the verbosity level 2 or
	      higher.

DEFAULT	OPTIONS	FILES
       See bpkg-default-options-files(1) for an	overview of  the  default  op-
       tions  files.  For  the pkg-build command the search start directory is
       the configuration directory. The	following options files	 are  searched
       for in each directory and, if found, loaded in the order	listed:

       bpkg.options
       bpkg-pkg-build.options

       The  following pkg-build	command	options	cannot be specified in the de-
       fault options files:

       --directory|-d

BUGS
       Send bug	reports	to the users@build2.org	mailing	list.

COPYRIGHT
       Copyright (c) 2014-2024 the build2 authors.

       Permission is granted to	copy, distribute and/or	modify	this  document
       under the terms of the MIT License.

bpkg 0.17.0			   June	2024		     bpkg-pkg-build(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bpkg-pkg-build&sektion=1&manpath=FreeBSD+Ports+15.0>

home | help