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
_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to