Improve xdt-autogen
At first, I modified this script locally to be able to build when paths contain whitespaces.
Then, I tried to make these changes cleaner (keeping a strictly posix script, which seems to be a constraint here), and finally, this led me to do a fairly complete review of the script:
- quoting;
- backticks ->
$()
- do not use subshells when unneeded;
-
tr | sed
orsed | tr
->sed
; - some defensive programming techniques (some from shellcheck);
- readability.
So I decided to share this, even if xdt-autogen.in
appears in .gitignore
(actually, it is still tracked: a forgotten git rm --cached scripts/xdt-autogen.in
?)
Apart the case of paths containing whitespaces, the only modification that should change the behavior of the script is the following:
tr '\\n\\t\\\\' ' '
changed to sed 's|\\[\\nt]| |g'
This is not the same, and I think the first code is wrong, due to a misunderstanding of how tr
works (hope it is not a misunderstanding on my part!
Regarding whitespaces (and more generally special characters in filenames), I changed the filename separator from ' '
to '\1'
in lookup_configure_ac_*()
, and I used a permutation of the value of the IFS
special variable around for
loops.
It is almost sufficient, except for running $XDT_PROG_ACLOCAL
, where one has to define two new variables ACLOCAL_DIR_?
and use conditional parameter expansion to properly build the command line.