[systemd-devel] [ PATCH-v2 ] dnsmasq ebuild and unit files for dnsmasq
Henry Gebhardt
hsggebhardt at googlemail.com
Sun May 22 08:22:30 PDT 2011
On Sun, May 22, 2011 at 02:50:00PM +0800, microcai wrote:
> Heya,
>
> Here is the 2nd version.
>
> Split the DHCP and TFTP socket and use Servie=dnsmasq.servie to point to
> dnsmasq.
>
> Add einfo to the user tell then how to do with the socket unit files.
>
> both DNS and tftp have been test. I haven't test DHCP activation, But I
> think it will works.
>
> CC systemd for other people to review the socket unit files.
CC'ing Michal, I hope you don't mind. But one question: Should
services/sockets be enabled by default (e.g. using your
systemd_enable_services() function)?
>
> Thanks.
>
> # Copyright 1999-2011 Gentoo Foundation
> # Distributed under the terms of the GNU General Public License v2
> # $Header: /var/cvsroot/gentoo-x86/net-dns/dnsmasq/dnsmasq-2.57.ebuild,v 1.6 2011/04/16 18:23:07 armin76 Exp $
>
> EAPI=2
>
> inherit eutils toolchain-funcs flag-o-matic systemd systemd-local
Don't use systemd-local. It isn't needed anymore and will go away soon.
>
> MY_P="${P/_/}"
> MY_PV="${PV/_/}"
> DESCRIPTION="Small forwarding DNS server"
> HOMEPAGE="http://www.thekelleys.org.uk/dnsmasq/"
> SRC_URI="http://www.thekelleys.org.uk/dnsmasq/${MY_P}.tar.lzma"
>
> LICENSE="GPL-2"
> SLOT="0"
> KEYWORDS="alpha amd64 arm hppa ia64 ~mips ~ppc ~ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd"
> IUSE="dbus +dhcp idn ipv6 nls tftp systemd"
We can do without the systemd use-flag.
>
> RDEPEND="dbus? ( sys-apps/dbus )
> idn? ( net-dns/libidn )
> nls? (
> sys-devel/gettext
> net-dns/libidn
> )
> systemd? (
> >=sys-apps/systemd-26
> )
> "
It doesn't need systemd, it works fine without it, and we don't need the
systemd use-flag.
>
> DEPEND="${RDEPEND}
> dev-util/pkgconfig
> || ( app-arch/xz-utils app-arch/lzma-utils )"
>
> S="${WORKDIR}/${PN}-${MY_PV}"
>
> src_prepare() {
> # dnsmasq on FreeBSD wants the config file in a silly location, this fixes
> epatch "${FILESDIR}/${PN}-2.47-fbsd-config.patch"
> use systemd && epatch "${FILESDIR}/${P}-systemd.patch"
> }
Just always apply that patch.
>
> src_configure() {
> COPTS=""
> use tftp || COPTS+=" -DNO_TFTP"
> use dhcp || COPTS+=" -DNO_DHCP"
> use ipv6 || COPTS+=" -DNO_IPV6"
> use dbus && COPTS+=" -DHAVE_DBUS"
> use idn && COPTS+=" -DHAVE_IDN"
> }
>
> src_compile() {
> emake \
> PREFIX=/usr \
> CC="$(tc-getCC)" \
> CFLAGS="${CFLAGS}" \
> COPTS="${COPTS}" \
> all$(use nls && echo "-i18n") || die
> }
>
> src_install() {
> emake \
> PREFIX=/usr \
> MANDIR=/usr/share/man \
> DESTDIR="${D}" \
> install$(use nls && echo "-i18n") || die
>
> dodoc CHANGELOG FAQ
> dohtml *.html
>
> newinitd "${FILESDIR}"/dnsmasq-init dnsmasq
> newconfd "${FILESDIR}"/dnsmasq.confd dnsmasq
> insinto /etc
> newins dnsmasq.conf.example dnsmasq.conf
>
> if use dbus ; then
> insinto /etc/dbus-1/system.d
> doins dbus/dnsmasq.conf
> fi
>
> if use systemd ; then
> doservices "${FILESDIR}/dnsmasq.service"
> doservices "${FILESDIR}/dnsmasq.socket"
> doservices "${FILESDIR}/dnsmasq-dhcp.socket"
> doservices "${FILESDIR}/dnsmasq-tftp.socket"
> fi
> }
Always install the unit files, and use systemd_dounit() from the systemd
eclass.
>
> pkg_postinst(){
> if use systemd ; then
> einfo "You have enabled systemd use flag, enable dnsmasq with "
> einfo "systemctl enable dnsmasq.socket"
> einfo "If you want to enable dhcp and ftp support in ${PN}, don't forget to run "
> einfo "systemctl enable dnsmasq-dhcp.socket "
> einfo "and"
> einfo "systemctl enable dnsmasq-tftp.socket"
> einfo "When you enable it in the configure file"
> fi
> }
>
If we get rid of the systemd use-flag, you could either always print
this message, or use systemd_enable_service() in src_install() to enable
them by default.
> # This file is part of systemd.
Well, it isn't...
> #
> # systemd is free software; you can redistribute it and/or modify it
> # under the terms of the GNU General Public License as published by
> # the Free Software Foundation; either version 2 of the License, or
> # (at your option) any later version.
>
> [Unit]
> Description=dnsmasq
I think a more descriptive description is in order. How about
"Forwarding DNS server"?
> After=syslog.socket
>
> [Service]
> StandardOutput=syslog
> StandardError=syslog
>
> ExecStart=/usr/sbin/dnsmasq -d -k
>
> [Unit]
> Description=dnsmasq socket
>
> [Socket]
>
> BindIPv6Only=ipv6-only
>
> #DNS
> ListenDatagram=0.0.0.0:53
> ListenStream=0.0.0.0:53
> ListenDatagram=[::]:53
> ListenStream=[::]:53
>
> #DHCP uncomment this to use dhcp
> #ListenDatagram=0.0.0.0:67
> #ListenDatagram=[::]:67
>
> #TFTP, uncomment this to have tftp support
> #ListenDatagram=[::]:69
> #ListenDatagram=0.0.0.0:69
The commented lines are no longer needed with the units below.
>
> [Install]
> WantedBy=sockets.target
> [Unit]
> Description=dnsmasq DHCP mode socket
>
> [Socket]
>
> BindIPv6Only=ipv6-only
>
>
> ListenDatagram=0.0.0.0:67
> ListenDatagram=[::]:67
>
> Service=dnsmasq.service
>
> [Install]
> WantedBy=sockets.target
> [Unit]
> Description=dnsmasq tftp mode socket
>
> [Socket]
>
> BindIPv6Only=ipv6-only
>
>
> #TFTP, uncomment this to have tftp support
This comment isn't needed anymore.
> ListenDatagram=[::]:69
> ListenDatagram=0.0.0.0:69
>
> Service=dnsmasq.service
>
> [Install]
> WantedBy=sockets.target
Thanks,
Henry
More information about the systemd-devel
mailing list