Thomas Anders wrote:
Jan Safranek wrote:
- we want one big package + separate -perl and -devel, as it is now, + proper Conflicts: and Provides:, tailored to as many distributions as we can.

That means somebody (I volunteer for RHEL and Fedora) will check current .spec in SVN, add proper Provides:, Conflicts, BuidReqs (with ifdefs where needed) and ensure it works on a distro.

What's the current status here? I'd really like to have this available with 
5.4.2.

It took a little while, result is attached. Please comment - I had to introduce dist/find-requires script to reliably filter out some perl dependencies and I also added quite dirty Red Hat Enterprise Linux (RHEL) detector to properly set Requires/Obsoletes.

The result works reliably on RHEL5 (with net-snmp-5.3.x branch), Fedora8,9 and Rawhide (with net-snmp-5.4.x branch). RHEL4 uses old net-snmp-5.1.2 and newer net-snmp releases have different soname, i.e. they can't work as direct replacement of "native" RHEL4 net-snmp.

Jan
Index: dist/net-snmp.spec
===================================================================
--- dist/net-snmp.spec	(revision 17007)
+++ dist/net-snmp.spec	(working copy)
@@ -3,6 +3,23 @@
 #
 %define netsnmp_embedded_perl 1
 %define netsnmp_perl_modules 1
+
+# ugly RHEL detector
+# SuSE build service defines rhel_version, RHEL itself defines nothing
+%if 0%{?rhel_version}
+%define rhel %{?rhel_version}
+%else
+%define is_rhel %(grep "Red Hat Enterprise Linux" /etc/redhat-release &>/dev/null && echo 1 || echo 0)
+%if %{is_rhel}
+%define rhel %(sed </etc/redhat-release -e 's/.*release \\(.\\).*/\\1/'  )
+%endif
+%endif
+
+# because perl(Tk) is optional, automatic dependencies will never succeed:
+%define _use_internal_dependency_generator 0
+%define __find_requires %{_builddir}/net-snmp-%{version}/dist/find-requires
+%define __find_provides /usr/lib/rpm/find-provides
+
 #
 # Check for -without embedded_perl
 #
@@ -31,16 +48,27 @@
 Obsoletes: cmu-snmp ucd-snmp ucd-snmp-utils
 BuildRoot: /tmp/%{name}-root
 Packager: The Net-SNMP Coders <http://sourceforge.net/projects/net-snmp/>
-BuildRequires: perl, beecrypt-devel elfutils-libelf-devel
-# because perl(Tk) is optional, automatic dependencies will never succeed:
-AutoReqProv: no
-Requires: openssl, popt, rpm, zlib, bzip2-libs, beecrypt, elfutils-libelf, glibc
-Provides: net-snmp-utils
+Requires: openssl, popt, rpm, zlib, bzip2-libs, elfutils-libelf, glibc
+BuildRequires: perl, elfutils-libelf-devel, openssl-devel, bzip2-devel, rpm-devel
 %if %{netsnmp_embedded_perl}
-BuildRequires: perl-ExtUtils-Embed
+BuildRequires: perl(ExtUtils::Embed)
 Requires: perl
 %endif
 
+%if 0%{?fedora}%{?rhel}
+# Fedora & RHEL specific requires/provides
+Provides: net-snmp-libs, net-snmp-utils
+Obsoletes: net-snmp-libs, net-snmp-utils
+Epoch: 2
+
+%if 0%{?fedora} >= 9
+Provides: net-snmp-gui
+Obsoletes: net-snmp-gui
+%else
+BuildRequires: beecrypt-devel
+%endif
+%endif # RHEL or Fedora
+
 %description
 
 Net-SNMP provides tools and libraries relating to the Simple Network
@@ -58,7 +86,7 @@
 Group: Development/Libraries
 Summary: The includes and static libraries from the Net-SNMP package.
 AutoReqProv: no
-Requires: net-snmp = %{version}
+Requires: net-snmp = %{epoch}:%{version}
 Obsoletes: cmu-snmp-devel ucd-snmp-devel
 
 %description devel
@@ -70,8 +98,13 @@
 Group: System Environment/Libraries
 Summary: The Perl modules provided with Net-SNMP
 AutoReqProv: no
-Requires: net-snmp = %{version}, perl
+Requires: net-snmp = %{epoch}:%{version}, perl
 
+%if 0%{?fedora}%{?rhel}
+Provides: net-snmp-perl
+Obsoletes: net-snmp-perl
+%endif
+
 %description perlmods
 Net-SNMP provides a number of Perl modules useful when using the SNMP
 protocol.  Both client and agent support modules are provided.
@@ -89,7 +122,7 @@
 	--with-mib-modules="smux" \
 	--with-sysconfdir="/etc/net-snmp"               \
 	--enable-shared \
-	%{?netsnmp_perl_modules: --with-perl-modules} \
+	%{?netsnmp_perl_modules: --with-perl-modules="INSTALLDIRS=vendor"} \
 	%{!?netsnmp_perl_modules: --without-perl-modules} \
 	%{?netsnmp_embedded_perl: --enable-embedded-perl} \
 	%{!?netsnmp_embedded_perl: --disable-embedded-perl} \
Index: dist/find-requires
===================================================================
--- dist/find-requires	(revision 0)
+++ dist/find-requires	(revision 0)
@@ -0,0 +1,5 @@
+#!/bin/sh
+# This is rpmbuild helper script used to filter out perl(Tk) and 
+# perl(Term::ReadKey) dependencies.
+
+/usr/lib/rpm/find-requires | grep -v "perl(Tk)\|perl(Term::ReadKey)

Property changes on: dist/find-requires
___________________________________________________________________
Name: svn:executable
   + *

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Net-snmp-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to