Re: [gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Samuli Suominen

On 27/07/14 16:47, Michał Górny wrote:
 Dnia 2014-07-27, o godz. 14:42:24
 Samuli Suominen ssuomi...@gentoo.org napisał(a):

 On 26/07/14 15:49, Ciaran McCreesh wrote:
 On Sat, 26 Jul 2014 12:41:16 + (UTC)
 Martin Vaeth mar...@mvath.de wrote:
 hasufell hasuf...@gentoo.org wrote:
 Dynamics deps are already broken, not consistently enabled (e.g.
 when subslots are in use)
 Just to make it clear: No, dynamic deps are not broken.
 Yes they are.
 We just succesfully converted ~300 ebuilds in tree without revision
 bumps from virtual/udev[gudev,introspection,static-libs]
 to virtual/libudev and virtual/libgudev
 Tested it on multiple boxes, went fine.
 How did you exactly test them? 

That you could still emerge packages, even world, without Portage
complaining about unsatisfied
deps

 Did you at least bother checking if
 portage actually uses the deps you added?


When you `cd /var/db/pkg` and run `grep virtual/udev.*gudev
*/*/*.ebuild`, you can indeed still see some:

app-cdr/xfburn-0.5.2/xfburn-0.5.2.ebuild:udev? ( virtual/udev[gudev] )
gnome-base/gvfs-1.20.2/gvfs-1.20.2.ebuild:virtual/udev[gudev] )
media-gfx/gimp-2.8.10-r1/gimp-2.8.10-r1.ebuild:udev? (
virtual/udev[gudev] )
sys-fs/udisks-1.0.5-r1/udisks-1.0.5-r1.ebuild:=virtual/udev-208[gudev]
sys-fs/udisks-2.1.3/udisks-2.1.3.ebuild:   
=virtual/udev-${UDEV_VERSION}[gudev]
virtual/libgudev-208/libgudev-208.ebuild:# $Header:
/var/cvsroot/gentoo-x86/virtual/libgudev/libgudev-208.ebuild,v 1.7
2014/06/18 20:55:21 mgorny Exp $
xfce-extra/thunar-volman-0.8.0/thunar-volman-0.8.0.ebuild:   
virtual/udev[gudev]

But if you try to emerge these packages, like, for example:

$ sudo emerge -pv xfburn thunar-volman

These are the packages that would be merged, in reverse order:

Calculating dependencies... done!
[ebuild   R] xfce-extra/thunar-volman-0.8.0  USE=libnotify -debug 0 kB
[ebuild   R] app-cdr/xfburn-0.5.2  USE=udev -debug -gstreamer 0 kB

Portage is using the fresh copies from gentoo-x86

I'm _not_ a Portage, the package manager, developer, so I'd really
appericiate some *examples* where this would become a problem, binary
packages is known one, we have lived with that problem since forever, so
something else, please.
For everything I do with Portage, this is fine with me, and I expect
it's fine for the vast majority of users as well.
And this majority of users won't appericiate the suggested solution of
lets always revision bump, despite of triggering rebuild for everyone

To clarify, I know dynamic deps is not perfect, but it's the best
solution we have implemented to avoid the rebuilding problem, and long
as that's true... And seems like you, yourself, have thought about the
same issue:
http://bugs.gentoo.org/show_bug.cgi?id=486778
As in, you can't skip that bug, and go directly to
http://bugs.gentoo.org/show_bug.cgi?id=516612

- Samuli

(Excuse my grammar, woke up five minutes ago, to make some coffee now...)



Re: [gentoo-dev] Lastrites: app-crypt/opencdk, net-dialup/gnome-ppp, media-plugins/vdr-dxr3, media-video/dxr3config, media-video/em8300-libraries, net-misc/xsupplicant, sys-cluster/util-vserver, www-a

2014-07-28 Thread Samuli Suominen

On 27/07/14 14:33, Pacho Ramos wrote:
 # Pacho Ramos pa...@gentoo.org (27 Jul 2014)
 # Not buildable for a long time, bug #414903
 # Removal in a month.
 media-plugins/vdr-dxr3
 media-video/dxr3config
 media-video/em8300-libraries

You forgot to mask em8300-modules. That's the package that's actually
broken.
Those you masked, actually still build (but are just useless without
em8300-modules)




[gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in media-libs/x265: x265-1.0.ebuild ChangeLog x265-1.2.ebuild x265-0.8.ebuild

2014-07-28 Thread Samuli Suominen

On 27/07/14 22:01, Markus Meier (maekke) wrote:
 maekke  14/07/27 19:01:15

   Modified: x265-1.0.ebuild ChangeLog x265-1.2.ebuild
 x265-0.8.ebuild
   Log:
   add ~arm, bug #510340

Package bumping is done by, eg.:

# cp x265-.ebuild x265-1.3.ebuild

And then,

# grep *.ebuild

x265-1.2.ebuild:KEYWORDS=~amd64 ~arm ~x86
x265-1.3.ebuild:KEYWORDS=~amd64 ~x86
x265-.ebuild:KEYWORDS=~amd64 ~x86

As in... You forgot to add ~arm to -.ebuild



[gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Duncan
Paweł Hajdan, Jr. posted on Sun, 27 Jul 2014 16:56:17 +0200 as excerpted:

 One thing I would question in that table is applied immediately (but
 can break hard when dynamic-deps stop working)).  How can dynamically
 removing an unused dependency cause something to break, setting aside
 bugs in the package manager?  If removing a dependency causes something
 to break, how can it be unused?
 
 Yeah, I was also wondering about this.


I believe what is being discussed there is the following (as I understand 
it):

1) Foo incorrectly deps on bar, and doesn't actually use that dep for 
anything.  Say it was a historical dep that upstream forgot to remove in 
the docs when they removed the dep, and the (gentoo) maintainer didn't 
detect it initially.

2) User installs foo with the incorrect dep, thus pulling in bar.

At this point use has an unnecessary package installed but is otherwise 
fine, deps are wrongly pulling it in.

3) Foo maintainer detects the error (upstream removed the dep in the 
unreleased version and maintainer realizes it wasn't needed in the 
current version either) and removes the dep on bar, but since it was 
unused anyway and thus doesn't affect the package as installed (except in 
vardb), he takes advantage of dynamic-deps and no revbump is done.

At this point, user has an unnecessary dep that portage has just been 
told about due to dynamic deps, and will unmerge it at the next depclean, 
but the user's dep-tree is still self-consistent and everything's fine.

4) Due to dynamic-deps, portage depcleans bar.

Due to dynamic-deps, the user's dep-tree is still consistent and 
everything's fine.

5) Since nothing in the tree needs bar, it is removed.

Due to dynamic-deps, the user's dep-tree is still consistent, because the 
in-/usr/portage foo.ebuild doesn't say anything about bar since #3.

6) Finally, foo is removed from tree.

** User isn't ready to get rid of foo yet, but user's dep-tree just blew 
up, because now portage falls back to the static vardb from original 
install, and that still says foo deps on bar, which is nowhere to be 
found!

What's worse, the usual trick of digging the ebuild out of vardb and 
putting it in the user's overlay to shut portage up and let the user keep 
foo doesn't work, because the vardb ebuild has an unsatisfied dep.

With the repeated caveat that this is as I understand it, if the above is 
clear along with the implications, you can stop reading here.  The below 
simply expands on the above and its implications...

The breaks hard bit can be applied for two reasons.  First, exactly as 
I said above, the user's now SOL -- they had no warning things were going 
to break and now it's too late to do anything about it (unless they're 
advanced enough to figure out how to dig the last, corrected ebuild 
version out of a snapshot or the cvs attic, or to figure out that dep 
isn't actually needed on their own, and edit the ebuild they pulled out 
of vardb accordingly).

Second, breaks hard can apply when a whole set of related packages were 
removed at once, all with the same bad dep.  Consider for instance 
someone with kde-4.11 installed and how deeply dependent typical kde 
ebuilds tend to be on the kde eclasses.  If the bad dep was in an eclass 
and applied to say 200+ kde packages the user may well have installed, 
then got corrected such that dynamic-deps killed the bad dep, then all of 
kde-4.11 was removed from the tree at once...  A user may well find out 
they have 200+ broken deps at once!  Breaks hard, indeed!


Now we look at the same set of triggering events with static deps.  There 
are two cases, depending on whether the foo maintainer accounted for 
static deps and did a revision bump at step 3 or not:

With a revision bump at step #3, at step #4, before the user can do the 
depclean, they'll have to do the revision upgrade.  The aftermath of step 
#6 will then be hugely different as the vardb copy will have the bad dep 
removed as well.

If the foo maintainer didn't do a revision bump, with static deps the 
user will have never depcleaned bar in step #4 as the vardb deps still 
say it's needed.  So when foo is removed in step #6, again, no big deal.  
Sure the user had a useless dep installed the whole time, but when foo is 
removed from tree, fine, the user's dep-tree remains self-consistent and 
no blowup.  And the user remains free to dig that ebuild out of vardb and 
install it in the overlay again, at least temporarily, to keep portage 
from yelling about it until the user has time to find an alternative to 
the package, or to upgrade to the new version (kde 4.12 or 4.13 in my 
mass-breakage example).  Reinstalling may or may not be possible 
depending on how much the ebuild depended on eclasses and what had 
happened to them, but keeping the same thing installed at least 
temporarily should be fine.

And the static-deps case of the user not upgrading in a timely manner and 
thus skipping step #4 entirely, resolves exactly as if the 

Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in media-libs/x265: x265-1.0.ebuild ChangeLog x265-1.2.ebuild x265-0.8.ebuild

2014-07-28 Thread Samuli Suominen

On 28/07/14 09:41, Samuli Suominen wrote:
 On 27/07/14 22:01, Markus Meier (maekke) wrote:
 maekke  14/07/27 19:01:15

   Modified: x265-1.0.ebuild ChangeLog x265-1.2.ebuild
 x265-0.8.ebuild
   Log:
   add ~arm, bug #510340
 Package bumping is done by, eg.:

 # cp x265-.ebuild x265-1.3.ebuild

 And then,

 # grep *.ebuild

 x265-1.2.ebuild:KEYWORDS=~amd64 ~arm ~x86
 x265-1.3.ebuild:KEYWORDS=~amd64 ~x86
 x265-.ebuild:KEYWORDS=~amd64 ~x86

 As in... You forgot to add ~arm to -.ebuild


Fixed that for you.



Re: [gentoo-dev] Lastrites: app-crypt/opencdk, net-dialup/gnome-ppp, media-plugins/vdr-dxr3, media-video/dxr3config, media-video/em8300-libraries, net-misc/xsupplicant, sys-cluster/util-vserver, www-a

2014-07-28 Thread Samuli Suominen

On 28/07/14 09:38, Samuli Suominen wrote:
 On 27/07/14 14:33, Pacho Ramos wrote:
 # Pacho Ramos pa...@gentoo.org (27 Jul 2014)
 # Not buildable for a long time, bug #414903
 # Removal in a month.
 media-plugins/vdr-dxr3
 media-video/dxr3config
 media-video/em8300-libraries
 You forgot to mask em8300-modules. That's the package that's actually
 broken.
 Those you masked, actually still build (but are just useless without
 em8300-modules)



Fixed that for you.



Re: [gentoo-dev] Lastrites: app-crypt/opencdk, net-dialup/gnome-ppp, media-plugins/vdr-dxr3, media-video/dxr3config, media-video/em8300-libraries, net-misc/xsupplicant, sys-cluster/util-vserver, www-a

2014-07-28 Thread Pacho Ramos
El lun, 28-07-2014 a las 09:38 +0300, Samuli Suominen escribió:
 On 27/07/14 14:33, Pacho Ramos wrote:
  # Pacho Ramos pa...@gentoo.org (27 Jul 2014)
  # Not buildable for a long time, bug #414903
  # Removal in a month.
  media-plugins/vdr-dxr3
  media-video/dxr3config
  media-video/em8300-libraries
 
 You forgot to mask em8300-modules. That's the package that's actually
 broken.
 Those you masked, actually still build (but are just useless without
 em8300-modules)
 

Oops, sorry, I forgot it finally :S (I have seen you fixed it already)




[gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Martin Vaeth
Duncan 1i5t5.dun...@cox.net wrote:

 1) Foo incorrectly deps on bar
 2) User installs foo with the incorrect dep
 3) Foo maintainer detects the error
 4) Due to dynamic-deps, portage depcleans bar.
 5) Since nothing in the tree needs bar, it is removed.
 6) Finally, foo is removed from tree.

 ** User isn't ready to get rid of foo yet, but user's dep-tree just blew
 up

This is the problem of orphaned (without maintained ebuilds) packages:
Both, dynamic and static deps break on the similar situation for
different reasons.

The above describes one problem which you get in this case with
dynamic deps; to get a similar problem with static deps, you need
a slightly different situation:

1-3 as above, 4 is skipped (due to static deps).
5) bar is split into bar-base and bar-gui.
6) as above (foo is removed from the tree).

Now the static deps will keep in bar forever, omitting that the
packages in the tree can install bar-base or bar-gui.
The user's dep-tree blows up through blockers or merge conflict
which cannot be resolved.

I repeat once more: For packages no longer maintained in the tree,
there is no secure way to treat them always correctly;
no longer maintained means exactly this.

Either the user should remove them, or he should take full
responsibility by maintaining them by himself in his overlay.
Choosing a strategy (dynamic or static deps) should not concentrate
on users who refuse to choose this only reasonable solution -
as excpected, they get a solution which works sometimes, but they
have to keep the pieces when it breaks, no matter which strategy
is decided.

 What's worse, the usual trick of digging the ebuild out of vardb and
 putting it in the user's overlay to shut portage up and let the user keep
 foo doesn't work, because the vardb ebuild has an unsatisfied dep.

This is not so bad: The user has to put a corrected ebuild into his
overlay and must reemerge the package (currently, the latter could
be skipped with dynamic deps).
In fact, no matter whether you have static or dynamic deps, this is
the only way to cleanly avoid the problems if you want to keep a
package installed which is not maintained anymore:
*You* must maintain it. There simply is no magic which can avoid this.




Re: [gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Peter Stuge
Martin Vaeth wrote:
 The user has to put a corrected ebuild into his overlay and must
 reemerge the package (currently, the latter could be skipped with
 dynamic deps).
 In fact, no matter whether you have static or dynamic deps, this is
 the only way to cleanly avoid the problems if you want to keep a
 package installed which is not maintained anymore:
 *You* must maintain it. There simply is no magic which can avoid this.

It could be avoided if portage tree sync applied each tree change
locally rather than jump from old to new. There was a delta idea
discussed a year or so ago in connection with some git discussions.

The user's vardb could then automatically receive the last state of
the ebuild, before it was removed.

That's no small change though.


//Peter



Re: [gentoo-dev] RFC: USE flags in virtuals, to allow a specific provider to be determined

2014-07-28 Thread Michał Górny
Dnia 2014-07-25, o godz. 14:49:44
Ian Stakenvicius a...@gentoo.org napisał(a):

 Hey all..  So, putting aside for now how much of a mess this would be
 to implement in the virtuals' ebuilds themselves, what do people think
 of changing the virtuals so that they contain an entry in IUSE for
 each provider that can satisfy it?
 
 The idea here is that the package satisfying a virtual could be
 optionally explicitly-chosen through package.use (or USE= in
 make.conf, perhaps) instead of having an entry in @world, that way if
 nothing depends on the virtual then it and the provider can be
 - --depclean'ed from the system.  The idea is specifically NOT to have
 rdeps depend on these flags, that would undermine the whole purpose of
 the virtual; it would just be for end-users to set if they so chose.

I think I don't get this argument.

If you really want to have a particular provider for the virtual for
external purposes, it's fully purposeful to put it in @world or
otherwise in a custom set. In this case, USE flags aren't helpful.

If you only prefer a particular provider, you can tip portage easily to
use it without resorting to USE flags. This also allows portage to
semi-transparently switch to other provider if dependencies need it.
In this case, USE flags only make this auto-switching harder.

 This may also help with getting portage to peg a virtual's provider to
 a specific package instead of constantly trying to switch from one to
 another, ie, how systemd kept getting pulled in, in relation to the
 upower virtual.  Note - I haven't done any tests to determine if this
 actually helps with such issues tho (or even attempted to reproduce
 them, as i was apparently one of the lucky ones that it didn't happen to).

While I agree that finding some solution is a good step forward, I'm
afraid this doesn't really lead us anywhere. Even if it allows to
workaround the actual portage issue, I'm afraid we will hit it again
somewhere else. Shortly, Gentoo would be full of workarounds... oh
wait, it already is.

By the way, proper virtuals for krb5 would involve much more crazy
stuff to get slot operator right. And then Ciaran would yell at us for
abusing slots.

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


[gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Martin Vaeth
Peter Stuge pe...@stuge.se wrote:
 Martin Vaeth wrote:
 In fact, no matter whether you have static or dynamic deps, this is
 the only way to cleanly avoid the problems if you want to keep a
 package installed which is not maintained anymore:
 *You* must maintain it. There simply is no magic which can avoid this.

 It could be avoided if portage tree sync applied each tree change
 locally rather than jump from old to new. [...]
 The user's vardb could then automatically receive the last state of
 the ebuild, before it was removed.

It doesn't help reliably, either, since the last state of the ebuild,
before it was removed, will be outdated at some point, too.
It *is* necessary to adapt the dependencies to the current tree,
and if no maintainer is there to do this correctly for that package,
all empirics to push such changes will fail in some situations.




Re: [gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Peter Stuge
Martin Vaeth wrote:
  The user's vardb could then automatically receive the last state of
  the ebuild, before it was removed.
 
 It doesn't help reliably, either, since the last state of the ebuild,
 before it was removed, will be outdated at some point, too.

Sorry, I don't see how. Can you give an example? Thanks!


//Peter



Re: [gentoo-dev] RFC: USE flags in virtuals, to allow a specific provider to be determined

2014-07-28 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 26/07/14 10:40 AM, Manuel Rüger wrote:
 On 07/25/2014 08:49 PM, Ian Stakenvicius wrote:
 Hey all..  So, putting aside for now how much of a mess this
 would be to implement in the virtuals' ebuilds themselves, what
 do people think of changing the virtuals so that they contain an
 entry in IUSE for each provider that can satisfy it?
 
 The idea here is that the package satisfying a virtual could be 
 optionally explicitly-chosen through package.use (or USE= in 
 make.conf, perhaps) instead of having an entry in @world, that
 way if nothing depends on the virtual then it and the provider
 can be --depclean'ed from the system.  The idea is specifically
 NOT to have rdeps depend on these flags, that would undermine the
 whole purpose of the virtual; it would just be for end-users to
 set if they so chose.
 
 This may also help with getting portage to peg a virtual's
 provider to a specific package instead of constantly trying to
 switch from one to another, ie, how systemd kept getting pulled
 in, in relation to the upower virtual.  Note - I haven't done any
 tests to determine if this actually helps with such issues tho
 (or even attempted to reproduce them, as i was apparently one of
 the lucky ones that it didn't happen to).
 
 I don't know if this would aid heavy binpkg users or not.
 
 
 For completion, here's one of those rather messy examples:
 
 --- virtual/krb5-0.ebuild   2013-06-28 09:04:47.0
 -0400 +++ virtual/krb5-0.ebuild.new   2014-07-25
 14:47:48.0 -0400 @@ -2,7 +2,7 @@ # Distributed under the
 terms of the GNU General Public License v2 # $Header:
 /var/cvsroot/gentoo-x86/virtual/krb5/krb5-0.ebuild,v 1.2 
 2013/06/27 20:42:55 aballier Exp $
 
 -EAPI=3 +EAPI=5
 
 DESCRIPTION=Virtual for Kerberos V implementation HOMEPAGE= 
 @@ -11,7 +11,12 @@ LICENSE= SLOT=0 KEYWORDS=alpha amd64 arm
 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd
 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos -IUSE= 
 +IUSE=heimdal mit-krb5
 
 DEPEND= -RDEPEND=|| ( app-crypt/mit-krb5 app-crypt/heimdal ) 
 +RDEPEND=!mit-krb5? ( !heimdal? ( || ( app-crypt/mit-krb5 
 app-crypt/heimdal ) ) ) +   mit-krb5? ( app-crypt/mit-krb5 ) 
 +   heimdal? ( app-crypt/heimdal ) + +REQUIRED_USE=heimdal?
 ( !mit-krb5 ) +   mit-krb5? ( !heimdal )
 
 
 Thoughts?
 
 
 Thinking in another direction: Would it be possible to introduce
 pseudo-versioned useflags?
 
 This would solve a problem for virtual/libusb just with adding 
 IUSE==dev-libs/libusb-1.0.18
 
 virtual/libusb-1-r1 depends on either dev-libs/libusb or 
 sys-freebsd/freebsd-lib. The latter one is only compatible with 
 libusb-1.0.9, so packages depending on dev-libs/libusb-1.0.9 can't
 use the virtual.
 
 Assuming freebsd-lib becomes compatible with dev-libs/libusb
 again, packages will have to switch back to the virtual to support
 both.
 
 Depending on virtual/libusb[=dev-libs/libusb-1.0.18(+)] instead
 would just need a change in the virtual.
 
 Cheers,
 
 Manuel
 

This sounds like something that should still be doable with two
versions of the virtual/libusb package...  I mean, if something
*needs* a newer libusb than 1.0.9 , then it should appropriately
depend on a virtual/libusb that needs it.  Otherwise, it shouldn't
matter which provider provides virtual/libusb-1 , right??  So we keep
virtual/libusb-1 as-is, and add a virtual/libusb-1.0.10 (or whatever
version is appropriate) for anything that needs a newer one.  That
newer one would need to have a !sys-freebsd/freebsd-lib in it, I
think, to help keep it from being allowed to upgrade, but that itself
might not be necessary.

Or is it more complicated than that and i'm missing something?
-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iF4EAREIAAYFAlPWXDwACgkQ2ugaI38ACPBrOAD9EXzlINqnSFQ/SvSTcvVyiMLr
ZkMzt4ud98dvItB++5oBAKIg5Nc0p4jjtAj/DN1YsBw8yWkRyCLylJ6G7iKeeKT3
=U9cS
-END PGP SIGNATURE-



Re: [gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 26/07/14 11:22 AM, Ciaran McCreesh wrote:
 
 Let's start with the easiest issue: please point us all to the
 place where you proved how dynamic dependencies still work in the
 face of ebuild removals. Your solution to this problem will be of
 great benefit to all of us.
 

This is something I personally don't understand.  If an ebuild for a
package installed on the system has been removed from the tree, but
newer and/or older ebuilds exist in the tree, then the installed
package can #1 only be trusted in accordance with the ebuild copy
enbedded in VDB (that i get), BUT, #2 should be forced to either
upgrade or downgrade so that it matches what *is* in the tree anyhow,
and that's done via a standard ${PV} comparison that should happen
regardless of whether static or dynamic deps methods are in place.

IMO, if currently-installed versions of packages are satisfying
dependencies after those packages have been removed from the tree, I
don't see this as being particularly valid anyhow.  Sure, end-users
should be able to force this using masks or whatnot in the particular
cases they need to do this, but i don't think this should be in any
way a default behaviour, should it??  Ebuilds are removed for a reason...


-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iF4EAREIAAYFAlPWXncACgkQ2ugaI38ACPBWLQEAp3sB8lfdZ8FYmXRsxNy6SlHE
AR40+p+/x6J5+m4D618BAK4XKG64W92WFWne2rn3cDtdKuoQ+wwN2RBw066MoPJQ
=TyGx
-END PGP SIGNATURE-



Re: [gentoo-dev] RFC: USE flags in virtuals, to allow a specific provider to be determined

2014-07-28 Thread Michał Górny
Dnia 2014-07-28, o godz. 10:20:44
Ian Stakenvicius a...@gentoo.org napisał(a):

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA256
 
 On 26/07/14 10:40 AM, Manuel Rüger wrote:
  On 07/25/2014 08:49 PM, Ian Stakenvicius wrote:
  Hey all..  So, putting aside for now how much of a mess this
  would be to implement in the virtuals' ebuilds themselves, what
  do people think of changing the virtuals so that they contain an
  entry in IUSE for each provider that can satisfy it?
  
  The idea here is that the package satisfying a virtual could be 
  optionally explicitly-chosen through package.use (or USE= in 
  make.conf, perhaps) instead of having an entry in @world, that
  way if nothing depends on the virtual then it and the provider
  can be --depclean'ed from the system.  The idea is specifically
  NOT to have rdeps depend on these flags, that would undermine the
  whole purpose of the virtual; it would just be for end-users to
  set if they so chose.
  
  This may also help with getting portage to peg a virtual's
  provider to a specific package instead of constantly trying to
  switch from one to another, ie, how systemd kept getting pulled
  in, in relation to the upower virtual.  Note - I haven't done any
  tests to determine if this actually helps with such issues tho
  (or even attempted to reproduce them, as i was apparently one of
  the lucky ones that it didn't happen to).
  
  I don't know if this would aid heavy binpkg users or not.
  
  
  For completion, here's one of those rather messy examples:
  
  --- virtual/krb5-0.ebuild   2013-06-28 09:04:47.0
  -0400 +++ virtual/krb5-0.ebuild.new   2014-07-25
  14:47:48.0 -0400 @@ -2,7 +2,7 @@ # Distributed under the
  terms of the GNU General Public License v2 # $Header:
  /var/cvsroot/gentoo-x86/virtual/krb5/krb5-0.ebuild,v 1.2 
  2013/06/27 20:42:55 aballier Exp $
  
  -EAPI=3 +EAPI=5
  
  DESCRIPTION=Virtual for Kerberos V implementation HOMEPAGE= 
  @@ -11,7 +11,12 @@ LICENSE= SLOT=0 KEYWORDS=alpha amd64 arm
  hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd
  ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos -IUSE= 
  +IUSE=heimdal mit-krb5
  
  DEPEND= -RDEPEND=|| ( app-crypt/mit-krb5 app-crypt/heimdal ) 
  +RDEPEND=!mit-krb5? ( !heimdal? ( || ( app-crypt/mit-krb5 
  app-crypt/heimdal ) ) ) +   mit-krb5? ( app-crypt/mit-krb5 ) 
  +   heimdal? ( app-crypt/heimdal ) + +REQUIRED_USE=heimdal?
  ( !mit-krb5 ) +   mit-krb5? ( !heimdal )
  
  
  Thoughts?
  
  
  Thinking in another direction: Would it be possible to introduce
  pseudo-versioned useflags?
  
  This would solve a problem for virtual/libusb just with adding 
  IUSE==dev-libs/libusb-1.0.18
  
  virtual/libusb-1-r1 depends on either dev-libs/libusb or 
  sys-freebsd/freebsd-lib. The latter one is only compatible with 
  libusb-1.0.9, so packages depending on dev-libs/libusb-1.0.9 can't
  use the virtual.
  
  Assuming freebsd-lib becomes compatible with dev-libs/libusb
  again, packages will have to switch back to the virtual to support
  both.
  
  Depending on virtual/libusb[=dev-libs/libusb-1.0.18(+)] instead
  would just need a change in the virtual.
 
 This sounds like something that should still be doable with two
 versions of the virtual/libusb package...  I mean, if something
 *needs* a newer libusb than 1.0.9 , then it should appropriately
 depend on a virtual/libusb that needs it.  Otherwise, it shouldn't
 matter which provider provides virtual/libusb-1 , right??  So we keep
 virtual/libusb-1 as-is, and add a virtual/libusb-1.0.10 (or whatever
 version is appropriate) for anything that needs a newer one.  That
 newer one would need to have a !sys-freebsd/freebsd-lib in it, I
 think, to help keep it from being allowed to upgrade, but that itself
 might not be necessary.

Not a blocker but rather lack of this dependency. We'll probably have
to mask it in bsd profiles as well but otherwise looks fine.

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


Re: [gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Ciaran McCreesh
On Mon, 28 Jul 2014 10:30:15 -0400
Ian Stakenvicius a...@gentoo.org wrote:
 On 26/07/14 11:22 AM, Ciaran McCreesh wrote:
  
  Let's start with the easiest issue: please point us all to the
  place where you proved how dynamic dependencies still work in the
  face of ebuild removals. Your solution to this problem will be of
  great benefit to all of us.
  
 
 This is something I personally don't understand.  If an ebuild for a
 package installed on the system has been removed from the tree, but
 newer and/or older ebuilds exist in the tree, then the installed
 package can #1 only be trusted in accordance with the ebuild copy
 enbedded in VDB (that i get), BUT, #2 should be forced to either
 upgrade or downgrade so that it matches what *is* in the tree anyhow,
 and that's done via a standard ${PV} comparison that should happen
 regardless of whether static or dynamic deps methods are in place.

But you can't run pkg_prerm unless a package's dependencies are
satisfied. How do you know what those dependencies are, if you don't
use VDB and if the ebuild isn't there?

(This is a real issue: see the botched ruby-config switch.)

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] RFC: USE flags in virtuals, to allow a specific provider to be determined

2014-07-28 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 28/07/14 10:42 AM, Michał Górny wrote:
 Dnia 2014-07-28, o godz. 10:20:44 Ian Stakenvicius
 a...@gentoo.org napisał(a):
 
 -BEGIN PGP SIGNED MESSAGE- Hash: SHA256
 
 On 26/07/14 10:40 AM, Manuel Rüger wrote:
 On 07/25/2014 08:49 PM, Ian Stakenvicius wrote:
 Hey all..  So, putting aside for now how much of a mess this
  would be to implement in the virtuals' ebuilds themselves, 
 what do people think of changing the virtuals so that they 
 contain an entry in IUSE for each provider that can satisfy 
 it?
 
 The idea here is that the package satisfying a virtual could 
 be optionally explicitly-chosen through package.use (or USE= 
 in make.conf, perhaps) instead of having an entry in @world, 
 that way if nothing depends on the virtual then it and the 
 provider can be --depclean'ed from the system.  The idea is 
 specifically NOT to have rdeps depend on these flags, that 
 would undermine the whole purpose of the virtual; it would 
 just be for end-users to set if they so chose.
 
 This may also help with getting portage to peg a virtual's 
 provider to a specific package instead of constantly trying 
 to switch from one to another, ie, how systemd kept getting 
 pulled in, in relation to the upower virtual.  Note - I 
 haven't done any tests to determine if this actually helps 
 with such issues tho (or even attempted to reproduce them,
 as i was apparently one of the lucky ones that it didn't
 happen to).
 
 I don't know if this would aid heavy binpkg users or not.
 
 
 For completion, here's one of those rather messy examples:
 
 --- virtual/krb5-0.ebuild   2013-06-28 09:04:47.0
 -0400 +++ virtual/krb5-0.ebuild.new 2014-07-25
 14:47:48.0 -0400 @@ -2,7 +2,7 @@ # Distributed under
 the terms of the GNU General Public License v2 # $Header: 
 /var/cvsroot/gentoo-x86/virtual/krb5/krb5-0.ebuild,v 1.2 
 2013/06/27 20:42:55 aballier Exp $
 
 -EAPI=3 +EAPI=5
 
 DESCRIPTION=Virtual for Kerberos V implementation 
 HOMEPAGE= @@ -11,7 +11,12 @@ LICENSE= SLOT=0 
 KEYWORDS=alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64
 s390 sh sparc x86 ~amd64-fbsd ~amd64-linux ~x86-linux
 ~ppc-macos ~x86-macos -IUSE= +IUSE=heimdal mit-krb5
 
 DEPEND= -RDEPEND=|| ( app-crypt/mit-krb5
 app-crypt/heimdal ) +RDEPEND=!mit-krb5? ( !heimdal? ( || (
 app-crypt/mit-krb5 app-crypt/heimdal ) ) ) +   mit-krb5?
 ( app-crypt/mit-krb5 ) +   heimdal? ( app-crypt/heimdal
 ) + +REQUIRED_USE=heimdal? ( !mit-krb5 ) +   mit-krb5?
 ( !heimdal )
 
 
 Thoughts?
 
 
 Thinking in another direction: Would it be possible to 
 introduce pseudo-versioned useflags?
 
 This would solve a problem for virtual/libusb just with adding 
 IUSE==dev-libs/libusb-1.0.18
 
 virtual/libusb-1-r1 depends on either dev-libs/libusb or 
 sys-freebsd/freebsd-lib. The latter one is only compatible
 with libusb-1.0.9, so packages depending on
 dev-libs/libusb-1.0.9 can't use the virtual.
 
 Assuming freebsd-lib becomes compatible with dev-libs/libusb 
 again, packages will have to switch back to the virtual to 
 support both.
 
 Depending on virtual/libusb[=dev-libs/libusb-1.0.18(+)] 
 instead would just need a change in the virtual.
 
 This sounds like something that should still be doable with two 
 versions of the virtual/libusb package...  I mean, if something 
 *needs* a newer libusb than 1.0.9 , then it should appropriately
  depend on a virtual/libusb that needs it.  Otherwise, it 
 shouldn't matter which provider provides virtual/libusb-1 , 
 right??  So we keep virtual/libusb-1 as-is, and add a 
 virtual/libusb-1.0.10 (or whatever version is appropriate) for 
 anything that needs a newer one.  That newer one would need to 
 have a !sys-freebsd/freebsd-lib in it, I think, to help keep it 
 from being allowed to upgrade, but that itself might not be 
 necessary.
 
 Not a blocker but rather lack of this dependency. We'll probably 
 have to mask it in bsd profiles as well but otherwise looks fine.
 

Just not including the sys-freebsd/freebsd-lib atom in the newer
virtual generally makes sense, yes, but portage in particular will try
to upgrade the virtual and therefore also switch the provider from
freebsd-lib to the newer libusb on -uDN, right?  A mask in profiles
would do the trick (especially in this case due to there being two
distinct sets of profiles for each provider) but it would be easier in
the general case to handle this all in-ebuild if possible, wouldn't it?

Back to my use flag suggestion -- this is an example that I don't
think use flags could help; indeed i think the use flags would get in
the way more than anything:  #1, the newer version of the virtual
would need to keep the flag for the missing provider to have any
effect, and this just seems wrong; #2, the only flag-based blocking
that could occur would be REQUIRED_USE or pkg_pretend, and both of
those would keep an emerge -uDN @world from starting until resolved,
instead of just disallowing the virtual from being 

Re: [gentoo-dev] Re: Avoiding rebuilds

2014-07-28 Thread Brian Dolbec
On Mon, 28 Jul 2014 05:49:07 + (UTC)
Martin Vaeth mar...@mvath.de wrote:

 hasufell hasuf...@gentoo.org wrote:
  Ulrich Mueller:
 
  I wonder if it wouldn't be saner to leave our revision syntax
  untouched.
 
 As already mentioned, -r1.1 is only one of several possible ways
 how to achieve the same aim; I am not speaking in favour for a
 particular method.
 The -r1.1 method has the advantage of being simple and transparent
 to the user and developer.  Other approaches have other advantages:
 
  Instead, one could introduce a variable INSTALL_VERSION that would
 
 (It would have to be a variable stored in the metadata/ cache
 and thus also would only work with a new API, but these are only
 technical details.)
 
  default to ${PVR} but could be set to the version of a previous
  ebuild instead. The PM could compare it against INSTALL_VERSION in
  the VDB and skip build and installation if versions match.
 
 It should be a list and have empty default (*never* including the
 version itself), but these are also technical details.
 This solution would have the advantage that you could specify
 *full* versions and thus have even more fine-grained control when
 recompilations are necessary. One could also allow specify version
 ranges, slots, overlays, etc., perhaps even make the behaviour
 dependent of USE-flags, as you already mentioned, all
 similarl to current DEPEND syntax.
 
 The disadvantage is that it is slightly more work than -r1.1,
 less transparent, and easily overlooked to remove for a version bump,
 causing issues like these:
 
  It will probably also cause confusion for comaintainers and
  collaborators, especially when INSTALL_VERSION points to a version
  that has already been removed.
 
 

I haven't had the energy to read all the mails over all the dynamic
deps thread...

the -r1.1 syntax has been in use by the prefix since early in it's
existence.  I haven't kept track, but they may have finally done away
with it.

There are many other problems with using that syntax, namely most other
tools are not compatible with it, so more than just portage needs to be
modified.  Adding that syntax to ebuilds will cause disruptions and bugs
for years to come.

So, please, forget about this syntax as a viable solution.

-- 
Brian Dolbec dolsen




Re: [gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 28/07/14 10:43 AM, Ciaran McCreesh wrote:
 On Mon, 28 Jul 2014 10:30:15 -0400 Ian Stakenvicius
 a...@gentoo.org wrote:
 On 26/07/14 11:22 AM, Ciaran McCreesh wrote:
 
 Let's start with the easiest issue: please point us all to the 
 place where you proved how dynamic dependencies still work in
 the face of ebuild removals. Your solution to this problem will
 be of great benefit to all of us.
 
 
 This is something I personally don't understand.  If an ebuild
 for a package installed on the system has been removed from the
 tree, but newer and/or older ebuilds exist in the tree, then the
 installed package can #1 only be trusted in accordance with the
 ebuild copy enbedded in VDB (that i get), BUT, #2 should be
 forced to either upgrade or downgrade so that it matches what
 *is* in the tree anyhow, and that's done via a standard ${PV}
 comparison that should happen regardless of whether static or
 dynamic deps methods are in place.
 
 But you can't run pkg_prerm unless a package's dependencies are 
 satisfied. How do you know what those dependencies are, if you
 don't use VDB and if the ebuild isn't there?
 
 (This is a real issue: see the botched ruby-config switch.)
 

Yes, that's an issue -- I thought the pkg-*rm case had to do with the
ebuild's phase definition itself being (or not being) updated, I
haddn't thought about it in terms of dependencies being unsatisfied.

Keeping every single dependency around and valid just so that pkg_*rm
can completely cleanly seems like so much overkill, though..
Unfortunately the only way I see around that would be to have some
form of reduced subset, which would mean yet-another-*DEPEND, and we
all know that's not going to happen..

I wonder if there would be a way to somehow add restrictions to
pkg_*rm phases s.t. either REPLACED_BY_VERSION's dependencies must be
satisfied at the time the phases are run, or REPLACED_BY_VERSION is
empty and the in-VDB ones must be satisfied.  It'll be a pain for
dev's to make sure their stuff works within these restrictions, and
the likeliness of repoman being able to enforce any sort of QA on this
probably so close to zero it doesn't matter, but i'm not seeing
another way.

(outside of forcing the in-vdb deps to always remain satisfied, of
course; however i think the dependencies-get-upgraded-first approach
which is generally necessary for all but PDEPEND can still cause
breakage here too, no??)



-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iF4EAREIAAYFAlPWbpMACgkQ2ugaI38ACPBkdwEAsPg3Gu4I3LuXfBuvrxfGJ3D6
sv/ZOROo0a0xPzQ8IZgA/icJDURR+a0mrvT2fwSzXNfd+azvaaKxjNOcRPHOcSYE
=YElO
-END PGP SIGNATURE-



Re: [gentoo-dev] don't rely on dynamic deps

2014-07-28 Thread Rich Freeman
On Mon, Jul 28, 2014 at 12:29 PM, Ian Stakenvicius a...@gentoo.org wrote:
 As has been mentioned or alluded to before, this is fine as long as
 end-users --sync when the dependency change is still in the tree.
 However, if that doesn't happen then we still end up with the issue.

 Of course, if that is the case, then #2 shouldn't happen either
 (because the end-user system wouldn't see B as having been removed and
 therefore --depclean won't remove it).

Agree.  Things stay consistent either way if everything is done properly.

Bottom line is that if you keep PVs installed which aren't in portage,
you're on your own.  They could contain known bugs that we fixed in a
revbump that you missed, or they could contain security issues that we
don't bother to check for since we don't have the PV in our
repository, etc.  If you keep such a PV installed then you're the
maintainer, so good luck!

If a more recent version is in portage, then your old ebuild will
probably uninstall cleanly (or at least as cleanly as it would with
static deps), and the upgrade will hopefully be in better shape.

Rich



Re: [gentoo-dev] don't rely on dynamic deps

2014-07-28 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 27/07/14 05:08 PM, Rich Freeman wrote:
 On Sun, Jul 27, 2014 at 4:24 PM, Michał Górny mgo...@gentoo.org
 wrote:
 Dnia 2014-07-27, o godz. 10:42:19
 
 Consider the following:
 
 1. A depends on B, both are installed,
 
 2. dependency on B is removed, emerge --depclean uninstalls B
 thanks to dynamic-deps,
 
 3. B is treecleaned (nothing depends on it),
 
 4. old version of A is removed (user doesn't update it yet),
 therefore dependency on B is restored from vdb.
 
 So, now user has package A installed which has unsatisfied
 dependency on non-available package.
 
 I'd think that portage should update vdb as soon as it detects the 
 dependency change.  Then B would no longer depend on A in vdb.  It 
 shouldn't hold onto outdated information.  Basically a dependency 
 change should trigger a no-rebuild merge if it is safe to do so,
 and if not there should be a revbump anyway.

As has been mentioned or alluded to before, this is fine as long as
end-users --sync when the dependency change is still in the tree.
However, if that doesn't happen then we still end up with the issue.

Of course, if that is the case, then #2 shouldn't happen either
(because the end-user system wouldn't see B as having been removed and
therefore --depclean won't remove it).


...why do i feel like i'm getting the same headache i had in my 2nd
year databases course, when i was trying to wrap my head around ACID
compliance and transaction visibility
-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iF4EAREIAAYFAlPWelAACgkQ2ugaI38ACPCokAEAvDNcn+kJ6WTpL+hMAjexRuJX
mbHoj9pGsuFQ2kqoL7YA/1n9mZ2zDpVBurXLflU2KpqNgGx3E/ujozBOveHzoII+
=0Zgq
-END PGP SIGNATURE-



Re: [gentoo-dev] RFC: USE flags in virtuals, to allow a specific provider to be determined

2014-07-28 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 28/07/14 07:21 AM, Michał Górny wrote:
 Dnia 2014-07-25, o godz. 14:49:44 Ian Stakenvicius a...@gentoo.org
 napisał(a):
 
 Hey all..  So, putting aside for now how much of a mess this
 would be to implement in the virtuals' ebuilds themselves, what
 do people think of changing the virtuals so that they contain an
 entry in IUSE for each provider that can satisfy it?
 
 The idea here is that the package satisfying a virtual could be 
 optionally explicitly-chosen through package.use (or USE= in 
 make.conf, perhaps) instead of having an entry in @world, that
 way if nothing depends on the virtual then it and the provider
 can be - --depclean'ed from the system.  The idea is specifically
 NOT to have rdeps depend on these flags, that would undermine the
 whole purpose of the virtual; it would just be for end-users to
 set if they so chose.
 
 I think I don't get this argument.
 
 If you really want to have a particular provider for the virtual
 for external purposes, it's fully purposeful to put it in @world
 or otherwise in a custom set. In this case, USE flags aren't
 helpful.

The argument I was trying to make is that USE flags would allow
end-users to accomplish the same thing, while not having an entry in
@world and therefore allowing the package to be --depclean'ed if the
virtual is --depcleaned.

I personally don't use sets so i've no idea if the exact same thing
could be accomplished in sets; for some reason i don't think so.


 
 If you only prefer a particular provider, you can tip portage
 easily to use it without resorting to USE flags. This also allows
 portage to semi-transparently switch to other provider if
 dependencies need it. In this case, USE flags only make this
 auto-switching harder.

That is the other part of this idea, to make auto-switching harder,
because right now portage likes to auto-switch even when it seems like
it shouldn't.

I figure this idea would also help with Ciaran's wishlist item of ||()
deps becoming more strictly-controlled and readily deterministic.


-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iF4EAREIAAYFAlPWgi8ACgkQ2ugaI38ACPBfoQD/bZmCxCdLM9EyeJRrst5QmD9X
NS2Y0HCNhRnCfAuplUYA/2UHibYB6YHdKOi40RkWOUA0KMTRSwXYPR6dYsmByiQL
=njwB
-END PGP SIGNATURE-



Re: [gentoo-dev] Lastrites: app-crypt/opencdk, net-dialup/gnome-ppp, media-plugins/vdr-dxr3, media-video/dxr3config, media-video/em8300-libraries, net-misc/xsupplicant, sys-cluster/util-vserver, www-a

2014-07-28 Thread James Cloos
 AX == Alex Xu alex_y...@yahoo.ca writes:

AX Please don't crosspost followup messages, especially to the same mailing
AX list twice.

Ick.  I didn't notice the cc details when I replied. ☹

-JimC
-- 
James Cloos cl...@jhcloos.com OpenPGP: 0x997A9F17ED7DAEA6



Re: [gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 27/07/14 08:04 AM, Rich Freeman wrote:
 On Sun, Jul 27, 2014 at 6:43 AM, Kent Fredric
 kentfred...@gmail.com wrote:
 
 In a no dynamic deps, period scenario, this just strikes me as
 2 flavours of the same weirdness, -r2 and -r1.1 are just equally
 weird choices to make if the ebuild itself doesn't change at
 all.
 
 You have a good point here.
 
 With this proposal we have three kinds of ebuild changes: 1.  Those
 that do not involve any revbump. 2.  Those with a minor revbump
 (ie -r1 - -r1.1). 3.  Those with a normal revbump (ie -r1 -
 -r2).
 
 What is the purpose of allowing the first?  Presumably that should
 be used in even more limited circumstances than a minor revbump, so
 why allow it at all?  Why not just make an in-place change
 equivalent to a minor revbump and ditch the minor revbump entirely?
 Devs would still need to distinguish between what requires a
 revbump and what does not.
 
 Doing this would require having portage cache a hash of whatever 
 ebuild it last parsed, and perhaps its eclasses as well if we
 permit revbump-less eclass changes.  Then it would have to check
 for when these change, perhaps this might be stored in the metadata
 to speed things up.
 
 You could view such an approach as being equivalent to just
 sticking a .hash on every ebuild in the tree as a minor revision
 tag, so that any change triggers a minor revision.  The only
 difference between that and the proposal that I can see is that the
 minor revisions would be unordered.  However, if we go with the
 theory that defective ebuilds get removed immediately then there is
 no point in ordering minor revisions because there will only be one
 in the tree at any time for a given major revision, so the package
 manager couldn't take advantage of any information conveyed by
 ordering.
 
 This probably isn't too different from what portage is doing
 already, except: 1.  Portage is only looking for dependency changes
 when it has another reason to look closely at the ebuild - it has
 no mechanism to detect that an ebuild changes, and this would add
 one. 2.  We don't have any clear policies today on when ebuilds
 should be revbumped or not as the result of things like dependency
 changes, and this would cause us to make some.
 
 The fact that this isn't a big change does concern me that it may
 not fix all of the underlying problems.  However, some of those
 problems might not actually have clean solutions other than never
 committing mistakes in the first place.  For example, if a prerm
 dependency was missing then removing the ebuild can potentially
 fail whether you use dynamic deps or not until it is satisfied.
 

The primary underlying problem I see about this is that it doesn't
force devs to start doing something to the tree that will suddenly
help make all of the static-deps-only PMs (ie, those that aren't going
to implement this new hash-changed-so-re-evaluate-ebuild method)
suddenly work in a more consistent fashion.  IIRC, the very first post
of this thread was a reminder to dev's to revbump so that static-deps
behaviour is more correct/consistent.


However, if we put something into the next EAPI about this and make it
a requirement for all PMs (although I have no idea how we would roll
this out; maybe make it a profile-level requirement instead of an
ebuild-level one, if there is such a thing??) then it would become
much less of an issue..  Mind you, we need to solve all of the
problems first and make sure PMS documents all of the requirements in
an appropriately complete and ambiguity-preventing manner that
everyone agrees with..  Easy, right? :)





-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iF4EAREIAAYFAlPWlfYACgkQ2ugaI38ACPApTwD9H+PX4f1XGtauwbjfXczPqAYf
yBqDW9MOwIlWPCqeu6IA/ipySyWxA/J12RSuLTNyj98li9Qmeq0GLR37KSZ2Cc/p
=05lZ
-END PGP SIGNATURE-



Re: [gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Rich Freeman
On Mon, Jul 28, 2014 at 2:27 PM, Ian Stakenvicius a...@gentoo.org wrote:

 The primary underlying problem I see about this is that it doesn't
 force devs to start doing something to the tree that will suddenly
 help make all of the static-deps-only PMs (ie, those that aren't going
 to implement this new hash-changed-so-re-evaluate-ebuild method)
 suddenly work in a more consistent fashion.  IIRC, the very first post
 of this thread was a reminder to dev's to revbump so that static-deps
 behaviour is more correct/consistent.

I think the intent here is to define how we want the PM to behave, and
what kinds of changes should require revbumps (ie those the PM can't
handle otherwise).

Obvious a side-effect of this will be that PMs that don't behave as we
intend them to may have issues.


 However, if we put something into the next EAPI about this and make it
 a requirement for all PMs (although I have no idea how we would roll
 this out; maybe make it a profile-level requirement instead of an
 ebuild-level one, if there is such a thing??)

It may make sense to do this via a new EAPI, though I think figuring
out what we want to do comes first.  That is, I want to ask the
question if no PMs existed and we were writing our first one, how
would we want it to behave?  Getting from here to there is the next
problem.

Really the issue comes down to how we maintain ebuilds.  If we aren't
revbumping for dependency errors, then PMs that don't handle dynamic
deps wouldn't update their dependencies.  That certainly has
consequences, but whether they're considered bugs/problems/etc is a
bit up for debate.

I'm not convinced that it makes sense to do micro-revbumps just to
force PMs that don't have any concept of dynamic dependencies to treat
them as full revbumps.  Devs can still forget to do them, and it
results in churn that doesn't seem necessary to me.  On the other hand
I don't want to make life even more difficult on those using
alternative PMs (though it sounds like we're doing this already).

It seems like we aren't getting many more new options here.

Rich



[gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Martin Vaeth
Peter Stuge pe...@stuge.se wrote:
 Martin Vaeth wrote:
  The user's vardb could then automatically receive the last state of
  the ebuild, before it was removed.

 It doesn't help reliably, either, since the last state of the ebuild,
 before it was removed, will be outdated at some point, too.

 Sorry, I don't see how. Can you give an example? Thanks!

1. foo depends on bar
2. user installs foo
3. foo is treecleaned
4. bar ebuild is replaced by the pair bar-base and bar-gui to
   allow for finer dependency. All ebuilds in the tree take
   care about this new structure (possibly with revbumps).
   Of course, the dependency for an already removed package
   is not fixed.
5. bar{-base,gui} gets several upgrades.
6. foo on user's system still blocks bar from being removed
   and thus blocks the installation of bar-base and bar-gui
   forever.
   Alternatively (if no conflict arises), foo depends forever on an
   ancient (hence possibly full of security bugs) version of bar
   which should have been upgraded ages ago.

In both cases of 6., the user is not even aware that he uses
long obsolete packages unless portage prints a big fat warning
for orphaned packages (which currently is not the case.
Well, at least eix -t will be print a message.)

Note that 4. cannot be replaced by any pushing mechanism,
since only the maintainer of the ebuild can know which is
the right dependency for the new tree structure. Such a
maintainer does not exist for treecleaned packages (which
is the purpose of treecleaning, after all...)




Re: [gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Rich Freeman
On Mon, Jul 28, 2014 at 2:50 PM, Martin Vaeth mar...@mvath.de wrote:

 In both cases of 6., the user is not even aware that he uses
 long obsolete packages unless portage prints a big fat warning
 for orphaned packages (which currently is not the case.
 Well, at least eix -t will be print a message.)


This is really the crux of these sorts of issues.  It doesn't matter
if dependencies are static or dynamic - if you hang onto orphans then
you're going to have cruft in your vdb which is going to lead to
blockers of some kind eventually.

Portage should probably generate a warning when there are orphan packages.

The same is true if you keep cruft in a local overlay or such.  We can
have all the pretty virtuals/etc we want, but if users stick
hard-coded obsolete package names in their overlays or have them in
their vdb, then they're going to get blockers.  Though, we could do a
better job with the error messages even when that happens...

Rich



[gentoo-dev] Re: don't rely on dynamic deps

2014-07-28 Thread Martin Vaeth
Ian Stakenvicius a...@gentoo.org wrote:

 Keeping every single dependency around and valid just so that pkg_*rm
 can completely cleanly seems like so much overkill, though..

It is not only overkill, it would require a merging strategy which
AFAIK portage currently does not use and which would lead to blockers:

If you really want to guarantee that all := dependencies are
satisfied in the moment of unmerging, you need to do the following.

Assume foo depends on bar:=. Now if bar gets an upgrade, first
foo must be unmerged, then bar must be upgraded, and then
foo must be reemerged.

If you have a circular dependency of := chains, an upgrade
is impossible forever: You would manually have to break this
chain by setting some useflags exactly in the same way as
you did when you manages to install the chain for the first time.
Otherwise, you will just miss the possibly avilable updates
forever.

The problems if you really want to guarantee that all
dependencies are still installed when unmerging a package
are hardly reasonably solvable.

One should better make a rule that if an ebuild has such a
special requirement that it needs a certain version for
being unmerged, it must block all other versions
(one could make a syntax for the := case or even disallow
this case for such ebuilds) instead of letting the PM jump
through hoops for the normal cases.




Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in media-libs/x265: x265-1.0.ebuild ChangeLog x265-1.2.ebuild x265-0.8.ebuild

2014-07-28 Thread Markus Meier
On Mon, 28 Jul 2014 11:02:58 +0300
Samuli Suominen ssuomi...@gentoo.org wrote:

 
 On 28/07/14 09:41, Samuli Suominen wrote:
  On 27/07/14 22:01, Markus Meier (maekke) wrote:
  maekke  14/07/27 19:01:15
 
Modified: x265-1.0.ebuild ChangeLog x265-1.2.ebuild
  x265-0.8.ebuild
Log:
add ~arm, bug #510340
  Package bumping is done by, eg.:
 
  # cp x265-.ebuild x265-1.3.ebuild
 
  And then,
 
  # grep *.ebuild
 
  x265-1.2.ebuild:KEYWORDS=~amd64 ~arm ~x86
  x265-1.3.ebuild:KEYWORDS=~amd64 ~x86
  x265-.ebuild:KEYWORDS=~amd64 ~x86
 
  As in... You forgot to add ~arm to -.ebuild
 
 
 Fixed that for you.
 

Thanks.


Regards,
Markus


signature.asc
Description: PGP signature


Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in media-libs/x265: x265-1.0.ebuild ChangeLog x265-1.2.ebuild x265-0.8.ebuild

2014-07-28 Thread Denis Dupeyron
On Mon, Jul 28, 2014 at 12:41 AM, Samuli Suominen ssuomi...@gentoo.org wrote:
 x265-1.2.ebuild:KEYWORDS=~amd64 ~arm ~x86
 x265-1.3.ebuild:KEYWORDS=~amd64 ~x86
 x265-.ebuild:KEYWORDS=~amd64 ~x86

 As in... You forgot to add ~arm to -.ebuild

Wait, what? Live ebuilds are keyworded now?

Denis.



Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in media-libs/x265: x265-1.0.ebuild ChangeLog x265-1.2.ebuild x265-0.8.ebuild

2014-07-28 Thread Alex Xu
On 28/07/14 08:15 PM, Denis Dupeyron wrote:
 On Mon, Jul 28, 2014 at 12:41 AM, Samuli Suominen ssuomi...@gentoo.org 
 wrote:
 x265-1.2.ebuild:KEYWORDS=~amd64 ~arm ~x86
 x265-1.3.ebuild:KEYWORDS=~amd64 ~x86
 x265-.ebuild:KEYWORDS=~amd64 ~x86

 As in... You forgot to add ~arm to -.ebuild
 
 Wait, what? Live ebuilds are keyworded now?
 
 Denis.
 

http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-libs/x265/x265-.ebuild?revision=1.9view=markup#l9



signature.asc
Description: OpenPGP digital signature


[gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in media-libs/x265: x265-1.0.ebuild ChangeLog x265-1.2.ebuild x265-0.8.ebuild

2014-07-28 Thread Duncan
Denis Dupeyron posted on Mon, 28 Jul 2014 18:15:20 -0600 as excerpted:

 On Mon, Jul 28, 2014 at 12:41 AM, Samuli Suominen ssuomi...@gentoo.org
 wrote:
 x265-1.2.ebuild:KEYWORDS=~amd64 ~arm ~x86
 x265-1.3.ebuild:KEYWORDS=~amd64 ~x86
 x265-.ebuild:   KEYWORDS=~amd64 ~x86

 As in... You forgot to add ~arm to -.ebuild
 
 Wait, what? Live ebuilds are keyworded now?

AFAIK, gentoo policy is that live ebuilds should always be masked so as 
never to be automatically pulled in without a deliberate unmasking of the 
live ebuild, but whether that's masked due to lack of keywords (ebuild), 
or due to hard-mask (package.mask) is I believe up to the maintainer.

For packages like this one where normal version-bumps start with the live 
ebuild (which after all should have been updated as development 
proceeded, upstream), simply copying it to the appropriate version-number 
ebuild, keeping it ~arch-keyworded on all archs where the non-live 
version is at least ~arch-keyworded, and using package.mask to force the 
masking, makes the most sense since then a version bump can literally 
amount to no more than an ebuild copy and manifest (tho obviously the 
maintainer will test it too, but ideally won't have to actually touch the 
content of the file).

-- 
Duncan - List replies preferred.   No HTML msgs.
Every nonfree program has a lord, a master --
and if you use the program, he is your master.  Richard Stallman




Re: [gentoo-dev] RFC: USE flags in virtuals, to allow a specific provider to be determined

2014-07-28 Thread James Potts
On Mon, Jul 28, 2014 at 12:02 PM, Ian Stakenvicius a...@gentoo.org wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA256

 On 28/07/14 07:21 AM, Michał Górny wrote:
 Dnia 2014-07-25, o godz. 14:49:44 Ian Stakenvicius a...@gentoo.org
 napisał(a):

 Hey all..  So, putting aside for now how much of a mess this
 would be to implement in the virtuals' ebuilds themselves, what
 do people think of changing the virtuals so that they contain an
 entry in IUSE for each provider that can satisfy it?

 The idea here is that the package satisfying a virtual could be
 optionally explicitly-chosen through package.use (or USE= in
 make.conf, perhaps) instead of having an entry in @world, that
 way if nothing depends on the virtual then it and the provider
 can be - --depclean'ed from the system.  The idea is specifically
 NOT to have rdeps depend on these flags, that would undermine the
 whole purpose of the virtual; it would just be for end-users to
 set if they so chose.

 I think I don't get this argument.

 If you really want to have a particular provider for the virtual
 for external purposes, it's fully purposeful to put it in @world
 or otherwise in a custom set. In this case, USE flags aren't
 helpful.

 The argument I was trying to make is that USE flags would allow
 end-users to accomplish the same thing, while not having an entry in
 @world and therefore allowing the package to be --depclean'ed if the
 virtual is --depcleaned.

 I personally don't use sets so i've no idea if the exact same thing
 could be accomplished in sets; for some reason i don't think so.



 If you only prefer a particular provider, you can tip portage
 easily to use it without resorting to USE flags. This also allows
 portage to semi-transparently switch to other provider if
 dependencies need it. In this case, USE flags only make this
 auto-switching harder.

 That is the other part of this idea, to make auto-switching harder,
 because right now portage likes to auto-switch even when it seems like
 it shouldn't.

 I figure this idea would also help with Ciaran's wishlist item of ||()
 deps becoming more strictly-controlled and readily deterministic.


 -BEGIN PGP SIGNATURE-
 Version: GnuPG v2

 iF4EAREIAAYFAlPWgi8ACgkQ2ugaI38ACPBfoQD/bZmCxCdLM9EyeJRrst5QmD9X
 NS2Y0HCNhRnCfAuplUYA/2UHibYB6YHdKOi40RkWOUA0KMTRSwXYPR6dYsmByiQL
 =njwB
 -END PGP SIGNATURE-

Also, what about the case where multiple providers for the same
virtual are installed but the first doesn't satisfy the dependency?
Currently, portage only looks at the installed state of the providers,
in order, and will use the first installed provider it finds even if
it doesn't actually satisfy the dependency (e.g. due to use deps) and
the dependency is already satisfied by a different installed provider.
Paludis has an elegant solution for this situation (-F/-A), but afaik
portage doesn't.  Use flags in virtuals would solve this without
having to hack around in portage and have it check all possible deps
before choosing one.

--James



Re: [gentoo-dev] RFC: USE flags in virtuals, to allow a specific provider to be determined

2014-07-28 Thread Michał Górny
Dnia 2014-07-28, o godz. 13:02:39
Ian Stakenvicius a...@gentoo.org napisał(a):

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA256
 
 On 28/07/14 07:21 AM, Michał Górny wrote:
  Dnia 2014-07-25, o godz. 14:49:44 Ian Stakenvicius a...@gentoo.org
  napisał(a):
  
  Hey all..  So, putting aside for now how much of a mess this
  would be to implement in the virtuals' ebuilds themselves, what
  do people think of changing the virtuals so that they contain an
  entry in IUSE for each provider that can satisfy it?
  
  The idea here is that the package satisfying a virtual could be 
  optionally explicitly-chosen through package.use (or USE= in 
  make.conf, perhaps) instead of having an entry in @world, that
  way if nothing depends on the virtual then it and the provider
  can be - --depclean'ed from the system.  The idea is specifically
  NOT to have rdeps depend on these flags, that would undermine the
  whole purpose of the virtual; it would just be for end-users to
  set if they so chose.
  
  I think I don't get this argument.
  
  If you really want to have a particular provider for the virtual
  for external purposes, it's fully purposeful to put it in @world
  or otherwise in a custom set. In this case, USE flags aren't
  helpful.
 
 The argument I was trying to make is that USE flags would allow
 end-users to accomplish the same thing, while not having an entry in
 @world and therefore allowing the package to be --depclean'ed if the
 virtual is --depcleaned.

If you need it externally, you need it not depcleaned, obviously. So
you have to have something in @world. If you need a specific
implementation, it's more elegant to put that in @world rather than
the virtual and playing with USE flags.

  If you only prefer a particular provider, you can tip portage
  easily to use it without resorting to USE flags. This also allows
  portage to semi-transparently switch to other provider if
  dependencies need it. In this case, USE flags only make this
  auto-switching harder.
 
 That is the other part of this idea, to make auto-switching harder,
 because right now portage likes to auto-switch even when it seems like
 it shouldn't.

This is a bug in portage and should be fixed there. As I said, working
it around will only fix it for one package, and it will happen again
and again, possibly in cases harder to pinpoint.

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


Re: [gentoo-portage-dev] Pending changes to Portage ebuild behavior

2014-07-28 Thread Sebastian Luther
Am 28.07.2014 17:03, schrieb Michał Górny:
 Hello, everyone.
 
 New install ---
 
 1. no /usr/lib/portage/pym (it's not really necessary with 
 python_targets),

We need to make that emerge -C prevents the removal of the last python
version for which portage is installed then. That may already work.

 
 2. all python modules  bytecode in site-packages,
 
 3. emerge and other tools load portage from site-packages [proper 
 bytecode used],

Other tools already do that. Emerge is a different thing. It's not a
tool based on portage. emerge and portage are two large,
interconnected things. (run git grep _emerge in pym/portage)

 
 4. but python modules need to be able to locate
 /usr/lib/portage/bin somehow.
 
 

What about hardcoding this path at install time? Looking at pkgcore
might give you some hints.