I don't know why updating your system made a difference, but this is almost certainly related to a bug in gnulib (that GNU make uses).
If you add a semicolon to the end of the docker
command line in the single
target I'll bet it will work again.
The bug is this: if some directory on your PATH
contains a subdirectory with the name of a command you want to invoke, then if make
attempts to run that command directly (without using a shell) it will fail because it tries to "run" that directory. So for example if you have /my/dir
in PATH
and the directory /my/dir/docker/.
exists, you will get this error (for simple docker
commands).
The "double" target works because (due to the {{
) make's trivial parser decides that this command it not "simple enough" to parse directly, and it runs the shell to do it; the shell doesn't get confused by that directory.
You can (1) add the semicolon as above, or (2) figure out why some directory on your PATH
contains a docker
subdirectory and remove it.
The next release of GNU make (probably released by the end of the month) will fix this issue (includes a newer version of the gnulib module, with the fix).