public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-portage-dev@lists.gentoo.org
Subject: Re: [gentoo-portage-dev] [PATCH v2] Support USE_EXPAND prefixes in package.use and relevant files
Date: Sat, 24 Jan 2015 10:38:21 +0100	[thread overview]
Message-ID: <20150124103821.508c587c@pomiot.lan> (raw)
In-Reply-To: <1422091917-5384-1-git-send-email-mgorny@gentoo.org>

[-- Attachment #1: Type: text/plain, Size: 3976 bytes --]

Dnia 2015-01-24, o godz. 10:31:57
Michał Górny <mgorny@gentoo.org> napisał(a):

> Support prefixing groups of USE_EXPAND flags with 'USE_EXPAND:' in user
> configuration package.use and similar files. This provides a convenient
> way of declaring specifying multiple USE_EXPAND flags and matches the
> syntax supported by Paludis. Example:
> 
>   dev-util/netbeans NETBEANS_MODULES: php webcommon extide
>   media-libs/mesa osmesa VIDEO_CARDS: intel nouveau
> 
> X-Gentoo-Bug: 471776
> X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=471776
> ---
>  man/portage.5                                    |  6 ++++++
>  pym/portage/package/ebuild/_config/UseManager.py | 24 +++++++++++++++++++++---
>  2 files changed, 27 insertions(+), 3 deletions(-)
> 
> diff --git a/man/portage.5 b/man/portage.5
> index 189561c..5ac3100 100644
> --- a/man/portage.5
> +++ b/man/portage.5
> @@ -792,6 +792,10 @@ documentation for QT.  Easy as pie my friend!
>  .nf
>  \- comments begin with # (no inline comments)
>  \- one DEPEND atom per line with space-delimited USE flags
> +\- USE flags can be prefixed with USE_EXPAND name followed by a colon (:)
> +and a space. In this case, all the names following it are treated
> +as values for the USE_EXPAND. Note that if you need to remove earlier
> +assignments or defaults, you need to explicitly specify '\-*'.
>  .fi
>  
>  .I Example:
> @@ -800,6 +804,8 @@ documentation for QT.  Easy as pie my friend!
>  =x11\-libs/gtk+\-2* doc
>  # disable mysql support for QT
>  x11\-libs/qt \-mysql
> +# set preferred video card for all packages
> +*/* VIDEO_CARDS: \-* radeon
>  .fi
>  .TP
>  .BR repos.conf
> diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py
> index 3a4ec22..7e235ef 100644
> --- a/pym/portage/package/ebuild/_config/UseManager.py
> +++ b/pym/portage/package/ebuild/_config/UseManager.py
> @@ -145,7 +145,7 @@ class UseManager(object):
>  				useflag = prefixed_useflag[1:]
>  			else:
>  				useflag = prefixed_useflag
> -			if useflag_re.match(useflag) is None:
> +			if useflag_re.match(prefixed_useflag) is None:

Argv, wrong. I know you named it 'prefixed_useflag' to confuse me!

>  				writemsg(_("--- Invalid USE flag in '%s': '%s'\n") %
>  					(file_name, prefixed_useflag), noiselevel=-1)
>  			else:
> @@ -202,12 +202,19 @@ class UseManager(object):
>  		useflag_re = _get_useflag_re(eapi)
>  		for k, v in file_dict.items():
>  			useflags = []
> +			use_expand_prefix = ''
>  			for prefixed_useflag in v:
> +				if extended_syntax and prefixed_useflag[-1] == ":":
> +					use_expand_prefix = prefixed_useflag[:-1].lower() + "_"
> +					continue
> +
>  				if prefixed_useflag[:1] == "-":
>  					useflag = prefixed_useflag[1:]
> +					prefixed_useflag = "-" + use_expand_prefix + useflag
>  				else:
> +					prefixed_useflag = use_expand_prefix + prefixed_useflag
>  					useflag = prefixed_useflag
> -				if useflag_re.match(useflag) is None:
> +				if useflag_re.match(prefixed_useflag) is None:
>  					writemsg(_("--- Invalid USE flag for '%s' in '%s': '%s'\n") %
>  						(k, file_name, prefixed_useflag), noiselevel=-1)
>  				else:
> @@ -227,7 +234,18 @@ class UseManager(object):
>  			pusedict = grabdict_package(
>  				os.path.join(location, file_name), recursive=1, allow_wildcard=True, allow_repo=True, verify_eapi=False)
>  			for k, v in pusedict.items():
> -				ret.setdefault(k.cp, {})[k] = tuple(v)
> +				l = []
> +				use_expand_prefix = ''
> +				for flag in v:
> +					if flag[-1] == ":":
> +						use_expand_prefix = flag[:-1].lower() + "_"
> +						continue
> +					if flag[0] == "-":
> +						nv = "-" + use_expand_prefix + flag[1:]
> +					else:
> +						nv = use_expand_prefix + flag
> +					l.append(nv)
> +				ret.setdefault(k.cp, {})[k] = tuple(l)
>  
>  		return ret
>  



-- 
Best regards,
Michał Górny

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

      reply	other threads:[~2015-01-24  9:38 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-24  9:31 [gentoo-portage-dev] [PATCH v2] Support USE_EXPAND prefixes in package.use and relevant files Michał Górny
2015-01-24  9:38 ` Michał Górny [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150124103821.508c587c@pomiot.lan \
    --to=mgorny@gentoo.org \
    --cc=gentoo-portage-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox