Skip to content

chore(macos): enable out-of-the-box build and test on macOS#39

Open
paaloeye wants to merge 2 commits into
google:mainfrom
paaloeye:chore/macos-install-docs
Open

chore(macos): enable out-of-the-box build and test on macOS#39
paaloeye wants to merge 2 commits into
google:mainfrom
paaloeye:chore/macos-install-docs

Conversation

@paaloeye
Copy link
Copy Markdown

@paaloeye paaloeye commented May 9, 2026

  • add macOS prerequisites section to INSTALL.md (macFUSE cask, Homebrew deps)
  • remove manual PKG_CONFIG_PATH/CPPFLAGS instructions; Makefile now handles them
  • Makefile detects Darwin via uname, queries brew --prefix, and overrides PKG_CONFIG to carry a pinned icu4c path inline — immune to shell env injection (e.g. pkgx shadowing icu4c with the wrong version); exports PKG_CONFIG and CPPFLAGS so all sub-makes inherit them; libzip and macFUSE need no special handling as their .pc files are on the default pkg-config search path
  • add #include <boost/container_hash/hash.hpp> to lib/node.h; Apple Clang does not pull it in transitively, causing boost::hash_combine to be undefined
  • guard <sys/sysmacros.h> with #ifndef APPLE in extra_field_test.cc; the header is Linux-only, makedev is available via <sys/types.h> on macOS
  • use umount -f on Darwin instead of -l (lazy) in blackbox test runner; macOS umount does not support the -l flag
  • update DEVELOPMENT.md with macOS portability notes and build workflow

🤖 Generated with Claude Code

Co-Authored-By: Claude Code 2.1.138 (Claude Code)

@paaloeye paaloeye force-pushed the chore/macos-install-docs branch from c17ec2c to 530c184 Compare May 9, 2026 16:11
- add macOS prerequisites section to INSTALL.md (macFUSE cask, Homebrew deps)
- remove manual PKG_CONFIG_PATH/CPPFLAGS instructions; Makefile now handles them
- Makefile detects Darwin via uname, queries brew --prefix, and overrides
  PKG_CONFIG to carry a pinned icu4c path inline — immune to shell env injection
  (e.g. pkgx shadowing icu4c with the wrong version); exports PKG_CONFIG and
  CPPFLAGS so all sub-makes inherit them; libzip and macFUSE need no special
  handling as their .pc files are on the default pkg-config search path
- add #include <boost/container_hash/hash.hpp> to lib/node.h; Apple Clang does
  not pull it in transitively, causing boost::hash_combine to be undefined
- guard <sys/sysmacros.h> with #ifndef __APPLE__ in extra_field_test.cc; the
  header is Linux-only, makedev is available via <sys/types.h> on macOS
- use umount -f on Darwin instead of -l (lazy) in blackbox test runner; macOS
  umount does not support the -l flag
- update DEVELOPMENT.md with macOS portability notes and build workflow

🤖 Generated with [Claude Code](https://claude.ai/code)

Signed-Off-By: Paal Øye-Strømme <paal.o.eye@gmail.com>
@paaloeye paaloeye force-pushed the chore/macos-install-docs branch from 530c184 to 6eb2b47 Compare May 9, 2026 16:12
- macOS install(1) does not support -D (GNU extension that auto-creates
  parent directories)
- replace with explicit mkdir -p before each install call, which is
  POSIX-compliant and works on both macOS and Linux
- applies to both install and install-strip targets

🤖 Generated with [Claude Code](https://claude.ai/code)

Signed-Off-By: Paal Øye-Strømme <paal.o.eye@gmail.com>
@fdegros
Copy link
Copy Markdown
Collaborator

fdegros commented May 11, 2026

Thanks for your pull request.

I'm sorry, but I think I reorganized the project before I saw your PR, which means that you're going to need to rebase your changes. It should be fairly easy to fix. The blackbox and whitebox directories have disappeared and their contents have been lifted one level up to the tests directory.

Did you actually check that it works on macOS? I don't have access to a Mac, therefore I cannot check myself.

Let me know how it is going.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants