[build2] build2 0.11.0 released
Alex Syrnikov
san at masterspline.eu
Tue Jun 11 17:29:31 UTC 2019
I have updated Linux binary packages. Link can be found on the bottom of
build2 install page (Other Installation Methods).
https://build2.org/install.xhtml#other
Already installed packages will be updated by system package manager.
Alex Syrnikov
On 11.06.2019 11:42, Boris Kolpackov wrote:
> We have released build2 toolchain version 0.11.0. This release contains a
> large number of new features across all the tools (build system, dependency
> managers, etc). It also includes experimental support for C++ modules header
> unit importation and include translation.
>
> A note on backwards compatibility: in this release we have extended the
> numeric representation of the standard versioning scheme. As a result,
> this release cannot be upgraded to from 0.10.0 and has to be installed
> from scratch. Additionally, while existing libraries created with bdep-new
> will continue to work, the comment that describes the versioning scheme in
> version.hxx.in (or equivalent) will no longer be accurate. The easiest way
> to fix this is to run bdep-new on the side to create an identically-named
> project and copy the new version.hxx.in over.
>
> The corresponding NEWS file entries are included below with a more detailed
> discussion of the major new features available in the release notes:
>
> https://build2.org/release/0.11.0.xhtml
>
> This release has been tested on Windows, Linux, Mac OS, and FreeBSD with
> GCC, Clang (both vanilla and Apple's), MinGW GCC, and MSVC (14, 15, and
> 16). A big thank you to everyone who helped test staged snapshots.
>
> The following new build configurations have been added to the CI service:
>
> linux_debian_9-gcc_9.1
> linux_debian_9-clang_8.0
>
> macos_10.14-clang_10.0
> macos_10.14-gcc_9.1_homebrew
>
> windows_10-msvc_16.1
>
> For the complete list of available build configurations see:
>
> https://ci.cppget.org/?build-configs
>
> Installation instructions:
>
> https://build2.org/install.xhtml
>
> Download directory:
>
> https://download.build2.org/0.11.0/
>
> SHA256 checksums:
>
> 37396ed937f94cf02d51c6b9f21c8cc0f95384a6325059eb24a5eba0affcd504 *build2-install-0.11.0.sh
> 3aa16ba0aae052ec59c622a29db9fb4834ac9bda188094ace6e193ce6aff91cb *build2-install-msvc-0.11.0.bat
> 213a829f12917a6febee42740f7804f1fc687f374b983e640afd75c479b11c37 *build2-install-mingw-0.11.0.bat
>
> 653bb75f31ca05760eba62bb6727d11a9f0d8ce4aa2fc1fb996d7ef6e76a4938 *build2-toolchain-0.11.0.tar.xz
> c0232481826d9881bed1d29b4a75e56cb8ce12b3c37b2b34b24e0a59a1d1b271 *build2-toolchain-0.11.0.tar.gz
>
> 2353dae2b39706a4a80dbf2e5e28c99355b753f3986256c1c9a7e99485d1a70b *build2-baseutils-0.11.0-x86_64-windows.zip
> 65e3becc2edf7989d78569a72d030a88467fc5fb9c7b262d0d1f4575479c040c *build2-mingw-0.11.0-x86_64-windows.tar.xz
>
> Repository certificate fingerprint for cppget.org:
>
> 86:BA:D4:DE:2C:87:1A:EE:38:C7:F1:64:7F:65:77:02:15:79:F3:C4:83:C0:AB:5A:EA:F4:F7:8C:1D:63:30:C6
>
> NEWS file entries:
>
> build2 version 0.11.0
>
> * Initial work on header unit importation and include translation support.
>
> In particular, for GCC, the (experimental) module mapper approach is now
> used to handle header unit importation, include translation, and headers
> dependency extraction, all with support for auto-generated headers.
>
> * Generalized target/prerequisite variable blocks.
>
> Target/prerequisite-specific variable blocks can now be present even if
> there are prerequisites. For example, now instead of:
>
> exe{foo}: cxx{foo}
> exe{foo}: cc.loptions += -rdynamic
>
> Or:
>
> exe{foo}: cxx{foo}
> exe{foo}:
> {
> cc.loptions += -rdynamic
> cc.libs += -ldl
> }
>
> We can write:
>
> exe{foo}: cxx{foo}
> {
> cc.loptions += -rdynamic
> cc.libs += -ldl
> }
>
> This also works with dependency chains in which case the block applies to
> the set of prerequisites (note: not targets) before the last ':'. For
> example:
>
> ./: exe{foo}: libue{foo}: cxx{foo}
> {
> bin.whole = false # Applies to the libue{foo} prerequisite.
> }
>
> * Support for ad hoc target groups.
>
> In certain cases we may need to instruct the underlying tool (compiler,
> linker, etc) to produce additional outputs. For example, we may want to
> request the compiler to produce an assembler listing or the linker to
> produce a map file. While we could already pass the required options, the
> resulting files will not be part of the build state. Specifically, they
> will not be cleaned up and we cannot use them as prerequisites of other
> targets.
>
> Ad hoc target groups allow us to specify that updating a target produces
> additional outputs, called ad hoc group members. For example:
>
> <exe{hello} file{hello.map}>: cxx{hello}
> {
> cc.loptions += "-Wl,-Map=$out_base/hello.map"
> }
>
> <obje{hello} file{hello.lst}>:
> {
> cc.coptions += "-Wa,-amhls=$out_base/hello.lst"
> }
>
> Note also that all things ad hoc (prerequisites, targets, rules) are still
> under active development so further improvements (such as not having to
> repeat names twice) are likely.
>
> * New config.{c,cxx}.std configuration variables that, if present, override
> {c,cxx}.std specified at the project level.
>
> In particular, this allows forcing a specific standard for all the projects
> in a build configuration, for example:
>
> $ b create: exp-conf/,cc config.cxx=g++ config.cxx.std=experimental
>
> * New --dry-run|-n option instructs build rules to print commands without
> actually executing them.
>
> Note that commands that are required to create an accurate build state
> will still be executed and the extracted auxiliary dependency information
> saved. In other words, this is not the "don't touch the filesystem" mode
> but rather "do minimum amount of work to show what needs to be done". In
> particular, this mode is useful to quickly generate the compilation
> database, for example:
>
> $ b -vn clean update |& compiledb
>
> * Ability to disable automatic rpath, support for custom rpath-link.
>
> Specifically, the new config.bin.rpath.auto variable can be used to
> disable the automatic addition of prerequisite library rpaths, for
> example:
>
> $ b config.bin.rpath.auto=false
>
> Note that in this case rpath-link is still added where normally required
> and for target platforms that support it (Linux and *BSD).
>
> The new config.bin.rpath_link and config.bin.rpath_link.auto have the same
> semantics as config.bin.rpath* but for rpath-link.
>
> * Enable MSVC strict mode (/permissive-) for 'experimental' standard
> starting from version 15.5.
>
>
> bdep version 0.11.0
>
> * The bdep-new command now by default adds a README.md template. This can be
> suppressed with the new no-readme project type sub-option. For example:
>
> $ bdep new -t exe,no-readme hello
>
> * New license=<name> bdep-new project type sub-option allows specifying a
> project license. For example:
>
> $ bdep new -t exe,license=MIT hello
>
> Commonly used license names are 'MIT', 'ASLv2' (Apache License 2.0),
> 'GPLv3', and 'proprietary' (see the 'license' package manifest value
> documentation for a more extensive list of names). Note that if the
> license is not specified, the default is now 'proprietary' instead of
> 'TODO'.
>
> * New bdep-new --post-hook option allows the execution of customization
> commands in the newly created project. For example:
>
> $ bdep new --post-hook "echo .idea/ >>.gitignore" hello
>
> See the bdep-new(1) man pages for details.
>
> * The bdep-ci command now allows overriding certain manifest values in
> packages being submitted for testing. This is primarily useful for
> specifying alternative build configurations and/or build notification
> emails. For example:
>
> $ bdep ci --builds gcc
>
> See the bdep-ci(1) man pages for details.
>
> * New bdep-release --amend and --squash options allow releasing a revision
> by squashing and amending one or more existing commits.
>
> * New --existing|-e option for bdep-{init,new} --config-create|-C and
> bdep-config create modes. With this option bdep initializes a bpkg
> configuration based on an existing build system configuration instead of
> creating a new one from scratch. For example:
>
> $ b create: build-clang/,cc config.cxx=clang++
> $ bdep new -C build-clang --existing hello
>
>
> bpkg version 0.11.0
>
> * The 'tags' package manifest value has been deprecated and replaced with
> 'keywords' (list of space-separated words) and 'topics' (list of comma-
> separated, potentially multi-word concepts). For example:
>
> topics: xml parser, xml serializer
> keywords: sax dom
>
> * New 'description-type' package manifest value allows specifying the
> content type of the 'description' or 'description-file' value. Currently,
> recognized values are:
>
> text/plain
> text/markdown
> text/markdown;variant=GFM
> text/markdown;variant=CommonMark
>
> * New 'upstream-version' package manifest value allows preserving the
> original version for information.
>
> * The pkg-build command can now "build" a system package that doesn't have a
> stub provided its version is specified explicitly. For example:
>
> $ bpkg build ... ?sys:libsqlite3/* ?sys:libcurl/7.47.0
>
> * New cfg-create --existing|-e option allows initializing a bpkg
> configuration based on an existing build system configuration instead of
> creating a new one from scratch. For example:
>
> $ b create: build-clang/,cc config.cxx=clang++
> $ bpkg create -d build-clang --existing
>
> * New rep-info --deep option triggers the replacement of '*-file' package
> manifest values with the contents of the referenced files.
>
>
> brep version 0.11.0
>
> * Support for displaying Markdown package descriptions.
>
> * Support for displaying new package manifest values: 'upstream-version',
> 'topics', and 'keywords.
>
> * Various page style cleanups and improvements.
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: OpenPGP digital signature
URL: <https://lists.build2.org/archives/users/attachments/20190611/89b85521/attachment.sig>
More information about the users
mailing list