diff options
author | 2018-08-05 14:30:57 -0700 | |
---|---|---|
committer | 2019-04-18 10:52:54 -0700 | |
commit | ef8469befbd7b61f1bae8f21ffd95e0c0306a4f8 (patch) | |
tree | 5b92b77c02c53fe3280c5f37d20151ef82fc37b6 | |
parent | Updates for portage-2.3.63 release (diff) | |
download | portage-ef8469befbd7b61f1bae8f21ffd95e0c0306a4f8.tar.gz portage-ef8469befbd7b61f1bae8f21ffd95e0c0306a4f8.tar.bz2 portage-ef8469befbd7b61f1bae8f21ffd95e0c0306a4f8.zip |
Change /usr/portage council approved locations (bug 378603)
This includes a _compat_upgrade.default_locations script that the
ebuild can call in pkg_preinst in order to maintain backward-compatible
defaults when appropriate. The new defaults are specified in the
summary of the 20180729 council meeting:
Vote: Default locations for the Gentoo repository, distfiles, and
binary packages will be, respectively:
/var/db/repos/gentoo
/var/cache/distfiles
/var/cache/binpkgs
Accepted with 6 yes votes and 1 no vote.
See: https://projects.gentoo.org/council/meeting-logs/20180729-summary.txt
Bug: https://bugs.gentoo.org/378603
Signed-off-by: Zac Medico <zmedico@gentoo.org>
-rw-r--r-- | cnf/make.globals | 4 | ||||
-rw-r--r-- | cnf/repos.conf | 2 | ||||
-rw-r--r-- | lib/portage/_compat_upgrade/__init__.py | 0 | ||||
-rw-r--r-- | lib/portage/_compat_upgrade/default_locations.py | 82 |
4 files changed, 85 insertions, 3 deletions
diff --git a/cnf/make.globals b/cnf/make.globals index b4ed8c466..b01cca599 100644 --- a/cnf/make.globals +++ b/cnf/make.globals @@ -27,8 +27,8 @@ ACCEPT_PROPERTIES="*" ACCEPT_RESTRICT="*" # Miscellaneous paths -DISTDIR="/usr/portage/distfiles" -PKGDIR="/usr/portage/packages" +DISTDIR="/var/cache/distfiles" +PKGDIR="/var/cache/binpkgs" RPMDIR="/usr/portage/rpm" # Temporary build directory diff --git a/cnf/repos.conf b/cnf/repos.conf index 352073cfd..e84840bf2 100644 --- a/cnf/repos.conf +++ b/cnf/repos.conf @@ -2,7 +2,7 @@ main-repo = gentoo [gentoo] -location = /usr/portage +location = /var/db/repos/gentoo sync-type = rsync sync-uri = rsync://rsync.gentoo.org/gentoo-portage auto-sync = yes diff --git a/lib/portage/_compat_upgrade/__init__.py b/lib/portage/_compat_upgrade/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/lib/portage/_compat_upgrade/__init__.py diff --git a/lib/portage/_compat_upgrade/default_locations.py b/lib/portage/_compat_upgrade/default_locations.py new file mode 100644 index 000000000..91f300637 --- /dev/null +++ b/lib/portage/_compat_upgrade/default_locations.py @@ -0,0 +1,82 @@ +# Copyright 2018-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +import re + +import portage +from portage import os +from portage.const import GLOBAL_CONFIG_PATH + +COMPAT_DISTDIR = 'usr/portage/distfiles' +COMPAT_PKGDIR = 'usr/portage/packages' +COMPAT_MAIN_REPO = 'usr/portage' + + +def main(): + """ + If the current installation is still configured to use any of the + legacy default /usr/portage locations, then patch make.globals and + repos.conf inside ${ED} to maintain compatible defaults. This is + intended to be called from the ebuild as follows: + + pkg_preinst() { + python_setup + python_export PYTHON_SITEDIR + env -u DISTDIR \ + -u PORTAGE_OVERRIDE_EPREFIX \ + -u PORTAGE_REPOSITORIES \ + -u PORTDIR \ + -u PORTDIR_OVERLAY \ + PYTHONPATH="${ED%/}${PYTHON_SITEDIR}${PYTHONPATH:+:${PYTHONPATH}}" \ + "${PYTHON}" -m portage._compat_upgrade.default_locations || die + } + """ + out = portage.output.EOutput() + config = portage.settings + + compat_distdir = os.path.join(portage.const.EPREFIX or '/', COMPAT_DISTDIR) + try: + do_distdir = os.path.samefile(config['DISTDIR'], compat_distdir) + except OSError: + do_distdir = False + + compat_pkgdir = os.path.join(portage.const.EPREFIX or '/', COMPAT_PKGDIR) + try: + do_pkgdir = os.path.samefile(config['PKGDIR'], compat_pkgdir) + except OSError: + do_pkgdir = False + + compat_main_repo = os.path.join(portage.const.EPREFIX or '/', COMPAT_MAIN_REPO) + try: + do_main_repo = os.path.samefile(config.repositories.mainRepoLocation(), compat_main_repo) + except OSError: + do_main_repo = False + + if do_distdir or do_pkgdir: + config_path = os.path.join(os.environ['ED'], GLOBAL_CONFIG_PATH.lstrip(os.sep), 'make.globals') + with open(config_path) as f: + content = f.read() + if do_distdir: + compat_setting = 'DISTDIR="{}"'.format(compat_distdir) + out.einfo('Setting make.globals default {} for backward compatibility'.format(compat_setting)) + content = re.sub('^DISTDIR=.*$', compat_setting, content, flags=re.MULTILINE) + if do_pkgdir: + compat_setting = 'PKGDIR="{}"'.format(compat_pkgdir) + out.einfo('Setting make.globals default {} for backward compatibility'.format(compat_setting)) + content = re.sub('^PKGDIR=.*$', compat_setting, content, flags=re.MULTILINE) + with open(config_path, 'wt') as f: + f.write(content) + + if do_main_repo: + config_path = os.path.join(os.environ['ED'], GLOBAL_CONFIG_PATH.lstrip(os.sep), 'repos.conf') + with open(config_path) as f: + content = f.read() + compat_setting = 'location = {}'.format(compat_main_repo) + out.einfo('Setting repos.conf default {} for backward compatibility'.format(compat_setting)) + content = re.sub('^location =.*$', compat_setting, content, flags=re.MULTILINE) + with open(config_path, 'wt') as f: + f.write(content) + + +if __name__ == '__main__': + main() |