-# configure options
-
-# Define with/without/bcond_without macros (needed for RHEL4)
-%define with() %{expand:%%{?with_%{1}:1}%%{!?with_%{1}:0}}
-%define bcond_without() %{expand:%%{!?_without_%{1}:%%global with_%{1} 1}}
-%define bcond_with() %{expand:%%{?_with_%{1}:%%global with_%{1} 1}}
+# This .spec file is targeted for SuSE OBS. It relies on macro that
+# are not available on regular distributions. If you use directly
+# rpmbuild, be sure to use something like `--define 'rhel_version
+# 700'`.
# Conditional build options, disable with "--without xxx"
%bcond_without xml
%bcond_without dot1
%bcond_without dot3
%bcond_without custom
+%bcond_without snmp
-# On RHEL < 5, disable SNMP, Net-SNMP installation seems broken
-%if 0%{?rhel_version} > 0 && 0%{?rhel_version} < 500 || 0%{?centos_version} > 0 && 0%{?centos_version} < 500
-%bcond_with snmp
-%bcond_with json
+# On RHEL <= 6, compile with oldies
+# For SuSE, SLE11 with a recent SP comes with 3.0. SLE12 comes with 3.12.
+%if (0%{?rhel_version} > 0 && 0%{?rhel_version} < 700) || (0%{?centos_version} > 0 && 0%{?centos_version} < 700)
+%bcond_without oldies
%else
-%bcond_without snmp
-%bconf_without json
+%bcond_with oldies
+%endif
+
+# On RHEL < 7, disable systemd
+# On SuSE < 12, disable systemd
+%if (0%{?rhel_version} > 0 && 0%{?rhel_version} < 700) || (0%{?centos_version} > 0 && 0%{?centos_version} < 700) || (0%{?suse_version} > 0 && 0%{?suse_version} < 1210)
+%bcond_with systemd
+%else
+%bcond_without systemd
+%endif
+
+# On RHEL < 7, use embedded libevent
+%if (0%{?rhel_version} > 0) || (0%{?centos_version} > 0 && 0%{?centos_version} < 700) || (0%{?suse_version} > 0 && 0%{?suse_version} < 1200)
+%bcond_with system_libevent
+%else
+%bcond_without system_libevent
%endif
%define lldpd_user _lldpd
Summary: Implementation of IEEE 802.1ab (LLDP)
Name: lldpd
-Version: 0.7.15
+Version: 1.0.4
Release: 1%{?dist}
-License: MIT
+License: ISC
Group: System/Management
URL: http://vincentbernat.github.com/lldpd/
Source0: http://media.luffy.cx/files/lldpd/%{name}-%{version}.tar.gz
Source2: lldpd.sysconfig
BuildRequires: pkgconfig
+%if %{with system_libevent}
+BuildRequires: libevent-devel
+%endif
BuildRequires: readline-devel
+BuildRequires: libcap-devel
%if %{with snmp}
BuildRequires: net-snmp-devel
BuildRequires: openssl-devel
%if %{with xml}
BuildRequires: libxml2-devel
%endif
-%if %{with json}
-BuildRequires: json-c-devel
+%if %{with systemd}
+%if 0%{?suse_version}
+BuildRequires: systemd-rpm-macros
+%{?systemd_requires}
+%else
+Requires(post): systemd
+Requires(preun): systemd
+Requires(postun): systemd
+BuildRequires: systemd-units
+%endif
%endif
%if 0%{?suse_version}
PreReq: %fillup_prereq %insserv_prereq pwdutils
Requires(postun): initscripts
%endif
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
%description
This implementation provides LLDP sending and reception, supports VLAN
%package devel
Summary: Implementation of IEEE 802.1ab - Tools and header files for developers
Group: Development/Libraries/C
-BuildRequires: pkg-config
+BuildRequires: pkgconfig
Requires: lldpd = %{version}-%{release}
%description devel
--enable-custom \
%else
--disable-custom \
+%endif
+%if %{with oldies}
+ --enable-oldies \
+%else
+ --disable-oldies \
%endif
--with-privsep-user=%lldpd_user \
--with-privsep-group=%lldpd_group \
--with-privsep-chroot=%lldpd_chroot \
+%if %{without systemd}
--with-systemdsystemunitdir=no \
+%else
+ --with-systemdsystemunitdir=%{_unitdir} \
+%endif
--with-sysusersdir=no \
--prefix=%{_usr} \
--localstatedir=%{_localstatedir} \
--sysconfdir=%{_sysconfdir} \
--libdir=%{_libdir} \
- --docdir=%{_docdir}/lldpd
+ --docdir=%{_docdir}/lldpd \
+ --enable-pie
[ -f %{_includedir}/net-snmp/agent/struct.h ] || touch src/struct.h
make %{?_smp_mflags}
%install
make install DESTDIR=$RPM_BUILD_ROOT
+%if %{without systemd}
install -d $RPM_BUILD_ROOT/%{_initrddir}
install -m755 %{SOURCE1} $RPM_BUILD_ROOT/%{_initrddir}/lldpd
+%endif
%if 0%{?suse_version}
mkdir -p ${RPM_BUILD_ROOT}/var/adm/fillup-templates
install -m700 %{SOURCE2} ${RPM_BUILD_ROOT}/var/adm/fillup-templates/sysconfig.lldpd
if getent group %lldpd_group >/dev/null 2>&1 ; then : ; else \
%{_sbindir}/groupadd -r %lldpd_group > /dev/null 2>&1 || exit 1 ; fi
if getent passwd %lldpd_user >/dev/null 2>&1 ; then : ; else \
- %{_sbindir}/useradd -g %lldpd_group -M -r -s /bin/false \
+ %{_sbindir}/useradd -g %lldpd_group -M -r -s /sbin/nologin \
-c "LLDP daemon" -d %lldpd_chroot %lldpd_user 2> /dev/null \
|| exit 1 ; fi
+%if 0%{?suse_version} >= 1210 && %{with systemd}
+%service_add_pre lldpd.service
+%endif
%if 0%{?suse_version}
# Service management for SuSE
+%if 0%{?suse_version} >= 1210 && %{with systemd}
+%post
+%service_add_post lldpd.service
+%{fillup_only}
+%preun
+%service_del_preun lldpd.service
+%postun
+%service_del_postun lldpd.service
+%else
%post
/sbin/ldconfig
%{fillup_and_insserv lldpd}
%insserv_cleanup
%preun
%stop_on_removal lldpd
+%endif
%else
-# Service management for Redhat/Centos
+%if %{without systemd}
+# Service management for Redhat/CentOS without systemd
%post
/sbin/ldconfig
/sbin/chkconfig --del lldpd
fi
+%else
+# Service management for Redhat/CentOS with systemd
+
+%post
+/sbin/ldconfig
+%systemd_post lldpd.service
+
+%preun
+%systemd_preun lldpd.service
+
+%postun
+%systemd_postun_with_restart lldpd.service
+/sbin/ldconfig
+
+%endif
%endif
%clean
%defattr(-,root,root,-)
%dir %{_docdir}/lldpd
%doc %{_docdir}/lldpd/NEWS
+%doc %{_docdir}/lldpd/LICENSE
%doc %{_docdir}/lldpd/ChangeLog
%doc %{_docdir}/lldpd/README.md
%doc %{_docdir}/lldpd/CONTRIBUTE.md
%{_sbindir}/lldpd
%{_sbindir}/lldpctl
-%{_sbindir}/lldpcli
+%attr(4750,%lldpd_user,adm) %{_sbindir}/lldpcli
%{_libdir}/liblldpctl.so.*
%{_datadir}/zsh
-%{_sysconfdir}/bash_completion.d
+%{_datadir}/bash-completion
%doc %{_mandir}/man8/lldp*
%config %{_sysconfdir}/lldpd.d
+%if %{without systemd}
%config %attr(755,root,root) %{_initrddir}/lldpd
+%else
+%{_unitdir}/lldpd.service
+%endif
%if 0%{?suse_version}
%attr(644,root,root) %{_var}/adm/fillup-templates/sysconfig.lldpd
%else
%{_includedir}/lldp-const.h
%changelog
+* Sat Jun 15 2019 Vincent Bernat <bernat@luffy.cx> - 1.0.4-1
+- New upstream version.
+
+* Mon Dec 10 2018 Vincent Bernat <bernat@luffy.cx> - 1.0.3-1
+- New upstream version.
+
+* Sat Dec 01 2018 Vincent Bernat <bernat@luffy.cx> - 1.0.2-1
+- New upstream version.
+
+* Mon Apr 09 2018 Vincent Bernat <bernat@luffy.cx> - 1.0.1-1
+- New upstream version.
+
+* Sun Apr 08 2018 Vincent Bernat <bernat@luffy.cx> - 1.0.0-1
+- New upstream version.
+
+* Tue Nov 21 2017 Vincent Bernat <bernat@luffy.cx> - 0.9.9-1
+- New upstream version.
+
+* Sun Aug 20 2017 Vincent Bernat <bernat@luffy.cx> - 0.9.8-1
+- New upstream version.
+
+* Sun Mar 19 2017 Vincent Bernat <bernat@luffy.cx> - 0.9.7-1
+- New upstream version.
+
+* Sat Jan 21 2017 Vincent Bernat <bernat@luffy.cx> - 0.9.6-1
+- New upstream version.
+
+* Fri Sep 30 2016 Vincent Bernat <bernat@luffy.cx> - 0.9.5-1
+- New upstream version.
+
+* Fri Jun 17 2016 Vincent Bernat <bernat@luffy.cx> - 0.9.4-1
+- New upstream version.
+
+* Sat May 21 2016 Vincent Bernat <bernat@luffy.cx> - 0.9.3-1
+- New upstream version.
+
+* Sat Mar 19 2016 Vincent Bernat <bernat@luffy.cx> - 0.9.2-1
+- New upstream version.
+
+* Sat Feb 20 2016 Vincent Bernat <bernat@luffy.cx> - 0.9.1-1
+- New upstream version.
+
+* Fri Jan 01 2016 Vincent Bernat <bernat@luffy.cx> - 0.9.0-1
+- New upstream version.
+- Do not rely on libnl3.
+
+* Sun Dec 27 2015 Vincent Bernat <bernat@luffy.cx> - 0.8.0-1
+- New upstream version.
+- Use system libnl3 when possible.
+- Use system libevent when possible.
+
+* Wed Sep 09 2015 Vincent Bernat <bernat@luffy.cx> - 0.7.17-1
+- New upstream version.
+
+* Fri Aug 07 2015 Vincent Bernat <bernat@luffy.cx> - 0.7.16-1
+- New upstream version.
+
* Wed May 20 2015 Vincent Bernat <bernat@luffy.cx> - 0.7.15-1
- New upstream version.
* Sat Apr 04 2015 Vincent Bernat <bernat@luffy.cx> - 0.7.14-1
- New upstream version.
-* Wed Dec 30 2014 Vincent Bernat <bernat@luffy.cx> - 0.7.13-1
+* Tue Dec 30 2014 Vincent Bernat <bernat@luffy.cx> - 0.7.13-1
- New upstream version.
-* Wed Nov 22 2014 Vincent Bernat <bernat@luffy.cx> - 0.7.12-1
+* Sat Nov 22 2014 Vincent Bernat <bernat@luffy.cx> - 0.7.12-1
- New upstream version.
- Completion for bash and zsh.