Rough TODO

  • rip out use.* code from pkgcheck.addons.UseAddon.__init__, and generalize it into pkgcore.ebuild.repository

  • not hugely important, but… make a cpython version of SlottedDict from pkgcore.util.obj; 3% reduction for full repo walk, thus not a real huge concern atm.

  • userpriv for pebuild misbehaves..

  • http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/491285 check into, probably better then my crufty itersort; need to see how well heapqu’s nlargest pop behaves (looks funky)

  • look into converting MULTILIB_STRICT* crap over to a trigger

  • install-sources trigger

  • recreate verify-rdepends also

  • observer objects for reporting back events from merging/unmerging cpython ‘tee’ is needed, contact harring for details. basic form of it is in now, but need something more powerful for parallelization elog is bound to this also

  • Possibly convert to cpython:

    • flat_hash.database._parse_data

    • metadata.database._parse_data

    • posixpath (os.path)

  • get the tree clean of direct /var/db/pkg access

  • vdb2 format (ask harring for details).

  • pkgcore.fs.ops.merge_contents; doesn’t rewrite the contents set when a file it’s merging is relying on symlinked directories for the full path; eg, /usr/share/X11/xkb/compiled -> /var/blah, it records the former instead of recording the true absolute path.

  • pmerge mods; [ –skip-set SET ] , [ –skip atom ], use similar restriction to –replace to prefer vdb for matching atoms

  • refactor pkgcore.ebuild.cpv.ver_cmp usage to avoid full cpv parsing when _cpv is in use; ‘nuff said, look in pkgcore.ebuild.cpv.cpy_ver_cmp

  • modify repository.prototype.tree.match to take an optional comparison

    reasoning being that if we’re just going to do a max, pass in the max so it has the option of doing the initial sorting without passing through visibility filters (which will trigger metadata lookups)

  • ‘app bundles’. Reliant on serious overhauling of deps to do ‘locked deps’, but think of it as rpath based app stacks, a full apache stack compiled to run from /opt/blah for example.

  • pkgcore.ebuild.gpgtree

    derivative of pkgcore.ebuild.ebuild_repository, this overloads ebuild_factory and eclass_cache so that gpg checks are done. This requires some hackery, partially dependent on config.central changes (see above). Need a way to specify the trust ring to use, ‘severity’ level (different class targets works for me). Anyone who implements this deserves massive cookies.

  • pkgcore.ebuild.gpgprofile: Same as above.

  • reintroduce locking of certain high level components using read/write; mainly, use it as a way to block sync’ing a repo that’s being used to build, lock the vdb for updates, etc.

  • preserve xattrs when merging files to properly support hardened profiles

  • support standard emerge.log output so tools such as qlop work properly

  • add FEATURES=parallel-fetch support for downloading distfiles in the background while building pkgs, possibly extend to support parallel downloads

  • apply repo masks to related binpkgs (or handle masks somehow)

  • remove deprecated PROVIDE and old style virtuals handling

  • add argparse support for checking the inputted phase name with pebuild to make sure it exists, currently nonexistent input cause unhandled exceptions

  • support repos.conf (SYNC is now deprecated)

  • make profile defaults (LDFLAGS) override global settings from /usr/share/portage/config/make.globals or similar then apply user settings on top, currently LDFLAGS is explicitly set to an empty string in make.globals but the profile settings aren’t overriding that

  • support /etc/portage/mirrors

  • support ACCEPT_PROPERTIES and /etc/portage/package.properties

  • support ACCEPT_RESTRICT and /etc/portage/package.accept_restrict

  • support pmerge –info (emerge –info workalike), requires support for info_vars and info_pkgs files from profiles