From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1QYpV5-0004pr-1T for garchives@archives.gentoo.org; Tue, 21 Jun 2011 01:11:31 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 8C5111C04C; Tue, 21 Jun 2011 01:11:20 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 4C1E21C04C for ; Tue, 21 Jun 2011 01:11:20 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id BE17C1B401E for ; Tue, 21 Jun 2011 01:11:19 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id E070D8003C for ; Tue, 21 Jun 2011 01:11:18 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <1fdeb78d08bac14f3f999f112499d179a87cf342.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: man/, pym/portage/package/ebuild/, pym/portage/package/ebuild/_config/, cnf/ X-VCS-Repository: proj/portage X-VCS-Files: cnf/make.globals man/ebuild.5 man/make.conf.5 man/portage.5 pym/portage/package/ebuild/_config/UseManager.py pym/portage/package/ebuild/config.py X-VCS-Directories: man/ pym/portage/package/ebuild/ pym/portage/package/ebuild/_config/ cnf/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 1fdeb78d08bac14f3f999f112499d179a87cf342 Date: Tue, 21 Jun 2011 01:11:18 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 842e240088b5eeccd16db6c706c2a497 commit: 1fdeb78d08bac14f3f999f112499d179a87cf342 Author: Zac Medico gentoo org> AuthorDate: Tue Jun 21 01:08:59 2011 +0000 Commit: Zac Medico gentoo org> CommitDate: Tue Jun 21 01:08:59 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D1fdeb78d config: repo-level make.defaults/package.use This completes the implementation of bug #370693. --- cnf/make.globals | 2 +- man/ebuild.5 | 5 +- man/make.conf.5 | 5 ++- man/portage.5 | 2 + pym/portage/package/ebuild/_config/UseManager.py | 1 + pym/portage/package/ebuild/config.py | 45 ++++++++++++++++= +++++- 6 files changed, 55 insertions(+), 5 deletions(-) diff --git a/cnf/make.globals b/cnf/make.globals index 2258fd2..2892d50 100644 --- a/cnf/make.globals +++ b/cnf/make.globals @@ -106,7 +106,7 @@ CONFIG_PROTECT=3D"/etc" CONFIG_PROTECT_MASK=3D"/etc/env.d" =20 # Disable auto-use -USE_ORDER=3D"env:pkg:conf:defaults:pkginternal:env.d" +USE_ORDER=3D"env:pkg:conf:defaults:pkginternal:repo:env.d" =20 # Default ownership of installed files. PORTAGE_INST_UID=3D"0" diff --git a/man/ebuild.5 b/man/ebuild.5 index bc5680f..20117e0 100644 --- a/man/ebuild.5 +++ b/man/ebuild.5 @@ -246,8 +246,9 @@ is possible to prefix flags with + or - in order to c= reate default settings that respectively enable or disable the corresponding \fBUSE\fR flags. F= or details about \fBUSE\fR flag stacking order, refer to the \fBUSE_ORDER\f= R variable in \fBmake.conf\fR(5). Given the default \fBUSE_ORDER\fR settin= g, -negative IUSE default settings are ineffective since profile and user -configuration settings override them. +negative IUSE default settings are effective only for negation of +repo\-level USE settings, since profile and user configuration settings +override them. .TP \fBDEPEND\fR This should contain a list of all packages that are required for the diff --git a/man/make.conf.5 b/man/make.conf.5 index 86ac462..fcb0954 100644 --- a/man/make.conf.5 +++ b/man/make.conf.5 @@ -838,7 +838,7 @@ in USE=3D"foo_bar foo_bla". Names of \fBUSE_EXPAND\fR variables that should not be shown in the verb= ose merge list output of the \fBemerge\fR(1) command. .TP -\fBUSE_ORDER\fR =3D \fI"env:pkg:conf:defaults:pkginternal:env.d"\fR +\fBUSE_ORDER\fR =3D \fI"env:pkg:conf:defaults:pkginternal:repo:env.d"\fR Determines the precedence of layers in the incremental stacking of the U= SE variable. Precedence decreases from left to right such that env override= s pkg, pkg overrides conf, and so forth. @@ -866,6 +866,9 @@ USE from make.defaults and package.use in the profile= (see \fBportage\fR(5)) .B pkginternal USE from \fBebuild\fR(5) IUSE defaults .TP +.B repo +USE from make.defaults and package.use in the repo (see \fBportage\fR(5)= ) +.TP .B env.d USE from the environment variables defined by files in \fI/etc/env.d/\fR .RE diff --git a/man/portage.5 b/man/portage.5 index 61f4623..b2b0eb1 100644 --- a/man/portage.5 +++ b/man/portage.5 @@ -81,8 +81,10 @@ categories info_pkgs info_vars license_groups +make.defaults package.mask package.unmask +package.use package.use.force package.use.mask profiles.desc diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/porta= ge/package/ebuild/_config/UseManager.py index 3905f4f..de18500 100644 --- a/pym/portage/package/ebuild/_config/UseManager.py +++ b/pym/portage/package/ebuild/_config/UseManager.py @@ -53,6 +53,7 @@ class UseManager(object): self._repo_useforce_dict =3D self._parse_repository_files_to_dict_of_t= uples("use.force", repositories) self._repo_pusemask_dict =3D self._parse_repository_files_to_dict_of_d= icts("package.use.mask", repositories) self._repo_puseforce_dict =3D self._parse_repository_files_to_dict_of_= dicts("package.use.force", repositories) + self._repo_puse_dict =3D self._parse_repository_files_to_dict_of_dicts= ("package.use", repositories) =20 self._usemask_list =3D self._parse_profile_files_to_tuple_of_tuples("u= se.mask", profiles) self._useforce_list =3D self._parse_profile_files_to_tuple_of_tuples("= use.force", profiles) diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/e= build/config.py index b75a177..6b7af51 100644 --- a/pym/portage/package/ebuild/config.py +++ b/pym/portage/package/ebuild/config.py @@ -206,6 +206,7 @@ class config(object): self.repositories =3D clone.repositories self._iuse_implicit_match =3D clone._iuse_implicit_match self._non_user_variables =3D clone._non_user_variables + self._repo_make_defaults =3D clone._repo_make_defaults self.usemask =3D clone.usemask self.useforce =3D clone.useforce self.puse =3D clone.puse @@ -229,6 +230,7 @@ class config(object): self.configdict =3D copy.deepcopy(clone.configdict) self.configlist =3D [ self.configdict['env.d'], + self.configdict['repo'], self.configdict['pkginternal'], self.configdict['globals'], self.configdict['defaults'], @@ -319,6 +321,9 @@ class config(object): self.configdict["env.d"] =3D self.configlist[-1] =20 self.configlist.append({}) + self.configdict["repo"] =3D self.configlist[-1] + + self.configlist.append({}) self.configdict["pkginternal"] =3D self.configlist[-1] =20 self.packages_list =3D [grabfile_package(os.path.join(x, "packages"),= verify_eapi=3DTrue) for x in self.profiles] @@ -509,6 +514,14 @@ class config(object): =20 locations_manager.set_port_dirs(self["PORTDIR"], self["PORTDIR_OVERLA= Y"]) =20 + self._repo_make_defaults =3D {} + for repo in self.repositories.repos_with_profiles(): + d =3D getconfig(os.path.join(repo.location, "profiles", "make.defaul= ts"), + expand=3Dself.configdict["globals"].copy()) or {} + for blacklisted in self._env_blacklist: + d.pop(blacklisted, None) + self._repo_make_defaults[repo.name] =3D d + #Read package.keywords and package.accept_keywords. self._keywords_manager =3D KeywordsManager(self.profiles, abs_user_co= nfig, \ local_config, global_accept_keywords=3Dself.configdict["defaults"].g= et("ACCEPT_KEYWORDS", "")) @@ -629,7 +642,7 @@ class config(object): # reasonable defaults; this is important as without USE_ORDER, # USE will always be "" (nothing set)! if "USE_ORDER" not in self: - self.backupenv["USE_ORDER"] =3D "env:pkg:conf:defaults:pkginternal:e= nv.d" + self.backupenv["USE_ORDER"] =3D "env:pkg:conf:defaults:pkginternal:r= epo:env.d" =20 self["PORTAGE_GID"] =3D str(portage_gid) self.backup_changes("PORTAGE_GID") @@ -890,6 +903,7 @@ class config(object): del self._penv[:] self.configdict["pkg"].clear() self.configdict["pkginternal"].clear() + self.configdict["repo"].clear() self.configdict["defaults"]["USE"] =3D \ " ".join(self.make_defaults_use) self.usemask =3D self._use_manager.getUseMask() @@ -1065,6 +1079,7 @@ class config(object): =20 pkg_configdict["CATEGORY"] =3D cat pkg_configdict["PF"] =3D pf + repository =3D None if mydb: if not hasattr(mydb, "aux_get"): for k in aux_keys: @@ -1109,6 +1124,34 @@ class config(object): self.configdict["pkginternal"]["USE"] =3D pkginternaluse has_changed =3D True =20 + repo_env =3D [] + repo_env_empty =3D True + if repository and repository !=3D Package.UNKNOWN_REPO: + for repo in [repo.name for + repo in self.repositories[repository].masters] + [repository]: + d =3D self._repo_make_defaults.get(repo) + if d is None: + d =3D {} + else: + # make a copy, since we might modify it with + # package.use settings + d =3D d.copy() + repo_env.append(d) + cpdict =3D self._use_manager._repo_puse_dict.get(repo, {}).get(cp) + if cpdict: + repo_puse =3D ordered_by_atom_specificity(cpdict, pkg) + if repo_puse: + for x in repo_puse: + d["USE"] =3D d.get("USE", "") + " " + " ".join(x) + if d: + repo_env_empty =3D False + + if not repo_env_empty or self.configdict["repo"]: + self.configdict["repo"].clear() + self.configdict["repo"].update(stack_dicts(repo_env, + incrementals=3Dself.incrementals)) + has_changed =3D True + defaults =3D [] for i, pkgprofileuse_dict in enumerate(self._use_manager._pkgprofileus= e): if self.make_defaults_use[i]: