update version. tweak the test (install cython 3.0 for non-x64)
[MACS.git] / .github / workflows / build-and-test-MACS3-non-x64.yml
blob314f1db21ffbbd1de21e5bf568d82e2d0c3df3eb
1 # This workflow will install Python dependencies, run tests and lint with a single version of Python
2 # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
4 name: MACS3 CI non x64
6 on: [push, pull_request]
8 jobs:
9   build_job:
10     runs-on: ubuntu-20.04
11     name: Build on ${{ matrix.arch }}
12     strategy:
13       matrix:
14         include:
15           - arch: aarch64
16             distro: bullseye        
17           - arch: armv7
18             distro: bullseye
19           - arch: ppc64le
20             distro: bullseye
21           - arch: s390x
22             distro: bullseye
23     steps:
24       - name: Checkout MACS
25         uses: actions/checkout@v3
26         with:
27           submodules: 'true'
28       - name: Set up arch and run (bullseye Python 3.9)
29         uses: uraimo/run-on-arch-action@v2
30         id: build
31         with:
32           arch: ${{ matrix.arch }}
33           distro: ${{ matrix.distro }}
35           githubToken: ${{ github.token }}
37           # The shell to run commands with in the container
38           shell: /bin/bash
40           # Mount the current working directory (with checked-out codes) as /MACS3 in the container
41           dockerRunArgs: |
42             -v "${PWD}:/MACS3" -u macs3
44           # Create an artifacts directory on runner
46           # Install some dependencies in the container. This speeds up builds if
47           # you are also using githubToken. Any dependencies installed here will
48           # be part of the container image that gets cached, so subsequent
49           # builds don't have to re-install them. The image layer is cached
50           # publicly in your project's package repository, so it is vital that
51           # no secrets are present in the container state or logs.
52           install: |
53             useradd -m macs3
54             mkdir -p /MACS3
55             chown -R macs3:macs3 /MACS3
56             # install dependencies
57             apt-get update -qq -y
58             apt-get install apt-utils
59             apt-get install -yq libblas3 liblapack3 libblas-dev liblapack-dev
60             # we rely on Debian/Linux python packages for numpy/scipy/sklearn 
61             apt-get install -yq python3 python3-pip python3-virtualenv python3-wheel python3-numpy python3-scipy python3-sklearn cython3 
62             apt-get install -yq procps zlib1g zlib1g-dev gfortran
63           run: |
64             echo `uname -a`
65             cd /home/macs3/
66             
67             # let's create virtualenv
68             virtualenv --system-site-packages macsenv
69             source macsenv/bin/activate
70             
71             # copy source code over
72             cp -r /MACS3 .
73             cd MACS3
75             # let's make sure this file is gone...
76             rm -f no-global-site-packages.txt
77             
78             # upgrade pip            
79             pip install --progress-bar off --upgrade pip
80             
81             # install dependencies that are not in Debian/Linux
82             pip install --upgrade-strategy only-if-needed --progress-bar off Cython
83             pip install --upgrade-strategy only-if-needed --progress-bar off hmmlearn
84             pip install --upgrade-strategy only-if-needed --progress-bar off cykhash
85             pip install --upgrade --progress-bar off pytest
87             
88             # install MACS3; only-if-needed won't try to upgrade Debian/Linux python3 libs
89             pip install --upgrade-strategy only-if-needed --no-build-isolation --progress-bar off . 
90             
91             # run test
92             pytest --runxfail && cd test && ./cmdlinetest-nohmmratac macs3