Skip to content

Commit

Permalink
ENH: Meson build system
Browse files Browse the repository at this point in the history
  • Loading branch information
inoelloc committed Apr 22, 2024
1 parent 7062054 commit d7f71ab
Show file tree
Hide file tree
Showing 30 changed files with 921 additions and 1,334 deletions.
12 changes: 5 additions & 7 deletions .github/workflows/code-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,12 @@ on:

jobs:
ubuntu:
name: (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ["ubuntu-20.04", "ubuntu-22.04"]

name: Code checks ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v5
Expand All @@ -34,7 +32,7 @@ jobs:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install build-essential openjdk-11-jre-headless
sudo apt-get install build-essential openjdk-17-jdk
python -m venv test
. test/bin/activate
python -m pip install --upgrade pip
Expand Down
14 changes: 6 additions & 8 deletions .github/workflows/doc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,17 @@ on:

jobs:
ubuntu:
name: (${{ matrix.os }} | py-${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ['ubuntu-20.04', 'ubuntu-22.04']
python-version: ['3.8', '3.9', '3.10', '3.11']
name: Documentation ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python ${{ matrix.python-version }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
python-version: '3.11'

- name: Install dependencies
run: |
Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@ on:

jobs:
ubuntu:
name: (${{ matrix.os }} | py-${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
name: Unit tests ubuntu-latest py-${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
matrix:
os: ['ubuntu-20.04', 'ubuntu-22.04']
python-version: ['3.8', '3.9', '3.10', '3.11']
python-version: ['3.9', '3.10', '3.11']
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
Expand Down
52 changes: 52 additions & 0 deletions .github/workflows/wheel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# This is partially adopted from scipy.
# See: https://github.com/scipy/scipy/blob/main/.github/workflows/wheels.yml
# License: 3-clause BSD, https://github.com/scipy/scipy/blob/main/LICENSE.txt

name: Wheels

# Controls when the action will run.
on:

push:
branches:
- main

pull_request:
branches:
- main
- maintenance/**

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
build_wheels:
name: Build wheel ${{ matrix.python-version }}-${{ matrix.buildplat[1] }} ${{ matrix.buildplat[2] }}
runs-on: ${{ matrix.buildplat[0] }}
strategy:
matrix:
buildplat:
- [ubuntu-latest, manylinux, x86_64]

python-version: ['cp39', 'cp310', 'cp311']

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_BUILD: ${{ matrix.python-version }}-${{ matrix.buildplat[1] }}*
CIBW_ARCHS: ${{ matrix.buildplat[2] }}

- uses: actions/upload-artifact@v4
with:
path: ./wheelhouse/*.whl
name: ${{ matrix.python-version }}-${{ matrix.buildplat[1] }}-${{ matrix.buildplat[2] }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ parts/
sdist/
var/
wheels/
wheelhouse/
share/python-wheels/
*.egg-info/
.installed.cfg
Expand Down
34 changes: 13 additions & 21 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,23 +1,15 @@
FROM ubuntu:22.04
# Derived from Pandas
FROM python:3.11
WORKDIR /home/smash

ADD . /app/

WORKDIR /app

RUN apt-get update && apt-get install -y \
RUN apt-get update && apt-get -y upgrade
RUN apt-get install -y \
build-essential \
make \
openjdk-11-jre-headless \
gcc \
gfortran \
gdal-bin \
libgdal-dev \
python3-pip

ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64/

RUN export JAVA_HOME

RUN pip3 install -r requirements-dev.txt

RUN make
openjdk-17-jdk \
gfortran

RUN python -m pip install --upgrade pip
COPY requirements-dev.txt /tmp
RUN python -m pip install -r /tmp/requirements-dev.txt
RUN git config --global --add safe.directory /home/smash
CMD ["/bin/bash"]
4 changes: 0 additions & 4 deletions MANIFEST.in

This file was deleted.

50 changes: 50 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#% Build smash
all:
pip install .

#% Build smash in editable mode
edit:
pip install --no-build-isolation --config-settings=editable-verbose=true --editable .

#% Generate tapenade file (adjoint and tangent linear models)
tap:
make -C tapenade

#% Compare tapenade file
tap-cmp:
make tap-cmp -C tapenade

#% Generate sphinx documentation
doc:
make html -C doc

#% Clean sphinx documentation
doc-clean:
make clean -C doc

#% Testing code with pytest
test:
cd smash/tests ; pytest

#% Testing code with pytest and coverage
test-coverage:
cd smash/tests ; pytest --cov-report term --cov-report html --cov=smash

#% Generate baseline for test with args (see argparser in gen_baseline.py)
test-baseline:
cd smash/tests ; python3 gen_baseline.py

#% Format Python files with ruff and Fortran files with fprettify
format:
ruff format
fprettify -e forward_db.f90 -e f90wrap -f .f90 --indent 4 -r smash

#% Check Python files with ruff linters
check:
ruff check --fix --exit-non-zero-on-fix

#% Clean
clean:
@rm -rf build

.PHONY: all edit tap tap-cmp doc doc-clean test test-baseline format check clean
158 changes: 0 additions & 158 deletions dependencies.py

This file was deleted.

Loading

0 comments on commit d7f71ab

Please sign in to comment.