From 8d38330061b360c30e2e5c874b7ba275f0c83cbd Mon Sep 17 00:00:00 2001 From: Ivo Filot Date: Mon, 22 May 2023 10:13:18 +0200 Subject: [PATCH] Adding CI/CD for Anaconda Linux and Anaconda MacOS (#6) * Adding MacOS and Linux compilation for Conda * Update build.yml * Update build.yml * Removing omp.h * Fixing C++ version * Removing unused variable --- .github/workflows/build.yml | 139 ++++++++++++++++++++++++++++++++++-- meta.yaml | 2 +- pytessel/isosurface_mesh.h | 1 - pytessel/scalar_field.h | 1 - setup.py | 9 +-- 5 files changed, 136 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e924afd..1c5f491 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,10 @@ on: branches: [ "master", "develop" ] jobs: - build-linux: +#------------------------------------------------------------------------------- +# PyPI / Linux +#------------------------------------------------------------------------------- + build-pypi-linux: runs-on: ubuntu-latest container: quay.io/pypa/manylinux2014_x86_64 @@ -38,7 +41,7 @@ jobs: pypi-publish: name: Upload release to PyPI if: github.ref == 'refs/heads/master' - needs: build-linux + needs: build-pypi-linux runs-on: ubuntu-latest environment: name: pypi @@ -56,7 +59,10 @@ jobs: with: packages-dir: wheelhouse/ - build-windows: +#------------------------------------------------------------------------------- +# Anaconda / Windows +#------------------------------------------------------------------------------- + build-anaconda-windows: runs-on: windows-latest steps: @@ -89,13 +95,13 @@ jobs: - name: Archive packages uses: actions/upload-artifact@v3 with: - name: anaconda-packages + name: anaconda-windows-packages path: C:\Miniconda\envs\test\conda-bld\win-64\pytessel-*.tar.bz2 anaconda-publish: - name: Upload release to Anaconda + name: Publish Anaconda / Windows if: github.ref == 'refs/heads/master' - needs: build-windows + needs: build-anaconda-windows runs-on: ubuntu-latest environment: name: anaconda @@ -113,7 +119,7 @@ jobs: - name: Retrieve packages uses: actions/download-artifact@v3 with: - name: anaconda-packages + name: anaconda-windows-packages path: packages - name: publish-to-conda shell: bash -l {0} @@ -123,3 +129,122 @@ jobs: export ANACONDA_API_TOKEN=$INPUT_ANACONDATOKEN anaconda upload packages/*.tar.bz2 +#------------------------------------------------------------------------------- +# Anaconda / Linux +#------------------------------------------------------------------------------- + build-anaconda-linux: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install -y build-essential libglm-dev libboost-all-dev + - name: Set-up miniconda + uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test + environment-file: environment.yml + python-version: 3.8 + auto-activate-base: false + - name: Build + run: | + conda install conda-build + conda build . --no-include-recipe + - name: Archive packages + uses: actions/upload-artifact@v3 + with: + name: anaconda-linux-packages + path: /usr/share/miniconda/conda-bld/linux-64/pytessel-*.tar.bz2 + + publish-anaconda-linux: + name: Publish Anaconda / Linux + if: github.ref == 'refs/heads/master' + needs: build-anaconda-linux + runs-on: ubuntu-latest + environment: + name: anaconda + url: https://anaconda.org/ifilot/pytessel + steps: + - name: Checkout repo + uses: actions/checkout@v3 + - name: Set-up miniconda + uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test + environment-file: environment.yml + python-version: 3.8 + auto-activate-base: false + - name: Retrieve packages + uses: actions/download-artifact@v3 + with: + name: anaconda-linux-packages + path: packages + - name: publish-to-conda + shell: bash -l {0} + env: + INPUT_ANACONDATOKEN: ${{ secrets.ANACONDA_TOKEN }} + run: | + export ANACONDA_API_TOKEN=$INPUT_ANACONDATOKEN + anaconda upload packages/*.tar.bz2 + +#------------------------------------------------------------------------------- +# Anaconda / Linux +#------------------------------------------------------------------------------- + build-anaconda-macos: + runs-on: macos-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + - name: Install dependencies + run: | + brew install glm + brew install boost + - name: Set-up miniconda + uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test + environment-file: environment.yml + python-version: 3.8 + auto-activate-base: false + - name: Build + run: | + conda install conda-build + conda build . --no-include-recipe + - name: Archive packages + uses: actions/upload-artifact@v3 + with: + name: anaconda-macos-packages + path: /usr/local/miniconda/conda-bld/osx-64/pytessel-*.tar.bz2 + + publish-anaconda-macos: + name: Publish Anaconda / MacOS + if: github.ref == 'refs/heads/master' + needs: build-anaconda-macos + runs-on: ubuntu-latest + environment: + name: anaconda + url: https://anaconda.org/ifilot/pytessel + steps: + - name: Checkout repo + uses: actions/checkout@v3 + - name: Set-up miniconda + uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test + environment-file: environment.yml + python-version: 3.8 + auto-activate-base: false + - name: Retrieve packages + uses: actions/download-artifact@v3 + with: + name: anaconda-macos-packages + path: packages + - name: publish-to-conda + shell: bash -l {0} + env: + INPUT_ANACONDATOKEN: ${{ secrets.ANACONDA_TOKEN }} + run: | + export ANACONDA_API_TOKEN=$INPUT_ANACONDATOKEN + anaconda upload packages/*.tar.bz2 diff --git a/meta.yaml b/meta.yaml index 2c77236..1cd812c 100644 --- a/meta.yaml +++ b/meta.yaml @@ -1,6 +1,6 @@ package: name: "pytessel" - version: "1.0.0" + version: "1.0.1" source: path: . diff --git a/pytessel/isosurface_mesh.h b/pytessel/isosurface_mesh.h index f4fe8f8..ad12945 100644 --- a/pytessel/isosurface_mesh.h +++ b/pytessel/isosurface_mesh.h @@ -23,7 +23,6 @@ #include #include #include -#include #include #define GLM_FORCE_SWIZZLE diff --git a/pytessel/scalar_field.h b/pytessel/scalar_field.h index b1568d9..46bd6d5 100644 --- a/pytessel/scalar_field.h +++ b/pytessel/scalar_field.h @@ -30,7 +30,6 @@ class ScalarField{ private: std::array grid_dimensions; std::vector gridptr; - unsigned int gridsize; glm::mat3 unitcell; glm::mat3 unitcell_inverse; diff --git a/setup.py b/setup.py index 761e409..0361353 100644 --- a/setup.py +++ b/setup.py @@ -75,11 +75,8 @@ def find_windows_versions(): extra_compile_args = ["/wd4244"] extra_link_args = [] elif sys.platform == 'darwin': - # NOTE: THIS HAS NOT BEEN ADAPTED FOR GITHUB ACTIONS - # os.environ['CC'] = "/usr/local/Cellar/gcc/11.2.0_3/bin/gcc-11" - # os.environ['CXX'] = "/usr/local/Cellar/gcc/11.2.0_3/bin/c++-11" - os.environ['CFLAGS'] = '-I/usr/local/Cellar/boost/1.76.0/include -I/usr/local/Cellar/glm/0.9.9.8/include' - extra_compile_args = ["-Wno-date-time", "-fPIC"] + os.environ['CFLAGS'] = '-I/usr/local/Cellar/boost/1.81.0_1/include -I /usr/local/Cellar/glm/0.9.9.8/include' + extra_compile_args = ["-Wno-date-time", "-fPIC", "-std=c++14"] extra_link_args = [] ext_modules = [ @@ -96,7 +93,7 @@ def find_windows_versions(): setup( name='pytessel', - version="1.0.0", + version="1.0.1", author="Ivo Filot", author_email="ivo@ivofilot.nl", description="Python package for building isosurfaces from 3D scalar fields",