[gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Michael Palimaka
On 05/11/14 12:16, Michael Orlitzky wrote:
 When I was taking my ebuild quizzes, I asked for someone to clarify the
 implicit system dependency that we have enshrined in the devmanual:
 
   https://bugs.gentoo.org/show_bug.cgi?id=485356
 
 There is... some agreement, but also special cases and special-special
 cases that are folklore-only at this point. To me it seems like a fine
 thing to ask the council to sort out, so I'm asking here for discussion.
 
 Can we come up with an idiot-proof list (or FLOWCHART, even!) of what
 should and should not be excluded from *DEPEND?
 
 

Suggested policy to get the ball rolling:

In general, a package must explicitly depend upon what it directly uses.
However, to avoid ebuild complexity and developer burden there are some
exceptions. Packages that appear in the base system set may be omitted
from an ebuild's dependency list in the following circumstances:

* C compiler and runtime

* C++ compiler and runtime

* A POSIX-compliant shell

* bash, baselayout, binutils, coreutils, findutils, grep, make

* Any archive tools (eg. tar, bzip2, xz-utils) where used for unpacking
SRC_URI only

* Any command guaranteed by PMS at build-time only (eg. sed, patch)

Note that in some cases it might be necessary to explicitly specify a
dependency that's listed above, such as when a specific implementation
is required (eg. a binary package requiring glibc).




Re: [gentoo-dev] Unify keyring related USE flags

2014-11-13 Thread Pacho Ramos
El dom, 12-10-2014 a las 10:38 +0200, Pacho Ramos escribió:
 El dom, 12-10-2014 a las 00:13 +0400, Alexander Tsoy escribió:
 [...]
   
   I think we should simply have a keyring USE flag to enable what most
   people will want - keyring support.
  
  Some apps have optional support for both kwallet and gnome-keyring
  (e.g. darktable, subversion). So I'm not sure you can leave a single
  USE flag.
  
 
 Maybe for them we could have an exception or review them as they also
 look to be a bit strange. For example, for concrete case of subversion
 looks like it's using gnome-keyring and kde, that looks a bit
 inconsistent to me. We could use gnome and kde for example :/. Or
 have a keyring USE flag and, then gnome and kde behind that USE
 
 

any updates on this? :)






Re: [gentoo-dev] Unify keyring related USE flags

2014-11-13 Thread Alexander Tsoy
В Thu, 13 Nov 2014 11:53:56 +0100
Pacho Ramos pa...@gentoo.org пишет:

 El dom, 12-10-2014 a las 10:38 +0200, Pacho Ramos escribió:
  El dom, 12-10-2014 a las 00:13 +0400, Alexander Tsoy escribió:
  [...]

I think we should simply have a keyring USE flag to enable what most
people will want - keyring support.
   
   Some apps have optional support for both kwallet and gnome-keyring
   (e.g. darktable, subversion). So I'm not sure you can leave a single
   USE flag.
   
  
  Maybe for them we could have an exception or review them as they also
  look to be a bit strange. For example, for concrete case of subversion
  looks like it's using gnome-keyring and kde, that looks a bit
  inconsistent to me. We could use gnome and kde for example :/. Or
  have a keyring USE flag and, then gnome and kde behind that USE
  
  
 
 any updates on this? :)
 

I don't know anything about kwallet, but gnome-keyring is useful
outside of GNOME. So I don't like the idea of hiding gnome-keyring
behind gnome use flag.

-- 
Alexander Tsoy



Re: [gentoo-dev] Unify keyring related USE flags

2014-11-13 Thread Pacho Ramos
El jue, 13-11-2014 a las 14:12 +0300, Alexander Tsoy escribió:
 В Thu, 13 Nov 2014 11:53:56 +0100
 Pacho Ramos pa...@gentoo.org пишет:
 
  El dom, 12-10-2014 a las 10:38 +0200, Pacho Ramos escribió:
   El dom, 12-10-2014 a las 00:13 +0400, Alexander Tsoy escribió:
   [...]
 
 I think we should simply have a keyring USE flag to enable what most
 people will want - keyring support.

Some apps have optional support for both kwallet and gnome-keyring
(e.g. darktable, subversion). So I'm not sure you can leave a single
USE flag.

   
   Maybe for them we could have an exception or review them as they also
   look to be a bit strange. For example, for concrete case of subversion
   looks like it's using gnome-keyring and kde, that looks a bit
   inconsistent to me. We could use gnome and kde for example :/. Or
   have a keyring USE flag and, then gnome and kde behind that USE
   
   
  
  any updates on this? :)
  
 
 I don't know anything about kwallet, but gnome-keyring is useful
 outside of GNOME. So I don't like the idea of hiding gnome-keyring
 behind gnome use flag.
 

But people wanting keyring support in gnome will know need to remember
to also enable libsecret (that will replace gnome-keyring at some
point). That is the main reason for suggesting the change. That and also
that kde USE flag is being used for keyring support in KDE
environment, and that can look a bit incoherent.

Having a more general keyring USE flag people could enable and, for
cases with multiple support, allow to switch between providers on KDE
and GNOME depending on their kde gnome USE flags looks to solve it
for me :/





Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Michael Orlitzky
On 11/13/2014 05:30 AM, Michael Palimaka wrote:
 
 Suggested policy to get the ball rolling:
 
 In general, a package must explicitly depend upon what it directly uses.
 However, to avoid ebuild complexity and developer burden there are some
 exceptions. Packages that appear in the base system set may be omitted
 from an ebuild's dependency list in the following circumstances:
 
 * C compiler and runtime

Specifically sys-devel/gcc and sys-libs/glibc (i.e. what's in @system),
or just anything?

 * C++ compiler and runtime

Isn't it possible to disable C++ in GCC with USE=-cxx?




Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Rich Freeman
On Thu, Nov 13, 2014 at 5:30 AM, Michael Palimaka kensing...@gentoo.org wrote:

 In general, a package must explicitly depend upon what it directly uses.
 However, to avoid ebuild complexity and developer burden there are some
 exceptions. Packages that appear in the base system set may be omitted
 from an ebuild's dependency list in the following circumstances:


So, I'm not a big fan of implicit dependencies in general.  What does
the new policy buy us that the existing one does not?  Why not try to
find a way to ditch implicit dependencies entirely?  If the issue is
that nobody wants to have a laundry list of dependencies in every
package, why not use something like a virtual to pull in all the
commonly-used stuff.  Then for the 0.1% of the tree where it matters
we could list things explicitly so that we don't have a big pile of
packages that portage can't parallelize.

It seems like the problems with the current approach are:
1.  @system can vary by profile, which allows bugs to creep in since
maintainers can't stay on top of what is and isn't always in @system).
2.  PMs can't build @system packages in parallel, since it doesn't
know what the real deps are.
3.  The way we use @system makes it hard to tell if it is safe to
remove some package which is otherwise heavily-used.  You never really
know if you can safely do without bash, and so on.  (Note, this bit
wouldn't be helped at all by simply turning system into a big
virtual.)

I'm not entirely sure what problem you're trying to solve, so the
above may or may not be helpful.  I'm fine with incremental
improvements if they actually improve something.  Otherwise, the
status quo does have the benefit of simplicity - you don't have to
list @system packages as dependencies ever, but you can do so if you
wish or it brings some benefit (deps on specific versions/slots,
slot-operator deps, etc).

--
Rich



[gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Ulrich Mueller
 On Thu, 13 Nov 2014, Michael Palimaka wrote:

 Suggested policy to get the ball rolling:

 In general, a package must explicitly depend upon what it directly
 uses. However, to avoid ebuild complexity and developer burden there
 are some exceptions. Packages that appear in the base system set may
 be omitted from an ebuild's dependency list in the following
 circumstances:

 * C compiler and runtime

 * C++ compiler and runtime

 * A POSIX-compliant shell

 * bash, baselayout, binutils, coreutils, findutils, grep, make

awk? diffutils? texinfo?

 * Any archive tools (eg. tar, bzip2, xz-utils) where used for
 unpacking SRC_URI only

 * Any command guaranteed by PMS at build-time only (eg. sed, patch)

 Note that in some cases it might be necessary to explicitly specify
 a dependency that's listed above, such as when a specific
 implementation is required (eg. a binary package requiring glibc).

Ulrich


pgpW3w8N0DplE.pgp
Description: PGP signature


[gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Michael Palimaka
On 14/11/14 01:17, Rich Freeman wrote:
 On Thu, Nov 13, 2014 at 5:30 AM, Michael Palimaka kensing...@gentoo.org 
 wrote:

 In general, a package must explicitly depend upon what it directly uses.
 However, to avoid ebuild complexity and developer burden there are some
 exceptions. Packages that appear in the base system set may be omitted
 from an ebuild's dependency list in the following circumstances:

 
 So, I'm not a big fan of implicit dependencies in general.  What does
 the new policy buy us that the existing one does not?  Why not try to
 find a way to ditch implicit dependencies entirely?  If the issue is
 that nobody wants to have a laundry list of dependencies in every
 package, why not use something like a virtual to pull in all the
 commonly-used stuff.  Then for the 0.1% of the tree where it matters
 we could list things explicitly so that we don't have a big pile of
 packages that portage can't parallelize.

The problem is the current policy is not particularly clear - the issue
of when to explicitly specify a system dependency keeps coming up. The
first two sentences say all system dependencies are implicit and should
not be specified, while contradicted by the third in some (but not all
cases).

Ditching implicit dependencies is an interesting idea but not practical.
Nobody wants to the laundry list, and there's little benefit in
maintaining a virtual/system clone of @system.

 It seems like the problems with the current approach are:
 1.  @system can vary by profile, which allows bugs to creep in since
 maintainers can't stay on top of what is and isn't always in @system).
 2.  PMs can't build @system packages in parallel, since it doesn't
 know what the real deps are.
 3.  The way we use @system makes it hard to tell if it is safe to
 remove some package which is otherwise heavily-used.  You never really
 know if you can safely do without bash, and so on.  (Note, this bit
 wouldn't be helped at all by simply turning system into a big
 virtual.)
 
 I'm not entirely sure what problem you're trying to solve, so the
 above may or may not be helpful.  I'm fine with incremental
 improvements if they actually improve something.  Otherwise, the
 status quo does have the benefit of simplicity - you don't have to
 list @system packages as dependencies ever, but you can do so if you
 wish or it brings some benefit (deps on specific versions/slots,
 slot-operator deps, etc).

This is just about clarifying things. The wording of the current policy
is vague (don't depend on system dependencies, but consider sometimes
doing it) and I think something more explicit would be better. An
update would help better reflect reality too - most people depend on
app-arch/bzip2 for libbzip2 even though it's in @system.




Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 13/11/14 09:05 AM, Michael Orlitzky wrote:
 On 11/13/2014 05:30 AM, Michael Palimaka wrote:
 
 Suggested policy to get the ball rolling:
 
 In general, a package must explicitly depend upon what it
 directly uses. However, to avoid ebuild complexity and developer
 burden there are some exceptions. Packages that appear in the
 base system set may be omitted from an ebuild's dependency list
 in the following circumstances:
 
 * C compiler and runtime
 
 Specifically sys-devel/gcc and sys-libs/glibc (i.e. what's in
 @system), or just anything?
 

I would sincerely hope that nothing in the tree explicitly requires
gcc as a C compiler.

Glibc is a bit different, it may be necessary to explicitly depend on
it (or use the elibc_glibc flag) if the package can't work with the
libc alternatives, but ideally

 * C++ compiler and runtime
 
 Isn't it possible to disable C++ in GCC with USE=-cxx?

It is..  but unfortunately there's no way in DEPEND to ensure it's
satisfied, as you can have a gcc installed with that flag enabled but
have a second one (that's actually selected in gcc-config) with it
disabled.  A pkg_pretend check or a pkg_setup check (if you don't want
it to just fail in src_configure) is probably the best way to enforce
that one at this time.  Unless there are other ways I'm not aware of??

There's also the whole c++98 vs c++11 issue that's sort-of part of
this -- minimum clang version, minimum gcc version might relate.
Again though, afaik there's no easy way to deal with this in DEPEND.
-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iF4EAREIAAYFAlRky4AACgkQ2ugaI38ACPD1twD/da6rptWk1/vl2iDPSBWLmox2
5rXr7aEci8yCBoyDsk8A/0ZAGBtxlBWqoTGKzkJdm32pow4cOtFBEBO+YoVJkEyx
=xXHM
-END PGP SIGNATURE-



Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 13/11/14 10:17 AM, Ian Stakenvicius wrote:
 On 13/11/14 09:05 AM, Michael Orlitzky wrote:
 On 11/13/2014 05:30 AM, Michael Palimaka wrote:
 
 Suggested policy to get the ball rolling:
 
 In general, a package must explicitly depend upon what it 
 directly uses. However, to avoid ebuild complexity and
 developer burden there are some exceptions. Packages that
 appear in the base system set may be omitted from an ebuild's
 dependency list in the following circumstances:
 
 * C compiler and runtime
 
 Specifically sys-devel/gcc and sys-libs/glibc (i.e. what's in 
 @system), or just anything?
 
 
 I would sincerely hope that nothing in the tree explicitly
 requires gcc as a C compiler.
 
 Glibc is a bit different, it may be necessary to explicitly depend
 on it (or use the elibc_glibc flag) if the package can't work with
 the libc alternatives, but ideally [...]

... we shouldn't be depending on the specific libc implementation
-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iF4EAREIAAYFAlRky8wACgkQ2ugaI38ACPBEEwD+JmErQK2aUPcYsZY6e55lWYfO
oenrhAK3S4bKX8CdOWoA/1NKBesQnsv6e8KEwPEQrHlQO3DcCA/DVVWPWjUSVCjo
=+Web
-END PGP SIGNATURE-



[gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Michael Palimaka
On 14/11/14 01:36, Ulrich Mueller wrote:
 On Thu, 13 Nov 2014, Michael Palimaka wrote:
 
 Suggested policy to get the ball rolling:
 
 In general, a package must explicitly depend upon what it directly
 uses. However, to avoid ebuild complexity and developer burden there
 are some exceptions. Packages that appear in the base system set may
 be omitted from an ebuild's dependency list in the following
 circumstances:
 
 * C compiler and runtime
 
 * C++ compiler and runtime
 
 * A POSIX-compliant shell
 
 * bash, baselayout, binutils, coreutils, findutils, grep, make
 
 awk? diffutils? texinfo?

I have no particular opinion on what should be included (or even if we
should have a whitelist - I am mainly interested in capturing library
usage). If we do have a whitelist, it would be useful to figure out what
in @system is intended to be actually be part of the base system and
what is there for convenience (eg. virtual/ssh).





[gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Michael Palimaka
On 14/11/14 01:05, Michael Orlitzky wrote:
 On 11/13/2014 05:30 AM, Michael Palimaka wrote:

 Suggested policy to get the ball rolling:

 In general, a package must explicitly depend upon what it directly uses.
 However, to avoid ebuild complexity and developer burden there are some
 exceptions. Packages that appear in the base system set may be omitted
 from an ebuild's dependency list in the following circumstances:

 * C compiler and runtime
 
 Specifically sys-devel/gcc and sys-libs/glibc (i.e. what's in @system),
 or just anything?

Since they can be (in theory) replaced with some other implementation,
anything unless there's a reason (like a binary package explicitly
linking to glib).

 
 * C++ compiler and runtime
 
 Isn't it possible to disable C++ in GCC with USE=-cxx?

It is, but I think if that's disabled you're on your own. :-)





Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread hasufell
On 11/13/2014 04:27 PM, Michael Palimaka wrote:
 * C++ compiler and runtime

 Isn't it possible to disable C++ in GCC with USE=-cxx?
 
 It is, but I think if that's disabled you're on your own. :-)
 

I keep hearing this sentence, but it still doesn't make much sense to
me. Invalid configurations should be reported as invalid to the user.

Since I run my own server with USE=-* foo bar I have come across a lot
of expect users to not disable it, but don't actually disallow it or
even warn them.

I've seen a lot of compiler checks in ebuilds in pkg_pretend that look
quite similar. Maybe it's time to enhance toolchain-funcs?



Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Mike Gilbert
On Thu, Nov 13, 2014 at 10:27 AM, Michael Palimaka
kensing...@gentoo.org wrote:
 On 14/11/14 01:05, Michael Orlitzky wrote:
 Isn't it possible to disable C++ in GCC with USE=-cxx?

 It is, but I think if that's disabled you're on your own. :-)

Perhaps we should add a package.use.force entry for this. Is there any
reason not to?



Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Alexander Hof
Mike Gilbert wrote:
 On Thu, Nov 13, 2014 at 10:27 AM, Michael Palimaka
 kensing...@gentoo.org wrote:
 On 14/11/14 01:05, Michael Orlitzky wrote:
 Isn't it possible to disable C++ in GCC with USE=-cxx?

 It is, but I think if that's disabled you're on your own. :-)
 
 Perhaps we should add a package.use.force entry for this. Is there any
 reason not to?
 

There are people that don't want c++ and gcc:4.7 can still bootstrap
without.



Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Michał Górny
Dnia 2014-11-13, o godz. 13:13:01
Mike Gilbert flop...@gentoo.org napisał(a):

 On Thu, Nov 13, 2014 at 10:27 AM, Michael Palimaka
 kensing...@gentoo.org wrote:
  On 14/11/14 01:05, Michael Orlitzky wrote:
  Isn't it possible to disable C++ in GCC with USE=-cxx?
 
  It is, but I think if that's disabled you're on your own. :-)
 
 Perhaps we should add a package.use.force entry for this. Is there any
 reason not to?

You may want to install a minimalistic version of an old gcc for some
(non-C++) testing.

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Rich Freeman
On Thu, Nov 13, 2014 at 10:07 AM, Michael Palimaka
kensing...@gentoo.org wrote:

 Ditching implicit dependencies is an interesting idea but not practical.
 Nobody wants to the laundry list, and there's little benefit in
 maintaining a virtual/system clone of @system.


Well, the idea would be to maintain the virtual INSTEAD of @system, or
have @system just pull in the virtual and make some arch-specific
additions.

As far as benefits go, they include:
1.  No need to have multiple ways of grouping packages.
2.  You can more than one virtual, so that you could just pull in the
super-lazy equivalent to @system, or maybe you just pull in POSIX+bash
and C++ or something like that.
3.  You can split up that virtual so that convenience packages like
ssh aren't in the same virtual as widespread dependencies like
bash/zlib/glibc/gcc/etc.  There is no reason that you can't build
openssh in parallel, but right now you can't because we lump it in
with glibc.
4.  You can choose when to use the virtual at all, versus explicitly
naming all dependencies.

For 99% of packages it would be the same.  We could even have that
dependency added automatically if something isn't done in the ebuild
to disable it, which would make ebuilds work the same as they do now.
However, for the packages that are actually in @system we could list
explicit dependencies and then portage would actually be able to
handle some things automatically.  Also, by using virtuals that are
the same across all archs, we have a bit more consistency.

Policy-wise, though, the status quo isn't that bad.  You never have to
list dependencies that are in @system, full stop.  You can list a
dependency that is in @system anytime you want to, full stop.

That is, it is never right or wrong to list an unversioned dependency
that is in @system.  Sometimes doing one or the other is advantageous
(such as when you have a versioned dependency, or a virtual is in
@system but you need a specific implementation, or you want to use a
slot-op dep).  I'm fine with examples, but they shouldn't be firm
rules, just helpful guidelines.

--
Rich



[gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Michael Palimaka
On 14/11/14 03:57, hasufell wrote:
 On 11/13/2014 04:27 PM, Michael Palimaka wrote:
 * C++ compiler and runtime

 Isn't it possible to disable C++ in GCC with USE=-cxx?

 It is, but I think if that's disabled you're on your own. :-)

 
 I keep hearing this sentence, but it still doesn't make much sense to
 me. Invalid configurations should be reported as invalid to the user.
 
 Since I run my own server with USE=-* foo bar I have come across a lot
 of expect users to not disable it, but don't actually disallow it or
 even warn them.
 
 I've seen a lot of compiler checks in ebuilds in pkg_pretend that look
 quite similar. Maybe it's time to enhance toolchain-funcs?

It definitely would be nice to have some better mechanism for compiler
checking in general. Already version checking is quite ugly with
boilerplate code everywhere with wrong dependencies like =gcc-4.7.




[gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Michael Palimaka
On 14/11/14 11:06, Rich Freeman wrote:
 On Thu, Nov 13, 2014 at 10:07 AM, Michael Palimaka
 kensing...@gentoo.org wrote:

 Ditching implicit dependencies is an interesting idea but not practical.
 Nobody wants to the laundry list, and there's little benefit in
 maintaining a virtual/system clone of @system.

 
 Well, the idea would be to maintain the virtual INSTEAD of @system, or
 have @system just pull in the virtual and make some arch-specific
 additions.

Will that work? Some profiles remove packages from the base @system and
replace it with their own implementations (eg. BSD).

 
 As far as benefits go, they include:
 1.  No need to have multiple ways of grouping packages.
 2.  You can more than one virtual, so that you could just pull in the
 super-lazy equivalent to @system, or maybe you just pull in POSIX+bash
 and C++ or something like that.
 3.  You can split up that virtual so that convenience packages like
 ssh aren't in the same virtual as widespread dependencies like
 bash/zlib/glibc/gcc/etc.  There is no reason that you can't build
 openssh in parallel, but right now you can't because we lump it in
 with glibc.
 4.  You can choose when to use the virtual at all, versus explicitly
 naming all dependencies.
 
 For 99% of packages it would be the same.  We could even have that
 dependency added automatically if something isn't done in the ebuild
 to disable it, which would make ebuilds work the same as they do now.
 However, for the packages that are actually in @system we could list
 explicit dependencies and then portage would actually be able to
 handle some things automatically.  Also, by using virtuals that are
 the same across all archs, we have a bit more consistency.

Definitely interesting ideas, but I think it's beyond the scope of
what's trying to be addressed here. Solving bug #393445 would also go a
long way to sorting out core-system vs. want-to-have packages.

 Policy-wise, though, the status quo isn't that bad.  You never have to
 list dependencies that are in @system, full stop.  You can list a
 dependency that is in @system anytime you want to, full stop.
 
 That is, it is never right or wrong to list an unversioned dependency
 that is in @system.  Sometimes doing one or the other is advantageous
 (such as when you have a versioned dependency, or a virtual is in
 @system but you need a specific implementation, or you want to use a
 slot-op dep).  I'm fine with examples, but they shouldn't be firm
 rules, just helpful guidelines.

Maybe some dependencies (within reason) should always be listed, for
example when there's linkage eg. to libbzip2 or liblzma. That would make
it easy to find consumers eg. if an alternate implementation appeared,
and already appears to be a common practice.

Perhaps instead of creating a whitelist, we could just update the text a
bit:

All packages have an implicit compile-time and runtime dependency upon
the entire system target. For toolchain packages part of the system
target (such as gcc, libc, binutils and so on) it is not necessary, nor
advisable, to specify dependencies, except where specific versions or
packages (for example, glibc over uclibc) are required.

For other non-toolchain packages part of the system target (such as
bzip2 or wget) it is optional to specify a dependency. Consideration
should be given to packages that don't appear in system targets in other
profiles or might be removed in the future. Where package links to
package in the system target (such as libbz2) it is recommended to
specify a dependency.




Re: [gentoo-dev] Java7 stabilization

2014-11-13 Thread Tom Wijsman
On Mon, 10 Nov 2014 12:23:43 +0100
Pacho Ramos pa...@gentoo.org wrote:

 Hello

Hello, this is an individual response.
 
 I would like to see if we could finally try to stabilize java7 on
 Gentoo as some external tools start to require it. 
 
 There is currently this tracker opened:
 https://bugs.gentoo.org/show_bug.cgi?id=384609
 
 I am unsure why:
 https://bugs.gentoo.org/show_bug.cgi?id=483018
 
 should block the stabilization as we can have multiple java versions
 installed due slots

Multiple stable Java versions means more work; so, you'll instead want
to bring incompatible packages forward to Java 7 or mask and lastrite
them as time goes by.

 The tracker list two broken packages that would need either patching
 or to be forced to use older slots and this one:

Under the work train of thoughts, an older slot is a temporary measure.

 https://bugs.gentoo.org/show_bug.cgi?id=515830

 That looks more important. Then, I also wonder about what
 implementations are we meant to look for this stabilization. Should we
 look for bugs affecting icedtea-bin and also oracle's implementation?

If you look at the history, multiple implementations are stabilized;
this means that bugs should indeed look at whether they affect both
versions. In general, fixing a bug for one implementation fixes it for
the other implementation or the other implement didn't even have the
bug to begin with; but that shouldn't fool us to check them both out.

 (I was wondering if the tracker was really collecting all the
 issues :/)

Doubtful. A tree wide check is necessary to confirm that all Java based
packages build with the to be stabilized Java 7 implementations.



Re: [gentoo-dev] Packages up for grabs

2014-11-13 Thread Tom Wijsman
On Tue, 11 Nov 2014 16:59:46 +0200
Pavlos Ratis daster...@gentoo.org wrote:

 I will also drop myself from the net-proxy herd.

Drawing extra attention to this sentence; it looks like the herd is
(once again) going to be empty, as the result of a lack of interest.

If someone does have a real interest in this herd; please step up now,
otherwise this herd is probably going to face a removal in the future.



[gentoo-dev] Packages up for grabs

2014-11-13 Thread Tom Wijsman
Hello all

Due to lack of time I'm giving up some packages. Feel free to take them:

app-admin/ec2-ami-tools
app-admin/ec2-api-tools
These command-line tools serve as the client interface
to the Amazon EC2 web service

app-admin/logmon
Split-screen terminal/ncurses based log viewer

app-admin/usermin
A web-based user administration interface

app-admin/yaala
Yet Another Log Analyzer

app-editors/retext
A Qt-based text editor for Markdown and reStructuredText

app-misc/fslint
A utility to find various forms of lint on a filesystem

app-text/logmerge
Merge multiple logs such that multilined entries appear
in chronological order without breaks

dev-games/aseprite
Animated sprite editor and pixel art tool

dev-python/markups
A wrapper around various text markups

dev-util/cdiff
Colored, side-by-side diff terminal viewer

dev-util/oprofile
A transparent low-overhead system-wide profiler

media-libs/libmkv
Lightweight Matroska muxer written for
HandBrake   

media-sound/teamspeak-client-bin
media-sound/teamspeak-server-bin
TeamSpeak Client / Server (Voice Communication Software)

media-video/openshot
Free, open-source, non-linear video editor to create
and edit videos and movies

sys-apps/epoch
An init system (analogous to systemd or upstart) for
Linux by Subsentient; it is intended as a lightweight
solution for lightweight distributions that don't want
a huge mess just to boot up; it has one unified
configuration file, is very small in size, and it has
no external dependencies besides glibc or similar;
installing a shell for /bin/sh is strongly recommended

sys-process/ftop
Monitor open files and filesystems

www-misc/monitorix
A lightweight system monitoring tool

x11-misc/growl-for-linux
A Linux-compatible version of Growl, a notification
system for Mac OS X


Thanks,

Tom Wijsman



Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Rich Freeman
On Thu, Nov 13, 2014 at 9:38 PM, Michael Palimaka kensing...@gentoo.org wrote:
 On 14/11/14 11:06, Rich Freeman wrote:

 Well, the idea would be to maintain the virtual INSTEAD of @system, or
 have @system just pull in the virtual and make some arch-specific
 additions.

 Will that work? Some profiles remove packages from the base @system and
 replace it with their own implementations (eg. BSD).

Maybe.  The thing is that a package either depends on something or it
doesn't.  If it really does depend on something, then the fact that it
isn't available on BSD/etc isn't going to magically make the package
work.  We just loosely define system dependencies in a way that makes
them work 98% of the time, basically accepting that things are going
to break and we get away with it because few of our users actually run
on BSD/etc.

If it is just a matter of preference then a profile could install an
alternative package that is in a virtual.  However, this won't work if
everybody still uses some convenience virtual that pulls in bash/etc
and the BSD folks don't want to install bash unnecessarily.

The only perfect solution is explicit dependencies across the board.
If we want to be lazy and not have to list 50 deps for hello world,
then the package manager isn't going to know whether hello world
actually works on every arch/profile/etc.

Maybe the better solution is some kind of automation around (R)DEPEND.
In any case, I agree that it is a bit beyond the original scope of
this.

 Maybe some dependencies (within reason) should always be listed, for
 example when there's linkage eg. to libbzip2 or liblzma. That would make
 it easy to find consumers eg. if an alternate implementation appeared,
 and already appears to be a common practice.

The problem is that if it isn't 100% then it isn't all that great a
solution.  It also isn't really necessary unless you want to remove a
package from the system set.  If an alternative implementation
appears, then you create a virtual, place that virtual in the system
set, and all the packages in the tree remain happy to use whatever
implementation the user has installed without the risk of it getting
depcleaned.

In the past when we've considered removing a package from @system
there is usually a thread on -dev, and if there is a general sense
that we want to move forward then the announcement goes out for
everybody to check their packages and add an explicit dependency if
needed (often with tinderbox runs and the like).  Then after a delay
the package is removed from @system and maintainers get to deal with
anything they missed.

I don't have a problem with devs listing dependencies anytime they're
real and they feel it makes sense to do so.  I wouldn't make a push to
have them go out of their way to do it for any particular package
unless we are actively looking to remove it from @system, or there is
some other driver.  Slot operator deps would be the one case where I
would try to push on maintainers to list deps.

And I do apologize for piling on a bit - trying to get rid of @system
has been one of my soap box issues for a while.  It really seems like
an ugly, if practical, solution.

--
Rich



Re: [gentoo-dev] Re: Implicit system dependency

2014-11-13 Thread Zac Medico
On 11/13/2014 08:01 PM, Rich Freeman wrote:
 On Thu, Nov 13, 2014 at 9:38 PM, Michael Palimaka kensing...@gentoo.org 
 wrote:
 On 14/11/14 11:06, Rich Freeman wrote:

 Well, the idea would be to maintain the virtual INSTEAD of @system, or
 have @system just pull in the virtual and make some arch-specific
 additions.

 Will that work? Some profiles remove packages from the base @system and
 replace it with their own implementations (eg. BSD).
 
 Maybe.  The thing is that a package either depends on something or it
 doesn't.  If it really does depend on something, then the fact that it
 isn't available on BSD/etc isn't going to magically make the package
 work.  We just loosely define system dependencies in a way that makes
 them work 98% of the time, basically accepting that things are going
 to break and we get away with it because few of our users actually run
 on BSD/etc.
 
 If it is just a matter of preference then a profile could install an
 alternative package that is in a virtual.  However, this won't work if
 everybody still uses some convenience virtual that pulls in bash/etc
 and the BSD folks don't want to install bash unnecessarily.

Maybe I'm missing something, but if you are using virtuals, then you can
make the deps conditional on profile forced/masked flags like
userland_BSD and userland_GNU if necessary. These behave like normal USE
flags, aside from the fact the they are forced or masked by profiles.
-- 
Thanks,
Zac



Re: [gentoo-portage-dev] [PATCH] FEATURES=case-insensitive-fs for bug #524236

2014-11-13 Thread Alexander Berntsen
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 13/11/14 02:22, Zac Medico wrote:
 +if case-insensitive-fs in portage.settings.features:
 +FIND_EXTANT_CONFIGS = \
 +FIND_EXTANT_CONFIGS.replace(-name '._cfg, -iname '._cfg)
 +
Splitting inside the replace will look nicer following PEP indentation
(as you won't need the '\').

 +Use case\-insensitive file name comparisions when merging and unmerging
 +files.
 +.TP
Maybe mention a) that most people can ignore this option, and b) who
it's actually for. Kind of in the kernel option help style.


In general I don't like this patch. It handles a bunch of cases separately by 
doing lower(), when I think instead it should be handled implicitly. The data 
should be in a structure such that it knows whether it is supposed to be upper 
or lowercase, and whatever's dealing with it should deal with it accordingly, 
rather than checking is this case insensitive? OK lowercase it before sending 
it wherever.

But if you think this is the best way, I'm not going to stand in the way of 
this patch.
- -- 
Alexander
berna...@gentoo.org
https://secure.plaimi.net/~alexander
-BEGIN PGP SIGNATURE-
Version: GnuPG v2
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iF4EAREIAAYFAlRkiB0ACgkQRtClrXBQc7UudAD/V1r4AR5zA54Xz+LHBVNt0bnn
uQ9w+146L8WYK6pDN9gBAJxZbQREeOwxKSDjluZ1lq9XARf1rh/Eqzl58wIc8I4K
=c1Em
-END PGP SIGNATURE-



Re: [gentoo-portage-dev] [PATCH] FEATURES=case-insensitive-fs for bug #524236

2014-11-13 Thread Zac Medico
On 11/13/2014 02:29 AM, Alexander Berntsen wrote:
 On 13/11/14 02:22, Zac Medico wrote:
 +if case-insensitive-fs in portage.settings.features:
 +FIND_EXTANT_CONFIGS = \
 +FIND_EXTANT_CONFIGS.replace(-name '._cfg, -iname '._cfg)
 +
 Splitting inside the replace will look nicer following PEP indentation
 (as you won't need the '\').

Okay, I'll re-format it as you've suggested.

 +Use case\-insensitive file name comparisions when merging and unmerging
 +files.
 +.TP
 Maybe mention a) that most people can ignore this option, and b) who
 it's actually for. Kind of in the kernel option help style.

Okay, I'll add something about it only being needed for case-insensitive
file systems, which are usually not used.

 
 In general I don't like this patch. It handles a bunch of cases separately
 by doing lower(), when I think instead it should be handled implicitly.
 The data should be in a structure such that it knows whether it is supposed
 to be upper or lowercase, and whatever's dealing with it should deal with
 it accordingly, rather than checking is this case insensitive? OK
 lowercase it before sending it wherever.

Aside from the ConfigProtect constructor, which has a new
case_insensitive keyword parameter, all affected methods handle case
transformations implicitly, as far as API consumers are concerned.

However, we could improve efficiency for some usage patterns by
providing an alternative to dblink.getcontents that is oriented toward
case-insensitive handling. For example, every single
dblink._match_contents call currently has to transform all names to
lowercase, and generate a reverse mapping from lowercase back to
preserved case. The dblink._match_contents method would be more
efficient if we created an alternative to dblink.getcontents that
handled the transformations and cached the results. I intentionally did
not implement this optimization yet, since it's probably better to do it
in a separate patch, rather than complicate the current patch.

 But if you think this is the best way, I'm not going to stand in the way of 
 this patch.

As discussed above, think the current approach is pretty reasonable,
though I would like to optimize it with a separate patch.
-- 
Thanks,
Zac



[gentoo-portage-dev] [PATCH] fs_template._ensure_dirs: handle EEXIST (529120)

2014-11-13 Thread Zac Medico
There was a race inside fs_template._ensure_dirs which could cause it to
raise EEXIST if a concurrent process created the directory after
os.path.exists returned False. Fix it by using the util.ensure_dirs
function, which already handles EEXIST.

X-Gentoo-Bug: 529120
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=529120
---
 pym/portage/cache/fs_template.py | 25 ++---
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/pym/portage/cache/fs_template.py b/pym/portage/cache/fs_template.py
index de4fe4b..fa44abc 100644
--- a/pym/portage/cache/fs_template.py
+++ b/pym/portage/cache/fs_template.py
@@ -10,7 +10,7 @@ from portage import os
 from portage.proxy.lazyimport import lazyimport
 lazyimport(globals(),
'portage.exception:PortageException',
-   'portage.util:apply_permissions',
+   'portage.util:apply_permissions,ensure_dirs',
 )
 del lazyimport
 
@@ -61,20 +61,15 @@ class FsBased(template.database):
 
for dir in 
path.lstrip(os.path.sep).rstrip(os.path.sep).split(os.path.sep):
base = os.path.join(base,dir)
-   if not os.path.exists(base):
-   if self._perms != -1:
-   um = os.umask(0)
-   try:
-   perms = self._perms
-   if perms == -1:
-   perms = 0
-   perms |= 0o755
-   os.mkdir(base, perms)
-   if self._gid != -1:
-   os.chown(base, -1, self._gid)
-   finally:
-   if self._perms != -1:
-   os.umask(um)
+   if ensure_dirs(base):
+   # We only call apply_permissions if ensure_dirs 
created
+   # a new directory, so as not to interfere with
+   # permissions of existing directories.
+   mode = self._perms
+   if mode == -1:
+   mode = 0
+   mode |= 0o755
+   apply_permissions(base, mode=mode, 
gid=self._gid)
 
def _prune_empty_dirs(self):
all_dirs = []
-- 
2.0.4




[gentoo-portage-dev] [PATCH] portageq: fix eroot parameter (bug #529200)

2014-11-13 Thread Zac Medico
The portageq eroot parameter has been broken since commit
c9f6aa9f0151adb3c86706eaef1914cdbdcf2b6d, due to premature instantiation
of portage.settings (before the ROOT variable was set). Premature access
to the portage.settings attribute must be avoided by using other
available means to determine the EPREFIX.

Fixes: c9f6aa9f0151 (Add cross-prefix support)
X-Gentoo-Bug: 529200
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=529200
---
 bin/portageq|  9 -
 pym/portage/tests/emerge/test_simple.py | 10 --
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/bin/portageq b/bin/portageq
index 009f116..ef565d1 100755
--- a/bin/portageq
+++ b/bin/portageq
@@ -1392,7 +1392,14 @@ def main(argv):
sys.stderr.write(Run portageq with --help for info\n)
sys.stderr.flush()
sys.exit(os.EX_USAGE)
-   eprefix = portage.settings[EPREFIX]
+   # Calculate EPREFIX and ROOT that will be used to construct
+   # portage.settings later. It's tempting to use
+   # portage.settings[EPREFIX] here, but that would force
+   # instantiation of portage.settings, which we don't want to do
+   # until after we've calculated ROOT (see bug #529200).
+   eprefix = os.environ.get(EPREFIX, portage.const.EPREFIX)
+   if eprefix:
+   eprefix = portage.util.normalize_path(eprefix)
eroot = portage.util.normalize_path(argv[2])
 
if eprefix:
diff --git a/pym/portage/tests/emerge/test_simple.py 
b/pym/portage/tests/emerge/test_simple.py
index 6c20a07..0101362 100644
--- a/pym/portage/tests/emerge/test_simple.py
+++ b/pym/portage/tests/emerge/test_simple.py
@@ -217,6 +217,8 @@ pkg_preinst() {
self.assertFalse(test_ebuild is None)
 
cross_prefix = os.path.join(eprefix, cross_prefix)
+   cross_root = os.path.join(eprefix, cross_root)
+   cross_eroot = os.path.join(cross_root, eprefix.lstrip(os.sep))
 
test_commands = (
env_update_cmd,
@@ -318,6 +320,10 @@ pkg_preinst() {
portageq_cmd + (has_version, cross_prefix, 
dev-libs/A),
({EPREFIX : cross_prefix},) + \
portageq_cmd + (has_version, cross_prefix, 
dev-libs/B),
+
+   # Test ROOT support
+   ({ROOT: cross_root},) + emerge_cmd + (dev-libs/B,),
+   portageq_cmd + (has_version, cross_eroot, 
dev-libs/B),
)
 
distdir = playground.distdir
@@ -372,8 +378,8 @@ pkg_preinst() {
os.environ[__PORTAGE_TEST_HARDLINK_LOCKS]
 
updates_dir = os.path.join(test_repo_location, profiles, 
updates)
-   dirs = [cachedir, cachedir_pregen, cross_prefix, distdir, 
fake_bin,
-   portage_tmpdir, updates_dir,
+   dirs = [cachedir, cachedir_pregen, cross_eroot, cross_prefix,
+   distdir, fake_bin, portage_tmpdir, updates_dir,
user_config_dir, var_cache_edb]
etc_symlinks = (dispatch-conf.conf, etc-update.conf)
# Override things that may be unavailable, or may have 
portability
-- 
2.0.4