New features:
- Verify conflicts between namespaced part names during parts validation.
- Update the
uv,poetry, andnpmplugins to use native TLS certificates. - Craft Parts now always ignores Ubuntu's phased updates when installing build packages or fetching stage packages, so the latest available version of each package is used.
Bug fixes:
- The
qmakeplugin recognizessource-subdirif the part declares it, keeping compatibility in cases whereqmake-project-filewas also set. - Add
build-environmentvalues to the build state to rebuild parts when the environment declaration changes.
New features:
- Allow
stage-snapsandbuild-snapsto use the@separator between the snap name and channel. - Allow
stage-packagesandbuild-packagesto use the@separator between a deb package name and its version, in addition to the existing=separator. - Add
overlay-recommended-packageskey to install overlay packages with their recommended dependencies. - The
colconplugin now passes-DBUILD_TESTING=OFFto CMake by default, disabling test targets that are not useful inside a rock or snap and would otherwise pull in large test-only dependencies. Users can opt back in by passing-DBUILD_TESTING=ONincolcon-cmake-args. - Add a
stage-sliceskey to declare Chisel slices separately from thestage-packageskey. - Add a
stage_packages_slice_supportparameter to theLifecycleManagerso applications can control whether Chisel slices can be declared in thestage-packageskey. Defaults to True for backward compatibility, but new apps should set this to False and use thestage-sliceskey instead. - Add the request URL to the error message for package download errors.
- Add part name and resolution to error message for source checksum mismatch.
Bug fixes:
- Generalize the
PartitionUsageErrorresolution message to cover invalid partition usage beyond invalid partition names. - The Overlay and Build steps of parts that organize content to the overlay
are executed before these steps in other parts, even when
afteris used. - Skip organization when the resolved destination path and the source path are the same.
- Refresh the APT cache before marking packages for installation, ensuring the correct package versions are resolved.
- Use fork context for chroot operations to fix execution on Python 3.14.
- Check out the commit before updating submodules, preventing errors when the submodule state does not match the checked-out commit.
- Preserve package architecture information in primed stage packages.
For a complete list of commits, check out the 2.36.0 release on GitHub.
Bug fixes:
- (Poetry plugin) Don't install the Poetry export plugin if a
poetry-depspart is provided. - #1458 Build step fails on special files
- The Overlay and Build steps of parts that organize content to the overlay
are executed before these steps in other parts, even when
afteris used. - Fix the
colconplugin to declaremakeandpython3-colcon-recursive-crawlas explicit build packages. Both are only recommended (not depended on) bycmakeandcolconrespectively, so they were absent when packages are installed with--no-install-recommends, causing builds to fail. - Set
DEBIAN_FRONTEND=noninteractivein the global execution environment, so all steps run non-interactively by default. - Add git source mutual exclusivity to JSON schema.
- Normalize leading slashes in migration paths, fixing application of permissions and ownership in files specified with absolute paths.
For a complete list of commits, check out the 2.35.1 release on GitHub.
Bug fixes:
- (Poetry plugin) Don't install the Poetry export plugin if a
poetry-depspart is provided.
For a complete list of commits, check out the 2.34.1 release on GitHub.
Bug fixes:
- Always migrate overlay files to Stage and Prime first, even if the part being staged or primed also has contents coming from the install directory.
For a complete list of commits, check out the 2.33.1 release on GitHub.
New features:
- Applications can define default parameters for autoconf and make when subclassing the plugins.
- The plus sign is allowed in partition names. More restrictive rules must be enforced at application level.
Bug fixes:
- Always migrate overlay files to Stage and Prime first, even if the part being staged or primed also has contents coming from the install directory.
For a complete list of commits, check out the 2.35.0 release on GitHub.
New features:
- Plugins can now define overlay commands.
- Add support for organizing files from the build directory using the
(build)pseudo-partition. - Add a
gradle-useplugin for publishing Gradle artifacts to a local Maven repository. - For explicit typing of file system operations, switch to the pathlib module. All uses of
strfor paths are replaced withpathlib.Path. In the public APIs, this change only impacts thefilesanddirectoriesvariables of theMigrationStateclass. - Allow applications to set up build environment variables when creating the lifecycle manager.
Bug fixes:
- Reject organize source entries that resolve outside the part install directory.
- Fix edge cases when organizing files to the overlay partition.
- Track
override-overlaychanges in part state. - Wrap streaming request errors for file sources in
NetworkRequestError.
For a complete list of commits, check out the 2.34.0 release on GitHub.
Bug fixes:
- Reverts the feature from :ref:`2.31.0 <release-2.31.0>` allowing parts to organize files directly from the build directory.
For a complete list of commits, check out the 2.33.0 release on GitHub.
New features:
- Add support for parsing Chisel manifests in core26 bases when filtering stage packages.
For a complete list of commits, check out the 2.32.0 release on GitHub.
New features:
- Allow parts to organize files directly from the build directory.
Documentation:
- Clarify the compatibility of the :ref:`craft_parts_dotnet_v2_plugin` self-provisioned .NET SDK with different Ubuntu releases, with an example of how to override this behavior to use a custom user-provided SDK instead.
For a complete list of commits, check out the 2.31.0 release on GitHub.
Bug fixes:
- Fix the Poetry plugin being unable to call
poetry exporton Ubuntu 25.04 or later. - Accept
7zas asource-type. - Correctly handle host sources on
override-overlayscripts.
For a complete list of commits, check out the 2.30.1 release on GitHub.
New features:
- Add support for the
self-containedbuild attribute for parts using the :ref:`craft_parts_npm_plugin`. - Circular dependency errors now show the actual part processing order, making it easier to identify and fix dependency cycles in complex projects.
- Add :ref:`craft_parts_npm_use_plugin` to export npm dependencies to a
shared local cache for
self-containedbuilds. - Add support for the
override-overlaykey, which runs a script inside a chroot environment during the overlay step. - The Go-use plugin returns an error if a
go.modfile doesn't exist. This prevents the error going unnoticed & appearing at build-time (when the module doesn't appear in the Go workspace) - Add support for copying Apt configuration from the host into the overlay system
using a new
use_host_sourcesparameter for theLifecycleManager.
Documentation:
- Update documentation system to Canonical's Sphinx Starter Pack 1.4.0.
Bug fixes:
- Fix
mark_packagesfailing withPackageNotFoundwhen versioned packages have interdependencies on each other. The method now sets all candidate versions before callingmark_install, so the resolver sees the correct candidates for all dependencies. - The Ruby plugin will now build the Ruby source tree in the part's
build directory instead of the source directory when the
self-containedkey is true andruby-use-bundlerkey is false. This resolves an issue where changes made by anoverride-buildscript were effectively ignored.
For a complete list of commits, check out the 2.30.0 release on GitHub.
Bug fixes:
- Setting
source-commitwith a full-length commit hash would force a shallow clone, regardless of the value ofsource-depth. Parts will now only pull a shallow clone ifsource-depthis non-zero.
For a complete list of commits, check out the 2.28.1 release on GitHub.
New features:
- Add support for mid-step callbacks.
- Add a colcon plugin for building parts that use the colcon build tool. Requires core24 or higher.
- Add self-contained support for parts using the Gradle plugin.
- The Gradle daemon is now disabled by default when using the Gradle plugin. You can
control this behaviour with the new
gradle-use-daemonkey.
For a complete list of commits, check out the 2.29.0 release on GitHub.
New features:
- The entire set of active plugins can now be replaced by using :py:func:`craft_parts.plugins.set_plugin_group`. All plugin groups should contain at least the plugins from the :py:data:`craft_parts.plugins.PluginGroup.MINIMAL` group.
- A new :ref:`craft_parts_ruby_plugin` allows convenient building of Ruby projects, including bundling Ruby interpreters.
- The
uvplugin now compiles Python bytecode. UseUV_COMPILE_BYTECODE=0to disable this feature.
Bug fixes:
- The Maven-use plugin now correctly infers a
groupIdwhen there is a parent pom to infer from. - The
make cleancommand now deletesdocs/reference/gen, which fixes documentation builds that break because of outdated and leftover files in that directory.
For a complete list of commits, check out the 2.28.0 release on GitHub.
New features:
- Add new
jlink-multi-releaseandjlink-moduleskeys to the JLink plugin. - The Meson plugin now calls
meson setupduring build.
Bug fixes:
- Shallow clones of git sources are now possible when using
source-commitwithsource-depth. - Ignored outdated files are now still 'pulled', otherwise git will always consider the repository dirty.
For a complete list of commits, check out the 2.27.0 release on GitHub.
New features:
- Chisel slices can be staged on unmaintained or unstable releases. (Requires chisel 1.3.0 or higher.)
Bug fixes:
- Trim down debug logs to make the output more useful when handling numerous overlay files.
- Suppress detached HEAD warnings when cloning Git remotes.
- #1366 When organizing a file to a directory, detect collisions with existing files in the directory. If a collision occurs, an error is produced with a message listing the colliding paths.
For a complete list of commits, check out the 2.26.0 release on GitHub.
New features:
- Validate that filesystem mounts are ordered in increasing
mountnesting. Amountvalue cannot be a parent of any precedingmountvalues.
Bug fixes:
- When installing packages with
overlay-packages, the prepared chroot now correctly handles mounts added during installation.
Documentation:
The Git submodule containing documentation components has been renamed to
sphinx-docs-starter-packto match its parent repository.If you're a returning contributor to the project, after you pull the latest commits, run the following commands in your local repository to sync the submodule change:
git submodule sync git submodule update --init --recursive git clean -ffd
For a complete list of commits, check out the 2.25.0 release on GitHub.
New features:
Add a new
PythonPlugin. This new version is not registered by default and has a different set of requirements and behaviors than the default plugin for Python projects.Caution!
This new plugin is experimental and does not currently come with any stability or backwards compatibility guarantees.
Bug fixes:
- When partitions are enabled, the default partition name is now added to the default prime fileset entry.
- Relative symbolic links produced during the build step are now correctly checked for collisions with absolute symbolic links from the overlay during the stage step.
Documentation:
- Add a :ref:`python_v2_plugin` reference.
New features:
- Add a new
LifecycleManagercreation parameter to control whether parts should have a merged/usrdirectory scheme in their install directories. - Add two new build attributes,
enable-usrmergeanddisable-usrmerge, to control the creation of a merged/usrdirectory scheme in a part's install directory. - The package cache layer can be placed higher in the overlay stack, allowing overlay packages to be installed on top of a system created by another part.
Bug fixes:
- The package cache layer is cleaned when an underlying layer is cleaned.
Bug fixes:
- The wheel once again includes
craft_parts_docs.
New features:
- Dynamically detect the repository type used by the operating system. This allows parts to use different package managers if the system is changed by a preceding part.
- Parts can now move files to the project's overlay filesystem with the
organizekey. This is done by prefixing the file's destination path with the(overlay)pseudo-partition. To make use of this feature, the project must support both overlays and partitions.
Bug fixes:
- The
organizekey now works with character and block device nodes.
Documentation:
- The Autotools plugin now supports the disable-parallel key.
For a complete list of commits, check out the 2.22.0 release on GitHub.
New features:
Previously, when the Maven-use plugin updated
pom.xmlfor self-contained projects, it wouldn't reliably find the correct dependency versions on the host. It could unpredictably declare the wrong package version, or select a vastly different version despite a similar one being available.With Craft Parts 2.21.0, the plugin now deterministically detects and matches the dependency versions available on the host, aligning with how Maven normally behaves. This change makes the plugin a drop-in replacement for Maven in private networks.
Add support for nested project variables, which can be referenced with craftctl using dot notation. For example,
craftctl set var.subvar=foosets the nested project variablevar.subvartofoo.Previously, all project variables had to be set by the same part. Now, each project variable can be set by a different part.
Bug fixes:
- #1007 When wild cards
were used in an
organizesource path, an error would occur if files mapped to themselves. These cases are now ignored. - Set the right directory permissions so that APT no longer emits a warning when downloading to the stage package cache.
For a complete list of commits, check out the 2.21.0 release on GitHub.
Bug fixes:
- #1207 Overlay directory is not removed on a clean
For a complete list of commits, check out the 2.20.1 release on GitHub.
New features:
- The jlink plugin now has a
jlink-extra-modulesparameter to add additional modules to OpenJDK image.
Bug fixes:
- Files and directories produced during the build step are now correctly checked for collisions with overlay contents during the staging step. Conflicts can be resolved with the :ref:`stage <reference-part-properties-stage>` and :ref:`overlay <reference-part-properties-overlay>` keys.
- When content is staged to partitions from the overlay of the default partition, properly ignore content already migrated.
Documentation:
- Add a reference page for the :ref:`craft_parts_maven_use_plugin`.
- Add an explanation of how hidden files are handled in :ref:`filesets_explanation`.
- Remove all intralinking in the
PartSpecmodel's docstrings. This allows downstream apps that consume these docstrings to provide their own internal references.
For a complete list of commits, check out the 2.20.0 release on GitHub.
New features:
- When the default partition is aliased, create symlinks in the
partitionsdirectory to the lifecycle directories in the working directory. The links are intended to help users during debugging. For example,/root/partitions/<partition-id>/stagein the container filesystem is linked to/root/stage.
Bug fixes:
- The
--recurse-submoduleslink in thesource-submodulesdocstring no longer produces a linkcheck error. CRAFT_DEFAULT_*environment variables are set when the default partition is aliased.
For a complete list of commits, check out the 2.19.0 release on GitHub.
New features:
- Add the
get_prime_state_timestampmethod to the :doc:`lifecycle manager </reference/lifecycle_manager>`. This method provides the timestamp at which the prime directory was last modified.
Bug fixes:
- Properly apply top-level whiteout opaque directory files (
.wh..wh..opq) when staging content. - Partitions other than the default one are not applied on a base layer, so remove all whiteout files in them.
For a complete list of commits, check out the 2.18.0 release on GitHub.
New features:
- The maven-use plugin now processes Maven artifacts placed in the source's top-level
maven-usedirectory. - Add support for multi-module Maven projects with the Maven or maven-use plugin.
Documentation:
- Remove all intralinking in common docs. This prevents issues where downstream apps that reuse these docs run into page dependency issues when a linked doc isn't published.
- Remove instances of "Craft Parts" in common docs and replace with substitution strings where appropriate.
New features:
- Add the
self-containedbuild attribute, which constrains a part's build to the local build environment. This attribute requires explicit plugin support and can currently be declared for parts using the Maven and Maven-use plugins. - Add methods to let MavenPlugin subclasses extend the default behavior of the plugin.
- Accept a custom name as the first partition in the partition list provided to the lifecycle, and use it to name the default partition.
Bug fixes:
- With the maven-use plugin in Craft Parts, fix versioning errors caused by native Maven plugins when the project indirectly depends on one.
- Don't expose :class:`~craft_parts.FilesystemMount` or its related classes and functions in the top-level module. It is unused outside of Craft Parts and adds ~150-200ms to the import time of downstream applications.
Documentation:
- Update the documentation on part properties using pydantic-kitbash.
For a complete list of commits, check out the 2.16.0 release on GitHub.
New features:
- Make the error message more detailed and traceable when the maven-use plugin
encounters invalid XML in the software's
pom.xmlfile. - Add support for the
parenttag on apom.xmlfile with the maven-use plugin.
Bug fixes:
- With the maven-use plugin, don't raise errors if dependency versions aren't specified
in the software's
pom.xmlfile. - With the maven-use plugin, don't create
pom.xmlfiles with duplicate<distributionManagement>tags. - Fix content migration when using :class:`~craft_parts.FilesystemMount` during the prime step. Instead of relying on the content of the overlay, gather the list of files and directories from the stage directory and the state of the stage migration.
For a complete list of commits, check out the 2.15.0 release on GitHub.
Documentation:
- Document the updated and rewritten
PartSpecmodel in the :ref:`reference-part-properties` reference.
New features:
- Use the default :class:`~craft_parts.FilesystemMount` to distribute content between partitions when migrating content from the overlay.
- Track migrated content per partition in the default state file via a new
partitions_contentsfield in :class:`~craft_parts.MigrationState`. - Support source types that list snaps as requirements.
Bug fixes:
- Rely on the migrated content tracked per partition in state files to properly clean shared areas (stage and prime directories) in partitions. Also make sure to account for content coming from the overlay.
Documentation:
- Update the contribution guidelines and move them to
CONTRIBUTING.md.
2.14.0 includes changes from the 2.10.1 release.
For a complete list of commits, check out the 2.14.0 release on GitHub.
Documentation:
- Document the fields in the
PartSpecandPermissionsmodels.
For a complete list of commits, check out the 2.10.1 release on GitHub.
New features:
- Add the maven-use plugin.
Documentation:
- Expand the :ref:`uv plugin reference <craft_parts_uv_plugin>` to include more details on how to install uv.
For a complete list of commits, check out the 2.13.0 release on GitHub.
New features:
- Add a :class:`~craft_parts.FilesystemMount` model and a
filesystem_mountsparameter to the :doc:`/reference/lifecycle_manager`. A future release will use filesystem mounts to distribute content between partitions when migrating from the overlay step.
For a complete list of commits, check out the 2.12.0 release on GitHub.
New features:
- Add the :ref:`craft_parts_dotnet_v2_plugin`.
- The :ref:`craft_parts_go_use_plugin` uses the
backstagedirectory.
Documentation:
- Move :ref:`how-to-use-parts` out of the common directory.
For a complete list of commits, check out the 2.11.0 release on GitHub.
Documentation:
- Revise the :doc:`craftctl how-to guide </common/craft-parts/how-to/customise-the-build-with-craftctl>` to better reflect how it can be used to override parts in apps.
For a complete list of commits, check out the 2.10.0 release on GitHub.
Bug fixes:
- Fix the uv plugin breaking with uv 0.7
For a complete list of commits, check out the 2.4.4 release on GitHub.
Bug fixes:
- Update the uv plugin to work with uv 0.7.0 and up.
For a complete list of commits, check out the 2.9.1 release on GitHub.
New features:
- Add a :ref:`Gradle plugin <craft_parts_gradle_plugin>`.
- Add
backstageandpart/exportdirectories for plugin use.
Documentation:
- Fix an issue where the documentation was hosting pages at URLs that contained the
.htmlextension. This regression was causing links to the site to break.
For a complete list of commits, check out the 2.9.0 release on GitHub.
New features:
- With the new
maven-use-wrapperkey in the Maven plugin, you can enable your project'smvnwwrapper script. - Add a :ref:`cargo-use plugin<craft_parts_cargo_use_plugin>` that creates a local Cargo registry for :ref:`rust plugin<craft_parts_rust_plugin>`.
Bug fixes:
- Fix the uv plugin breaking with uv 0.7
For a complete list of commits, check out the 2.7.1 release on GitHub.
New features:
- Previously,
source-commitcould only accept full length (40 character) hashes. Now,source-commitcan accept short hashes. - Allow usage of the overlay and partitions features simultaneously.
Bug fixes:
- Fix the default behavior of the :ref:`jlink plugin <craft_parts_jlink_plugin>` only finding JAR files in the top-level directory. It now searches all subdirectories too.
Note
2.7.0 includes changes from the 2.4.3 release.
Bug fixes:
- Address race condition when collecting subprocess output.
- Update jinja2 dependency to address CVE-2025-27516
For a complete list of commits, check out the 2.4.3 release on GitHub.
Bug fixes:
- Allow for a non-specific system Python interpreter when using the :ref:`uv plugin<craft_parts_uv_plugin>`.
For a complete list of commits, check out the 2.4.2 release on GitHub.
Bug fixes:
- Fix handling and propagation of Python plugin error messages.
Bug fixes:
- Fix CPATH variable scope in the :ref:`jlink plugin<craft_parts_jlink_plugin>`.
- Fix
jdepsparameter ordering in the :ref:`jlink plugin<craft_parts_jlink_plugin>`.
Bug fixes:
- Allow for a non-specific system Python interpreter when using the :ref:`uv plugin<craft_parts_uv_plugin>`.
For a complete list of commits, check out the 2.3.1 release on GitHub.
New features:
- Partition names can include slashes.
Bug fixes:
- Allow for a non-specific system Python interpreter when using the :ref:`uv plugin<craft_parts_uv_plugin>`.
New features:
- Add the :ref:`jlink plugin<craft_parts_jlink_plugin>` for setting up Java runtime.
Bug fixes:
- Preserve the
pcfiledirtag inpkgconfigfiles.
Documentation:
- Reorganise and improve the :ref:`craft_parts_step_execution_environment` reference, including example values and documentation of additional environment variables.
New features:
- Add new PartSpec property
source-channel.
Bug fixes:
- Correctly handle
source-subdirvalues on the Go-use plugin.
Documentation:
- Add missing links to GitHub releases.
For a complete list of commits, check out the 2.4.0 release on GitHub.
New features:
- Change craftctl communication mechanism to Unix sockets to consolidate the ctl server and output stream processing selector loops.
- Get the error output from step scriptlet execution and surface it when raising ScriptletRunError.
Bug fixes:
- Make sure the :ref:`uv plugin<craft_parts_uv_plugin>` is re-entrant on source changes.
Documentation:
- Correct the Maven plugin docstring to refer to Maven from Go.
For a complete list of commits, check out the 2.3.0 release on GitHub.
Documentation:
- Add a cross-reference target for Poetry external links.
For a complete list of commits, check out the 2.2.2 release on GitHub.
Bug fixes:
- Fix how extras and groups are parsed for the :ref:`uv plugin<craft_parts_uv_plugin>`.
For a complete list of commits, check out the 2.2.1 release on GitHub.
New features:
- Add a :ref:`uv plugin<craft_parts_uv_plugin>` for projects that use the uv build system.
- Add a :ref:`Go-use plugin<craft_parts_go_use_plugin>` for setting up a workspace for Go modules.
- Add new
poetry-export-extra-argsandpoetry-pip-extra-argskeys to the :ref:`poetry plugin<craft_parts_poetry_plugin>`. - Add an API for :ref:`registering custom source types <how_to_add_a_source_handler>`.
- Prefer
craft.gitas the binary to handle git sources, in environments where it's available. - Set
JAVA_HOMEenvironment variable in Java-based plugins. The plugin will try to detect the latest available JDK. - Add a
part_has_slicesfunction to determine if a part has slices in itsstage-packageskey. - Add a
part_has_chisel_as_build_snapfunction to determine if a part listschiselas abuild-snap. - Add
chiselas abuild-snapif any part has slices andchiselisn't already listed as abuild-snap. - Split stdout and stderr from
subprocesscalls for better presentation of build errors.
Bug fixes:
- Remove redundant
Captured standard error:text from plugin build errors. - Fix dependency validation for the
rustplugin when arust-depspart exists.
Documentation:
- Add labels to the :ref:`ant plugin<craft_parts_ant_plugin>` and :ref:`maven plugin<craft_parts_maven_plugin>` reference pages.
- Add a link to common part properties from the :ref:`npm plugin<craft_parts_npm_plugin>` reference page.
For a complete list of commits, check out the 2.2.0 release on GitHub.
Bug fixes:
- Fix a regression where trying to use the poetry plugin without poetry installed on the system would give an error.
For a complete list of commits, check out the 2.1.4 release on GitHub.
Bug fixes:
- Fix an issue where the
poetryplugin would still try to install poetry from the package repositories whenpoetry-depswas declared as a dependency
Documentation:
- Add some missing references in the :doc:`Poetry plugin</common/craft-parts/reference/plugins/poetry_plugin>` and :doc:`Python plugin</common/craft-parts/reference/plugins/python_plugin>` pages.
- Fix a broken link in the :doc:`Tutorial examples</tutorials/examples>`.
For a complete list of commits, check out the 2.1.3 release on GitHub.
- Replace the dependency on requests-unixsocket with requests-unixsocket2
Bug Fixes:
- Fixed an issue where the
pythonplugin would fail to build if the part had no Python scripts.
Documentation:
- Update the :doc:`Rust plugin</common/craft-parts/reference/plugins/rust_plugin>` doc with recent changes to the Rust toolchain.
For a complete list of commits, check out the 2.1.2 release on GitHub.
- Replace requests-unixsocket with requests-unixsocket2
- Bump minimum Python version to 3.8 (required for requests-unixsocket2)
For a complete list of commits, check out the 1.25.3 release on GitHub.
- This release brings the bug fix from
1.33.1into the2.1.xseries.
For a complete list of commits, check out the 2.1.1 release on GitHub.
- Fix npm plugin to be stateless, allowing lifecycle steps to be executed in separate runs.
For a complete list of commits, check out the 1.33.1 release on GitHub.
New features:
- Add a :doc:`Poetry plugin</common/craft-parts/reference/plugins/poetry_plugin>` for Python projects that use the Poetry build system.
- Add a new error message when getting a directory for a non-existent partition.
Bug fixes:
- Fix a regression where numeric part properties could not be parsed.
- Fix a bug where stage-packages tracking would fail when files were organized into a non-default partition.
For a complete list of commits, check out the 2.1.0 release on GitHub.
Breaking changes:
- Set minimum Python version to 3.10
- Plugin models are restructured
- Migrate to Pydantic 2
- API uses Debian architecture names rather than Python platform names
New features:
- Plugin models can use Pydantic JSON schema export
- Partition names can include hyphens
Bug fixes:
- Xattrs raise FileNotFoundError when appropriate
- Partition names are more strictly checked.
For a complete list of commits, check out the 2.0.0 release on GitHub.
- Allow numbers in partitions, partition namespaces, and namespaced partitions.
- Add documentation for chisel and the overlay step
- Improve README onboarding
- Add doc slugs for errors during build, linking to plugin docs
- Add docs for partitions
- Add support for 7z sources
- Add reference documentation for the qmake plugin
- Improve logging output when fetching packages
- Improve errors for when sources cannot be fetched
- Fix a behavior where apt packages would be fetched when the user was not a superuser
- Fix list of ignored packages in core24 bases when fetching stage-packages
- Refactor npm plugin - npm-node-version option now accepts a NVM-style version identifier - Move Node.js download to pull commands - Verify SHA256 checksums after node.js download - Use new-style npm-install commands if npm version is newer than 8.x - Set NODE_ENV to production by default
- New and improved documentation - Add go plugin reference - Add nil plugin reference - Add make plugin reference - Add autotools plugin reference - Add cmake plugin reference - Add scons plugin reference - Add ant plugin reference - Add dotnet plugin reference - Add meson plugin reference - Documentation fixes
- Fix list of ignored packages in core24 bases when fetching stage-packages
- Add support for armv8l
- Add support for unregistering plugins
- Add maven plugin documentation
- Add documentation linters
- Rework bundling of shared docs
- Fix organize directories
- Add namespaced partitions support
- Add base layer data to ProjectInfo
- Add qmake plugin
- Add proxy support to ant plugin
- Use rustup snap in the Rust plugin
- Update documentation
- Fix default setting in aliased part fields
- Fix proxy setting in ant plugin
- Fix chisel slice normalization
- Address sphinx warnings
- Documentation updates
- Build system, requirements and CI updates
- Misc unit test fixes and updates
- Fix compiler plugin priming in Rust plugin
- Fix redundant channel override in Rust plugin
- Fix validation of part dependency names
- Fix expansion of environment variables
- Remove direct dependency to python-apt tarball
- Add rustup support to the Rust plugin
- Add the ability to specify
no-default-featuresfor the Rust plugin - Add the ability to install virtual workspace crates for the Rust plugin
- Add the option to enable LTO for the Rust plugin
- Don't write log information in overlays (workaround for craft-cli issue #172)
- Add support to partitions
- Add lifecycle prologue log messages
- Add build-on/for architecture environment variables
- Add bootstrap parameters to autotools plugin
- Documentation updates
- Only load project variables in adopting part
- Improve interpreter version detection in the Python plugin
- Fix and improve documentation
- Pin Pydantic to version 1.x
- Add helper to query overlay use
- Improve architecture mapping
- Forward unmatched snap source parameters
- Build system updates
- Documentation updates
- Revert subdirectory changes in pull and build steps
- Add callback to explicitly list base packages
- Add callback to configure overlay package layer
- Add initial support for dnf-based distributions
- Add support for pyproject.toml projects in Python plugin
- Improve interpreter detection in Python plugin
- Fix subdirectories in pull and build steps
- Tox and packaging updates
- Documentation updates
- Replace requests-unixsocket with requests-unixsocket2
- Bump minimum Python version to 3.8 (required for requests-unixsocket2)
- Only load project variables in adopting part
- Revert subdirectory changes in pull and build steps
- Revert pyproject.toml change (breaks semantic versioning)
- Backport support for pyproject.toml projects from 1.20.0
- Backport pull and build steps subdirectories from 1.20.0
- Fix plugin properties state in planning phase
- Fix ignored files exclusion in local source
- Allow git+ssh in git source type
- Loosen pydantic dependency
- Initial support for offline plugins
- Initial support for yum and CentOS
- Introduce feature selection, make overlay support optional
- Check if plugin-specific properties are dirty when computing lifecycle actions
- Add source handler for rpm packages
- Ignore unreadable files in /etc/apt
- Documentation updates
- OsRelease code cleanup
- Make
chroot /dev mountprivate
- Fix pip path in Python plugin
- Refactor Python plugin for subclassing
- Fix ignore patterns in local sources
- Add SCons plugin
- Add Ant plugin
- Add Maven plugin
- Fix lifecycle work directory cleaning
- Make stage package tracking optional
- Improve chisel error handling
- Improve missing local source error message
- Documentation fixes and updates
- Allow plus symbol in git url scheme
- Fix go plugin mod download in jammy
- Remove hard-coded ubuntu version in chisel call
- Add plain file source handler
- Pass build attributes and state to post-step callback
- Add file permission setting
- Take permissions into account when checking file collisions
- Only refresh overlay packages if necessary
- Generate separate environment setup file
- Make changed file list available to plugins
- Fix device nodes in overlay base image
- Add support to chisel slices
- Add
go-generatekey to the go plugin
- Fix PyPI release package
- Fix stage/prime filter combination
- Add API call to validate parts
- Add go generate support to go plugin
- Add support for deb sources
- Add source download request timeout
- Remove unnecessary overlay whiteout files
- Revert changes to install prefix in cmake plugin to prevent stable base incompatibilities
- Set install prefix in the cmake plugin
- Fix prefix path in the cmake plugin
- Add API call to list registered plugins
- Fix git source format error when cloning using depth
- Use host architecture when installing stage packages
- Change staged snap pkg-config prefix normalization to be predictable regardless of the path used for destructive mode packing
- Add plugin class method to check for out of source builds
- Normalize file copy functions signatures
- Fix pkg-config prefix in staged snaps
- Prevent wildcard symbol conflict in stage and prime filters
- Apt installer changed to collect installed package versions after the installation
- Fix execution of empty scriptlets
- List primed stage packages only if deb stage packages are defined
- Add list of primed stage packages to prime state
- Add lifecycle manager methods to obtain pull state assets and the list of primed stage packages
- Fix git repository updates
- Fix stage packages removal on build update
- Fix stdout leak during snap package installation
- Fix plugin validation dependencies
- Add support for application-defined environment variables
- Add package filter for core22
- Refresh packages list before installing packages
- Expand global variables in parts definition
- Adjust prologue/epilogue callback parameters
- Make plugin options available in plugin environment validator
- Fix readthedocs documentation generation
- Fix stage package symlink normalization
- Add zip source handler
- Clean up source provisioning
- Fix project variable setting for skipped parts
- Fix extra build snaps installation
- Add rust plugin
- Add npm plugin
- Add project name argument to LifecycleManager and set
CRAFT_PROJECT_NAME - Export symbols needed by application-defined plugins
- Refactor plugin environment validation
- Fix craftctl error handling
- Fix long recursions in dirty step verification
- Fix project variable adoption scope
- Add cmake plugin
- Mount overlays using fuse-overlayfs
- Send execution output to user-specified streams
- Update craftctl commands
- Update step execution environment variables
- Add meson plugin
- Adjustments in git source tests
- Make git submodules fetching configurable
- Fix source type specification
- Fix testing in Python 3.10
- Address issues found by linters
- Do not refresh already installed snaps
- Fix URL in setup.py
- Fix pydantic validation error handling
- Unpin pydantic and pydantic-yaml dependency versions
- Unpin pylint dependency version
- Remove unused requirements files
- Pin pydantic and pydantic-yaml dependency versions
- Add support to overlay step
- Use bash as step scriptlet interpreter
- Add plugin environment validation
- Add go plugin
- Add dotnet plugin
- Declare additional public API names
- Add git source handler
- Properly declare public API names
- Allow non-snap applications running on non-apt systems to invoke parts processing on build providers
- Use Bash as script interpreter instead of /bin/sh to stay compatible with Snapcraft V2 plugins
- Fix local source updates causing removal of build artifacts and new
files created in
override-pull
- Fix plugin properties test
- Use local copy of mutable source handler ignore patterns
- Use host state for apt cache and remove stage package refresh
- Add information to parts error in CLI tool
- Change CLI tool
--debugoption to--traceto be consistent with craft tools
- Initial release