Re: [gentoo-dev] Questions about SystemD and OpenRC

2012-08-15 Thread Rich Freeman
On Tue, Aug 14, 2012 at 2:12 PM, Canek Peláez Valdés can...@gmail.com wrote:
 You can get as much vertical integration with Gentoo as with any other
 distro. The problem (and I think this is the point Greg is trying to
 make) is that it will be harder (not impossible, just harder) if most
 of Gentoo developers really believe that every single possible
 combination of hardware, software, init systems, and even OS kernels
 should be supported.

It isn't impossible for Gentoo to build a moon lander or for the
Foundation to buy the entire planet - just hard.  However, in practice
things that require resources we don't have simply won't happen.

Right now having decent KDE and Gnome support with all the bells and
whistles that works fine on FreeBSD as well as Linux isn't that hard,
because this trend towards vertical integration is just getting
started.  Running that on OSX under Prefix is already pretty painful
(not sure if anybody has actually pulled it off - I'm sure it is
possible).

It will likely get harder, which means in practice what we'll probably
have is a reasonable compromise which will never be quite as polished
in any one direction as it could be, unless the end user does the
polishing.

RE you concerns about OpenRC being in @system.  Personally I'm a fan
of getting rid of @system entirely except as something used to build
install CDs or having some sets for convenience in building systems.
It only exists for a few reasons that I can think of:
1.  Devs don't want to have ebuilds that capture dependencies on every
little thing.  A few well-chosen virtuals like shell utilities or
whatever might help with this.
2.  Things like Prefix rely on the system not installing local copies
of libraries in the core system it needs to link to.  Careful use of
package.provided in profiles might address this.
3.  We'd need many more virtuals to handle situations like FreeBSD
where people don't what GNU on their systems.  Right now if they are
system packages they just define system appropriately and ebuilds
don't directly pull in the GNU stuff anyway.

I'm sure there could be others.  Keep in mind that systemd is still
pretty new and largely out-of-the-blue so it will take time for Gentoo
to adjust to it.  Right now OpenRC might install executables, but
nothing should be actually running them - this is just wasted
compilation time which isn't a bad interim state to be in.  If
virtualizing udev is causing controversy just wait until somebody
actually makes a push to remove OpenRC from @system...

Rich



Re: [gentoo-dev] Questions about SystemD and OpenRC

2012-08-15 Thread Michał Górny
On Wed, 15 Aug 2012 06:27:41 -0400
Rich Freeman ri...@gentoo.org wrote:

 1.  Devs don't want to have ebuilds that capture dependencies on every
 little thing.  A few well-chosen virtuals like shell utilities or
 whatever might help with this.

Just note that PMS specifies a few requirements about those utilities
as well. I'm not sure if we want ebuilds explicitly DEPEND-ing on
things which are required by PMS.

In any case, virtual/posix-system would be nice to have.

 2.  Things like Prefix rely on the system not installing local copies
 of libraries in the core system it needs to link to.  Careful use of
 package.provided in profiles might address this.

We could also make virtuals not pull in anything on Prefix in those
cases.

 3.  We'd need many more virtuals to handle situations like FreeBSD
 where people don't what GNU on their systems.  Right now if they are
 system packages they just define system appropriately and ebuilds
 don't directly pull in the GNU stuff anyway.

I doubt that's a problem. We've got a lot of virtuals and adding new
ones shouldn't be a problem. I'd dare say it's better to add more
virtuals than introducing USEflags to existing ones -- it requires less
work from users.

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


Re: [gentoo-dev] Questions about SystemD and OpenRC

2012-08-15 Thread Fabian Groffen
On 15-08-2012 12:58:32 +0200, Michał Górny wrote:
 Rich Freeman ri...@gentoo.org wrote:
  2.  Things like Prefix rely on the system not installing local copies
  of libraries in the core system it needs to link to.  Careful use of
  package.provided in profiles might address this.

Huh?  Not sure I understand this, but it suggests something which isn't
true for Prefix to me.

 We could also make virtuals not pull in anything on Prefix in those
 cases.

Things like virtual/os-headers already do so.


-- 
Fabian Groffen
Gentoo on a different level


signature.asc
Description: Digital signature


Re: [gentoo-dev] Questions about SystemD and OpenRC

2012-08-15 Thread Rich Freeman
On Wed, Aug 15, 2012 at 7:07 AM, Fabian Groffen grob...@gentoo.org wrote:
 On 15-08-2012 12:58:32 +0200, Michał Górny wrote:
 Rich Freeman ri...@gentoo.org wrote:
  2.  Things like Prefix rely on the system not installing local copies
  of libraries in the core system it needs to link to.  Careful use of
  package.provided in profiles might address this.

 Huh?  Not sure I understand this, but it suggests something which isn't
 true for Prefix to me.

Do you want every other package in the tree depending on glibc, and
therefore trying to pull it in on a prefix system?  (For those
unaware, prefix depends on a non-Gentoo glibc for the system call
interface.)  There are probably a few ways you could do it, but if you
got rid of the implicit @system dependency then you'd need to handle
situations where @system is something non-traditional and ebuilds are
likely to do it wrong.

Agree with mgorny's suggestion that anything required by PMS could be
pulled in by the package manager, perhaps in an EAPI-dependent
fashion.

Oh, @system has another use I didn't mention - getting rid of some
chicken-and-egg issues during the initial install.  That can be
addressed by providing pre-built stage1/2/3s, having package sets and
scripts for their building, and so on.  Maybe make world a world.d
directory with Gentoo providing a starter file and users modifying
their own addition, but being free to remove items and depcleaning
them.  Or provide a syntax for world to remove packages pulled in by a
distro-provided world, etc.  Many elements of this would benefit from
public comment obviously should we choose to go along this road.

Rich



Re: [gentoo-dev] Questions about SystemD and OpenRC

2012-08-15 Thread Fabian Groffen
On 15-08-2012 07:32:45 -0400, Rich Freeman wrote:
 On Wed, Aug 15, 2012 at 7:07 AM, Fabian Groffen grob...@gentoo.org wrote:
  On 15-08-2012 12:58:32 +0200, Michał Górny wrote:
  Rich Freeman ri...@gentoo.org wrote:
   2.  Things like Prefix rely on the system not installing local copies
   of libraries in the core system it needs to link to.  Careful use of
   package.provided in profiles might address this.
 
  Huh?  Not sure I understand this, but it suggests something which isn't
  true for Prefix to me.
 
 Do you want every other package in the tree depending on glibc, and
 therefore trying to pull it in on a prefix system?  (For those
 unaware, prefix depends on a non-Gentoo glibc for the system call
 interface.)

Correction: Prefix uses a possibly non-Gentoo, host-provided libc, not
necessarily GNU libc of an unknown version.

There are only a few packages I've seen that depend on a certain
(min/max) version of glibc, and when in use for Prefix, mostly use
  !prefix? ( elibc_glibc? ( ...) )
stuff at the moment.


-- 
Fabian Groffen
Gentoo on a different level


signature.asc
Description: Digital signature


Re: [gentoo-dev] Questions about SystemD and OpenRC

2012-08-15 Thread Rich Freeman
On Wed, Aug 15, 2012 at 7:41 AM, Fabian Groffen grob...@gentoo.org wrote:
 There are only a few packages I've seen that depend on a certain
 (min/max) version of glibc, and when in use for Prefix, mostly use
   !prefix? ( elibc_glibc? ( ...) )
 stuff at the moment.

Half the packages in portage link to libc, though they don't actually
declare this dependency due to the policy of not declaring policies in
@system.  If you got rid of @system then they'd need to declare them.

However, use of virtuals or package.provided would address this issue
- I was just pointing it out.

Rich



Re: [gentoo-dev] Questions about SystemD and OpenRC

2012-08-15 Thread Fabian Groffen
On 15-08-2012 07:50:42 -0400, Rich Freeman wrote:
 On Wed, Aug 15, 2012 at 7:41 AM, Fabian Groffen grob...@gentoo.org wrote:
  There are only a few packages I've seen that depend on a certain
  (min/max) version of glibc, and when in use for Prefix, mostly use
!prefix? ( elibc_glibc? ( ...) )
  stuff at the moment.
 
 Half the packages in portage link to libc, though they don't actually
 declare this dependency due to the policy of not declaring policies in
 @system.  If you got rid of @system then they'd need to declare them.

Yeah, so just don't do that.


-- 
Fabian Groffen
Gentoo on a different level


signature.asc
Description: Digital signature


Re: [gentoo-dev] Questions about SystemD and OpenRC

2012-08-15 Thread William Hubbs
On Wed, Aug 15, 2012 at 06:27:41AM -0400, Rich Freeman wrote:
 RE you concerns about OpenRC being in @system.  Personally I'm a fan
 of getting rid of @system entirely except as something used to build
 install CDs or having some sets for convenience in building systems.
 It only exists for a few reasons that I can think of:
 1.  Devs don't want to have ebuilds that capture dependencies on every
 little thing.  A few well-chosen virtuals like shell utilities or
 whatever might help with this.
 2.  Things like Prefix rely on the system not installing local copies
 of libraries in the core system it needs to link to.  Careful use of
 package.provided in profiles might address this.
 3.  We'd need many more virtuals to handle situations like FreeBSD
 where people don't what GNU on their systems.  Right now if they are
 system packages they just define system appropriately and ebuilds
 don't directly pull in the GNU stuff anyway.
 
 I'm sure there could be others.  Keep in mind that systemd is still
 pretty new and largely out-of-the-blue so it will take time for Gentoo
 to adjust to it.  Right now OpenRC might install executables, but
 nothing should be actually running them - this is just wasted
 compilation time which isn't a bad interim state to be in.  If
 virtualizing udev is causing controversy just wait until somebody
 actually makes a push to remove OpenRC from @system...

This isn't in the plans. OpenRC gets installed everywhere right now,
because it is a pdepend of baselayout. The plan is actually to tie it to
a virtual which will be added to @system; I just haven't gotten around
to doing this yet. [1]

William

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


pgp04cNZXn8Wa.pgp
Description: PGP signature


Re: [gentoo-dev] Questions about SystemD and OpenRC

2012-08-15 Thread Rich Freeman
On Wed, Aug 15, 2012 at 8:01 AM, Fabian Groffen grob...@gentoo.org wrote:
 On 15-08-2012 07:50:42 -0400, Rich Freeman wrote:
 On Wed, Aug 15, 2012 at 7:41 AM, Fabian Groffen grob...@gentoo.org wrote:
  There are only a few packages I've seen that depend on a certain
  (min/max) version of glibc, and when in use for Prefix, mostly use
!prefix? ( elibc_glibc? ( ...) )
  stuff at the moment.

 Half the packages in portage link to libc, though they don't actually
 declare this dependency due to the policy of not declaring policies in
 @system.  If you got rid of @system then they'd need to declare them.

 Yeah, so just don't do that.

In that case then just ignore that whole section of my post.  :)
Personally I consider the existence of @system a bit of a hack - like
the big kernel lock.  It works OK, but here and there we run into
issues with it.

Williamh pointed out that the plan for now is to virtualize
openrc/systemd, which certainly is a solution to that problem.  Being
an evolutionary vs revolutionary solution it is probably the better
next step.  In fact, if you kept making many steps like that one
before long @system would become mostly a big collection of virtuals
anyway, and at that point its only reason for being would be as an
arbitrary list of packages that ebuild maintainers shouldn't add as
dependencies, at which point you could start stripping it away.

That isn't unlike what was done to get rid of the big kernel lock -
just remove it one instance at a time...

Rich



Re: [gentoo-dev] remove system set?

2012-08-15 Thread Fabian Groffen
On 15-08-2012 09:43:37 -0400, Rich Freeman wrote:
 In that case then just ignore that whole section of my post.  :)
 Personally I consider the existence of @system a bit of a hack - like
 the big kernel lock.  It works OK, but here and there we run into
 issues with it.
 
 Williamh pointed out that the plan for now is to virtualize
 openrc/systemd, which certainly is a solution to that problem.  Being
 an evolutionary vs revolutionary solution it is probably the better
 next step.  In fact, if you kept making many steps like that one
 before long @system would become mostly a big collection of virtuals
 anyway, and at that point its only reason for being would be as an
 arbitrary list of packages that ebuild maintainers shouldn't add as
 dependencies, at which point you could start stripping it away.
 
 That isn't unlike what was done to get rid of the big kernel lock -
 just remove it one instance at a time...

I see it more as the set of packages I need to have on my system/Prefix,
to have Portage and its ebuilds working happily and me being able to do
basic stuff.  One can debate whether ssh belongs to that set.  For a
non-Prefix (regular Gentoo?) system it's sort of essential, for a Prefix
system, it's quite handy to have an ssh that actually works.

Nevertheless, the system set, is a vital part of bootstrapping e.g. a
Prefix setup.  The whole route leading up to the situation of having the
full set installed consists of numerous --nodeps emerges carefully put
in an order where one can get away with the errors one receives due to
missing stuff.

From that angle, if you wouldd remove the system set, would you add its
contents to the Portage ebuild?  Portage itself doesn't need a compiler
or might not need gawk, but whatever it runs (ebuilds) often need so.

Adding libc, a compiler, linker, shell, etc. to almost any every ebuild
looks pretty much useless to me.  Adding deps for all regular tools an
ebuild uses (bash, sed, awk, cut, wc, ...) seems like error-prone and
pretty much useless to me as well.  So, there is the system set which
just is the central place where those packages are recorded.


-- 
Fabian Groffen
Gentoo on a different level


signature.asc
Description: Digital signature


[gentoo-dev] Re: Questions about SystemD and OpenRC

2012-08-15 Thread Duncan
Rich Freeman posted on Wed, 15 Aug 2012 06:27:41 -0400 as excerpted:

 Right now having decent KDE and Gnome support with all the bells and
 whistles[...] isn't that hard, [It] will likely get harder, which means
 in practice what we'll probably have is a reasonable compromise which
 will never be quite as polished in any one direction as it could be,
 unless the end user does the polishing.

Well stated.

 RE you concerns about OpenRC being in @system.  Personally I'm a fan of
 getting rid of @system entirely except as something used to build
 install CDs or having some sets for convenience in building systems. It
 only exists for a few reasons that I can think of:
 1.  Devs don't want to have ebuilds that capture dependencies on every
 little thing.  A few well-chosen virtuals like shell utilities or
 whatever might help with this.
 2.  Things like Prefix rely on the system not installing local copies of
 libraries in the core system it needs to link to.  Careful use of
 package.provided in profiles might address this.
 3.  We'd need many more virtuals to handle situations like FreeBSD where
 people don't what GNU on their systems.  Right now if they are system
 packages they just define system appropriately and ebuilds don't
 directly pull in the GNU stuff anyway.

AFAIK, @system also helps resolve a few nasty circular dependencies.  In 
fact, I believe that's it's primary purpose.  As such I'm not sure it's 
practical (as opposed to possible, cost/benefit simply makes it 
impractical) to entirely get rid of, but it does occur to me that sets 
would be an interesting way to go.  Define a few sets that together 
compose @system as we have it today, and basically package.provide them 
during the bootstrap phase.

AFAIK the original stage tarball also contains a minimal installed tree, 
for similar reasons.  I'm not actually sure how they interact.  That'd be 
releng/arch/catalyst territory.

-- 
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] Re: Questions about SystemD and OpenRC

2012-08-15 Thread Michael Mol
On Wed, Aug 15, 2012 at 2:21 PM, Duncan 1i5t5.dun...@cox.net wrote:

 Rich Freeman posted on Wed, 15 Aug 2012 06:27:41 -0400 as excerpted:

  Right now having decent KDE and Gnome support with all the bells and
  whistles[...] isn't that hard, [It] will likely get harder, which means
  in practice what we'll probably have is a reasonable compromise which
  will never be quite as polished in any one direction as it could be,
  unless the end user does the polishing.

 Well stated.

  RE you concerns about OpenRC being in @system.  Personally I'm a fan of
  getting rid of @system entirely except as something used to build
  install CDs or having some sets for convenience in building systems. It
  only exists for a few reasons that I can think of:
  1.  Devs don't want to have ebuilds that capture dependencies on every
  little thing.  A few well-chosen virtuals like shell utilities or
  whatever might help with this.
  2.  Things like Prefix rely on the system not installing local copies of
  libraries in the core system it needs to link to.  Careful use of
  package.provided in profiles might address this.
  3.  We'd need many more virtuals to handle situations like FreeBSD where
  people don't what GNU on their systems.  Right now if they are system
  packages they just define system appropriately and ebuilds don't
  directly pull in the GNU stuff anyway.

 AFAIK, @system also helps resolve a few nasty circular dependencies.  In
 fact, I believe that's it's primary purpose.  As such I'm not sure it's
 practical (as opposed to possible, cost/benefit simply makes it
 impractical) to entirely get rid of, but it does occur to me that sets
 would be an interesting way to go.  Define a few sets that together
 compose @system as we have it today, and basically package.provide them
 during the bootstrap phase.

 AFAIK the original stage tarball also contains a minimal installed tree,
 for similar reasons.  I'm not actually sure how they interact.  That'd be
 releng/arch/catalyst territory.

Just piping up here, as this relates to an idea that's been
percolating through my mind for a couple weeks.

I've occasionally noticed portage tell me about circular dependencies,
where the most straight forward resolution is to emerge some package
in the loop twice. The first time, with a USE flag disabled (avahi and
gtk are the usual suspects), and the second time with the USE flag
enabled.

In circumstances where it's necessary to do something like that to
reach a final desired system state, I'm not sure I see any problem
with portage automatically doing the two-stage emerge.

It also sounds like something like that could be a benefit to shrinking @system.

As far as things such as libc, where many, many packages require their
use, I don't personally see a problem with recommending that ebuilds
depend on them. My only other notable experience for Linux
distributions is Debian/Ubuntu, and a quick glance shows 16,389
packages expressing explicit dependencies on libc6 in Ubuntu 12.04.

--
:wq



Re: [gentoo-dev] Re: Questions about SystemD and OpenRC

2012-08-15 Thread Ciaran McCreesh
On Wed, 15 Aug 2012 15:18:24 -0400
Michael Mol mike...@gmail.com wrote:
 I've occasionally noticed portage tell me about circular dependencies,
 where the most straight forward resolution is to emerge some package
 in the loop twice. The first time, with a USE flag disabled (avahi and
 gtk are the usual suspects), and the second time with the USE flag
 enabled.
 
 In circumstances where it's necessary to do something like that to
 reach a final desired system state, I'm not sure I see any problem
 with portage automatically doing the two-stage emerge.

That's going to be rather horrible when your package mangler
temporarily turns off acl or turns on build...

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] Re: Questions about SystemD and OpenRC

2012-08-15 Thread Michael Mol
On Wed, Aug 15, 2012 at 3:26 PM, Ciaran McCreesh
ciaran.mccre...@googlemail.com wrote:
 On Wed, 15 Aug 2012 15:18:24 -0400
 Michael Mol mike...@gmail.com wrote:
 I've occasionally noticed portage tell me about circular dependencies,
 where the most straight forward resolution is to emerge some package
 in the loop twice. The first time, with a USE flag disabled (avahi and
 gtk are the usual suspects), and the second time with the USE flag
 enabled.

 In circumstances where it's necessary to do something like that to
 reach a final desired system state, I'm not sure I see any problem
 with portage automatically doing the two-stage emerge.

 That's going to be rather horrible when your package mangler
 temporarily turns off acl or turns on build...

Fair observation; there would need to be a way either weight benign or
dangerous USE/package flags, and search paths with weights outside of
a 'safe' range would be discarded.

A mechanism like that also offers a means of finding and favoring
cheap rebuilds over expensive ones; rebuilding gcc an extra time ought
to be disfavored over rebuilding, say, sudo.

-- 
:wq



[gentoo-dev] [RFC] new tmpfilesd.eclass

2012-08-15 Thread Sergei Trofimovich
As gentoo switched to /var/run/ - /run in tmpfs recently
people got into problems [1] of missing directories like:

/var/run/screen/
/var/run/openfire/
/var/run/proftpd/

they did bite me personally.

openrc-0.10 brought [2] basic support for systemd's tmpfiles'd:

  http://0pointer.de/public/systemd-man/tmpfiles.d.html

But there is no simple way to install such helpers from ebuilds.
The tmpfiles.d is aimed to help in such situations.

I've picked proftpd as an example as it's situation is very similar
to screen's situation. There is inetd mode (opposed to standalone
mode) when you don't have any init.d code to create /var/run/
directories for you. Thus tmpfiles.d for the rescue.

See attach for the whole eclass code. It's almost a copy of Michał's
bash-completion-r1.eclass which I find very easy to use.

I'll show eclass usage example for proftpd:

--- proftpd-1.3.4a-r1.ebuild2012-05-29 20:16:51.0 +0300
+++ proftpd-1.3.4a-r2.ebuild2012-08-15 23:10:49.0 +0300
@@ -3,7 +3,7 @@
 # $Header: /var/cvsroot/gentoo-x86/net-ftp/proftpd/proftpd-1.3.4a-r1.ebuild,v 
1.2 2012/05/13 10:49:47 swift Exp $
 
 EAPI=4
-inherit eutils
+inherit eutils tmpfilesd
 
 MOD_CASE=0.7
 MOD_CLAMAV=0.11rc
@@ -216,6 +216,8 @@
docinto rfc
dodoc doc/rfc/*.txt
fi
+
+   newtmpfilesd ${FILESDIR}/tmpfilesd.conf ${PN}.conf
 }
 
 pkg_postinst() {

The caveats:
- files get created only if I run /lib/rc/sh/tmpfiles.sh manually
- haven't tested with systemd, but i'd expect it to work

Thanks!

[1]: https://bugs.gentoo.org/show_bug.cgi?id=361349
[2]: https://bugs.gentoo.org/show_bug.cgi?id=396003

-- 

  Sergei


tmpfilesd.eclass
Description: Binary data


signature.asc
Description: PGP signature


Re: [gentoo-dev] [RFC] new tmpfilesd.eclass

2012-08-15 Thread Michał Górny
On Wed, 15 Aug 2012 23:57:57 +0300
Sergei Trofimovich sly...@gentoo.org wrote:

 But there is no simple way to install such helpers from ebuilds.
 The tmpfiles.d is aimed to help in such situations.

Yes, there is.

$ grep dotmpfiles *.eclass
systemd.eclass:# @FUNCTION: systemd_dotmpfilesd
systemd.eclass:systemd_dotmpfilesd() {

Well, it doesn't have a new* variant but I guess that can be added if
necessary.

Also, maybe for some devs a easy make_tmpfiles_d() function will be
useful too...

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


Re: [gentoo-dev] [RFC] new tmpfilesd.eclass

2012-08-15 Thread William Hubbs
I have a couple of minor requests for readability.

Can you call the eclass tmpfiles-d.eclass?
Then, for the functions themselves, use names like,

dotmpfiles_d
newtmpfiles_d

so they will be a bit more readable?

Thanks,

William



pgpmBlPbfeN2v.pgp
Description: PGP signature