Auto-provision FastTree so macOS doesn't need conda at all - #12
Merged
Conversation
A real user upgraded past the previous fixes (#10, #11) and hit the next wall: CANDy correctly defaults to --tree-tool fasttree on their Mac now, but fasttree itself still required conda -- which they don't have installed. Close that gap the same way MMseqs2 already avoids needing conda: auto-provision the binary on first use. New candy.phylogenetics.fasttree_download module, pinned to a specific commit of github.com/morgannprice/fasttree for reproducibility: - Linux/Windows: download the precompiled binary published directly in that repository. - macOS: no precompiled binary is published upstream at all, but FastTree.c is a single, dependency-free C file -- download it and compile it locally with whatever C compiler is already present (Xcode Command Line Tools' clang on essentially every real Mac), deliberately using the upstream-documented flags that avoid the OpenMP requirement that broke veryfasttree's own build (no -fopenmp, only -fopenmp-simd, which doesn't need the libomp runtime). Resolution order matches MMseqs2's established pattern: PATH, then the local cache, then auto-download/compile (disable via CANDY_NO_AUTO_DOWNLOAD, same as before). FastTreeBuilder now delegates to this instead of requiring PATH + a hard failure pointing at conda. Verified for real: the Windows download path was exercised live (not just mocked) against the actual pinned commit -- downloaded FastTree.exe and ran it successfully (FastTree 2.2.0, exit code 0, real --help output). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
AlexWindels
pushed a commit
that referenced
this pull request
Aug 11, 2026
Patch release: auto-provision FastTree (download on Linux/Windows, compile-from-source on macOS) so it no longer requires conda (#12). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the gap the user hit right after #10/#11: CANDy now correctly selects fasttree by default on Macs without a working veryfasttree, but fasttree itself still required conda -- and they don't have conda installed.
Summary
New
candy.phylogenetics.fasttree_downloadmodule, mirroring the existing MMseqs2 auto-download pattern, pinned to a specific commit ofgithub.com/morgannprice/fasttreefor reproducibility:FastTree.cis a single, dependency-free C file -- download it and compile locally with whatever C compiler is already present (Xcode Command Line Tools'clang, on essentially every real Mac), using the upstream-documented flags that deliberately avoid the OpenMP requirement that brokeveryfasttree's own build (-fopenmp-simd, not-fopenmp-- nolibompruntime needed).Resolution order: PATH, then local cache, then auto-provision (disable via
CANDY_NO_AUTO_DOWNLOAD, same env var as MMseqs2).FastTreeBuildernow delegates to this instead of requiring PATH with a hard failure pointing at conda.Test plan
pytest-- 142 passed (10 new tests intest_fasttree_download.py: PATH/cache preference, disabled-download error, download-failure handling, precompiled download on Linux/Windows, compile-from-source on macOS, missing-compiler error, compile-failure error; 1 marked@pytest.mark.integration)FastTree.exe, ran-help, gotFastTree 2.2.0 Double precision, exit code 0python -m build+ confirmedfasttree_download.pyis included in the built wheel