commit:     128b74fe25d08b3f8d17e3ee793d87131eba9c37
Author:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 13 01:11:47 2016 +0000
Commit:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
CommitDate: Wed Apr 13 01:12:10 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=128b74fe

net-misc/miniupnpd: Version bump, expose several options through USE flags

This also reworks the init script to be more modern and allows skipping of the
iptables manipulation scripts.

Package-Manager: portage-2.2.28

 net-misc/miniupnpd/Manifest                        |   1 +
 .../files/miniupnpd-1.10_pre20160222-build.patch   | 125 +++++++++++++++++++++
 net-misc/miniupnpd/files/miniupnpd-conf.d-r1       |  10 ++
 net-misc/miniupnpd/files/miniupnpd-init.d-r1       |  33 ++++++
 net-misc/miniupnpd/metadata.xml                    |   7 ++
 .../miniupnpd/miniupnpd-1.10_pre20160222.ebuild    |  76 +++++++++++++
 6 files changed, 252 insertions(+)

diff --git a/net-misc/miniupnpd/Manifest b/net-misc/miniupnpd/Manifest
index 9915e8c..521d049 100644
--- a/net-misc/miniupnpd/Manifest
+++ b/net-misc/miniupnpd/Manifest
@@ -1 +1,2 @@
 DIST miniupnpd-1.9.20150721.tar.gz 207562 SHA256 
9340224e5023ecb5d1b7f45e4d69734dcfbadbe41a80d1f0182347e6b8104470 SHA512 
ed060a19bfb8f285c10d0c86ca54b646d8cad6baf29266bb395fe75ec23de63986a51362281213e9a14cd14225cc19a33cf404a139a55c7b0f72ced78581c660
 WHIRLPOOL 
9050b20f6118c63fe9d1cce8c8710e47e9e491ff28a1df29bf4b7a1e4e57fa537b06ce8ed667c1bc138e63dc23ba95a793980a32586c84a4728aa5977d10c6d4
+DIST miniupnpd-1.9.20160222.tar.gz 217541 SHA256 
e7d9d071876ac2ed41a04fe4436f8a8d4329c5c31d940e98c6666ca26823c960 SHA512 
ebc24a69fde793a537c46bc1e2107f94a17b0d8818aa23a4b6faeb2b735f35db840a6ccc49efbe62a3960ad1f346bbb183b6d06eb5ac42c98c2d56c02869fdda
 WHIRLPOOL 
12ef3a7861b2238cd806836a972438c2b60c9f2558aee2a36eb8f6dbea149dc289447697d55b11147c20cee9fde5f1bc7fbd13e86190b82a47d7d2242482774b

diff --git a/net-misc/miniupnpd/files/miniupnpd-1.10_pre20160222-build.patch 
b/net-misc/miniupnpd/files/miniupnpd-1.10_pre20160222-build.patch
new file mode 100644
index 0000000..3323b1c
--- /dev/null
+++ b/net-misc/miniupnpd/files/miniupnpd-1.10_pre20160222-build.patch
@@ -0,0 +1,125 @@
+diff --git a/Makefile.linux b/Makefile.linux
+index ce6b994..e535c38 100644
+--- a/Makefile.linux
++++ b/Makefile.linux
+@@ -36,6 +36,7 @@ INSTALL = install
+ STRIP ?= strip
+ PKG_CONFIG ?= pkg-config
+ CP = cp
++LDLIBS_IPV6 :=
+ 
+ 
+ INSTALLPREFIX ?= $(PREFIX)/usr
+@@ -55,90 +56,8 @@ NETFILTEROBJS = netfilter/iptcrdr.o netfilter/iptpinhole.o 
netfilter/nfct_get.o
+ 
+ ALLOBJS = $(BASEOBJS) $(LNXOBJS) $(NETFILTEROBJS)
+ 
+-PCFILE_FOUND := $(shell $(PKG_CONFIG) --exists libiptc; echo $$?)
+-
+-ifeq (${PCFILE_FOUND},0)
+-
+-IPTABLESVERSION := $(shell $(PKG_CONFIG) --modversion libiptc)
+-IPTABLESVERSION1 := $(shell echo $(IPTABLESVERSION) | cut -d. -f1 )
+-IPTABLESVERSION2 := $(shell echo $(IPTABLESVERSION) | cut -d. -f2 )
+-IPTABLESVERSION3 := $(shell echo $(IPTABLESVERSION) | cut -d. -f3 )
+-# test if iptables version >= 1.4.3
+-TEST := $(shell [ \( \( $(IPTABLESVERSION1) -ge 1 \) -a \( 
$(IPTABLESVERSION2) -ge 4 \) \) -a \( $(IPTABLESVERSION3) -ge 3 \) ] && echo 1 )
+-ifeq ($(TEST), 1)
++LDLIBS += -lip4tc $(LDLIBS_IPV6)
+ CPPFLAGS += -DIPTABLES_143
+-endif
+-
+-CFLAGS  += $(shell $(PKG_CONFIG) --cflags libiptc)
+-LDLIBS  += $(shell $(PKG_CONFIG) --static --libs-only-l libiptc)
+-LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-L libiptc)
+-LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-other libiptc)
+-else
+-
+-ifeq "$(wildcard /etc/gentoo-release )" ""
+-LDLIBS ?= -liptc
+-else # gentoo
+-# the following is better, at least on gentoo with iptables 1.4.6
+-# see http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=1618
+-# and http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=2183
+-LDLIBS ?= -lip4tc
+-CPPFLAGS := -DIPTABLES_143 $(CPPFLAGS)
+-endif
+-
+-ARCH ?= $(shell uname -m | grep -q "x86_64" && echo 64)
+-ifdef IPTABLESPATH
+-CPPFLAGS := $(CPPFLAGS) -I$(IPTABLESPATH)/include/
+-LDFLAGS := $(LDFLAFGS) -L$(IPTABLESPATH)/libiptc/
+-# get iptables version and set IPTABLES_143 macro if needed
+-ifeq ($(TARGET_OPENWRT),)
+-IPTABLESVERSION := $(shell grep "\#define VERSION" $(IPTABLESPATH)/config.h | 
tr -d \" |cut -d" " -f3 )
+-IPTABLESVERSION1 := $(shell echo $(IPTABLESVERSION) | cut -d. -f1 )
+-IPTABLESVERSION2 := $(shell echo $(IPTABLESVERSION) | cut -d. -f2 )
+-IPTABLESVERSION3 := $(shell echo $(IPTABLESVERSION) | cut -d. -f3 )
+-# test if iptables version >= 1.4.3
+-TEST := $(shell [ \( \( $(IPTABLESVERSION1) -ge 1 \) -a \( 
$(IPTABLESVERSION2) -ge 4 \) \) -a \( $(IPTABLESVERSION3) -ge 3 \) ] && echo 1 )
+-ifeq ($(TEST), 1)
+-CPPFLAGS := $(CPPFLAGS) -DIPTABLES_143
+-# the following sucks, but works
+-LDLIBS = $(IPTABLESPATH)/libiptc/.libs/libip4tc.o
+-#LDLIBS = $(IPTABLESPATH)/libiptc/.libs/libiptc.a
+-else # ifeq ($(TEST), 1)
+-LDLIBS = $(IPTABLESPATH)/libiptc/libiptc.a
+-endif # ifeq ($(TEST), 1)
+-else # ($(TARGET_OPENWRT),)
+-# openWRT :
+-# check for system-wide iptables files. Test if iptables version >= 1.4.3
+-# the following test has to be verified :
+-TEST := $(shell test -f /usr/include/iptables/internal.h && grep -q "\#define 
IPTABLES_VERSION" /usr/include/iptables/internal.h && echo 1)
+-ifeq ($(TEST), 1)
+-CPPFLAGS := $(CPPFLAGS) -DIPTABLES_143
+-LDLIBS = -liptc
+-endif  # ($(TEST), 1)
+-TEST_LIB := $(shell test -f /usr/lib$(ARCH)/libiptc.a && echo 1)
+-ifeq ($(TEST_LIB), 1)
+-LDLIBS = -liptc /usr/lib$(ARCH)/libiptc.a
+-endif # ($(TEST_LIB), 1)
+-endif # ($(TARGET_OPENWRT),)
+-else # ifdef IPTABLESPATH
+-# IPTABLESPATH not defined
+-# the following test has to be verified :
+-TEST := $(shell test -f /usr/include/xtables.h && grep -q 
"XTABLES_VERSION_CODE" /usr/include/xtables.h && echo 1)
+-ifeq ($(TEST), 1)
+-CPPFLAGS := $(CPPFLAGS) -DIPTABLES_143
+-LDLIBS = -liptc
+-TESTIP4TC := $(shell test -f /lib/libip4tc.so && echo 1)
+-ifeq ($(TESTIP4TC), 1)
+-LDLIBS := $(LDLIBS) -lip4tc
+-endif # ($(TESTIP4TC), 1)
+-TESTIP6TC := $(shell test -f /lib/libip6tc.so && echo 1)
+-ifeq ($(TESTIP6TC), 1)
+-LDLIBS := $(LDLIBS) -lip6tc
+-endif # ($(TESTIP6TC), 1)
+-endif # ($(TEST), 1)
+-endif # ifdef IPTABLESPATH
+-endif # ifdef PCFILE_FOUND
+-
+-#LDLIBS += -lnfnetlink
+ 
+ TEST := $(shell $(PKG_CONFIG) --atleast-version=1.0.2 libnetfilter_conntrack 
&& $(PKG_CONFIG) --atleast-version=1.0.3 libmnl && echo 1)
+ ifeq ($(TEST),1)
+@@ -194,7 +113,6 @@ install:   miniupnpd miniupnpd.8 miniupnpd.conf genuuid \
+       $(INSTALL) linux/miniupnpd.init.d.script 
$(DESTDIR)$(PREFIX)/etc/init.d/miniupnpd
+       $(INSTALL) -d $(DESTDIR)$(MANINSTALLDIR)
+       $(INSTALL) --mode=0644 miniupnpd.8 $(DESTDIR)$(MANINSTALLDIR)
+-      gzip -f $(DESTDIR)$(MANINSTALLDIR)/miniupnpd.8
+ 
+ # genuuid is using the uuidgen CLI tool which is part of libuuid
+ # from the e2fsprogs
+diff --git a/genconfig.sh b/genconfig.sh
+index 976e963..faef028 100755
+--- a/genconfig.sh
++++ b/genconfig.sh
+@@ -299,7 +299,7 @@ case $OS_NAME in
+               fi
+               echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
+               FW=netfilter
+-              V6SOCKETS_ARE_V6ONLY=`/sbin/sysctl -n net.ipv6.bindv6only`
++              V6SOCKETS_ARE_V6ONLY=`/usr/sbin/sysctl -n net.ipv6.bindv6only`
+               ;;
+       OpenWRT)
+               OS_URL=http://www.openwrt.org/

diff --git a/net-misc/miniupnpd/files/miniupnpd-conf.d-r1 
b/net-misc/miniupnpd/files/miniupnpd-conf.d-r1
new file mode 100644
index 0000000..1464bf0
--- /dev/null
+++ b/net-misc/miniupnpd/files/miniupnpd-conf.d-r1
@@ -0,0 +1,10 @@
+# /etc/conf.d/miniupnpd: Configuration for miniupnpd init script
+
+# extra arguments to be passed to the command
+#extra_args=""
+
+# the location of the configuration file
+#config_file="/etc/miniupnpd/miniupnpd.conf"
+
+# uncomment to not use included scripts to manipulate iptables
+#no_iptables_scripts=1

diff --git a/net-misc/miniupnpd/files/miniupnpd-init.d-r1 
b/net-misc/miniupnpd/files/miniupnpd-init.d-r1
new file mode 100644
index 0000000..9940610
--- /dev/null
+++ b/net-misc/miniupnpd/files/miniupnpd-init.d-r1
@@ -0,0 +1,33 @@
+#!/sbin/openrc-run
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+command="/usr/sbin/miniupnpd"
+: "${config_file:=/etc/miniupnpd/miniupnpd.conf}"
+command_args="-f ${config_file:-/etc/miniupnpd/miniupnpd.conf} ${extra_args}"
+: "${pidfile:=/var/run/miniupnpd.pid}"
+
+depend() {
+       need net iptables
+       use minissdpd
+}
+
+start_pre() {
+       local retval=0
+
+       if [[ -z ${no_iptables_scripts} ]]; then
+               /etc/miniupnpd/iptables_init.sh || retval=${?}
+       fi
+       
+       return ${retval}
+}
+
+stop_post() {
+       local retval=0
+
+       if [[ -z ${no_iptables_scripts} ]]; then
+               /etc/miniupnpd/iptables_removeall.sh
+       fi
+
+       return ${retval}
+}

diff --git a/net-misc/miniupnpd/metadata.xml b/net-misc/miniupnpd/metadata.xml
index d788fe6..902c940 100644
--- a/net-misc/miniupnpd/metadata.xml
+++ b/net-misc/miniupnpd/metadata.xml
@@ -12,4 +12,11 @@
        <longdescription>
                MiniUPnP Internet Gateway Device Deamon, used to allow UPnP 
enabled clients to forward ports.
        </longdescription>
+  <use>
+    <flag name="leasefile">Enable lease file.</flag>
+    <flag name="igd2">Build for IGDv2 instead of an IGDv1</flag>
+    <flag name="pcp-peer">Enable support for PCP-PEER to allow NAT-PMP clients 
to mangle their packets.</flag>
+    <flag name="portinuse">Check if a port is in use before allowing a NAT-PMP 
client to map it.</flag>
+    <flag name="strict">Be more strict regarding compliance with UPnP 
specifications.</flag>
+  </use>
 </pkgmetadata>

diff --git a/net-misc/miniupnpd/miniupnpd-1.10_pre20160222.ebuild 
b/net-misc/miniupnpd/miniupnpd-1.10_pre20160222.ebuild
new file mode 100644
index 0000000..061fa32
--- /dev/null
+++ b/net-misc/miniupnpd/miniupnpd-1.10_pre20160222.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit eutils toolchain-funcs versionator flag-o-matic
+
+MY_PV=$(get_version_component_range 3)
+MY_PV=1.9.${MY_PV#pre}
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="MiniUPnP IGD Daemon"
+HOMEPAGE="http://miniupnp.free.fr/";
+SRC_URI="http://miniupnp.free.fr/files/${MY_P}.tar.gz";
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="+leasefile igd2 ipv6 pcp-peer portinuse strict"
+
+RDEPEND=">=net-firewall/iptables-1.4.6:0=[ipv6?]
+       net-libs/libnfnetlink:=
+       net-libs/libmnl:=
+       dev-libs/gmp:0=
+       sys-apps/util-linux
+       dev-libs/openssl:0="
+DEPEND="${RDEPEND}
+       sys-apps/lsb-release"
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-1.10_pre20160222-build.patch"
+)
+
+src_prepare() {
+       default
+       mv Makefile.linux Makefile || die
+}
+
+src_configure() {
+       local -a opts
+       opts=(
+               --vendorcfg
+               $(use igd2 && printf -- '--igd2\n')
+               $(use ipv6 && printf -- '--ipv6\n')
+               $(use leasefile && printf -- '--leasefile\n')
+               $(use portinuse && printf -- '--portinuse\n')
+               $(use pcp-peer && printf -- '--pcp-peer\n')
+               $(use strict && printf -- '--strict\n')
+       )
+
+       emake CONFIG_OPTIONS="${opts[*]}" config.h
+}
+
+src_compile() {
+       # By default, it builds a bunch of unittests that are missing wrapper
+       # scripts in the tarball
+       emake CC="$(tc-getCC)" \
+               STRIP=true \
+               LDLIBS_IPV6="$(use ipv6 && printf -- '-lip6tc')" \
+               miniupnpd
+}
+
+src_install() {
+       emake PREFIX="${ED}" STRIP=true install
+
+       newinitd "${FILESDIR}"/${PN}-init.d-r1 ${PN}
+       newconfd "${FILESDIR}"/${PN}-conf.d-r1 ${PN}
+}
+
+pkg_postinst() {
+       elog "Please correct the external interface in the top of the two"
+       elog "scripts in /etc/miniupnpd and edit the config file in there too"
+}

Reply via email to