I'm trying to work on 9.1, for work. Of course, one of the first things I tried to do was install various of my tools.
make(1) appears to be misbehaving. But I'm not sure enough it isn't PEBKAC to just file a PR. Specifically, I run my "bootstrap the tools" script and everything goes normally until it tries to build a particular program, at which point make: Unclosed substitution for (; missing) make: Unclosed substitution for (; missing) make: "/home/mouse/..local/lib/make/local-prog" line 115: Need an operator make: Unclosed substitution for (; missing) make: Unclosed substitution for (; missing) make: "/home/mouse/..local/lib/make/local-prog" line 121: Need an operator make: Unclosed substitution for (; missing) make: "/home/mouse/..local/lib/make/local-prog" line 125: Need an operator make: Fatal errors encountered -- cannot continue There are exactly two spaces between "for" and "(" on the "Unclosed substitution" lines (verified with hexdump -C). The Makefile in question is CC_ADD = -g BUILDBINS = ccwrapper OBJ_ccwrapper = ccwrapper.o INSTALLMAN = ccwrapper.1 .MAIN: ccwrapper ccwrapper.cat1 .include <local-prog> and make is being run as...well, to let ktrace -t aceinsu tell it: 3662 1 make NAMI "/usr/bin/make" 3662 1 make NAMI "/usr/libexec/ld.elf_so" 3662 1 make ARG "/usr/bin/make" 3662 1 make ARG "-m" 3662 1 make ARG "/home/mouse/..local/lib/make" 3662 1 make ARG "-m" 3662 1 make ARG "/usr/share/mk" (local-prog is the only thing in /home/.mouse/..local/lib/make.) The relevant part of local-prog is (line numbers added, of course - the whole file is on ftp.rodents-montreal.org in /pub/mouse/local/src/makefiles/makefiles-20230221/local-prog in case anyone wants the whole thing): 109 .PHONY: install_dirs_MAN 110 .for x in $(INSTALLMAN) 111 install_files:: $(x:C;^(.*)\.([0-9].*)$$;$(INSTMANDIR)/cat\2/\1.0;) 112 install_dirs:: install_dirs_MAN 113 $(x:C;^(.*)\.([0-9].*)$$;$(INSTMANDIR)/cat\2/\1.0;): \ 114 $(x:C;^.*\.([0-9].*)$$;$(INSTMANDIR)/cat\1;) \ 115 $(x:C;\.([0-9].*)$$;.cat\1;) 116 cp $(x:C;\.([0-9].*)$$;.cat\1;) $(.TARGET) 117 CLEANFILES_ += $(x:C;\.([0-9].*)$$;.cat\1;) 118 .if !exists($(x:C;^.*\.([0-9].*)$$;$(INSTMANDIR)/cat\1;)) && \ 119 !target($(x:C;^.*\.([0-9].*)$$;$(INSTMANDIR)/cat\1;)) 120 install_dirs_MAN:: $(x:C;^.*\.([0-9].*)$$;$(INSTMANDIR)/cat\1;) 121 $(x:C;^.*\.([0-9].*)$$;$(INSTMANDIR)/cat\1;): 122 mkdir -p $(.TARGET) 123 .endif 124 .if !target($(x:C;\.([0-9].*)$$;.cat\1;)) 125 $(x:C;\.([0-9].*)$$;.cat\1;): $(x) 126 nroff -mandoc $(.ALLSRC) > $(.TARGET) || (rm -f $(.TARGET); false) 127 .endif 128 .endfor The same code works with 5.2's make (which, of course, says only moderately little for its correctness...). So, I'm wondering, is this a bug in 9.1's make, or am I doing something wrong here? /~\ The ASCII Mouse \ / Ribbon Campaign X Against HTML mo...@rodents-montreal.org / \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B