-
-
Notifications
You must be signed in to change notification settings - Fork 13.2k
mandoc: install the libmandoc library #250236
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
base: main
Are you sure you want to change the base?
Conversation
This commit adds the libmandoc library as an installation target to the mandoc formula. It has to be manually installed via the `lib-install` target, because `install` only installs the binaries.
| ENV.deparallelize do | ||
| system "make" | ||
| system "make", "install" | ||
| system "make", "lib-install" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We do not ship static-only libraries
https://docs.brew.sh/Acceptable-Formulae#shared-vs-static-libraries
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is avoided, but if there is no option and is required by others, then I think we could.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What would use it though? Even upstream discourages using that API, recommending simply invoking mandoc instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am currently working on a roff toolchain in Rust. As far as I am aware, libmandoc is the only library that exists for the purpose.
I get your point, but given the monopoly of the library, I disagree.
Besides, I am using it to get an AST. While the mandoc program offers -Ttree, parsing this is rather inconvenient compared to a C tree structure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think if upstream actively tells people not to use the library, we shouldn't ship either.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I disagree.
To me, what upstream is trying to imply is an eternal zerover and we do ship zerover things too.
Besides, development in mandoc is fairly slow these days, last release has been done 4 years ago.
Its not dead, the CVS repo has activity, but the release cycle is slow.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For that reason, using that interface is not particularly recommended. If possible for the intended purpose, it is preferable and certainly much more robust to fork and execute a mandoc(1) child process.
I don't think this is "telling people not to use it".
I think this is a case where we should install the library, avoid using it ourselves and provide a caveat instead. Perhaps we install to libexec or something if we want to make it hard for us to use it ourselves.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FWIW, Linuxland is fairly undecided here.
Alpine for example packages it, Void Linux does not, and Debian does the Debian way by offering libmandoc-dev.
I think the decision of people to not package stems more from not knowing it exists, rather than actively refusing to, but that is an assumption, given the fact that it is rarely used.
This commit adds the libmandoc library as an installation target to the mandoc formula. It has to be manually installed via the
lib-installtarget, becauseinstallonly installs the binaries.HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>, where<formula>is the name of the formula you're submitting?brew test <formula>, where<formula>is the name of the formula you're submitting?brew audit --strict <formula>(after doingHOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>)? If this is a new formula, does it passbrew audit --new <formula>?