PageRenderTime 56ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/net-mgmt/net-snmp/Makefile

https://github.com/freebsd/freebsd-ports
Makefile | 329 lines | 276 code | 48 blank | 5 comment | 16 complexity | 415c3c56379ad1db02a9a5f7f78b4139 MD5 | raw file
  1. # Created by: gpalmer
  2. PORTNAME= snmp
  3. PORTVERSION= 5.9.1
  4. PORTREVISION= 1
  5. PORTEPOCH= 1
  6. CATEGORIES= net-mgmt
  7. MASTER_SITES= SF/net-${PORTNAME}/net-${PORTNAME}/${PORTVERSION} \
  8. ZI
  9. PKGNAMEPREFIX= net-
  10. DISTNAME= ${PKGNAMEPREFIX}${PORTNAME}-${PORTVERSION}
  11. MAINTAINER= zi@FreeBSD.org
  12. COMMENT= Extendable SNMP implementation
  13. LICENSE= BSD3CLAUSE
  14. LICENSE_FILE= ${WRKSRC}/COPYING
  15. NOT_FOR_ARCHS= mips mips64
  16. NOT_FOR_ARCHS_REASON= SSP is currently broken on MIPS
  17. OPTIONS_DEFINE= IPV6 MFD_REWRITES PERL PERL_EMBEDDED PYTHON DUMMY TKMIB \
  18. MYSQL AX_SOCKONLY UNPRIVILEGED SMUX DOCS JAIL AX_DISABLE_TRAP \
  19. TLS NEWSYSLOG NOLIBPKG SCTP
  20. OPTIONS_DEFAULT=PERL PERL_EMBEDDED DUMMY SMUX NEWSYSLOG
  21. OPTIONS_SUB= yes
  22. MFD_REWRITES_DESC= Use new MFD rewrites of mib modules
  23. PERL_EMBEDDED_DESC= Build embedded perl
  24. DUMMY_DESC= Enable dummy values as placeholders
  25. TKMIB_DESC= Install graphical MIB browser
  26. AX_SOCKONLY_DESC= Disable UDP/TCP transports for agentx
  27. AX_DISABLE_TRAP_DESC= Disable agentx subagent code in snmptrapd
  28. UNPRIVILEGED_DESC= Allow unprivileged users to execute net-snmp
  29. SMUX_DESC= Build with SNMP multiplexing (SMUX) support
  30. JAIL_DESC= Options for running snmpd within a jail(8)
  31. NEWSYSLOG_DESC= Automatically rotate snmpd.log via newsyslog
  32. NOLIBPKG_DESC= Build without libpkg
  33. SCTP_DESC= Build with SCTP MIB support
  34. MAKE_JOBS_UNSAFE= yes
  35. PORTSCOUT= skipv:5.7.2.1
  36. GNU_CONFIGURE= yes
  37. USE_RC_SUBR= snmpd snmptrapd
  38. USE_LDCONFIG= yes
  39. USES= cpe libtool perl5 ssl
  40. CPE_PRODUCT= net-snmp
  41. USE_PERL5= build run
  42. USE_CSTD= c99
  43. CFLAGS+= -I${LOCALBASE}/include -I${PKG_PREFIX}/include
  44. LDFLAGS+= -L${LOCALBASE}/lib
  45. CONFIGURE_ENV+= PERLPROG="${PERL}" PSPROG="${PS_CMD}" SED="${SED}"
  46. CONFIGURE_ARGS+=--enable-shared --enable-internal-md5 \
  47. --with-default-snmp-version="${DEFAULT_SNMP_VERSION}" \
  48. --with-sys-contact="${NET_SNMP_SYS_CONTACT}" \
  49. --with-sys-location="${NET_SNMP_SYS_LOCATION}" \
  50. --with-logfile="${NET_SNMP_LOGFILE}" \
  51. --with-persistent-directory="${NET_SNMP_PERSISTENTDIR}" \
  52. --with-gnu-ld --without-libwrap \
  53. --with-ldflags="-lm -lkvm -ldevstat -L${PKG_PREFIX}/lib -L${LOCALBASE}/lib ${LCRYPTO}"
  54. SUB_FILES= pkg-message
  55. .if !defined(WITHOUT_SSP)
  56. CONFIGURE_ARGS+=--with-libs="-lssp_nonshared"
  57. .endif
  58. .if defined(BATCH)
  59. CONFIGURE_ARGS+=--with-defaults
  60. .endif
  61. TLS_CONFIGURE_ON= --with-security-modules=tsm --with-transports=TLSTCP,DTLSUDP
  62. .include <bsd.port.options.mk>
  63. .if ${PORT_OPTIONS:MPYTHON}
  64. PYDISTUTILS_PKGNAME?= netsnmp-python
  65. PYDISTUTILS_PKGVERSION?= 1.0a1
  66. USES+= python:3.5+
  67. RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR}
  68. BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR}
  69. CONFIGURE_ARGS+=--with-python-modules
  70. CONFIGURE_ENV+= PYTHONPROG="${PYTHON_CMD}"
  71. MAKE_ENV+= PYDISTUTILS_INSTALLARGS="${PYDISTUTILS_INSTALLARGS}" STAGEDIR="${STAGEDIR}"
  72. PLIST_SUB+= WITH_PYTHON="" PYTHON_VER=${PYTHON_VER}
  73. PLIST_SUB+= PYDISTUTILS_PKGVERSION=${PYDISTUTILS_PKGVERSION}
  74. .else
  75. PLIST_SUB+= WITH_PYTHON="@comment "
  76. .endif
  77. CONFIGURE_ARGS+=--with-openssl="${OPENSSLBASE}"
  78. .if ${PORT_OPTIONS:MDUMMY}
  79. CONFIGURE_ARGS+=--with-dummy-values
  80. .endif
  81. .if ! ${PORT_OPTIONS:MTKMIB}
  82. PLIST_SUB+= WITH_TKMIB="@comment "
  83. .else
  84. RUN_DEPENDS+= p5-Tk>=0:x11-toolkits/p5-Tk
  85. PLIST_SUB+= WITH_TKMIB=""
  86. .endif
  87. .if ${PORT_OPTIONS:MPERL}
  88. CONFIGURE_ARGS+=--with-perl-modules
  89. .if ! ${PORT_OPTIONS:MPERL_EMBEDDED}
  90. CONFIGURE_ARGS+=--disable-embedded-perl
  91. PLIST_SUB+= WITH_PERL_EMBEDDED="@comment "
  92. .else
  93. CONFIGURE_ARGS+=--enable-embedded-perl
  94. PLIST_SUB+= WITH_PERL_EMBEDDED=""
  95. .endif
  96. PLIST_SUB+= WITH_PERL=""
  97. .else
  98. USE_PERL5= build
  99. CONFIGURE_ARGS+=--disable-embedded-perl --without-perl-modules
  100. PLIST_SUB+= WITH_PERL_EMBEDDED="@comment "
  101. PLIST_SUB+= WITH_PERL="@comment "
  102. .endif
  103. .if ${PORT_OPTIONS:MMYSQL}
  104. USES+= mysql
  105. CONFIGURE_ARGS+=--with-mysql
  106. CONFIGURE_ENV+= MYSQLCONFIG=${LOCALBASE}/bin/mysql_config
  107. .endif
  108. .if ${PORT_OPTIONS:MAX_DISABLE_TRAP}
  109. CONFIGURE_ARGS+=--disable-snmptrapd-subagent
  110. .endif
  111. .if ${PORT_OPTIONS:MAX_SOCKONLY}
  112. CONFIGURE_ARGS+=--enable-agentx-dom-sock-only
  113. .endif
  114. .if ${PORT_OPTIONS:MIPV6}
  115. CONFIGURE_ARGS+=--enable-ipv6
  116. # --with-transport="UDPIPv6 TCPIPv6" --with-modules=mibII/ipv6"
  117. PLIST_SUB+= WITH_IPV6=""
  118. .else
  119. PLIST_SUB+= WITH_IPV6="@comment "
  120. .endif
  121. .if ${PORT_OPTIONS:MUNPRIVILEGED}
  122. CONFIGURE_ARGS+=--without-root-access
  123. .endif
  124. SHLIB_VERSION= 40
  125. SHLIB_VERSION2= .1.0
  126. PLIST_SUB+= SHLIB_VERSION=${SHLIB_VERSION} SHLIB_VERSION2=${SHLIB_VERSION2}
  127. SCRIPTS_SUB= PREFIX=${PREFIX} PERL=${PERL}
  128. DEFAULT_SNMP_VERSION?= 3
  129. NET_SNMP_SYS_CONTACT?= nobody@nowhere.invalid
  130. NET_SNMP_SYS_LOCATION?= somewhere
  131. NET_SNMP_LOGFILE?= /var/log/snmpd.log
  132. NET_SNMP_PERSISTENTDIR?=/var/net-snmp
  133. NET_SNMP_WITH_MIB_MODULE_LIST+= host disman/event-mib mibII/mta_sendmail mibII/tcpTable ucd-snmp/diskio
  134. .if ${OPSYS} == FreeBSD
  135. NET_SNMP_WITHOUT_MIB_MODULE_LIST+= mibII/ipv6
  136. .endif
  137. .if ${PORT_OPTIONS:MSCTP}
  138. NET_SNMP_WITH_MIB_MODULE_LIST+= sctp-mib
  139. .endif
  140. .if ${PORT_OPTIONS:MMFD_REWRITES}
  141. CONFIGURE_ARGS+=--enable-mfd-rewrites
  142. NET_SNMP_WITH_MIB_MODULE_LIST+= if-mib
  143. .endif
  144. .if ${PORT_OPTIONS:MJAIL}
  145. NET_SNMP_WITHOUT_MIB_MODULE_LIST+= host
  146. NET_SNMP_WITHOUT_MIB_MODULE_LIST+= ucd-snmp/memory
  147. CONFIGURE_ARGS+= --without-kmem-usage
  148. .endif
  149. .if ${PORT_OPTIONS:MSMUX}
  150. NET_SNMP_WITH_MIB_MODULE_LIST+= smux
  151. .else
  152. NET_SNMP_WITHOUT_MIB_MODULE_LIST+= smux
  153. .endif
  154. .if defined(NET_SNMP_WITH_MIB_MODULE_LIST) && \
  155. !empty(NET_SNMP_WITH_MIB_MODULE_LIST)
  156. CONFIGURE_ARGS+=--with-mib-modules="${NET_SNMP_WITH_MIB_MODULE_LIST}"
  157. .endif
  158. .if defined(NET_SNMP_WITHOUT_MIB_MODULE_LIST) && \
  159. !empty(NET_SNMP_WITHOUT_MIB_MODULE_LIST)
  160. CONFIGURE_ARGS+=--with-out-mib-modules="${NET_SNMP_WITHOUT_MIB_MODULE_LIST}"
  161. .endif
  162. BIN_FILES= snmpbulkwalk snmpget snmpgetnext snmpset \
  163. snmpstatus snmptest snmptranslate snmptrap snmpwalk \
  164. snmptable snmpbulkget snmpdelta snmpdf agentxtrap \
  165. snmpps snmpping snmppcap snmpvacm snmpusm \
  166. encode_keychange snmpnetstat
  167. LIB_FILES= libnetsnmp.so.${SHLIB_VERSION}${SHLIB_VERSION2} \
  168. libnetsnmpagent.so.${SHLIB_VERSION}${SHLIB_VERSION2} \
  169. libnetsnmpmibs.so.${SHLIB_VERSION}${SHLIB_VERSION2} \
  170. libnetsnmphelpers.so.${SHLIB_VERSION}${SHLIB_VERSION2} \
  171. libnetsnmptrapd.so.${SHLIB_VERSION}${SHLIB_VERSION2}
  172. SBIN_FILES= snmpd snmptrapd
  173. STARTUP_DIR= ${PREFIX}/etc/rc.d
  174. SCRIPT_FILES= snmpcheck.def mib2c fixproc ipf-mod.pl traptoemail
  175. .if ${PORT_OPTIONS:MTKMIB}
  176. SCRIPT_FILES+= tkmib
  177. .endif
  178. DOC_FILES= AGENT.txt COPYING FAQ NEWS README \
  179. README.agentx README.krb5 README.snmpv3 README.thread \
  180. agent/mibgroup/README.smux
  181. CONFLICTS= ucd-snmp-4.* net-snmp-5.3.*
  182. .include <bsd.port.pre.mk>
  183. .if ${SSL_DEFAULT} != base
  184. LCRYPTO= -lcrypto
  185. .else
  186. LCRYPTO=
  187. .endif
  188. pre-everything::
  189. @${ECHO_MSG}
  190. @${ECHO_MSG} "You may use the following build options:"
  191. @${ECHO_MSG}
  192. @${ECHO_MSG} "DEFAULT_SNMP_VERSION=\"3\" Default version of SNMP to use."
  193. @${ECHO_MSG} "NET_SNMP_SYS_CONTACT=\"${NET_SNMP_SYS_CONTACT}\""
  194. @${ECHO_MSG} " Default system contact."
  195. @${ECHO_MSG} "NET_SNMP_SYS_LOCATION=\"${NET_SNMP_SYS_LOCATION}\""
  196. @${ECHO_MSG} " Default system location."
  197. @${ECHO_MSG} "NET_SNMP_LOGFILE=\"${NET_SNMP_LOGFILE}\""
  198. @${ECHO_MSG} " Default log file location for snmpd."
  199. @${ECHO_MSG} "NET_SNMP_PERSISTENTDIR=\"${NET_SNMP_PERSISTENTDIR}\""
  200. @${ECHO_MSG} " Default directory for persistent data storage."
  201. @${ECHO_MSG} "NET_SNMP_WITH_MIB_MODULE_LIST=\"${NET_SNMP_WITH_MIB_MODULE_LIST}\""
  202. @${ECHO_MSG} " MIBs to add to the build."
  203. @${ECHO_MSG} "NET_SNMP_WITHOUT_MIB_MODULE_LIST=\"${NET_SNMP_WITHOUT_MIB_MODULE_LIST}\""
  204. @${ECHO_MSG} " MIBs to omit from the build."
  205. @${ECHO_MSG}
  206. post-patch:
  207. @${REINPLACE_CMD} -E -e 's|return pci_lookup_name|disabled broken|g' \
  208. ${WRKSRC}/configure
  209. .if ${OPSYS} == FreeBSD || ${SSL_DEFAULT:Mopenssl}
  210. @${REINPLACE_CMD} -E -e 's|SSL_library_init|OPENSSL_init_ssl|g' \
  211. ${WRKSRC}/configure
  212. .endif
  213. @${CP} ${WRKSRC}/include/net-snmp/system/freebsd12.h \
  214. ${WRKSRC}/include/net-snmp/system/freebsd13.h
  215. .for header in darwin7.h darwin8.h darwin9.h darwin10.h darwin11.h darwin12.h \
  216. darwin13.h darwin14.h darwin15.h darwin16.h darwin17.h
  217. @${CP} ${WRKSRC}/include/net-snmp/system/darwin.h \
  218. ${WRKSRC}/include/net-snmp/system/${header}
  219. .endfor
  220. .if ${PORT_OPTIONS:MNOLIBPKG}
  221. pre-configure:
  222. ${REINPLACE_CMD} \
  223. -e 's|pkg[.]h|ignore-pkg.h|g' \
  224. -e 's|in pkg ;|in ignore-pkg ;|' \
  225. ${WRKSRC}/configure
  226. .endif
  227. post-configure:
  228. @${FIND} ${WRKSRC} -name Makefile | \
  229. ${XARGS} ${REINPLACE_CMD} -E -e '/^INSTALL[ ]+=/s|$$| -m 755|'
  230. .for hdr in sys/mbuf.h netinet/in_pcb.h netinet/in_var.h netinet/ip6.h pkg.h
  231. @${REINPLACE_CMD} -E -e '\
  232. s!^.*#undef.*(HAVE_${hdr:tu:S/./_/g:S/\//_/g}).*$$!#define \1 1!g' \
  233. ${WRKSRC}/include/net-snmp/net-snmp-config.h
  234. .endfor
  235. .if ${PORT_OPTIONS:MPYTHON}
  236. @(cd ${WRKSRC}/python; \
  237. ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYSETUP} setopt -c bdist_egg \
  238. -o plat-name -s "" --basedir=${WRKSRC}; \
  239. ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYSETUP} setopt -c bdist \
  240. -o plat-name -s "" --basedir=${WRKSRC})
  241. .endif
  242. post-build:
  243. .if ${PORT_OPTIONS:MPERL}
  244. ${FIND} ${WRKSRC}/perl -name Makefile | \
  245. ${XARGS} ${REINPLACE_CMD} -E -e '\
  246. s!^(PREFIX) = .*!\1 = ${PREFIX}!; \
  247. s!^(INSTALLMAN3DIR|INSTALLSITEMAN3DIR) = .*!\1 = ${PREFIX}/man/man3!; \
  248. s!^(INSTALLSITELIB|INSTALLSITEARCH) = /usr/local/(.*)!\1 = ${PREFIX}/\2!; \
  249. s! doc_(perl|site|\$$\(INSTALLDIRS\))_install$$!!; \
  250. '
  251. .else
  252. ${REINPLACE_CMD} -e 's| perlinstall||' ${WRKSRC}/Makefile
  253. .endif
  254. post-install: strip-files install-config-files install-doc-files
  255. @${MKDIR} ${STAGEDIR}/var/agentx
  256. @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmp.so.${SHLIB_VERSION} libnetsnmp.so)
  257. @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmpagent.so.${SHLIB_VERSION} libnetsnmpagent.so)
  258. @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmphelpers.so.${SHLIB_VERSION} libnetsnmphelpers.so)
  259. @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmpmibs.so.${SHLIB_VERSION} libnetsnmpmibs.so)
  260. @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmptrapd.so.${SHLIB_VERSION} libnetsnmptrapd.so)
  261. .if ${PORT_OPTIONS:MNEWSYSLOG}
  262. @${MKDIR} ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d
  263. ${INSTALL_DATA} ${FILESDIR}/net-snmp.conf ${STAGEDIR}${DATADIR}/newsyslog.conf.sample
  264. .endif
  265. strip-files:
  266. (cd ${STAGEDIR}${PREFIX}/bin; ${STRIP_CMD} ${BIN_FILES})
  267. (cd ${STAGEDIR}${PREFIX}/lib; ${STRIP_CMD} ${LIB_FILES})
  268. (cd ${STAGEDIR}${PREFIX}/sbin; ${STRIP_CMD} ${SBIN_FILES})
  269. install-config-files:
  270. ${INSTALL_DATA} ${WRKSRC}/EXAMPLE.conf ${STAGEDIR}${DATADIR}/snmpd.conf.example
  271. install-doc-files:
  272. .if ${PORT_OPTIONS:MDOCS}
  273. @${MKDIR} ${STAGEDIR}${DOCSDIR}
  274. . for filename in ${DOC_FILES}
  275. ${INSTALL_DATA} ${WRKSRC}/${filename} ${STAGEDIR}${DOCSDIR}
  276. . endfor
  277. .endif
  278. # Maintainer's note:
  279. # Don't forget to bump library version in these ports.
  280. # french/plgrenouille,graphics/hpoj,lang/php4,lang/php5,mail/cyrus-imapd22,mail/cyrus-imapd23,misc/kdeutils3,net-mgmt/braa,net-mgmt/docsis,net-mgmt/mbrowse,net-mgmt/nagios-snmp-plugins,net-mgmt/p5-SNMP-Info,net-mgmt/py-yapsnmp,net-mgmt/sdig,net-mgmt/zabbix,net/cactid,net/wireshark,net/ifstat,net/quagga,net/rtg,print/hplip,security/libfwbuilder,sysutils/apcupsd,sysutils/jailadmin,sysutils/nut
  281. .include <bsd.port.post.mk>