[build2] Installation of legal documentation (LICENSE, etc)

Boris Kolpackov boris at codesynthesis.com
Wed Jul 15 16:29:44 UTC 2020

Sorry for the delay in getting back to you on this (and I am still
going to comment on that re-link issue you've submitted, probably
after the release though).

Matthew Krupcale <mkrupcale at matthewkrupcale.com> writes:

> Is there a reason for using angle brackets to do the command-line
> variable substitution? Since it's on the shell, I can see how $project
> might be confusing. On the other hand, since < and > also have shell
> semantics (i.e. redirection), the argument must be shell quoted as
> well as indicated in [2].
> So maybe quoting like
> b config.install.libexec='exec_root/lib/$project/'
> wouldn't be so bad. It would then be consistent with the buildfile
> variable syntax.

The fact that it would be consistent with the buildfile syntax is
actually a problem since these values are persisted in config.build.
If we were to use `$` then those values would have to be quoted which
makes the whole thing quite hairy (and also confusing since it now
looks like those are expanded during config.build loading, which is
not the case). In fact, initially it was @project@ but that also
would have required quoting.

So in the end we've settled on <project>. I think such an unusual
syntax is a good choice since it's a very ad hoc kind of processing.
The fact that the `<>` characters have shell meaning is actually a
good thing since they are unlikely to be used as filesystem names (and
are illegal in Windows paths). If you want to specify a config.install.*
path that contains `<`, it will have to be escaped:

b config.install.root='/tmp/<<strange-choice>/'

Makes sense?

More information about the users mailing list