X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=dhcp.spec;h=6bea925359a17e09be3fc816fb353b49c3268e3d;hb=a5aaaa8f2a216f3ecee313322ebfcba4e604dd1c;hp=62ee5d80150f80bacf1251c948d2799754bbf432;hpb=03a6f6c6b028ee7ee2bd08d3ee5abb6765878dca;p=packages%2Fdhcp.git diff --git a/dhcp.spec b/dhcp.spec index 62ee5d8..6bea925 100644 --- a/dhcp.spec +++ b/dhcp.spec @@ -1,20 +1,24 @@ # # Conditional build: %bcond_without ldap # without support for ldap storage +%bcond_without static_libs # don't build static library + +# vendor string +%define vvendor PLD/Linux # Summary: DHCP Server Summary(es.UTF-8): Servidor DHCP Summary(pl.UTF-8): Serwer DHCP Summary(pt_BR.UTF-8): Servidor DHCP (Protocolo de configuração dinâmica de hosts) Name: dhcp -Version: 4.0.0 -# don't put int release until all patches are updated/ported(!) -Release: 0.1 +# 4.1.0a1 is on DEVEL +Version: 4.0.2 +Release: 3 Epoch: 4 License: MIT Group: Networking/Daemons Source0: ftp://ftp.isc.org/isc/dhcp/%{name}-%{version}.tar.gz -# Source0-md5: 31d79b27ce4a94089a0b9ce7f72307fa +# Source0-md5: f8d35ade3727429b1ab74c26058bd6b1 Source1: %{name}.init Source2: %{name}6.init Source3: %{name}-relay.init @@ -25,24 +29,36 @@ Source7: %{name}-dhcp4client.h Source8: %{name}-libdhcp4client.make Source9: %{name}-libdhcp_control.h Source10: %{name}.schema -Patch0: %{name}-dhclient.script.patch -Patch1: %{name}-release-by-ifup.patch -# from fedora 9-dev -Patch2: %{name}-ldap.patch -Patch3: %{name}-client-script-redhat.patch -Patch4: %{name}-3.0.3-x-option.patch - -Patch6: %{name}-arg-concat.patch -Patch7: %{name}-split-VARDB.patch -Patch8: %{name}-timeouts.patch -Patch9: %{name}-options.patch -Patch10: %{name}-libdhcp4client.patch -Patch11: %{name}-prototypes.patch +Source11: %{name}-README.ldap +Source12: draft-ietf-dhc-ldap-schema-01.txt +Source13: dhcpd-conf-to-ldap +Source14: dhcp-dhclient-script +Patch0: %{name}-release-by-ifup.patch +# http://github.com/dcantrell/ldap-for-dhcp/raw/9cfd4c277d7615777f372ea08f44cc7de9ed7959/dhcp-4.0.1-ldap.patch +Patch1: %{name}-ldap.patch +Patch2: %{name}-3.0.3-x-option.patch +Patch3: %{name}-paths.patch +Patch5: %{name}-timeouts.patch +Patch6: %{name}-options.patch +Patch7: %{name}-libdhcp4client.patch +Patch8: %{name}-prototypes.patch +Patch9: %{name}-errwarn-message.patch +Patch10: %{name}-memory.patch +Patch11: %{name}-dhclient-decline-backoff.patch +Patch12: %{name}-unicast-bootp.patch +Patch13: %{name}-fast-timeout.patch +Patch14: %{name}-failover-ports.patch +Patch15: %{name}-dhclient-usage.patch +Patch16: %{name}-default-requested-options.patch +Patch17: %{name}-xen-checksum.patch +Patch18: %{name}-dhclient-anycast.patch +Patch19: %{name}-manpages.patch +Patch20: %{name}-NetworkManager-crash.patch URL: http://www.isc.org/sw/dhcp/ BuildRequires: autoconf BuildRequires: automake -BuildRequires: libtool BuildRequires: groff +BuildRequires: libtool %{?with_ldap:BuildRequires: openldap-devel} %{?with_ldap:BuildRequires: openssl-devel} BuildRequires: rpmbuild(macros) >= 1.304 @@ -105,6 +121,7 @@ Group: Networking/Daemons Requires: coreutils Requires: iproute2 Requires: net-tools +Suggests: avahi-autoipd Obsoletes: dhclient %description client @@ -172,15 +189,16 @@ Ten pakiet zawiera klienta protokołu DHCP. %package -n libdhcp4client-devel Summary: Header files for development with the DHCP client library Summary(pl.UTF-8): Pliki nagłówkowe do programowania z użyciem biblioteki klienckiej DHCP -Group: Development/Libraries License: GPL v2+ +Group: Development/Libraries Requires: libdhcp4client = %{epoch}:%{version}-%{release} %description -n libdhcp4client-devel Header files for development with the DHCP client library. %description -n libdhcp4client-devel -l pl.UTF-8 -Pliki nagłówkowe do programowania z użyciem biblioteki klienckiej DHCP. +Pliki nagłówkowe do programowania z użyciem biblioteki klienckiej +DHCP. %package -n libdhcp4client-static Summary: Static DHCP client library @@ -196,45 +214,89 @@ Statyczna biblioteka kliencka DHCP. %prep %setup -q -# CHECK ME -#%patch0 -p1 +%patch0 -p1 %patch1 -p1 -%{?with_ldap:%patch2 -p1} -# These two patches are required for dhcdbd to function +# This patch is required for dhcdbd to function +# CHECK ME: adds -x (formerly -y): +#The -x argument enables extended option information to be created in the +#-s dhclient-script environment, which would allow applications running +#in that environment to handle options they do not know about in advance - +#this is a Red Hat extension to support dhcdbd and NetworkManager. +# however, fedora doesn't have this patch anymore, so can drop? +#%%patch2 -p1 %patch3 -p1 -# CHECK ME, NO IDEA -#%patch4 -p1 +%patch5 -p1 %patch6 -p1 -# CHECK ME, NO IDEA -#%patch7 -p1 +%patch7 -p1 %patch8 -p1 -# CHECK ME %patch9 -p1 %patch10 -p1 %patch11 -p1 - -sed 's/@DHCP_VERSION@/'%{version}'/' < %{SOURCE5} > libdhcp4client.pc -mkdir -p libdhcp4client +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 + +# Copy in documentation and example scripts for LDAP patch to dhcpd +cp -a %{SOURCE11} README.ldap +cp -a %{SOURCE12} doc +cp -a %{SOURCE13} contrib + +# Copy in the libdhcp4client headers and Makefile.dist +install -d libdhcp4client cp %{SOURCE7} libdhcp4client/dhcp4client.h cp %{SOURCE8} libdhcp4client/Makefile.dist + +# Copy in libdhcp_control.h to the isc-dhcp includes directory cp %{SOURCE9} includes/isc-dhcp/libdhcp_control.h +# Replace @PRODUCTNAME@ +%{__sed} -i -e 's|@PRODUCTNAME@|%{vvendor}|g' common/dhcp-options.5 +%{__sed} -i -e 's|@PRODUCTNAME@|%{vvendor}|g' configure.ac + +# Update paths in all man pages +for page in client/dhclient.conf.5 client/dhclient.leases.5 client/dhclient-script.8 client/dhclient.8; do + %{__sed} -i -e 's|CLIENTBINDIR|/sbin|g' \ + -e 's|RUNDIR|%{_localstatedir}/run|g' \ + -e 's|DBDIR|%{_localstatedir}/db/dhclient|g' \ + -e 's|ETCDIR|%{_sysconfdir}|g' $page +done + +for page in server/dhcpd.conf.5 server/dhcpd.leases.5 server/dhcpd.8; do + %{__sed} -i -e 's|CLIENTBINDIR|/sbin|g' \ + -e 's|RUNDIR|%{_localstatedir}/run|g' \ + -e 's|DBDIR|%{_localstatedir}/db/dhcpd|g' \ + -e 's|ETCDIR|%{_sysconfdir}|g' $page +done + +sed 's/@DHCP_VERSION@/'%{version}'/' < %{SOURCE6} > libdhcp4client.pc + %build %{__libtoolize} %{__aclocal} %{__autoconf} %{__autoheader} %{__automake} -CFLAGS="%{rpmcflags} -fPIC" +CFLAGS="%{rpmcflags} -fPIC -D_GNU_SOURCE=1" %configure \ + %{!?with_static_libs:--disable-static} \ --enable-dhcpv6 \ - --with-srv-lease-file="/var/lib/%{name}/dhcpd.leases" \ - --with-cli-lease-file="/var/lib/dhclient/dhclient.leases" + --with-srv-lease-file=/var/lib/dhcpd/dhcpd.leases \ + --with-cli-lease-file=/var/lib/dhclient/dhclient.leases \ + --with-srv-pid-file=/var/run/dhcpd.pid \ + --with-cli-pid-file=/var/run/dhclient.pid \ + --with-relay-pid-file=/var/run/dhcrelay.pid \ + --with%{!?with_ldap:out}-ldap %{__make} %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT{/etc/{rc.d/init.d,sysconfig},%{schemadir},%{_pkgconfigdir},/var/lib/{%{name},dhclient}} +install -d $RPM_BUILD_ROOT{/etc/{rc.d/init.d,sysconfig,dhclient-enter-hooks.d,dhclient-exit-hooks.d},%{_pkgconfigdir},/var/lib/{dhcpd,dhclient}} %{__make} install \ DESTDIR=$RPM_BUILD_ROOT @@ -244,44 +306,80 @@ install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/dhcpd6 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/dhcp-relay install %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/dhcpd install %{SOURCE5} $RPM_BUILD_ROOT/etc/sysconfig/dhcp-relay +install %{SOURCE14} $RPM_BUILD_ROOT/sbin/dhclient-script install server/dhcpd.conf $RPM_BUILD_ROOT%{_sysconfdir} +:> $RPM_BUILD_ROOT%{_sysconfdir}/dhcpd6.conf + %if %{with ldap} +install -d $RPM_BUILD_ROOT%{schemadir} install %{SOURCE10} $RPM_BUILD_ROOT%{schemadir} %endif -touch $RPM_BUILD_ROOT%{_sysconfdir}/dhclient.conf +# Install headers for libdhcp4client-devel +install -d $RPM_BUILD_ROOT%{_includedir}/dhcp4client +install libdhcp4client/dhcp4client.h $RPM_BUILD_ROOT%{_includedir}/dhcp4client/dhcp4client.h +install -d $RPM_BUILD_ROOT%{_includedir}/dhcp4client/minires +for hdr in cdefs.h ctrace.h dhcp.h dhcp6.h dhcpd.h dhctoken.h failover.h \ + heap.h inet.h minires/minires.h minires/res_update.h \ + minires/resolv.h osdep.h site.h statement.h tree.h; do + install -p -m 0644 includes/${hdr} $RPM_BUILD_ROOT%{_includedir}/dhcp4client/${hdr} +done + +:> $RPM_BUILD_ROOT%{_sysconfdir}/dhclient.conf -touch $RPM_BUILD_ROOT/var/lib/%{name}/dhcpd.leases +touch $RPM_BUILD_ROOT/var/lib/dhcpd/dhcpd.leases touch $RPM_BUILD_ROOT/var/lib/dhclient/dhclient.leases +touch $RPM_BUILD_ROOT/var/lib/dhcpd/dhcpd6.leases +touch $RPM_BUILD_ROOT/var/lib/dhclient/dhclient6.leases + +# Install pkg-config file install libdhcp4client.pc $RPM_BUILD_ROOT%{_libdir}/pkgconfig/libdhcp4client.pc +cp -a includes/isc-dhcp/libdhcp_control.h $RPM_BUILD_ROOT%{_includedir}/isc-dhcp + +%if %{with static_libs} +# HACK: strip doesn't like .a inside .a +install -d stripworkdir +cd stripworkdir +for a in $RPM_BUILD_ROOT%{_libdir}/*.a; do + archives=$(ar t $a | grep '\.a$' || :) + [ "$archives" ] || continue + + # hope we don't have to recurse here + for ar in $archives; do + rm -f *.o *.a + ar x $a $ar + ar x $ar + ar d $a $ar + ar cr $a *.o + done +done +cd - +%endif %clean rm -rf $RPM_BUILD_ROOT %post +touch /var/lib/dhcpd/dhcpd.leases +touch /var/lib/dhcpd/dhcpd6.leases /sbin/chkconfig --add dhcpd -/sbin/chkconfig --add dhcpd6 -touch /var/lib/%{name}/dhcpd.leases %service dhcpd restart "dhcpd daemon" +/sbin/chkconfig --add dhcpd6 %service dhcpd6 restart "dhcpd IPv6 daemon" %preun if [ "$1" = "0" ];then %service dhcpd stop - %service dhcpd6 stop /sbin/chkconfig --del dhcpd + %service dhcpd6 stop /sbin/chkconfig --del dhcpd6 fi %triggerpostun -- dhcp < 3.0 -if [ "`grep ddns-update-style /etc/dhcpd.conf`" = "" ]; then - umask 027 - echo "ddns-update-style none;" > /etc/dhcpd.conf.tmp - echo "" >> /etc/dhcpd.conf.tmp - cat /etc/dhcpd.conf >>/etc/dhcpd.conf.tmp - mv -f /etc/dhcpd.conf.tmp /etc/dhcpd.conf +if ! grep -q ddns-update-style /etc/dhcpd.conf; then + %{__sed} -i -e '1iddns-update-style none;' /etc/dhcpd.conf fi %post -n openldap-schema-dhcp @@ -294,11 +392,6 @@ if [ "$1" = "0" ]; then %service -q ldap restart fi -%post client -if [ -f /var/lib/dhcp/dhclient.leases.rpmsave ]; then - mv /var/lib/dhcp/dhclient.leases.rpmsave /var/lib/dhclient/dhclient.leases -fi - %post relay /sbin/chkconfig --add dhcp-relay if [ -f /var/lock/subsys/dhcrelay ]; then @@ -312,20 +405,31 @@ if [ "$1" = "0" ];then /sbin/chkconfig --del dhcp-relay fi +%triggerun client -- %{name}-client < 4:4.0.2-2 +if [ -f /etc/dhclient-enter-hooks ] ; then + mv /etc/dhclient-enter-hooks /etc/dhclient-enter-hooks.d/ +fi +if [ -f /etc/dhclient-exit-hooks ] ; then + mv /etc/dhclient-exit-hooks /etc/dhclient-exit-hooks.d/ +fi + %post -n libdhcp4client -p /sbin/ldconfig %postun -n libdhcp4client -p /sbin/ldconfig %files %defattr(644,root,root,755) -%doc doc/* README RELNOTES server/dhcpd.conf LICENSE contrib/ms2isc +%doc doc/* README RELNOTES server/dhcpd.conf LICENSE +%doc contrib/ms2isc %{?with_ldap:contrib/dhcpd-conf-to-ldap README.ldap} %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/dhcpd %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dhcpd.conf +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dhcpd6.conf %attr(755,root,root) %{_bindir}/omshell %attr(755,root,root) %{_sbindir}/dhcpd %attr(754,root,root) /etc/rc.d/init.d/dhcpd %attr(754,root,root) /etc/rc.d/init.d/dhcpd6 -%attr(750,root,root) %dir /var/lib/%{name} -%ghost /var/lib/%{name}/dhcpd.leases +%attr(750,root,root) %dir /var/lib/dhcpd +%ghost /var/lib/dhcpd/dhcpd.leases +%ghost /var/lib/dhcpd/dhcpd6.leases %{_mandir}/man1/omshell.1* %{_mandir}/man5/dhcp-eval.5* %{_mandir}/man5/dhcp-options.5* @@ -333,24 +437,21 @@ fi %{_mandir}/man5/dhcpd.leases.5* %{_mandir}/man8/dhcpd.8* -%if %{with ldap} -%files -n openldap-schema-dhcp -%defattr(644,root,root,755) -%{schemadir}/dhcp.schema -%endif - %files client %defattr(644,root,root,755) -%doc contrib/sethostname.sh +%doc contrib/sethostname.sh client/dhclient.conf %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dhclient.conf +%{_sysconfdir}/dhclient-enter-hooks.d +%{_sysconfdir}/dhclient-exit-hooks.d %attr(755,root,root) /sbin/dhclient -#%attr(755,root,root) /sbin/dhclient-script +%attr(755,root,root) /sbin/dhclient-script %{_mandir}/man5/dhclient.conf.5* %{_mandir}/man5/dhclient.leases.5* %{_mandir}/man8/dhclient.8* %{_mandir}/man8/dhclient-script.8* -%attr(750,root,root) %dir /var/lib/dhclient +%dir %attr(750,root,root) /var/lib/dhclient %ghost /var/lib/dhclient/dhclient.leases +%ghost /var/lib/dhclient/dhclient6.leases %files relay %defattr(644,root,root,755) @@ -377,9 +478,18 @@ fi %files -n libdhcp4client-devel %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libdhcp4client.so +%{_includedir}/dhcp4client %{_pkgconfigdir}/libdhcp4client.pc %{_libdir}/libdhcp4client.la +%if %{with static_libs} %files -n libdhcp4client-static %defattr(644,root,root,755) %{_libdir}/libdhcp4client.a +%endif + +%if %{with ldap} +%files -n openldap-schema-dhcp +%defattr(644,root,root,755) +%{schemadir}/dhcp.schema +%endif