diff options
author | Martin Wilke <miwi@FreeBSD.org> | 2010-12-01 08:32:50 +0000 |
---|---|---|
committer | Martin Wilke <miwi@FreeBSD.org> | 2010-12-01 08:32:50 +0000 |
commit | da9e8a04fa52b66c7e05c43f45a7ca814d5a3d8c (patch) | |
tree | 35810c46703aa4ac60dbcdb19b5657f89fb69a6a /Mk/bsd.port.mk | |
parent | 6121c39e60af424c554c61598acb1c2d673f3113 (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.mk | 144 |
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}"; \ |