1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-28 01:06:17 +00:00
freebsd-ports/devel/subversion16/Makefile
Olli Hauer 5a47abc0c6 - mark forbidden if build with Apache modules (not the default)
Security:	CVE-2013-4505
Security:	CVE-2013-4558
Security:	CVE-2014-0032
Security:	1839f78c-9f2b-11e3-980f-20cf30e32f6d
2014-02-26 21:44:42 +00:00

259 lines
8.4 KiB
Makefile

# Created by: rooneg@electricjellyfish.net
# $FreeBSD$
MAINTAINER= lev@FreeBSD.org
COMMENT= Version control system
CONFLICTS_INSTALL= subversion-1.[^6].[0-9]* \
subversion1[^6]-1.[^6].[0-9]*
USE_RC_SUBR= svnserve
PORTDOCS= BUGS CHANGES COMMITTERS COPYING HACKING INSTALL README
OPTIONS_DEFINE= ASVN \
BDB \
DOCS \
ENHANCED_KEYWORD\
FREEBSD_TEMPLATE\
GNOME_KEYRING \
KDE_KWALLET \
MAINTAINER_DEBUG\
MOD_DAV_SVN \
MOD_DONTDOTHAT \
NLS \
NEON \
P4_STYLE_MARKERS\
SASL \
SERF \
STATIC \
SVNSERVE_WRAPPER\
TOOLS
OPTIONS_DEFAULT=P4_STYLE_MARKERS \
ENHANCED_KEYWORD \
FREEBSD_TEMPLATE \
NEON \
BDB
ASVN_DESC= Build and install Archive SVN (asvn)
BDB_DESC= Berkeley DB (4 or 5) repository backend (deprected in 1.8.x)
ENHANCED_KEYWORD_DESC= Enhanced svn:keyword support
FREEBSD_TEMPLATE_DESC= FreeBSD Project log template
GNOME_KEYRING_DESC= Build with GNOME Keyring auth support
KDE_KWALLET_DESC= Build with KDE KWallet auth support
MAINTAINER_DEBUG_DESC= Build debug version
MOD_DAV_SVN_DESC= mod_dav_svn module for Apache 2.X
MOD_DONTDOTHAT_DESC= mod_dontdothat for Apache 2.X
NEON_DESC= WebDAV/Delta-V (HTTP/HTTPS) repo access module
P4_STYLE_MARKERS_DESC= Perforce-style conflict markers
SERF_DESC= WebDAV/Delta-V (HTTP/HTTPS) repo access module
STATIC_DESC= Build static version (no shared libs)
SVNSERVE_WRAPPER_DESC= Enable svnserve wrapper (umask setter)
TOOLS_DESC= Install several tools (svnauthz-validate and mod_dontdothat are among them)
# Patches required for use with the FreeBSD Project repository only
P4_STYLE_MARKERS_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-3way-conflict-markers
ENHANCED_KEYWORD_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-enhanced-keyword
FREEBSD_TEMPLATE_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-fbsd-template
SVNSERVE_WRAPPER_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-svnserve-wrapper
ASVN_RUN_DEPENDS= ${LOCALBASE}/bin/gfind:${PORTSDIR}/misc/findutils
.include "Makefile.common"
SVNREPOS?= /home/svn/repos
SVNFSTYPE?= fsfs
SUB_FILES= pkg-install
.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
SUB_LIST+= SVNSERVE_BIN_EXT=".bin"
.else
SUB_LIST+= SVNSERVE_BIN_EXT=""
.endif
.if ${PORT_OPTIONS:MMOD_DAV_SVN}
FORBIDDEN= Apache modules vulnerability: CVE-2013-4505 CVE-2013-4558 CVE-2014-0032
.endif
.if ${PORT_OPTIONS:MMOD_DAV_SVN}
SUB_LIST+= MOD_DAV_SVN_INSTALL="YES"
PLIST_SUB+= SED=${SED}
SVNGROUP?= www
SVNUSER?= www
.else
SUB_LIST+= MOD_DAV_SVN_INSTALL="NO"
SVNGROUP?= svn
SVNUSER?= svn
.endif
.if ${PORT_OPTIONS:MSTATIC}
PLIST_SUB+= DYNAMIC_ENABLED="@comment "
.else
PLIST_SUB+= DYNAMIC_ENABLED=""
.endif
.if make(repository)
WITH_REPOSITORY_CREATION= yes
.endif
.if defined(WITH_REPOSITORY_CREATION)
MKREPOS_TARGET= _mkrepos
.endif
pre-everything::
@${ECHO_MSG} ""
.if defined(WITH_REPOSITORY_CREATION)
@${ECHO_MSG} "I will create (or use, if it exists) '${SVNUSER}' user and '${SVNGROUP}' group."
@${ECHO_MSG} "Make sure that all committers are its members."
@${ECHO_MSG} ""
@${ECHO_MSG} "Repository will be created at '${SVNREPOS}' with user '${SVNUSER}' and group '${SVNGROUP}'."
@${ECHO_MSG} "Type of repository will be '${SVNFSTYPE}'."
@${ECHO_MSG} "You could change these settings by defining SVNREPOS, SVNGROUP and SVNFSTYPE."
.else
@${ECHO_MSG} "You can have the repository created for you by defining"
@${ECHO_MSG} "WITH_REPOSITORY_CREATION."
@${ECHO_MSG} ""
@${ECHO_MSG} "Make sure that:"
@${ECHO_MSG} "* all your svn users are members of a common group"
@${ECHO_MSG} "* this group is the group id of the db/ and locks/"
@${ECHO_MSG} " subdirectories of your repository"
@${ECHO_MSG} "* the above subdirectories are writable by this group"
.endif
@${ECHO_MSG} ""
.if ${PORT_OPTIONS:MSTATIC}
. if ${PORT_OPTIONS:MMOD_DAV_SVN}
@${ECHO_MSG} "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@${ECHO_MSG} "!!! mod_dav_svn and static build are not compatible !!!"
@${ECHO_MSG} "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@${FALSE}
. endif
. if ${PORT_OPTIONS:MGNOME_KEYRING}
@${ECHO_MSG} "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@${ECHO_MSG} "!!! Gnome Keyring and static build are not compatible !!!"
@${ECHO_MSG} "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@${FALSE}
. endif
. if ${PORT_OPTIONS:MKDE_WALLET}
@${ECHO_MSG} "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@${ECHO_MSG} "!!! KDE Wallet and static build are not compatible !!!"
@${ECHO_MSG} "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@${FALSE}
. endif
@${ECHO_MSG} "Static binaries will be built."
.endif # STATIC
@${ECHO_MSG} "Many useful scripts will be installed into ${DATADIR}"
pre-configure:
.if ${PORT_OPTIONS:MBDB}
@BDB_VERSION=`${APR_APU_DIR}/${APU_CONFIG} --db-version`; \
if [ "$${BDB_VERSION}" != "4" -a "$${BDB_VERSION}" != "5" ] ; then \
${ECHO_MSG} "" ; \
${ECHO_MSG} 'You should build `'"devel/apr1' with Berkeley DB (4 or 5) support to use subversion with it." ; \
${ECHO_MSG} 'Please rebuild `'"devel/apr1' with option "'`'"${OPT_NAME}' and try again." ; \
${ECHO_MSG} "" ; \
${ECHO_MSG} "Or you can disable Berkeley DB support. Only 'fs' repository backend will be available." ; \
${ECHO_MSG} "" ; \
${FALSE} ; \
fi
.endif
post-configure:
# ugly hack: save tools directory so we don't have to cleanup before installing
@${CP} -R ${WRKSRC}/tools ${WRKSRC}/tools.examples
@${CHMOD} -R a-st,o+rX ${WRKSRC}/tools.examples
post-build:
.if ${PORT_OPTIONS:MTOOLS}
@${MAKE} -C ${WRKSRC} tools ${MAKE_ARGS}
.endif
.if ${PORT_OPTIONS:MMOD_DAV_SVN} && ${PORT_OPTIONS:MMOD_DONTDOTHAT}
cd ${WRKSRC}/contrib/server-side/mod_dontdothat && \
${APXS} -c -I${WRKSRC}/subversion/include -L${WRKSRC}/subversion/libsvn_subr/.libs -lsvn_subr-1 mod_dontdothat.c
.endif
post-install: ${MKREPOS_TARGET}
.if ${PORT_OPTIONS:MMOD_DAV_SVN} && ${PORT_OPTIONS:MMOD_DONTDOTHAT}
# install only, activation will be done during installation by pkg-plist
(cd ${WRKSRC}/contrib/server-side/mod_dontdothat && \
${APXS} -S LIBEXECDIR=${STAGEDIR}${PREFIX}/${APACHEMODDIR} -i -n dontdothat mod_dontdothat.la )
.endif
.if ${PORT_OPTIONS:MTOOLS}
@${MAKE} -C ${WRKSRC} install-tools ${MAKE_ARGS}
.endif
@${MKDIR} ${STAGEDIR}${DATADIR}
(cd ${WRKSRC}/tools.examples && ${TAR} --exclude '*.in' -cf - * | ${TAR} -C ${STAGEDIR}${DATADIR} -xof - )
@${MKDIR} ${STAGEDIR}${DOCSDIR}
${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
@${INSTALL_SCRIPT} ${FILESDIR}/svnserve.wrapper ${STAGEDIR}${PREFIX}/bin/svnserve
.endif
.if ${PORT_OPTIONS:MASVN}
${INSTALL_SCRIPT} ${WRKSRC}/contrib/client-side/asvn ${STAGEDIR}${PREFIX}/bin
.endif
# ===============================================================================
repository: _mkrepos
_SVNGRPFILES= db locks locks/db.lock locks/db-logs.lock
_SVNGRPFILES+= dav
SVNGRPFILES= ${_SVNGRPFILES:S,^,${SVNREPOS}/,}
_mkrepos: .USE
.if !exists(${SVNREPOS})
.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
@if /usr/sbin/pw groupshow "${SVNGROUP}" >/dev/null 2>&1; then \
${ECHO_MSG} "You already have a group \"${SVNGROUP}\", so I will use it."; \
else \
if /usr/sbin/pw groupadd ${SVNGROUP} -h -; \
then \
${ECHO_MSG} "Added group \"${SVNGROUP}\"."; \
else \
${ECHO_MSG} "Adding group \"${SVNGROUP}\" failed..."; \
${ECHO_MSG} "Please create it, and try again."; \
${FALSE}; \
fi; \
fi
@if /usr/sbin/pw usershow "${SVNUSER}" >/dev/null 2>&1; then \
${ECHO_MSG} "You already have a user \"${SVNUSER}\", so I will use it."; \
else \
if /usr/sbin/pw useradd ${SVNUSER} -h -; \
then \
${ECHO_MSG} "Added user \"${SVNUSER}\"."; \
else \
${ECHO_MSG} "Adding user \"${SVNUSER}\" failed..."; \
${ECHO_MSG} "Please create it, and try again."; \
${FALSE}; \
fi; \
fi
.endif
@${MKDIR} ${SVNREPOS}
@${PREFIX}/bin/svnadmin create --fs-type ${SVNFSTYPE} ${SVNREPOS}
.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
@${CHOWN} ${SVNUSER}:${SVNGROUP} ${SVNGRPFILES}
@${CHMOD} g+w ${SVNGRPFILES}
@for i in ${SVNREPOS}/db/* ; do \
i=$${i##*/}; \
case $$i in \
DB_CONFIG|fs-type|uuid) ;; \
*) ${CHOWN} -R ${SVNUSER}:${SVNGROUP} ${SVNREPOS}/db/$$i; \
${CHMOD} -R g+w ${SVNREPOS}/db/$$i; \
;; \
esac; \
done
.endif
.endif
svn-build-outputs-hack:
cd ${WRKSRC} && ./gen-make.py --release --installed-libs libsvn_client,libsvn_delta,libsvn_diff,libsvn_fs,libsvn_ra,libsvn_repos,libsvn_subr,libsvn_wc
${MV} ${WRKSRC}/build-outputs.mk ${FILESDIR}/build-outputs.mk
.include <bsd.port.post.mk>