aboutsummaryrefslogtreecommitdiff
path: root/Mk/bsd.port.mk
diff options
context:
space:
mode:
authorMartin Wilke <miwi@FreeBSD.org>2010-12-01 08:32:50 +0000
committerMartin Wilke <miwi@FreeBSD.org>2010-12-01 08:32:50 +0000
commitda9e8a04fa52b66c7e05c43f45a7ca814d5a3d8c (patch)
tree35810c46703aa4ac60dbcdb19b5657f89fb69a6a /Mk/bsd.port.mk
parent6121c39e60af424c554c61598acb1c2d673f3113 (diff)
- Remove two checks obviated by the removal of _OPTIONSFILE in revision 1.596 [1]
- Remove Legacy USE_BISON in bsd.port.mk [2] - Remove Legacy 2004 Hack in bsd.port.mk [3] - CONFLICT handling in has been reworked. There are two new variables in bsd.ports.mk: - CONFLICTS_BUILDS: Check for conflicts prior to build - CONFLICTS_INSTALL: Check for conflicts prior to installation stage The existing CONFLICTS checks for conflicts prior to build and installation stage. Users could defer the conflict check of CONFLICTS_BUILDS and CONFLICTS to the installation stage by using DEFER_CONFLICTS_CHECK. As already possible with CONFLICTS the new conflict checks could be disabled by using DISABLE_CONFLICTS. This patch was submitted by beat@ PR: ports/149670 [1] ports/151806 [2] [3] Subitted by: bf <bf1783@gmail.com> [1] Eitan Adler <lists@eitanadler.com> [2] [3]
Notes
Notes: svn path=/head/; revision=265503
Diffstat (limited to 'Mk/bsd.port.mk')
-rw-r--r--Mk/bsd.port.mk144
1 files changed, 108 insertions, 36 deletions
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 741ef4e47a45..c25e695a157f 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -371,8 +371,7 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org
# should not be used in Makefile.
##
# USE_BISON - Implies that the port uses bison in one way or another:
-# 'yes' (backwards compatibility) - use bison for building
-# new features: 'build', 'run', 'both', implying build,
+# 'build', 'run', 'both', implying build,
# runtime, and both build/run dependencies
##
# USE_IMAKE - If set, this port uses imake.
@@ -551,6 +550,12 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org
# pattern meta-characters "*", "?", "[", "]", and "!".
# Example: apache*-1.2* apache*-1.3.[012345] apache-*+ssl_*
#
+# CONFLICTS_BUILD
+# - Check conflict prior to the build.
+#
+# CONFLICTS_INSTALL
+# - Check conflict prior to the installation stage.
+#
# Various directory definitions and variables to control them.
# You rarely need to redefine any of these except WRKSRC and NO_WRKSUBDIR.
#
@@ -2040,13 +2045,6 @@ RUN_DEPENDS+= ${_GL_${_component}_RUN_DEPENDS}
.if defined(USE_BISON)
_BISON_DEPENDS= bison:${PORTSDIR}/devel/bison
-# XXX: backwards compatibility
-. if ${USE_BISON:L} == "yes"
-USE_BISON= build
-pre-everything::
- @${ECHO_MSG} "WARNING: USE_BISON=yes deprecated, use build/run/both"
-. endif
-
. if ${USE_BISON:L} == "build"
BUILD_DEPENDS+= ${_BISON_DEPENDS}
. elif ${USE_BISON:L} == "run"
@@ -2501,6 +2499,12 @@ PKG_ARGS+= -o ${PKGORIGIN}
.if defined(CONFLICTS) && !defined(DISABLE_CONFLICTS)
PKG_ARGS+= -C "${CONFLICTS}"
.endif
+.if defined(CONFLICTS_BUILD) && !defined(DISABLE_CONFLICTS)
+PKG_ARGS+= -C "${CONFLICTS_BUILD}"
+.endif
+.if defined(CONFLICTS_INSTALL) && !defined(DISABLE_CONFLICTS)
+PKG_ARGS+= -C "${CONFLICTS_INSTALL}"
+.endif
.endif
.if defined(PKG_NOCOMPRESS)
PKG_SUFX?= .tar
@@ -3077,12 +3081,8 @@ check-makevars::
@${FALSE}
.endif
_MLINKS= ${_MLINKS_PREPEND}
-# XXX 20040119 This next line should read:
-# .for lang in ${MANLANG:S%^%man/%:S%^man/""$%man%}
-# but there is currently a bug in make(1) that prevents the double-quote
-# substitution from working correctly. Once that problem is addressed,
-# and has had a enough time to mature, this hack should be removed.
-.for lang in ${MANLANG:S%^%man/%:S%^man/""$%man%:S%^man/"$%man%}
+
+.for lang in ${MANLANG:S%^%man/%:S%^man/""$%man%}
.for ___pmlinks in ${__pmlinks}
.for __lang in ${lang}
_MLINKS+= ${___pmlinks:S// /g}
@@ -3100,12 +3100,7 @@ _COUNT=1
.endif
.endfor
-# XXX 20040119 This next line should read:
-# .for manlang in ${MANLANG:S%^%man/%:S%^man/""$%man%}
-# but there is currently a bug in make(1) that prevents the double-quote
-# substitution from working correctly. Once that problem is addressed,
-# and has had a enough time to mature, this hack should be removed.
-.for manlang in ${MANLANG:S%^%man/%:S%^man/""$%man%:S%^man/"$%man%}
+.for manlang in ${MANLANG:S%^%man/%:S%^man/""$%man%}
.for sect in 1 2 3 4 5 6 7 8 9 L N
# MAN${sect} is for man pages installed for all languages in MANLANG for a given
@@ -3464,9 +3459,6 @@ options-message:
.endif
.if defined(_OPTIONS_READ)
@${ECHO_MSG} "===> Found saved configuration for ${_OPTIONS_READ}"
-.if ${OPTIONSFILE} != ${OPTIONSFILE}
- @${ECHO_MSG} "===> *** CAUTION *** Using wrong configuration file ${OPTIONSFILE}"
-.endif
.endif
@@ -3826,9 +3818,92 @@ do-build:
# Check conflicts
.if !target(check-conflicts)
-check-conflicts:
-.if defined(CONFLICTS) && !defined(DISABLE_CONFLICTS)
- @found=`${PKG_INFO} -I ${CONFLICTS:C/.+/'&'/} 2>/dev/null | ${AWK} '{print $$1}'`; \
+check-conflicts: check-build-conflicts check-install-conflicts
+.endif
+
+.if !target(check-build-conflicts)
+check-build-conflicts:
+.if ( defined(CONFLICTS) || defined(CONFLICTS_BUILD) ) && !defined(DISABLE_CONFLICTS) && !defined(DEFER_CONFLICTS_CHECK)
+ @found=`${PKG_INFO} -I ${CONFLICTS:C/.+/'&'/} ${CONFLICTS_BUILD:C/.+/'&'/} 2>/dev/null | ${AWK} '{print $$1}'`; \
+ conflicts_with=; \
+ for entry in $${found}; do \
+ if ${PKG_INFO} -e $${entry} ; then \
+ prfx=`${PKG_INFO} -q -p "$${entry}" 2> /dev/null | ${SED} -ne '1s/^@cwd //p'`; \
+ orgn=`${PKG_INFO} -q -o "$${entry}" 2> /dev/null`; \
+ if [ "/${PREFIX}" = "/$${prfx}" -a "/${PKGORIGIN}" != "/$${orgn}" ]; then \
+ conflicts_with="$${conflicts_with} $${entry}"; \
+ fi; \
+ fi; \
+ done; \
+ if [ -n "$${conflicts_with}" ]; then \
+ ${ECHO_MSG}; \
+ ${ECHO_MSG} "===> ${PKGNAME} conflicts with installed package(s): "; \
+ for entry in $${conflicts_with}; do \
+ ${ECHO_MSG} " $${entry}"; \
+ done; \
+ ${ECHO_MSG}; \
+ ${ECHO_MSG} " They will not build together."; \
+ ${ECHO_MSG} " Please remove them first with pkg_delete(1)."; \
+ exit 1; \
+ fi
+.endif
+.endif
+
+.if !target(identify-install-conflicts)
+identify-install-conflicts:
+.if ( defined(CONFLICTS) || defined(CONFLICTS_INSTALL) ) && !defined(DISABLE_CONFLICTS)
+ @found=`${PKG_INFO} -I ${CONFLICTS:C/.+/'&'/} ${CONFLICTS_INSTALL:C/.+/'&'/} 2>/dev/null | ${AWK} '{print $$1}'`; \
+ conflicts_with=; \
+ for entry in $${found}; do \
+ if ${PKG_INFO} -e $${entry} ; then \
+ prfx=`${PKG_INFO} -q -p "$${entry}" 2> /dev/null | ${SED} -ne '1s/^@cwd //p'`; \
+ orgn=`${PKG_INFO} -q -o "$${entry}" 2> /dev/null`; \
+ if [ "/${PREFIX}" = "/$${prfx}" -a "/${PKGORIGIN}" != "/$${orgn}" ]; then \
+ conflicts_with="$${conflicts_with} $${entry}"; \
+ fi; \
+ fi; \
+ done; \
+ if [ -n "$${conflicts_with}" ]; then \
+ ${ECHO_MSG}; \
+ ${ECHO_MSG} "===> ${PKGNAME} conflicts with installed package(s): "; \
+ for entry in $${conflicts_with}; do \
+ ${ECHO_MSG} " $${entry}"; \
+ done; \
+ ${ECHO_MSG}; \
+ ${ECHO_MSG} " They install files into the same place."; \
+ ${ECHO_MSG} " You may want to stop build with Ctrl + C."; \
+ sleep 10; \
+ fi
+.endif
+.endif
+
+.if !target(check-install-conflicts)
+check-install-conflicts:
+.if ( defined(CONFLICTS) || defined(CONFLICTS_INSTALL) || ( defined(CONFLICTS_BUILD) && defined(DEFER_CONFLICTS_CHECK) ) ) && !defined(DISABLE_CONFLICTS)
+.if defined(DEFER_CONFLICTS_CHECK)
+ @found=`${PKG_INFO} -I ${CONFLICTS:C/.+/'&'/} ${CONFLICTS_BUILD:C/.+/'&'/} ${CONFLICTS_INSTALL:C/.+/'&'/} 2>/dev/null | ${AWK} '{print $$1}'`; \
+ conflicts_with=; \
+ for entry in $${found}; do \
+ if ${PKG_INFO} -e $${entry} ; then \
+ prfx=`${PKG_INFO} -q -p "$${entry}" 2> /dev/null | ${SED} -ne '1s/^@cwd //p'`; \
+ orgn=`${PKG_INFO} -q -o "$${entry}" 2> /dev/null`; \
+ if [ "/${PREFIX}" = "/$${prfx}" -a "/${PKGORIGIN}" != "/$${orgn}" ]; then \
+ conflicts_with="$${conflicts_with} $${entry}"; \
+ fi; \
+ fi; \
+ done; \
+ if [ -n "$${conflicts_with}" ]; then \
+ ${ECHO_MSG}; \
+ ${ECHO_MSG} "===> ${PKGNAME} conflicts with installed package(s): "; \
+ for entry in $${conflicts_with}; do \
+ ${ECHO_MSG} " $${entry}"; \
+ done; \
+ ${ECHO_MSG}; \
+ ${ECHO_MSG} " Please remove them first with pkg_delete(1)."; \
+ exit 1; \
+ fi
+.else
+ @found=`${PKG_INFO} -I ${CONFLICTS:C/.+/'&'/} ${CONFLICTS_INSTALL:C/.+/'&'/} 2>/dev/null | ${AWK} '{print $$1}'`; \
conflicts_with=; \
for entry in $${found}; do \
if ${PKG_INFO} -e $${entry} ; then \
@@ -3850,7 +3925,8 @@ check-conflicts:
${ECHO_MSG} " Please remove them first with pkg_delete(1)."; \
exit 1; \
fi
-.endif # CONFLICTS
+.endif # defined(DEFER_CONFLICTS_CHECK)
+.endif
.endif
# Install
@@ -4324,15 +4400,15 @@ _CHROOT_SEQ=
.endif
_SANITY_SEQ= ${_CHROOT_SEQ} pre-everything check-makefile \
check-categories check-makevars check-desktop-entries \
- check-conflicts check-depends check-deprecated \
+ check-depends identify-install-conflicts check-deprecated \
check-vulnerable check-license buildanyway-message \
options-message
_FETCH_DEP= check-sanity
_FETCH_SEQ= fetch-depends pre-fetch pre-fetch-script \
do-fetch post-fetch post-fetch-script
_EXTRACT_DEP= fetch
-_EXTRACT_SEQ= extract-message checksum extract-depends pre-extract \
- pre-extract-script do-extract \
+_EXTRACT_SEQ= check-build-conflicts extract-message checksum extract-depends \
+ pre-extract pre-extract-script do-extract \
post-extract post-extract-script
_PATCH_DEP= extract
_PATCH_SEQ= ask-license patch-message patch-depends patch-dos2unix pre-patch \
@@ -4345,7 +4421,7 @@ _BUILD_DEP= configure
_BUILD_SEQ= build-message pre-build pre-build-script do-build \
post-build post-build-script
_INSTALL_DEP= build
-_INSTALL_SEQ= install-message run-depends lib-depends apply-slist pre-install \
+_INSTALL_SEQ= install-message check-install-conflicts run-depends lib-depends apply-slist pre-install \
pre-install-script generate-plist check-already-installed
_INSTALL_SUSEQ= check-umask install-mtree pre-su-install \
pre-su-install-script create-users-groups do-install \
@@ -5992,10 +6068,6 @@ config:
.if !defined(OPTIONS)
@${ECHO_MSG} "===> No options to configure"
.else
-.if ${OPTIONSFILE} != ${OPTIONSFILE}
- @${ECHO_MSG} "===> Using wrong configuration file ${OPTIONSFILE}"
- @exit 1
-.endif
.if ${UID} != 0 && !defined(INSTALL_AS_USER)
@optionsdir=${OPTIONSFILE}; optionsdir=$${optionsdir%/*}; \
${ECHO_MSG} "===> Switching to root credentials to create $${optionsdir}"; \