[gentoo-dev] heads up: glibc-2.20 will require =linux-2.6.32

2014-08-03 Thread Mike Frysinger
upstream glibc has dropped support for older Linux kernels.  your choices:
 - upgrade your kernel
 - switch to a different C library
 - stick with glibc-2.19 for a while

be warned though there are no plans atm to backport things to glibc-2.19.  
this includes security fixes, but more importantly as time moves on, making 
newer gcc versions sanely compile glibc.  we've kept older glibc versions 
around to be nice, and on a part time basis for cross-compiling, but none of 
those are given priority.  i.e. fixes come as people feel like doing them.

certainly once glibc-2.20+ goes stable, there is no expectation let alone 
requirement that packages in the tree be kept working with older glibc 
versions.  the maintenance cost there is unreasonable.

i guess if you're stuck on old crap, now would be a good time to start 
preparing to unstick your crap.  glibc-2.20 will most likely be in ~arch in 
the next 6 months.
-mike

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


Re: [gentoo-dev] heads up: glibc-2.20 will require =linux-2.6.32

2014-08-03 Thread Samuli Suominen

On 03/08/14 16:16, Mike Frysinger wrote:
 upstream glibc has dropped support for older Linux kernels.  your choices:
  - upgrade your kernel
  - switch to a different C library
  - stick with glibc-2.19 for a while

 be warned though there are no plans atm to backport things to glibc-2.19.  
 this includes security fixes, but more importantly as time moves on, making 
 newer gcc versions sanely compile glibc.  we've kept older glibc versions 
 around to be nice, and on a part time basis for cross-compiling, but none of 
 those are given priority.  i.e. fixes come as people feel like doing them.

 certainly once glibc-2.20+ goes stable, there is no expectation let alone 
 requirement that packages in the tree be kept working with older glibc 
 versions.  the maintenance cost there is unreasonable.

 i guess if you're stuck on old crap, now would be a good time to start 
 preparing to unstick your crap.  glibc-2.20 will most likely be in ~arch in 
 the next 6 months.
 -mike

use of 2.6.32 needs ~sys-fs/udev-208 (kept around for late 2.6.32 patchsets)
use of current udev needs at least 2.6.39 for CONFIG_FHANDLE

so there's more problems with running such a old kernel than just glibc

just saying



[gentoo-dev] Re: Avoiding rebuilds

2014-08-03 Thread Martin Vaeth
Steven J. Long sl...@rathaus.eclipse.co.uk wrote:

 collect your thoughts into a forum post

You are right: Not everybody on this list is interested in all
technical details, so it is perhaps better to shift this discussion
to the forums. I have opened the topic

https://forums.gentoo.org/viewtopic-p-7593700.html#7593700

with a summary of the various suggestions (and a very rough sketch
of their advantages/disadvantages).

 Sounds like something that repoman could check, once a GLEP and impl
 are in place.

The problem I meant is that repoman is no able to check it:
It can be completely reasonable that the value of that metadata
variable is unchanged, that is, repoman should not even spit a
warning in this case.
Unless one adds an artificial mechanism (like encoding the revision
into the variable name or variable content) which *forces* the
maintainer to change/check that variable.
But any such mechanism I can think of is inconvenient and
possibly confusing.




[gentoo-dev] The meaning of || ( a:= b:= ) dependencies

2014-08-03 Thread Michał Górny
Hello, everyone.

I would like to hear your opinion on what should be the meaning and use
of '|| ( A:= B:= )' dependencies.


By the PMS-y definition, any-of dependency can be satisfied by either
branch of it, and the provider can be safely switched at runtime. That
is:

  || ( A B )

means that either a or b has to be installed. If you built the package
against A, you can install B, uninstall A and everything is supposed to
work without rebuilding. That doesn't really happen when linking is
involved.

With help of subslots and virtuals we were able to partially solve
the issue. For example, look at virtual/libudev. It binds subslot of
the virtual to matching subslots of provider libraries. This way, you
can safely switch providers as long as they have matching ABI; and if
you want to upgrade the provider to another ABI version, you need to
upgrade the virtual as well, and therefore rebuild the revdeps.

Sadly, virtuals like this can only work when you can expect providers
to have matching ABIs. This won't happen e.g. in krb5 providers
(the two have incompatible ABIs) or libav* providers (ABIs of some of
the libraries differ from version to version).


At the moment, some developers already started mixing subslot
and any-of operator syntax:

  || ( A:= B:= )

However, this breeds a really weird behavior in Portage.

With static dependency model, it's partially understandable. ':=' atoms
are expanded into specific subslots when matching package is installed,
otherwise left unspecified. 'Unspecified' here means that any subslot
satisfies the dependency -- like it was plain 'A' or 'B'.

So, if during the build only A was installed, further upgrades to A can
cause subslot rebuilds. If only B was installed, rebuilds are caused by
B likewise.

However, if afterwards the other package is installed, it satisfies
the other branch of the dependency without subslot, so package doesn't
get rebuild on any upgrades of A or B (since the unspecific dep always
matches). This happens until the package is manually rebuild and gets
the other subslot written.

Even more curious behavior is caused if both A and B are installed at
build time. In this case, subslots for both packages are expanded.
And since || means that either of the branches must match, the subslots
of both packages must change for the package to trigger subslot rebuild.

In other words, || ( A:= B:= ) means that subslot rebuilds happen only
if you consistently use a single provider. Provider switching or having
both providers installed break it.


Dynamic deps partially fix it. Since the current := support code is
very dumb, it doesn't notice the '||' and respects all expanded
subslots found in vardb.

The main difference is that installing the other dependency doesn't
prevent subslot rebuilds from the first one from happening. For
example, if you built the package against A and install B afterwards,
upgrade of A will still force rebuild of the package (because
dynamic-deps code accidentally moves the A:0/1= dep out of || ()).

The code also makes the behavior with both providers installed saner.
Since both subslots are expanded, both are copied and rebuild of either
would cause the rebuild of package. However, in practice it usually
causes emerge to fail with slot conflict :).

It should be also noted that the dyndeps behavior makes it impossible
to uninstall either A or B when both were installed at the reverse
dependency build time (since both are added to depgraph).


The question would be -- which behavior is desired? I'm pretty sure
Ciaran will say that the static dep behavior is correct per definitions
but I don't think it's really useful to have slot operator dependencies
which work only randomly. Instead, we may decide to redefine it into
something useful in a future EAPI.

In particular, I was thinking we could reuse this syntax:

  || ( A:= B:= )

to express any-of dependencies that do not support runtime switching of
providers -- since that is pretty much what := does to slots. This
would save us from creating a new syntax like '||= ()' [1].

[1]:https://bugs.gentoo.org/show_bug.cgi?id=489458


If we go this way, we also need to decide whether the order in such
block would matter or not. In other words, whether the application can
be expected to link to the first installed package in the list, or can
link to any of them.

If the order would matter, the package would need to be rebuilt when:

1. first satisfied dependency changes subslot,

2. [optionally] package preceding the first currently satisfied
dependency is installed,

3. first currently satisfied dependency is uninstalled (but another is
installed).

If the order wouldn't matter, the package would need to be rebuilt when:

1. any of satisfied dependencies changes subslot (since we don't know
which one package links to),

2. [optionally] any of the remaining packages is installed,

3. any of satisfied dependencies is uninstalled.

The first option seems more refined, and causes less 

[gentoo-dev] Automated Package Removal and Addition Tracker, for the week ending 2014-08-03 23h59 UTC

2014-08-03 Thread Robin H. Johnson
The attached list notes all of the packages that were added or removed
from the tree, for the week ending 2014-08-03 23h59 UTC.

Removals:
virtual/perl-Class-ISA  2014-08-02 19:56:52 dilfridge
virtual/perl-Filter 2014-08-02 19:58:55 dilfridge

Additions:
dev-util/objconv2014-07-28 14:29:15 slyfox
app-crypt/monkeysign2014-07-29 07:54:13 k_f
virtual/bitcoin-leveldb 2014-07-29 16:24:50 blueness
dev-db/percona-server   2014-07-29 23:14:33 robbat2
sys-cluster/galera  2014-07-30 06:26:05 robbat2
dev-db/mariadb-galera   2014-07-30 06:26:21 robbat2
net-im/corebird 2014-07-30 14:31:51 dlan
dev-libs/libpfm 2014-07-31 11:13:34 slis
dev-perl/ExtUtils-Config2014-07-31 11:16:14 civil
dev-libs/papi   2014-07-31 11:34:16 slis
dev-perl/ExtUtils-Helpers   2014-07-31 11:39:56 civil
sys-cluster/hpx 2014-07-31 12:26:11 slis
dev-perl/ExtUtils-InstallPaths  2014-07-31 12:48:29 civil
dev-perl/Module-Build-Tiny  2014-07-31 13:23:00 civil
www-plugins/pipelight   2014-07-31 21:12:29 ryao
dev-python/oslotest 2014-08-01 05:21:50 prometheanfire
dev-db/tokumx   2014-08-01 13:08:05 chainsaw
sys-boot/gummiboot  2014-08-02 07:54:54 mgorny
app-admin/supernova 2014-08-03 20:06:30 alunduil
dev-db/mysql-cluster2014-08-03 21:42:35 robbat2

--
Robin Hugh Johnson
Gentoo Linux Developer
E-Mail : robb...@gentoo.org
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85
Removed Packages:
virtual/perl-Class-ISA,removed,dilfridge,2014-08-02 19:56:52
virtual/perl-Filter,removed,dilfridge,2014-08-02 19:58:55
Added Packages:
dev-util/objconv,added,slyfox,2014-07-28 14:29:15
app-crypt/monkeysign,added,k_f,2014-07-29 07:54:13
virtual/bitcoin-leveldb,added,blueness,2014-07-29 16:24:50
dev-db/percona-server,added,robbat2,2014-07-29 23:14:33
sys-cluster/galera,added,robbat2,2014-07-30 06:26:05
dev-db/mariadb-galera,added,robbat2,2014-07-30 06:26:21
net-im/corebird,added,dlan,2014-07-30 14:31:51
dev-libs/libpfm,added,slis,2014-07-31 11:13:34
dev-perl/ExtUtils-Config,added,civil,2014-07-31 11:16:14
dev-libs/papi,added,slis,2014-07-31 11:34:16
dev-perl/ExtUtils-Helpers,added,civil,2014-07-31 11:39:56
sys-cluster/hpx,added,slis,2014-07-31 12:26:11
dev-perl/ExtUtils-InstallPaths,added,civil,2014-07-31 12:48:29
dev-perl/Module-Build-Tiny,added,civil,2014-07-31 13:23:00
www-plugins/pipelight,added,ryao,2014-07-31 21:12:29
dev-python/oslotest,added,prometheanfire,2014-08-01 05:21:50
dev-db/tokumx,added,chainsaw,2014-08-01 13:08:05
sys-boot/gummiboot,added,mgorny,2014-08-02 07:54:54
app-admin/supernova,added,alunduil,2014-08-03 20:06:30
dev-db/mysql-cluster,added,robbat2,2014-08-03 21:42:35

Done.

Re: [gentoo-dev] The meaning of || ( a:= b:= ) dependencies

2014-08-03 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 03/08/14 06:44 PM, Michał Górny wrote:
 Hello, everyone.
 
 I would like to hear your opinion on what should be the meaning and
 use of '|| ( A:= B:= )' dependencies. [ Snip! ]

I mentioned this on irc on Friday; as I understand it the following
should occur.

Preface:

A-1.0's SLOT=0/1
A-2.0's SLOT=0/2

B-1.0's SLOT=4
B-2.0's SLOT=5


When the package is built and merged, it's built against SOMETHING
that satisfies ||( A:= B:= ); this means A or B or both are installed.
 In the Portage implementation the slot of dependencies are recorded
in VDB, and so whatever is installed on the system at compile/merge
time is what gets recorded to VDB.  It's not possible for Portage to
know which atom in the ||() list, so VDB needs to match the current state.

Case 1 - both A and B are installed - if A-1.0 upgrades to A-2.0, or
B-1.0 upgrades to B-2.0, then rebuilds need to be triggered.  This
should be detectable because A:0/1 and B:4 are recorded in VDB.  The
fact that they are in a ||() block SHOULD NOT allow the not-upgrading
B:4 to keep the dep satisfied if A-1.0 upgrades to A-2.0.  Likewise,
if either A or B are removed, then the package needs to be rebuilt
(once again, it is not known which dep might affect how the package is
linked).

Case 2 - only A is installed - if A-1.0 upgrades to A-2.0 when B isn't
installed at all, this should trigger a rebuild.  Hopefully this is
what is happening now in all cases.  If A-1.0 stays around and B is
installed, nothing needs to happen because the package is still linked
against A-1.0.  However, If A is then removed (say it's dropped from
@world and then --depclean'ed), THEN a rebuild needs to be triggered
so that a proper (slot) dependency is recorded against B.  If A is
upgraded after B is installed, then a rebuild needs to be triggered
and we end up with Case#1.

One thing that is a bit unique with case#2 is that, due to the fact
that the subslot is recorded in VDB at merge time, we actually know
which atom is satisfying the ||() dep, and so the changes and/or state
of the other atom doesn't need to have any affect on this package
until the atom that we built against is adjusted (upgraded, removed).




 
 By the PMS-y definition, any-of dependency can be satisfied by
 either branch of it, and the provider can be safely switched at
 runtime. That is:
 
 || ( A B )
 
 means that either a or b has to be installed. If you built the
 package against A, you can install B, uninstall A and everything is
 supposed to work without rebuilding. That doesn't really happen
 when linking is involved.


Hmm..  that safely switched at runtime language technicality might
be something we should just honour, since with that in mind  || ( A:=
[anything] )  isn't a valid syntax, if it can only be used for
runtime-switchable providers.  PMS-wise it may be pertinent to use
another operator than || (ie ||= as suggested) to specify a
run-or-compile-time-switchable set of atoms.

Of course, that means we need to wait for a new EAPI and then rewrite
all inappropriate uses of || in the tree, since i believe most ||'s
are in fact runtime-or-compiletime-switchable, rather than -just-
runtime-switchable.


 [ Snip! ]  Remaining issues:
 
 a. behavior of || ( A:= B:= C ) -- should C cause complete
 provider switching rebuilds?

As per my cases above, no I don't think C should have any effect when
it's installed.  However, if A or B are removed then the removal
should trigger a rebuild.


 b. do we need ||= ( A B C ) -- i.e. provider switching rebuilds 
 without subslot rebuilds?

Technically, no I don't think we would need
provider-switching-rebuilds without subslot-rebuilds, but that only
works if everything in the tree migrates to EAPI5 and implements
subslots...  Since that's unlikely, though, it might be worth
considering..


-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iF4EAREIAAYFAlPe1sYACgkQ2ugaI38ACPAWiQD/TAilNp7CE5hCaoDikX5ZlSrc
GBpx29M6zvmICsS2dqsBALce6lWlMlBFkRjNJ29XykevaRJIjVSHpsExnJiT5c8R
=UDaD
-END PGP SIGNATURE-



Re: [gentoo-portage-dev] New release: 2.2.11

2014-08-03 Thread Brian Dolbec
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

On Fri, 1 Aug 2014 14:45:11 -0700
Brian Dolbec dol...@gentoo.org wrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA512
 
 On Fri, 01 Aug 2014 22:08:12 +0200
 Alexander Berntsen berna...@gentoo.org wrote:
 
  -BEGIN PGP SIGNED MESSAGE-
  Hash: SHA256
  
  Friends,
  
  Portage 2.2.11 is now out. Brian is uploading the tarball and
  bumping the ebuild right now.
  
  Release notes:
  - Remove some broken old style virtual code
  - Bug # 505428 RO only filesystem check
  - Bug # 506186 TaskSequence starting bug.
  - Sort repoman check output
  - Remove obsolete repoman eclass checks
  - Bug # 505944 Improve mismatch checking
  - Bug # 488820 fix @security crash
  - Bug # 438976 Add DESCRIPTION.punctuation check to repoman
  - Add ruby18 warning for deprecated ruby target to repoman
  - Add Python version to Portage version line
  - Prevent rebuild code from performing unwanted repository
  changes
  - Include ::repository more consistently in output
  - Make the slot conflict handler output more debug information
  - Bug # 487074 Don't split suggested commands when printing them
  - Handle 'mkdir -p /etc/portage/make.profile/packages'
  gracefully -- i.e. produce an error instead of crashing with a
  traceback
  - Implement --alert
  - Bug # 516428 Make repoman warn if non-virtuals depend on
perl-core
  - Prefer install-xattr to install.py as a wrapper to coreutils'
  /usr/bin/install to preserve file system extended attribute.
  
  
  
  
  I am going on a vacation. Due to all the bikeshedding over dynamic
  dependencies: I'm not taking my laptop! Happy hacking meanwhile, and
  I'll see you in a week.
  - -- 
  Alexander
  berna...@gentoo.org
  https://secure.plaimi.net/~alexander
 
 
 Have fun on your vacation
 
 There will be a delay in the release, I am getting 2 test fails in
 py-3.2 and py-3.3.  I'll work on fixing those first, I will also
 likely have to re-tag the release after any bugfixes are done for
 those test failures.
 - -- 
 Brian Dolbec dolsen
 


OK, 2 small commits pushed and re-tagged 2.2.11.  You may need to -f
pull your checkout or tags

Removed the pypy2_0 target from the ebuild and it's now in the tree.

Sorry for the delay...


- -- 
Brian Dolbec dolsen

-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.22 (GNU/Linux)

iQF8BAEBCgBmBQJT3moOXxSAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ4Njg4RkQxQ0M3MUMxQzA0RUFFQTQyMzcy
MjE0RDkwQTAxNEYxN0NCAAoJECIU2QoBTxfLlRsIAIwmwLe+nGqYyPFa5S8gE3Yr
QaWDK0eN3dKjjKfoB9p/X7JG8iQfp3bMlH5uUFKYb8uoLUFR1/sk4SpMLa4US5Jz
U/xdfiu74IKMAr4NRCtLelSnAMsmMXbioWZB1G3VrlelDrBpPGG5/wqC2DmO1OVd
gq9BwJYzoMDHMA7szsox5FGgokj6eWAnkh2n2qZHEVwSNAznhPmFiSHTw6ukXUfK
LO58Ks7dxoCCTynhimlI+TGQ1nxYA4SEAdQbdhUIRbjfx9VqA8v/cuL/LYTi9do9
OJOUP1GOAz/Cz6WgxrIEOmN6MpdRQheSSEldt9mS8SAP6O0CcQt+IC9MvWXC4FA=
=esH0
-END PGP SIGNATURE-