diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..89887bc --- /dev/null +++ b/.drone.yml @@ -0,0 +1,75 @@ +--- +kind: pipeline +type: docker +name: buildqpms-alpine-preinstlibs + +workspace: + path: /home/qpmsbuild/qpms + +# don't run in master until the python/lapacke linking problem is resolved +trigger: + branch: + exclude: + - master + +steps: +- name: chown + image: qpms/buildenv/alpine/pkgdnumlib + pull: never + commands: + - chown -R qpmsbuild.qpmsbuild . +- name: submodules + image: qpms/buildenv/alpine/pkgdnumlib + pull: never + user: qpmsbuild + commands: + - git submodule init + - git submodule update +- name: build + image: qpms/buildenv/alpine/pkgdnumlib + pull: never + user: qpmsbuild + commands: + - cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local . + - make install + - export LIBRARY_PATH=$HOME/.local/lib + - python3 setup.py install --user + - cd examples/rectangular/modes + - pip3 install --user matplotlib #needed to run the example + - export LD_LIBRARY_PATH=$HOME/.local/lib + - ./01a_realfreq_svd.sh + +--- +kind: pipeline +type: docker +name: buildqpms-debian-preinstlibs + +workspace: + path: /home/qpmsbuild/qpms + +steps: +- name: chown + image: qpms/buildenv/debian/pkgdnumlib + pull: never + commands: + - chown -R qpmsbuild.qpmsbuild . +- name: submodules + image: qpms/buildenv/debian/pkgdnumlib + pull: never + user: qpmsbuild + commands: + - git submodule init + - git submodule update +- name: build + image: qpms/buildenv/debian/pkgdnumlib + pull: never + user: qpmsbuild + commands: + - cmake -DCMAKE_INSTALL_PREFIX=/home/qpmsbuild/.local . + - make install + - export LIBRARY_PATH=$HOME/.local/lib + - python3 setup.py install --user + - cd examples/rectangular/modes + - pip3 install --user matplotlib #needed to run the example + - export LD_LIBRARY_PATH=$HOME/.local/lib + - ./01a_realfreq_svd.sh diff --git a/README.md b/README.md index 064694f..e4a8c7f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Build Status](https://drone.perkele.eu/api/badges/QPMS/qpms/status.svg)](https://drone.perkele.eu/QPMS/qpms) + QPMS README =========== diff --git a/ci/00_make_dockerfiles.sh b/ci/00_make_dockerfiles.sh new file mode 100755 index 0000000..10373eb --- /dev/null +++ b/ci/00_make_dockerfiles.sh @@ -0,0 +1,7 @@ +#!/bin/sh +DP=Dockerfile_parts +# "Build environment" Dockerfiles +cat >Dockerfile.benv.debian.bnl ${DP}/00_common.debian ${DP}/01_numlibs.built +cat >Dockerfile.benv.debian.pnl ${DP}/00_common.debian ${DP}/01_numlibs.debian.pkgd +cat >Dockerfile.benv.alpine.bnl ${DP}/00_common.alpine ${DP}/01_numlibs.built +cat >Dockerfile.benv.alpine.pnl ${DP}/00_common.alpine ${DP}/01_numlibs.alpine.pkgd diff --git a/ci/01_make_buildenv_images.sh b/ci/01_make_buildenv_images.sh new file mode 100755 index 0000000..e6aeb93 --- /dev/null +++ b/ci/01_make_buildenv_images.sh @@ -0,0 +1,5 @@ +#!/bin/sh +docker build -t qpms/buildenv/debian/builtnumlib -f Dockerfile.benv.debian.bnl . +docker build -t qpms/buildenv/debian/pkgdnumlib -f Dockerfile.benv.debian.pnl . +docker build -t qpms/buildenv/alpine/builtnumlib -f Dockerfile.benv.alpine.bnl . +docker build -t qpms/buildenv/alpine/pkgdnumlib -f Dockerfile.benv.alpine.pnl . diff --git a/ci/Dockerfile_parts/00_common.alpine b/ci/Dockerfile_parts/00_common.alpine new file mode 100644 index 0000000..5b4055f --- /dev/null +++ b/ci/Dockerfile_parts/00_common.alpine @@ -0,0 +1,5 @@ +FROM alpine:latest AS commondeps +RUN apk update \ + && apk add cmake python3-dev py3-pip gcc g++ wget git make libc-dev \ + && adduser -D qpmsbuild + diff --git a/ci/Dockerfile_parts/00_common.debian b/ci/Dockerfile_parts/00_common.debian new file mode 100644 index 0000000..27770e8 --- /dev/null +++ b/ci/Dockerfile_parts/00_common.debian @@ -0,0 +1,6 @@ +FROM debian:stable AS commondeps +RUN apt-get update \ + && apt-get -y install --no-install-recommends build-essential cmake python3 python3-pip git wget python3-dev \ + && apt-get clean \ + && useradd -m qpmsbuild + diff --git a/ci/Dockerfile_parts/01_numlibs.alpine.pkgd b/ci/Dockerfile_parts/01_numlibs.alpine.pkgd new file mode 100644 index 0000000..5eaf5ec --- /dev/null +++ b/ci/Dockerfile_parts/01_numlibs.alpine.pkgd @@ -0,0 +1,3 @@ +FROM commondeps AS numlibs +# openblas-dev adds gfortran :( +RUN apk add openblas-dev gsl-dev diff --git a/ci/Dockerfile_parts/01_numlibs.built b/ci/Dockerfile_parts/01_numlibs.built new file mode 100644 index 0000000..9819be6 --- /dev/null +++ b/ci/Dockerfile_parts/01_numlibs.built @@ -0,0 +1,16 @@ +FROM commondeps AS buildopenblas +USER qpmsbuild +RUN cd && git clone --depth 1 https://github.com/xianyi/OpenBLAS.git \ + && cd OpenBLAS && make \ + && make install PREFIX=$HOME/.local/ \ + && make clean \ + && cd .. && rm -rf OpenBLAS + +FROM buildopenblas AS numlibs +USER qpmsbuild +RUN cd && wget https://ftp.gnu.org/gnu/gsl/gsl-latest.tar.gz \ + && tar xf gsl-latest.tar.gz \ + && cd $( tar tf gsl-latest.tar.gz | head -n 1 ) \ + && ./configure --prefix=$HOME/.local \ + && make && make install && make clean \ + && cd .. && rm -rf $OLDPWD gsl-latest.tar.gz diff --git a/ci/Dockerfile_parts/01_numlibs.debian.pkgd b/ci/Dockerfile_parts/01_numlibs.debian.pkgd new file mode 100644 index 0000000..2fc7498 --- /dev/null +++ b/ci/Dockerfile_parts/01_numlibs.debian.pkgd @@ -0,0 +1,4 @@ +FROM commondeps AS numlibs +RUN apt-get -y install --no-install-recommends libopenblas-dev libgsl-dev liblapacke-dev \ + && apt-get clean + diff --git a/ci/Dockerfile_parts/02_buildqpms b/ci/Dockerfile_parts/02_buildqpms new file mode 100644 index 0000000..1df4c8c --- /dev/null +++ b/ci/Dockerfile_parts/02_buildqpms @@ -0,0 +1,12 @@ +FROM numlibs AS buildqpms +USER qpmsbuild +ENV LD_LIBRARY_PATH /home/qpmsbuild/.local/lib +ENV LIBRARY_PATH /home/qpmsbuild/.local/lib +ENV C_INCLUDE_PATH /home/qpmsbuild/.local/include +RUN cd && git clone --depth 1 https://repo.or.cz/qpms.git \ + && cd qpms && git submodule init && git submodule update +RUN cd ~/qpms && cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local . \ + && make \ + && make install +RUN cd ~/qpms && python3 setup.py install --user + diff --git a/ci/drone.yml b/ci/drone.yml new file mode 120000 index 0000000..957c904 --- /dev/null +++ b/ci/drone.yml @@ -0,0 +1 @@ +../.drone.yml \ No newline at end of file