FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Gentoo > Gentoo Development

 
 
LinkBack Thread Tools
 
Old 08-15-2012, 08:57 PM
Sergei Trofimovich
 
Default new tmpfilesd.eclass

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.ebuild 2012-05-29 20:16:51.000000000 +0300
+++ proftpd-1.3.4a-r2.ebuild 2012-08-15 23:10:49.000000000 +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
 
Old 08-15-2012, 09:25 PM
Michał Górny
 
Default new tmpfilesd.eclass

On Wed, 15 Aug 2012 23:57:57 +0300
Sergei Trofimovich <slyfox@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
 
Old 08-15-2012, 10:26 PM
William Hubbs
 
Default new tmpfilesd.eclass

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
 
Old 08-16-2012, 06:19 AM
"Robin H. Johnson"
 
Default new tmpfilesd.eclass

On Wed, Aug 15, 2012 at 11:57:57PM +0300, Sergei Trofimovich wrote:
> 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.
If the package has an init.d script, it should be doing creation of the
needed dirs. I know this doesn't help screen however.

> openrc-0.10 brought [2] basic support for systemd's tmpfiles'd:
> [2]: https://bugs.gentoo.org/show_bug.cgi?id=396003
> http://0pointer.de/public/systemd-man/tmpfiles.d.html
Ok, missing functionality:
tmpfiles.sh:
- clean-up (age column)
- 'x' type (used only during clean-up to exclude locations from
cleaning).

openrc:
When are the right times to call the tmpfiles code? Where in the early
boot for one, and what other times?

--
Robin Hugh Johnson
Gentoo Linux: Developer, Trustee & Infrastructure Lead
E-Mail : robbat2@gentoo.org
GnuPG FP : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85
 
Old 08-16-2012, 07:13 AM
Sergei Trofimovich
 
Default new tmpfilesd.eclass

On Thu, 16 Aug 2012 06:19:55 +0000
"Robin H. Johnson" <robbat2@gentoo.org> wrote:

> On Wed, Aug 15, 2012 at 11:57:57PM +0300, Sergei Trofimovich wrote:
> > 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.
> If the package has an init.d script, it should be doing creation of the
> needed dirs. I know this doesn't help screen however.

$ sudo /etc/init.d/proftpd restart
proftpd | * Starting ProFTPD ... [ !! ]
proftpd | * ERROR: proftpd failed to start

in inetd mode it's an error to attempt to start daemon.
It does create /var/run/ entry though.

> > openrc-0.10 brought [2] basic support for systemd's tmpfiles'd:
> > [2]: https://bugs.gentoo.org/show_bug.cgi?id=396003
> > http://0pointer.de/public/systemd-man/tmpfiles.d.html
> Ok, missing functionality:
> tmpfiles.sh:
> - clean-up (age column)
> - 'x' type (used only during clean-up to exclude locations from
> cleaning).

Another misfeature: some fields seem to be optional and tmpfiles.sh
dislikes it (example is taken from the bottom of tmpfiles.d.html).
Looks like just missing quotes in tests:

tmpfiles.d # cat screen.conf
d /var/run/screens 1777 root root 10d
d /var/run/uscreens 0755 root root 10d12h
sf tmpfiles.d # /lib/rc/sh/tmpfiles.sh --create
/lib/rc/sh/tmpfiles.sh: 274: [: =: unexpected operator
/lib/rc/sh/tmpfiles.sh: 274: [: =: unexpected operator

--

Sergei
 
Old 08-16-2012, 07:38 AM
Sergei Trofimovich
 
Default new tmpfilesd.eclass

On Wed, 15 Aug 2012 23:25:16 +0200
Michał Górny <mgorny@gentoo.org> wrote:

> On Wed, 15 Aug 2012 23:57:57 +0300
> Sergei Trofimovich <slyfox@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.

Oh, nice. What do you think of moving those helper implementations to
tmpfiles-d.eclass and make

systemd_dotmpfilesd() { dotmpfiles_d "$@"; }

as William suggested? That way we would not impose blocker DEPENDs from
systemd.eclass to users and might help adding {do,new}tmpfiles_d to later EAPIs

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

Yeah, it would be handier to have more freedom in file naming in ${FILESDIR}
like 'proftpd/files/tmpfiles.d-r1.conf' and not just proftpd.conf (which is the
name of server config file)

I don't care who will write/commit tmpfiles-d.eclass :]

Thanks!

--

Sergei
 
Old 08-16-2012, 07:47 AM
Michał Górny
 
Default new tmpfilesd.eclass

On Thu, 16 Aug 2012 10:38:06 +0300
Sergei Trofimovich <slyfox@gentoo.org> wrote:

> On Wed, 15 Aug 2012 23:25:16 +0200
> Michał Górny <mgorny@gentoo.org> wrote:
>
> > On Wed, 15 Aug 2012 23:57:57 +0300
> > Sergei Trofimovich <slyfox@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.
>
> Oh, nice. What do you think of moving those helper implementations to
> tmpfiles-d.eclass and make
>
> systemd_dotmpfilesd() { dotmpfiles_d "$@"; }
>
> as William suggested? That way we would not impose blocker DEPENDs
> from systemd.eclass to users and might help adding {do,new}tmpfiles_d
> to later EAPIs

These blockers do not hurt. They're against ancient systemd versions,
and they're going to be removed soon as well.

> > Also, maybe for some devs a easy make_tmpfiles_d() function will be
> > useful too...
>
> Yeah, it would be handier to have more freedom in file naming in
> ${FILESDIR} like 'proftpd/files/tmpfiles.d-r1.conf' and not just
> proftpd.conf (which is the name of server config file)

I mean function where you wouldn't have to learn the syntax, like we
have make_desktop_entry().

--
Best regards,
Michał Górny
 
Old 08-16-2012, 08:18 AM
Sergei Trofimovich
 
Default new tmpfilesd.eclass

> > Oh, nice. What do you think of moving those helper implementations to
> > tmpfiles-d.eclass and make
> >
> > systemd_dotmpfilesd() { dotmpfiles_d "$@"; }
> >
> > as William suggested? That way we would not impose blocker DEPENDs
> > from systemd.eclass to users and might help adding {do,new}tmpfiles_d
> > to later EAPIs
>
> These blockers do not hurt. They're against ancient systemd versions,
> and they're going to be removed soon as well.

Sounds good.

> > > Also, maybe for some devs a easy make_tmpfiles_d() function will be
> > > useful too...
> >
> > Yeah, it would be handier to have more freedom in file naming in
> > ${FILESDIR} like 'proftpd/files/tmpfiles.d-r1.conf' and not just
> > proftpd.conf (which is the name of server config file)
>
> I mean function where you wouldn't have to learn the syntax, like we
> have make_desktop_entry().

Ah, I see. There is not much to abstract over, but tiny wrapper for

echo "${entry}" > "${T}/${1}".conf || die; dotmpfiles_d "${T}/${1}".conf

would make sense.

--

Sergei
 
Old 08-16-2012, 06:47 PM
"Robin H. Johnson"
 
Default new tmpfilesd.eclass

On Thu, Aug 16, 2012 at 10:13:43AM +0300, Sergei Trofimovich wrote:
> Another misfeature: some fields seem to be optional and tmpfiles.sh
> dislikes it (example is taken from the bottom of tmpfiles.d.html).
> Looks like just missing quotes in tests:
>
> tmpfiles.d # cat screen.conf
> d /var/run/screens 1777 root root 10d
> d /var/run/uscreens 0755 root root 10d12h
> sf tmpfiles.d # /lib/rc/sh/tmpfiles.sh --create
> /lib/rc/sh/tmpfiles.sh: 274: [: =: unexpected operator
> /lib/rc/sh/tmpfiles.sh: 274: [: =: unexpected operator
Fixed in commit c870335.

The documentation http://0pointer.de/public/systemd-man/tmpfiles.d.html
is very inconsistent: it mentioned omitted for mode/uid/gid/age, but not
argument.

--
Robin Hugh Johnson
Gentoo Linux: Developer, Trustee & Infrastructure Lead
E-Mail : robbat2@gentoo.org
GnuPG FP : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85
 

Thread Tools




All times are GMT. The time now is 06:56 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org