Update net-mgmt/net-snmp to version 5.7.3_10
[dports.git] / net-mgmt / net-snmp / Makefile
1 # Created by: gpalmer
2 # $FreeBSD$
3
4 PORTNAME=       snmp
5 PORTVERSION=    5.7.3
6 PORTREVISION=   10
7 CATEGORIES=     net-mgmt ipv6
8 MASTER_SITES=   SF/net-${PORTNAME}/net-${PORTNAME}/${PORTVERSION}
9 PKGNAMEPREFIX=  net-
10 DISTNAME=       ${PKGNAMEPREFIX}${PORTNAME}-${PORTVERSION}
11
12 MAINTAINER=     zi@FreeBSD.org
13 COMMENT=        Extendable SNMP implementation
14
15 LICENSE=        BSD3CLAUSE
16 LICENSE_FILE=   ${WRKSRC}/COPYING
17
18 OPTIONS_DEFINE= IPV6 MFD_REWRITES PERL PERL_EMBEDDED PYTHON DUMMY TKMIB \
19                 MYSQL AX_SOCKONLY UNPRIVILEGED SMUX DOCS JAIL
20 OPTIONS_DEFAULT=IPV6 PERL PERL_EMBEDDED DUMMY SMUX
21
22 MFD_REWRITES_DESC=      Build with 64-bit Interface Counters
23 PERL_EMBEDDED_DESC=     Build embedded perl
24 DUMMY_DESC=             Enable dummy values as placeholders
25 TKMIB_DESC=             Install graphical MIB browser
26 #DMALLOC_DESC=          Enable dmalloc debug memory allocator
27 AX_SOCKONLY_DESC=       Disable UDP/TCP transports for agentx
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
32 MAKE_JOBS_UNSAFE=       yes
33
34 PORTSCOUT=      skipv:5.7.2.1
35
36 GNU_CONFIGURE=  yes
37 USE_RC_SUBR=    snmpd snmptrapd
38 USE_OPENSSL=    yes
39 USE_LDCONFIG=   yes
40 USES=           cpe libtool perl5
41 CPE_VENDOR=     net-snmp
42 USE_PERL5=      build run
43 USE_CSTD=       c99
44
45 CFLAGS+=        -I${LOCALBASE}/include -I${PKG_PREFIX}/include
46 LDFLAGS+=       -L${LOCALBASE}/lib
47 CONFIGURE_ENV+= PERLPROG="${PERL}" PSPROG="${PS_CMD}" SED="${SED}"
48 CONFIGURE_ARGS+=--enable-shared --enable-internal-md5 \
49                 --with-default-snmp-version="${DEFAULT_SNMP_VERSION}" \
50                 --with-sys-contact="${NET_SNMP_SYS_CONTACT}" \
51                 --with-sys-location="${NET_SNMP_SYS_LOCATION}" \
52                 --with-logfile="${NET_SNMP_LOGFILE}" \
53                 --with-persistent-directory="${NET_SNMP_PERSISTENTDIR}" \
54                 --with-gnu-ld --with-libwrap \
55                 --with-ldflags="-lm -lkvm -ldevstat -L${PKG_PREFIX}/lib -L${LOCALBASE}/lib ${LCRYPTO}"
56 SUB_FILES=      pkg-message
57
58 .if !defined(WITHOUT_SSP)
59 CONFIGURE_ARGS+=--with-libs="-lssp_nonshared"
60 .endif
61
62 .if defined(BATCH)
63 CONFIGURE_ARGS+=--with-defaults
64 .endif
65
66 .include <bsd.port.options.mk>
67
68 .if ${PORT_OPTIONS:MPYTHON}
69 PYDISTUTILS_PKGNAME?=           netsnmp-python
70 PYDISTUTILS_PKGVERSION?=        1.0a1
71 USES+=          python
72 RUN_DEPENDS+=   ${PYTHON_PKGNAMEPREFIX}setuptools${PYTHON_SUFFIX}>0:${PORTSDIR}/devel/py-setuptools${PYTHON_SUFFIX}
73 BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools${PYTHON_SUFFIX}>0:${PORTSDIR}/devel/py-setuptools${PYTHON_SUFFIX}
74 CONFIGURE_ARGS+=--with-python-modules
75 CONFIGURE_ENV+= PYTHONPROG="${PYTHON_CMD}"
76 MAKE_ENV+=      PYDISTUTILS_INSTALLARGS="${PYDISTUTILS_INSTALLARGS}" STAGEDIR="${STAGEDIR}"
77 PLIST_SUB+=     WITH_PYTHON="" PYTHON_VER=${PYTHON_VER}
78 PLIST_SUB+=     PYDISTUTILS_PKGVERSION=${PYDISTUTILS_PKGVERSION}
79 .else
80 PLIST_SUB+=     WITH_PYTHON="@comment "
81 .endif
82
83 CONFIGURE_ARGS+=--with-openssl="${OPENSSLBASE}"
84
85 .if ${PORT_OPTIONS:MDUMMY}
86 CONFIGURE_ARGS+=--with-dummy-values
87 .endif
88
89 .if ! ${PORT_OPTIONS:MTKMIB}
90 EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-local:Makefile.in
91 PLIST_SUB+=     WITH_TKMIB="@comment "
92 .else
93 RUN_DEPENDS+=   p5-Tk>=0:${PORTSDIR}/x11-toolkits/p5-Tk
94 PLIST_SUB+=     WITH_TKMIB=""
95 .endif
96
97 .if ${PORT_OPTIONS:MPERL}
98 CONFIGURE_ARGS+=--with-perl-modules
99 .if ! ${PORT_OPTIONS:MPERL_EMBEDDED}
100 CONFIGURE_ARGS+=--disable-embedded-perl
101 PLIST_SUB+=     WITH_PERL_EMBEDDED="@comment "
102 .else
103 CONFIGURE_ARGS+=--enable-embedded-perl
104 PLIST_SUB+=     WITH_PERL_EMBEDDED=""
105 .endif
106 PLIST_SUB+=     WITH_PERL=""
107 .else
108 USE_PERL5=      build
109 CONFIGURE_ARGS+=--disable-embedded-perl --without-perl-modules
110 PLIST_SUB+=     WITH_PERL_EMBEDDED="@comment "
111 PLIST_SUB+=     WITH_PERL="@comment "
112 .endif
113
114 #.if ${PORT_OPTIONS:MDMALLOC}
115 #LIB_DEPENDS+=  libdmalloc.so:${PORTSDIR}/devel/dmalloc
116 #CONFIGURE_ARGS+=--with-dmalloc=${LOCALBASE}
117 #.else
118 #CONFIGURE_ARGS+=--without-dmalloc
119 #.endif
120
121 .if ${PORT_OPTIONS:MMYSQL}
122 USE_MYSQL=      yes
123 CONFIGURE_ARGS+=--with-mysql
124 CONFIGURE_ENV+= MYSQLCONFIG=${LOCALBASE}/bin/mysql_config
125 .endif
126
127 .if ${PORT_OPTIONS:MAX_SOCKONLY}
128 CONFIGURE_ARGS+=--enable-agentx-dom-sock-only
129 .endif
130
131 .if ${PORT_OPTIONS:MIPV6}
132 CONFIGURE_ARGS+=--enable-ipv6
133 # --with-transport="UDPIPv6 TCPIPv6" --with-modules=mibII/ipv6"
134 PLIST_SUB+=     WITH_IPV6=""
135 .else
136 PLIST_SUB+=     WITH_IPV6="@comment "
137 .endif
138
139 .if ${PORT_OPTIONS:MUNPRIVILEGED}
140 CONFIGURE_ARGS+=--without-root-access
141 .endif
142
143 SHLIB_VERSION=  30
144 SHLIB_VERSION2= .0.3
145 PLIST_SUB+=     SHLIB_VERSION=${SHLIB_VERSION} SHLIB_VERSION2=${SHLIB_VERSION2}
146 SCRIPTS_SUB=    PREFIX=${PREFIX} PERL=${PERL}
147
148 DEFAULT_SNMP_VERSION?=  3
149 NET_SNMP_SYS_CONTACT?=  nobody@nowhere.invalid
150 NET_SNMP_SYS_LOCATION?= somewhere
151 NET_SNMP_LOGFILE?=      /var/log/snmpd.log
152 NET_SNMP_PERSISTENTDIR?=/var/net-snmp
153 NET_SNMP_WITH_MIB_MODULE_LIST+= host disman/event-mib mibII/mta_sendmail mibII/tcpTable ucd-snmp/diskio
154
155 .if ${OSVERSION} >= 1000000 && ${OSVERSION} < 1100062
156 CFLAGS+=        -D_WANT_IFADDR
157 .endif
158
159 .if ${OSVERSION} >= 1100062
160 CONFIGURE_ARGS+=        --with-out-mib-modules="mibII/ipv6"
161 .endif
162
163 .if ${PORT_OPTIONS:MMFD_REWRITES}
164 CONFIGURE_ARGS+=--enable-mfd-rewrites
165 NET_SNMP_WITH_MIB_MODULE_LIST+= if-mib
166 .endif
167
168 .if ${PORT_OPTIONS:MJAIL}
169 NET_SNMP_WITHOUT_MIB_MODULE_LIST+=      host
170 NET_SNMP_WITHOUT_MIB_MODULE_LIST+=      ucd-snmp/memory
171 CONFIGURE_ARGS+=                        --without-kmem-usage
172 .endif
173
174 .if ${PORT_OPTIONS:MSMUX}
175 NET_SNMP_WITH_MIB_MODULE_LIST+=         smux
176 .else
177 NET_SNMP_WITHOUT_MIB_MODULE_LIST+=      smux
178 .endif
179
180 .if defined(NET_SNMP_WITH_MIB_MODULE_LIST) && \
181     !empty(NET_SNMP_WITH_MIB_MODULE_LIST)
182 CONFIGURE_ARGS+=--with-mib-modules="${NET_SNMP_WITH_MIB_MODULE_LIST}"
183 .endif
184
185 .if defined(NET_SNMP_WITHOUT_MIB_MODULE_LIST) && \
186     !empty(NET_SNMP_WITHOUT_MIB_MODULE_LIST)
187 CONFIGURE_ARGS+=--with-out-mib-modules="${NET_SNMP_WITHOUT_MIB_MODULE_LIST}"
188 .endif
189
190 BIN_FILES=      snmpbulkwalk snmpget snmpgetnext snmpset \
191                 snmpstatus snmptest snmptranslate snmptrap snmpwalk \
192                 snmptable snmpbulkget snmpdelta snmpdf agentxtrap \
193                 snmpvacm snmpusm encode_keychange snmpnetstat
194 LIB_FILES=      libnetsnmp.so.${SHLIB_VERSION}${SHLIB_VERSION2} \
195                 libnetsnmpagent.so.${SHLIB_VERSION}${SHLIB_VERSION2} \
196                 libnetsnmpmibs.so.${SHLIB_VERSION}${SHLIB_VERSION2} \
197                 libnetsnmphelpers.so.${SHLIB_VERSION}${SHLIB_VERSION2} \
198                 libnetsnmptrapd.so.${SHLIB_VERSION}${SHLIB_VERSION2}
199 SBIN_FILES=     snmpd snmptrapd
200 STARTUP_DIR=    ${PREFIX}/etc/rc.d
201 SCRIPT_FILES=   snmpcheck.def mib2c fixproc ipf-mod.pl traptoemail
202 .if ${PORT_OPTIONS:MTKMIB}
203 SCRIPT_FILES+=  tkmib
204 .endif
205 DOC_FILES=      AGENT.txt COPYING FAQ NEWS README \
206                 README.agentx README.krb5 README.snmpv3 README.thread \
207                 agent/mibgroup/README.smux
208
209 CONFLICTS=      ucd-snmp-4.* net-snmp-5.3.*
210
211 .include <bsd.port.pre.mk>
212
213 LCRYPTO=        -lcrypto -lssl -lwrap
214
215 pre-everything::
216         @${ECHO_MSG}
217         @${ECHO_MSG} "You may use the following build options:"
218         @${ECHO_MSG}
219         @${ECHO_MSG} "DEFAULT_SNMP_VERSION=\"3\"        Default version of SNMP to use."
220         @${ECHO_MSG} "NET_SNMP_SYS_CONTACT=\"${NET_SNMP_SYS_CONTACT}\""
221         @${ECHO_MSG} "                          Default system contact."
222         @${ECHO_MSG} "NET_SNMP_SYS_LOCATION=\"${NET_SNMP_SYS_LOCATION}\""
223         @${ECHO_MSG} "                          Default system location."
224         @${ECHO_MSG} "NET_SNMP_LOGFILE=\"${NET_SNMP_LOGFILE}\""
225         @${ECHO_MSG} "                          Default log file location for snmpd."
226         @${ECHO_MSG} "NET_SNMP_PERSISTENTDIR=\"${NET_SNMP_PERSISTENTDIR}\""
227         @${ECHO_MSG} "                          Default directory for persistent data storage."
228         @${ECHO_MSG} "NET_SNMP_WITH_MIB_MODULE_LIST=\"${NET_SNMP_WITH_MIB_MODULE_LIST}\""
229         @${ECHO_MSG} "                             MIBs to add to the build."
230         @${ECHO_MSG} "NET_SNMP_WITHOUT_MIB_MODULE_LIST=\"${NET_SNMP_WITHOUT_MIB_MODULE_LIST}\""
231         @${ECHO_MSG} "                             MIBs to omit from the build."
232         @${ECHO_MSG}
233
234 post-patch:
235 .for filename in ${SCRIPT_FILES}
236         @${REINPLACE_CMD} -e 's|/usr/local|${PREFIX}|' ${WRKSRC}/local/${filename}
237 .endfor
238 .if ${OSVERSION} >= 900007
239         @${REINPLACE_CMD} -e 's!utmp_p->ut_name!utmp_p->ut_user!' \
240             ${WRKSRC}/agent/mibgroup/host/hr_system.c
241 .endif
242         @${REINPLACE_CMD} -E -e 's|return pci_lookup_name|disabled broken|g' \
243                 ${WRKSRC}/configure
244
245 post-configure:
246         @${FIND} ${WRKSRC} -name Makefile | \
247                 ${XARGS} ${REINPLACE_CMD} -E -e '/^INSTALL[     ]+=/s|$$| -m 755|'
248 .for hdr in sys/mbuf.h netinet/in_pcb.h netinet/in_var.h netinet/ip6.h pkg.h
249         @${REINPLACE_CMD} -E -e '\
250                 s!^.*#undef.*(HAVE_${hdr:tu:S/./_/g:S/\//_/g}).*$$!#define \1 1!g' \
251                         ${WRKSRC}/include/net-snmp/net-snmp-config.h
252 .endfor
253 .if ${PORT_OPTIONS:MPYTHON}
254         @(cd ${WRKSRC}/python; \
255         ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYSETUP} setopt -c bdist_egg \
256                 -o plat-name -s "" --basedir=${WRKSRC}; \
257         ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYSETUP} setopt -c bdist \
258                 -o plat-name -s "" --basedir=${WRKSRC})
259 .endif
260
261 post-build:
262 .if ${PORT_OPTIONS:MPERL}
263         ${FIND} ${WRKSRC}/perl -name Makefile | \
264         ${XARGS} ${REINPLACE_CMD} -E -e '\
265                 s!^(PREFIX) = .*!\1 = ${PREFIX}!; \
266                 s!^(INSTALLMAN3DIR|INSTALLSITEMAN3DIR) = .*!\1 = ${PREFIX}/man/man3!; \
267                 s!^(INSTALLSITELIB|INSTALLSITEARCH) = /usr/local/(.*)!\1 = ${PREFIX}/\2!; \
268                 s! doc_(perl|site|\$$\(INSTALLDIRS\))_install$$!!; \
269                 '
270 .else
271         ${REINPLACE_CMD} -e 's| perlinstall||' ${WRKSRC}/Makefile
272 .endif
273
274 post-install: strip-files install-config-files install-doc-files
275         @${MKDIR} ${STAGEDIR}/var/agentx
276         @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmp.so.${SHLIB_VERSION} libnetsnmp.so)
277         @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmpagent.so.${SHLIB_VERSION} libnetsnmpagent.so)
278         @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmphelpers.so.${SHLIB_VERSION} libnetsnmphelpers.so)
279         @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmpmibs.so.${SHLIB_VERSION} libnetsnmpmibs.so)
280         @(cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetsnmptrapd.so.${SHLIB_VERSION} libnetsnmptrapd.so)
281
282 strip-files:
283         (cd ${STAGEDIR}${PREFIX}/bin; ${STRIP_CMD} ${BIN_FILES})
284         (cd ${STAGEDIR}${PREFIX}/lib; ${STRIP_CMD} ${LIB_FILES})
285         (cd ${STAGEDIR}${PREFIX}/sbin; ${STRIP_CMD} ${SBIN_FILES})
286
287 install-config-files:
288         ${INSTALL_DATA} ${WRKSRC}/EXAMPLE.conf ${STAGEDIR}${DATADIR}/snmpd.conf.example
289
290 install-doc-files:
291 .if ${PORT_OPTIONS:MDOCS}
292         @${MKDIR} ${STAGEDIR}${DOCSDIR}
293 . for filename in ${DOC_FILES}
294         ${INSTALL_DATA} ${WRKSRC}/${filename} ${STAGEDIR}${DOCSDIR}
295 . endfor
296 .endif
297
298 # Maintainer's note:
299 #   Don't forget to bump library version in these ports.
300 #   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
301
302 .include <bsd.port.post.mk>