Patchwork [meta-oe,PATCHv2,1/2] net-snmp: fix failure when starting on system without pci bus

login
register
mail settings
Submitter ml@communistcode.co.uk
Date April 17, 2013, 10:46 a.m.
Message ID <1366195597-13363-1-git-send-email-ml@communistcode.co.uk>
Download mbox | patch
Permalink /patch/48415/
State New
Headers show

Comments

ml@communistcode.co.uk - April 17, 2013, 10:46 a.m.
From: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>

The snmpd daemon cannot start on platforms without a pci bus:

snmpd[15460]: pcilib: Cannot open /proc/bus/pci
snmpd[15460]: pcilib: Cannot find any working access method.

snmpd should not depend on a PCI bus and should simply move on.

Signed-off-by: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>
---
 .../recipes-extended/net-snmp/files/ifmib.patch    | 66 ++++++++++++++++++++++
 .../recipes-extended/net-snmp/net-snmp_5.7.1.bb    |  1 +
 2 files changed, 67 insertions(+)
 create mode 100644 meta-oe/recipes-extended/net-snmp/files/ifmib.patch
ml@communistcode.co.uk - April 17, 2013, 11:09 a.m.
On 17/04/13 11:46, Jack Mitchell wrote:
> From: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>
>
> The snmpd daemon cannot start on platforms without a pci bus:
>
> snmpd[15460]: pcilib: Cannot open /proc/bus/pci
> snmpd[15460]: pcilib: Cannot find any working access method.
>
> snmpd should not depend on a PCI bus and should simply move on.
>
> Signed-off-by: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>
> ---
>   .../recipes-extended/net-snmp/files/ifmib.patch    | 66 ++++++++++++++++++++++
>   .../recipes-extended/net-snmp/net-snmp_5.7.1.bb    |  1 +
>   2 files changed, 67 insertions(+)
>   create mode 100644 meta-oe/recipes-extended/net-snmp/files/ifmib.patch
>

Apologies, wrong list.
Martin Jansa - April 17, 2013, 11:10 a.m.
On Wed, Apr 17, 2013 at 11:46:37AM +0100, Jack Mitchell wrote:
> From: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>
> 
> - Removed some un-needed patches
> 
> diff --git a/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb b/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.2.bb
> similarity index 76%
> rename from meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
> rename to meta-oe/recipes-extended/net-snmp/net-snmp_5.7.2.bb
> index 19aa163..048ecb8 100644
> --- a/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
> +++ b/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.2.bb
> @@ -1,11 +1,8 @@
>  require net-snmp.inc
>  
> -PR = "${INC_PR}.4"

This can surprise people editing net-snmp.inc and bumping INC_PR there
without any effect on net-snmp_5.7.2.bb.

I understand why you wanted to remove it, but I would prefer to keep
PR = "${INC_PR}.0" there as long as we have .inc with INC_PR.

I wouldn't mind merging .inc in .bb as people probably don't have own
versions of net-snmp in their layers (just guessing here).

And it was send to wrong ML this time..

>  LIC_FILES_CHKSUM = "file://README;beginline=3;endline=8;md5=7f7f00ba639ac8e8deb5a622ea24634e"
>  
>  SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
> -        file://sync-with-5.7-branch.patch \
> -        file://libnl-3-support.patch \
>          file://init \
>          file://snmpd.conf \
>          file://snmptrapd.conf \
> @@ -30,5 +27,5 @@ do_configure_prepend() {
>  PARALLEL_MAKE = ""
>  CCACHE = ""
>  
> -SRC_URI[md5sum] = "c95d08fd5d93df0c11a2e1bdf0e01e0b"
> -SRC_URI[sha256sum] = "7c71c9650c65b715356547e20ca2dbe6313944278af8cc19c32a5337f46b181f"
> +SRC_URI[md5sum] = "5bddd02e2f82b62daa79f82717737a14"
> +SRC_URI[sha256sum] = "09ed31b4cc1f3c0411ef9a16eff79ef3b30d89c32ca46d5a01a41826c4ceb816"
> -- 
> 1.8.2
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
ml@communistcode.co.uk - April 17, 2013, 11:18 a.m.
On 17/04/13 12:10, Martin Jansa wrote:
> On Wed, Apr 17, 2013 at 11:46:37AM +0100, Jack Mitchell wrote:
>> From: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>
>>
>> - Removed some un-needed patches
>>
>> diff --git a/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb b/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.2.bb
>> similarity index 76%
>> rename from meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
>> rename to meta-oe/recipes-extended/net-snmp/net-snmp_5.7.2.bb
>> index 19aa163..048ecb8 100644
>> --- a/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
>> +++ b/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.2.bb
>> @@ -1,11 +1,8 @@
>>   require net-snmp.inc
>>   
>> -PR = "${INC_PR}.4"
> This can surprise people editing net-snmp.inc and bumping INC_PR there
> without any effect on net-snmp_5.7.2.bb.
>
> I understand why you wanted to remove it, but I would prefer to keep
> PR = "${INC_PR}.0" there as long as we have .inc with INC_PR.
>
> I wouldn't mind merging .inc in .bb as people probably don't have own
> versions of net-snmp in their layers (just guessing here).
>
> And it was send to wrong ML this time..

V3 incoming.

>
>>   LIC_FILES_CHKSUM = "file://README;beginline=3;endline=8;md5=7f7f00ba639ac8e8deb5a622ea24634e"
>>   
>>   SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
>> -        file://sync-with-5.7-branch.patch \
>> -        file://libnl-3-support.patch \
>>           file://init \
>>           file://snmpd.conf \
>>           file://snmptrapd.conf \
>> @@ -30,5 +27,5 @@ do_configure_prepend() {
>>   PARALLEL_MAKE = ""
>>   CCACHE = ""
>>   
>> -SRC_URI[md5sum] = "c95d08fd5d93df0c11a2e1bdf0e01e0b"
>> -SRC_URI[sha256sum] = "7c71c9650c65b715356547e20ca2dbe6313944278af8cc19c32a5337f46b181f"
>> +SRC_URI[md5sum] = "5bddd02e2f82b62daa79f82717737a14"
>> +SRC_URI[sha256sum] = "09ed31b4cc1f3c0411ef9a16eff79ef3b30d89c32ca46d5a01a41826c4ceb816"
>> -- 
>> 1.8.2
>>
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Patch

diff --git a/meta-oe/recipes-extended/net-snmp/files/ifmib.patch b/meta-oe/recipes-extended/net-snmp/files/ifmib.patch
new file mode 100644
index 0000000..859c52c
--- /dev/null
+++ b/meta-oe/recipes-extended/net-snmp/files/ifmib.patch
@@ -0,0 +1,66 @@ 
+Signed-off-by: Jack Mitchell <jack@embed.me.uk>
+Upstream-Status: Pending
+Bug-Report: http://sourceforge.net/p/net-snmp/bugs/2449/
+
+diff --git a/agent/mibgroup/if-mib/data_access/interface_linux.c b/agent/mibgroup/if-mib/data_access/interface_linux.c
+index 3419811..d6eb91a 100644
+--- a/agent/mibgroup/if-mib/data_access/interface_linux.c
++++ b/agent/mibgroup/if-mib/data_access/interface_linux.c
+@@ -18,7 +18,31 @@ netsnmp_feature_require(interface_ioctl_flags_set)
+ 
+ #ifdef HAVE_PCI_LOOKUP_NAME
+ #include <pci/pci.h>
++#include <setjmp.h>
+ static struct pci_access *pci_access;
++
++/* Avoid letting libpci call exit(1) when no PCI bus is available. */
++static int do_longjmp =0;
++static jmp_buf err_buf;
++static void
++netsnmp_pci_error(char *msg, ...)
++{
++    va_list args;
++    char *buf;
++    int buflen;
++
++    va_start(args, msg);
++    buflen = strlen("pcilib: ")+strlen(msg)+2;
++    buf = malloc(buflen);
++    snprintf(buf, buflen, "pcilib: %s\n", msg);
++    snmp_vlog(LOG_ERR, buf, args);
++    free(buf);
++    va_end(args);
++    if (do_longjmp)
++	longjmp(err_buf, 1);
++    else
++	exit(1);
++}
+ #endif
+ 
+ #ifdef HAVE_LINUX_ETHTOOL_H
+@@ -147,10 +171,22 @@ netsnmp_arch_interface_init(void)
+ 
+ #ifdef HAVE_PCI_LOOKUP_NAME
+     pci_access = pci_alloc();
+-    if (pci_access)
++    if (!pci_access) {
++	snmp_log(LOG_ERR, "pcilib: pci_alloc failed\n");
++	return;
++    }
++
++    pci_access->error = netsnmp_pci_error;
++
++    do_longjmp = 1;
++    if (setjmp(err_buf)) {
++        pci_cleanup(pci_access);
++	snmp_log(LOG_ERR, "pcilib: pci_init failed\n");
++        pci_access = NULL;
++    }
++    else if (pci_access)
+ 	pci_init(pci_access);
+-    else
+-	snmp_log(LOG_ERR, "Unable to create pci access method\n");
++    do_longjmp = 0;
+ #endif
+ }
+ 
diff --git a/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb b/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
index 14c1036..19aa163 100644
--- a/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
+++ b/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
@@ -12,6 +12,7 @@  SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
         file://systemd-support.patch \
         file://snmpd.service \
         file://snmptrapd.service \
+        file://ifmib.patch \
 "
 
 EXTRA_OECONF += "--disable-embedded-perl --with-perl-modules=no"