aboutsummaryrefslogtreecommitdiffstats
path: root/main/dhcp/APKBUILD
blob: 9275bf6f86783265dc3fa6be01cd37e099dc22b0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=dhcp
pkgver=4.4.2_p1
_realver=${pkgver/_p/-P}
pkgrel=0
pkgdesc="ISC Dynamic Host Configuration Protocol (DHCP)"
url="https://www.isc.org/"
arch="all"
license="MPL-2.0"
_depends_server_ldap="!$pkgname-server-vanilla $pkgname"
_depends_server_vanilla="!$pkgname-server-ldap $pkgname"
depends_static="$pkgname-dev"
# busybox utils are not sufficient
_depends_dhclient="coreutils iproute2 run-parts"
_depends_dhcrelay=""  # do not inherit depends from $pkgname
pkgusers="dhcp"
pkggroups="dhcp"
makedepends="krb5-dev linux-headers openldap-dev perl"
install="$pkgname.pre-install"
subpackages="
	$pkgname-dbg
	$pkgname-doc
	$pkgname-openrc
	$pkgname-libs-static
	$pkgname-dev
	dhclient
	dhcrelay
	dhcrelay-openrc
	$pkgname-server-vanilla:server_vanilla
	$pkgname-server-ldap:server_ldap
	"
source="
	https://downloads.isc.org/isc/dhcp/$_realver/dhcp-$_realver.tar.gz
	01-dhclient-script-fix-bare-ip.patch
	02-dhclient-script-remove-bashisms.patch
	dhcp-3.0-fix-perms.patch
	segfault-fix.patch
	remove-duplicate-definitions.patch
	dhclient-script-alpine
	dhcrelay.initd
	dhcrelay.confd
	dhcpd.confd
	dhcpd.initd
	"
builddir="$srcdir/$pkgname-$_realver"
makedepends="$makedepends $_depends_dhclient $_depends_server_ldap $_depends_server_vanilla"

# secfixes:
#   4.4.2_p1-r0:
#     - CVE-2021-25217
#   4.4.1-r0:
#     - CVE-2019-6470
#     - CVE-2018-5732
#     - CVE-2018-5733

_configure() {
	# fix ipv6
	export CFLAGS="$CFLAGS -D_GNU_SOURCE \
		-D_PATH_DHCLIENT_CONF='\"/etc/dhcp/dhclient.conf\"'"

	./configure \
		--build="$CBUILD" \
		--host="$CHOST" \
		--prefix=/usr \
		--sysconfdir=/etc/dhcp \
		--localstatedir=/var \
		--with-srv-conf-file=/etc/dhcp/dhcpd.conf \
		--with-srv-lease-file=/var/lib/dhcp/dhcpd.leases \
		--with-srv6-lease-file=/var/lib/dhcp/dhcpd6.leases \
		--with-cli-lease-file=/var/lib/dhcp/dhclient.leases \
		--with-cli6-lease-file=/var/lib/dhcp/dhclient6.leases \
		--with-srv-pid-file=/run/dhcp/dhcpd.pid \
		--with-srv6-pid-file=/run/dhcp/dhcpd6.pid \
		--with-cli-pid-file=/run/dhcp/dhclient.pid \
		--with-cli6-pid-file=/run/dhcp/dhclient6.pid \
		--with-relay-pid-file=/run/dhcp/dhcrelay.pid \
		--with-relay6-pid-file=/run/dhcp/dhcrelay6.pid \
		--with-libbind=no \
		--enable-dhcpv4o6 \
		--enable-paranoia \
		--enable-log-pid \
		"$@"

}

prepare() {
	# Normally the upstream build system unpacks this before building the
	# library but we need to patch it for segfualt-fix.patch. If we unpack
	# it early then the build system will just use what we've already
	# unpacked and patched.
	tar -C "$builddir"/bind/ -xzf "$builddir"/bind/bind.tar.gz
	default_prepare
}

build() {
	cp -a "$builddir" "$builddir-ldap"

	_configure
	make -j1 -C bind && make

	cd "$builddir-ldap"
	_configure \
		--with-ldap \
		--with-ldapcrypto \
		--with-ldap-gssapi
	make -j1 -C bind && make
}

check() {
	make check

	cd "$builddir-ldap"
	make check
}

package() {
	make DESTDIR="$pkgdir" install

	#install -m751 -D "$builddir"/client/scripts/linux "$pkgdir"/sbin/dhclient-script
	install -m751 -D "$srcdir"/dhclient-script-alpine "$pkgdir"/sbin/dhclient-script
	install -d "$pkgdir"/var/lib/dhcp
	install -d "$pkgdir"/run/dhcp
}

openrc() {
	local name="${subpkgname%-openrc}"
	[ "$name" = dhcp ] && name="dhcpd"

	install -m755 -D "$srcdir"/$name.initd "$pkgdir"/etc/init.d/$name
	install -m644 -D "$srcdir"/$name.confd "$pkgdir"/etc/conf.d/$name

	default_openrc
}

server_ldap() {
	pkgdesc="ISC dhcpd server with LDAP support"
	depends="$_depends_server_ldap"
	provides="dhcp-server"
	provider_priority=100

	install -d "$subpkgdir"
	make DESTDIR="$subpkgdir" -C "$builddir-ldap/server" install-sbinPROGRAMS
}

server_vanilla() {
	pkgdesc="ISC dhcpd server"
	depends="$_depends_server_vanilla"
	install_if="$pkgname=$pkgver-r$pkgrel"
	provides="dhcp-server"
	provider_priority=200

	install -d "$subpkgdir"/usr/sbin
	mv "$pkgdir/usr/sbin/dhcpd" "$subpkgdir/usr/sbin/"
	rmdir "$pkgdir/usr/sbin" || :
}

dhclient() {
	pkgdesc="ISC dhcp client"
	depends="$_depends_dhclient"

	install -d -o dhcp -g dhcp "$subpkgdir"/var/lib/dhcp
	install -d -o dhcp -g dhcp "$subpkgdir"/run/dhcp
	install -d "$subpkgdir"/usr/sbin
	install -d "$subpkgdir"/sbin
	install -d "$subpkgdir"/etc/dhcp
	mv "$pkgdir"/usr/sbin/dhclient "$subpkgdir"/usr/sbin/
	mv "$pkgdir"/sbin/dhclient-script "$subpkgdir"/sbin/
	ln -s ../sbin/dhclient-script "$subpkgdir"/etc/dhclient-script
	mv "$pkgdir"/etc/dhcp/dhclient.conf* "$subpkgdir"/etc/dhcp/
}

dhcrelay() {
	pkgdesc="ISC dhcp relay server"
	depends="$_depends_dhcrelay"
	replaces="dhcp"
	install="$subpkgname.pre-install"

	install -d "$subpkgdir"/run/dhcp \
		"$subpkgdir"/usr/sbin
	mv "$pkgdir"/usr/sbin/dhcrelay "$subpkgdir"/usr/sbin/
}

static() {
	depends="$depends_static"
	default_static || mkdir -p "$subpkgdir"
}


# gpg_signature_extensions="sha512.asc"
# gpgfingerprints="
# 	good:AE3F AC79 6711 EC59 FC00  7AA4 74BB 6B9A 4CBB 3D38
# 	BE0E 9748 B718 253A 28BB  89FF F1B1 1BF0 5CF0 2E57
# 	"

sha512sums="
924e8b44f288361dbe837987869e57b929c73cb5e4af37cb2d7b19bca5ea8594048fb41c0792fede003188185f61b25befbc2ccda42f1f68e6b6bc22ef44b040  dhcp-4.4.2-P1.tar.gz
17e2b9588ee5d1bd9acb9c2e30f7a28308d29c9e797c2be14c1feff52e6e231ce8a94535f18badff1342aff4ae4003aab986e0f0473f0cd280292fdab044b148  01-dhclient-script-fix-bare-ip.patch
a70e4a7e80ee65c8ced6b61db80f7ccd0f35015b5cccf2e7c51705ae129230aa49ba9926bb88f7418018e7a112c2a40451f24b88e04464b590ff20091e8d8709  02-dhclient-script-remove-bashisms.patch
d5697a56fbbff25199962608986e7ffb533ed4afd3e344e3c79d2010dda73cc0b088f06c454e9f0c69eb054e09a374455fa71d3f73306e0c98fa76df4dd321b7  dhcp-3.0-fix-perms.patch
ff07f613da93de6d6a81cf5147ecc937e1405913f1649bf9c58d45214417e6b94b3fd897796d1dd3422ed27a43d935a84d7c72df98d59f30abd88b12f4f6edad  segfault-fix.patch
fcc9f3c5a361e8a5fa690986c415a23e86c347f697aec3087c5783670d4abefcb0f073a37cfac8fe07206ac3e349df9cb7283b84356cdc4f4777b426ab0305ef  remove-duplicate-definitions.patch
d1dce58875793316761f168e29feddc1d3454d1d917d063d43ae102b7b6aab256c3cb420478335c57ebcdb2b7c804afa4d8a1f9ab06a29a4dd23bc5d87db8df2  dhclient-script-alpine
ce62693cb483616844bb6774f9046af6a1a210e35cfaa59ab3bd12f68d50176714a324e92538b35139110b78191866f65b30d6979d8a45f7b68e572e7a1e8427  dhcrelay.initd
fd15dbaa4c61c3c26f407bf13dde859470a1adba134da064b653ccc152ce42635ee8de2fe113ae21ba8470e97e3caad8c1a47b69eb25e5e92b40e26790b96f6d  dhcrelay.confd
7b7a77b7826b475a4113ebeee54501ce417cc56e85754301a82a185d88b4713d198f615a366e63e0e2b0aef988c8137dcd1e18c4036d993378257079da17693d  dhcpd.confd
1f78c4f64a891012b4de029c50934b284ad80313959e06b0f29416f33a9e4f0deca8b61e9224a683a92faf8a08e8b7c075bc6e833ab73b6305c0d6d9712d0baf  dhcpd.initd
"