summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/cross/clang.txt5
-rw-r--r--.github/workflows/build.yml389
-rw-r--r--.github/workflows/coverage.yml38
-rw-r--r--.github/workflows/meson.yml209
-rw-r--r--.github/workflows/release-python.yml (renamed from .github/workflows/python-publish.yml)8
-rw-r--r--.github/workflows/release.yml13
6 files changed, 444 insertions, 218 deletions
diff --git a/.github/cross/clang.txt b/.github/cross/clang.txt
new file mode 100644
index 0000000..1484a3e
--- /dev/null
+++ b/.github/cross/clang.txt
@@ -0,0 +1,5 @@
+[binaries]
+c = 'clang'
+cpp = 'clang++'
+strip = 'strip'
+pkgconfig = 'pkg-config'
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 }}