From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-dev-announce+bounces-1731-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	by finch.gentoo.org (Postfix) with ESMTP id 441341381F4
	for <garchives@archives.gentoo.org>; Thu, 16 Aug 2012 00:05:07 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id BE1C521C00C
	for <garchives@archives.gentoo.org>; Thu, 16 Aug 2012 00:05:01 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183])
	by pigeon.gentoo.org (Postfix) with ESMTP id 63595E0BDE;
	Wed, 15 Aug 2012 20:52:36 +0000 (UTC)
Received: from sf (unknown [178.120.165.117])
	(using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits))
	(No client certificate requested)
	(Authenticated sender: slyfox)
	by smtp.gentoo.org (Postfix) with ESMTPSA id A45441B4029;
	Wed, 15 Aug 2012 20:52:34 +0000 (UTC)
Date: Wed, 15 Aug 2012 23:57:57 +0300
From: Sergei Trofimovich <slyfox@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Cc: gentoo-dev-announce@lists.gentoo.org
Subject: [gentoo-dev-announce] [RFC] new tmpfilesd.eclass
Message-ID: <20120815235757.14b3053e@sf>
Reply-To: gentoo-dev@lists.gentoo.org
X-Mailer: Claws Mail 3.8.0 (GTK+ 2.24.10; x86_64-pc-linux-gnu)
Precedence: bulk
List-Post: <mailto:gentoo-dev-announce@lists.gentoo.org>
List-Help: <mailto:gentoo-dev-announce+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-dev-announce+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-dev-announce+subscribe@lists.gentoo.org>
List-Id: Gentoo development announcement list <gentoo-dev-announce.gentoo.org>
X-BeenThere: gentoo-dev-announce@lists.gentoo.org
Mime-Version: 1.0
Content-Type: multipart/signed; micalg=PGP-SHA1;
 boundary="Sig_/GFi5uDpAt0jdfG3NZ9oTZ0F"; protocol="application/pgp-signature"
X-Archives-Salt: d2efd994-3ed5-4555-8ed1-aa4d687c6d55
X-Archives-Hash: 3fd963f9feac0ac2a01d52c4fbc66a46

--Sig_/GFi5uDpAt0jdfG3NZ9oTZ0F
Content-Type: multipart/mixed; boundary="MP_/wBeefd/zPgdkP+CNkdTbo3b"

--MP_/wBeefd/zPgdkP+CNkdTbo3b
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

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=C5=82'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.ebuil=
d,v 1.2 2012/05/13 10:49:47 swift Exp $
=20
 EAPI=3D4
-inherit eutils
+inherit eutils tmpfilesd
=20
 MOD_CASE=3D"0.7"
 MOD_CLAMAV=3D"0.11rc"
@@ -216,6 +216,8 @@
                docinto rfc
                dodoc doc/rfc/*.txt
        fi
+
+       newtmpfilesd ${FILESDIR}/tmpfilesd.conf ${PN}.conf
 }
=20
 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=3D361349
[2]: https://bugs.gentoo.org/show_bug.cgi?id=3D396003

--=20

  Sergei

--MP_/wBeefd/zPgdkP+CNkdTbo3b
Content-Type: application/octet-stream; name=tmpfilesd.eclass
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=tmpfilesd.eclass

IyBDb3B5cmlnaHQgMTk5OS0yMDEyIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6ICAkCgojIEBFQ0xBU1M6IHRtcGZpbGVzZC5lY2xhc3MKIyBATUFJTlRBSU5FUjoKIyBzbHlm
b3hAZ2VudG9vLm9yZwojIEBBVVRIT1I6CiMgQmFzZWQgb24gYmFzaC1jb21wbGV0aW9uLXIxLmVj
bGFzcyBieSBNaWNoYcWCIEfDs3JueSA8bWdvcm55QGdlbnRvby5vcmc+LgojIEBCTFVSQjogSGVs
cGVycyB0byBpbnN0YWxsIHRtcGZpbGVzLmQgZmlsZXMuCiMgQERFU0NSSVBUSU9OOgojIEFzIGRl
c2NyaWJlZCBpbiBodHRwOi8vMHBvaW50ZXIuZGUvcHVibGljL3N5c3RlbWQtbWFuL3RtcGZpbGVz
LmQuaHRtbAojIGhlbHBlcnMgYWxsb3cgaW5zdGFsbGluZyBwYWNrYWdlJ3MgdG1wZmlsZXMuZCBp
bnRvIC91c3IvbGliL3RtcGZpbGVzLmQKIyBARVhBTVBMRToKIwojIEBDT0RFCiMgRUFQST00CiMK
IyBzcmNfaW5zdGFsbCgpIHsKIyAJZGVmYXVsdAojCiMgCW5ld3RtcGZpbGVzZCAke0ZJTEVTRElS
fS90bXBmaWxlc2QuY29uZiAke1BOfS5jb25mCiMgfQojIEBDT0RFCgpjYXNlICR7RUFQSTotMH0g
aW4KCTB8MXwyfDN8NCkgOzsKCSopIGRpZSAiRUFQSSAke0VBUEl9IGlzIHVua25vd24uIgplc2Fj
CgojIEBGVU5DVElPTjogZG90bXBmaWxlc2QKIyBAVVNBR0U6IGZpbGUgWy4uLl0KIyBAREVTQ1JJ
UFRJT046CiMgSW5zdGFsbCB0bXBmaWxlcy5kIGZpbGVzIHBhc3NlZCBhcyBhcmdzLiBIYXMgRUFQ
SS1kZXBlbmRhbnQgZmFpbHVyZQojIGJlaGF2aW9yIChsaWtlIGRvaW5zKS4KZG90bXBmaWxlc2Qo
KSB7CglkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSIKCgkoCgkJaW5zaW50
byAvdXNyL2xpYi90bXBmaWxlcy5kCgkJZG9pbnMgIiR7QH0iCgkpCn0KCiMgQEZVTkNUSU9OOiBu
ZXd0bXBmaWxlc2QKIyBAVVNBR0U6IGZpbGUgbmV3bmFtZQojIEBERVNDUklQVElPTjoKIyBJbnN0
YWxsIHRtcGZpbGVzLmQgZmlsZSB1bmRlciBhIG5ldyBuYW1lLiBIYXMgRUFQSS1kZXBlbmRhbnQg
ZmFpbHVyZQojIGJlaGF2aW9yIChsaWtlIG5ld2lucykuCm5ld3RtcGZpbGVzZCgpIHsKCWRlYnVn
LXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IgoKCSgKCQlpbnNpbnRvIC91c3IvbGli
L3RtcGZpbGVzLmQKCQluZXdpbnMgIiR7QH0iCgkpCn0K

--MP_/wBeefd/zPgdkP+CNkdTbo3b--

--Sig_/GFi5uDpAt0jdfG3NZ9oTZ0F
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

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

iEYEARECAAYFAlAsDVgACgkQcaHudmEf86pIlwCfR3gjyxf+QKto5r5Q0JcLFzeS
coEAn0kRcq1VKuAju4uYpq9dZDGnKc8C
=RwIZ
-----END PGP SIGNATURE-----

--Sig_/GFi5uDpAt0jdfG3NZ9oTZ0F--