On Fri, 2019-07-26 at 10:51 +0200, Ulrich Müller wrote:
> Bug: https://bugs.gentoo.org/233589
> Signed-off-by: Ulrich Müller <u...@gentoo.org>
> ---
>  cnf/sets/portage.conf                             |  8 +++++++-
>  lib/_emerge/EbuildExecuter.py                     |  4 ++--
>  lib/portage/_sets/__init__.py                     | 12 +++++++++---
>  repoman/lib/repoman/modules/scan/ebuild/ebuild.py |  3 +--
>  4 files changed, 19 insertions(+), 8 deletions(-)
> 
> diff --git a/cnf/sets/portage.conf b/cnf/sets/portage.conf
> index ac282d911..ed4c6d9a7 100644
> --- a/cnf/sets/portage.conf
> +++ b/cnf/sets/portage.conf
> @@ -55,9 +55,15 @@ world-candidate = True
>  [preserved-rebuild]
>  class = portage.sets.libs.PreservedLibraryConsumerSet
>  
> -# Installed ebuilds that inherit from known live eclasses.
> +# Installed ebuilds with "live" property.
>  [live-rebuild]
>  class = portage.sets.dbapi.VariableSet
> +variable = PROPERTIES
> +includes = live
> +
> +# Installed ebuilds that inherit from known live eclasses.
> +[deprecated-live-rebuild]
> +class = portage.sets.dbapi.VariableSet
>  variable = INHERITED
>  includes = bzr cvs darcs git git-2 git-r3 golang-vcs mercurial subversion tla
>  
> diff --git a/lib/_emerge/EbuildExecuter.py b/lib/_emerge/EbuildExecuter.py
> index d387b42be..ca9859437 100644
> --- a/lib/_emerge/EbuildExecuter.py
> +++ b/lib/_emerge/EbuildExecuter.py
> @@ -1,4 +1,4 @@
> -# Copyright 1999-2018 Gentoo Foundation
> +# Copyright 1999-2019 Gentoo Authors
>  # Distributed under the terms of the GNU General Public License v2
>  
>  from _emerge.EbuildPhase import EbuildPhase
> @@ -49,7 +49,7 @@ class EbuildExecuter(CompositeTask):
>                       phase="unpack", scheduler=self.scheduler,
>                       settings=self.settings)
>  
> -             if self._live_eclasses.intersection(self.pkg.inherited):
> +             if "live" in self.settings.get("PROPERTIES", "").split():
>                       # Serialize $DISTDIR access for live ebuilds since
>                       # otherwise they can interfere with eachother.
>  
> diff --git a/lib/portage/_sets/__init__.py b/lib/portage/_sets/__init__.py
> index 2c9bf9715..7b81c55e2 100644
> --- a/lib/portage/_sets/__init__.py
> +++ b/lib/portage/_sets/__init__.py
> @@ -1,4 +1,4 @@
> -# Copyright 2007-2014 Gentoo Foundation
> +# Copyright 2007-2019 Gentoo Authors
>  # Distributed under the terms of the GNU General Public License v2
>  
>  from __future__ import print_function
> @@ -121,8 +121,14 @@ class SetConfig(object):
>               parser.remove_section("live-rebuild")
>               parser.add_section("live-rebuild")
>               parser.set("live-rebuild", "class", 
> "portage.sets.dbapi.VariableSet")
> -             parser.set("live-rebuild", "variable", "INHERITED")
> -             parser.set("live-rebuild", "includes", " 
> ".join(sorted(portage.const.LIVE_ECLASSES)))
> +             parser.set("live-rebuild", "variable", "PROPERTIES")
> +             parser.set("live-rebuild", "includes", "live")
> +
> +             parser.remove_section("deprecated-live-rebuild")
> +             parser.add_section("deprecated-live-rebuild")
> +             parser.set("deprecated-live-rebuild", "class", 
> "portage.sets.dbapi.VariableSet")
> +             parser.set("deprecated-live-rebuild", "variable", "INHERITED")
> +             parser.set("deprecated-live-rebuild", "includes", " 
> ".join(sorted(portage.const.LIVE_ECLASSES)))
>  
>               parser.remove_section("module-rebuild")
>               parser.add_section("module-rebuild")
> diff --git a/repoman/lib/repoman/modules/scan/ebuild/ebuild.py 
> b/repoman/lib/repoman/modules/scan/ebuild/ebuild.py
> index d2715bc6e..70011e387 100644
> --- a/repoman/lib/repoman/modules/scan/ebuild/ebuild.py
> +++ b/repoman/lib/repoman/modules/scan/ebuild/ebuild.py
> @@ -12,7 +12,6 @@ from repoman.modules.scan.scanbase import ScanBase
>  # import our initialized portage instance
>  from repoman._portage import portage
>  from portage import os
> -from portage.const import LIVE_ECLASSES
>  from portage.exception import InvalidPackageName
>  
>  pv_toolong_re = re.compile(r'[0-9]{19,}')
> @@ -110,7 +109,7 @@ class Ebuild(ScanBase):
>               self.metadata = self.pkg._metadata
>               self.eapi = self.metadata["EAPI"]
>               self.inherited = self.pkg.inherited
> -             self.live_ebuild = LIVE_ECLASSES.intersection(self.inherited)
> +             self.live_ebuild = "live" in self.metadata["PROPERTIES"].split()
>               self.keywords = self.metadata["KEYWORDS"].split()
>               self.archs = set(kw.lstrip("~") for kw in self.keywords if not 
> kw.startswith("-"))
>               return False

While at it, could you look into making src_unpack() network-sandbox
override apply only to ebuilds with PROPERTIES=live?

-- 
Best regards,
Michał Górny

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to