Subject: Re: nbmake-xxx failed on OpenBSD
To: Simon J. Gerraty <sjg@crufty.net>
From: Tetsuya Isaki <isaki@par.odn.ne.jp>
List: tech-toolchain
Date: 02/11/2005 18:36:38
I got a message (from OpenBSD guy?).

According to him, it solves
 set +o braceexpand
or
 set -o posix

Therefore, It solved for me as follows.
May I commit this?

--- build.sh    10 Feb 2005 06:42:46 -0000      1.1.1.1
+++ build.sh    11 Feb 2005 09:20:00 -0000
@@ -844,6 +844,14 @@
                makewrapout=">>\${makewrapper}"
        fi
 
+       case "${uname_s}" in
+       OpenBSD)
+               set +o braceexpand
+               ;;
+       *)
+               ;;
+       esac
+
        eval cat <<EOF ${makewrapout}
 #! /bin/sh
 # Set proper variables to allow easy "make" building of a NetBSD subtree.

---
Tetsuya ISAKI <isaki@par.odn.ne.jp / isaki@NetBSD.org>

At Fri, 11 Feb 2005 16:41:22 +0900,
Tetsuya Isaki wrote:
> 
> Hi,
> 
> I'm sorry, which Makefile should I put into ?
> ---
> Tetsuya Isaki <isaki@par.odn.ne.jp / isaki@NetBSD.org>
> 
> At Thu, 10 Feb 2005 22:24:11 -0800,
> Simon J. Gerraty wrote:
> > 
> > Cool, so it looks like a shell bug.
> > 
> > You should be able to build the NetBSD shell or pdksh, and tell bmake 
> > to use that. eg.
> > 
> > .SHELL: name=ksh path=/bin/ksh hasErrCtl=true check="set -e" ignore="set +e" quiet="set +v" filter="set +v" echo="set -v" echoFlag=v errFlag=e
> > 
> > Hope that helps.
> > --sjg
> > 
> > On Sun, 06 Feb 2005 14:13:48 +0900, Tetsuya Isaki writes:
> > >Hi,
> > >
> > >At Sat,  5 Feb 2005 09:08:42 -0800 (PST),
> > >Simon J. Gerraty wrote:
> > >> 
> > >> >I'm trying to build netbsd-2-0 on OpenBSD/i386-3.6.
> > >> >But MAKEOBJDIR in tools/bin/nbmake-xxx is broken.
> > >> 
> > >> >It seems different interpretation for ','(comma) in
> > >> >variable?  I'm not sure especially '+'(plus) is good
> > >> >separator or not..  Anyway this patch works fine for
> > >> >me.
> > >> 
> > >> First, can we establish that your shell is doing it's part:
> > >> What do you get for the following script:
> > >> 
> > >> TOP=/my/src
> > >> OPTARG=/my/obj
> > >> 
> > >> setmakeenv()
> > >> {
> > >>     set -x
> > >>     eval "$1='$2'; export $1"
> > >>     makeenv="${makeenv} $1"
> > >> }
> > >> 
> > >> setmakeenv MAKEOBJDIR "\${.CURDIR:C,^$TOP,$OPTARG,}"
> > >> 
> > >> If I run that with sh, ksh on Net or Free (plus bash and zsh) I see:
> > >> 
> > >> MAKEOBJDIR=${.CURDIR:C,^/my/src,/my/obj,}
> > >
> > >Your script show the same result both OpenBSD and NetBSD.
> > >But I got different result by the following script.
> > >
> > >% cat a
> > >#! /usr/bin/env sh
> > >TOP=/my/src
> > >OPTARG=/my/obj
> > >
> > >setmakeenv()
> > >{
> > >    set -x
> > >    eval "$1='$2'; export $1"
> > >    makeenv="${makeenv} $1"
> > >}
> > >
> > >setmakeenv MAKEOBJDIR "\${.CURDIR:C,^$TOP,$OPTARG,}"
> > >
> > >f=MAKEOBJDIR
> > >eval echo "${f}=\'\$$(echo ${f})\'\;\ export\ ${f}"
> > >%
> > >
> > >(On NetBSD 2.0_RC4)
> > >% uname -a
> > >NetBSD mai.xxxxxxxxxxxxxxxx.jp 2.0_RC4 NetBSD 2.0_RC4 (MAI) #2: Thu Jan  6 11:
> > >46:11 JST 2005  root@mai.xxxxxxxxxxxxxxxx.jp:/usr/src/sys/arch/i386/compile/MA
> > >I i386
> > >% ./a
> > >+ eval MAKEOBJDIR='${.CURDIR:C,^/my/src,/my/obj,}'; export MAKEOBJDIR
> > >+ MAKEOBJDIR=${.CURDIR:C,^/my/src,/my/obj,}
> > >+ export MAKEOBJDIR
> > >+ makeenv= MAKEOBJDIR
> > >+ f=MAKEOBJDIR
> > >+ echo MAKEOBJDIR
> > >+ eval echo MAKEOBJDIR=\'$MAKEOBJDIR\'\;\ export\ MAKEOBJDIR
> > >+ echo MAKEOBJDIR='${.CURDIR:C,^/my/src,/my/obj,}'; export MAKEOBJDIR
> > >MAKEOBJDIR='${.CURDIR:C,^/my/src,/my/obj,}'; export MAKEOBJDIR
> > >% 
> > >
> > >(On OpenBSD 3.6)
> > >% ./a
> > >+ eval MAKEOBJDIR='${.CURDIR:C,^/my/src,/my/obj,}'; export MAKEOBJDIR
> > >+ MAKEOBJDIR=${.CURDIR:C,^/my/src,/my/obj,}
> > >+ export MAKEOBJDIR
> > >+ makeenv= MAKEOBJDIR
> > >MAKEOBJDIR='$.CURDIR:C'; export MAKEOBJDIR MAKEOBJDIR='$^/my/src'; export MAKE
> > >OBJDIR MAKEOBJDIR='$/my/obj'; export MAKEOBJDIR MAKEOBJDIR='$'; export MAKEOBJ
> > >DIR
> > >% 
> > >---
> > >Tetsuya ISAKI <isaki@par.odn.ne.jp / isaki@NetBSD.org>