diff options
Diffstat (limited to 'NEWS')
-rw-r--r-- | NEWS | 302 |
1 files changed, 302 insertions, 0 deletions
@@ -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 |