Re: [gentoo-dev] RFC: USE=libav as replacement for broken || ( libav:= ffmpeg:= )
On Thu, 22 Jan 2015 02:50:44 -0800 Zac Medico zmed...@gentoo.org wrote: On 01/21/2015 11:25 PM, Alexis Ballier wrote: 1. If portage uses crafted depstrings in its depgraph when rebuilding a package and nobody is able to give me a good reason _why_ this is needed, I really do not want to look at the code :) It's the emerge --dynamic-deps option, which is enabled by default. If you want to use --dynamic-deps=n, then you may need to fix some dependencies of installed packages, which you can do by running emerge @changed-deps. There's also a --changed-deps [1] option that can be applied to @world updates, which will be included in Portage 2.2.16. [1] https://github.com/gentoo/portage/commit/e99fa094ac73514b23509a0f8305b365f114e9a3 This answers 'how' and, as I understand it, changed-deps is also about 'how' to trigger rebuild. My question was: _why_ when portage knows what package to rebuild doesn't it use the dep string from the ebuild ? That's what I understand from Michał's comment (quoting him): 1. if you have dynamic-deps enabled, portage will want to install both ffmpeg (because of :=) and libav (because of ||). The effective deps will look like: || ( ffmpeg:0/51= libav ) ffmpeg:0/51= As I understand it, portage (correctly) marks this package for rebuild (because ffmpeg:0/51= dep isn't satisfied anymore), but I don't get why it doesn't consider the original '|| ( ffmpeg:= libav:= )' dep for the depgraph and wants to pull ffmpeg in because of :=. Alexis.
Re: [gentoo-dev] Things one could be upset about
Joshua Kinard wrote: Using seed stage3 stages I built 6 months ago (but never released due to getting sidetracked), I run into errors like this: !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: dev-lang/perl:0 (dev-lang/perl-5.20.1-r4:0/5.20::gentoo, ebuild scheduled for merge) pulled in by =dev-lang/perl-5.20* required by (virtual/perl-ExtUtils-ParseXS-3.240.0:0/0::gentoo, ebuild scheduled for merge) ^ ^ (and 16 more with the same problem) (dev-lang/perl-5.18.2-r2:0/5.18::gentoo, ebuild scheduled for merge) pulled in by dev-lang/perl:0/5.18=[-build(-)] required by (dev-perl/libintl-perl-1.230.0:0/0::gentoo, installed) =dev-lang/perl-5.18* required by (virtual/perl-ExtUtils-Manifest-1.630.0-r1:0/0::gentoo, installed) ^ ^ (and 2 more with the same problems) It's hard to read mess like that and trace down the offending package, fix it, and make catalyst happy. Lots of dev-perl packages have specific minor version dependencies on dev-lang/perl, maybe because sometimes the package is included in perl and sometimes not. It's a f*ing mess. You have to look up all your installed dev-perl packages manually and find which ones are either too old to know about perl-5.20 or not compatible with it, and then you have to unmerge those manually. Kinda defeats the purpose of catalyst in the first place. The proper way is to build stage1+2+3 yourself, then this mess doesn't happen. But like you I too cheat a little, and have to deal with the mess. //Peter
Re: [gentoo-dev] RFC: USE=libav as replacement for broken || ( libav:= ffmpeg:= )
On 01/21/2015 11:25 PM, Alexis Ballier wrote: 1. If portage uses crafted depstrings in its depgraph when rebuilding a package and nobody is able to give me a good reason _why_ this is needed, I really do not want to look at the code :) It's the emerge --dynamic-deps option, which is enabled by default. If you want to use --dynamic-deps=n, then you may need to fix some dependencies of installed packages, which you can do by running emerge @changed-deps. There's also a --changed-deps [1] option that can be applied to @world updates, which will be included in Portage 2.2.16. [1] https://github.com/gentoo/portage/commit/e99fa094ac73514b23509a0f8305b365f114e9a3 -- Thanks, Zac
Re: [gentoo-dev] [RFC] LibreSSL, introduce virtual/openssl
Regarding the last libav discussion I think we should also go with a libressl USE flag instead of creating a virtual that makes handling SUBSLOTs impossible.
Re: [gentoo-dev] [RFC] LibreSSL, introduce virtual/openssl
Dnia 2015-01-23, o godz. 01:51:24 hasufell hasuf...@gentoo.org napisał(a): Regarding the last libav discussion I think we should also go with a libressl USE flag instead of creating a virtual that makes handling SUBSLOTs impossible. If libressl and openssl would have matching ABIs, that wouldn't be necessary and you could what virtual/libudev does, i.e. explicit subslot deps. -- Best regards, Michał Górny pgp9TTRFD6wY2.pgp Description: OpenPGP digital signature
Re: [gentoo-dev] RFC: USE=libav as replacement for broken || ( libav:= ffmpeg:= )
On 01/22/2015 03:11 AM, Alexis Ballier wrote: On Thu, 22 Jan 2015 02:50:44 -0800 Zac Medico zmed...@gentoo.org wrote: On 01/21/2015 11:25 PM, Alexis Ballier wrote: 1. If portage uses crafted depstrings in its depgraph when rebuilding a package and nobody is able to give me a good reason _why_ this is needed, I really do not want to look at the code :) It's the emerge --dynamic-deps option, which is enabled by default. If you want to use --dynamic-deps=n, then you may need to fix some dependencies of installed packages, which you can do by running emerge @changed-deps. There's also a --changed-deps [1] option that can be applied to @world updates, which will be included in Portage 2.2.16. [1] https://github.com/gentoo/portage/commit/e99fa094ac73514b23509a0f8305b365f114e9a3 This answers 'how' and, as I understand it, changed-deps is also about 'how' to trigger rebuild. My question was: _why_ when portage knows what package to rebuild doesn't it use the dep string from the ebuild ? It does use the dep string for the ebuild, after it has rejected the installed instance and decided to pull in the ebuild instead. That's what I understand from Michał's comment (quoting him): 1. if you have dynamic-deps enabled, portage will want to install both ffmpeg (because of :=) and libav (because of ||). The effective deps will look like: || ( ffmpeg:0/51= libav ) ffmpeg:0/51= As I understand it, portage (correctly) marks this package for rebuild (because ffmpeg:0/51= dep isn't satisfied anymore), but I don't get why it doesn't consider the original '|| ( ffmpeg:= libav:= )' dep for the depgraph and wants to pull ffmpeg in because of :=. It does consider the original dep. However, it also uses various heuristics when making choices for || deps, and the fact that an instance of ffmpeg is currently installed is taken into account in the heuristics. -- Thanks, Zac
[gentoo-dev] last rites: games-rpg/morrowind-data
# Julian Ospald hasuf...@gentoo.org (22 Jan 2015) # Masked for removal in 30 days, wrt #537260. games-rpg/morrowind-data
Re: [gentoo-portage-dev] [PATCH] Support USE_EXPAND prefixes in package.use and relevant files
On Tue, 20 Jan 2015 12:18:43 +0100 Michał Górny mgo...@gentoo.org wrote: 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 --- pym/portage/package/ebuild/_config/UseManager.py | 20 +++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py index 3a4ec22..59f474e 100644 --- a/pym/portage/package/ebuild/_config/UseManager.py +++ b/pym/portage/package/ebuild/_config/UseManager.py @@ -202,10 +202,17 @@ 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: writemsg(_(--- Invalid USE flag for '%s' in '%s': '%s'\n) % @@ -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 It looks harmless enough, but I'd like to wait a bit before merge I think. This also needs a man page description update somewhere. We need to have another meeting, decide where to cut off for the next release. -- Brian Dolbec dolsen
Re: [gentoo-portage-dev] [PATCH] Support USE_EXPAND prefixes in package.use and relevant files
On 01/20/2015 03:18 AM, Michał Górny wrote: 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 --- pym/portage/package/ebuild/_config/UseManager.py | 20 +++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py index 3a4ec22..59f474e 100644 --- a/pym/portage/package/ebuild/_config/UseManager.py +++ b/pym/portage/package/ebuild/_config/UseManager.py @@ -202,10 +202,17 @@ 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: writemsg(_(--- Invalid USE flag for '%s' in '%s': '%s'\n) % We could match useflag_re against (use_expand_prefix + useflag) here, so that the use_expand_prefix is also validated. Otherwise, the patch looks good. -- Thanks, Zac
Re: [gentoo-dev] Things one could be upset about
On Sat, 17 Jan 2015 13:44:21 +0100 Dirkjan Ochtman d...@gentoo.org wrote: Also, I hate something like ['dev-python/restkit[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]']. What the hell kind of warning is that? I guess maybe these are the results of USE_EXPAND trickery and what not, but it would sure be nice to have something more readable. https://bugs.gentoo.org/show_bug.cgi?id=534022 jer