'make aborting because zip exits with status 12
make
is halting and reporting an error code of 12 after attempting to zip -u
some files.
The error code 12 is actually an exit status from zip which indicates that it has "nothing to do."
I don't understand why this is a non-zero exit status. Wouldn't it be more appropriate to just let zip quietly do nothing? It doesn't seem like an actual problem if zip has nothing to do.
I could suppress it: tell make
to ignore non-zero exit status from zip by calling -zip -u
. But the problem with that approach is that 12 is the only exit status I want to ignore. All of the others indicate actual problems that would cause me to want to abort make
.
Maybe I could set a variable equal to the output from echo $?
and then test for 0 or 12 but it seems klodgy to do this after every single zip
statement in the .mk file.
Is there an elegant way to handle this?
Solution 1:[1]
Err... As a quick and dirty solution, you can use a shell wrapper:
#!/bin/ksh
zip "$@"
rc=$?
if [[ rc -eq 12 ]]; then
exit 0
fi
exit $rc
Alternatively, you can do almost the same inline in Makefile but it will look somewhat ugly (will have to be a shell one-liner with duplicate $
signs etc.)
Solution 2:[2]
Something like this sounds simpler to me. It returns an error in make if the error code is non-zero and different of 12.
target:
zip -uj file.zip file.csv || [ $$? -eq 12 ]
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Alexander L. Belikoff |
Solution 2 | user3137335 |