Patch below adds support of a BUILD_BROKES_WHEN_INSTALLED variable. If 
this variable is set, port's building process will be prohibited if some 
version of port is already installed. Glib2 is a good example of a port 
needs such prohibition.

No manpage changes yet, I want to get response for the idea first.

-- 
  Best wishes,
    Vadim Zhukov


--- bsd.port.mk 12 Apr 2008 13:04:21 -0000      1.926
+++ bsd.port.mk 25 Apr 2008 13:24:52 -0000
@@ -80,7 +80,7 @@
 _ALL_VARIABLES ?= HOMEPAGE DISTNAME BUILD_DEPENDS RUN_DEPENDS \
        REGRESS_DEPENDS USE_GMAKE MODULES FLAVORS \
        NO_BUILD NO_REGRESS SHARED_ONLY ONLY_FOR_ARCHS IS_INTERACTIVE \
-       BROKEN MULTI_PACKAGES PSEUDO_FLAVORS \
+       BROKEN BUILD_BROKES_WHEN_INSTALLED MULTI_PACKAGES PSEUDO_FLAVORS \
        REGRESS_IS_INTERACTIVE DISTFILES DIST_SUBDIR \
        PERMIT_DISTFILES_CDROM PERMIT_DISTFILES_FTP \
        CONFIGURE_STYLE USE_LIBTOOL SEPARATE_BUILD \
@@ -259,6 +259,7 @@
 
 SHARED_ONLY ?= No
 SEPARATE_BUILD ?= No
+BUILD_BROKES_WHEN_INSTALLED ?= No
 
 DIST_SUBDIR ?=
 
@@ -2096,6 +2097,18 @@
 ${_BUILD_COOKIE}: ${_CONFIGURE_COOKIE}
 .if ${NO_BUILD:L} == "no"
        @${ECHO_MSG} "===>  Building for ${FULLPKGNAME}${_MASTER}"
+.if ${BUILD_BROKES_WHEN_INSTALLED:L} == "yes"
+.for S in ${MULTI_PACKAGES}
+       @if 
INSTALLED_VERSIONS="`${_PKG_QUERY} '${FULLPKGNAME${S}:C/-[0-9].*//g}-*'`"; 
then \
+               echo ""; \
+               echo "*** Making this port brokes when another version is 
installed."; 
\
+               echo "*** Please, uninstall corresponding package(-s) first:"; \
+               echo "*** $$INSTALLED_VERSIONS"; \
+               echo ""; \
+               false; \
+       else true; fi
+.endfor
+.endif
 .if ${VMEM_WARNING:L} == "yes"
        @echo ""; \
        echo "*** WARNING: you may see an error such as"; \

Reply via email to