Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Nov 2007 22:20:48 -0500
From:      "Aryeh M. Friedman" <aryeh.friedman@gmail.com>
To:        freebsd-current@freebsd.org
Subject:   PATCH: prevent mergemaster from doing a "make builldworld"
Message-ID:  <4744F590.80702@gmail.com>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------030900060200090107080005
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Patch attached.

- From the new man page:

BUGS
     If run without the -M flag on the "current" source tree as defined in
     development(7) make(1) will be called, even if invocation of
     mergemaster(8) follows immediate after a call to "make buildworld" or
     "make installworld".


The reason for not using a non-flagged workaround is it is not
possible to determine which SOURCEDIR your working in if they are
symlinked back to /FreeBSD/xxx.

- --
Aryeh M. Friedman
Developer, not business, friendly
http://www.flosoft-systems.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHRPWQJ9+1V27SttsRAruBAJ0Qwf4kiycurQfPe3OUKbhS3ClT5gCfSOo2
wD3V2B1z6zIIZ0Wshmq5GkU=
=iTtQ
-----END PGP SIGNATURE-----


--------------030900060200090107080005
Content-Type: text/x-patch;
 name="mergemaster.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="mergemaster.diff"

Index: mergemaster.8
===================================================================
RCS file: /home/ncvs/src/usr.sbin/mergemaster/mergemaster.8,v
retrieving revision 1.36
diff -u -a -u -r1.36 mergemaster.8
--- mergemaster.8	30 Apr 2006 22:09:47 -0000	1.36
+++ mergemaster.8	22 Nov 2007 03:14:02 -0000
@@ -218,6 +218,10 @@
 .Xr make 1 .
 (In other words, where your sources are, but -s was already
 taken.)
+.It Fl M 
+Do not run
+.Xr make 1 
+on any uncompiled sources
 .It Fl t Ar /path/to/temp/root
 Create the temporary root environment in
 .Pa /path/to/temp/root
@@ -405,7 +409,12 @@
 This manual page and the script itself were written by
 .An Douglas Barton Aq DougB@FreeBSD.org .
 .Sh BUGS
-There are no known bugs.
+If run without the -M flag on the "current" source tree as defined in
+.Xr development 7 
+.Xr make 1
+will be called, even if invocation of
+.Xr mergemaster 8
+follows immediate after a call to "make buildworld" or "make installworld".
 Please report any problems,
 comments or suggestions to the author.
 Several of the
Index: mergemaster.sh
===================================================================
RCS file: /home/ncvs/src/usr.sbin/mergemaster/mergemaster.sh,v
retrieving revision 1.54
diff -u -a -u -r1.54 mergemaster.sh
--- mergemaster.sh	29 Apr 2006 18:21:43 -0000	1.54
+++ mergemaster.sh	22 Nov 2007 03:14:02 -0000
@@ -15,7 +15,7 @@
 display_usage () {
   VERSION_NUMBER=`grep "[$]FreeBSD:" $0 | cut -d ' ' -f 4`
   echo "mergemaster version ${VERSION_NUMBER}"
-  echo 'Usage: mergemaster [-scrvahipCP] [-m /path]'
+  echo 'Usage: mergemaster [-scrvahipCMP] [-m /path]'
   echo '         [-t /path] [-d] [-u N] [-w N] [-D /path]'
   echo "Options:"
   echo "  -s  Strict comparison (diff every pair of files)"
@@ -29,6 +29,7 @@
   echo '  -C  Compare local rc.conf variables to the defaults'
   echo '  -P  Preserve files that are overwritten'
   echo "  -m /path/directory  Specify location of source to do the make in"
+  echo "  -M  Do not run make on any unmade source files"
   echo "  -t /path/directory  Specify temp root directory"
   echo "  -d  Add date and time to directory name (e.g., /var/tmp/temproot.`date +%m%d.%H.%M`)"
   echo "  -u N  Specify a numeric umask"
@@ -262,7 +263,7 @@
 
 # Check the command line options
 #
-while getopts ":ascrvhipCPm:t:du:w:D:A:U" COMMAND_LINE_ARGUMENT ; do
+while getopts ":ascrvhipCPMm:t:du:w:D:A:U" COMMAND_LINE_ARGUMENT ; do
   case "${COMMAND_LINE_ARGUMENT}" in
   A)
     ARCHSTRING='MACHINE_ARCH='${OPTARG}
@@ -311,6 +312,9 @@
   m)
     SOURCEDIR=${OPTARG}
     ;;
+  M)
+    NO_MAKE="NO_MAKE"
+    ;;
   t)
     TEMPROOT=${OPTARG}
     ;;
@@ -548,18 +552,21 @@
 
   case "${PRE_WORLD}" in
   '')
-    { cd ${SOURCEDIR} &&
+    { 
+	cd ${SOURCEDIR} &&
       case "${DESTDIR}" in
       '') ;;
       *)
       make DESTDIR=${DESTDIR} ${ARCHSTRING} distrib-dirs
-        ;;
-      esac
-      make DESTDIR=${TEMPROOT} ${ARCHSTRING} distrib-dirs &&
-      MAKEOBJDIRPREFIX=${TEMPROOT}/usr/obj make ${ARCHSTRING} obj &&
-      MAKEOBJDIRPREFIX=${TEMPROOT}/usr/obj make ${ARCHSTRING} all &&
-      MAKEOBJDIRPREFIX=${TEMPROOT}/usr/obj make ${ARCHSTRING} \
-	  DESTDIR=${TEMPROOT} distribution;} ||
+	;;
+	esac
+	if [ ! ${NO_MAKE} ]; then
+	      make DESTDIR=${TEMPROOT} ${ARCHSTRING} distrib-dirs 
+	      MAKEOBJDIRPREFIX=${TEMPROOT}/usr/obj make ${ARCHSTRING} obj 
+	      MAKEOBJDIRPREFIX=${TEMPROOT}/usr/obj make ${ARCHSTRING} all 
+	      MAKEOBJDIRPREFIX=${TEMPROOT}/usr/obj make ${ARCHSTRING} \
+		 DESTDIR=${DESTDIR} distribution; 
+	fi } ||
     { echo '';
      echo "  *** FATAL ERROR: Cannot 'cd' to ${SOURCEDIR} and install files to";
       echo "      the temproot environment";

--------------030900060200090107080005--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4744F590.80702>