pkgcore 0.12.41__tar.gz → 0.12.42__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pkgcore-0.12.41 → pkgcore-0.12.42}/NEWS.rst +51 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/PKG-INFO +4 -2
- {pkgcore-0.12.41 → pkgcore-0.12.42}/build/sphinx/man/patom.1 +1 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/build/sphinx/man/pclean.1 +1 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/build/sphinx/man/pclonecache.1 +1 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/build/sphinx/man/pconfig.1 +1 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/build/sphinx/man/pebuild.1 +1 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/build/sphinx/man/pinspect.1 +1 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/build/sphinx/man/pmaint.1 +11 -3
- {pkgcore-0.12.41 → pkgcore-0.12.42}/build/sphinx/man/pmerge.1 +1 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/build/sphinx/man/pquery.1 +1 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/pyproject.toml +4 -2
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/__init__.py +2 -2
- pkgcore-0.12.42/src/pkgcore/_verinfo.py +1 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/eclass.py +108 -49
- pkgcore-0.12.42/src/pkgcore/landlock.py +147 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/resolver/plan.py +1 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/pmaint.py +34 -3
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/util/rst2devbook.py +9 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_eclass.py +123 -6
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/resolver/test_plan.py +22 -1
- pkgcore-0.12.42/tests/test_landlock.py +189 -0
- pkgcore-0.12.41/src/pkgcore/_verinfo.py +0 -1
- {pkgcore-0.12.41 → pkgcore-0.12.42}/.coveragerc +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/LICENSE +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/Makefile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/README.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/bin/patom +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/bin/pclean +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/bin/pclonecache +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/bin/pconfig +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/bin/pebuild +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/bin/pinspect +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/bin/pmaint +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/bin/pmerge +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/bin/pquery +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/0/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/0/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/0/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/1/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/1/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/1/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/2/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/2/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/2/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/3/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/3/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/3/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/4/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/4/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/4/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/5/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/5/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/5/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/6/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/6/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/6/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/7/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/7/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/7/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/8/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/8/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/8/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/9/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/9/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/cmds/9/internal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/0 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/1 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/2 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/3 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/4 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/5 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/6 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/7 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/8 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/9 +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/funcs/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/0/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/1/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/src_configure +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/src_prepare +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/2/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/src_configure +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/src_prepare +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/3/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/pkg_pretend +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/src_configure +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/src_prepare +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/4/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/pkg_pretend +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/src_configure +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/src_prepare +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/5/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/pkg_pretend +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/src_configure +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/src_prepare +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/6/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/pkg_pretend +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/src_configure +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/src_prepare +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/7/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/pkg_pretend +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/src_configure +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/src_prepare +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/8/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/global +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/pkg_config +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/pkg_info +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/pkg_nofetch +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/pkg_postinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/pkg_postrm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/pkg_preinst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/pkg_prerm +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/pkg_pretend +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/pkg_setup +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/src_compile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/src_configure +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/src_install +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/src_prepare +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/src_test +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/.generated/libs/9/src_unpack +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/Makefile +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/0/global.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/0/phase.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/0/src_compile.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/0/src_install.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/1/global.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/2/global.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/2/phase.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/2/pkg_nofetch.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/2/src_compile.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/2/src_configure.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/2/src_prepare.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/2/src_test.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/2/src_unpack.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/4/global.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/4/phase.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/4/src_configure.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/4/src_install.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/5/global.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/5/phase.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/5/src_configure.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/6/global.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/6/phase.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/6/src_configure.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/6/src_install.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/6/src_prepare.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/7/global.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/7/src_configure.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/7/src_install.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/8/global.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/8/phase.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/8/src_configure.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/9/global.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/9/phase.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/common.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/eapi/depend.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/ebuild-daemon-lib.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/ebuild-daemon.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/ebuild-default-functions.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/ebuild-env-utils.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/ebuild.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/exit-handling.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/generate_eapi_cmd_list +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/generate_eapi_func_list +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/generate_eapi_lib +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/generate_global_func_list +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/dosed +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/emake +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/pkg_postinst/fowners +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/pkg_postinst/fperms +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/pkg_postinst/keepdir +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/pkg_preinst/dodir +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/pkg_preinst/fowners +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/pkg_preinst/fperms +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/pkg_preinst/keepdir +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dobin +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/doconfd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dodir +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dodoc +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/doenvd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/doexe +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dohard +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dohtml +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/doinfo +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/doinitd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/doins +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dolib +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dolib.a +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dolib.so +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/doman +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/domo +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dosbin +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/dosym +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/fowners +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/fperms +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/keepdir +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newbin +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newconfd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newdoc +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newenvd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newexe +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newinitd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newins +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newlib.a +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newlib.so +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newman +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/0/src_install/newsbin +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/4/dosed +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/4/src_install/dohard +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/5/src_install/doheader +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/5/src_install/newheader +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/6/src_install/dohtml +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/7/nonfatal +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/7/src_install/dohtml +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/7/src_install/dolib +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/8/src_install/doconfd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/8/src_install/doenvd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/8/src_install/doheader +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/8/src_install/doinitd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/9/pkg_postinst/ver_replacing +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/9/pkg_preinst/ver_replacing +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/9/pkg_pretend/ver_replacing +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/9/pkg_setup/ver_replacing +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/9/src_install/domo +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/common/pkgcore-ebuild-helper +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/common/pkgcore-ipc-helper +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/common/prepalldocs +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/common/prepallstrip +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/common/prepinfo +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/common/prepman +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/common/prepstrip +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/internals/_generic_new +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/internals/banned +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/internals/deprecated +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/internals/helper-lib.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/helpers/internals/prepall +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/ebd/isolated-functions.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/shell/bash/pkgcore.bash +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/shell/bin/pkgcore-sh-helper +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/shell/bin/psite +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/shell/pkgcore.sh +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/lib/pkgcore/shell/zsh/pkgcore.zsh +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/bash-completion/completions/pquery +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/pkgcore/config/make.globals +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/pkgcore/config/repos.conf +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/pkgcore/stubconfig/repos.conf +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/pkgcore/stubrepo/metadata/layout.conf +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/pkgcore/stubrepo/profiles/arch.list +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/pkgcore/stubrepo/profiles/default/make.defaults +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/pkgcore/stubrepo/profiles/profiles.desc +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/pkgcore/stubrepo/profiles/repo_name +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/pkgcore/xml-schema/metadata.xsd +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/data/share/zsh/site-functions/_pkgcore +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/api.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/build.sh +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/conf.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/index.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man/patom.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man/pclean.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man/pclonecache.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man/pconfig.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man/pebuild.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man/pinspect.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man/pmaint.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man/pmerge.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man/pquery.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/man.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/doc/news.rst +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/examples/changed_use.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/examples/destable_arch_bugs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/examples/identify-installed-non-split-debug-pkgs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/examples/pkg_info.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/examples/repo_list.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/examples/report_pkg_changes.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/examples/set_maintainers.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/examples/verify_at_done.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/py_build.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/_internal.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/binpkg/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/binpkg/remote.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/binpkg/repo_ops.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/binpkg/repository.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/binpkg/xpak.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/apikey.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/bug.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/changes.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/client.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/enums.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/errors.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/pkglist.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/query.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/testing.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/transport.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/bugzilla/wire.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/cache/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/cache/errors.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/cache/flat_hash.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/cache/fs_template.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/config/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/config/basics.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/config/central.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/config/cparser.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/config/domain.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/config/errors.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/config/hint.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/const.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/atom.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/conditionals.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/const.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/cpv.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/digest.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/domain.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/eapi.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/ebd.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/ebd_ipc.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/ebuild_built.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/ebuild_src.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/eclass_cache.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/errors.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/filter_env.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/formatter.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/inspect_profile.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/keywording.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/misc.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/pkg_updates.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/portage_conf.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/portageq.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/processor.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/profiles.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/repo_objs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/repository.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/resolver.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/restricts.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/ebuild/triggers.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/exceptions.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fetch/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fetch/base.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fetch/custom.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fetch/errors.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fs/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fs/contents.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fs/fs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fs/livefs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fs/ops.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/fs/tar.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/gpg.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/log.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/merge/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/merge/const.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/merge/engine.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/merge/errors.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/merge/triggers.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/operations/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/operations/domain.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/operations/format.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/operations/observer.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/operations/regen.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/operations/repo.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/os_data.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/package/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/package/base.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/package/conditionals.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/package/errors.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/package/metadata.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/package/mutated.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/package/virtual.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/pkgsets/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/pkgsets/filelist.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/pkgsets/glsa.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/pkgsets/installed.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/pkgsets/live_rebuild_set.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/pkgsets/system.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/pytest/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/pytest/plugin.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/configured.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/errors.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/filtered.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/misc.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/multiplex.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/prototype.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/syncable.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/util.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/virtual.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/repository/wrapper.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/resolver/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/resolver/choice_point.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/resolver/pigeonholes.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/resolver/state.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/resolver/util.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/restrictions/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/restrictions/boolean.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/restrictions/delegated.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/restrictions/packages.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/restrictions/required_use.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/restrictions/restriction.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/restrictions/util.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/restrictions/values.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/patom.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/pclean.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/pclonecache.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/pconfig.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/pebuild.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/pinspect.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/pmerge.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/scripts/pquery.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/spawn.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/base.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/bzr.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/cvs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/darcs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/git.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/git_svn.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/hg.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/http.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/rsync.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/sqfs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/svn.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/sync/tar.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/system/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/system/libtool.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/test/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/test/misc.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/test/scripts/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/test/scripts/helpers.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/util/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/util/commandline.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/util/file_type.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/util/packages.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/util/parserestrict.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/util/thread_pool.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/vdb/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/vdb/contents.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/vdb/ondisk.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/src/pkgcore/vdb/repo_ops.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/conftest.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/test_apikey.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/test_bug.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/test_changes.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/test_client.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/test_network.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/test_pkglist.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/test_query.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/test_testing.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/bugzilla/test_transport.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/cache/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/cache/test_base.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/cache/test_flat_hash.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/config/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/config/test_basics.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/config/test_central.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/config/test_cparser.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/config/test_init.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/conftest.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_atom.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_conditionals.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_cpv.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_digest.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_domain.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_eapi.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_ebd_ipc.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_ebuild_src.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_eclass_cache.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_filter_env.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_formatter.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_keywording.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_misc.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_portage_conf.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_processor.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_profiles.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_repo_objs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_repository.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/ebuild/test_triggers.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fetch/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fetch/test_base.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fetch/test_custom.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fetch/test_init.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fs/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fs/fs_util.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fs/test_contents.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fs/test_fs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fs/test_livefs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fs/test_ops.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/fs/test_tar.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/merge/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/merge/test_engine.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/merge/test_triggers.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/merge/util.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/package/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/package/test_base.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/package/test_metadata.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/package/test_mutated.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/pkgsets/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/pkgsets/test_filelist.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/pkgsets/test_glsa.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/pkgsets/test_installed.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/repository/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/repository/test_filtered.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/repository/test_multiplex.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/repository/test_prototype.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/resolver/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/resolver/test_choice_point.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/resolver/test_pigeonholes.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/restrictions/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/restrictions/test_boolean.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/restrictions/test_delegated.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/restrictions/test_packages.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/restrictions/test_required_use.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/restrictions/test_restriction.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/restrictions/test_util.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/restrictions/test_values.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/restrictions/utils.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/scripts/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/scripts/test_patom.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/scripts/test_pclean.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/scripts/test_pclonecache.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/scripts/test_pconfig.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/scripts/test_pebuild.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/scripts/test_pmaint.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/scripts/test_pmerge.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/scripts/test_pquery.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_base.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_bzr.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_cvs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_darcs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_git.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_git_svn.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_hg.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_rsync.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_sqfs.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_svn.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/sync/test_tar.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/test_gpg.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/test_slot_shadowing.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/test_source_hygene.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/util/__init__.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tests/util/test_parserestrict.py +0 -0
- {pkgcore-0.12.41 → pkgcore-0.12.42}/tox.ini +0 -0
|
@@ -2,6 +2,57 @@
|
|
|
2
2
|
Release Notes
|
|
3
3
|
=============
|
|
4
4
|
|
|
5
|
+
----------------------------
|
|
6
|
+
pkgcore 0.12.42 (2026-09-05)
|
|
7
|
+
----------------------------
|
|
8
|
+
|
|
9
|
+
Features
|
|
10
|
+
~~~~~~~~
|
|
11
|
+
|
|
12
|
+
- eclass: support the ``@DEAD`` tag, rendering a warning box in the eclass docs
|
|
13
|
+
(Arthur Zamarin)
|
|
14
|
+
|
|
15
|
+
- eclass: support the ``@BUGREPORTS:`` tag, replacing the default bug reporting
|
|
16
|
+
instructions (Arthur Zamarin)
|
|
17
|
+
|
|
18
|
+
- eclass: support the ``@USER_VARIABLE`` tag on ``@VARIABLE:`` blocks, and
|
|
19
|
+
label such function variables in the docs (Arthur Zamarin)
|
|
20
|
+
|
|
21
|
+
- ``pmaint eclass``: report docutils' complaints about eclassdoc through
|
|
22
|
+
pkgcore's logger, so they name the eclass and are silenced by ``-q``
|
|
23
|
+
(Arthur Zamarin)
|
|
24
|
+
|
|
25
|
+
- ``pkgcore.landlock``: new module confining a process to a set of writable
|
|
26
|
+
paths, with outgoing TCP denied, for use around ebuild sourcing. Requires
|
|
27
|
+
``py-landlock`` and a kernel with Landlock enabled (Arthur Zamarin)
|
|
28
|
+
|
|
29
|
+
- ``pmaint regen`` now confines itself while regenerating, so a sourced ebuild
|
|
30
|
+
can only write to the caches being regenerated. Disable it with
|
|
31
|
+
``--sandbox=n``, or require it with ``--sandbox=y`` (Arthur Zamarin)
|
|
32
|
+
|
|
33
|
+
Fixes
|
|
34
|
+
~~~~~
|
|
35
|
+
|
|
36
|
+
- resolver: fix ``pmerge`` dying with ``TypeError: It's prohibited to pass
|
|
37
|
+
unhashable arguments to the WeaklyCached class MutableContainmentRestriction``
|
|
38
|
+
before it could resolve anything (Arthur Zamarin)
|
|
39
|
+
|
|
40
|
+
- ``pmaint eclass -f man``: eclassdoc writes its own angle brackets around
|
|
41
|
+
maintainer and author addresses, and docutils wrapped the recognized address
|
|
42
|
+
in another pair, rendering ``<<gnu-emacs@gentoo.org>>`` (Arthur Zamarin, #479)
|
|
43
|
+
|
|
44
|
+
- ``pmaint eclass``: fix escaping of variable values (Arthur Zamarin)
|
|
45
|
+
|
|
46
|
+
- ``pmaint eclass -f man``: fix ``to_man()`` dropping the eclass blurb from the
|
|
47
|
+
object rather than from the document (Arthur Zamarin)
|
|
48
|
+
|
|
49
|
+
- eclass: don't use all-caps for variable types (Ulrich Müller, #481)
|
|
50
|
+
|
|
51
|
+
- eclass: fix regex for initial var="val" extraction (Ulrich Müller, #483)
|
|
52
|
+
|
|
53
|
+
- eclass: remove backwards-compat code for ``@ECLASS-VARIABLE`` (Ulrich Müller,
|
|
54
|
+
#484)
|
|
55
|
+
|
|
5
56
|
----------------------------
|
|
6
57
|
pkgcore 0.12.41 (2026-08-30)
|
|
7
58
|
----------------------------
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pkgcore
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.42
|
|
4
4
|
Summary: package managing framework
|
|
5
5
|
Author-email: Michał Górny <mgorny@gentoo.org>, Tim Harder <radhermit@gmail.com>, Brian Harring <ferringb@gmail.com>, Arthur Zamarin <arthurzam@gentoo.org>, Marien Zwart <marienz@gentoo.org>
|
|
6
6
|
Maintainer-email: Arthur Zamarin <arthurzam@gentoo.org>
|
|
@@ -11,12 +11,14 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.13
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.14
|
|
13
13
|
License-File: LICENSE
|
|
14
|
-
Requires-Dist: snakeoil >= 0.11.
|
|
14
|
+
Requires-Dist: snakeoil >= 0.11.6
|
|
15
15
|
Requires-Dist: lxml
|
|
16
|
+
Requires-Dist: py-landlock
|
|
16
17
|
Requires-Dist: sphinx ; extra == "doc"
|
|
17
18
|
Requires-Dist: ruff ; extra == "formatter"
|
|
18
19
|
Requires-Dist: pytest >= 9.0 ; extra == "test"
|
|
19
20
|
Requires-Dist: pytest-cov ; extra == "test"
|
|
21
|
+
Requires-Dist: docutils >= 0.18 ; extra == "test"
|
|
20
22
|
Project-URL: Documentation, https://pkgcore.github.io/pkgcore/
|
|
21
23
|
Project-URL: Homepage, https://github.com/pkgcore/pkgcore
|
|
22
24
|
Project-URL: Source, https://github.com/pkgcore/pkgcore
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "PATOM" "1" "
|
|
31
|
+
.TH "PATOM" "1" "Sep 05, 2026" "0.12.42" "pkgcore"
|
|
32
32
|
.SH NAME
|
|
33
33
|
patom \- Wrapper for running commandline scripts.
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "PCLEAN" "1" "
|
|
31
|
+
.TH "PCLEAN" "1" "Sep 05, 2026" "0.12.42" "pkgcore"
|
|
32
32
|
.SH NAME
|
|
33
33
|
pclean \- Wrapper for running commandline scripts.
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "PCLONECACHE" "1" "
|
|
31
|
+
.TH "PCLONECACHE" "1" "Sep 05, 2026" "0.12.42" "pkgcore"
|
|
32
32
|
.SH NAME
|
|
33
33
|
pclonecache \- Wrapper for running commandline scripts.
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "PCONFIG" "1" "
|
|
31
|
+
.TH "PCONFIG" "1" "Sep 05, 2026" "0.12.42" "pkgcore"
|
|
32
32
|
.SH NAME
|
|
33
33
|
pconfig \- Wrapper for running commandline scripts.
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "PEBUILD" "1" "
|
|
31
|
+
.TH "PEBUILD" "1" "Sep 05, 2026" "0.12.42" "pkgcore"
|
|
32
32
|
.SH NAME
|
|
33
33
|
pebuild \- Wrapper for running commandline scripts.
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "PINSPECT" "1" "
|
|
31
|
+
.TH "PINSPECT" "1" "Sep 05, 2026" "0.12.42" "pkgcore"
|
|
32
32
|
.SH NAME
|
|
33
33
|
pinspect \- Wrapper for running commandline scripts.
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "PMAINT" "1" "
|
|
31
|
+
.TH "PMAINT" "1" "Sep 05, 2026" "0.12.42" "pkgcore"
|
|
32
32
|
.SH NAME
|
|
33
33
|
pmaint \- Wrapper for running commandline scripts.
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -222,8 +222,8 @@ if a matching pkg already exists in the target, don\(aqt update it
|
|
|
222
222
|
.EX
|
|
223
223
|
pmaint regen [\-\-domain DOMAIN] [\-h] [\-\-debug] [\-q] [\-v]
|
|
224
224
|
[\-\-color BOOLEAN] [\-\-disable\-eclass\-caching] [\-t THREADS]
|
|
225
|
-
[\-\-force] [\-\-dir CACHE_DIR] [\-\-
|
|
226
|
-
[\-\-pkg\-desc\-index]
|
|
225
|
+
[\-\-force] [\-\-dir CACHE_DIR] [\-\-sandbox BOOLEAN] [\-\-rsync]
|
|
226
|
+
[\-\-use\-local\-desc] [\-\-pkg\-desc\-index]
|
|
227
227
|
[repo ...]
|
|
228
228
|
.EE
|
|
229
229
|
.UNINDENT
|
|
@@ -300,6 +300,14 @@ use separate directory to store repository caches
|
|
|
300
300
|
.UNINDENT
|
|
301
301
|
.INDENT 0.0
|
|
302
302
|
.TP
|
|
303
|
+
.B \-\-sandbox BOOLEAN
|
|
304
|
+
Confine the run with Landlock where the kernel supports it: writes are
|
|
305
|
+
limited to the caches being regenerated, and outgoing TCP is denied.
|
|
306
|
+
Enabled by default; \(aqy\(aq turns an unsupported kernel into an error
|
|
307
|
+
instead of continuing unconfined, and \(aqn\(aq disables it.
|
|
308
|
+
.UNINDENT
|
|
309
|
+
.INDENT 0.0
|
|
310
|
+
.TP
|
|
303
311
|
.B \-\-rsync
|
|
304
312
|
perform actions necessary for rsync repos (update metadata/timestamp.chk)
|
|
305
313
|
.UNINDENT
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "PMERGE" "1" "
|
|
31
|
+
.TH "PMERGE" "1" "Sep 05, 2026" "0.12.42" "pkgcore"
|
|
32
32
|
.SH NAME
|
|
33
33
|
pmerge \- Wrapper for running commandline scripts.
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "PQUERY" "1" "
|
|
31
|
+
.TH "PQUERY" "1" "Sep 05, 2026" "0.12.42" "pkgcore"
|
|
32
32
|
.SH NAME
|
|
33
33
|
pquery \- Wrapper for running commandline scripts.
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
requires = [
|
|
3
3
|
"flit_core >=3.8,<4",
|
|
4
|
-
"snakeoil >= 0.11.
|
|
4
|
+
"snakeoil >= 0.11.6",
|
|
5
5
|
]
|
|
6
6
|
build-backend = "py_build"
|
|
7
7
|
backend-path = ["."]
|
|
@@ -32,14 +32,16 @@ classifiers = [
|
|
|
32
32
|
dynamic = ["version"]
|
|
33
33
|
|
|
34
34
|
dependencies = [
|
|
35
|
-
"snakeoil >= 0.11.
|
|
35
|
+
"snakeoil >= 0.11.6",
|
|
36
36
|
"lxml",
|
|
37
|
+
"py-landlock",
|
|
37
38
|
]
|
|
38
39
|
|
|
39
40
|
[project.optional-dependencies]
|
|
40
41
|
test = [
|
|
41
42
|
"pytest >= 9.0",
|
|
42
43
|
"pytest-cov",
|
|
44
|
+
"docutils >= 0.18",
|
|
43
45
|
]
|
|
44
46
|
doc = [
|
|
45
47
|
"sphinx",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version_info={'rev': 'a91f7fd1dcc90999bec67269b4d63aea5c18d0d8', 'date': 'Sat Sep 05 12:37:16 2026', 'timestamp': 1788611836, 'tag': '0.12.42', 'commits': 0}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Eclass parsing support."""
|
|
2
2
|
|
|
3
|
+
import logging
|
|
3
4
|
import os
|
|
4
5
|
import re
|
|
5
6
|
import shlex
|
|
@@ -35,6 +36,11 @@ class AttrDict(ImmutableDict):
|
|
|
35
36
|
return sorted(dir(self._dict) + list(self._dict))
|
|
36
37
|
|
|
37
38
|
|
|
39
|
+
def _rst_escape(text):
|
|
40
|
+
"""Escape reST inline markup in text that should render verbatim."""
|
|
41
|
+
return re.sub(r"([*`_|\\])", r"\\\1", text)
|
|
42
|
+
|
|
43
|
+
|
|
38
44
|
def _rst_header(char, text, leading=False, newline=False):
|
|
39
45
|
"""Create rST header data from a given character and header text."""
|
|
40
46
|
sep = char * len(text)
|
|
@@ -46,6 +52,46 @@ def _rst_header(char, text, leading=False, newline=False):
|
|
|
46
52
|
return data
|
|
47
53
|
|
|
48
54
|
|
|
55
|
+
_DEAD_NOTICE = (
|
|
56
|
+
".. warning::",
|
|
57
|
+
"",
|
|
58
|
+
" This eclass is dead: it is slated for removal from the tree and must",
|
|
59
|
+
" not be inherited by any new ebuild or eclass.",
|
|
60
|
+
"",
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class _DocutilsWarnings:
|
|
65
|
+
"""Sink reporting docutils' diagnostics through pkgcore's logger."""
|
|
66
|
+
|
|
67
|
+
_levels: typing.ClassVar[dict] = {
|
|
68
|
+
"DEBUG": logging.DEBUG,
|
|
69
|
+
"INFO": logging.INFO,
|
|
70
|
+
"WARNING": logging.WARNING,
|
|
71
|
+
"ERROR": logging.ERROR,
|
|
72
|
+
"SEVERE": logging.CRITICAL,
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
def __init__(self):
|
|
76
|
+
self._diagnostic = re.compile(
|
|
77
|
+
r"(?P<source>.*?):(?P<line>\d*): \((?P<level>[A-Z]+)/\d\) (?P<msg>.*)",
|
|
78
|
+
re.DOTALL,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
def write(self, data):
|
|
82
|
+
"""Report one diagnostic; docutils writes each in a single call."""
|
|
83
|
+
if not (data := data.strip()):
|
|
84
|
+
return
|
|
85
|
+
if mo := self._diagnostic.fullmatch(data):
|
|
86
|
+
loc = mo.group("source")
|
|
87
|
+
if line := mo.group("line"):
|
|
88
|
+
loc += f", line {line}"
|
|
89
|
+
level = self._levels.get(mo.group("level"), logging.WARNING)
|
|
90
|
+
logger.log(level, f"{loc}: {mo.group('msg')}")
|
|
91
|
+
else:
|
|
92
|
+
logger.warning(data)
|
|
93
|
+
|
|
94
|
+
|
|
49
95
|
class ParseEclassDoc:
|
|
50
96
|
"""Generic block for eclass docs.
|
|
51
97
|
|
|
@@ -221,9 +267,11 @@ class EclassBlock(ParseEclassDoc):
|
|
|
221
267
|
"@VCSURL:": ("vcsurl", False, self._tag_inline_arg, None),
|
|
222
268
|
"@BLURB:": ("blurb", True, self._tag_inline_arg, None),
|
|
223
269
|
"@DEPRECATED:": ("deprecated", False, self._tag_deprecated, False),
|
|
270
|
+
"@DEAD": ("dead", False, self._tag_bool, False),
|
|
224
271
|
"@PROVIDES:": ("raw_provides", False, self._tag_inline_list, ()),
|
|
225
272
|
"@MAINTAINER:": ("maintainers", True, self._tag_multiline_args, None),
|
|
226
273
|
"@AUTHOR:": ("authors", False, self._tag_multiline_args, None),
|
|
274
|
+
"@BUGREPORTS:": ("bugreports", False, self._tag_multiline_str, None),
|
|
227
275
|
"@DESCRIPTION:": ("description", False, self._tag_multiline_str, None),
|
|
228
276
|
"@EXAMPLE:": ("example", False, self._tag_multiline_str, None),
|
|
229
277
|
"@SUPPORTED_EAPIS:": ("supported_eapis", False, self._supported_eapis, ()),
|
|
@@ -267,43 +315,14 @@ class EclassVarBlock(ParseEclassDoc):
|
|
|
267
315
|
def parse(self, lines, line_ind, next_line):
|
|
268
316
|
data = dict(super().parse(lines, line_ind, next_line))
|
|
269
317
|
var_name = data["name"]
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
if mo := re.search(rf": \${{{var_name}:?=(?P<value>.*)}}", next_line):
|
|
318
|
+
# Test : "${var=val}" first, since the second regex also matches it
|
|
319
|
+
if mo := re.search(rf": \"?\${{{var_name}:?=(?P<value>.*)}}", next_line):
|
|
273
320
|
data["default_value"] = mo.group("value")
|
|
321
|
+
elif mo := re.search(rf"{var_name}=(?P<value>.*)", next_line):
|
|
322
|
+
data["initial_value"] = mo.group("value")
|
|
274
323
|
return AttrDict(data)
|
|
275
324
|
|
|
276
325
|
|
|
277
|
-
# For backwards compatibility, can be removed after 2022-12-31
|
|
278
|
-
class EclassVarBlockCompat(ParseEclassDoc):
|
|
279
|
-
"""ECLASS-VARIABLE doc block."""
|
|
280
|
-
|
|
281
|
-
tag = "@ECLASS-VARIABLE:"
|
|
282
|
-
key = "variables"
|
|
283
|
-
default = True
|
|
284
|
-
|
|
285
|
-
def __init__(self):
|
|
286
|
-
tags = {
|
|
287
|
-
"@ECLASS-VARIABLE:": ("name", True, self._eclass_variable, None),
|
|
288
|
-
"@DEPRECATED:": ("deprecated", False, self._tag_deprecated, False),
|
|
289
|
-
"@DEFAULT_UNSET": ("default_unset", False, self._tag_bool, False),
|
|
290
|
-
"@INTERNAL": ("internal", False, self._tag_bool, False),
|
|
291
|
-
"@REQUIRED": ("required", False, self._tag_bool, False),
|
|
292
|
-
"@PRE_INHERIT": ("pre_inherit", False, self._tag_bool, False),
|
|
293
|
-
"@USER_VARIABLE": ("user_variable", False, self._tag_bool, False),
|
|
294
|
-
"@OUTPUT_VARIABLE": ("output_variable", False, self._tag_bool, False),
|
|
295
|
-
"@DESCRIPTION:": ("description", True, self._tag_multiline_str, None),
|
|
296
|
-
}
|
|
297
|
-
super().__init__(tags)
|
|
298
|
-
|
|
299
|
-
def _eclass_variable(self, block, tag, lineno):
|
|
300
|
-
"""Parse @ECLASS-VARIABLE tag."""
|
|
301
|
-
logger.warning(
|
|
302
|
-
f"{tag!r}, line {lineno}: deprecated, use '@ECLASS_VARIABLE' instead"
|
|
303
|
-
)
|
|
304
|
-
return self._tag_inline_arg(block, tag, lineno)
|
|
305
|
-
|
|
306
|
-
|
|
307
326
|
class EclassFuncBlock(ParseEclassDoc):
|
|
308
327
|
"""FUNCTION doc block."""
|
|
309
328
|
|
|
@@ -357,6 +376,7 @@ class EclassFuncVarBlock(ParseEclassDoc):
|
|
|
357
376
|
"@DEFAULT_UNSET": ("default_unset", False, self._tag_bool, False),
|
|
358
377
|
"@INTERNAL": ("internal", False, self._tag_bool, False),
|
|
359
378
|
"@REQUIRED": ("required", False, self._tag_bool, False),
|
|
379
|
+
"@USER_VARIABLE": ("user_variable", False, self._tag_bool, False),
|
|
360
380
|
"@DESCRIPTION:": ("description", True, self._tag_multiline_str, None),
|
|
361
381
|
}
|
|
362
382
|
super().__init__(tags)
|
|
@@ -370,7 +390,7 @@ _eclass_blocks_re = re.compile(
|
|
|
370
390
|
class EclassDoc(AttrDict):
|
|
371
391
|
"""Support parsing eclass docs for a given eclass path."""
|
|
372
392
|
|
|
373
|
-
ABI_VERSION =
|
|
393
|
+
ABI_VERSION = 6
|
|
374
394
|
|
|
375
395
|
def __init__(self, path, /, *, sourced=False, repo=None):
|
|
376
396
|
self.mtime = os.path.getmtime(path)
|
|
@@ -568,7 +588,7 @@ class EclassDoc(AttrDict):
|
|
|
568
588
|
|
|
569
589
|
return data
|
|
570
590
|
|
|
571
|
-
def to_rst(self):
|
|
591
|
+
def to_rst(self, *, name_section=True):
|
|
572
592
|
"""Convert eclassdoc object to reStructuredText."""
|
|
573
593
|
if self.name is None:
|
|
574
594
|
raise ValueError("eclass lacking doc support")
|
|
@@ -576,9 +596,12 @@ class EclassDoc(AttrDict):
|
|
|
576
596
|
_header_only = partial(_rst_header, newline=True)
|
|
577
597
|
|
|
578
598
|
rst = _header_only("=", self.name, leading=True)
|
|
579
|
-
if self.
|
|
599
|
+
if self.dead:
|
|
600
|
+
rst.extend(_rst_header("-", "Dead"))
|
|
601
|
+
rst.extend(_DEAD_NOTICE)
|
|
602
|
+
if name_section and self.blurb:
|
|
580
603
|
rst.extend(_rst_header("-", "Name"))
|
|
581
|
-
rst.append(f"``{self.name}``
|
|
604
|
+
rst.append(f"``{self.name}`` — {self.blurb}")
|
|
582
605
|
rst.append("")
|
|
583
606
|
|
|
584
607
|
if self.description:
|
|
@@ -639,17 +662,17 @@ class EclassDoc(AttrDict):
|
|
|
639
662
|
vartype = ""
|
|
640
663
|
var_value = ""
|
|
641
664
|
if default_value := getattr(var, "default_value", None):
|
|
642
|
-
var_value = f" ?= *{default_value}*"
|
|
665
|
+
var_value = f" ?= *{_rst_escape(default_value)}*"
|
|
643
666
|
elif initial_value := getattr(var, "initial_value", None):
|
|
644
|
-
var_value = f" = *{initial_value}*"
|
|
667
|
+
var_value = f" = *{_rst_escape(initial_value)}*"
|
|
645
668
|
if var.required:
|
|
646
|
-
vartype += " (
|
|
669
|
+
vartype += " (required)"
|
|
647
670
|
if var.pre_inherit:
|
|
648
|
-
vartype += " (
|
|
671
|
+
vartype += " (set before inherit)"
|
|
649
672
|
if var.user_variable:
|
|
650
|
-
vartype += " (
|
|
673
|
+
vartype += " (user variable)"
|
|
651
674
|
if var.output_variable:
|
|
652
|
-
vartype += " (
|
|
675
|
+
vartype += " (generated by eclass)"
|
|
653
676
|
rst.append(f"**{var.name}**{var_value}{vartype}")
|
|
654
677
|
if var.description:
|
|
655
678
|
rst.append(
|
|
@@ -661,7 +684,9 @@ class EclassDoc(AttrDict):
|
|
|
661
684
|
for var in external_func_vars:
|
|
662
685
|
vartype = ""
|
|
663
686
|
if var.required:
|
|
664
|
-
vartype += " (
|
|
687
|
+
vartype += " (required)"
|
|
688
|
+
if var.user_variable:
|
|
689
|
+
vartype += " (user variable)"
|
|
665
690
|
|
|
666
691
|
rst.append(f"**{var.name}**{vartype}")
|
|
667
692
|
if var.description:
|
|
@@ -680,12 +705,15 @@ class EclassDoc(AttrDict):
|
|
|
680
705
|
rst.append("")
|
|
681
706
|
|
|
682
707
|
rst.extend(_rst_header("-", "Reporting Bugs"))
|
|
683
|
-
|
|
708
|
+
if self.bugreports:
|
|
709
|
+
rst.append(self.bugreports)
|
|
710
|
+
else:
|
|
711
|
+
rst.append("Please report bugs via https://bugs.gentoo.org/")
|
|
684
712
|
rst.append("")
|
|
685
713
|
|
|
686
714
|
return "\n".join(rst)
|
|
687
715
|
|
|
688
|
-
def _to_docutils(self, writer):
|
|
716
|
+
def _to_docutils(self, writer, **kwargs):
|
|
689
717
|
"""Convert eclassdoc object using docutils."""
|
|
690
718
|
from docutils import nodes
|
|
691
719
|
from docutils.core import publish_string
|
|
@@ -716,11 +744,13 @@ class EclassDoc(AttrDict):
|
|
|
716
744
|
writer.get_transforms = lambda: writer_transforms() + [RenderProblematicAsText]
|
|
717
745
|
|
|
718
746
|
return publish_string(
|
|
719
|
-
source=self.to_rst(),
|
|
747
|
+
source=self.to_rst(**kwargs),
|
|
748
|
+
source_path=f"<{self.name}.rst>",
|
|
720
749
|
writer=writer,
|
|
721
750
|
settings_overrides={
|
|
722
751
|
"input_encoding": "unicode",
|
|
723
752
|
"output_encoding": "unicode",
|
|
753
|
+
"warning_stream": _DocutilsWarnings(),
|
|
724
754
|
},
|
|
725
755
|
)
|
|
726
756
|
|
|
@@ -750,10 +780,39 @@ class EclassDoc(AttrDict):
|
|
|
750
780
|
super().__init__(*args, **kwargs)
|
|
751
781
|
self._docinfo.update(man_data)
|
|
752
782
|
|
|
753
|
-
|
|
783
|
+
@staticmethod
|
|
784
|
+
def _is_bracketed(node):
|
|
785
|
+
"""Check if the surrounding text already wraps the node in ``<>``."""
|
|
786
|
+
siblings = node.parent.children
|
|
787
|
+
idx = siblings.index(node)
|
|
788
|
+
before = siblings[idx - 1].astext()[-1:] if idx else ""
|
|
789
|
+
after = (
|
|
790
|
+
siblings[idx + 1].astext()[:1] if idx + 1 < len(siblings) else ""
|
|
791
|
+
)
|
|
792
|
+
return before == "<" and after == ">"
|
|
793
|
+
|
|
794
|
+
def visit_reference(self, node):
|
|
795
|
+
# docutils pads bare URIs and emails with " <" and "> ", which
|
|
796
|
+
# duplicates the brackets eclass docs write around addresses
|
|
797
|
+
if "refuri" not in node:
|
|
798
|
+
return
|
|
799
|
+
if node["refuri"].endswith(node.astext()) and not self._is_bracketed(
|
|
800
|
+
node
|
|
801
|
+
):
|
|
802
|
+
self.body.append("<")
|
|
803
|
+
|
|
804
|
+
def depart_reference(self, node):
|
|
805
|
+
if "refuri" not in node:
|
|
806
|
+
return
|
|
807
|
+
if not node["refuri"].endswith(node.astext()):
|
|
808
|
+
self.body.append(f" <{node['refuri']}>")
|
|
809
|
+
elif not self._is_bracketed(node):
|
|
810
|
+
self.body.append(">")
|
|
811
|
+
|
|
812
|
+
# the man page header already holds the blurb, skip the Name section
|
|
754
813
|
writer = manpage.Writer()
|
|
755
814
|
writer.translator_class = Translator
|
|
756
|
-
return self._to_docutils(writer)
|
|
815
|
+
return self._to_docutils(writer, name_section=False)
|
|
757
816
|
|
|
758
817
|
def to_html(self):
|
|
759
818
|
"""Convert eclassdoc object to an HTML 5 document."""
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"""Self-confinement with the Linux Landlock LSM.
|
|
2
|
+
|
|
3
|
+
Generating metadata means sourcing ebuilds with bash, which runs code out of the
|
|
4
|
+
repo it came from with whatever access the invoking user has. :py:func:`confine`
|
|
5
|
+
takes away what that doesn't need: everything stays readable and executable, but
|
|
6
|
+
writes are denied outside the paths the caller names, as is outgoing TCP.
|
|
7
|
+
|
|
8
|
+
Restrictions cannot be lifted and are inherited by every thread and process
|
|
9
|
+
started afterwards, so only call this from a command's main function, in a
|
|
10
|
+
process meant to stay confined for the rest of its life. In particular, never
|
|
11
|
+
call it from library code whose caller carries on working once the ebuilds have
|
|
12
|
+
been sourced.
|
|
13
|
+
|
|
14
|
+
Landlock mediates TCP bind and connect only, leaving UDP, ICMP and unix sockets
|
|
15
|
+
untouched, so this is not an exfiltration boundary. Access through an already
|
|
16
|
+
open descriptor is unaffected as well, since rights are checked when a path is
|
|
17
|
+
resolved rather than on the descriptor.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
__all__ = ("confine", "writable_cache_paths")
|
|
21
|
+
|
|
22
|
+
import os
|
|
23
|
+
import tempfile
|
|
24
|
+
from collections.abc import Iterator
|
|
25
|
+
|
|
26
|
+
from .exceptions import PkgcoreUserException
|
|
27
|
+
from .log import logger
|
|
28
|
+
|
|
29
|
+
try:
|
|
30
|
+
from py_landlock import AccessFs, Landlock, LandlockError
|
|
31
|
+
|
|
32
|
+
# Rights granted on a writable directory and everything beneath it. Fifos
|
|
33
|
+
# and sockets are included for the sake of the temp dir: bash falls back to
|
|
34
|
+
# a named pipe for process substitution when built without /dev/fd support,
|
|
35
|
+
# and multiprocessing uses a unix socket for non-fork start methods.
|
|
36
|
+
_DIR_RW = (
|
|
37
|
+
AccessFs.READ_FILE
|
|
38
|
+
| AccessFs.READ_DIR
|
|
39
|
+
| AccessFs.WRITE_FILE
|
|
40
|
+
| AccessFs.TRUNCATE
|
|
41
|
+
| AccessFs.MAKE_REG
|
|
42
|
+
| AccessFs.MAKE_DIR
|
|
43
|
+
| AccessFs.MAKE_SYM
|
|
44
|
+
| AccessFs.MAKE_FIFO
|
|
45
|
+
| AccessFs.MAKE_SOCK
|
|
46
|
+
| AccessFs.REMOVE_FILE
|
|
47
|
+
| AccessFs.REMOVE_DIR
|
|
48
|
+
| AccessFs.REFER
|
|
49
|
+
| AccessFs.EXECUTE
|
|
50
|
+
)
|
|
51
|
+
# Rights granted on a writable file. Directory-only rights have to be left
|
|
52
|
+
# out: the kernel rejects the entire rule for a non-directory rather than
|
|
53
|
+
# ignoring the ones that don't apply. Ioctls matter only for the device
|
|
54
|
+
# nodes below, and only for ones opened after the ruleset applies --
|
|
55
|
+
# inherited descriptors such as a terminal on stdin are never affected.
|
|
56
|
+
_FILE_RW = (
|
|
57
|
+
AccessFs.READ_FILE
|
|
58
|
+
| AccessFs.WRITE_FILE
|
|
59
|
+
| AccessFs.TRUNCATE
|
|
60
|
+
| AccessFs.IOCTL_DEV
|
|
61
|
+
)
|
|
62
|
+
except ImportError: # pragma: no cover
|
|
63
|
+
Landlock = None
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _ebd_paths() -> Iterator[str]:
|
|
67
|
+
"""Paths that sourcing an ebuild needs to be able to write, whatever else does."""
|
|
68
|
+
# The ebuild daemon is handed a minimal environment, so the bash sourcing
|
|
69
|
+
# ebuilds never sees a redirected TMPDIR and falls back to the system one.
|
|
70
|
+
# Here-documents too big for a pipe land there.
|
|
71
|
+
yield tempfile.gettempdir()
|
|
72
|
+
# opened read-write by subprocess.DEVNULL, among others
|
|
73
|
+
yield os.devnull
|
|
74
|
+
# where sandbox(1) reports access violations; losing them would hide the
|
|
75
|
+
# very misbehaviour worth knowing about, and the inherited output
|
|
76
|
+
# descriptors already point at the same terminal
|
|
77
|
+
yield "/dev/tty"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def writable_cache_paths(*repos) -> Iterator[str]:
|
|
81
|
+
"""Cache locations pkgcore may write while generating metadata for *repos*.
|
|
82
|
+
|
|
83
|
+
Repos whose cache is already read-only are skipped, so passing every repo
|
|
84
|
+
involved in a run grants no more than pkgcore would have written anyway.
|
|
85
|
+
"""
|
|
86
|
+
for repo in repos:
|
|
87
|
+
for cache in getattr(repo, "cache", ()):
|
|
88
|
+
if cache.readonly:
|
|
89
|
+
continue
|
|
90
|
+
# pkgcore creates a missing cache dir on demand and decides
|
|
91
|
+
# writability from the closest existing parent, so grant that
|
|
92
|
+
path = cache.location
|
|
93
|
+
while not os.path.exists(path):
|
|
94
|
+
if (parent := os.path.dirname(path)) == path:
|
|
95
|
+
break
|
|
96
|
+
path = parent
|
|
97
|
+
yield path
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def _unavailable(required: bool, msg: str) -> bool:
|
|
101
|
+
"""Fail or note that confinement couldn't be set up."""
|
|
102
|
+
if required:
|
|
103
|
+
raise PkgcoreUserException(f"sandbox unavailable: {msg}")
|
|
104
|
+
logger.debug("skipping landlock confinement: %s", msg)
|
|
105
|
+
return False
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def confine(*writable: str, allow_net: bool = False, required: bool = False) -> bool:
|
|
109
|
+
"""Deny writes outside *writable*, and outgoing TCP unless *allow_net*.
|
|
110
|
+
|
|
111
|
+
The paths sourcing an ebuild needs are always granted on top of *writable*.
|
|
112
|
+
A path that doesn't exist is skipped, and rights the kernel won't accept for
|
|
113
|
+
a non-directory are dropped rather than failing the whole rule.
|
|
114
|
+
|
|
115
|
+
:param required: raise rather than carry on unconfined when landlock is
|
|
116
|
+
unavailable, too old, or disabled at boot.
|
|
117
|
+
:raises PkgcoreUserException: if *required* and the restrictions couldn't be
|
|
118
|
+
applied.
|
|
119
|
+
:return: whether the restrictions were applied.
|
|
120
|
+
"""
|
|
121
|
+
if Landlock is None:
|
|
122
|
+
return _unavailable(required, "py-landlock is not installed")
|
|
123
|
+
|
|
124
|
+
try:
|
|
125
|
+
sandbox = Landlock(strict=False)
|
|
126
|
+
# scoping signals and abstract sockets isn't what this is for
|
|
127
|
+
sandbox.allow_all_scope()
|
|
128
|
+
if allow_net:
|
|
129
|
+
sandbox.allow_all_network()
|
|
130
|
+
# the whole filesystem stays readable and executable; this only takes
|
|
131
|
+
# away the ability to write to it
|
|
132
|
+
sandbox.add_path_rule(
|
|
133
|
+
"/", access=AccessFs.READ_FILE | AccessFs.READ_DIR | AccessFs.EXECUTE
|
|
134
|
+
)
|
|
135
|
+
for path in (*writable, *_ebd_paths()):
|
|
136
|
+
if os.path.isdir(path):
|
|
137
|
+
sandbox.add_path_rule(path, access=_DIR_RW)
|
|
138
|
+
elif os.path.exists(path):
|
|
139
|
+
sandbox.add_path_rule(path, access=_FILE_RW)
|
|
140
|
+
else:
|
|
141
|
+
logger.debug("landlock: no such path, skipping: %r", path)
|
|
142
|
+
sandbox.apply()
|
|
143
|
+
except (LandlockError, OSError) as e:
|
|
144
|
+
return _unavailable(required, str(e))
|
|
145
|
+
|
|
146
|
+
logger.debug("landlock confinement applied, ABI %s", sandbox.abi_version)
|
|
147
|
+
return True
|
|
@@ -110,7 +110,7 @@ def lowest_iter_sort(l, pkg_grabber=pkg_grabber):
|
|
|
110
110
|
return l
|
|
111
111
|
|
|
112
112
|
|
|
113
|
-
class MutableContainmentRestriction(values.base):
|
|
113
|
+
class MutableContainmentRestriction(values.base, caching=False):
|
|
114
114
|
__slots__ = ("_blacklist", "match")
|
|
115
115
|
|
|
116
116
|
def __init__(self, blacklist):
|