apkg news¶
apkg 1.0.0¶
Released 2025-11-25
1.0.0 release notes π¶
After 5 years of development, apkg finally reached version 1.0.0 π₯³
This journey resulted in:
- 500 git commits (excluding merge commits)
- 202 merge requests
- 92 resolved issues
- 14 000 total lines of code
- 8 419 lines of source code (excluding blank lines)
- 2 779 lines of documentation (excluding blank lines)
95 % of apkg's code was authored by me and I'd like to extend my sincere thanks to all contributors and users for their bug reports, pull requests, reviews, suggestions, and all other contributions, which made apkg significantly better.
apkg now supports all Python versions from 3.6 to 3.14. In other words, it's able to run in most Python environments from past 8 years - a feat that cost considerable amount of effort and sanity.
apkg supports major linux distros and package managers including but not limited to all actively supported releases of Debian, Ubuntu, Fedora, Enterprise Linux, openSUSE, Arch, and NixOS. Adding support for new distro is reasonably straightforward.
I've channeled my passion and two decades of packaging experience into apkg and I believe it now serves its intended purpose really well.
apkg is now considered stable and ready for production use π
-- Jakub RuΕΎiΔka, the original apkg author
apkg 0.7.1¶
Released 2025-10-23
Improvements¶
- Python 3.14 is now supported and tested in CI
apkg 0.7.0¶
Released 2025-09-22
Compat Level 6 News¶
- flexible YAML output for
make_archive_script,
version_script,
make-archive, and
get-archive
- make_archive_script can specify
explicit
version - make_archive_script can produce
additional files (
components) - backward compatibility with previous behavior is retained for
compat< 6
- make_archive_script can specify
explicit
- new
-P/--path-formatglobal option to control howapkgprints output paths SOURCE_DATE_EPOCHsupport innowtemplate variable for build reproducibility
Fixes¶
- adapt apkg build-dep and apkg test-dep
for incompatible changes in Click 8.3.0 which resulted in
--listsuddenly being default (?!)
apkg 0.6.1¶
Released 2025-06-20
Fixes¶
- reintroduce
tomldep for older systems with Python < 3.11
apkg 0.6.0¶
Released 2025-06-19
Compat Level 5 News¶
- new apkg lint command to invoke native distro linters (
lintian,rpmlint) - improved apkg system-setup command including new
--lintoption to install linting deps - new apkg info apkg-deps command to show dependencies colored for easy debugging
- new distro_like template variable module for detecting similar distros
rpm: evaluate RPM macros usingrpmspecif availableapkgnow works with.specfiles using complex macros including macros inName
- template variables are now always passed when rendering templates
- some
pkgstylefunctions previously rendered templates directly without template variables which lead to errors in special cases
- some
apkg.templatevars.debseriesmodule was renamed todeb_seriesfor consistency- old
debseriesmodule is still supported for the time being, it emits a warning when used
- old
Improvements¶
- Python 3.13 is now supported and tested in CI
- new distros are now supported and tested in CI:
- Debian 13 Trixie
- Ubuntu 25.04 Plucky Puffin and 24.10 Oricular Oriole
- Enterprise Linux 10: RHEL 10, AlmaLinux 10, Rocky 10
- Fedora 42 and 41
- lighten dependencies:
- drop
hatchlingbuild dep in favor ofsetuptools - drop
dunamaibuild dep in favor of custom solution
- drop
- improved handling of unreleased / versionless distros, including Debian testing, unstable, experimental
- new
util.tomlmodule for robust runtime TOML libs selection- supports
tomllib(standard library since Python 3.11),tomli,toml,tomlkitmodules for TOML loading - supports
tomli_w,toml,tomlkitfor TOML dumping
- supports
- improved logging of function names when using
-L verboseand-L debug - big packaging guide upgrade
- new fancy Mermaid diagrams
- updated workflow with
install,test,lintcommands - new
added_in_versionmacro to provide consistent version / compat information
apkg 0.5.1¶
Released 2024-06-24
Fixes¶
- update
requires-pythonto>=3.6to enable installation on old systems - small docs fixes
apkg 0.5.0¶
Released 2024-04-03
Compat Level 4 News¶
- new custom template variables support
- new template.variables config section
- extend
apkg statuscommand with template variables sources status - new
apkg info template-variablescommand- show all template variables by default
- show custom variables per source with
--custom
debpkgstyle: include*.changesfiles insrcpkg/buildoutput- many debian tools and workflows require
*.changesfiles - comply
- many debian tools and workflows require
- fix incorrect parsing of single compnent versions (
1,20240101, etc.)
Improvements¶
- updated and overhauled installation docs
- new platform support docs with detailed information about Python versions and distros supported by apkg
apkg 0.4.2¶
Released 2023-08-08
Fixes¶
- re-introduce
cached_propertyrequirement to support Python <= 3.7
apkg 0.4.1¶
Released 2023-07-19
Improvements¶
- use modern python packaging through
pyproject.toml- use
hatchlingfor build - use PEP440 compatible versioning
- support legacy
setuptoolsfor backward compat - improve archive and sdist generation
- improve Debian packaging (pyproject build on Debian 12 and newer)
- rename distro package to just
apkg - support both
blessed(maintained fork) andblessingsfor colors
- use
archpkgstyle improvements:- support Manjaro
- only install
--neededdistro packages - require base-devel for
apkg system-setup
debpkgstyle improvements:- support Pop_OS! (Ubuntu derivative)
- only require build-essential (not devscripts) on
apkg system-setup - sort
SUPPORTED_DISTROSalphabetically
Fixes¶
- fix distro alias ordering during template selection
- handle exceptions introduced by upstream
packaging.versionchanges
apkg 0.4.0¶
Released 2022-07-18
Compat Level 3 News¶
- new apkg test packaging tests runner based on Debian
autopkgtest - new apkg info command with subcommands to display various info:
apkg info cache: show apkg cache contentsapkg info config: show apkg project configurationapkg info distro: show current distro informationapkg info distro-aliases: list available distro aliasesapkg info pkgstyles: list available packaging stylesapkg info upstream-version: show detected project upstream version
- new apkg clean command to clean output dir
pkg/apkg clean: remove apkg output directorypkg/apkg clean --cache: remove apkg cache filepkg/.cache.jsonapkg clean --hard: HARD RESET project from VCS and remove extra files
- new
include_rawtag available from templates to include files without templating - support for AlmaLinux in
rpmpkgstyle (almalinux)
Improvements¶
- command runner was refactored using
asynciorun()canteecommand output - it's finally possible to both read and displaystdoutat the same time resulting in better real-time/log output and debugging when invoking external commandsrun()logging was fixed and improved, use-L verboseto see all commands run in the background
- cache was refactored to be more flexible and reliable in edge cases
- cache false positives should no longer appear
- individual cache targets can be configured indpendently
- only source cache is disabled when VCS isn't available
- new cache docs as well as updated other docs with useful info and links
- new minimal example project
examples/minimal-no-git
Fixes¶
- fix package manager detection in
rpmpkgstyle - parse
makedependsas well asdependsinarchpkgstyle - fix
--archive/--upstreamoperation inbuild-dep - don't install 0 build deps
- use temporary dir for archive unpack (more reliable)
apkg 0.3.1¶
Released 2021-11-04
Fixes¶
- follow symlinks when rendering templates
apkg 0.3.0¶
Released 2021-11-03
Compat Level 2 News¶
- better distro handling
- distro rules to specify particular distro version range
- distro aliases to conveniently refer to custom distro sets
- magic
distrovariable in templates for dynamic templating
- new flexible template selection
- new config options to control special files in templates using patterns:
- template.ignore_files to ignore/skip files
- template.plain_copy_files to copy files without templating
- support Jinja's include tag
- new
nowtemplate variable available indebandrpmpkgstyles (for changelog dates)
Improvements¶
- new
apkg compatcommand and compat docs apkgwill refuse to work with projects with newer compat level- new minimal templating example
examples/templates - sort
apkg srcpkgoutput for determinism - update and extend docs (new pages: compat, distro, users)
Fixes¶
- fix false positive cache hits in special cases
- CI fixes and improvements
apkg 0.2.0¶
Released 2021-07-13
Improvements¶
- support Rocky Linux through
rpmpkgstyle - support Nix through new
nixpkgstyle - align
apkg installwith other commands and extend functionality - extend CI to test
apkg installon supported distros - extend CI with new integration tests against apkg itself to ensure full apkg
pipeline (including
install) works on supported distros - improve apkg archive creation script
make-archive.sh - remove problematic
htmllistparsedependency in favor of usingbeautifulsoup4directly
Fixes¶
- handle unset
$PWDwhen running external commands - fail on unexpected input files in
srcpkg - fix docs build
Incompatible Changes β ¶
apkg installnow works on project source by default like other commands (srcpkg,build). Old behavior of installing custom packages is available through-C/--custom-pkgsoption.-i/--install-depoption ofapkg buildwas renamed to-b/--build-depto remove ambiguity. Old alias still works but it's deprecated an will be removed in future versions.
apkg 0.1.1¶
Released 2021-06-09
- first apkg beta release