# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=ppp
pkgver=2.4.7
pkgrel=5
pkgdesc="A daemon which implements the PPP protocol for dial-up networking"
url="http://www.samba.org/ppp/"
arch="all"
license="BSD and LGPL-2.0-or-later and GPL-2.0-or-later and Public-Domain"
makedepends="bsd-compat-headers linux-headers"
subpackages="$pkgname-doc $pkgname-dev $pkgname-chat $pkgname-radius
	    $pkgname-atm $pkgname-pppoe $pkgname-l2tp $pkgname-winbind
	    $pkgname-passprompt $pkgname-passwordfd $pkgname-minconn
	    $pkgname-daemon
	    "

# for compatibility reasons the 'ppp' package is an empty meta package
# that pulls in all except -dev and -doc subpackages
depends="$pkgname-chat $pkgname-radius
	    $pkgname-atm $pkgname-pppoe $pkgname-l2tp $pkgname-winbind
	    $pkgname-passprompt $pkgname-passwordfd $pkgname-minconn
	    $pkgname-daemon
	    "

source="https://ftp.samba.org/pub/ppp/ppp-$pkgver.tar.gz
	defaultroute-metric.3.patch
	musl-fix-headers.patch
	fix-paths.patch
	0011-build-sys-don-t-put-connect-errors-log-to-etc-ppp.patch
	ip-down
	ip-up"

_builddir="$srcdir"/$pkgname-$pkgver
prepare() {
	local i
	cd "$_builddir"
	for i in $source; do
		case $i in
		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
		esac
	done
}

build () {
	cd "$_builddir"

	# fix CFLAGS
	# -D_GNU_SOURCE is needed for IPv6 to work apparently
	export CFLAGS="$CFLAGS -D_GNU_SOURCE"
	sed -i "s:-O2 -pipe -Wall -g:${CFLAGS}:" pppd/Makefile.linux
	sed -i "s:-g -O2:${CFLAGS}:" pppd/plugins/Makefile.linux
	sed -i "s:-O2:${CFLAGS}:" pppstats/Makefile.linux
	sed -i "s:-O2 -g -pipe:${CFLAGS}:" chat/Makefile.linux
	sed -i "s:-O:${CFLAGS}:" pppdump/Makefile.linux
	# enable active filter
	sed -i "s:^#FILTER=y:FILTER=y:" pppd/Makefile.linux
	# enable ipv6 support
	sed -i "s:^#HAVE_INET6=y:HAVE_INET6=y:" pppd/Makefile.linux
	# Enable Microsoft proprietary Callback Control Protocol
	sed -i "s:^#CBCP=y:CBCP=y:" pppd/Makefile.linux
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--localstatedir=/var \
		|| return 1
	make COPTS="$CFLAGS" || return 1
}

package() {
	cd "$_builddir"
	make INSTROOT="$pkgdir" install || return 1
	install -Dm644 include/net/ppp_defs.h \
		"$pkgdir"/usr/include/net/ppp_defs.h || return 1
	install -D -m755 "$srcdir"/ip-up "$pkgdir"/etc/ppp/ip-up
	install -D -m755 "$srcdir"/ip-down "$pkgdir"/etc/ppp/ip-down
	install -D -m644 etc.ppp/options "$pkgdir"/etc/ppp/options
	install -D -m600 etc.ppp/pap-secrets "$pkgdir"/etc/ppp/pap-secrets
	install -D -m600 etc.ppp/chap-secrets "$pkgdir"/etc/ppp/chap-secrets

	# busybox ifup/ifdown needs pon/poff
	install -D -m644 scripts/pon.1 "$pkgdir"/usr/share/man/man1/pon.1
	install -D -m755 scripts/pon "$pkgdir"/usr/bin/pon || return 1
	install -D -m755 scripts/poff "$pkgdir"/usr/bin/poff || return 1

	install -d "$pkgdir"/usr/share/doc/ppp
	for i in scripts/*; do
		case $i in
		pon|poff|*.1) continue;
		esac
		if [ -f "$i" ]; then
			cp $i "$pkgdir"/usr/share/doc/ppp/ || return 1
		fi
	done
	install -d "$pkgdir"/etc/ppp/peers
}

atm() {
	pkgdesc="pppd plugin to implement PPPoATM protocol"
	depends="ppp-daemon"
	_mv usr/lib/pppd/$pkgver/pppoatm.so 755
}

minconn() {
	pkgdesc="pppd plugin to implement a 'minconnect' option"
	depends="ppp-daemon"
	_mv usr/lib/pppd/$pkgver/minconn.so 755
}

winbind() {
	pkgdesc="WINBIND plugin for pppd"
	depends="ppp-daemon"
	_mv usr/lib/pppd/$pkgver/winbind.so 755
}


passprompt() {
	pkgdesc="pppd plugin to invoke an external PAP password prompter"
	depends="ppp-daemon"
	_mv usr/lib/pppd/$pkgver/passprompt.so 755
}

passwordfd() {
	pkgdesc="pppd plugin let's you pass the password via a file descriptor"
	depends="ppp-daemon"
	_mv usr/lib/pppd/$pkgver/passwordfd.so 755
}

chat() {
	pkgdesc="a program for automatic ppp session establishment"
	depends=
	_mv usr/sbin/chat 755
}

l2tp() {
	pkgdesc="pppd plugin to implement PPPoL2TP protocol"
	depends="ppp-daemon"
	_mv usr/lib/pppd/$pkgver/openl2tp.so 755
	_mv usr/lib/pppd/$pkgver/pppol2tp.so 755
}

pppoe() {
	pkgdesc="pppd plugin for kernel-mode PPPoE on Linux"
	depends="ppp-daemon"
	_mv usr/lib/pppd/$pkgver/rp-pppoe.so 755
	_mv usr/sbin/pppoe-discovery 755
}

radius() {
	pkgdesc="RADIUS plugin for pppd"
	depends="ppp-daemon"
	_mv usr/lib/pppd/$pkgver/radius.so 755
	_mv usr/lib/pppd/$pkgver/radattr.so 755
	_mv usr/lib/pppd/$pkgver/radrealms.so 755
	install -d "$subpkgdir"/etc/radiusclient
	cp -r "$_builddir"/pppd/plugins/radius/etc/* "$subpkgdir"/etc/radiusclient
	mv "$subpkgdir"/etc/radiusclient/radiusclient.conf.in "$subpkgdir"/etc/radiusclient/radiusclient.conf
	sed -i "s:@pkgsysconfdir@:/etc/radiusclient:g" "$subpkgdir"/etc/radiusclient/radiusclient.conf
	sed -i "s:@sbindir@:/usr/sbin:g" "$subpkgdir"/etc/radiusclient/radiusclient.conf
}

_mv() {
	install -m $2 -D "$pkgdir"/$1 "$subpkgdir"/$1
	rm "$pkgdir"/$1
}

daemon() {
	pkgdesc="A daemon which implements the PPP protocol"
	depends=
	mkdir -p "$subpkgdir"
	mv "$pkgdir"/* "$subpkgdir"/ || return 1
}

md5sums="78818f40e6d33a1d1de68a1551f6595a  ppp-2.4.7.tar.gz
5a5c2d1bdca62979d9ed7a5a648e86d1  defaultroute-metric.3.patch
8d2128c74d62a2844491a24794b05a3e  musl-fix-headers.patch
c8f78e010a776d114d687b1a742ca6bb  fix-paths.patch
995535911b0bc5390cd75cee1eae690b  0011-build-sys-don-t-put-connect-errors-log-to-etc-ppp.patch
a88b40b1bf91eb5cca3762b7195e4fe2  ip-down
fac0c773490371ea673f4be0977a230f  ip-up"
sha256sums="02e0a3dd3e4799e33103f70ec7df75348c8540966ee7c948e4ed8a42bbccfb30  ppp-2.4.7.tar.gz
1f69c03747ed68eaaaa8b2f0a239e57f167967fc90a6f89d802dcfe77026846f  defaultroute-metric.3.patch
b136d5366e64a686a3ea24baaaeb4a37c2654c098dd7fcb263caebf9e9281956  musl-fix-headers.patch
b6453eeb32a78d6748b3fc5ef9f21a7862f70f8316c3903097ad63f00497266b  fix-paths.patch
369bcf35e6746e32144357177c8e6650caf7b17018836889ade1019f80715bf3  0011-build-sys-don-t-put-connect-errors-log-to-etc-ppp.patch
84f2b44c9f4b8abdbc9cfbfffb669fa19385b80da55f9c292df115189dc62bd6  ip-down
7d44e21ed945434c32a385f44c690826f74c3d5ddac353deae8174692d8d1beb  ip-up"
sha512sums="e34ce24020af6a73e7a26c83c4f73a9c83fa455b7b363794dba27bf01f70368be06bff779777843949bd77f4bc9385d6ad455ea48bf8fff4e0d73cc8fef16ae2  ppp-2.4.7.tar.gz
fccc7a6809ae4a617796ccf1d2132de8edb1cc0c71d76a95393585a5970b92be2a54da558702db355c8aea8d37b4dfffc64406129a2b3322f0b10e8f0481f685  defaultroute-metric.3.patch
2f071ea9db15e4abf1bed6cce8130dc81b710a31bfef5fa8f9370c353f845dbc47674b1551b8e040478e5156add6f98d480530206125e8bb308f0f4288d1eec6  musl-fix-headers.patch
8384afb992a98a7f97b484866e6aa1b1de51e901d7837f84f7ce2beba6815591450fab43957f03b65804424c4940c59640a9cd878979240a171aa77427e9c4ff  fix-paths.patch
b490971d03fef4de66b61123f80a0087270bcb88466ae8ed98ea9a08b35d4c7c46b2dadd304e2970a4206bb5760a14370d7e3873de6240119d88e927ecef840c  0011-build-sys-don-t-put-connect-errors-log-to-etc-ppp.patch
160260bd2a788beaac395eadb38efbfd1e0e1a458fe151555acacf2c4f3a12381d644672c664f9793db6e3459a4f05a54e3ff6d407b0d37e8014b15bd0f11bcc  ip-down
8258c95a6b6e8e94d6001b5cd3a99bd3270f29ba0f2e5050a26c8d5f1b67eead8d039e71ce86a784d45e620047b0a2bb14b258d80a9ea62084ba588a4c2e2d84  ip-up"
