From 90bd99898ce2108d10f9d7f2ca57473d2da6d7b6 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 19 Oct 2023 09:37:15 -0400 Subject: [PATCH] add an action to enforce consistency in GNUmakefiles --- .github/workflows/check-makefiles.yml | 38 ++++++++++++++++++++++ .github/workflows/check_makefiles.py | 47 +++++++++++++++++++++++++++ Exec/mhd_tests/Alfven/GNUmakefile | 2 +- Exec/mhd_tests/BrioWu/GNUmakefile | 2 +- Exec/mhd_tests/species/GNUmakefile | 2 +- Exec/science/nova/GNUmakefile | 2 +- 6 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/check-makefiles.yml create mode 100644 .github/workflows/check_makefiles.py diff --git a/.github/workflows/check-makefiles.yml b/.github/workflows/check-makefiles.yml new file mode 100644 index 0000000000..396393f383 --- /dev/null +++ b/.github/workflows/check-makefiles.yml @@ -0,0 +1,38 @@ +name: check makefiles + +on: + push: + branches: + - development + - main + pull_request: + branches: + - development + +jobs: + check-ifdefs: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Cache pip + uses: actions/cache@v3 + with: + # this path is specific to Ubuntu + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: Run check-ifdefs + run: | + python .github/workflows/check_makefiles.py + diff --git a/.github/workflows/check_makefiles.py b/.github/workflows/check_makefiles.py new file mode 100644 index 0000000000..a103f95a33 --- /dev/null +++ b/.github/workflows/check_makefiles.py @@ -0,0 +1,47 @@ +import sys +from pathlib import Path + +correct_params = { + "DEBUG": "FALSE", + "USE_MPI": "TRUE", + "COMP": "gnu", + "USE_CUDA": "FALSE", + "USE_HIP": "FALSE", + "PRECISION": "DOUBLE", + "PROFILE": "FALSE"} + + +def find_source_files(): + p = Path("./Exec") + files = list(p.glob(r"**/GNUmakefile")) + return files + +def check_makefile(makefile): + + with open(makefile) as mf: + for _line in mf: + if idx := _line.find("#") >= 0: + line = _line[:idx] + else: + line = _line + + for key in correct_params: + if key in line: + try: + _, v = line.split(":=") + except ValueError: + try: + _, v = line.split("=") + except ValueError: + sys.exit(f"invalid line: {line}") + + if not v.strip() == correct_params[key]: + sys.exit(f"invalid param {key} in {makefile}") + +if __name__ == "__main__": + + for f in find_source_files(): + check_makefile(f) + + + diff --git a/Exec/mhd_tests/Alfven/GNUmakefile b/Exec/mhd_tests/Alfven/GNUmakefile index d0420ce36b..18a723c41d 100644 --- a/Exec/mhd_tests/Alfven/GNUmakefile +++ b/Exec/mhd_tests/Alfven/GNUmakefile @@ -1,7 +1,7 @@ PRECISION = DOUBLE PROFILE = FALSE -DEBUG = TRUE +DEBUG = FALSE DIM = 3 diff --git a/Exec/mhd_tests/BrioWu/GNUmakefile b/Exec/mhd_tests/BrioWu/GNUmakefile index d0420ce36b..18a723c41d 100644 --- a/Exec/mhd_tests/BrioWu/GNUmakefile +++ b/Exec/mhd_tests/BrioWu/GNUmakefile @@ -1,7 +1,7 @@ PRECISION = DOUBLE PROFILE = FALSE -DEBUG = TRUE +DEBUG = FALSE DIM = 3 diff --git a/Exec/mhd_tests/species/GNUmakefile b/Exec/mhd_tests/species/GNUmakefile index d601c6bae0..69314fc30b 100644 --- a/Exec/mhd_tests/species/GNUmakefile +++ b/Exec/mhd_tests/species/GNUmakefile @@ -1,7 +1,7 @@ PRECISION = DOUBLE PROFILE = FALSE -DEBUG = TRUE +DEBUG = FALSE DIM = 3 diff --git a/Exec/science/nova/GNUmakefile b/Exec/science/nova/GNUmakefile index 6772310dd6..e2a49d9aca 100644 --- a/Exec/science/nova/GNUmakefile +++ b/Exec/science/nova/GNUmakefile @@ -7,7 +7,7 @@ COMP = gnu USE_MPI = TRUE USE_OMP = FALSE -USE_CUDA = TRUE +USE_CUDA = FALSE USE_REACT = TRUE USE_DIFFUSION = TRUE