Portage-2.2 preview

So, while Zac has been keeping everyone distracted with new portage-2.1 releases over the last months I’ve been mostly working on the new features in trunk, which will become portage-2.2, and I think it’s time to give a short preview about things to expect as we plan to release it before the end of the year, so the feature set probably won’t change much from now on:

  • The most important new things will be package sets. Sounds boring at first, I know, but due to a flexible framework they allow us (and you) to do interesting things, like eventually replacing glsa-check and revdep-rebuild (while the security set is pretty much identical to what glsa-check did, the set for rebuilding packages with broken linkage is very experimental, incomplete and not enabled by default yet). Or simply update or remerge all packages in a specific category. And that’s not even touching the power of the CommandOutputSet class 😉
  • Support for GLEP 42 news, as an alternative for package maintainers to the elog framework
  • Visibility filtering based on licenses, aka ACCEPT_LICENSE, which allows you for example to build a RMS-approved system and will render the interactive license prompts currently found in some packages obsolete
  • A new FEATURES flag to keep libraries that are still used on a soname change, including a simply way to rebuild all packages using the old library (using another package set). A bit too late for the expat issue, but hopefully it helps to prevent future incidents of that kind
  • And of course all the things that already appeared in portage-2.1.3

But no light without darkness, there will be some important changes requiring your attention:

  • While not set in stone yet, the behavior of system and world will likely change to match that of other package set and single packages. Currently emerge world is the same as emerge --noreplace world, meaning that installed packages aren’t rebuilt (unlike emerge $foo which will rebuild $foo). With 2.2 emerge world is likely going to be the same as emerge $(< /var/lib/portage/world), if you want the old behavior you’ll have to use –noreplace. That change also has other benefits beyond consistency, like removing the restriction that world/system could not be combined with other packages on the commandline.
  • “world” will likely no longer include “system”, if you want to update both you’ll have to specify both
  • Due to a change in the namespace many portage related tools will require an update or generate a lot of deprecation warnings.

As said, it’s just a preview, and some things are still work in progress, but it should give you a first impression what portage-2.2 will be about. I think we might create the first test releases in late November, but that’s no promise. Though if you want to test it you don’t have to wait that long, just install subversion and read http://www.gentoo.org/proj/en/portage/doc/testing.xml (that’s especially recommended for maintainers of portage related tools), just don’t expect everything to work perfectly yet.