[PATCH v2 00/10] Makefile: make generate-cmdlist.sh much faster
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Oct 22, 2021, 19:36 UTC
- Message-ID
- <cover-v2-00.10-00000000000-20211022T193027Z-avarab@gmail.com>
- In-Reply-To
- <cover-0.8-00000000000-20211020T183533Z-avarab@gmail.com>
This version of this series drops the Makefile-powered version of the cmdlist in favor of making the shellscript much faster, mostly with suggestions from Jeff King.
I still think that splitting out the generated data into files may be useful for unifying the Documentation/ and C code build processes, there's another custom parser for command-list.txt in Documentation/cmd-list.perl.
But if and when I've got something for that I can dig that out of the v1, in the meantime the v1 of this should be mostly uncontroversial.
The last tow patches make things a bit slower for me, but since they replace command invocations with pure-shell logic they presumably make things a bit less painful on e.g. Windows, and the 8th patch here already made things quite very fast already.
Jeff King (1): generate-cmdlist.sh: do not shell out to "sed"
Johannes Sixt (2): generate-cmdlist.sh: spawn fewer processes generate-cmdlist.sh: replace for loop by printf's auto-repeat feature
Ævar Arnfjörð Bjarmason (7): command-list.txt: sort with "LC_ALL=C sort" generate-cmdlist.sh: trivial whitespace change generate-cmdlist.sh: don't call get_categories() from category_list() generate-cmdlist.sh: run "grep | sort", not "sort | grep" generate-cmdlist.sh: stop sorting category lines generate-cmdlist.sh: replace "grep' invocation with a shell version generate-cmdlist.sh: replace "cut", "tr" and "grep" with pure-shell
command-list.txt | 20 +++++++------- generate-cmdlist.sh | 66 ++++++++++++++++++++++++++------------------- 2 files changed, 48 insertions(+), 38 deletions(-)
Range-diff against v1: 1: 96885282988 = 1: 96885282988 command-list.txt: sort with "LC_ALL=C sort" 2: 5e8fef90e42 = 2: 5e8fef90e42 generate-cmdlist.sh: trivial whitespace change 3: 6b4de6a6088 = 3: 6b4de6a6088 generate-cmdlist.sh: spawn fewer processes 4: 074685cf714 = 4: 074685cf714 generate-cmdlist.sh: don't call get_categories() from category_list() 5: f01c1fd8088 = 5: f01c1fd8088 generate-cmdlist.sh: run "grep | sort", not "sort | grep" 6: e0b11514b8d = 6: e0b11514b8d generate-cmdlist.sh: replace for loop by printf's auto-repeat feature 7: 0c6f9b80d3b < -: ----------- Makefile: stop having command-list.h depend on a wildcard 8: 23d4cc77b6c < -: ----------- Makefile: assert correct generate-cmdlist.sh output -: ----------- > 7: f2f37c2963b generate-cmdlist.sh: stop sorting category lines -: ----------- > 8: 83318d6c0da generate-cmdlist.sh: do not shell out to "sed" -: ----------- > 9: 7903dd1f8c2 generate-cmdlist.sh: replace "grep' invocation with a shell version -: ----------- > 10: e10a43756d1 generate-cmdlist.sh: replace "cut", "tr" and "grep" with pure-shell
-- 2.33.1.1505.g075a284c562