Skip to content

Feature/prs cs hmcmc #1318

Feature/prs cs hmcmc

Feature/prs cs hmcmc #1318

name: Build Bystro Perl Package
on: [push, pull_request]
jobs:
test-perl-package:
runs-on: ubuntu-latest
container:
image: perldocker/perl-tester:latest
steps:
- name: Perl version
run: perl -V
- name: Install system dependencies
shell: bash
run: apt-get install --no-install-recommends -y lz4
# taken from https://github.com/docker-library/golang/blob/master/1.21/bullseye/Dockerfile
# NOTES: 1) updated paths are not usable by the step
# 2) if GOBIN is not set, which is the case here, `go install ...` installs binaries to ${HOME}/go/bin
- name: Install Go
shell: bash
run: |
set -eux; \
arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \
url=; \
case "$arch" in \
'amd64') \
url='https://dl.google.com/go/go1.21.3.linux-amd64.tar.gz'; \
sha256='1241381b2843fae5a9707eec1f8fb2ef94d827990582c7c7c32f5bdfbfd420c8'; \
;; \
'armel') \
export GOARCH='arm' GOARM='5' GOOS='linux'; \
;; \
'armhf') \
url='https://dl.google.com/go/go1.21.3.linux-armv6l.tar.gz'; \
sha256='a1ddcaaf0821a12a800884c14cb4268ce1c1f5a0301e9060646f1e15e611c6c7'; \
;; \
'arm64') \
url='https://dl.google.com/go/go1.21.3.linux-arm64.tar.gz'; \
sha256='fc90fa48ae97ba6368eecb914343590bbb61b388089510d0c56c2dde52987ef3'; \
;; \
'i386') \
url='https://dl.google.com/go/go1.21.3.linux-386.tar.gz'; \
sha256='fb209fd070db500a84291c5a95251cceeb1723e8f6142de9baca5af70a927c0e'; \
;; \
'mips64el') \
url='https://dl.google.com/go/go1.21.3.linux-mips64le.tar.gz'; \
sha256='a569ffbc88b4e14cf2682f65cec950460665e4392b0d78b8868b4718c979bda8'; \
;; \
'ppc64el') \
url='https://dl.google.com/go/go1.21.3.linux-ppc64le.tar.gz'; \
sha256='3b0e10a3704f164a6e85e0377728ec5fd21524fabe4c925610e34076586d5826'; \
;; \
'riscv64') \
url='https://dl.google.com/go/go1.21.3.linux-riscv64.tar.gz'; \
sha256='67d14d3e513e505d1ec3ea34b55641c6c29556603c7899af94045c170c1c0f94'; \
;; \
's390x') \
url='https://dl.google.com/go/go1.21.3.linux-s390x.tar.gz'; \
sha256='4c78e2e6f4c684a3d5a9bdc97202729053f44eb7be188206f0627ef3e18716b6'; \
;; \
*) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \
esac; \
build=; \
if [ -z "$url" ]; then \
# https://github.com/golang/go/issues/38536#issuecomment-616897960
build=1; \
url='https://dl.google.com/go/go1.21.3.src.tar.gz'; \
sha256='186f2b6f8c8b704e696821b09ab2041a5c1ee13dcbc3156a13adcf75931ee488'; \
echo >&2; \
echo >&2 "warning: current architecture ($arch) does not have a compatible Go binary release; will be building from source"; \
echo >&2; \
fi; \
\
wget -O go.tgz.asc "$url.asc"; \
wget -O go.tgz "$url" --progress=dot:giga; \
echo "$sha256 *go.tgz" | sha256sum -c -; \
\
# https://github.com/golang/go/issues/14739#issuecomment-324767697
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
# https://www.google.com/linuxrepositories/
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796'; \
# let's also fetch the specific subkey of that key explicitly that we expect "go.tgz.asc" to be signed by, just to make sure we definitely have it
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys '2F52 8D36 D67B 69ED F998 D857 78BD 6547 3CB3 BD13'; \
gpg --batch --verify go.tgz.asc go.tgz; \
gpgconf --kill all; \
rm -rf "$GNUPGHOME" go.tgz.asc; \
\
tar -C /usr/local -xzf go.tgz; \
rm go.tgz;
/usr/local/go/bin/go version
echo "/usr/local/go/bin" >> $GITHUB_PATH
echo "${HOME}/go/bin" >> $GITHUB_PATH
- name: Install one-off Bystro dependencies
shell: bash
run: |
go install github.com/bystrogenomics/bystro-vcf@2.2.2
cpm install -g https://github.com/bystrogenomics/msgpack-perl.git
cpm install -g --no-test MouseX::Getopt
cpm install -g DBD::mysql@4.051
git clone --depth 1 --recurse-submodules https://github.com/salortiz/LMDB_File.git \
&& cd LMDB_File \
&& cpanm --quiet .
- name: Checkout code
uses: actions/checkout@v4
- name: Install Bystro dependencies
run: |
cd perl
cpm install -g --show-build-log-on-failure $(dzil authordeps --missing)
cpm install -g --show-build-log-on-failure $(dzil listdeps --missing)
- name: Test Bystro
run: cd perl && dzil test --all
- name: Build Bystro tarball
run: cd perl && dzil build