-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: ascii version of manpage without nroff #13047
Conversation
I'm trying hard to figure out what exactly it is that fails in the cmake + MSVC jobs on AppVeyor... 😕 And nowhere else. |
The error message from cd2nroff: The command is invoked by cmake where it provides a long list of |
... without using nroff. - build src/tool_hugegelp.c from the ascii manpage - move the the manpage and the ascii version build to docs/cmdline-opts - remove all use of nroff from the build process The ascii version of the manpage: - is built with gen.pl, just like the manpage is - has a right-justified column making the appearance similar to the previous version - uses a 4-space indent per level - does not do hyphenation of words (which nroff does)
an attempt to please appveyor
Use a plain array and puts() every line, also allows us to provide the strings without newlines. - merge blank lines into the next one as a prefixed newline. - turn eight consecutive spaces into a tab (since they can only be on the left side of text)
The latest test in this PR that seems to have made the build work again is a partial revert of 2620aa9 that @vszakats did. It seems as if the very long command line from cmake is problematic? What I can't explain is if why that suddenly would become a problem in this PR, nor why it does not fail more reliably. The command line in question is over 10,000 characters long and Windows is often said to have an 8K limit (?). The change in this PR converts that make to single script invokes for each conversion. |
…roblem better" This reverts commit debf8b1.
To avoid that, maybe |
I can't see why not. Generating them all in a single invoke makes it ineffective dependency wise as then it will rebuild them all even if only one is changed, but especially on Windows generating them all like that will likely be noticeably faster when all of them need to be rendered. I will however not try to do this within this PR as it seems unrelated. We could of course argue that my revert is also unrelated, but I could not get this PR to build clean on appveyor without that! |
Use a plain array and puts() every line, also allows us to provide the strings without ending newlines. - merge blank lines into the next one as a prefixed newline. - turn eight consecutive spaces into a tab (since they can only be on the left side of text) - the newly generated tool_hugehelp is 3K lines shorter and 50K smaller - modifies the top logo layout a little by reducing the indent Closes #13047
So far so good: https://github.com/curl/curl-for-win/actions/runs/8176058376 I'll re-compare the generated vs distributed |
nroff no longer used with v8.7.0: curl/curl#13047 On a local machine, building the manual takes a long time relative to other build steps: (in seconds) configure: 8 build curl manual: 17 build curl/libcurl: 4 post-process: 5 launching wine: 11 Likely also noticable in CI. Esp. on aggregate. For now I keep the local hack to use the pre-built manual when available. This helps with CI times. We can improve this later by: 1. a dev options to disable the manual fully (for local builds, which often use a Git sandbox without the pre-built manual) 2. making manual generation faster 3. fixup cmake to allow enabling the `--manual` option without rebuilding the manual if a pre-built one exists, _without_ our local hack of copying files around.
This time limit the number of files per command to avoid exceeding limitations of certain OS/shell envs. Such known env is Windows with the `cmd.exe` shell, which features an 8K limit to this day. Allowlisting `UNIX` to have no limit and using a limit of 200 for other envs to be safe. If there is a way to detect `cmd.exe` and/or we know which precise envs are sensitive to this, we can tweak these conditions further. Even with the low limit, this patch reduces external commands by 200x, making builds much faster. Ref: curl#13047 Ref: curl#12762 2620aa9 Closes #xxxxx
docs was added to SUBDIRS in curl#13047, so having it in install-data-hook is now redundant and causes make to install docs twice. After removing it, both conditional recipes are identical, so drop the conditional.
This time limit the number of files per command to avoid exceeding limitations of certain OS/shell envs. Such known env is Windows with the `cmd.exe` shell, which features an 8K command-line length limit to this day. Allowlisting `UNIX` to have no limit and using a limit of 200 for other envs to be safe. If there is a way to detect `cmd.exe` and/or we know which precise envs are sensitive to this, we can tweak these conditions further. Even with the low limit, this patch reduces external commands by 200x, making builds much faster. Ref: #12762 2620aa9 (initial) Ref: #13047 f03c856 (revert) Reviewed-by: Daniel Stenberg Closes #13207
prepare fix source dependency for `tool_hugehelp.c` Also: tidy up order of a nearby dependency list. Follow-up to f03c856 curl#13047
create ascii version of the manpage without nroff
The ascii version of the manpage:
history
We first made the curl build use nroff for building the hugehelp file in December 1998, for curl 5.2.
curl -M
sampleThis is what the top of new version looks like in my terminal: