{"thread":{"id":"17266","subject":"[PATCH] Makefile: use shell for-loop rather than Make's foreach loop during install","startedAt":"2009-01-20T01:41:40Z","lastAt":"2009-01-20T01:41:40Z","messageCount":1,"participants":["Brandon Casey"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"101202","messageId":"IabvnnitcJMS2DjNwgzy1-XPpTZ5XUD1yCbZhuv3bgnTXi4eLY33JtDkQKLr5q3lh1kyMtC3WfU@cipher.nrlssc.navy.mil","threadId":"17266","inReplyTo":null,"subject":"[PATCH] Makefile: use shell for-loop rather than Make's foreach loop during install","fromName":"Brandon Casey","fromEmail":"casey@nrlssc.navy.mil","sentAt":"2009-01-20T01:41:40Z","receivedAt":"2009-01-20T01:41:40Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"The install target uses a foreach loop to generate a single long shell\ncommand line to handle installation of the built-in git commands.  The\nmaximum length of the argument list varies by platform, and this use of\nforeach quickly grows the length of the argument list.  Current git can\nexceed the default maximum argument list length on IRIX 6.5 of 20480\ndepending on the installation path.\n\nRather than using make's foreach loop to pre-generate the shell command\nline, use a shell for-loop and allow the shell to iterate through each of\nthe built-in commands.\n\nSigned-off-by: Brandon Casey <casey@nrlssc.navy.mil>\n---\n Makefile |   10 ++++++----\n 1 files changed, 6 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 2b873fa..fa6c51c 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1441,10 +1441,12 @@ endif\n \t{ $(RM) \"$$execdir/git-add$X\" && \\\n \t\tln git-add$X \"$$execdir/git-add$X\" 2>/dev/null || \\\n \t\tcp git-add$X \"$$execdir/git-add$X\"; } && \\\n-\t{ $(foreach p,$(filter-out git-add$X,$(BUILT_INS)), $(RM) \"$$execdir/$p\" && \\\n-\t\tln \"$$execdir/git-add$X\" \"$$execdir/$p\" 2>/dev/null || \\\n-\t\tln -s \"git-add$X\" \"$$execdir/$p\" 2>/dev/null || \\\n-\t\tcp \"$$execdir/git-add$X\" \"$$execdir/$p\" || exit;) } && \\\n+\t{ for p in $(filter-out git-add$X,$(BUILT_INS)); do \\\n+\t\t$(RM) \"$$execdir/$$p\" && \\\n+\t\tln \"$$execdir/git-add$X\" \"$$execdir/$$p\" 2>/dev/null || \\\n+\t\tln -s \"git-add$X\" \"$$execdir/$$p\" 2>/dev/null || \\\n+\t\tcp \"$$execdir/git-add$X\" \"$$execdir/$$p\" || exit; \\\n+\t  done } && \\\n \t./check_bindir \"z$$bindir\" \"z$$execdir\" \"$$bindir/git-add$X\"\n \n install-doc:\n-- \n1.6.1.239.gcf3bf\n"}]}