]> git.pld-linux.org Git - packages/dhcp.git/blob - dhcp.spec
force linking with libatomic on %{arm}
[packages/dhcp.git] / dhcp.spec
1 #
2 # Conditional build:
3 %bcond_without  ldap    # without support for ldap storage
4 %bcond_without  static_libs     # don't build static library
5
6 %define         ver     4.4.2
7 %if 0
8 %define         pverdot .P1
9 %define         pverdir -P1
10 %else
11 %define         pverdot %{nil}
12 %define         pverdir %{nil}
13 %endif
14
15 # vendor string
16 %define vvendor PLD/Linux
17 Summary:        DHCP Server
18 Summary(es.UTF-8):      Servidor DHCP
19 Summary(pl.UTF-8):      Serwer DHCP
20 Summary(pt_BR.UTF-8):   Servidor DHCP (Protocolo de configuração dinâmica de hosts)
21 Name:           dhcp
22 Version:        %{ver}%{pverdot}
23 Release:        1
24 Epoch:          4
25 License:        MIT
26 Group:          Networking/Daemons
27 Source0:        ftp://ftp.isc.org/isc/dhcp/%{ver}%{pverdir}/%{name}-%{ver}%{pverdir}.tar.gz
28 # Source0-md5:  2afdaf8498dc1edaf3012efdd589b3e1
29 Source1:        %{name}.init
30 Source2:        %{name}6.init
31 Source3:        %{name}-relay.init
32 Source4:        %{name}.sysconfig
33 Source5:        %{name}-relay.sysconfig
34 Source10:       %{name}.schema
35 Source11:       %{name}-README.ldap
36 Source12:       draft-ietf-dhc-ldap-schema-01.txt
37 Source13:       %{name}d-conf-to-ldap
38 Patch0:         %{name}-release-by-ifup.patch
39 Patch1:         %{name}-3.0.3-x-option.patch
40 Patch2:         %{name}-paths.patch
41 Patch3:         %{name}-timeouts.patch
42 Patch4:         %{name}-options.patch
43 Patch5:         %{name}-errwarn-message.patch
44 Patch6:         %{name}-memory.patch
45 Patch7:         %{name}-unicast-bootp.patch
46 Patch8:         %{name}-default-requested-options.patch
47 Patch9:         %{name}-manpages.patch
48 Patch10:        %{name}-extravars.patch
49 URL:            http://www.isc.org/sw/dhcp/
50 BuildRequires:  autoconf
51 BuildRequires:  automake
52 BuildRequires:  groff
53 %ifarch %{arm}
54 BuildRequires:  libatomic-devel
55 %endif
56 BuildRequires:  libtool
57 %{?with_ldap:BuildRequires:     openldap-devel}
58 %{?with_ldap:BuildRequires:     openssl-devel}
59 BuildRequires:  rpmbuild(macros) >= 1.304
60 Requires(post): coreutils
61 Requires(post,preun):   /sbin/chkconfig
62 Requires:       rc-scripts >= 0.2.0
63 Provides:       dhcpd
64 Obsoletes:      dhcpv6-server
65 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
66
67 %define         _sbindir        /sbin
68 %define         schemadir       /usr/share/openldap/schema
69
70 %description
71 DHCP (Dynamic Host Configuration Protocol) is a protocol which allows
72 individual devices on an IP network to get their own network
73 configuration information (IP address, subnetmask, broadcast address,
74 etc.) from a DHCP server. The overall purpose of DHCP is to make it
75 easier to administer a large network.
76
77 %description -l es.UTF-8
78 DHCP permite que hosts en una red TCP/IP soliciten y tengan sus
79 direcciones IP alocadas dinámicamente, permite también descubrir
80 información sobre la red en que están conectados. BOOTP provee una
81 funcionalidad similar, con ciertas restricciones. Este servidor
82 también las atiende.
83
84 %description -l pl.UTF-8
85 Serwer DHCP (Dynamic Host Configuration Protocol).
86
87 DHCP to protokół pozwalający urządzeniom pracującym w sieci IP na
88 pobieranie ich konfiguracji IP (adresu, maski podsieci, adresu
89 rozgłoszeniowego itp.) z serwera DHCP. Ułatwia on administrowanie
90 dużymi sieciami IP.
91
92 %description -l pt_BR.UTF-8
93 DHCP permite que hosts numa rede TCP/IP requisitem e tenham seus
94 endereços IP alocados dinamicamente, permite também descobrir
95 informações sobre a rede em que estão conectados. BOOTP provê uma
96 funcionalidade similar, com certas restrições. Este servidor também
97 atende aquelas requisições. Esta versão é ainda considerada um
98 software BETA.
99
100 %package -n openldap-schema-dhcp
101 Summary:        LDAP Schema for DHCP Server
102 Summary(pl.UTF-8):      Schemat LDAP dla serwera DHCP
103 Group:          Networking/Daemons
104 Requires(post,postun):  sed >= 4.0
105 Requires:       openldap-servers
106 BuildArch:      noarch
107
108 %description -n openldap-schema-dhcp
109 This package contains LDAPv3 schema for use with the DHCP Server.
110
111 %description -n openldap-schema-dhcp -l pl.UTF-8
112 Ten pakiet zawiera schemat LDAPv3 do używania z serwerem DHCP.
113
114 %package client
115 Summary:        DHCP Client
116 Summary(pl.UTF-8):      Klient DHCP
117 Group:          Networking/Daemons
118 Requires:       coreutils
119 Requires:       iproute2
120 Requires:       net-tools
121 Suggests:       avahi-autoipd
122 Provides:       dhclient = %{epoch}:%{version}-%{release}
123 Obsoletes:      dhclient
124 Obsoletes:      dhcpv6-client
125 Obsoletes:      libdhcp4client
126 Obsoletes:      libdhcp4client-devel
127 Obsoletes:      libdhcp4client-static
128
129 %description client
130 Dynamic Host Configuration Protocol Client.
131
132 %description client -l pl.UTF-8
133 Klient DHCP (Dynamic Host Configuration Protocol).
134
135 %package client-dirs
136 Summary:        DHCP Client common dirs
137 Summary(pl.UTF-8):      Katalogi klienta DHCP
138 Group:          Networking/Daemons
139
140 %description client-dirs
141 Directories for scripts for dhcp-client.
142
143 %description client-dirs -l pl.UTF-8
144 Katalog przeznaczony na skrypty dla klienta dhcp.
145
146 %package relay
147 Summary:        DHCP Relay Agent
148 Summary(pl.UTF-8):      Agent przekazywania informacji DHCP
149 Group:          Networking/Daemons
150 Requires(post): coreutils
151 Requires(post,preun):   /sbin/chkconfig
152 Requires:       rc-scripts >= 0.2.0
153 Obsoletes:      dhcpv6-relay
154
155 %description relay
156 Dhcp relay is a relay agent for DHCP packets. It is used on a subnet
157 with DHCP clients to "relay" their requests to a subnet that has a
158 DHCP server on it. Because DHCP packets can be broadcast, they will
159 not be routed off of the local subnet. The DHCP relay takes care of
160 this for the client.
161
162 %description relay -l pl.UTF-8
163 Agent przekazywania DHCP (Dynamic Host Configuration Protocol) między
164 podsieciami. Ponieważ komunikaty DHCP mogą być przekazywane w formie
165 rozgłoszeniowej, bez tego agenta nie zostaną przerutowane do innej
166 podsieci.
167
168 %package devel
169 Summary:        DHCP development includes and libs
170 Summary(pl.UTF-8):      Pliki nagłówkowe i biblioteki dla oprogramowania DHCP
171 Group:          Development/Libraries
172
173 %description devel
174 Includes OMAPI and dhcptl libraries.
175
176 OMAPI is an programming layer designed for controlling remote
177 applications, and for querying them for their state. It is currently
178 used by the ISC DHCP server.
179
180 The dhcpctl set of functions provide an API that can be used to
181 communicate with and manipulate a running ISC DHCP server.
182
183 %description devel -l pl.UTF-8
184 Zawiera biblioteki OMAPI oraz dhcpctl.
185
186 OMAPI to warstwa programowa stworzona do kontroli zdalnych aplikacji i
187 odpytywania o ich stan. Aktualnie jest używana przez serwer ISC DHCP.
188
189 dhcpctl to zbiór funkcji tworzących API, które może być używane do
190 komunikacji z działającym serwerem ISC DHCP i jego kontroli.
191
192 %prep
193 %setup -q -n %{name}-%{ver}%{pverdir}
194 %patch0 -p1
195 # This patch is required for dhcdbd to function
196 # CHECK ME: adds -x (formerly -y):
197 #The -x argument enables extended option information to be created in the
198 #-s dhclient-script environment, which would allow applications running
199 #in that environment to handle options they do not know about in advance -
200 #this is a Red Hat extension to support dhcdbd and NetworkManager.
201 # however, fedora doesn't have this patch anymore, so can drop?
202 #%%patch1 -p1
203 %patch2 -p1
204 %patch3 -p1
205 %patch4 -p1
206 %patch5 -p1
207 %patch6 -p1
208 %patch7 -p1
209 %patch8 -p1
210 %patch9 -p1
211 %patch10 -p1
212
213 # Copy in documentation and example scripts for LDAP patch to dhcpd
214 cp -a %{SOURCE11} README.ldap
215 cp -a %{SOURCE12} doc
216 cp -a %{SOURCE13} contrib
217
218 # Replace @PRODUCTNAME@
219 %{__sed} -i -e 's|@PRODUCTNAME@|%{vvendor}|g' common/dhcp-options.5
220 %{__sed} -i -e 's|@PRODUCTNAME@|%{vvendor}|g' configure.ac
221
222 # Update paths in all man pages
223 for page in client/dhclient.conf.5 client/dhclient.leases.5 client/dhclient-script.8 client/dhclient.8; do
224         %{__sed} -i -e 's|CLIENTBINDIR|/sbin|g' \
225                         -e 's|RUNDIR|%{_localstatedir}/run|g' \
226                         -e 's|DBDIR|%{_localstatedir}/db/dhclient|g' \
227                         -e 's|ETCDIR|%{_sysconfdir}|g' $page
228 done
229
230 for page in server/dhcpd.conf.5 server/dhcpd.leases.5 server/dhcpd.8; do
231         %{__sed} -i -e 's|CLIENTBINDIR|/sbin|g' \
232                                 -e 's|RUNDIR|%{_localstatedir}/run|g' \
233                                 -e 's|DBDIR|%{_localstatedir}/db/dhcpd|g' \
234                                 -e 's|ETCDIR|%{_sysconfdir}|g' $page
235 done
236
237 %build
238 %{__libtoolize}
239 %{__aclocal}
240 %{__autoconf}
241 %{__autoheader}
242 %{__automake}
243 CFLAGS="%{rpmcflags} -fPIC -D_GNU_SOURCE=1"
244 %configure \
245 %ifarch %{arm}
246         LIBS="-latomic" \
247 %endif
248         %{!?with_static_libs:--disable-static} \
249         --enable-dhcpv6 \
250         --with-srv-lease-file=/var/lib/dhcpd/dhcpd.leases \
251         --with-cli-lease-file=/var/lib/dhclient/dhclient.leases \
252         --with-srv-pid-file=/var/run/dhcpd.pid \
253         --with-cli-pid-file=/var/run/dhclient.pid \
254         --with-relay-pid-file=/var/run/dhcrelay.pid \
255         --with%{!?with_ldap:out}-ldap
256 %{__make} -j1
257
258 %install
259 rm -rf $RPM_BUILD_ROOT
260 install -d $RPM_BUILD_ROOT{/etc/{rc.d/init.d,sysconfig,dhclient-enter-hooks.d,dhclient-exit-hooks.d},%{_pkgconfigdir},/var/lib/{dhcpd,dhclient}}
261
262 %{__make} install \
263         DESTDIR=$RPM_BUILD_ROOT
264
265 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dhcpd
266 install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/dhcpd6
267 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/dhcp-relay
268 install %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/dhcpd
269 install %{SOURCE5} $RPM_BUILD_ROOT/etc/sysconfig/dhcp-relay
270
271 install client/scripts/linux $RPM_BUILD_ROOT/sbin/dhclient-script
272
273 install server/dhcpd.conf.example $RPM_BUILD_ROOT%{_sysconfdir}/dhcpd.conf
274 install doc/examples/dhcpd-dhcpv6.conf $RPM_BUILD_ROOT%{_sysconfdir}/dhcpd6.conf
275
276 %if %{with ldap}
277 install -d $RPM_BUILD_ROOT%{schemadir}
278 install %{SOURCE10} $RPM_BUILD_ROOT%{schemadir}
279 %endif
280
281 :> $RPM_BUILD_ROOT%{_sysconfdir}/dhclient.conf
282
283 touch $RPM_BUILD_ROOT/var/lib/dhcpd/dhcpd.leases
284 touch $RPM_BUILD_ROOT/var/lib/dhclient/dhclient.leases
285
286 touch $RPM_BUILD_ROOT/var/lib/dhcpd/dhcpd6.leases
287 touch $RPM_BUILD_ROOT/var/lib/dhclient/dhclient6.leases
288
289 %if %{with static_libs}
290 # HACK: strip doesn't like .a inside .a
291 install -d stripworkdir
292 cd stripworkdir
293 for a in $RPM_BUILD_ROOT%{_libdir}/*.a; do
294         archives=$(ar t $a | grep '\.a$' || :)
295         [ "$archives" ] || continue
296
297         # hope we don't have to recurse here
298         for ar in $archives; do
299                 rm -f *.o *.a
300                 ar x $a $ar
301                 ar x $ar
302                 ar d $a $ar
303                 ar cr $a *.o
304         done
305 done
306 cd -
307 %endif
308
309 %clean
310 rm -rf $RPM_BUILD_ROOT
311
312 %post
313 touch /var/lib/dhcpd/dhcpd.leases
314 touch /var/lib/dhcpd/dhcpd6.leases
315 /sbin/chkconfig --add dhcpd
316 %service dhcpd restart "dhcpd daemon"
317 /sbin/chkconfig --add dhcpd6
318 %service dhcpd6 restart "dhcpd IPv6 daemon"
319
320 %preun
321 if [ "$1" = "0" ];then
322         %service dhcpd stop
323         /sbin/chkconfig --del dhcpd
324         %service dhcpd6 stop
325         /sbin/chkconfig --del dhcpd6
326 fi
327
328 %triggerpostun -- dhcp < 3.0
329 if ! grep -q ddns-update-style /etc/dhcpd.conf; then
330         %{__sed} -i -e '1iddns-update-style none;' /etc/dhcpd.conf
331 fi
332
333 %post -n openldap-schema-dhcp
334 %openldap_schema_register %{schemadir}/dhcp.schema -d core
335 %service -q ldap restart
336
337 %postun -n openldap-schema-dhcp
338 if [ "$1" = "0" ]; then
339         %openldap_schema_unregister %{schemadir}/dhcp.schema
340         %service -q ldap restart
341 fi
342
343 %post relay
344 /sbin/chkconfig --add dhcp-relay
345 if [ -f /var/lock/subsys/dhcrelay ]; then
346         mv -f /var/lock/subsys/{dhcrelay,dhcp-relay}
347 fi
348 %service dhcp-relay restart "dhcrelay daemon"
349
350 %preun relay
351 if [ "$1" = "0" ];then
352         %service dhcp-relay stop
353         /sbin/chkconfig --del dhcp-relay
354 fi
355
356 %triggerun client -- %{name}-client < 4:4.0.2-2
357 if [ -f /etc/dhclient-enter-hooks ] ; then
358         mv /etc/dhclient-enter-hooks /etc/dhclient-enter-hooks.d/
359 fi
360 if [ -f /etc/dhclient-exit-hooks ] ; then
361         mv /etc/dhclient-exit-hooks /etc/dhclient-exit-hooks.d/
362 fi
363
364 %files
365 %defattr(644,root,root,755)
366 %doc doc/* README RELNOTES server/dhcpd.conf.example LICENSE
367 %doc contrib/ms2isc %{?with_ldap:contrib/dhcpd-conf-to-ldap README.ldap}
368 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/dhcpd
369 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dhcpd.conf
370 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dhcpd6.conf
371 %attr(755,root,root) %{_bindir}/omshell
372 %attr(755,root,root) %{_sbindir}/dhcpd
373 %attr(754,root,root) /etc/rc.d/init.d/dhcpd
374 %attr(754,root,root) /etc/rc.d/init.d/dhcpd6
375 %attr(750,root,root) %dir /var/lib/dhcpd
376 %ghost /var/lib/dhcpd/dhcpd.leases
377 %ghost /var/lib/dhcpd/dhcpd6.leases
378 %{_mandir}/man1/omshell.1*
379 %{_mandir}/man5/dhcp-eval.5*
380 %{_mandir}/man5/dhcp-options.5*
381 %{_mandir}/man5/dhcpd.conf.5*
382 %{_mandir}/man5/dhcpd.leases.5*
383 %{_mandir}/man8/dhcpd.8*
384
385 %files client
386 %defattr(644,root,root,755)
387 %doc contrib/sethostname.sh client/dhclient.conf.example
388 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dhclient.conf
389 %attr(755,root,root) /sbin/dhclient
390 %attr(755,root,root) /sbin/dhclient-script
391 %{_mandir}/man5/dhclient.conf.5*
392 %{_mandir}/man5/dhclient.leases.5*
393 %{_mandir}/man8/dhclient.8*
394 %{_mandir}/man8/dhclient-script.8*
395 %dir %attr(750,root,root) /var/lib/dhclient
396 %ghost /var/lib/dhclient/dhclient.leases
397 %ghost /var/lib/dhclient/dhclient6.leases
398
399 %files client-dirs
400 %defattr(644,root,root,755)
401 %dir %{_sysconfdir}/dhclient-enter-hooks.d
402 %dir %{_sysconfdir}/dhclient-exit-hooks.d
403
404 %files relay
405 %defattr(644,root,root,755)
406 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/dhcp-relay
407 %attr(755,root,root) %{_sbindir}/dhcrelay
408 %attr(754,root,root) /etc/rc.d/init.d/dhcp-relay
409 %{_mandir}/man8/dhcrelay.8*
410
411 %files devel
412 %defattr(644,root,root,755)
413 %{_libdir}/libdhcp.a
414 %{_libdir}/libdhcpctl.a
415 %{_libdir}/libomapi.a
416 %{_includedir}/dhcpctl
417 %{_includedir}/omapip
418 %{_mandir}/man3/dhcpctl.3*
419 %{_mandir}/man3/omapi.3*
420
421 %if %{with ldap}
422 %files -n openldap-schema-dhcp
423 %defattr(644,root,root,755)
424 %{schemadir}/dhcp.schema
425 %endif
This page took 0.053704 seconds and 3 git commands to generate.