Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > Although I'm on the fence with the approach in 1/5. Should this be a > giant getopt switch statement like that in a helper script? > > An alternative would be to write out a shell file similar to > GIT-BUILD-OPTIONS and source that from this thing. I don't know, > what do you all think? Not really. Why do we iterate over these in a shell loop, rather than having make to figure them out, just like we do when we "loop over the source files and turn them into object files" without using a shell loop? What's so special about enumerating the installation targets and iterating over the enumeration to perform an action on each of them? I think that is the first question we should be asking before patch 1/5, which already assumes that it has been decided that it must be done with a shell loop. I think "first install 'git' itself, and then make these other things derived from it" should let $(MAKE) install things in parallel just like it can naturally do many things in parallel, and the dependency rule to do so should not be so bad, I suspect. This is a tangent, but I have long been wishing that somebody would notice that output during install and (dist)clean without V=1 is so different from the normal targets and do something about it, and hoped that that somebody finally turned out to be you doing so in this series X-<. > I'd like to say it's ready, but I've spotted some fallout: I still have not recovered from the trauma I suffered post 1.6.0 era, so I would rather *not* engage in a long discussion like this one (it is a long thread; reserve a solid hour to read it through if you are interested), https://public-inbox.org/git/alpine.LFD.1.10.0808261435470.3363@xxxxxxxxxxxxxxxxxxxxxxxxxxxx/ which would be needed to defend the choice, if we decide to omit installing the git-foo on disk in a released version. I personally have no objection to offer a knob that can e used to force installation of symlinks without falling back to other methods. I think it would be ideal to do so without special casing symbolic links---rather, it would be ideal if it were a single knob INSTALL_GIT_FOO_METHOD=(symlinks|hardlinks|copies) that says "I want them to be installed as (symlinks|hardlinks|copies), no fallbacks". > Ævar Arnfjörð Bjarmason (5): > Makefile: move long inline shell loops in "install" into helper > Makefile: conform some of the code to our coding standards > Makefile: stop hiding failures during "install" > Makefile: add NO_INSTALL_SYMLINKS_FALLBACK switch > Makefile: Add a NO_INSTALL_BUILTIN_EXECDIR_ALIASES flag > > Makefile | 65 +++++++++++-------------- > install_programs | 124 +++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 151 insertions(+), 38 deletions(-) > create mode 100755 install_programs