Error de compilación apcupsd-3.14.8-r1
Contents
Error
snmp.h:82:10: error: expected unqualified-id before numeric constant snmp.h:82:9: error: expected ';' at end of member declaration snmp.h:82:10: error: expected unqualified-id before numeric constant drv_rfc1628.c: In function 'int rfc_1628_check_alarms(UPSINFO*)': drv_rfc1628.c:35:40: error: expected unqualified-id before numeric constant drv_rfc1628.c:35:40: error: expected ',' or ';' before numeric constant drv_rfc1628.c: In function 'int rfc1628_snmp_ups_read_static_data(UPSINFO*)': drv_rfc1628.c:79:40: error: expected unqualified-id before numeric constant drv_rfc1628.c:79:40: error: expected ',' or ';' before numeric constant drv_rfc1628.c: In function 'int rfc1628_snmp_ups_read_volatile_data(UPSINFO*)': drv_rfc1628.c:101:40: error: expected unqualified-id before numeric constant drv_rfc1628.c:101:40: error: expected ',' or ';' before numeric constant CXX src/drivers/snmplite/mib.cpp make[4]: *** [.obj/drv_rfc1628.o] Error 1 make[3]: *** [all] Error 2 make[2]: *** [snmp_DIR] Error 2 make[2]: *** Waiting for unfinished jobs.... CXX src/drivers/snmplite/asn.cpp CXX src/drivers/snmplite/snmplite.cpp CXX src/drivers/snmplite/snmp.cpp snmplite.cpp: In function 'int snmplite_ups_open(UPSINFO*)': snmplite.cpp:62:18: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] src/cgi CXX src/cgi/upsfetch.c make[1]: *** [drivers_DIR] Error 2 make[1]: *** Waiting for unfinished jobs.... CXX src/cgi/cgilib.c CXX src/cgi/multimon.c CXX src/cgi/upsstats.c CXX src/cgi/upsfstats.c CXX src/cgi/upsimage.c LD src/cgi/multimon.cgi LD src/cgi/upsstats.cgi LD src/cgi/upsfstats.cgi LD src/cgi/upsimage.cgi make: *** [src_DIR] Error 2 emake failed * ERROR: sys-power/apcupsd-3.14.8-r1 failed (compile phase): * emake failed * * Call stack: * ebuild.sh, line 93: Called src_compile * environment, line 3044: Called die * The specific snippet of code: * MANPAGER=$(type -p cat) emake || die "emake failed" * * If you need support, post the output of `emerge --info '=sys-power/apcupsd-3.14.8-r1'`, * the complete build log and the output of `emerge -pqv '=sys-power/apcupsd-3.14.8-r1'`. * The complete build log is located at '/var/tmp/portage/sys-power/apcupsd-3.14.8-r1/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/sys-power/apcupsd-3.14.8-r1/temp/environment'. * Working directory: '/var/tmp/portage/sys-power/apcupsd-3.14.8-r1/work/apcupsd-3.14.8' * S: '/var/tmp/portage/sys-power/apcupsd-3.14.8-r1/work/apcupsd-3.14.8' >>> Failed to emerge sys-power/apcupsd-3.14.8-r1, Log file: >>> '/var/tmp/portage/sys-power/apcupsd-3.14.8-r1/temp/build.log' * Messages for package sys-power/apcupsd-3.14.8-r1: * ERROR: sys-power/apcupsd-3.14.8-r1 failed (compile phase): * emake failed * * Call stack: * ebuild.sh, line 93: Called src_compile * environment, line 3044: Called die * The specific snippet of code: * MANPAGER=$(type -p cat) emake || die "emake failed" * * If you need support, post the output of `emerge --info '=sys-power/apcupsd-3.14.8-r1'`, * the complete build log and the output of `emerge -pqv '=sys-power/apcupsd-3.14.8-r1'`. * The complete build log is located at '/var/tmp/portage/sys-power/apcupsd-3.14.8-r1/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/sys-power/apcupsd-3.14.8-r1/temp/environment'. * Working directory: '/var/tmp/portage/sys-power/apcupsd-3.14.8-r1/work/apcupsd-3.14.8' * S: '/var/tmp/portage/sys-power/apcupsd-3.14.8-r1/work/apcupsd-3.14.8'
El error se debe a un cambio en los header de snmp que no ha sido reflejado en apcupsd (variable en mayusculas MIB a mib.
Parche
Existe un parche que permite modificar el código de apcupsd, para corregir la variable en minúsculas en vez de mayúsculas. Lo ponemos como parche de usuario. Hay que obligar a emerge a parchear el código ver User patch no llamado por portage. El parche esta disponible File:Change MIB to mib to build with latest net-snmp.patch. El parche lo colocamos en la arborescencia siguiente:
# pwd /etc/portage/patches/sys-power/apcupsd-3.14.8-r1 # ls Change_MIB_to_mib_to_build_with_latest_net-snmp.patch #
Compilación
# emerge -av apcupsd * IMPORTANT: 1 news items need reading for repository 'gentoo'. * Use eselect news to read news items. These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] sys-power/apcupsd-3.14.8-r1 USE="cgi nls snmp usb -gnome" 0 kB Total: 1 package (1 reinstall), Size of downloads: 0 kB Would you like to merge these packages? [Yes/No] y >>> Verifying ebuild manifests >>> Emerging (1 of 1) sys-power/apcupsd-3.14.8-r1 * apcupsd-3.14.8.tar.gz SHA256 SHA512 WHIRLPOOL size ;-) ... [ ok ] * Determining the location of the kernel source code * Found kernel source directory: * /usr/src/linux * Found kernel object directory: * /lib/modules/3.8.13-gentoo/build * Found sources for kernel version: * 3.8.13-gentoo * Checking for suitable kernel configuration options... [ ok ] >>> Unpacking source... >>> Unpacking apcupsd-3.14.8.tar.gz to /var/tmp/portage/sys-power/apcupsd-3.14.8-r1/work >>> Source unpacked in /var/tmp/portage/sys-power/apcupsd-3.14.8-r1/work >>> Preparing source in /var/tmp/portage/sys-power/apcupsd-3.14.8-r1/work/apcupsd-3.14.8 ... >>> Source prepared. * Applying user patches from /etc/portage/patches//sys-power/apcupsd-3.14.8-r1 ... * Change_MIB_to_mib_to_build_with_latest_net-snmp.patch ... [ ok ] * Done with patching >>> Configuring source in /var/tmp/portage/sys-power/apcupsd-3.14.8-r1/work/apcupsd-3.14.8 ...
Aplicando el parche la compilación es correcta.
Referencias
--Daniel Simao (Talk) 11:16 16 jun 2013 (UTC)