diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/build.yml | 389 | ||||
-rw-r--r-- | .github/workflows/coverage.yml | 38 | ||||
-rw-r--r-- | .github/workflows/meson.yml | 209 | ||||
-rw-r--r-- | .github/workflows/release-python.yml (renamed from .github/workflows/python-publish.yml) | 8 | ||||
-rw-r--r-- | .github/workflows/release.yml | 13 |
5 files changed, 439 insertions, 218 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..b914aa0 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,389 @@ +--- +name: build + +on: + push: + branches: [master] + pull_request: + branches: [master] + + workflow_dispatch: + +jobs: + gcc-debug: + name: gcc debug + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get install gcc pkg-config libjson-c-dev libssl-dev python3-dev + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: BSFishy/meson-build@v1.0.3 + name: build + with: + action: build + setup-options: > + --werror + --buildtype=debug + --wrap-mode=nofallback + meson-version: 0.61.2 + - uses: BSFishy/meson-build@v1.0.3 + name: test + with: + action: test + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + name: upload logs + if: failure() + with: + name: logs files + path: | + build/meson-logs/*.txt + + gcc-release: + name: gcc release + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get install gcc pkg-config libjson-c-dev libdbus-1-dev python3-dev + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: BSFishy/meson-build@v1.0.3 + name: build + with: + action: build + setup-options: > + --werror + --buildtype=release + --wrap-mode=nofallback + -Dlibdbus=enabled + meson-version: 0.61.2 + - uses: BSFishy/meson-build@v1.0.3 + name: test + with: + action: test + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + name: upload logs + if: failure() + with: + name: log files + path: | + build/meson-logs/*.txt + + clang-release: + name: clang release + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get install clang pkg-config libjson-c-dev libdbus-1-dev python3-dev + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: BSFishy/meson-build@v1.0.3 + name: build + with: + action: build + setup-options: > + --werror + --buildtype=release + --wrap-mode=nofallback + --cross-file=.github/cross/clang.txt + -Dlibdbus=enabled + meson-version: 0.61.2 + - uses: BSFishy/meson-build@v1.0.3 + name: test + with: + action: test + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + name: upload logs + if: failure() + with: + name: log files + path: | + build/meson-logs/*.txt + + fallback-shared-libraries: + name: fallback shared libraries + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get install libpam-dev libcap-ng-dev + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: BSFishy/meson-build@v1.0.3 + name: build + with: + action: build + setup-options: > + --werror + --buildtype=release + --wrap-mode=forcefallback + -Dlibdbus=enabled + -Ddbus:werror=false + -Dopenssl:werror=false + meson-version: 0.61.2 + - uses: BSFishy/meson-build@v1.0.3 + name: test + with: + action: test + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: log files + path: | + build/meson-logs/*.txt + + fallback-static-libraries: + name: fallback static libraries + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get install libpam-dev libcap-ng-dev + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: BSFishy/meson-build@v1.0.3 + name: build + with: + action: build + setup-options: > + --werror + --buildtype=release + --wrap-mode=forcefallback + --default-library=static + -Dlibdbus=enabled + -Ddbus:werror=false + -Dopenssl:werror=false + meson-version: 0.61.2 + - uses: BSFishy/meson-build@v1.0.3 + name: test + with: + action: test + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + name: upload logs + if: failure() + with: + name: log files + path: | + build/meson-logs/*.txt + + fallback-all-static: + name: fallback all static + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get install libpam-dev libcap-ng-dev + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: BSFishy/meson-build@v1.0.3 + name: build + with: + action: build + setup-options: > + --werror + --buildtype=release + --wrap-mode=forcefallback + --default-library=static + --cross-file=.github/cross/ubuntu-static.txt + -Dlibdbus=enabled + -Ddbus:werror=false + -Dopenssl:werror=false + meson-version: 0.61.2 + - uses: BSFishy/meson-build@v1.0.3 + name: test + with: + action: test + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + name: upload logs + if: failure() + with: + name: log files + path: | + build/meson-logs/*.txt + + cross-armhf: + name: cross armhf + runs-on: ubuntu-latest + steps: + - name: set up arm architecture + run: | + export release=$(lsb_release -c -s) + sudo dpkg --add-architecture armhf + sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list + sudo dd of=/etc/apt/sources.list.d/armhf.list <<EOF + deb [arch=armhf] http://ports.ubuntu.com/ $release main universe restricted" + deb [arch=armhf] http://ports.ubuntu.com/ $release-updates main universe restricted" + EOF + sudo apt update + - name: install armhf compiler + run: sudo apt install gcc-arm-linux-gnueabihf pkg-config qemu-user-static + - name: install libraries + run: sudo apt install libjson-c-dev:armhf + - uses: actions/checkout@v3 + - uses: BSFishy/meson-build@v1.0.3 + name: build + with: + action: build + setup-options: > + --werror + --buildtype=release + --wrap-mode=nofallback + --cross-file=.github/cross/ubuntu-armhf.txt + -Dpython=disabled + meson-version: 0.61.2 + - uses: BSFishy/meson-build@v1.0.3 + name: test + with: + action: test + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + name: upload logs + if: failure() + with: + name: log files + path: | + build/meson-logs/*.txt + + cross-ppc64le: + name: cross ppc64le + runs-on: ubuntu-latest + steps: + - name: set up ppc64le architecture + run: | + export release=$(lsb_release -c -s) + sudo dpkg --add-architecture ppc64el + sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list + sudo dd of=/etc/apt/sources.list.d/ppc64el.list <<EOF + deb [arch=ppc64el] http://ports.ubuntu.com/ $release main universe restricted" + deb [arch=ppc64el] http://ports.ubuntu.com/ $release-updates main universe restricted" + EOF + sudo apt update + - name: install powerpc64le compiler + run: sudo apt install gcc-powerpc64le-linux-gnu pkg-config qemu-user-static + - name: install libraries + run: sudo apt install libjson-c-dev:ppc64el + - uses: actions/checkout@v3 + - uses: BSFishy/meson-build@v1.0.3 + name: build + with: + action: build + setup-options: > + --werror + --buildtype=release + --wrap-mode=nofallback + --cross-file=.github/cross/ubuntu-ppc64le.txt + -Dpython=disabled + meson-version: 0.61.2 + - uses: BSFishy/meson-build@v1.0.3 + name: test + with: + action: test + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + name: upload logs + if: failure() + with: + name: log files + path: | + build/meson-logs/*.txt + + cross-s390x: + name: cross s390x + runs-on: ubuntu-latest + steps: + - name: set up s390x architecture + run: | + export release=$(lsb_release -c -s) + sudo dpkg --add-architecture s390x + sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list + sudo dd of=/etc/apt/sources.list.d/s390x.list <<EOF + deb [arch=s390x] http://ports.ubuntu.com/ $release main universe restricted" + deb [arch=s390x] http://ports.ubuntu.com/ $release-updates main universe restricted" + EOF + sudo apt update + - name: install s390x compiler + run: sudo apt install gcc-s390x-linux-gnu pkg-config qemu-user-static + - name: install libraries + run: sudo apt install libjson-c-dev:s390x + - uses: actions/checkout@v3 + - uses: BSFishy/meson-build@v1.0.3 + name: build + with: + action: build + setup-options: > + --werror + --buildtype=release + --wrap-mode=nofallback + --cross-file=.github/cross/ubuntu-s390x.txt + -Dpython=disabled + meson-version: 0.61.2 + - uses: BSFishy/meson-build@v1.0.3 + name: test + with: + action: test + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + name: upload logs + if: failure() + with: + name: log files + path: | + build/meson-logs/*.txt + + build-muon: + name: muon minimal + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: build muon and samurai build-tool + run: | + mkdir build-tools + cd build-tools + git clone --depth 1 https://git.sr.ht/~lattis/muon + cd muon + + export CC=gcc + export ninja=build/samu + + ./tools/bootstrap_ninja.sh build + ./bootstrap.sh build + + build/muon setup \ + -Dlibcurl=disabled \ + -Dlibarchive=disabled \ + -Ddocs=disabled \ + -Dsamurai=disabled \ + build + build/samu -C build + build/muon -C build test + - name: build + run: | + export PATH=$(pwd)/build-tools/muon/build:$PATH + + muon setup \ + -Dpython=disabled \ + -Dopenssl=disabled \ + -Dlibdbus=disabled \ + -Djson-c=disabled \ + build + samu -C build + - name: test + run: | + export PATH=$(pwd)/build-tools/muon/build:$PATH + + muon -C build test diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 0000000..e26ffab --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,38 @@ +--- +name: coverage + +on: + push: + branches: [master] + +jobs: + code-coverage: + name: code coverage + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get install libjson-c-dev libdbus-1-dev lcov + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: BSFishy/meson-build@v1.0.3 + with: + # Can't use 'coverage' here, see + # https://github.com/BSFishy/meson-build/issues/4 + action: test + options: --verbose + setup-options: > + --werror + --buildtype=release + --wrap-mode=nofallback + -Dlibdbus=enabled + -Db_coverage=true + meson-version: 0.61.2 + - name: Generate Coverage Report + # Can't use meson here, see + # https://github.com/mesonbuild/meson/issues/7895 + run: ninja -C build coverage --verbose + - uses: codecov/codecov-action@v3 + with: + fail_ci_if_error: false diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml deleted file mode 100644 index 340cff3..0000000 --- a/.github/workflows/meson.yml +++ /dev/null @@ -1,209 +0,0 @@ -name: libnvme meson CI - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - - workflow_dispatch: - -jobs: - build-disto: - runs-on: ubuntu-latest - steps: - - name: install libraries - run: sudo apt-get install libjson-c-dev libdbus-1-dev - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - uses: BSFishy/meson-build@v1.0.3 - with: - setup-options: --werror - options: --verbose - action: test - # Preserve meson's log file on failure - - uses: actions/upload-artifact@v3 - if: failure() - with: - name: Linux_Meson_Testlog - path: build/meson-logs/testlog.txt - - build-cross-armhf: - runs-on: ubuntu-latest - steps: - - name: set up arm architecture - run: | - export release=$(lsb_release -c -s) - sudo dpkg --add-architecture armhf - sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list - sudo dd of=/etc/apt/sources.list.d/armhf.list <<EOF - deb [arch=armhf] http://ports.ubuntu.com/ $release main universe restricted" - deb [arch=armhf] http://ports.ubuntu.com/ $release-updates main universe restricted" - EOF - sudo apt update - - name: install armhf compiler - run: sudo apt install gcc-arm-linux-gnueabihf pkg-config qemu-user-static - - name: install libraries - run: sudo apt install libjson-c-dev:armhf - - uses: actions/checkout@v3 - - uses: BSFishy/meson-build@v1.0.3 - with: - # suppress python for now; the python headers currently assume native - setup-options: --werror --cross-file=.github/cross/ubuntu-armhf.txt --wrap-mode=nofallback -Dpython=false - options: --verbose - action: test - - uses: actions/upload-artifact@v3 - if: failure() - with: - name: Linux_Meson_Testlog - path: build/meson-logs/testlog.txt - - build-cross-ppc64le: - runs-on: ubuntu-latest - steps: - - name: set up ppc64le architecture - run: | - export release=$(lsb_release -c -s) - sudo dpkg --add-architecture ppc64el - sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list - sudo dd of=/etc/apt/sources.list.d/ppc64el.list <<EOF - deb [arch=ppc64el] http://ports.ubuntu.com/ $release main universe restricted" - deb [arch=ppc64el] http://ports.ubuntu.com/ $release-updates main universe restricted" - EOF - sudo apt update - - name: install powerpc64le compiler - run: sudo apt install gcc-powerpc64le-linux-gnu pkg-config qemu-user-static - - name: install libraries - run: sudo apt install libjson-c-dev:ppc64el - - uses: actions/checkout@v3 - - uses: BSFishy/meson-build@v1.0.3 - with: - # suppress python for now; the python headers currently assume native - setup-options: --werror --cross-file=.github/cross/ubuntu-ppc64le.txt --wrap-mode=nofallback -Dpython=false - options: --verbose - action: test - - uses: actions/upload-artifact@v3 - if: failure() - with: - name: Linux_Meson_Testlog - path: build/meson-logs/testlog.txt - - build-cross-s390x: - runs-on: ubuntu-latest - steps: - - name: set up s390x architecture - run: | - export release=$(lsb_release -c -s) - sudo dpkg --add-architecture s390x - sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list - sudo dd of=/etc/apt/sources.list.d/s390x.list <<EOF - deb [arch=s390x] http://ports.ubuntu.com/ $release main universe restricted" - deb [arch=s390x] http://ports.ubuntu.com/ $release-updates main universe restricted" - EOF - sudo apt update - - name: install s390x compiler - run: sudo apt install gcc-s390x-linux-gnu pkg-config qemu-user-static - - name: install libraries - run: sudo apt install libjson-c-dev:s390x - - uses: actions/checkout@v3 - - uses: BSFishy/meson-build@v1.0.3 - with: - # suppress python for now; the python headers currently assume native - setup-options: --werror --cross-file=.github/cross/ubuntu-s390x.txt --wrap-mode=nofallback -Dpython=false - options: --verbose - action: test - - uses: actions/upload-artifact@v3 - if: failure() - with: - name: Linux_Meson_Testlog - path: build/meson-logs/testlog.txt - - build-fallback: - runs-on: ubuntu-latest - steps: - - name: install libraries - run: sudo apt-get install -y libpam-dev libcap-ng-dev - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - uses: BSFishy/meson-build@v1.0.3 - with: - setup-options: --wrap-mode=forcefallback - options: --verbose - action: test - meson-version: 0.61.2 - # Preserve meson's log file on failure - - uses: actions/upload-artifact@v3 - if: failure() - with: - name: Linux_Meson_log - path: build/meson-logs/meson-log.txt - - build-with-libray-static: - runs-on: ubuntu-latest - steps: - - name: install libraries - run: sudo apt-get install -y libpam-dev libcap-ng-dev - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - uses: BSFishy/meson-build@v1.0.3 - with: - setup-options: --wrap-mode=forcefallback --default-library=static - options: --verbose - action: test - meson-version: 0.61.2 - # Preserve meson's log file on failure - - uses: actions/upload-artifact@v3 - if: failure() - with: - name: Linux_Meson_log - path: build/meson-logs/meson-log.txt - - build-static: - runs-on: ubuntu-latest - steps: - - name: install libraries - run: sudo apt-get install -y libpam-dev libcap-ng-dev - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - uses: BSFishy/meson-build@v1.0.3 - with: - setup-options: --wrap-mode=forcefallback --cross-file=.github/cross/ubuntu-static.txt --default-library=static - options: --verbose - action: test - meson-version: 0.61.2 - # Preserve meson's log file on failure - - uses: actions/upload-artifact@v3 - if: failure() - with: - name: Linux_Meson_log - path: build/meson-logs/meson-log.txt - - code-coverage: - runs-on: ubuntu-latest - steps: - - name: install libraries - run: sudo apt-get install libjson-c-dev libdbus-1-dev lcov - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - uses: BSFishy/meson-build@v1.0.3 - with: - setup-options: -Db_coverage=true --werror - options: --verbose - # Can't use 'coverage' here, see https://github.com/BSFishy/meson-build/issues/4 - action: test - - name: Generate Coverage Report - # Can't use meson here, see https://github.com/mesonbuild/meson/issues/7895 - run: ninja -C build coverage --verbose - - uses: codecov/codecov-action@v3 - with: - fail_ci_if_error: false diff --git a/.github/workflows/python-publish.yml b/.github/workflows/release-python.yml index 09fef2f..32bf2d0 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/release-python.yml @@ -1,12 +1,14 @@ -name: Build and upload to PyPI +--- +name: release python on: push: - branches: [ master ] + branches: [master] tags: - '**' pull_request: - branches: [ master ] + branches: [master] + workflow_dispatch: jobs: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e0255a8..6ca2741 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,9 @@ -name: Releases +--- +name: release on: push: - branches: [ master ] + branches: [master] tags: - '**' @@ -13,7 +14,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@v3 - - uses: ncipollo/release-action@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/checkout@v3 + - uses: ncipollo/release-action@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} |