| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Header: /var/cvsroot/gentoo-x86/net-misc/dhcpcd/dhcpcd-6.8.2.ebuild,v 1.1 2015/05/05 13:20:12 williamh Exp $ |
| |
| EAPI=5 |
| |
| MY_P="${P/_alpha/-alpha}" |
| MY_P="${MY_P/_beta/-beta}" |
| MY_P="${MY_P/_rc/-rc}" |
| SRC_URI="http://roy.marples.name/downloads/${PN}/${MY_P}.tar.bz2" |
| KEYWORDS="*" |
| S="${WORKDIR}/${MY_P}" |
| |
| inherit eutils systemd toolchain-funcs user |
| |
| DESCRIPTION="A fully featured, yet light weight RFC2131 compliant DHCP client" |
| HOMEPAGE="http://roy.marples.name/projects/dhcpcd/" |
| LICENSE="BSD-2" |
| SLOT="0" |
| IUSE="elibc_glibc +embedded ipv6 kernel_linux +udev +dbus" |
| |
| COMMON_DEPEND="udev? ( virtual/udev ) |
| dbus? ( sys-apps/dbus )" |
| DEPEND="${COMMON_DEPEND}" |
| RDEPEND="${COMMON_DEPEND}" |
| |
| src_prepare() |
| { |
| epatch "${FILESDIR}"/patches/${P}-Optionally-ARP-for-gateway-IP-address.patch |
| epatch "${FILESDIR}"/patches/${P}-Teach-DHCP-client-to-do-unicast-ARP-for-gatew.patch |
| epatch "${FILESDIR}"/patches/${P}-Fix-dhcpcd-running-as-a-regular-user.patch |
| epatch "${FILESDIR}"/patches/${P}-Allow-lease-file-to-be-set-on-command-line.patch |
| epatch "${FILESDIR}"/patches/${P}-Be-more-permissive-on-NAKs.patch |
| epatch "${FILESDIR}"/patches/${P}-Accept-an-ACK-after-a-NAK.patch |
| epatch "${FILESDIR}"/patches/${P}-Track-and-validate-disputed-addresses.patch |
| epatch "${FILESDIR}"/patches/${P}-Fix-OOB-read-in-dhcpcd.patch |
| epatch "${FILESDIR}"/patches/${P}-Merge-in-DHCP-options-from-the-original-offer.patch |
| epatch "${FILESDIR}"/patches/${P}-Stop-ARP-probes-when-conflict-is-detected.patch |
| epatch "${FILESDIR}"/patches/${P}-Add-option-definition-for-Web-Proxy-Auto-Discovery.patch |
| epatch "${FILESDIR}"/patches/${P}-Add-RPC-support-for-DHCPv4-client.patch |
| epatch "${FILESDIR}"/patches/${P}-UPSTREAM-Fix-ARP-checking.patch |
| epatch "${FILESDIR}"/patches/${P}-Add-ability-to-disable-hook-scripts.patch |
| epatch "${FILESDIR}"/patches/${P}-Improve-debugability.patch |
| epatch "${FILESDIR}"/patches/${P}-Add-DBus-RPC-support.patch |
| epatch "${FILESDIR}"/patches/${P}-ChromiumOS-DHCPv6-support.patch |
| epatch "${FILESDIR}"/patches/${P}-UPSTREAM-Zero-Length-Embedded-Option.patch |
| epatch "${FILESDIR}"/patches/${P}-DHCPv6-Fix-prefix-delegation-lease-file-name.patch |
| epatch "${FILESDIR}"/patches/${P}-Ensure-Gateway-Probe-Is-Broadcast.patch |
| epatch "${FILESDIR}"/patches/${P}-UPSTREAM-Fix-heap-based-overflow-in-dhcp_envoption1.patch |
| epatch "${FILESDIR}"/patches/${P}-UPSTREAM-Ensure-that-option-length-fits-inside-data-length-less-option-size.patch |
| epatch "${FILESDIR}"/patches/${P}-Change-vendor_encapsulated_options-to-binhex.patch |
| epatch "${FILESDIR}"/patches/${P}-Handle-DHCP-iSNS-option.patch |
| epatch "${FILESDIR}"/patches/${P}-Send-more-DHCPv6-options-over-DBus-RPC.patch |
| epatch "${FILESDIR}"/patches/${P}-Fix-dbus-flags.patch |
| } |
| |
| src_configure() |
| { |
| local dev hooks |
| use udev || dev="--without-dev --without-udev" |
| if ! use dbus ; then |
| hooks="--with-hook=ntp.conf" |
| use elibc_glibc && hooks="${hooks} --with-hook=yp.conf" |
| fi |
| econf \ |
| --prefix= \ |
| --libexecdir=/lib/dhcpcd \ |
| --dbdir=/var/lib/dhcpcd \ |
| --rundir=/run/dhcpcd \ |
| $(use_enable embedded) \ |
| $(use_enable ipv6) \ |
| $(use_enable dbus) \ |
| ${dev} \ |
| CC="$(tc-getCC)" \ |
| ${hooks} |
| # Update DUID file path so it is writable by dhcp user. |
| echo '#define DUID DBDIR "/" PACKAGE ".duid"' >> "${S}/config.h" |
| } |
| |
| src_install() |
| { |
| default |
| newinitd "${FILESDIR}"/${PN}.initd ${PN} |
| systemd_dounit "${FILESDIR}"/${PN}.service |
| } |
| |
| pkg_preinst() |
| { |
| enewuser "dhcp" |
| enewgroup "dhcp" |
| } |
| |
| pkg_postinst() |
| { |
| # Upgrade the duid file to the new format if needed |
| local old_duid="${ROOT}"/var/lib/dhcpcd/dhcpcd.duid |
| local new_duid="${ROOT}"/etc/dhcpcd.duid |
| if [ -e "${old_duid}" ] && ! grep -q '..:..:..:..:..:..' "${old_duid}"; then |
| sed -i -e 's/\(..\)/\1:/g; s/:$//g' "${old_duid}" |
| fi |
| |
| # Move the duid to /etc, a more sensible location |
| if [ -e "${old_duid}" -a ! -e "${new_duid}" ]; then |
| cp -p "${old_duid}" "${new_duid}" |
| fi |
| |
| if [ -z "$REPLACING_VERSIONS" ]; then |
| elog |
| elog "dhcpcd has zeroconf support active by default." |
| elog "This means it will always obtain an IP address even if no" |
| elog "DHCP server can be contacted, which will break any existing" |
| elog "failover support you may have configured in your net configuration." |
| elog "This behaviour can be controlled with the noipv4ll configuration" |
| elog "file option or the -L command line switch." |
| elog "See the dhcpcd and dhcpcd.conf man pages for more details." |
| |
| elog |
| elog "Dhcpcd has duid enabled by default, and this may cause issues" |
| elog "with some dhcp servers. For more information, see" |
| elog "https://bugs.gentoo.org/show_bug.cgi?id=477356" |
| fi |
| |
| if ! has_version net-dns/bind-tools; then |
| elog |
| elog "If you activate the lookup-hostname hook to look up your hostname" |
| elog "using the dns, you need to install net-dns/bind-tools." |
| fi |
| } |