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