1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-04 01:48:54 +00:00
freebsd-ports/devel/valgrind/Makefile
Simon Barner 69f79551f5 - Mark valgrind ports IGNORE when /proc is not mounted, previously, only
a warning was printed.

  A mounted procfs is a runtime dependency of valgrind, but since the
  implementation of automatic suppression file generation the valgrind
  binary is run in the post-install stage.

- An exception needs to be made for the ports cluster: The machine compiling
  the list of IGNOREd ports does not have a mounted /proc, so the check (and
  the generation of supression files is disabled there).

  Users who want to suppress false positives in valgrinds output should build
  the port instead of installing the package (so the rules can be customized to
  their specific installation).

Reported by:	Paul Ledbetter III <aeacides@gmail.com>
Approved by:	portmgr (kris)
2005-08-11 13:26:20 +00:00

109 lines
2.9 KiB
Makefile

# Ports collection makefile for: valgrind
# Date created: April 15 2004
# Whom: Simon Barner <barner@gmx.de>
#
# $FreeBSD$
#
PORTNAME= valgrind
PORTVERSION= 352
PORTREVISION= 3
CATEGORIES= devel
MASTER_SITES= http://www.rabson.org/
DISTNAME= ${PORTNAME}-stable-${PORTVERSION}
MAINTAINER= barner@FreeBSD.org
COMMENT= A (memory) debugging and profiling tool
ONLY_FOR_ARCHS= i386
CONFLICTS= valgrind-snapshot-[0-9]*
WRKSRC= ${WRKDIR}/${DISTNAME}
USE_GMAKE= yes
USE_GNOME= pkgconfig
GNU_CONFIGURE= yes
CONFIGURE_TARGET=--build=${MACHINE_ARCH}-portbld-freebsd${OSREL}
CONFIGURE_ARGS+=--enable-maintainer-mode
USE_REINPLACE= yes
USE_PERL5_BUILD=yes
.include <bsd.port.pre.mk>
.if ${OSVERSION} >= 500000
PLIST_SUB+= RELENG_5=""
PLIST_SUB+= RELENG_4="@comment "
.else
PLIST_SUB+= RELENG_4=""
PLIST_SUB+= RELENG_5="@comment "
.endif
.if ${PERL_LEVEL} < 500601
IGNORE= "can\'t be built. Your Perl version is too old. Please use lang/perl5.8 port to upgrade your Perl"
.endif
PROCFS!= /sbin/mount | ${GREP} '^procfs' | ${AWK} '{print $1}'
pre-everything::
.if ${PROCFS}
@${ECHO_CMD} ""
@${ECHO_CMD} "Check if procfs is running: YES"
.else
#
# /proc is not mounted on the machine in the package building cluster that
# that builds the list of IGNOREd ports (but it is on the build machines),
# so we need to make an exception here.
#
.ifndef (PACKAGE_BUILDING)
ECHO_MSG=/usr/bin/printf
IGNORE= needs a running procfs, which is not\n\
\ \ \ \ \ activated on your system. Please read the procfs\(5\)\n\
\ \ \ \ \ man page and add the following line to /etc/fstab:\n\
\n\
\ \ \ \ \ proc /proc procfs rw 0 0\n\
\n\n
.endif
.endif
pre-patch:
.ifdef(NOPORTDOCS)
${FIND} ${WRKSRC} -name "Makefile.in" -exec \
${REINPLACE_CMD} -e "s/docs//g" {} \;
.endif
post-install:
@${INSTALL_DATA} ${WRKSRC}/coregrind/vg_unistd.h \
${PREFIX}/include/valgrind
# Check if kernel is built with USER_LDT option (FreeBSD 4 only)
.if ${OSVERSION} < 500000
@${PREFIX}/bin/valgrind --tool=memcheck true 2> ${WRKDIR}/ldt.test
@${GREP} i386_set_ldt ${WRKDIR}/ldt.test >/dev/null &&\
${ECHO_CMD} !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! && \
${ECHO_CMD} Please rebuild your kernel with ``options USER_LDT''! && \
${ECHO_CMD} Otherwise, valgrind will not be able to perform pointer analysis! && \
${ECHO_CMD} !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! || true
.endif
.ifndef (PACKAGE_BUILDING)
@yes | ${PREFIX}/bin/valgrind --tool=memcheck --gen-suppressions=yes true 2>&1 \
| ${SED} -e 's,.*{$$,{,' \
| ${GREP} -v '^=' \
> ${WRKDIR}/freebsd-default.supp || \
${RM} ${WRKDIR}/freebsd-default.supp
.endif
@${ECHO} ""
@${ECHO} ""
@${CAT} ${PKGMESSAGE} | ${SED} -e 's,%%PREFIX%%,${PREFIX},g'
@${ECHO} ""
.if exists(${WRKDIR}/freebsd-default.supp)
@${INSTALL_DATA} ${WRKDIR}/freebsd-default.supp \
${PREFIX}/lib/valgrind
PLIST_SUB+= VALGRIND_SUPPFILE=""
.else
PLIST_SUB+= VALGRIND_SUPPFILE="@comment "
.endif
.include <bsd.port.post.mk>