X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=dhcp.spec;h=b10edb078a99aab11b6483745136046ff482b4ae;hb=6571768517bd1c3e6c37768e1401e084de7325b8;hp=8b1f6443c128fdbef2e043723582794b2bbf5164;hpb=79e4cc69ca866abe45f5c3d3b8c4088cd820cba3;p=packages%2Fdhcp.git diff --git a/dhcp.spec b/dhcp.spec index 8b1f644..b10edb0 100644 --- a/dhcp.spec +++ b/dhcp.spec @@ -1,41 +1,74 @@ # # Conditional build: -%bcond_with ldap # with support for ldap storage -# +%bcond_without ldap # without support for ldap storage +%bcond_without static_libs # don't build static library + +%define ver 4.2.5 +%if 1 +%define pverdot .P1 +%define pverdir -P1 +%else +%define pverdot %{nil} +%define pverdir %{nil} +%endif + +# 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: 3.1.0a3 -Release: 0.1 +Version: %{ver}%{pverdot} +Release: 3 Epoch: 4 -License: distributable +License: MIT Group: Networking/Daemons -Source0: ftp://ftp.isc.org/isc/dhcp/%{name}-%{version}.tar.gz -# Source0-md5: d09be1a80982b78482e8fbd416924468 +Source0: ftp://ftp.isc.org/isc/dhcp/%{ver}%{pverdir}/%{name}-%{ver}%{pverdir}.tar.gz +# Source0-md5: f68e3c1f00a9af5742bc5e71d567cf93 Source1: %{name}.init -Source2: %{name}-relay.init -Source3: %{name}-relay.sysconfig -Source4: %{name}d.conf.sample -Source5: %{name}.sysconfig -Patch0: %{name}-if_buffer_size.patch -Patch1: %{name}-ldap.patch -Patch2: %{name}-ldap1.patch -Patch3: %{name}-client-script-redhat.patch -Patch4: %{name}-3.0.3-x-option.patch -Patch5: %{name}-typo.patch -Patch6: %{name}-arg-concat.patch +Source2: %{name}6.init +Source3: %{name}-relay.init +Source4: %{name}.sysconfig +Source5: %{name}-relay.sysconfig +Source10: %{name}.schema +Source11: %{name}-README.ldap +Source12: draft-ietf-dhc-ldap-schema-01.txt +Source13: %{name}d-conf-to-ldap +Source14: %{name}-dhclient-script +Patch0: %{name}-release-by-ifup.patch +Patch2: %{name}-3.0.3-x-option.patch +Patch3: %{name}-paths.patch +Patch5: %{name}-timeouts.patch +Patch6: %{name}-options.patch +Patch9: %{name}-errwarn-message.patch +Patch10: %{name}-memory.patch +Patch11: %{name}-dhclient-decline-backoff.patch +Patch12: %{name}-unicast-bootp.patch +Patch16: %{name}-default-requested-options.patch +Patch17: %{name}-xen-checksum.patch +Patch19: %{name}-manpages.patch +Patch20: %{name}-NetworkManager-crash.patch +# http://www.csupomona.edu/~bldewolf/dhcp-uid/ +Patch21: %{name}-ignore-client-uids.patch URL: http://www.isc.org/sw/dhcp/ +BuildRequires: autoconf +BuildRequires: automake BuildRequires: groff +BuildRequires: libtool %{?with_ldap:BuildRequires: openldap-devel} -BuildRequires: rpmbuild(macros) >= 1.268 -Requires(post): fileutils +%{?with_ldap:BuildRequires: openssl-devel} +BuildRequires: rpmbuild(macros) >= 1.304 +Requires(post): coreutils Requires(post,preun): /sbin/chkconfig Requires: rc-scripts >= 0.2.0 Provides: dhcpd +Obsoletes: dhcpv6-server BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) +%define _sbindir /sbin +%define schemadir /usr/share/openldap/schema + %description DHCP (Dynamic Host Configuration Protocol) is a protocol which allows individual devices on an IP network to get their own network @@ -66,13 +99,36 @@ funcionalidade similar, com certas restrições. Este servidor também atende aquelas requisições. Esta versão é ainda considerada um software BETA. +%package -n openldap-schema-dhcp +Summary: LDAP Schema for DHCP Server +Summary(pl.UTF-8): Schemat LDAP dla serwera DHCP +Group: Networking/Daemons +Requires(post,postun): sed >= 4.0 +Requires: openldap-servers +%if "%{_rpmversion}" >= "5" +BuildArch: noarch +%endif + +%description -n openldap-schema-dhcp +This package contains LDAPv3 schema for use with the DHCP Server. + +%description -n openldap-schema-dhcp -l pl.UTF-8 +Ten pakiet zawiera schemat LDAPv3 do używania z serwerem DHCP. + %package client Summary: DHCP Client Summary(pl.UTF-8): Klient DHCP Group: Networking/Daemons -Requires(post): fileutils +Requires: coreutils +Requires: iproute2 +Requires: net-tools +Suggests: avahi-autoipd +Provides: dhclient = %{epoch}:%{version}-%{release} Obsoletes: dhclient -Obsoletes: pump +Obsoletes: dhcpv6-client +Obsoletes: libdhcp4client +Obsoletes: libdhcp4client-devel +Obsoletes: libdhcp4client-static %description client Dynamic Host Configuration Protocol Client. @@ -80,13 +136,25 @@ Dynamic Host Configuration Protocol Client. %description client -l pl.UTF-8 Klient DHCP (Dynamic Host Configuration Protocol). +%package client-dirs +Summary: DHCP Client common dirs +Summary(pl.UTF-8): Katalogi klienta DHCP +Group: Networking/Daemons + +%description client-dirs +Directories for scripts for dhcp-client. + +%description client-dirs -l pl.UTF-8 +Katalog przeznaczony na skrypty dla klienta dhcp. + %package relay Summary: DHCP Relay Agent Summary(pl.UTF-8): Agent przekazywania informacji DHCP Group: Networking/Daemons -Requires(post): fileutils +Requires(post): coreutils Requires(post,preun): /sbin/chkconfig Requires: rc-scripts >= 0.2.0 +Obsoletes: dhcpv6-relay %description relay Dhcp relay is a relay agent for DHCP packets. It is used on a subnet @@ -126,84 +194,153 @@ dhcpctl to zbiór funkcji tworzących API, które może być używane do komunikacji z działającym serwerem ISC DHCP i jego kontroli. %prep -%setup -q -install %{SOURCE4} . +%setup -q -n %{name}-%{ver}%{pverdir} %patch0 -p1 -%{?with_ldap:%patch1 -p1} -%{?with_ldap:%patch2 -p1} -%patch3 -p1 # This patch is required for dhcdbd to function -%patch4 -p1 +# 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 %patch5 -p1 %patch6 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch16 -p1 +%patch17 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -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 + +# 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 %build -# NOTE: this is not autoconf configure - do not change it to %%configure -./configure - -%{__make} \ - CC="%{__cc}" \ - CC_OPTIONS="%{rpmcflags} \ - -D_PATH_DHCPD_DB=\\\"/var/lib/%{name}/dhcpd.leases\\\" \ - -DEXTENDED_NEW_OPTION_INFO \ - -D_PATH_DHCLIENT_DB=\\\"/var/lib/%{name}/dhclient.leases\\\" \ - " - LFLAGS="%{rpmldflags}" \ - DEBUG="" \ - VARDB="/var/lib/%{name}" +%{__libtoolize} +%{__aclocal} +%{__autoconf} +%{__autoheader} +%{__automake} +CFLAGS="%{rpmcflags} -fPIC -D_GNU_SOURCE=1" +%configure \ + %{!?with_static_libs:--disable-static} \ + --enable-dhcpv6 \ + --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{/sbin,%{_sbindir},%{_bindir},%{_mandir}/man{5,8}} \ - $RPM_BUILD_ROOT{/var/lib/%{name},%{_sysconfdir}/{rc.d/init.d,sysconfig}} +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 \ - CLIENTBINDIR=/sbin \ - BINDIR=%{_sbindir} \ - LIBDIR=%{_libdir} \ - INCDIR=%{_includedir} \ - ADMMANDIR=%{_mandir}/man8 \ - ADMMANEXT=.8 \ - FFMANDIR=%{_mandir}/man5 \ - LIBMANDIR=%{_mandir}/man3 \ - LIBMANEXT=.3 \ - USRMANDIR=%{_mandir}/man1 \ - USRMANEXT=.1 \ - VARDB=/var/lib/%{name} \ - FFMANEXT=.5 + DESTDIR=$RPM_BUILD_ROOT install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dhcpd -install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/dhcp-relay -install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/dhcp-relay -install %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/dhcpd.conf -install %{SOURCE5} $RPM_BUILD_ROOT/etc/sysconfig/dhcpd - -mv $RPM_BUILD_ROOT%{_mandir}/man3/omshell.3 \ - $RPM_BUILD_ROOT%{_mandir}/man1/omshell.1 - -install client/scripts/linux $RPM_BUILD_ROOT%{_sbindir}/dhclient-script - -touch $RPM_BUILD_ROOT/var/lib/%{name}/{dhcpd,dhclient}.leases +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.example $RPM_BUILD_ROOT%{_sysconfdir}/dhcpd.conf +install doc/examples/dhcpd-dhcpv6.conf $RPM_BUILD_ROOT%{_sysconfdir}/dhcpd6.conf + +%if %{with ldap} +install -d $RPM_BUILD_ROOT%{schemadir} +install %{SOURCE10} $RPM_BUILD_ROOT%{schemadir} +%endif + +:> $RPM_BUILD_ROOT%{_sysconfdir}/dhclient.conf + +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 + +%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 -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 /sbin/chkconfig --del dhcpd + %service dhcpd6 stop + /sbin/chkconfig --del dhcpd6 fi -%post client -# TODO: fix this -if [ ! -d /var/lib/dhcp ]; then - install -d /var/lib/dhcp +%triggerpostun -- dhcp < 3.0 +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 +%openldap_schema_register %{schemadir}/dhcp.schema -d core +%service -q ldap restart + +%postun -n openldap-schema-dhcp +if [ "$1" = "0" ]; then + %openldap_schema_unregister %{schemadir}/dhcp.schema + %service -q ldap restart fi %post relay @@ -219,46 +356,74 @@ if [ "$1" = "0" ];then /sbin/chkconfig --del dhcp-relay 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 +%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 %files %defattr(644,root,root,755) -%doc doc/* README RELNOTES dhcpd.conf.sample LICENSE -%{?with_ldap:%doc contrib/*} -%{_mandir}/man1/* -%{_mandir}/man5/dhcp* -%{_mandir}/man8/dhcp* +%doc doc/* README RELNOTES server/dhcpd.conf.example 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 -%attr(755,root,root) %{_bindir}/* +%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(750,root,root) %dir /var/lib/%{name} -%ghost /var/lib/%{name}/dhcpd.leases +%attr(754,root,root) /etc/rc.d/init.d/dhcpd6 +%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* +%{_mandir}/man5/dhcpd.conf.5* +%{_mandir}/man5/dhcpd.leases.5* +%{_mandir}/man8/dhcpd.8* %files client %defattr(644,root,root,755) +%doc contrib/sethostname.sh client/dhclient.conf.example +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dhclient.conf %attr(755,root,root) /sbin/dhclient %attr(755,root,root) /sbin/dhclient-script -%{_mandir}/man[58]/dhclient* -%ghost /var/lib/%{name}/dhclient.leases +%{_mandir}/man5/dhclient.conf.5* +%{_mandir}/man5/dhclient.leases.5* +%{_mandir}/man8/dhclient.8* +%{_mandir}/man8/dhclient-script.8* +%dir %attr(750,root,root) /var/lib/dhclient +%ghost /var/lib/dhclient/dhclient.leases +%ghost /var/lib/dhclient/dhclient6.leases + +%files client-dirs +%defattr(644,root,root,755) +%dir %{_sysconfdir}/dhclient-enter-hooks.d +%dir %{_sysconfdir}/dhclient-exit-hooks.d %files relay %defattr(644,root,root,755) -%{_mandir}/man8/dhcrelay* %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/dhcp-relay %attr(755,root,root) %{_sbindir}/dhcrelay %attr(754,root,root) /etc/rc.d/init.d/dhcp-relay +%{_mandir}/man8/dhcrelay.8* %files devel %defattr(644,root,root,755) -%{_mandir}/man3/* -%{_libdir}/*.a -%{_includedir}/* +%{_libdir}/libdhcpctl.a +%{_libdir}/libdst.a +%{_libdir}/libomapi.a +%{_includedir}/dhcpctl +%{_includedir}/isc-dhcp +%{_includedir}/omapip +%{_mandir}/man3/dhcpctl.3* +%{_mandir}/man3/omapi.3* + +%if %{with ldap} +%files -n openldap-schema-dhcp +%defattr(644,root,root,755) +%{schemadir}/dhcp.schema +%endif