You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
FastTree is currently built from source for the nextstrain/base Docker image.
While working on #123, I discovered that it is also available as an Ubuntu package fasttree which can be installed directly via apt-get install fasttree. This made me think whether we should be installing from that directly instead of building from source.
Up-sides to installing from Ubuntu's APT package manager
It reduces build times (upon cache miss) and prevents "re-inventing the wheel" by having to figure out software-specific build instructions.
The package manager can define/install dependencies that would otherwise have to be handled separately within the Dockerfile.
If the desired binaries are not yet available via the package manager, updating the package has the potential to benefit a wider community (any Ubuntu-using bioinformatician in addition to Nextstrain users).
Notes on the above, with examples:
The Ubuntu package mafft is available for both amd64 and arm64, whereas we have a TODO to figure out how to build it from source.
Augur prefersFastTreeDblMP which is built for the Docker image. The Ubuntu fasttree package provides less-optimal versions. The FastTreeDblMP build instructions can be copied over to the Ubuntu package builder to benefit non-Nextstrain users.
The Ubuntu package iqtree is only available as amd64. The Dockerfile also only downloads a pre-built binary for amd64. There is a TODO to build from source which would provide arm64-native IQ-TREE binaries in the nextstrain/base image. This could instead be done in the Ubuntu package builder to benefit non-Nextstrain users.
Considerations
Are the Ubuntu package maintainers trustworthy?
Can the version be pinned?
Is it up to date with the latest version?
Does it have the right binary?
If the answer to (3) and/or (4) is "no", is it easy/quick to propose changes to the package and make a new version available?
I'm not familiar with Ubuntu packages, but it seems like all those questions can be answered by clicking around the package websites.
Context
FastTree is currently built from source for the
nextstrain/baseDocker image.While working on #123, I discovered that it is also available as an Ubuntu package
fasttreewhich can be installed directly viaapt-get install fasttree. This made me think whether we should be installing from that directly instead of building from source.Up-sides to installing from Ubuntu's APT package manager
Notes on the above, with examples:
mafftis available for bothamd64andarm64, whereas we have a TODO to figure out how to build it from source.FastTreeDblMPwhich is built for the Docker image. The Ubuntufasttreepackage provides less-optimal versions. TheFastTreeDblMPbuild instructions can be copied over to the Ubuntu package builder to benefit non-Nextstrain users.iqtreeis only available asamd64. The Dockerfile also only downloads a pre-built binary foramd64. There is a TODO to build from source which would providearm64-native IQ-TREE binaries in thenextstrain/baseimage. This could instead be done in the Ubuntu package builder to benefit non-Nextstrain users.Considerations
I'm not familiar with Ubuntu packages, but it seems like all those questions can be answered by clicking around the package websites.