Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Building on Solaris, sh problem: empty for loop



In article <20081128110217.GD578%apb-laptoy.apb.alt.za@localhost>,
Alan Barrett  <apb%cequrux.com@localhost> wrote:
>On Fri, 28 Nov 2008, Hubert Feyrer wrote:
>> When crosscompiling from Solaris 10 to NetBSD for the netbsd-5 branch (I 
>> haven't checked -current), running a "nbmake-i386 install" in  
>> src/tests/modules/k_helper gives:
>>
>>      % ~/cvs/src-5/obj.i386/tooldir/bin/nbmake-i386 install                 #
>>      install
>> 
>/usr/homes/feyrer/cvs/src-5/obj.i386/destdir//usr/tests/modules/k_helper/k_helper.kmod
>> ===> for d in ; do
>>      /usr/homes/feyrer/cvs/src-5/obj.i386/tooldir/bin/i386--netbsdelf-install
>>      -U -M /usr/homes/feyrer/cvs/src-5/obj.i386/destdir/METALOG -D
>>      /usr/homes/feyrer/cvs/src-5/obj.i386/destdir -h sha1 -N
>>      /usr/homes/feyrer/cvs/src-5/etc -d $d;  done
>> ===> /usr/xpg4/bin/sh: syntax error at line 1 : `;' unexpected
>
>I can't find the Makefile that includes this code.  Anyway...
>
>> The error is that the shell can't handle an empty list for the "for" loop.
>
>In some shells, this works:
>
>       var="" # empty
>       for foo in $var ; do ... ; done
>
>while this doesn't work:
>
>       for foo in ; do ... ; done
>
>Inside a Makefile, where there are both make variables and shell variables,
>that would translate as follows:
>
>       sometarget: somedependency
>               for d in ${MAKEVAR} ; do ... ; done # fails if MAKEVAR is empty
>
>       sometarget: somedependency
>               shellvar=${MAKEVAR:Q} ; \
>               for d in $$shellvar ; do ... ; done # this should work

That is a lot better.

christos



Home | Main Index | Thread Index | Old Index