| ============ | |
| (unreleased) | |
| ============ | |
| CLI | |
| --- | |
| o BREAKING CHANGE: Commands no longer accept any options related to | |
| tracking. Please use `bst source track` separately prior to | |
| running commands, if you need similar functionality. The full list | |
| of removed options is as follows: | |
| * `bst build --track` | |
| * `bst build --track-all` | |
| * `bst build --track-except` | |
| * `bst build --track-cross-junctions` / `bst build -J` | |
| * `bst build --track-save` | |
| * `bst source fetch --track` | |
| * `bst source fetch --track-cross-junctions` / `bst source fetch -J` | |
| * `bst workspace open --track` | |
| * `bst workspace reset --track` | |
| API | |
| --- | |
| o Sources may force early staging to cache by advertising | |
| `BST_KEY_REQUIRES_STAGE`. Sources setting this are staged to the cache to | |
| generate unique keys. `WorkspaceSource` and `LocalSource` set this. | |
| ================== | |
| buildstream 1.91.2 | |
| ================== | |
| o Various bug fixes. | |
| ================== | |
| buildstream 1.91.1 | |
| ================== | |
| API | |
| --- | |
| o BREAKING CHANGE: 'Element.node_subst_member' has been removed. Please use | |
| 'Element.node_subst_vars' instead. | |
| o BREAKING CHANGE: 'Element.node_subst_list' has been removed. Please use | |
| 'Element.node_subst_sequence_vars' instead. | |
| o BREAKING CHANGE: Workspace incremental builds have been temporarily disabled | |
| o A new 'Node.strip_node_info()' is available and allows getting the | |
| underlying data structure for the given node. | |
| o BuildStream now requires Buildbox-casd 0.0.3 at minimum | |
| ================== | |
| buildstream 1.91.0 | |
| ================== | |
| This release is a development snapshot, without any compatibility guarantees. | |
| (The list of changes is non-exhaustive) | |
| CLI | |
| --- | |
| o BREAKING CHANGE: `bst track` and `bst fetch` commands are now obsolete. | |
| Their functionality is provided by `bst source track` and | |
| `bst source fetch` respectively. | |
| o BREAKING CHANGE: The top level commands `checkout`, `push` and `pull` have | |
| been moved to the `bst artifact` subcommand group and are now obsolete. | |
| For example, you must now use `bst artifact pull hello.bst`. | |
| The behaviour of `checkout` has changed. The previously mandatory LOCATION | |
| argument should now be specified with the `--directory` option. In addition | |
| to this, `--tar` is no longer a flag, it is a mutually incompatible option | |
| to `--directory`. For example, `bst artifact checkout foo.bst --tar foo.tar.gz`. | |
| o BREAKING CHANGE: `bst workspace open` now supports the creation of multiple | |
| elements and allows the user to set a default location for their creation. | |
| This has meant that the new CLI is no longer backwards compatible with | |
| BuildStream 1.2. | |
| o BREAKING CHANGE: The `bst build` command no longer accepts the `--all` | |
| option. It now accepts `--deps` with a choice of 'plan' (default) and | |
| 'all', for equivalent behaviour. | |
| o BREAKING CHANGE: `bst init` no longer uses the `--directory` or `-C` | |
| option. Instead, it (optionally) takes a directory as an argument. | |
| o BREAKING CHANGE: The `bst source-bundle` command has been removed. The | |
| functionality it provided has been replaced by the `--include-build-scripts` | |
| option of the `bst source checkout` command. To produce a tarball containing | |
| an element's sources and generated build scripts you can do the command | |
| `bst source checkout --include-build-scripts --tar foo.tar foo.bst`. | |
| A `--compression` option is also supported when using `--tar` which supports | |
| xz, gz and bz2 compression. | |
| o BREAKING CHANGE: The 'auto-init' functionality has been removed. This would | |
| offer to create a project in the event that bst was run against a directory | |
| without a project, to be friendly to new users. It has been replaced with | |
| an error message and a hint instead, to avoid bothering folks that just | |
| made a mistake. | |
| o BREAKING CHANGE: The unconditional 'Are you sure?' prompts have been | |
| removed. These would always ask you if you were sure when running | |
| 'bst workspace close --remove-dir' or 'bst workspace reset'. They got in | |
| the way too often. | |
| o Added `bst artifact show` subcommand which shows the cached status | |
| of an artifact. If project/user remotes are available, they are checked | |
| for the target elements (and their deps, if specified). Artifacts available | |
| in remotes are displayed as "available". | |
| o Added `bst artifact list-contents` subcommand which can display the names | |
| of files in artifacts in your artifact cache, either by element name | |
| or by direct artifact reference. --long option can be used to display more | |
| information; file type and size. | |
| o Added `bst artifact delete` subcommand. This command removes artifacts from | |
| the local cache. Multiple element names and artifact refs can be specified | |
| as arguments. | |
| o Added `bst artifact log` subcommand for viewing build logs. | |
| o Added new `bst source checkout` command to checkout sources of an element. | |
| o Running commands without elements specified will now attempt to use | |
| the default targets defined in the project configuration. | |
| If no default target is defined, all elements in the project will be used. | |
| o bst 'build' now has '--remote, -r' option, inline with bst 'push' & 'pull'. | |
| Providing a remote will limit build's pull/push remote actions to the given | |
| remote specifically, ignoring those defined via user or project configuration. | |
| o `bst shell --sysroot` now takes any directory that contains a sysroot, | |
| instead of just a specially-formatted build-root with a `root` and `scratch` | |
| subdirectory. | |
| o Creating a build shell through the interactive mode or `bst shell --build` | |
| will now use the cached build tree if available locally. It is now easier to | |
| debug local build failures. | |
| Plugins | |
| ------- | |
| o BREAKING CHANGE: cmake, make, makemaker, meson, modulebuild and qmake | |
| plugins have been moved to the bst-plugins-experimental repository. | |
| o BREAKING CHANGE: The 'manual' element lost its default 'MAKEFLAGS' and 'V' | |
| environment variables. There is already a 'make' element with the same | |
| variables. Note that this is a breaking change, it will require users to | |
| make changes to their .bst files if they are expecting these environment | |
| variables to be set. | |
| o BREAKING CHANGE: The `git` plugin does not create a local `.git` | |
| repository by default. If `git describe` is required to work, the | |
| plugin has now a tag tracking feature instead. This can be enabled | |
| by setting 'track-tags'. | |
| o Added new `pip` source plugin for downloading python packages using pip, | |
| based on requirements files from previous sources. | |
| API | |
| --- | |
| o BREAKING CHANGE: The yaml API has been rewritten entirely. When accessing | |
| configuration from YAML, please use the new `Node` classes exposed in the | |
| `buildstream` package. See the documentation for how to use it. | |
| This change has also removed the need of a YAML cache as it proved to no | |
| longer be of benefit. | |
| o There is a new sandbox API for command batching. It is used for build, | |
| script, and compose elements. | |
| o Source plugins may now request access access to previous during track and | |
| fetch by setting `BST_REQUIRES_PREVIOUS_SOURCES_TRACK` and/or | |
| `BST_REQUIRES_PREVIOUS_SOURCES_FETCH` attributes. | |
| Configuration Format | |
| -------------------- | |
| o Elements may now specify 'build-depends' and 'runtime-depends' fields | |
| to avoid having to specify the dependency type for every entry in | |
| 'depends'. | |
| o Junction elements may now specify another junction as their target, using | |
| the `target` configuration option. | |
| o Elements may now specify cross-junction dependencies as simple strings | |
| using the format '{junction-name}:{element-name}'. | |
| Core | |
| ---- | |
| o BREAKING CHANGE: Reverted the default behaviour of junctions. Subproject | |
| elements will no longer interact with the parent project's remote (by | |
| default). To enable this behaviour, a new "cache-junction-elements" boolean | |
| can be optionally declared as part of your junction element's configuration. | |
| Additionally, a new "ignore-junction-remotes" option has also been | |
| introduced. This allows you to completely ignore subproject remotes when | |
| using the parent project. | |
| o BREAKING CHANGE: Symlinks are no longer resolved during staging and absolute | |
| symlinks are now preserved instead of being converted to relative symlinks. | |
| o BREAKING CHANGE: Overlap whitelists now require absolute paths. This allows | |
| use of variables such as %{prefix} and matches the documentation. | |
| o BREAKING CHANGE: Default strip-commands have been removed as they are too | |
| specific. Recommendation if you are building in Linux is to use the | |
| ones being used in freedesktop-sdk project, for example | |
| o All elements should now be suffixed with `.bst`. | |
| Attempting to use an element that does not have the `.bst` extension, | |
| will result in a warning. | |
| o Failed builds are included in the cache as well. | |
| `bst artifact checkout` will provide anything in `%{install-root}`. | |
| A build including cached fails will cause any dependant elements | |
| to not be scheduled and fail during artifact assembly, | |
| and display the retry prompt during an interactive session. | |
| o Added Basic support for the BuildBox sandbox. The sand box will only be | |
| used if the environment variable BST_FORCE_SANDBOX is set to `buildbox`. | |
| This is the first step in transitioning to only using BuildBox for local | |
| sandboxing. | |
| Artifacts | |
| --------- | |
| o BREAKING CHANGE: Artifact as a Proto. The caching of BuildStream artifacts | |
| has changed from a reference based impelementation. Existing artifacts and | |
| artifact servers are not compatible, as such remote artifact servers need to | |
| be updated to the latest version which will then allow them to be repopulated | |
| with new artifacts. | |
| o BREAKING CHANGE: The project name of dependencies have been included when | |
| calculating the cache key. This was required to keep inline with the | |
| artifact proto. Additionally, for strict mode, the name of dependencies have | |
| also been included in the calculation of the cache key. This is again to | |
| keep inline with the proto, but also to maintain symmetry in the behaviour | |
| between the strict and non-strict modes. | |
| o Due to the element `build tree` being cached in the respective artifact their | |
| size in some cases has significantly increased. In *most* cases the build trees | |
| are not utilised when building targets, as such by default bst 'pull' & 'build' | |
| will not fetch build trees from remotes. This behaviour can be overridden with | |
| the cli main option '--pull-buildtrees', or the user configuration cache group | |
| option 'pull-buildtrees = True'. The override will also add the build tree to | |
| already cached artifacts. When attempting to populate an artifactcache server | |
| with cached artifacts, only 'complete' elements can be pushed. If the element | |
| is expected to have a populated build tree then it must be cached before pushing. | |
| o Artifacts can now be cached explicitly with an empty `build tree` when built. | |
| Element types without a build-root were already cached with an empty build tree | |
| directory, this can now be extended to all or successful artifacts to save on cache | |
| overheads. The cli main option '--cache-buildtrees' or the user configuration cache | |
| group option 'cache-buildtrees' can be set as 'always', 'auto' or 'never', with | |
| the default being 'auto'. Note, as the cache-key for the artifact is independent of | |
| the cached build tree input it will remain unaltered, however the availbility of the | |
| build tree content may differ. | |
| Workspaces | |
| ---------- | |
| o Due to enabling the use of relative workspaces, "Legacy" workspaces | |
| may need to be closed and remade before the changes will affect them. | |
| Downgrading after using this feature may result in workspaces | |
| not functioning correctly | |
| o Opening a workspace now creates a .bstproject.yaml file that allows BuildStream | |
| commands to be run from a workspace that is not inside a project. | |
| o Specifying an element is now optional for most commands when BuildStream is run | |
| from inside a workspace. See CLI reference for more details. | |
| o Added Documentation on how to create out of source builds. This includes the | |
| new the `conf-root` variable to make the process easier. And there has been | |
| a bug fix to workspaces so they can be build in workspaces too. | |
| Miscellaneous | |
| ------------- | |
| o Generate Docker images from built artifacts using | |
| `contrib/bst-docker-import` script. | |
| ================= | |
| buildstream 1.1.5 | |
| ================= | |
| o Added a `--tar` option to `bst checkout` which allows a tarball to be | |
| created from the artifact contents. | |
| o Fetching and tracking will consult mirrors defined in project config, | |
| and the preferred mirror to fetch from can be defined in the command | |
| line or user config. | |
| o Added new `remote` source plugin for downloading file blobs | |
| o Added support for the new include '(@)' directive in project.conf and .bst files | |
| ================= | |
| buildstream 1.1.4 | |
| ================= | |
| o `bst workspace` commands and `bst track` will substitute their | |
| source elements when performing those operations, e.g. performing | |
| `bst track` on a filter element will track the sources on the | |
| element that it depends on (if it has sources). | |
| o Added new simple `make` element | |
| o Switch to Remote Execution CAS-based artifact cache on all platforms. | |
| Artifact servers need to be migrated. | |
| o BuildStream now requires python version >= 3.5 | |
| o BuildStream will now automatically clean up old artifacts when it | |
| runs out of space. The exact behavior is configurable in the user's | |
| buildstream.conf. | |
| ================= | |
| buildstream 1.1.3 | |
| ================= | |
| o Added new `bst init` command to initialize a new project. | |
| o Cross junction tracking is now disabled by default for projects | |
| which can support this by using project.refs ref-storage | |
| New options have been added to explicitly enable cross-junction | |
| tracking. | |
| o Failed jobs are now summarised at the end of a build. | |
| Use `--verbose` and `--no-verbose` to adjust the amount of detail given. | |
| o BuildElements' `configure-commands` are only run once for | |
| workspaces now, which allows for incremental builds. | |
| Appropriate API for plugins is also exposed through | |
| `Element.prepare`. | |
| o The `cmake` plugin now supports building with ninja with the | |
| newly added `generator` configuration option. | |
| o `bst workspace close` and `bst workspace reset` now support multiple | |
| elements. All elements can be specified using `--all`. | |
| o The elements whose cache keys had to be determined during the build | |
| are summarised at the end of the build. | |
| o Fixed versioning introspection to be dynamic, many users use | |
| a developer install mode so they can update with git, now the | |
| version information is always up to date in logs. | |
| This causes a minor API break: The --version output now only | |
| outputs the version. | |
| ================= | |
| buildstream 1.1.2 | |
| ================= | |
| o New ref-storage option allows one to store source refs, such | |
| as git shas, in one central project.refs file instead of inline | |
| with the source declarations. | |
| o Deprecated `--track-save` optionality in `bst build`, this | |
| does not make sense to support now that we have project.refs. | |
| o Added the `sandbox` configuration option which can be used in | |
| `project.conf` and elements, to control the user ID and group ID | |
| used in build sandboxes. | |
| o Added new `deb` source implementation, for staging of downloaded | |
| deb package files. | |
| ================= | |
| buildstream 1.1.1 | |
| ================= | |
| o New project configuration controlling how the sandbox behaves | |
| when `bst shell` is used; allowing projects to provide a more | |
| functional shell environment. | |
| o The `bst shell` command now has a `--mount` option allowing | |
| users to mount files and directories into the sandbox for | |
| testing purposes. | |
| o Log lines are now configurable with the new "message-format" | |
| user configuration, allowing one to express optional fields | |
| such as microsecond precision and wallclock time. | |
| o Newly added filter element | |
| o Git source plugin now allows disabling of submodule checkouts | |
| o In the same way we allow overriding element configurations | |
| by their 'kind' in project.conf, we now support the same | |
| for source plugin configurations. | |
| o Tar and zip sources now automatically recall an `etag` | |
| from the http headers, optimizing tracking of tarballs | |
| significantly (issue #62) | |
| ================= | |
| buildstream 1.1.0 | |
| ================= | |
| o Multiple artifact caches are now supported in project and | |
| user configuration with a priority order (issue #85) | |
| o Add junction support for subprojects | |
| o Changes towards incremental builds in workspaces | |
| o `bst shell --build` now creates true build sandbox | |
| o Many bug fixes | |
| ================= | |
| buildstream 1.0.0 | |
| ================= | |
| First stable release of BuildStream | |
| BuildStream 1.0.0 is all about API stability - for the past months we | |
| have been reviewing our various API surfaces, implementing strategies | |
| for revisioning of our interfaces and cleaning up. Long term stability | |
| is very important for build reproducibility over time, and this release | |
| is the first promise we are making on any API surfaces. | |
| Stable API surfaces include: | |
| o The command line interface | |
| o The YAML user configuration file format | |
| o The YAML project `.bst` file format | |
| o The core Python module imported by external plugins |