aboutsummaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS302
1 files changed, 302 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 4c57490..24f2673 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,305 @@
+Version 0.16.0
+
+ * System package manager query/installation support for Debian and Fedora
+ (and alike).
+
+ The pkg-build command will now query (unless --sys-no-query is specified)
+ the system package manager on Debian (and alike, such as Ubuntu) and
+ Fedora (and alike, such as RHEL) for versions of packages that are
+ specified as coming from the system (the sys: scheme). For example, if
+ running the following command on one of these distributions:
+
+ bpkg build hello ?sys:libsqlite3
+
+ Then pkg-build will query the system package manager for the installed
+ version of libsqlite3 and fail if none is present.
+
+ Additionally, if --sys-install is specified, pkg-build will attempt to
+ install such packages if not present but available from the system package
+ repository.
+
+ Other relevant options include --sys-yes, --sys-no-fetch, --sys-no-stub,
+ and --sys-sudo. See bpkg-pkg-build(1) for details.
+
+ See also the `*-{name, version, to-downstream-version}` package manifest
+ values in the manual for details on the bpkg to distribution package name
+ and version mapping.
+
+ * Binary distribution package generation support for Debian and Fedora (and
+ alike).
+
+ The new pkg-bindist command can be used to automatically generate binary
+ distribution packages from bpkg packages for Debian (and alike, such as
+ Ubuntu), Fedora (and alike, such as RHEL), and for other operating systems
+ as installation archives. For Debian and Fedora, dependencies can be
+ satisfied with system packages, bpkg packages, or bundled. See
+ bpkg-pkg-bindist(1) for details.
+
+ * Package build configuration support (*-build-config manifest values).
+
+ A package can now customize in its manifest the build configuration used
+ by automated build bots. This includes specifying configuration variable
+ values, forcing specific versions of dependencies, satisfying dependencies
+ with system packages, and enabling/disabling build bot steps. For example:
+
+ # Test with extras enabled.
+ #
+ extras-build-config: config.libfoo.extra=true
+
+ # Test with system-installed libsqlite3.
+ #
+ system-builds: sys
+ system-build-config: ?sys:libsqlite3
+
+ # Enable Debian binary distribution generation and upload.
+ #
+ bindist-debian-builds: bindist
+ bindist-debian-build-include: linux_debian*-**
+ bindist-debian-build-include: linux_ubuntu*-**
+ bindist-debian-build-exclude: **
+ bindist-debian-build-config:
+ \
+ +bpkg.bindist.debian:
+ +bbot.bindist.upload:
+ \
+
+ See the `*-build-config` package manifest values in the manual for
+ details.
+
+ * New package-description and package-description-{file,type} package
+ manifest values.
+
+ Compared to the description* values, these can be used to provide a bpkg
+ package-specific description, such as the recommended usage, configuration
+ variables, etc. See the `description`, `package-description` package
+ manifest values in the manual for details.
+
+ * New changes-type package manifest value and type auto-detection, similar
+ to description.
+
+ See the `changes` package manifest value in the manual for details.
+
+ * New --deorphan pkg-build option.
+
+ This option can be used to replace orphaned packages (packages that no
+ longer have the corresponding package available in the repository it came
+ from) with the closest available package versions that satisfy all the
+ constraints.
+
+ * New --mask-repository* pkg-build options.
+
+ These options allow pretending for the duration of the pkg-build command
+ execution that the specified repository was removed as if by performing
+ the rep-remove command.
+
+ * New --dependent-exit pkg-drop option.
+
+ This option causes the pkg-drop command to silently exit with the
+ specified error code if attempting to drop dependent packages.
+
+ * New --git-capabilities common option to override auto-detected git
+ capabilities.
+
+ We now also assume the git repository protocol is smart if the HTTP
+ response code is 401 (requires authentication).
+
+ * curl is now used instead of wget as the default fetch program.
+
+ We used to prefer wget 1.16 because it has --show-progress which results
+ in nicer progress. But experience shows that wget is quite unreliable plus
+ with bdep always using curl, it would be strange to use both curl and wget
+ (and expecting the user to setup proxy, authentication, etc., for both).
+
+Version 0.15.0
+
+ * New dependency declaration features:
+
+ - Dependency groups, for example:
+
+ depends: { libboost-any libboost-log libboost-uuid } ~1.77.0
+
+
+ - Conditional dependencies, for example:
+
+ depends: libposix-getopt ^1.0.0 ? ($cxx.target.class == 'windows')
+
+
+ - Dependency alternatives, for example:
+
+ depends: libmysqlclient >= 5.0.3 | libmariadb ^10.2.2
+
+
+ - Reflected configuration variables, for example:
+
+ depends: libposix-getopt ^1.0.0 \
+ ? ($cxx.target.class == 'windows') \
+ config.hello.external_regex=true
+
+ Or:
+
+ depends: libmysqlclient >= 5.0.3 config.hello.db='mysql' | \
+ libmariadb ^10.2.2 config.hello.db='mariadb'
+
+
+ - Dependency configuration, for example:
+
+ depends:
+ \
+ libmariadb ^10.2.2
+ {
+ require
+ {
+ config.libmariadb.cache = true
+
+ if ($cxx.target.class != 'windows')
+ config.libmariadb.tls = true
+ }
+ }
+ \
+
+ Or:
+
+ depends:
+ \
+ libmariadb ^10.2.2
+ {
+ prefer
+ {
+ config.libmariadb.cache = true
+
+ config.libmariadb.buffer = ($config.libmariadb.buffer < 4096 \
+ ? 4096 \
+ : $config.libmariadb.buffer)
+ }
+
+ accept ($config.libmariadb.buffer >= 4096)
+ }
+ \
+
+ See the `depends` package manifest value in the manual for details.
+
+ The implementation of these features led to bpkg becoming a special build
+ system driver with repository metadata now containing the minimal subset
+ of build system files for each package (called the package build system
+ skeleton). See "Package Build System Skeleton" in the manual for details.
+
+ * Support for JSON output in the bpkg-pkg-status command.
+
+ See the --stdout-format option in bpkg-pkg-status(1) for details.
+
+ * New --all, --all-pattern bpkg-pkg-drop options.
+
+ These options can be used to drop all the held packages (in case of
+ --all-pattern, limited to those that match a wildcard pattern).
+
+ * New --keep-tmp common option.
+
+ This option instructs bpkg not to remove its temporary directory at the
+ end of the command execution and print its path if the verbosity level is
+ 2 or higher. This option is primarily useful for troubleshooting.
+
+Version 0.14.0
+
+ * Support for configuration types, configuration linking, and build-time
+ dependencies.
+
+ Configurations can now be linked with each other to allow a package to be
+ built in one configuration while its dependencies -- in one or more linked
+ configurations. This can be used to create a "base" configuration with
+ common dependencies that are shared between multiple configurations.
+
+ Configurations now also have types with the three predefined types being
+ `target` (the default) `host` (used for build-time dependencies), and
+ `build2` (used for build system modules). This mechanism together with
+ configuration linking is used to provide separate configurations for
+ build-time dependencies, for example, tools that need to be executed or
+ build system modules that need to be loaded during the build.
+
+ If during dependency resolution a build-time dependency is encountered and
+ there is no build configuration of a suitable type linked with the target
+ configuration, then a private configuration of the needed type is
+ automatically created and linked.
+
+ New relevant commands: bpkg-cfg-{link,unlink,info}.
+
+ Command with relevant changes (new options, etc): bpkg-cfg-create,
+ bpkg-pkg-{build,status}.
+
+ See bpkg-cfg-create(1) for details on this functionality.
+
+ * Tests, examples, and benchmark packages can now also be run-time or build-
+ time.
+
+ See the `tests`, `examples`, and `benchmarks` package manifest values for
+ details.
+
+ * Two new pre-defined automated build bot requirements: `bootstrap` (package
+ is a build system module that requires bootstrapping) and `host` (package
+ is normally used as build-time dependency and should be built in a host
+ configuration).
+
+ See the `requires` package manifest value for details.
+
+ * Configuration of an external package is now preserved between upgrades and
+ downgrades.
+
+ The same behavior for normal packages is still a TODO. The old behavior
+ can be achieved with the new --disfigure bpkg-pkg-build option that forces
+ a from-scratch reconfiguration.
+
+ * New `min-bpkg-version` repositories manifest value that allows specifying
+ the minimum supported bpkg version.
+
+ See also the new --min-bpkg-version bpkg-rep-create option.
+
+ * Change of the `build-email` package manifest value semantics.
+
+ Now build result notifications are only sent if this value is explicitly
+ specified (before we used to fallback to `email`).
+
+ * New --immediate|-i and --recursive|-r bpkg-pkg-{update,clean} options.
+
+ These options can be used to additionally update or clean immediate or all
+ dependencies of a package, respectively.
+
+ * New --all-pattern bpkg-pkg-{update,clean,test,install,uninstall} option.
+
+ This option can be used to perform the command on all the held packages
+ that match a wildcard pattern.
+
+ * New --rebuild-checksum bpkg-pkg-build option.
+
+ This option can be used to avoid rebuilds if the result of a dependency
+ resolution for a package has not changed.
+
+ * New --noop-exit bpkg-pkg-build option.
+
+ This option can be used to request a distinct exit code if the build is
+ a noop (performs no new package builds, upgrades, etc).
+
+ * New --output-{root,purge} bpkg-pkg-checkout and --checkout-{root,purge}
+ bpkg-pkg-build options.
+
+ * New --keep-config bpkg-pkg-disfigure option.
+
+ * New BPKG_DEF_OPT environment variable that can be used to suppress loading
+ of default options files.
+
+Version 0.13.0
+
+ * The SPDX License Expression is now the default scheme for the 'license'
+ package manifest value.
+
+ See the "license" section in the manual for details.
+
+ * New --pkg-proxy common option.
+
+ This option specifies the proxy server to use when fetching package
+ manifests and archives from remote pkg repositories. See the option
+ documentation in bpkg-common-options(1) for details.
+
+ * External test packages can now have their own build constraints.
+
Version 0.12.0
* Ability to specify the full package version constraint in the pkg-build