On Wed, Jan 19, 2005 at 09:23:27AM +0100, Goswin von Brederlow wrote: > Horms <[EMAIL PROTECTED]> writes: > > > On Tue, Jan 18, 2005 at 08:37:21PM +0100, Roberto Suarez Soto wrote: > >> Package: kernel-patch-debian-2.6.9 > >> Version: 2.6.9-5 > >> Severity: normal > >> > >> The file apply/debian (/usr/src/kernel-patches/all/2.6.9/apply/debian > >> in my system) has a bashism in line 160: > >> > >> for base in $((cd $home/series/ && ls -d *) | sort -rnt- -k 2); do > >> > >> I have dash as /bin/sh. So, when I try to apply the patch with > >> "make-kpkg --added-patches debian", it goes like this: > >> > >> /usr/src/kernel-patches/all/2.6.9/apply/debian: 160: Syntax error: Missing > >> '))' > >> > >> I think the solution would be to change the "$(...)" stuff for a > >> backquote block (i.e., "`...`") or to specify /bin/bash as the shell > >> to use with this script. I've opted for the latter, but the former > >> looks prettier :-) > > > > Wow, nobody notices this for months then two in one day. > > I just made a fix for this and sent it to #291039. Could you > > please test out the attached patch and see if it works for you. > > I agree that this is not a good state for things to be in. > > > > -- > > Horms > > > > Index: apply > > =================================================================== > > --- apply (revision 2324) > > +++ apply (working copy) > > @@ -38,7 +38,7 @@ > > } > > > > apply_patch() { > > - patch=$(find_patch $home/$1) > > + patch=`find_patch $home/$1` > > base=$1 > > if uncompress_patch "$patch" | patch -p1 -f -s -t > > --no-backup-if-mismatch; then > > printf "%-${length}s\tOK (+)\n" "$base" > > Nothing wrong with $(). In fact many people prefer $().
I am one of those people. I just assumed dash didn't like it ias it is the only thing suspicous I could see on line 160 > > @@ -139,8 +139,7 @@ > > die "Upstream $target_up doesn't match $upstream!" > > # We don't have that version out yet! > > elif [ ! -n "$target_rev" ] || ( [ "$target_rev" != "$target" ] && [ > > $target_rev -gt $revision ] ); then > > - year=$(($(date +%Y) + 1)) > > - die "Can't patch to nonexistent revision $target_rev (wait until $year)" > > + die "Can't patch to nonexistent revision $target_rev" > > fi > > > > # At this point, we must handle three cases. > > $(( ... )) is a math expression and $() a subshell. Both look fine too > me. Yes, I understand that. But the code is bogus and I took the chance to axe it. > Use $((`date +%Y` + 1)) if you must. Says he who just complained about using `` instead of $() > > @@ -157,7 +156,7 @@ > > exit 0 > > fi > > > > - for base in $((cd $home/series/ && ls -d *) | sort -rnt- -k 2); do > > + for base in `(cd $home/series/ && ls -d *) | sort -rnt- -k 2` do > > srev=${base#*-} > > if [ -n "$srev" ]; then > > if [ $srev -le $current_rev ]; then > > Could that be a bug in dash for mistaking $(( ... ) ... ) as $(( exp > )) construct? That is a possibility to. If so its a dash bug and I guess we don't need to change anything after all, just reassign the bug to dash. Can someone confirm this? > $( (cd $home/series/ && ls -d *) | sort -rnt- -k 2); should work too. > > MfG > Goswin -- Horms -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]