iqbal-lab-org / gramtools

Genome inference from a population reference graph
MIT License
92 stars 15 forks source link

Release includes pre built backend binaries #101

Open ffranr opened 6 years ago

ffranr commented 6 years ago

Support Linux 64bit.

leoisl commented 5 years ago

I've already dealt with this in DBGWAS. Precompilation was done using Holy Build Box, so it should work on pretty much any glibc-based x86 and x86-64 Linux distribution released since approx 2011 (e.g.: Debian >= 7, Ubuntu >= 10.10, Red Hat Enterprise Linux >= 6, CentOS >= 6, etc). We just followed exactly what Páll Melsted did to create precompiled binaries for kallisto (see https://pmelsted.wordpress.com/2015/10/14/building-binaries-for-bioinformatics/). However, Holy Build Box includes a very simple compiler toolchain to build compatible binaries (see https://github.com/phusion/holy-build-box#isolated-build-environment-based-on-docker-and-centos-6), which I am unsure if gramtools will compile.

To check: if gramtools compiles with HBB, then this solution is a good option. Worked for kallisto and DBGWAS. Otherwise, we do the least fixes to make it compile and test.

bricoletc commented 3 years ago

In v1.7.0, there is now a precompiled binary packaged in the release, that the python installation process will try to run. If it fails, it will compile the binary instead. The README now states this.

The caveat is it's Linux 64 bit and not compiled against an old glibc.

bricoletc commented 3 years ago

Pandora provide a statically-linked binary which does not depend on glibc by using musl instead: https://github.com/rmcolq/pandora/tree/master/scripts/portable_binary_builder

leoisl commented 3 years ago

just remembered gramtools also has python parts. Can also build a statically linked single binary for python code using PyInstaller. This is what we do for the updateable make_prg: https://github.com/leoisl/make_prg/tree/master/scripts/build_precompiled_binary ... although could not make PyInstaller work with musl, so the container compiles against an old centos7. It requires thus GLIBC >= 2.17 to be present (present on Ubuntu >= 13.04, Debian >= 8.0, CentOS >= 7, RHEL >= 7.9, Fedora >= 19, etc);