From nobody@FreeBSD.org  Thu Sep 22 07:33:55 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id EEE09106564A
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 22 Sep 2011 07:33:55 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id DC7F58FC0C
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 22 Sep 2011 07:33:55 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p8M7XthD001494
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 22 Sep 2011 07:33:55 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id p8M7XtTu001459;
	Thu, 22 Sep 2011 07:33:55 GMT
	(envelope-from nobody)
Message-Id: <201109220733.p8M7XtTu001459@red.freebsd.org>
Date: Thu, 22 Sep 2011 07:33:55 GMT
From: Garrett Cooper <yaneurabeya@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [patch] use getopts, jobs option, delay -c usage improvements to nanobsd.sh
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         160896
>Category:       misc
>Synopsis:       [nanobsd] [patch] use getopts, jobs option, delay -c usage improvements to nanobsd.sh
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    imp
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep 22 07:40:07 UTC 2011
>Closed-Date:    
>Last-Modified:  Sun Feb 03 22:29:31 UTC 2013
>Originator:     Garrett Cooper
>Release:        9.0-BETA2
>Organization:
iXsystems, Inc.
>Environment:
FreeBSD bayonetta.local 9.0-BETA2 FreeBSD 9.0-BETA2 #0 r225653M: Tue Sep 20 08:36:49 PDT 2011     gcooper@bayonetta.local:/usr/obj/usr/src/sys/BAYONETTA  amd64
>Description:
This patch does the following items:

1. Drops getopt in favor of getopts builtin handling. This is preferred as getopt is deprecated by POSIX.
2. Adds a -j option so that users can specify -j via the command line, which is passed to make.
3. Delays the sourcing of the nanobsd config_file so that users can depend on already on internal variables that are set later, like $NANO_MAKE_CONF_BUILD . This makes it possible for developers to depend on this file.

These enhancements were based on some of the code present in the FreeNAS sourcebase.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

Index: tools/tools/nanobsd/nanobsd.sh
===================================================================
--- tools/tools/nanobsd/nanobsd.sh	(revision 225704)
+++ tools/tools/nanobsd/nanobsd.sh	(working copy)
@@ -58,7 +58,7 @@
 #NANO_DISKIMGDIR=""
 
 # Parallel Make
-NANO_PMAKE="make -j 3"
+NANO_PMAKE="make"
 
 # The default name for any image we create.
 NANO_IMGNAME="_.disk.full"
@@ -588,6 +588,8 @@
 	# after the build completed, for instance to copy the finished
 	# image to a more convenient place:
 	# cp ${NANO_DISKIMGDIR}/_.disk.image /home/ftp/pub/nanobsd.disk
+	# The following line is needed to keep bash from barfing on the file.
+	:
 )
 
 #######################################################################
@@ -758,102 +760,103 @@
 # Progress Print
 #	Print $2 at level $1.
 pprint() {
-    if [ "$1" -le $PPLEVEL ]; then
-	runtime=$(( `date +%s` - $NANO_STARTTIME ))
-	printf "%s %.${1}s %s\n" "`date -u -r $runtime +%H:%M:%S`" "#####" "$2" 1>&3
-    fi
+	if [ "$1" -le $PPLEVEL ]; then
+		runtime=$(( $(date +'%s') - ${NANO_STARTTIME} ))
+		printf "%s %.${1}s %s\n" "$(date -u -r $runtime +%H:%M:%S)" "#####" "$2" >&3
+	fi
 }
 
 usage () {
-	(
-	echo "Usage: $0 [-bfiknqvw] [-c config_file]"
-	echo "	-b	suppress builds (both kernel and world)"
-	echo "	-f	suppress code slice extraction"
-	echo "	-i	suppress disk image build"
-	echo "	-k	suppress buildkernel"
-	echo "	-n	add -DNO_CLEAN to buildworld, buildkernel, etc"
-	echo "	-q	make output more quiet"
-	echo "	-v	make output more verbose"
-	echo "	-w	suppress buildworld"
-	echo "	-c	specify config file"
-	) 1>&2
+	cat >&2 <<EOF
+usage: ${0##*/} [-biknqvw] [-c config_file]
+	-b		suppress builds (both kernel and world)
+	-c config_file	config file to use after defining all
+			internal variables.
+	-i		suppress disk image build
+	-j make-jobs	number of make jobs to invoke
+	-k		suppress buildkernel
+	-n		add -DNO_CLEAN to buildworld, buildkernel, etc
+	-q		make output more quiet
+	-v		make output more verbose
+	-w		suppress buildworld
+EOF
 	exit 2
 }
 
 #######################################################################
 # Parse arguments
 
+set +e
+
 do_clean=true
 do_kernel=true
 do_world=true
 do_image=true
 do_copyout_partition=true
+make_jobs=3
+nano_conf=
 
-set +e
-args=`getopt bc:fhiknqvw $*`
-if [ $? -ne 0 ] ; then
-	usage
-	exit 2
-fi
-set -e
-
-set -- $args
-for i
+while getopts 'bc:hij:knqvw' optch
 do
-	case "$i" 
-	in
-	-b)
+	case "$optch" in
+	b)
 		do_world=false
 		do_kernel=false
-		shift
 		;;
-	-k)
-		do_kernel=false
-		shift
+	c)
+		if [ -f "$OPTARG" ]; then
+			nano_conf=$OPTARG
+		fi
 		;;
-	-c)
-		. "$2"
-		shift
-		shift
-		;;
-	-f)
+	f)
 		do_copyout_partition=false
-		shift
 		;;
-	-h)
+	h)
 		usage
 		;;
-	-i)
+	i)
 		do_image=false
-		shift
 		;;
-	-n)
+	j)
+		echo $OPTARG | egrep -q '^[[:digit:]]+$' && [ $OPTARG -gt 0 ]
+		if [ $? -ne 0 ]; then
+			echo "${0##*/}: -j value must be a positive integer."
+			usage
+		fi
+		make_jobs=$OPTARG
+		;;
+	k)
+		do_kernel=false
+		;;
+	n)
 		do_clean=false
-		shift
 		;;
-	-q)
-		PPLEVEL=$(($PPLEVEL - 1))
-		shift
+	q)
+		: $(( PPLEVEL -= 1))
 		;;
-	-v)
-		PPLEVEL=$(($PPLEVEL + 1))
-		shift
+	v)
+		: $(( PPLEVEL += 1))
 		;;
-	-w)
+	w)
 		do_world=false
-		shift
 		;;
-	--)
-		shift
-		break
+	*)
+		usage
+		;;
 	esac
 done
 
+shift $(( $OPTIND - 1 ))
+
 if [ $# -gt 0 ] ; then
-	echo "$0: Extraneous arguments supplied"
+	echo "${0##*/}: extraneous arguments supplied"
 	usage
 fi
 
+NANO_PMAKE="$NANO_PMAKE -j $make_jobs"
+
+set -e
+
 #######################################################################
 # Setup and Export Internal variables
 #
@@ -865,6 +868,11 @@
 NANO_MAKE_CONF_BUILD=${MAKEOBJDIRPREFIX}/make.conf.build
 NANO_MAKE_CONF_INSTALL=${NANO_OBJ}/make.conf.install
 
+if [ -n "$nano_conf" ]; then
+	echo "Sourcing $nano_conf"
+	. "$nano_conf"
+fi
+
 if [ -d ${NANO_TOOLS} ] ; then
 	true
 elif [ -d ${NANO_SRC}/${NANO_TOOLS} ] ; then


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->imp 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Thu Sep 22 07:54:48 UTC 2011 
Responsible-Changed-Why:  
Over to maintainer. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=160896 

From: Mark Linimon <linimon@lonesome.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: conf/160896: [nanobsd] [patch] use getopts, jobs option, delay
 -c usage improvements to nanobsd.sh
Date: Thu, 22 Sep 2011 04:19:21 -0500

 ----- Forwarded message from Warner Losh <imp@bsdimp.com> -----
 
 Date: Thu, 22 Sep 2011 02:57:49 -0600
 From: Warner Losh <imp@bsdimp.com>
 To: linimon@FreeBSD.org
 Cc: freebsd-bugs@FreeBSD.org, Warner Losh <imp@FreeBSD.org>,
 	Garrett Cooper <yaneurabeya@gmail.com>
 Subject: Re: conf/160896: [nanobsd] [patch] use getopts, jobs option, delay -c usage improvements to nanobsd.sh
 X-Mailer: Apple Mail (2.1084)
 
 Rejecting parts of this patch.  Specifically, the delated -c stuff is
 bogusly implemented.  Before the change, you could have multiple -c
 options on the command line.  after this you can't.
 
 Don't like how -j is implemented in this patch.  Need to think about this
 because it breaks some nanobsd config files that specify NANO_PMAKE command.
 
 Other stuff looks good and it, or variations of it, will go in when we're
 out of the freeze.
 
 Warner
 
 ----- End forwarded message -----

From: Mark Linimon <linimon@lonesome.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: conf/160896: [nanobsd] [patch] use getopts, jobs option, delay
 -c usage improvements to nanobsd.sh
Date: Thu, 22 Sep 2011 12:22:55 -0500

 ----- Forwarded message from Garrett Cooper <yaneurabeya@gmail.com> -----
 
 Date: Thu, 22 Sep 2011 08:53:16 -0700
 From: Garrett Cooper <yaneurabeya@gmail.com>
 To: Warner Losh <imp@bsdimp.com>
 Cc: linimon@freebsd.org, freebsd-bugs@freebsd.org,
 	Warner Losh <imp@freebsd.org>
 Subject: Re: conf/160896: [nanobsd] [patch] use getopts, jobs option, delay -c
 	usage improvements to nanobsd.sh
 
 On Thu, Sep 22, 2011 at 1:57 AM, Warner Losh <imp@bsdimp.com> wrote:
 > Rejecting parts of this patch. Specifically, the delated -c stuff is
 > bogusly implemented. Before the change, you could have multiple -c
 > options on the command line. after this you can't.
 
 I'm wouldn't mind doing something like this:
 
 nano_confs
 while getopts '...' optch
 do
     case "$optch" in
     ...
     c)
         nano_confs="$nano_confs $OPTARG"
         ;;
 ...
 
 for nano_conf in $nano_confs; do
     . $nano_confs
 done
 
 The problem I was trying to work around is that (unfortunately) some
 packages code features (ipv6) into the names (take apr for instance),
 which means that the logic in FreeNAS currently always says "build a
 fat image" when $DEBUG == 1.
 
 > Don't like how -j is implemented in this patch. Need to think about
 > this because it breaks some nanobsd config files that specify NANO_PMAKE
 > command.
 
 My concern was that not all of my build machines are homogeneous. I
 have access to some "powerhouse" server machines and some low power
 desktops. FreeNAS had -j8 coded into NANO_PMAKE, but I made it
 variable ($CPUS), but I thought that was a bad idea for what should go
 back into nanobsd (it didn't match the defaults and could cause other
 issues) -- if the default (1) is incorrect, I'm all for bumping it up
 to 3 again. I just wasn't sure why 3 was the chosen default.
 
 > Other stuff looks good and it, or variations of it, will go in when
 > we're out of the freeze.
 
 Thanks for the feedback!
 -Garrett
 
 
 ----- End forwarded message -----

From: Garrett Cooper <yaneurabeya@gmail.com>
To: bug-followup@freebsd.org
Cc:  
Subject: Re: conf/160896: [nanobsd] [patch] use getopts, jobs option, delay
 -c usage improvements to nanobsd.sh
Date: Wed, 26 Oct 2011 16:42:27 -0700 (PDT)

   This message is in MIME format.  The first part should be readable text,
   while the remaining parts are likely unreadable without MIME-aware tools.
 
 --3906089217-1838281929-1319672547=:78649
 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII
 
  	This version of the patch should be more acceptable as it restores 
 the multiple -c specifier functionality.
 Thanks!
 -Garrett
 --3906089217-1838281929-1319672547=:78649
 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=160896.patch
 Content-Transfer-Encoding: BASE64
 Content-ID: <alpine.BSF.2.00.1110261642270.78649@streetfighter.ixsystems.com>
 Content-Description: 
 Content-Disposition: attachment; filename=160896.patch
 
 SW5kZXg6IHRvb2xzL3Rvb2xzL25hbm9ic2QvbmFub2JzZC5zaA0KPT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PQ0KLS0tIHRvb2xzL3Rvb2xzL25hbm9ic2QvbmFu
 b2JzZC5zaAkocmV2aXNpb24gMjI2ODE3KQ0KKysrIHRvb2xzL3Rvb2xzL25h
 bm9ic2QvbmFub2JzZC5zaAkod29ya2luZyBjb3B5KQ0KQEAgLTU4LDcgKzU4
 LDcgQEANCiAjTkFOT19ESVNLSU1HRElSPSIiDQogDQogIyBQYXJhbGxlbCBN
 YWtlDQotTkFOT19QTUFLRT0ibWFrZSAtaiAzIg0KK05BTk9fUE1BS0U9Im1h
 a2UiDQogDQogIyBUaGUgZGVmYXVsdCBuYW1lIGZvciBhbnkgaW1hZ2Ugd2Ug
 Y3JlYXRlLg0KIE5BTk9fSU1HTkFNRT0iXy5kaXNrLmZ1bGwiDQpAQCAtMzAw
 LDI0ICszMDAsMzUgQEANCiBydW5fY3VzdG9taXplKCkgKA0KIA0KIAlwcHJp
 bnQgMiAicnVuIGN1c3RvbWl6ZSBzY3JpcHRzIg0KLQlmb3IgYyBpbiAkTkFO
 T19DVVNUT01JWkUNCisJc2V0IC0tICROQU5PX0NVU1RPTUlaRQ0KKwlpPTAN
 CisJbnVtX3N0ZXBzPSQjDQorCXdoaWxlIFsgJGkgLWx0ICRudW1fc3RlcHMg
 XQ0KIAlkbw0KLQkJcHByaW50IDIgImN1c3RvbWl6ZSBcIiRjXCIiDQorCQlj
 PSQxDQorCQlwcHJpbnQgMiAiWyRpLyRudW1fc3RlcHNdIGN1c3RvbWl6ZSBc
 IiRjXCIiDQogCQlwcHJpbnQgMyAibG9nOiAke05BTk9fT0JKfS9fLmN1c3Qu
 JGMiDQogCQlwcHJpbnQgNCAiYHR5cGUgJGNgIg0KIAkJKCBzZXQgLXggOyAk
 YyApID4gJHtOQU5PX09CSn0vXy5jdXN0LiRjIDI+JjENCisJCXNoaWZ0DQor
 CQk6ICQoKCBpICs9IDEgKSkNCiAJZG9uZQ0KICkNCiANCiBydW5fbGF0ZV9j
 dXN0b21pemUoKSAoDQogDQogCXBwcmludCAyICJydW4gbGF0ZSBjdXN0b21p
 emUgc2NyaXB0cyINCi0JZm9yIGMgaW4gJE5BTk9fTEFURV9DVVNUT01JWkUN
 CisJc2V0IC0tICROQU5PX0xBVEVfQ1VTVE9NSVpFDQorCWk9MA0KKwludW1f
 c3RlcHM9JCMNCisJd2hpbGUgWyAkaSAtbHQgJG51bV9zdGVwcyBdDQogCWRv
 DQotCQlwcHJpbnQgMiAibGF0ZSBjdXN0b21pemUgXCIkY1wiIg0KKwkJcHBy
 aW50IDIgIlskaS8kbnVtX3N0ZXBzXSBsYXRlIGN1c3RvbWl6ZSBcIiRjXCIi
 DQogCQlwcHJpbnQgMyAibG9nOiAke05BTk9fT0JKfS9fLmxhdGVfY3VzdC4k
 YyINCiAJCXBwcmludCA0ICJgdHlwZSAkY2AiDQogCQkoIHNldCAteCA7ICRj
 ICkgPiAke05BTk9fT0JKfS9fLmxhdGVfY3VzdC4kYyAyPiYxDQorCQlzaGlm
 dA0KKwkJOiAkKCggaSArPSAxICkpDQogCWRvbmUNCiApDQogDQpAQCAtNTg4
 LDYgKzU5OSw4IEBADQogCSMgYWZ0ZXIgdGhlIGJ1aWxkIGNvbXBsZXRlZCwg
 Zm9yIGluc3RhbmNlIHRvIGNvcHkgdGhlIGZpbmlzaGVkDQogCSMgaW1hZ2Ug
 dG8gYSBtb3JlIGNvbnZlbmllbnQgcGxhY2U6DQogCSMgY3AgJHtOQU5PX0RJ
 U0tJTUdESVJ9L18uZGlzay5pbWFnZSAvaG9tZS9mdHAvcHViL25hbm9ic2Qu
 ZGlzaw0KKwkjIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBuZWVkZWQgdG8ga2Vl
 cCBiYXNoIGZyb20gYmFyZmluZyBvbiB0aGUgZmlsZS4NCisJOg0KICkNCiAN
 CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTc1OCwxMDIgKzc3
 MSwxMDMgQEANCiAjIFByb2dyZXNzIFByaW50DQogIwlQcmludCAkMiBhdCBs
 ZXZlbCAkMS4NCiBwcHJpbnQoKSB7DQotICAgIGlmIFsgIiQxIiAtbGUgJFBQ
 TEVWRUwgXTsgdGhlbg0KLQlydW50aW1lPSQoKCBgZGF0ZSArJXNgIC0gJE5B
 Tk9fU1RBUlRUSU1FICkpDQotCXByaW50ZiAiJXMgJS4kezF9cyAlc1xuIiAi
 YGRhdGUgLXUgLXIgJHJ1bnRpbWUgKyVIOiVNOiVTYCIgIiMjIyMjIiAiJDIi
 IDE+JjMNCi0gICAgZmkNCisJaWYgWyAiJDEiIC1sZSAkUFBMRVZFTCBdOyB0
 aGVuDQorCQlydW50aW1lPSQoKCAkKGRhdGUgKyclcycpIC0gJHtOQU5PX1NU
 QVJUVElNRX0gKSkNCisJCXByaW50ZiAiJXMgJS4kezF9cyAlc1xuIiAiJChk
 YXRlIC11IC1yICRydW50aW1lICslSDolTTolUykiICIjIyMjIyIgIiQyIiA+
 JjMNCisJZmkNCiB9DQogDQogdXNhZ2UgKCkgew0KLQkoDQotCWVjaG8gIlVz
 YWdlOiAkMCBbLWJmaWtucXZ3XSBbLWMgY29uZmlnX2ZpbGVdIg0KLQllY2hv
 ICIJLWIJc3VwcHJlc3MgYnVpbGRzIChib3RoIGtlcm5lbCBhbmQgd29ybGQp
 Ig0KLQllY2hvICIJLWYJc3VwcHJlc3MgY29kZSBzbGljZSBleHRyYWN0aW9u
 Ig0KLQllY2hvICIJLWkJc3VwcHJlc3MgZGlzayBpbWFnZSBidWlsZCINCi0J
 ZWNobyAiCS1rCXN1cHByZXNzIGJ1aWxka2VybmVsIg0KLQllY2hvICIJLW4J
 YWRkIC1ETk9fQ0xFQU4gdG8gYnVpbGR3b3JsZCwgYnVpbGRrZXJuZWwsIGV0
 YyINCi0JZWNobyAiCS1xCW1ha2Ugb3V0cHV0IG1vcmUgcXVpZXQiDQotCWVj
 aG8gIgktdgltYWtlIG91dHB1dCBtb3JlIHZlcmJvc2UiDQotCWVjaG8gIgkt
 dwlzdXBwcmVzcyBidWlsZHdvcmxkIg0KLQllY2hvICIJLWMJc3BlY2lmeSBj
 b25maWcgZmlsZSINCi0JKSAxPiYyDQorCWNhdCA+JjIgPDxFT0YNCit1c2Fn
 ZTogJHswIyMqL30gWy1iaWtucXZ3XSBbLWMgY29uZmlnX2ZpbGVdDQorCS1i
 CQlzdXBwcmVzcyBidWlsZHMgKGJvdGgga2VybmVsIGFuZCB3b3JsZCkNCisJ
 LWMgY29uZmlnX2ZpbGUJY29uZmlnIGZpbGUgdG8gdXNlIGFmdGVyIGRlZmlu
 aW5nIGFsbA0KKwkJCWludGVybmFsIHZhcmlhYmxlcy4NCisJLWkJCXN1cHBy
 ZXNzIGRpc2sgaW1hZ2UgYnVpbGQNCisJLWogbWFrZS1qb2JzCW51bWJlciBv
 ZiBtYWtlIGpvYnMgdG8gaW52b2tlDQorCS1rCQlzdXBwcmVzcyBidWlsZGtl
 cm5lbA0KKwktbgkJYWRkIC1ETk9fQ0xFQU4gdG8gYnVpbGR3b3JsZCwgYnVp
 bGRrZXJuZWwsIGV0Yw0KKwktcQkJbWFrZSBvdXRwdXQgbW9yZSBxdWlldA0K
 KwktdgkJbWFrZSBvdXRwdXQgbW9yZSB2ZXJib3NlDQorCS13CQlzdXBwcmVz
 cyBidWlsZHdvcmxkDQorRU9GDQogCWV4aXQgMg0KIH0NCiANCiAjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIw0KICMgUGFyc2UgYXJndW1lbnRzDQogDQor
 c2V0ICtlDQorDQogZG9fY2xlYW49dHJ1ZQ0KIGRvX2tlcm5lbD10cnVlDQog
 ZG9fd29ybGQ9dHJ1ZQ0KIGRvX2ltYWdlPXRydWUNCiBkb19jb3B5b3V0X3Bh
 cnRpdGlvbj10cnVlDQorbWFrZV9qb2JzPTMNCituYW5vX2NvbmZzPQ0KIA0K
 LXNldCArZQ0KLWFyZ3M9YGdldG9wdCBiYzpmaGlrbnF2dyAkKmANCi1pZiBb
 ICQ/IC1uZSAwIF0gOyB0aGVuDQotCXVzYWdlDQotCWV4aXQgMg0KLWZpDQot
 c2V0IC1lDQotDQotc2V0IC0tICRhcmdzDQotZm9yIGkNCit3aGlsZSBnZXRv
 cHRzICdiYzpoaWo6a25xdncnIG9wdGNoDQogZG8NCi0JY2FzZSAiJGkiIA0K
 LQlpbg0KLQktYikNCisJY2FzZSAiJG9wdGNoIiBpbg0KKwliKQ0KIAkJZG9f
 d29ybGQ9ZmFsc2UNCiAJCWRvX2tlcm5lbD1mYWxzZQ0KLQkJc2hpZnQNCiAJ
 CTs7DQotCS1rKQ0KLQkJZG9fa2VybmVsPWZhbHNlDQotCQlzaGlmdA0KKwlj
 KQ0KKwkJaWYgWyAtZiAiJE9QVEFSRyIgXTsgdGhlbg0KKwkJCW5hbm9fY29u
 ZnM9IiRuYW5vX2NvbmZzICRPUFRBUkciDQorCQlmaQ0KIAkJOzsNCi0JLWMp
 DQotCQkuICIkMiINCi0JCXNoaWZ0DQotCQlzaGlmdA0KLQkJOzsNCi0JLWYp
 DQorCWYpDQogCQlkb19jb3B5b3V0X3BhcnRpdGlvbj1mYWxzZQ0KLQkJc2hp
 ZnQNCiAJCTs7DQotCS1oKQ0KKwloKQ0KIAkJdXNhZ2UNCiAJCTs7DQotCS1p
 KQ0KKwlpKQ0KIAkJZG9faW1hZ2U9ZmFsc2UNCi0JCXNoaWZ0DQogCQk7Ow0K
 LQktbikNCisJaikNCisJCWVjaG8gJE9QVEFSRyB8IGVncmVwIC1xICdeW1s6
 ZGlnaXQ6XV0rJCcgJiYgWyAkT1BUQVJHIC1ndCAwIF0NCisJCWlmIFsgJD8g
 LW5lIDAgXTsgdGhlbg0KKwkJCWVjaG8gIiR7MCMjKi99OiAtaiB2YWx1ZSBt
 dXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4iDQorCQkJdXNhZ2UNCisJCWZp
 DQorCQltYWtlX2pvYnM9JE9QVEFSRw0KKwkJOzsNCisJaykNCisJCWRvX2tl
 cm5lbD1mYWxzZQ0KKwkJOzsNCisJbikNCiAJCWRvX2NsZWFuPWZhbHNlDQot
 CQlzaGlmdA0KIAkJOzsNCi0JLXEpDQotCQlQUExFVkVMPSQoKCRQUExFVkVM
 IC0gMSkpDQotCQlzaGlmdA0KKwlxKQ0KKwkJOiAkKCggUFBMRVZFTCAtPSAx
 KSkNCiAJCTs7DQotCS12KQ0KLQkJUFBMRVZFTD0kKCgkUFBMRVZFTCArIDEp
 KQ0KLQkJc2hpZnQNCisJdikNCisJCTogJCgoIFBQTEVWRUwgKz0gMSkpDQog
 CQk7Ow0KLQktdykNCisJdykNCiAJCWRvX3dvcmxkPWZhbHNlDQotCQlzaGlm
 dA0KIAkJOzsNCi0JLS0pDQotCQlzaGlmdA0KLQkJYnJlYWsNCisJKikNCisJ
 CXVzYWdlDQorCQk7Ow0KIAllc2FjDQogZG9uZQ0KIA0KK3NoaWZ0ICQoKCAk
 T1BUSU5EIC0gMSApKQ0KKw0KIGlmIFsgJCMgLWd0IDAgXSA7IHRoZW4NCi0J
 ZWNobyAiJDA6IEV4dHJhbmVvdXMgYXJndW1lbnRzIHN1cHBsaWVkIg0KKwll
 Y2hvICIkezAjIyovfTogZXh0cmFuZW91cyBhcmd1bWVudHMgc3VwcGxpZWQi
 DQogCXVzYWdlDQogZmkNCiANCitOQU5PX1BNQUtFPSIkTkFOT19QTUFLRSAt
 aiAkbWFrZV9qb2JzIg0KKw0KK3NldCAtZQ0KKw0KICMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjDQogIyBTZXR1cCBhbmQgRXhwb3J0IEludGVybmFsIHZh
 cmlhYmxlcw0KICMNCkBAIC04NjUsNiArODc5LDExIEBADQogTkFOT19NQUtF
 X0NPTkZfQlVJTEQ9JHtNQUtFT0JKRElSUFJFRklYfS9tYWtlLmNvbmYuYnVp
 bGQNCiBOQU5PX01BS0VfQ09ORl9JTlNUQUxMPSR7TkFOT19PQkp9L21ha2Uu
 Y29uZi5pbnN0YWxsDQogDQorZm9yIG5hbm9fY29uZiBpbiAkbmFub19jb25m
 czsgZG8NCisJZWNobyAiU291cmNpbmcgJG5hbm9fY29uZiINCisJLiAiJG5h
 bm9fY29uZiINCitkb25lDQorDQogaWYgWyAtZCAke05BTk9fVE9PTFN9IF0g
 OyB0aGVuDQogCXRydWUNCiBlbGlmIFsgLWQgJHtOQU5PX1NSQ30vJHtOQU5P
 X1RPT0xTfSBdIDsgdGhlbg0K
 
 --3906089217-1838281929-1319672547=:78649--

From: Garrett Cooper <yaneurabeya@gmail.com>
To: bug-followup@FreeBSD.org, gcooper@ixsystems.com
Cc:  
Subject: Re: conf/160896: [nanobsd] [patch] use getopts, jobs option, delay -c
 usage improvements to nanobsd.sh
Date: Wed, 26 Oct 2011 17:43:45 -0700

 Puck.. I ran into a chicken and egg problem with the MAKEOBJDIRPREFIX,
 where the files get sourced, etc. I'll hardcode the variable for
 make.conf.build in nanobsd/common and shuffle it around in the patch
 once I've build tested things a couple times.
 -Garrett
>Unformatted:
