Hello community,

here is the log from the commit of package net-snmp for openSUSE:Factory 
checked in at 2018-02-02 22:21:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/net-snmp (Old)
 and      /work/SRC/openSUSE:Factory/.net-snmp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "net-snmp"

Fri Feb  2 22:21:04 2018 rev:84 rq:571968 version:5.7.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/net-snmp/net-snmp.changes        2017-12-21 
11:23:45.491889719 +0100
+++ /work/SRC/openSUSE:Factory/.net-snmp.new/net-snmp.changes   2018-02-02 
22:21:06.785150408 +0100
@@ -1,0 +2,37 @@
+Thu Feb  1 23:15:44 UTC 2018 - jeng...@inai.de
+
+- Fix RPM group for shlib subpackage.
+
+-------------------------------------------------------------------
+Wed Jan 24 14:07:16 UTC 2018 - tchva...@suse.com
+
+- Properly conditionalize the py2 build
+
+-------------------------------------------------------------------
+Wed Jan 24 13:09:36 UTC 2018 - tchva...@suse.com
+
+- Add patch from Fedora to support natively systemd:
+  * net-snmp-5.7.2-systemd.patch
+- Drop the check phase as whole 90% of the tests fail it makes
+  more sense to run them somewhere localy
+
+-------------------------------------------------------------------
+Mon Jan 22 12:24:33 UTC 2018 - tchva...@suse.com
+
+- Take systemd service files from fedora to replace sysV scripts
+- Also convert the sysconfig files to match fedora ones, they
+  get bit more terse but it works seamlessly with systemd
+
+-------------------------------------------------------------------
+Fri Jan 19 17:36:38 UTC 2018 - tchva...@suse.com
+
+- Format with spec-cleaner
+- Drop sle11 support as it fails to build anyway for ages
+- Rename python packages to be python-%{name} with obsoletes
+  * Use new singlespec macros
+  * Add patch converting the py files to python3/2 compat mode
+    net-snmp-python3.patch
+- Run full autoreconf instead of partial
+- Build with threads by building few targets first
+
+-------------------------------------------------------------------

Old:
----
  net-snmp.sysconfig
  rc.snmpd
  rc.snmptrapd

New:
----
  net-snmp-5.7.2-systemd.patch
  net-snmp-python3.patch
  net-snmp-tmpfs.conf
  snmpd.service
  snmpd.sysconfig
  snmptrapd.service
  snmptrapd.sysconfig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ net-snmp.spec ++++++
--- /var/tmp/diff_new_pack.AEDqol/_old  2018-02-02 22:21:08.373076275 +0100
+++ /var/tmp/diff_new_pack.AEDqol/_new  2018-02-02 22:21:08.377076088 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package net-snmp
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,58 +16,38 @@
 #
 
 
-#Compat macro for new _fillupdir macro introduced in Nov 2017
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define netsnmp_logfile %{_localstatedir}/log/net-snmpd.log
+%define netsnmp_agentx_socket_dir_fhs %{_rundir}/agentx
+%define netsnmp_agentx_socket_dir_rfc %{_localstatedir}/agentx
+# Compat macro for new _fillupdir macro introduced in Nov 2017
 %if ! %{defined _fillupdir}
-  %define _fillupdir /var/adm/fillup-templates
+  %define _fillupdir %{_localstatedir}/adm/fillup-templates
 %endif
-
-# compatibility for SLES11 <=SP1
-%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from 
distutils.sysconfig import get_python_lib; print(get_python_lib())")}
-%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from 
distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
-
-%define pkg_name net-snmp
 %ifnarch s390 s390x
 %define netsnmp_with_sensors 1
 %endif
-%define netsnmp_check 1
-%define netsnmp_logfile /var/log/net-snmpd.log
-%if ! %{defined _rundir}
-%define _rundir %{_localstatedir}/run
-%endif
-%define netsnmp_agentx_socket_dir_fhs %{_rundir}/agentx
-%define netsnmp_agentx_socket_dir_rfc /var/agentx
-
+%define libname libsnmp30
+%bcond_without python2
 Name:           net-snmp
 Version:        5.7.3
 Release:        0
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-BuildRequires:  autoconf
-BuildRequires:  automake
-BuildRequires:  openssl-devel
-BuildRequires:  procps
-BuildRequires:  python-devel
-BuildRequires:  python-setuptools
-BuildRequires:  rpm-devel
-BuildRequires:  tcpd-devel
-%if 0%{?netsnmp_with_sensors}
-BuildRequires:  libsensors4-devel
-%endif
-Requires:       logrotate
-Requires:       perl-SNMP = %{version}
-Requires:       perl-TermReadKey
-PreReq:         %insserv_prereq %fillup_prereq /sbin/chkconfig
+Summary:        SNMP Daemon
+License:        BSD-3-Clause AND MIT
+Group:          Productivity/Networking/Other
 Url:            http://sourceforge.net/projects/net-snmp
-#Source:         
http://sourceforge.net/projects/net-snmp/files/net-snmp/%{version}/%{pkg_name}-%{version}.tar.gz
-Source:         %{pkg_name}-%{version}.tar.gz
-Source1:        rc.snmpd
+Source:         
http://sourceforge.net/projects/net-snmp/files/net-snmp/%{version}/%{name}-%{version}.tar.gz
+Source1:        snmpd.service
 Source2:        snmpd.conf
 Source3:        README.SUSE
-Source4:        rc.snmptrapd
+Source4:        snmptrapd.service
 Source5:        net-snmp.logrotate
 Source6:        test_installed
-Source7:        net-snmp.sysconfig
-Source8:        net-snmp-rpmlintrc
-Source9:        baselibs.conf
+Source10:       snmpd.sysconfig
+Source11:       snmptrapd.sysconfig
+Source20:       net-snmp-tmpfs.conf
+Source98:       net-snmp-rpmlintrc
+Source99:       baselibs.conf
 Patch1:         net-snmp-5.7.3-socket-path.patch
 Patch2:         net-snmp-5.7.3-testing-empty-arptable.patch
 Patch3:         net-snmp-5.7.3-pie.patch
@@ -82,10 +62,27 @@
 Patch12:        net-snmp-5.7.3-Fix-Makefile.PL.patch
 Patch13:        net-snmp-5.7.3-build-with-openssl-1.1.patch
 Patch14:        net-snmp-5.7.3-modern-rpm-api.patch
-#
-Summary:        SNMP Daemon
-License:        BSD-3-Clause and MIT
-Group:          Productivity/Networking/Other
+Patch15:        net-snmp-python3.patch
+Patch16:        net-snmp-5.7.2-systemd.patch
+BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module setuptools}
+BuildRequires:  autoconf
+BuildRequires:  automake
+BuildRequires:  libtool
+BuildRequires:  openssl-devel
+BuildRequires:  procps
+BuildRequires:  python-rpm-macros
+BuildRequires:  rpm-devel
+BuildRequires:  systemd-rpm-macros
+BuildRequires:  tcpd-devel
+Requires:       logrotate
+Requires:       perl-SNMP = %{version}
+Requires:       perl-TermReadKey
+Requires(post):         %fillup_prereq
+%if 0%{?netsnmp_with_sensors}
+BuildRequires:  libsensors4-devel
+%endif
+%{?systemd_requires}
 
 %description
 Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c
@@ -103,18 +100,14 @@
 renamed from cmu-snmp to ucd-snmp in 1995 and later renamed from ucd-snmp
 to net-snmp in November 2000.
 
-
-%define library_name libsnmp30
-
-%package     -n libsnmp30
+%package     -n %{libname}
+Summary:        Shared Libraries from net-snmp
+License:        BSD-3-Clause AND MIT
+Group:          System/Libraries
 Requires:       perl-base = %{perl_version}
 Requires:       snmp-mibs = %{version}
-#
-Summary:        Shared Libraries from net-snmp
-License:        BSD-3-Clause and MIT
-Group:          Productivity/Networking/Other
 
-%description -n libsnmp30
+%description -n %{libname}
 Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c
 and SNMP v3 using both IPv4 and IPv6. The suite includes:
 
@@ -129,7 +122,10 @@
 This package holds the shared libraries from the net-snmp package.
 
 %package devel
-Requires:       %{library_name} = %{version}
+Summary:        Development files from net-snmp
+License:        BSD-3-Clause AND MIT
+Group:          Development/Libraries/C and C++
+Requires:       %{libname} = %{version}
 # for mib2c
 Requires:       perl
 Requires:       perl-SNMP = %{version}
@@ -140,10 +136,6 @@
 %if 0%{?netsnmp_with_sensors}
 Requires:       libsensors4-devel
 %endif
-#
-Summary:        Development files from net-snmp
-License:        BSD-3-Clause and MIT
-Group:          Development/Libraries/C and C++
 
 %description devel
 Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c
@@ -160,11 +152,9 @@
 This package holds the development headers, libraries and API documentation
 from the net-snmp package.
 
-
 %package     -n snmp-mibs
-#
 Summary:        MIB files from net-snmp
-License:        BSD-3-Clause and MIT
+License:        BSD-3-Clause AND MIT
 Group:          Productivity/Networking/Other
 
 %description -n snmp-mibs
@@ -181,46 +171,44 @@
 
 This package holds the MIB files from the net-snmp package.
 
-
 %package     -n perl-SNMP
-Requires:       %{pkg_name} = %{version}
-Requires:       perl-base = %{perl_version}
-#
 Summary:        Perl5 SNMP Extension Module
 License:        GPL-2.0+
 Group:          Development/Libraries/Perl
+Requires:       %{name} = %{version}
+Requires:       perl-base = %{perl_version}
 
 %description -n perl-SNMP
 The Perl5 'SNMP' Extension Module v3.1.0 for the UCD SNMPv3 library.
 
-
-%package python
+%package -n python2-%{name}
 Summary:        The Python 'netsnmp' module for the Net-SNMP
-License:        BSD-3-Clause and MIT
+License:        BSD-3-Clause AND MIT
 Group:          Development/Libraries/Python
+Requires:       %{libname} = %{version}
+Provides:       %{name}-python = %{version}
+Obsoletes:      %{name}-python < %{version}
+Provides:       python-%{name} = %{version}
 
-%description python
+%description -n python2-%{name}
 The 'netsnmp' module provides a full featured, tri-lingual SNMP (SNMPv3,
 SNMPv2c, SNMPv1) client API. The 'netsnmp' module internals rely on the
 Net-SNMP toolkit library.
 
+%package -n python3-%{name}
+Summary:        The Python 3 'netsnmp' module for the Net-SNMP
+License:        BSD-3-Clause AND MIT
+Group:          Development/Libraries/Python
+Requires:       %{libname} = %{version}
+
+%description -n python3-%{name}
+The 'netsnmp' module provides a full featured, tri-lingual SNMP (SNMPv3,
+SNMPv2c, SNMPv1) client API. The 'netsnmp' module internals rely on the
+Net-SNMP toolkit library.
 
 %prep
-%setup -q -n %{pkg_name}-%{version}
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
-%patch9 -p1
-%patch10 -p1
-%patch11 -p1
-%patch12 -p1
-%patch13 -p1
-%patch14 -p1
+%setup -q
+%autopatch -p1
 
 %build
 MIBS="misc/ipfwacc ucd-snmp/diskio etherlike-mib rmon-mib velocity smux \
@@ -232,14 +220,16 @@
 MIBS="$MIBS ucd-snmp/lmsensorsMib"
 %endif
 
-autoreconf
+autoreconf -fvi
 %configure \
        --with-sys-contact="root@localhost" \
        --with-sys-location="unknown" \
        --with-mib-modules="$MIBS" \
-       --with-cflags="%{optflags} -fstack-protector-all" \
-       --with-persistent-directory="/var/lib/net-snmp" \
+       --with-cflags="%{optflags}" \
+        --with-ldflags="-Wl,-z,relro -Wl,-z,now" \
+       --with-persistent-directory="%{_localstatedir}/lib/net-snmp" \
        --with-agentx-socket="%{netsnmp_agentx_socket_dir_fhs}/master" \
+        --with-temp-file-pattern=/var/run/net-snmp/snmp-tmp-XXXXXX \
        --with-logfile="%{netsnmp_logfile}" \
        --with-libwrap="%{_prefix}" \
        --with-perl-modules="INSTALLDIRS=vendor" \
@@ -252,84 +242,78 @@
        --enable-ipv6 \
        --enable-ucd-snmp-compatibility \
        --with-security-modules=tsm \
-       --with-transports=TLSTCP,DTLSUDP
+       --with-transports=TLSTCP,DTLSUDP \
+        --with-systemd
 
-# Parallel building is disabled because dependencies between the Perl
-# module and libnetsnmp are not correctly defined.
-make #%{?_smp_mflags}
+# Parallel build deps not properly stated
+make -j1
 
 pushd python
-%{__python} setup.py --basedir="../" build
+%python_exec setup.py build --basedir="../"
 popd
 
-%check
-%if 0%{?netsnmp_check}
-%ifnarch %arm
-ulimit -c unlimited
-%{__make} test ||:
-%{__make} test TESTOPTS='-P tcp' ||:
-%endif
-%{__make} perlmodules ||:
-LD_RUN_PATH="$PWD/snmplib/.libs" 
LD_LIBRARY_PATH="${PWD}/snmplib/.libs:${PWD}/agent/.libs:${PWD}/agent/helpers/.libs"
 %{__make} perltest ||:
-%endif
-
 %install
-%makeinstall INSTALL_PREFIX=%{buildroot}
-%{__install} -Dd %{buildroot}/var/log %{buildroot}/var/lib/net-snmp 
%{buildroot}/usr/lib/net-snmp/agents 
%{buildroot}%{netsnmp_agentx_socket_dir_fhs}
-%{__install} -D -m 0755 %{SOURCE1} %{buildroot}/etc/init.d/snmpd
-%{__install} -D -m 0755 %{SOURCE4} %{buildroot}/etc/init.d/snmptrapd
-%{__install} -D -m 0600 %{SOURCE2} %{buildroot}/etc/snmp/snmpd.conf
-%{__install} -m 0644 %{SOURCE3} .
-%{__install} -m 0644 %{SOURCE4} .
-%{__install} -D -m 0644 %{SOURCE5} %{buildroot}/etc/logrotate.d/net-snmp
-%{__install} -m 0744 %{SOURCE6} testing/
-%{__ln_s} -f /etc/init.d/snmpd %{buildroot}%{_sbindir}/rcsnmpd
-%{__ln_s} -f /etc/init.d/snmptrapd %{buildroot}%{_sbindir}/rcsnmptrapd
-%{__install} -m 0644 /dev/null  %{buildroot}%{netsnmp_logfile}
+%make_install INSTALL_PREFIX=%{buildroot}
+install -Dd %{buildroot}%{_localstatedir}/log 
%{buildroot}%{_localstatedir}/lib/net-snmp 
%{buildroot}%{_libexecdir}/net-snmp/agents 
%{buildroot}%{netsnmp_agentx_socket_dir_fhs}
+install -D -m 0755 %{SOURCE1} %{buildroot}%{_unitdir}/snmpd.service
+install -D -m 0755 %{SOURCE4} %{buildroot}%{_unitdir}/snmptrapd.service
+install -D -m 0600 %{SOURCE2} %{buildroot}%{_sysconfdir}/snmp/snmpd.conf
+install -m 0644 %{SOURCE3} .
+install -m 0644 %{SOURCE4} .
+install -D -m 0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/net-snmp
+install -m 0744 %{SOURCE6} testing/
+ln -sf service %{buildroot}%{_sbindir}/rcsnmpd
+ln -sf service %{buildroot}%{_sbindir}/rcsnmptrapd
+install -m 0644 /dev/null  %{buildroot}%{netsnmp_logfile}
 pushd perl
     %perl_make_install
     %perl_process_packlist
-    %{__rm} -f %{buildroot}/%{perl_vendorarch}/Bundle/Makefile.subs.pl
+    rm -f %{buildroot}/%{perl_vendorarch}/Bundle/Makefile.subs.pl
 popd
 pushd python
-%{__python} setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%python_install
 popd
-%{__grep} -a -v "^#define PACKAGE" 
%{buildroot}%{_includedir}/net-snmp/net-snmp-config.h > \
+grep -a -v "^#define PACKAGE" 
%{buildroot}%{_includedir}/net-snmp/net-snmp-config.h > \
     %{buildroot}%{_includedir}/net-snmp/net-snmp-config.h.new
-%{__mv}  %{buildroot}%{_includedir}/net-snmp/net-snmp-config.h{.new,}
-%{__install} -D -m 0644 %{S:7} \
-    %{buildroot}%{_fillupdir}/sysconfig.%{pkg_name}
+mv  %{buildroot}%{_includedir}/net-snmp/net-snmp-config.h{.new,}
+install -D -m 0644 %{SOURCE10} %{buildroot}%{_fillupdir}/sysconfig.snmpd
+install -D -m 0644 %{SOURCE11} %{buildroot}%{_fillupdir}/sysconfig.snmptrapd
+# tmpfiles
+install -m 755 -d $RPM_BUILD_ROOT/%{_tmpfilesdir}
+install -m 644 %SOURCE20 $RPM_BUILD_ROOT/%{_tmpfilesdir}/net-snmp.conf
 #
-%{__ln_s} -f %{netsnmp_agentx_socket_dir_fhs} 
%{buildroot}%{netsnmp_agentx_socket_dir_rfc}
+ln -s -f %{netsnmp_agentx_socket_dir_fhs} 
%{buildroot}%{netsnmp_agentx_socket_dir_rfc}
 #
-rm -f "%buildroot/%_libdir"/*.la
+find %{buildroot} -type f -name "*.la" -delete -print
 
-%preun
-%stop_on_removal snmpd
-%stop_on_removal snmptrapd
+%pre
+%service_add_pre snmpd.service snmptrapd.service
 
 %post
 /sbin/chkconfig -c snmpd 2> /dev/null && FIRST_ARG=2
-%{fillup_only}
+%fillup_only snmpd
+%fillup_only snmptrapd
+%tmpfiles_create %{_tmpfilesdir}/net-snmp.conf
+%service_add_post snmpd.service snmptrapd.service
 
-%postun
-%restart_on_update snmpd
-%restart_on_update snmptrapd
-%{insserv_cleanup}
+%preun
+%service_del_preun snmpd.service snmptrapd.service
 
-%post   -n %{library_name} -p /sbin/ldconfig
+%postun
+%service_del_postun snmpd.service snmptrapd.service
 
-%postun -n %{library_name} -p /sbin/ldconfig
+%post   -n %{libname} -p /sbin/ldconfig
+%postun -n %{libname} -p /sbin/ldconfig
 
 %files
-%defattr(-,root,root)
 %doc AGENT.txt COPYING EXAMPLE.conf EXAMPLE.conf.def
 %doc FAQ NEWS TODO CHANGES
 %doc README README.agent-mibs README.agentx README.krb5 README.snmpv3 
README.thread
-%dir /etc/snmp
-%config(noreplace) /etc/snmp/snmpd.conf
-%config /etc/init.d/snmpd
-%config /etc/init.d/snmptrapd
+%dir %{_sysconfdir}/snmp
+%config(noreplace) %{_sysconfdir}/snmp/snmpd.conf
+%{_unitdir}/snmpd.service
+%{_unitdir}/snmptrapd.service
+%{_tmpfilesdir}/net-snmp.conf
 %{_bindir}/encode_keychange
 %{_bindir}/fixproc
 %{_bindir}/ipf-mod.pl
@@ -359,32 +343,31 @@
 %{_bindir}/net-snmp-cert
 %{_bindir}/agentxtrap
 %{_bindir}/snmp-bridge-mib
-%dir %{_prefix}/lib/net-snmp
-%dir %{_prefix}/lib/net-snmp/agents
+%dir %{_libexecdir}/net-snmp
+%dir %{_libexecdir}/net-snmp/agents
 %{_mandir}/man[158]/*
 %{_sbindir}/*
-/var/lib/net-snmp
+%{_localstatedir}/lib/net-snmp
 %dir %ghost %attr(700,root,root) %{netsnmp_agentx_socket_dir_fhs}
 %ghost %{netsnmp_logfile}
-%config(noreplace) /etc/logrotate.d/net-snmp
-%{_fillupdir}/sysconfig.%{pkg_name}
+%config(noreplace) %{_sysconfdir}/logrotate.d/net-snmp
+%{_fillupdir}/sysconfig.snmpd
+%{_fillupdir}/sysconfig.snmptrapd
 %{netsnmp_agentx_socket_dir_rfc}
 %{_datadir}/snmp/snmpconf-data/
 %{_datadir}/snmp/snmp_perl.pl
 %{_datadir}/snmp/snmp_perl_trapd.pl
 
 %files -n snmp-mibs
-%defattr(-,root,root)
 %dir %{_datadir}/snmp
 %{_datadir}/snmp/mibs/
 
-%files -n %{library_name}
-%defattr(-,root,root)
+%files -n %{libname}
+%license COPYING
 %{_libdir}/libsnmp*.so.*
 %{_libdir}/libnetsnmp*.so.*
 
 %files devel
-%defattr(-,root,root)
 %doc ChangeLog PORTING
 %{_mandir}/man3/*
 %{_includedir}/ucd-snmp
@@ -396,20 +379,21 @@
 %{_datadir}/snmp/mib2c*
 
 %files -n perl-SNMP
-%defattr(-,root,root)
 %{perl_vendorarch}/auto/SNMP
 %{perl_vendorarch}/auto/NetSNMP
 %{perl_vendorarch}/auto/Bundle
 %{perl_vendorarch}/SNMP.pm
 %{perl_vendorarch}/NetSNMP
 %{_bindir}/tkmib
-%if 0%{?suse_version} <= 1130
-/var/adm/perl-modules/net-snmp
+
+%if %{with python2}
+%files -n python2-%{name}
+%doc README
+%{python2_sitearch}/*
 %endif
 
-%files python
-%defattr(-,root,root)
+%files -n python3-%{name}
 %doc README
-%{python_sitearch}/*
+%{python3_sitearch}/*
 
 %changelog

++++++ net-snmp-5.7.2-systemd.patch ++++++
++++ 1650 lines (skipped)

++++++ net-snmp-python3.patch ++++++
Index: net-snmp-5.7.3/python/setup.py
===================================================================
--- net-snmp-5.7.3.orig/python/setup.py
+++ net-snmp-5.7.3/python/setup.py
@@ -9,9 +9,9 @@ intree=0
 
 args = sys.argv[:]
 for arg in args:
-    if string.find(arg,'--basedir=') == 0:
-        basedir = string.split(arg,'=')[1]
-       sys.argv.remove(arg)
+    if arg.find('--basedir=') == 0:
+        basedir = arg.split('=')[1]
+        sys.argv.remove(arg)
         intree=1
 
 if intree:
Index: net-snmp-5.7.3/python/netsnmp/client.py
===================================================================
--- net-snmp-5.7.3.orig/python/netsnmp/client.py
+++ net-snmp-5.7.3/python/netsnmp/client.py
@@ -1,3 +1,4 @@
+from __future__ import print_function
 import client_intf
 import string
 import re
@@ -35,12 +36,12 @@ def _parse_session_args(kargs):
         'TheirHostname':'',
         'TrustCert':''
         }
-    keys = kargs.keys()
+    keys = list(kargs.keys())
     for key in keys:
-        if sessArgs.has_key(key):
+        if key in sessArgs:
             sessArgs[key] = kargs[key]
         else:
-            print >>stderr, "ERROR: unknown key", key
+            print("ERROR: unknown key", key, file=stderr)
     return sessArgs
 
 def STR(obj):
@@ -127,7 +128,7 @@ class Session(object):
     
         sess_args = _parse_session_args(args)
 
-        for k,v in sess_args.items():
+        for k,v in list(sess_args.items()):
             self.__dict__[k] = v
 
             
Index: net-snmp-5.7.3/python/netsnmp/tests/test.py
===================================================================
--- net-snmp-5.7.3.orig/python/netsnmp/tests/test.py
+++ net-snmp-5.7.3/python/netsnmp/tests/test.py
@@ -8,7 +8,7 @@ import time
 
 class BasicTests(unittest.TestCase):
     def testFuncs(self):        
-        print ""
+        print("")
         var = netsnmp.Varbind('sysDescr.0')
         var = netsnmp.Varbind('sysDescr','0')
         var = netsnmp.Varbind(
@@ -19,67 +19,67 @@ class BasicTests(unittest.TestCase):
 
         var = netsnmp.Varbind('.1.3.6.1.2.1.1.1','0')
 
-        print "---v1 GET tests -------------------------------------\n"
+        print("---v1 GET tests -------------------------------------\n")
         res = netsnmp.snmpget(var,
                               Version = 1,
                               DestHost='localhost',
                               Community='public')
 
-        print "v1 snmpget result: ", res, "\n"
+        print("v1 snmpget result: ", res, "\n")
 
-        print "v1 get var: ",  var.tag, var.iid, "=", var.val, '(',var.type,')'
+        print("v1 get var: ",  var.tag, var.iid, "=", var.val, 
'(',var.type,')')
         
-        print "---v1 GETNEXT tests-------------------------------------\n"
+        print("---v1 GETNEXT tests-------------------------------------\n")
         res = netsnmp.snmpgetnext(var,
                                   Version = 1,
                                   DestHost='localhost',
                                   Community='public')
 
-        print "v1 snmpgetnext result: ", res, "\n"
+        print("v1 snmpgetnext result: ", res, "\n")
                 
-        print "v1 getnext var: ",  var.tag, var.iid, "=", var.val, 
'(',var.type,')'
+        print("v1 getnext var: ",  var.tag, var.iid, "=", var.val, 
'(',var.type,')')
         
-        print "---v1 SET tests-------------------------------------\n"
+        print("---v1 SET tests-------------------------------------\n")
         var = netsnmp.Varbind('sysLocation','0', 'my new location')
         res = netsnmp.snmpset(var,
                         Version = 1,
                         DestHost='localhost',
                         Community='public')
 
-        print "v1 snmpset result: ", res, "\n"
+        print("v1 snmpset result: ", res, "\n")
 
-        print "v1 set var: ",  var.tag, var.iid, "=", var.val, '(',var.type,')'
+        print("v1 set var: ",  var.tag, var.iid, "=", var.val, 
'(',var.type,')')
         
-        print "---v1 walk tests-------------------------------------\n"
+        print("---v1 walk tests-------------------------------------\n")
         vars = netsnmp.VarList(netsnmp.Varbind('system'))
 
-        print "v1 varlist walk in: "
+        print("v1 varlist walk in: ")
         for var in vars:
-            print "  ",var.tag, var.iid, "=", var.val, '(',var.type,')'
+            print("  ",var.tag, var.iid, "=", var.val, '(',var.type,')')
 
         res = netsnmp.snmpwalk(vars,
                                Version = 1,
                                DestHost='localhost',
                                Community='public')
-        print "v1 snmpwalk result: ", res, "\n"
+        print("v1 snmpwalk result: ", res, "\n")
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
        
         
-        print "---v1 walk 2-------------------------------------\n"
+        print("---v1 walk 2-------------------------------------\n")
 
-        print "v1 varbind walk in: "
+        print("v1 varbind walk in: ")
         var = netsnmp.Varbind('system')
         res = netsnmp.snmpwalk(var,
                                Version = 1,
                                DestHost='localhost',
                                Community='public')
-        print "v1 snmpwalk result (should be = orig): ", res, "\n"
+        print("v1 snmpwalk result (should be = orig): ", res, "\n")
 
-        print var.tag, var.iid, "=", var.val, '(',var.type,')'
+        print(var.tag, var.iid, "=", var.val, '(',var.type,')')
         
-        print "---v1 multi-varbind test-------------------------------------\n"
+        print("---v1 multi-varbind 
test-------------------------------------\n")
         sess = netsnmp.Session(Version=1,
                                DestHost='localhost',
                                Community='public')
@@ -88,16 +88,16 @@ class BasicTests(unittest.TestCase):
                                netsnmp.Varbind('sysContact', 0),
                                netsnmp.Varbind('sysLocation', 0))
         vals = sess.get(vars)
-        print "v1 sess.get result: ", vals, "\n"
+        print("v1 sess.get result: ", vals, "\n")
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
        
         vals = sess.getnext(vars)
-        print "v1 sess.getnext result: ", vals, "\n"
+        print("v1 sess.getnext result: ", vals, "\n")
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
        
         vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'),
                                netsnmp.Varbind('sysORLastChange'),
@@ -106,28 +106,28 @@ class BasicTests(unittest.TestCase):
                                netsnmp.Varbind('sysORUpTime'))
 
         vals = sess.getbulk(2, 8, vars)
-        print "v1 sess.getbulk result: ", vals, "\n"
+        print("v1 sess.getbulk result: ", vals, "\n")
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
 
-        print "---v1 set2-------------------------------------\n"
+        print("---v1 set2-------------------------------------\n")
 
         vars = netsnmp.VarList(
             netsnmp.Varbind('sysLocation', '0', 'my newer location'))
         res = sess.set(vars)
-        print "v1 sess.set result: ", res, "\n"
+        print("v1 sess.set result: ", res, "\n")
 
-        print "---v1 walk3-------------------------------------\n"
+        print("---v1 walk3-------------------------------------\n")
         vars = netsnmp.VarList(netsnmp.Varbind('system'))
                 
         vals = sess.walk(vars)
-        print "v1 sess.walk result: ", vals, "\n"
+        print("v1 sess.walk result: ", vals, "\n")
         
         for var in vars:
-            print "  ",var.tag, var.iid, "=", var.val, '(',var.type,')'
+            print("  ",var.tag, var.iid, "=", var.val, '(',var.type,')')
             
-        print "---v2c get-------------------------------------\n"
+        print("---v2c get-------------------------------------\n")
 
         sess = netsnmp.Session(Version=2,
                                DestHost='localhost',
@@ -140,22 +140,22 @@ class BasicTests(unittest.TestCase):
                                netsnmp.Varbind('sysContact', 0),
                                netsnmp.Varbind('sysLocation', 0))
         vals = sess.get(vars)
-        print "v2 sess.get result: ", vals, "\n"
+        print("v2 sess.get result: ", vals, "\n")
 
-        print "---v2c getnext-------------------------------------\n"
+        print("---v2c getnext-------------------------------------\n")
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
-        print "\n"
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
+        print("\n")
        
         vals = sess.getnext(vars)
-        print "v2 sess.getnext result: ", vals, "\n"
+        print("v2 sess.getnext result: ", vals, "\n")
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
-        print "\n"
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
+        print("\n")
        
-        print "---v2c getbulk-------------------------------------\n"
+        print("---v2c getbulk-------------------------------------\n")
 
         vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'),
                                netsnmp.Varbind('sysORLastChange'),
@@ -164,30 +164,30 @@ class BasicTests(unittest.TestCase):
                                netsnmp.Varbind('sysORUpTime'))
 
         vals = sess.getbulk(2, 8, vars)
-        print "v2 sess.getbulk result: ", vals, "\n"
+        print("v2 sess.getbulk result: ", vals, "\n")
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
-        print "\n"
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
+        print("\n")
 
-        print "---v2c set-------------------------------------\n"
+        print("---v2c set-------------------------------------\n")
 
         vars = netsnmp.VarList(
             netsnmp.Varbind('sysLocation','0','my even newer location'))
         
         res = sess.set(vars)
-        print "v2 sess.set result: ", res, "\n"
+        print("v2 sess.set result: ", res, "\n")
 
-        print "---v2c walk-------------------------------------\n"
+        print("---v2c walk-------------------------------------\n")
         vars = netsnmp.VarList(netsnmp.Varbind('system'))
                 
         vals = sess.walk(vars)
-        print "v2 sess.walk result: ", vals, "\n"
+        print("v2 sess.walk result: ", vals, "\n")
         
         for var in vars:
-            print "  ",var.tag, var.iid, "=", var.val, '(',var.type,')'
+            print("  ",var.tag, var.iid, "=", var.val, '(',var.type,')')
             
-        print "---v3 setup-------------------------------------\n"
+        print("---v3 setup-------------------------------------\n")
         sess = netsnmp.Session(Version=3,
                                DestHost='localhost',
                                SecLevel='authPriv',
@@ -200,22 +200,22 @@ class BasicTests(unittest.TestCase):
         vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime', 0),
                                netsnmp.Varbind('sysContact', 0),
                                netsnmp.Varbind('sysLocation', 0))
-        print "---v3 get-------------------------------------\n"
+        print("---v3 get-------------------------------------\n")
         vals = sess.get(vars)
-        print "v3 sess.get result: ", vals, "\n"
+        print("v3 sess.get result: ", vals, "\n")
         
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
-        print "\n"
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
+        print("\n")
 
-        print "---v3 getnext-------------------------------------\n"
+        print("---v3 getnext-------------------------------------\n")
        
         vals = sess.getnext(vars)
-        print "v3 sess.getnext result: ", vals, "\n"
+        print("v3 sess.getnext result: ", vals, "\n")
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
-        print "\n"
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
+        print("\n")
        
         vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'),
                                netsnmp.Varbind('sysORLastChange'),
@@ -224,37 +224,37 @@ class BasicTests(unittest.TestCase):
                                netsnmp.Varbind('sysORUpTime'))
 
         vals = sess.getbulk(2, 8, vars)
-        print "v3 sess.getbulk result: ", vals, "\n"
+        print("v3 sess.getbulk result: ", vals, "\n")
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
-        print "\n"
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
+        print("\n")
 
-        print "---v3 set-------------------------------------\n"
+        print("---v3 set-------------------------------------\n")
 
         vars = netsnmp.VarList(
             netsnmp.Varbind('sysLocation','0', 'my final destination'))
         res = sess.set(vars)
-        print "v3 sess.set result: ", res, "\n"
+        print("v3 sess.set result: ", res, "\n")
         
-        print "---v3 walk-------------------------------------\n"
+        print("---v3 walk-------------------------------------\n")
         vars = netsnmp.VarList(netsnmp.Varbind('system'))
                 
         vals = sess.walk(vars)
-        print "v3 sess.walk result: ", vals, "\n"
+        print("v3 sess.walk result: ", vals, "\n")
         
         for var in vars:
-            print "  ",var.tag, var.iid, "=", var.val, '(',var.type,')'
+            print("  ",var.tag, var.iid, "=", var.val, '(',var.type,')')
 
 
 class SetTests(unittest.TestCase):
     def testFuncs(self):        
-        print "\n-------------- SET Test Start ----------------------------\n"
+        print("\n-------------- SET Test Start ----------------------------\n")
 
         var = netsnmp.Varbind('sysUpTime','0')
         res = netsnmp.snmpget(var, Version = 1, DestHost='localhost',
                         Community='public')
-        print "uptime = ", res[0]
+        print("uptime = ", res[0])
 
         
         var = netsnmp.Varbind('versionRestartAgent','0', 1)
@@ -264,19 +264,19 @@ class SetTests(unittest.TestCase):
         var = netsnmp.Varbind('sysUpTime','0')
         res = netsnmp.snmpget(var, Version = 1, DestHost='localhost',
                         Community='public')
-        print "uptime = ", res[0]
+        print("uptime = ", res[0])
 
         var = netsnmp.Varbind('nsCacheEntry')
         res = netsnmp.snmpgetnext(var, Version = 1, DestHost='localhost',
                         Community='public')
-        print "var = ", var.tag, var.iid, "=", var.val, '(',var.type,')'
+        print("var = ", var.tag, var.iid, "=", var.val, '(',var.type,')')
 
         var.val = 65
         res = netsnmp.snmpset(var, Version = 1, DestHost='localhost',
                         Community='public')
         res = netsnmp.snmpget(var, Version = 1, DestHost='localhost',
                         Community='public')
-        print "var = ", var.tag, var.iid, "=", var.val, '(',var.type,')'
+        print("var = ", var.tag, var.iid, "=", var.val, '(',var.type,')')
 
         sess = netsnmp.Session(Version = 1, DestHost='localhost',
                         Community='public')
@@ -286,7 +286,7 @@ class SetTests(unittest.TestCase):
                               
netsnmp.Varbind('.1.3.6.1.6.3.12.1.2.1.9.116.101.115.116','', 4))
         res = sess.set(vars)
 
-        print "res = ", res
+        print("res = ", res)
 
         vars = netsnmp.VarList(netsnmp.Varbind('snmpTargetAddrTDomain'),
                                netsnmp.Varbind('snmpTargetAddrTAddress'),
@@ -295,14 +295,14 @@ class SetTests(unittest.TestCase):
         res = sess.getnext(vars)
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
-        print "\n"
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
+        print("\n")
 
         vars = 
netsnmp.VarList(netsnmp.Varbind('.1.3.6.1.6.3.12.1.2.1.9.116.101.115.116','', 
6))      
 
         res = sess.set(vars)
 
-        print "res = ", res
+        print("res = ", res)
 
         vars = netsnmp.VarList(netsnmp.Varbind('snmpTargetAddrTDomain'),
                                netsnmp.Varbind('snmpTargetAddrTAddress'),
@@ -311,10 +311,10 @@ class SetTests(unittest.TestCase):
         res = sess.getnext(vars)
 
         for var in vars:
-            print var.tag, var.iid, "=", var.val, '(',var.type,')'
-        print "\n"
+            print(var.tag, var.iid, "=", var.val, '(',var.type,')')
+        print("\n")
 
-        print "\n-------------- SET Test End ----------------------------\n"
+        print("\n-------------- SET Test End ----------------------------\n")
         
 
 if __name__=='__main__':
Index: net-snmp-5.7.3/python/netsnmp/client_intf.c
===================================================================
--- net-snmp-5.7.3.orig/python/netsnmp/client_intf.c
+++ net-snmp-5.7.3/python/netsnmp/client_intf.c
@@ -979,7 +979,11 @@ py_netsnmp_attr_string(PyObject *obj, ch
     PyObject *attr = PyObject_GetAttrString(obj, attr_name);
     if (attr) {
       int retval;
+#if PY_MAJOR_VERSION >= 3
+      retval = PyBytes_AsStringAndSize(attr, val, len);
+#else
       retval = PyString_AsStringAndSize(attr, val, len);
+#endif
       Py_DECREF(attr);
       return retval;
     }
@@ -996,7 +1000,11 @@ py_netsnmp_attr_long(PyObject *obj, char
   if (obj && attr_name  && PyObject_HasAttrString(obj, attr_name)) {
     PyObject *attr = PyObject_GetAttrString(obj, attr_name);
     if (attr) {
+#if PY_MAJOR_VERSION >= 3
+      val = PyLong_AsLong(attr);
+#else
       val = PyInt_AsLong(attr);
+#endif
       Py_DECREF(attr);
     }
   }
@@ -1079,11 +1087,19 @@ __py_netsnmp_update_session_errors(PyObj
 
     py_netsnmp_attr_set_string(session, "ErrorStr", err_str, STRLEN(err_str));
 
+#if PY_MAJOR_VERSION >= 3
+    tmp_for_conversion = PyLong_FromLong(err_num);
+#else
     tmp_for_conversion = PyInt_FromLong(err_num);
+#endif
     PyObject_SetAttrString(session, "ErrorNum", tmp_for_conversion);
     Py_DECREF(tmp_for_conversion);
 
+#if PY_MAJOR_VERSION >= 3
+    tmp_for_conversion = PyLong_FromLong(err_ind);
+#else
     tmp_for_conversion = PyInt_FromLong(err_ind);
+#endif
     PyObject_SetAttrString(session, "ErrorInd", tmp_for_conversion);
     Py_DECREF(tmp_for_conversion);
 }
@@ -2607,13 +2623,28 @@ static PyMethodDef ClientMethods[] = {
   {NULL, NULL, 0, NULL}        /* Sentinel */
 };
 
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef ClientModuleDef = {
+  PyModuleDef_HEAD_INIT,
+  "client_intf",
+  NULL,
+  -1,
+  ClientMethods,
+  NULL,
+  NULL,
+  NULL,
+  NULL
+};
+
+PyMODINIT_FUNC
+PyInit_client_intf(void)
+{
+  return PyModule_Create(&ClientModuleDef);
+}
+#else
 PyMODINIT_FUNC
 initclient_intf(void)
 {
     (void) Py_InitModule("client_intf", ClientMethods);
 }
-
-
-
-
-
+#endif
++++++ net-snmp-tmpfs.conf ++++++
d       /var/run/net-snmp       0755    root    root
++++++ snmpd.service ++++++
[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon.
After=syslog.target network.target

[Service]
Type=notify
Environment=OPTIONS="-LS0-6d"
EnvironmentFile=-/etc/sysconfig/snmpd
ExecStart=/usr/sbin/snmpd $OPTIONS -f
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
++++++ snmpd.sysconfig ++++++
## Path:        System/Net-SNMP
## Description: snmpd command line options
## Type:        string
## Default:     ""
#
# '-f' is implicitly added by snmptrapd systemd unit file
# OPTIONS="-L60-6d"
#
OPTIONS=""
++++++ snmptrapd.service ++++++
[Unit]
Description=Simple Network Management Protocol (SNMP) Trap Daemon.
After=syslog.target network.target

[Service]
Type=notify
Environment=OPTIONS="-Lsd"
EnvironmentFile=-/etc/sysconfig/snmptrapd
ExecStart=/usr/sbin/snmptrapd $OPTIONS -f
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
++++++ snmptrapd.sysconfig ++++++
## Path:        System/Net-SNMP
## Description: snmptrapd command line options
## Type:        string
## Default:     ""
#
# '-f' is implicitly added by snmptrapd systemd unit file
# OPTIONS="-Lsd"
#
OPTIONS=""

Reply via email to