net-analyzer/net-snmp: fix LDFLAGS ordering; rebase patches

No guarantee this fixes the reported bug but it needed doing anyway
and I've sent the rebased patches upstream. It'll make the situation
easier to deal with now these are tidied up, anyway.

Unfortunately couldn't reproduce the bug yet w/ -Os.

Bug: https://bugs.gentoo.org/883945
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James
2022-12-02 02:50:52 +00:00
parent 1a85bcbd54
commit 4ab69c8447
6 changed files with 576 additions and 6 deletions

View File

@@ -0,0 +1,231 @@
https://github.com/net-snmp/net-snmp/pull/493
From 1151979ecfba1ef10627175549d052cb76ef9d21 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Fri, 2 Dec 2022 02:26:29 +0000
Subject: [PATCH 1/4] Fix LDFLAGS vs LIBS ordering
LDFLAGS must come before both LIBS & any listed objects in order
for certain valid LDFLAGS, like '-Wl,--as-needed' to work correctly
(otherwise it'll either take no effect or discard libraries when
they're needed).
Gentoo has been carrying this patch for a while.
Signed-off-by: Sam James <sam@gentoo.org>
--- a/Makefile.top
+++ b/Makefile.top
@@ -86,11 +86,11 @@ LIBCURRENT = 40
LIBAGE = 0
LIBREVISION = 0
-LIB_LD_CMD = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) @LD_NO_UNDEFINED@ -o
+LIB_LD_CMD = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) $(LDFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) @LD_NO_UNDEFINED@ -o
LIB_EXTENSION = la
LIB_VERSION =
LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(INSTALL_PREFIX)$(libdir)
-LINK = $(LIBTOOL) --mode=link $(LINKCC)
+LINK = $(LIBTOOL) --mode=link $(LINKCC) $(LDFLAGS)
# RANLIB = @RANLIB@
RANLIB = :
--- a/agent/Makefile.in
+++ b/agent/Makefile.in
@@ -288,26 +288,26 @@ all: agentlib subdirs miblib $(INSTALLBINPROGS) $(INSTALLSBINPROGS)
# build stuff targets
#
getkstat: getkstat.o
- $(CC) $(CFLAGS) -o $@ $? $(LIBS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $? $(LIBS)
getkstat.o: mibgroup/kernel_sunos5.c
- $(CC) $(CFLAGS) -o $@ -D_GETKSTAT_TEST -DDODEBUG -c $?
+ $(CC) $(CFLAGS) -o $@ -D_GETKSTAT_TEST -DDODEBUG -c $?
getmibstat: getmibstat.o
- $(CC) $(CFLAGS) -o $@ $? $(LIBS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $? $(LIBS)
getmibstat.o: mibgroup/kernel_sunos5.c
- $(CC) $(CFLAGS) -o $@ -D_GETMIBSTAT_TEST -DDODEBUG -c $?
+ $(CC) $(CFLAGS) -o $@ -D_GETMIBSTAT_TEST -DDODEBUG -c $?
-snmpd$(EXEEXT): ${LAGENTOBJS} $(USELIBS) $(AGENTLIB) $(HELPERLIB) $(MIBLIB) $(LIBTARG)
- $(LINK) $(CFLAGS) -o $@ ${LAGENTOBJS} ${LDFLAGS} ${OUR_AGENT_LIBS}
+snmpd$(EXEEXT): ${LAGENTOBJS} $(USELIBS) $(AGENTLIB) $(HELPERLIB) $(MIBLIB) $(LIBTARG)
+ $(LINK) $(CFLAGS) $(LDFLAGS) -o $@ ${LAGENTOBJS} ${OUR_AGENT_LIBS}
libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION): ${LLIBAGENTOBJS} $(USELIBS)
- $(LIB_LD_CMD) $(AGENTLIB) ${LLIBAGENTOBJS} $(USELIBS) ${LAGENTLIBS} $(LDFLAGS) $(PERLLDOPTS_FOR_LIBS) @AGENTLIBS@
+ $(LIB_LD_CMD) $(AGENTLIB) $(LDFLAGS) ${LLIBAGENTOBJS} $(USELIBS) ${LAGENTLIBS} $(PERLLDOPTS_FOR_LIBS) @AGENTLIBS@
$(RANLIB) $(AGENTLIB)
libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION): ${LMIBOBJS} $(AGENTLIB) $(USELIBS) subdirs
- $(LIB_LD_CMD) $(MIBLIB) ${LMIBOBJS} $(AGENTLIB) $(USELIBS) $(LDFLAGS) ${LMIBLIBS} $(PERLLDOPTS_FOR_LIBS) @AGENTLIBS@
+ $(LIB_LD_CMD) $(MIBLIB) $(LDFLAGS) ${LMIBOBJS} $(AGENTLIB) $(USELIBS) ${LMIBLIBS} $(PERLLDOPTS_FOR_LIBS) @AGENTLIBS@
$(RANLIB) $(MIBLIB)
agentlib: $(AGENTLIB)
--- a/agent/helpers/Makefile.in
+++ b/agent/helpers/Makefile.in
@@ -32,5 +32,5 @@ LOBJS = dummy.lo
all: standardall
libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION): $(LOBJS)
- $(LIB_LD_CMD) $@ $(LOBJS) $(LDFLAGS)
+ $(LIB_LD_CMD) $@ $(LDFLAGS) $(LOBJS)
$(RANLIB) $@
--- a/apps/Makefile.in
+++ b/apps/Makefile.in
@@ -163,37 +163,37 @@ OTHERUNINSTALL=snmpinformuninstall snmptrapdperluninstall \
# build rules
#
snmpwalk$(EXEEXT): snmpwalk.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpwalk.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpwalk.$(OSUFFIX) ${LIBS}
snmpbulkwalk$(EXEEXT): snmpbulkwalk.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpbulkwalk.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpbulkwalk.$(OSUFFIX) ${LIBS}
snmpbulkget$(EXEEXT): snmpbulkget.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpbulkget.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpbulkget.$(OSUFFIX) ${LIBS}
snmptranslate$(EXEEXT): snmptranslate.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmptranslate.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmptranslate.$(OSUFFIX) ${LIBS}
snmpstatus$(EXEEXT): snmpstatus.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpstatus.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpstatus.$(OSUFFIX) ${LIBS}
snmpget$(EXEEXT): snmpget.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpget.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpget.$(OSUFFIX) ${LIBS}
snmpdelta$(EXEEXT): snmpdelta.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpdelta.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpdelta.$(OSUFFIX) ${LIBS}
snmptable$(EXEEXT): snmptable.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmptable.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmptable.$(OSUFFIX) ${LIBS}
snmptest$(EXEEXT): snmptest.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmptest.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmptest.$(OSUFFIX) ${LIBS}
snmptrapd$(EXEEXT): $(TRAPD_OBJECTS) $(USETRAPLIBS) $(INSTALLLIBS)
- $(LINK) ${CFLAGS} -o $@ $(TRAPD_OBJECTS) $(INSTALLLIBS) ${LDFLAGS} ${TRAPLIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ $(TRAPD_OBJECTS) $(INSTALLLIBS) ${TRAPLIBS}
snmptrap$(EXEEXT): snmptrap.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmptrap.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmptrap.$(OSUFFIX) ${LIBS}
snmpinform$(EXEEXT): snmptrap$(EXEEXT)
rm -f snmpinform
@@ -204,40 +204,40 @@ snmptop$(EXEEXT): snmpps$(EXEEXT)
$(LN_S) snmpps$(EXEEXT) snmptop$(EXEEXT)
snmpset$(EXEEXT): snmpset.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpset.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpset.$(OSUFFIX) ${LIBS}
snmpusm$(EXEEXT): snmpusm.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpusm.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpusm.$(OSUFFIX) ${LIBS}
snmpvacm$(EXEEXT): snmpvacm.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpvacm.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpvacm.$(OSUFFIX) ${LIBS}
snmptls$(EXEEXT): snmptls.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmptls.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmptls.$(OSUFFIX) ${LIBS}
agentxtrap$(EXEEXT): agentxtrap.$(OSUFFIX) $(USEAGENTLIBS)
- $(LINK) ${CFLAGS} -o $@ agentxtrap.$(OSUFFIX) ${LDFLAGS} $(USEAGENTLIBS) $(PERLLDOPTS_FOR_APPS) ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ agentxtrap.$(OSUFFIX) $(USEAGENTLIBS) $(PERLLDOPTS_FOR_APPS) ${LIBS}
snmpgetnext$(EXEEXT): snmpgetnext.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpgetnext.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpgetnext.$(OSUFFIX) ${LIBS}
encode_keychange$(EXEEXT): encode_keychange.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ encode_keychange.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ encode_keychange.$(OSUFFIX) ${LIBS}
snmpdf$(EXEEXT): snmpdf.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpdf.$(OSUFFIX) ${LDFLAGS} ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpdf.$(OSUFFIX) ${LIBS}
snmpps$(EXEEXT): snmpps.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpps.$(OSUFFIX) ${LDFLAGS} @LIBCURSES@ ${LIBS}
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpps.$(OSUFFIX) @LIBCURSES@ ${LIBS}
snmpping$(EXEEXT): snmpping.$(OSUFFIX) $(USELIBS)
- $(LINK) ${CFLAGS} -o $@ snmpping.$(OSUFFIX) ${LDFLAGS} ${LIBS} -lm
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmpping.$(OSUFFIX) ${LIBS} -lm
snmppcap$(EXEEXT): snmppcap.$(OSUFFIX) $(USEAGENTLIBS)
- $(LINK) ${CFLAGS} -o $@ snmppcap.$(OSUFFIX) ${LDFLAGS} ${USEAGENTLIBS} ${LIBS} -lpcap
+ $(LINK) ${CFLAGS} ${LDFLAGS} -o $@ snmppcap.$(OSUFFIX) ${USEAGENTLIBS} ${LIBS} -lpcap
libnetsnmptrapd.$(LIB_EXTENSION)$(LIB_VERSION): $(LLIBTRAPD_OBJS)
- $(LIB_LD_CMD) $@ ${LLIBTRAPD_OBJS} $(MIBLIB) $(MYSQL_LIBS) $(USELIBS) $(PERLLDOPTS_FOR_LIBS) $(LDFLAGS)
+ $(LIB_LD_CMD) $@ $(LDFLAGS) ${LLIBTRAPD_OBJS} $(MIBLIB) $(MYSQL_LIBS) $(USELIBS) $(PERLLDOPTS_FOR_LIBS)
$(RANLIB) $@
snmpinforminstall:
--- a/apps/snmpnetstat/Makefile.in
+++ b/apps/snmpnetstat/Makefile.in
@@ -34,4 +34,4 @@ LIBS= ../../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) $(VAL_LIBS) @LIBS
all: standardall
snmpnetstat$(EXEEXT): ${LOBJS} ${USELIBS}
- ${LINK} ${CFLAGS} -o $@ ${LOBJS} ${LOCAL_LIBS} ${LDFLAGS} ${LIBS}
+ ${LINK} ${CFLAGS} ${LDFLAGS} -o $@ ${LOBJS} ${LOCAL_LIBS} ${LIBS}
--- a/snmplib/Makefile.in
+++ b/snmplib/Makefile.in
@@ -229,11 +229,11 @@ all: standardall
# how to build the libraries.
libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION): $(TOBJS)
- $(LIB_LD_CMD) $@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
+ $(LIB_LD_CMD) $@ $(LDFLAGS) $(TOBJS) @LNETSNMPLIBS@
$(RANLIB) $@
libsnmp.$(LIB_EXTENSION)$(LIB_VERSION): $(TOBJS)
- $(LIB_LD_CMD) $@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
+ $(LIB_LD_CMD) $@ $(LDFLAGS) $(TOBJS) @LNETSNMPLIBS@
$(RANLIB) $@
#
--- a/testing/Makefile.in
+++ b/testing/Makefile.in
@@ -64,16 +64,16 @@ test-mibs:
cd $(srcdir)/rfc1213 ; ./run
etest: etimetest.o $(PARSEOBJS) $(USELIBS)
- ${CC} -o $@ etimetest.o $(PARSEOBJS) ${LDFLAGS} ${LIBS}
+ ${CC} ${LDFLAGS} -o $@ etimetest.o $(PARSEOBJS) ${LIBS}
ktest: keymanagetest.o $(PARSEOBJS) $(USELIBS)
- ${CC} -o $@ keymanagetest.o $(PARSEOBJS) ${LDFLAGS} ${LIBS}
+ ${CC} ${LDFLAGS} -o $@ keymanagetest.o $(PARSEOBJS) ${LIBS}
misctest: misctest.o $(PARSEOBJS) $(USELIBS)
- ${CC} -o $@ misctest.o $(PARSEOBJS) ${LDFLAGS} ${LIBS}
+ ${CC} ${LDFLAGS} -o $@ misctest.o $(PARSEOBJS) ${LIBS}
stest: scapitest.o $(PARSEOBJS) $(USELIBS)
- ${CC} -o $@ scapitest.o $(PARSEOBJS) ${LDFLAGS} ${LIBS}
+ ${CC} ${LDFLAGS} -o $@ scapitest.o $(PARSEOBJS) ${LIBS}
clean: testclean
rm -f *.o core *.core $(TARG)
--
2.38.1

View File

@@ -0,0 +1,51 @@
https://github.com/net-snmp/net-snmp/pull/493
From a73bda5ca7afbeaf3cf3b73101f7541cf92147ef Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Fri, 2 Dec 2022 02:27:21 +0000
Subject: [PATCH 2/4] Tidy up net-snmp-config output
`net-snmp-config --libs` should return only the needed libraries linked to
libraries which external consumers should use.
Gentoo has been carrying this patch for a while, as has Fedora.
Bug: https://bugs.gentoo.org/693970
Signed-off-by: Sam James <sam@gentoo.org>
--- a/net-snmp-config.in
+++ b/net-snmp-config.in
@@ -193,13 +193,13 @@ else
#################################################### client lib
--libs)
# use this one == --netsnmp-libs + --external-libs
- echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_SNMPLIBS $NSC_LIBS
+ echo $NSC_LIBDIR $NSC_SNMPLIBS $NSC_LIBS
;;
--netsnmp-libs)
echo $NSC_LIBDIR $NSC_BASE_SNMP_LIBS
;;
--external-libs)
- echo $NSC_LDFLAGS $NSC_LNETSNMPLIBS $NSC_LIBS @PERLLDOPTS_FOR_APPS@
+ echo $NSC_LNETSNMPLIBS $NSC_LIBS @PERLLDOPTS_FOR_APPS@
;;
#################################################### agent lib
--base-agent-libs)
@@ -210,13 +210,13 @@ else
;;
--agent-libs)
# use this one == --netsnmp-agent-libs + --external-libs
- echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_AGENTLIBS $NSC_LIBS
+ echo $NSC_LIBDIR $NSC_AGENTLIBS $NSC_LIBS
;;
--netsnmp-agent-libs)
echo $NSC_LIBDIR $NSC_BASE_AGENT_LIBS
;;
--external-agent-libs)
- echo $NSC_LDFLAGS $NSC_LMIBLIBS $NSC_LAGENTLIBS $NSC_LNETSNMPLIBS $NSC_LIBS
+ echo $NSC_LMIBLIBS $NSC_LAGENTLIBS $NSC_LNETSNMPLIBS $NSC_LIBS
;;
####################################################
--version|--ver*)
--
2.38.1

View File

@@ -0,0 +1,30 @@
https://github.com/net-snmp/net-snmp/pull/493
From 7261ea344004ac42b6099acfba49c0ea731d049c Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Fri, 2 Dec 2022 02:29:45 +0000
Subject: [PATCH 3/4] Prune Libs.private entries in netsnmp*.pc.in
Gentoo has been carrying this patch for a while, as has Fedora.
Bug: https://bugs.gentoo.org/693970
Signed-off-by: Sam James <sam@gentoo.org>
--- a/netsnmp-agent.pc.in
+++ b/netsnmp-agent.pc.in
@@ -9,4 +9,4 @@ URL: http://www.net-snmp.org
Version: @PACKAGE_VERSION@
Cflags: -I${includedir}
Libs: -L${libdir} -lnetsnmpmibs -lnetsnmpagent -lnetsnmp
-Libs.private: @LDFLAGS@ @LMIBLIBS@ @LAGENTLIBS@ @PERLLDOPTS_FOR_APPS@ @LNETSNMPLIBS@ @LIBS@
+Libs.private: @LMIBLIBS@ @LAGENTLIBS@ @LNETSNMPLIBS@ @LIBS@
--- a/netsnmp.pc.in
+++ b/netsnmp.pc.in
@@ -9,4 +9,4 @@ URL: http://www.net-snmp.org
Version: @PACKAGE_VERSION@
Cflags: -I${includedir}
Libs: -L${libdir} -lnetsnmp
-Libs.private: @LDFLAGS@ @LNETSNMPLIBS@ @LIBS@ @PERLLDOPTS_FOR_APPS@
+Libs.private: @LNETSNMPLIBS@ @LIBS@
--
2.38.1

View File

@@ -0,0 +1,24 @@
https://github.com/net-snmp/net-snmp/pull/493
From 6b70bd4ffa7a905700807eecd3e07a472e2eda55 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Fri, 2 Dec 2022 02:31:15 +0000
Subject: [PATCH 4/4] Search for -ltinfo in configure if needed
Gentoo has been carrying this patch for a while.
Bug: https://bugs.gentoo.org/883945
Signed-off-by: Sam James <sam@gentoo.org>
--- a/configure.d/config_os_libs2
+++ b/configure.d/config_os_libs2
@@ -774,6 +774,7 @@ NETSNMP_SEARCH_LIBS([endwin], [curses ncurses], [
[HAVE_LIBCURSES=FALSE],,
[LIBCURSES])
AC_SUBST([HAVE_LIBCURSES])
+NETSNMP_SEARCH_LIBS([cbreak], [tinfo],[LIBCURSES="$LIBCURSES -ltinfo"],,,)
AC_SUBST([LIBCURSES])
# libm for ceil
--
2.38.1

View File

@@ -0,0 +1,233 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_OPTIONAL=yes
DISTUTILS_SINGLE_IMPL=yes
GENTOO_DEPEND_ON_PERL=no
PYTHON_COMPAT=( python3_{8..10} )
WANT_AUTOMAKE=none
inherit autotools distutils-r1 perl-module systemd
DESCRIPTION="Software for generating and retrieving SNMP data"
HOMEPAGE="https://www.net-snmp.org/"
if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://github.com/net-snmp/net-snmp"
inherit git-r3
else
# https://github.com/net-snmp/net-snmp/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
SRC_URI="mirror://sourceforge/${PN}/${PV}/${P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
fi
SRC_URI+=" https://dev.gentoo.org/~jsmolic/distfiles/${PN}-5.7.3-patches-3.tar.xz"
# GPL-2 for the init scripts
LICENSE="HPND BSD GPL-2"
SLOT="0/40"
IUSE="
X bzip2 doc elf kmem ipv6 lm-sensors mfd-rewrites minimal mysql
netlink pcap pci perl python rpm selinux smux ssl tcpd ucd-compat zlib
"
REQUIRED_USE="
python? ( ${PYTHON_REQUIRED_USE} )
rpm? ( bzip2 zlib )
"
RESTRICT="test"
COMMON_DEPEND="
virtual/libcrypt:=
bzip2? ( app-arch/bzip2 )
elf? ( dev-libs/elfutils )
lm-sensors? ( sys-apps/lm-sensors )
mysql? ( dev-db/mysql-connector-c:0= )
netlink? ( dev-libs/libnl:3 )
pcap? ( net-libs/libpcap )
pci? ( sys-apps/pciutils )
perl? ( dev-lang/perl:= )
python? (
$(python_gen_cond_dep '
dev-python/setuptools[${PYTHON_USEDEP}]
')
${PYTHON_DEPS}
)
rpm? (
app-arch/rpm
dev-libs/popt
)
ssl? (
>=dev-libs/openssl-0.9.6d:0=
)
tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
zlib? ( >=sys-libs/zlib-1.1.4 )
"
BDEPEND="doc? ( app-doc/doxygen )"
DEPEND="${COMMON_DEPEND}"
RDEPEND="
${COMMON_DEPEND}
perl? (
X? ( dev-perl/Tk )
!minimal? (
virtual/perl-Carp
virtual/perl-Data-Dumper
virtual/perl-Getopt-Long
dev-perl/JSON
dev-perl/Mail-Sender
dev-perl/TermReadKey
virtual/perl-Term-ReadLine
)
)
selinux? ( sec-policy/selinux-snmp )
"
PATCHES=(
"${FILESDIR}"/${PN}-5.8-pcap.patch
"${FILESDIR}"/${PN}-5.8.1-mysqlclient.patch
"${FILESDIR}"/${PN}-5.9-MakeMaker.patch
"${FILESDIR}"/${P}-configure-clang16.patch
# https://github.com/net-snmp/net-snmp/pull/493
"${FILESDIR}"/${PN}-5.9.3-0001-Fix-LDFLAGS-vs-LIBS-ordering.patch
"${FILESDIR}"/${PN}-5.9.3-0002-Tidy-up-net-snmp-config-output.patch
"${FILESDIR}"/${PN}-5.9.3-0003-Prune-Libs.private-entries-in-netsnmp-.pc.in.patch
"${FILESDIR}"/${PN}-5.9.3-0004-Search-for-ltinfo-in-configure-if-needed.patch
)
pkg_setup() {
use python && python-single-r1_pkg_setup
}
src_unpack() {
default
[[ ${PV} == 9999 ]] && git-r3_src_unpack
}
src_prepare() {
# snmpconf generates config files with proper selinux context
use selinux && eapply "${FILESDIR}"/${PN}-5.1.2-snmpconf-selinux.patch
mv "${WORKDIR}"/patches/0001-Fix-toolchain-quadruplet-detection-Gentoo-bug-432004.patch{,.disabled} || die
mv "${WORKDIR}"/patches/0002-Respect-DESTDIR-for-pythoninstall.patch{,.disabled} || die
mv "${WORKDIR}"/patches/0004-Don-t-report-CFLAGS-and-LDFLAGS-in-net-snmp-config.patch{,.disabled} || die
mv "${WORKDIR}"/patches/0005-Respect-LDFLAGS-properly.patch{,.disabled} || die
eapply "${WORKDIR}"/patches/*.patch
default
eautoconf
}
src_configure() {
# keep this in the same line, configure.ac arguments are passed down to config.h
local mibs="host ucd-snmp/dlmod ucd-snmp/diskio ucd-snmp/extensible mibII/mta_sendmail etherlike-mib/dot3StatsTable"
use lm-sensors && mibs="${mibs} ucd-snmp/lmsensorsMib"
use smux && mibs="${mibs} smux"
# Assume /etc/mtab is not present with a recent baselayout/openrc (bug #565136)
use kernel_linux && export ac_cv_ETC_MNTTAB=/etc/mtab
econf \
$(use_enable !ssl internal-md5) \
$(use_enable ipv6) \
$(use_enable mfd-rewrites) \
$(use_enable perl embedded-perl) \
$(use_enable ucd-compat ucd-snmp-compatibility) \
$(use_with bzip2) \
$(use_with elf) \
$(use_with kmem kmem-usage) \
$(use_with mysql) \
$(use_with netlink nl) \
$(use_with pcap) \
$(use_with pci) \
$(use_with perl perl-modules INSTALLDIRS=vendor) \
$(use_with python python-modules) \
$(use_with rpm) \
$(use_with ssl openssl) \
$(use_with tcpd libwrap) \
$(use_with zlib) \
--enable-shared \
--with-default-snmp-version="3" \
--with-ldflags="${LDFLAGS}" \
--with-logfile="/var/log/net-snmpd.log" \
--with-mib-modules="${mibs}" \
--with-persistent-directory="/var/lib/net-snmp" \
--with-sys-contact="root@unknown" \
--with-sys-location="Unknown"
}
src_compile() {
emake sedscript
local subdir
for subdir in snmplib agent/mibgroup agent apps .; do
emake OTHERLDFLAGS="${LDFLAGS}" -C ${subdir} all
done
use doc && emake docsdox
}
src_install() {
# bug #317965
emake -j1 DESTDIR="${D}" install
use python && python_optimize
if use perl ; then
perl_delete_localpod
if ! use X; then
rm "${D}"/usr/bin/tkmib || die
fi
else
rm -f \
"${D}"/usr/bin/fixproc \
"${D}"/usr/bin/ipf-mod.pl \
"${D}"/usr/bin/mib2c \
"${D}"/usr/bin/net-snmp-cert \
"${D}"/usr/bin/snmp-bridge-mib \
"${D}"/usr/bin/snmpcheck \
"${D}"/usr/bin/snmpconf \
"${D}"/usr/bin/tkmib \
"${D}"/usr/bin/traptoemail \
"${D}"/usr/share/snmp/mib2c.perl.conf \
"${D}"/usr/share/snmp/snmp_perl_trapd.pl \
|| die
fi
dodoc AGENT.txt ChangeLog FAQ INSTALL NEWS PORTING README* TODO
newdoc EXAMPLE.conf.def EXAMPLE.conf
if use doc; then
docinto html
dodoc -r docs/html/*
fi
keepdir /var/lib/net-snmp
newinitd "${FILESDIR}"/snmpd.init.2 snmpd
newconfd "${FILESDIR}"/snmpd.conf snmpd
newinitd "${FILESDIR}"/snmptrapd.init.2 snmptrapd
newconfd "${FILESDIR}"/snmptrapd.conf snmptrapd
systemd_dounit "${FILESDIR}"/snmpd.service
systemd_dounit "${FILESDIR}"/snmptrapd.service
insinto /etc/snmp
newins "${S}"/EXAMPLE.conf snmpd.conf.example
# Remove everything not required for an agent.
# Keep only the snmpd, snmptrapd, MIBs, headers and libraries.
if use minimal; then
rm -rf \
"${D}"/**/*.pl \
"${D}"/usr/bin/{encode_keychange,snmp{get,getnext,set,usm,walk,bulkwalk,table,trap,bulkget,translate,status,delta,test,df,vacm,netstat,inform,check,conf},fixproc,traptoemail} \
"${D}"/usr/share/snmp/*.conf \
"${D}"/usr/share/snmp/snmpconf-data \
|| die
fi
find "${ED}" -name '*.la' -delete || die
}

View File

@@ -20,7 +20,7 @@ else
# https://github.com/net-snmp/net-snmp/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
SRC_URI="mirror://sourceforge/${PN}/${PV}/${P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~mips ~ppc ~x86"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
fi
SRC_URI+=" https://dev.gentoo.org/~jsmolic/distfiles/${PN}-5.7.3-patches-3.tar.xz"
@@ -84,14 +84,15 @@ RDEPEND="
"
PATCHES=(
"${FILESDIR}"/${PN}-5.8-do-not-conflate-LDFLAGS-and-LIBS.patch
"${FILESDIR}"/${PN}-5.8-pcap.patch
"${FILESDIR}"/${PN}-5.8.1-pkg-config.patch
"${FILESDIR}"/${PN}-5.8.1-net-snmp-config-libdir.patch
"${FILESDIR}"/${PN}-5.8.1-mysqlclient.patch
"${FILESDIR}"/${PN}-5.9-MakeMaker.patch
"${FILESDIR}"/${PN}-5.9.2-fix-LDFLAGS.patch
"${FILESDIR}"/${PN}-99999999-tinfo.patch
"${FILESDIR}"/${P}-configure-clang16.patch
# https://github.com/net-snmp/net-snmp/pull/493
"${FILESDIR}"/${PN}-5.9.3-0001-Fix-LDFLAGS-vs-LIBS-ordering.patch
"${FILESDIR}"/${PN}-5.9.3-0002-Tidy-up-net-snmp-config-output.patch
"${FILESDIR}"/${PN}-5.9.3-0003-Prune-Libs.private-entries-in-netsnmp-.pc.in.patch
"${FILESDIR}"/${PN}-5.9.3-0004-Search-for-ltinfo-in-configure-if-needed.patch
)
pkg_setup() {