Skip to content

Docs: note the macOS Homebrew step is skippable for C-only projects - #6687

Merged
Fedr merged 2 commits into
masterfrom
agent/mlib-macos-brew-step-scope
Aug 26, 2026
Merged

Docs: note the macOS Homebrew step is skippable for C-only projects#6687
Fedr merged 2 commits into
masterfrom
agent/mlib-macos-brew-step-scope

Conversation

@meshinspector-agent

@meshinspector-agent meshinspector-agent Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Net diff vs master: two added sentences and one deleted one, all in doxygen/.

What changed

  • CSetupGuide.dox:87 — master's Homebrew sentence kept verbatim, plus "Skip this step if your project only uses the C interface."
  • CppSetupGuide.dox:226 — same shape, plus "Skip this step if your project only uses the C bindings."
  • CppSetupGuide.dox, Verify the installation step — removed "A non-zero exit here usually means the Homebrew requirements above are missing." Homebrew is not what makes meshconv --help fail.

Why a C-only consumer can skip it: MRMeshConfig.cmake.in calls find_dependency(Boost 1.73) plus seven more, so a C++ consumer fails at configure without the formulae, while MeshLibC2Config.cmake.in declares none and source/MeshLibC2/CMakeLists.txt:39 links its deps PRIVATE. The macOS row of the troubleshooting table (CppSetupGuide.dox:441) already documents that configure-time failure, so nothing was added there.

Verification

  • Doxygen 1.14.0 — the version update-docs.yml installs, run over doxygen/general_pages, doxygen/examples, doxygen/common_files: exit 0, warning log byte-identical to master's (62 lines both).
  • Rendered HTML inspected on MeshLibCSetupGuide.html / MeshLibCppSetupGuide.html — both paragraphs read as intended, \ref CppSetupMacOSPrereq "Prerequisites" still resolves, and the numbered step survives the deletion.
  • CMake claims re-checked at master against MRMeshConfig.cmake.in, MeshLibC2Config.cmake.in, source/MeshLibC2/CMakeLists.txt.
  • Not run: no build or viewer drive — the diff is doxygen/-only (hence update-doc-only), so nothing is compiled or runtime-observable. The full site build (MeshInspector.github.io/scripts/update_doc.sh) needs CI-only binding artifacts and is not reproducible here.

Both setup guides justified the `xargs brew install` step by claiming the
.pkg leaves MeshLib's Homebrew dylibs unresolved. It doesn't:
distribution_apple.sh runs macos_bundle_dylibs.py, which copies every
Homebrew dylib into the framework and rewrites the load commands. The
step is really a configure-time C++ requirement (MRMeshConfig.cmake's
find_dependency chain), which a C-only consumer never hits because
MeshLibC2Config.cmake declares no dependencies.
@meshinspector-agent meshinspector-agent Bot added the update-doc-only force update dev documentation (without any checks) label Aug 26, 2026
Comment thread doxygen/general_pages/CSetupGuide.dox Outdated
- The framework is installed into `/Library/Frameworks/MeshLib.framework`, or into `~/Library/Frameworks/MeshLib.framework` if you choose to install for the current user only.
- **Install Dependencies via Homebrew**
\n The `.pkg` does not pull in the Homebrew formulae MeshLib links against, so install them yourself. This needs [Homebrew](https://brew.sh/) — install it first if you do not have it. Open Terminal and run the following command:
\n Needed only if your project also compiles C++ against MeshLib's C++ headers: `MRMeshConfig.cmake` resolves Boost, TBB and six more via `find_dependency`, so CMake configuration fails without them. A C-only project can skip this step — `MeshLibC2Config.cmake` declares no dependencies, and the framework carries the Homebrew dylibs its binaries load. The step needs [Homebrew](https://brew.sh/) — install it first if you do not have it. Open Terminal and run the following command:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explanation is too long. Preserve the original working as much as possible here, just add that this step can be skipped if you only use the C interface.

Comment thread doxygen/general_pages/CppSetupGuide.dox Outdated
/Library/Frameworks/MeshLib.framework/Versions/Current/bin/meshconv --help
\endcode
\n A non-zero exit here usually means the Homebrew requirements above are missing.
\n A non-zero exit here points at the install itself — a wrong path, or a `.pkg` built for the other architecture. The Homebrew requirements are not involved: the framework carries the Homebrew dylibs its binaries load.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If homebrew is unrelated, don't mention it. Perphaps remove this entire paragraph.

Comment thread doxygen/general_pages/CppSetupGuide.dox Outdated
- The framework is installed into `/Library/Frameworks/MeshLib.framework`, or into `~/Library/Frameworks/MeshLib.framework` if you choose to install for the current user only.
- **Install Dependencies via Homebrew**
\n The `.pkg` does not pull in the Homebrew formulae MeshLib links against, so install them yourself. This needs Homebrew — if you do not have it, install it first as described under \ref CppSetupMacOSPrereq "Prerequisites". Open Terminal and run the following command:
\n The `.pkg` does not install them, and CMake configuration of a C++ consumer fails without them: `MRMeshConfig.cmake` resolves Boost, TBB and six more via `find_dependency`. This needs Homebrew — if you do not have it, install it first as described under \ref CppSetupMacOSPrereq "Prerequisites". Open Terminal and run the following command:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here. Try to preserve the original wording as much as possible, but add that this step can be skipped if only the C bindings are used.

Restore master's wording for the Homebrew step in both setup guides and
add a single skip clause for C-only consumers, in place of the long
CMake rationale. Drop the meshconv troubleshooting sentence outright:
Homebrew is not involved in that failure, and the macOS troubleshooting
table already describes the real configure-time one.
@meshinspector-agent

Copy link
Copy Markdown
Contributor Author

Addressing the review — all three in 0c98e9a. Net diff vs master is now two added sentences and one deletion.

  • CSetupGuide.dox "explanation is too long, preserve the original wording" — Done. Master's sentence is back verbatim, plus one clause: "Skip this step if your project only uses the C interface." The CMake/find_dependency detail is gone.
  • CppSetupGuide.dox Homebrew step, "same here" — Done, same shape: master's wording verbatim + "Skip this step if your project only uses the C bindings."
  • meshconv --help paragraph, "if homebrew is unrelated, don't mention it — perhaps remove" — Removed entirely, no replacement. The macOS row of the troubleshooting table (CppSetupGuide.dox:441) already describes the real configure-time failure, so nothing is lost.

Verification — Doxygen 1.14.0 (the version update-docs.yml installs) over doxygen/general_pages, doxygen/examples, doxygen/common_files: exit 0, warning log byte-identical to master's (62 lines both). Rendered HTML checked on MeshLibCSetupGuide.html / MeshLibCppSetupGuide.html — both paragraphs read as intended, \ref CppSetupMacOSPrereq "Prerequisites" still resolves, and the removed sentence leaves the numbered step intact. No C++ build or viewer run: the diff is doxygen/-only (hence update-doc-only), so there is nothing compiled or runtime-observable to exercise.

@Fedr

Fedr commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

update PR title and description based on actual contents

1 similar comment
@Fedr

Fedr commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

update PR title and description based on actual contents

@meshinspector-agent meshinspector-agent Bot changed the title Docs: scope the macOS Homebrew step to C++ consumers Docs: note the macOS Homebrew step is skippable for C-only projects Aug 26, 2026
@meshinspector-agent

Copy link
Copy Markdown
Contributor Author

"update PR title and description based on actual contents" — Done; no code change, the diff is unchanged at 0c98e9a.

  • Title: Docs: scope the macOS Homebrew step to C++ consumersDocs: note the macOS Homebrew step is skippable for C-only projects. The old title described the first draft; since 0c98e9a the diff no longer rewrites the rationale, it just adds a skip clause.
  • Description: rewritten to the three hunks that actually exist — the two "Skip this step…" sentences (CSetupGuide.dox:87, CppSetupGuide.dox:226) and the deleted meshconv --help sentence. Dropped the stale "that rationale is wrong" framing, the bundling/macos_bundle_dylibs.py argument, and the "happy to drop this hunk" offer — none of that survives in the diff.

Doxygen isn't installed on this runner, so the Doxygen/HTML lines under Verification are carried over from the 0c98e9a run rather than re-run. The CMake claims (MRMeshConfig.cmake.in chain vs. no find_dependency in MeshLibC2Config.cmake.in, PRIVATE links at MeshLibC2/CMakeLists.txt:39) I re-checked against master just now.

@Fedr
Fedr merged commit b217ba6 into master Aug 26, 2026
33 checks passed
@Fedr
Fedr deleted the agent/mlib-macos-brew-step-scope branch August 26, 2026 18:00
@meshinspector-agent

Copy link
Copy Markdown
Contributor Author

Post-merge review done — all planned PRs merged, tracking issue closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

update-doc-only force update dev documentation (without any checks)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants