summaryrefslogtreecommitdiffstats
path: root/.github/workflows/meson.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/meson.yml')
-rw-r--r--.github/workflows/meson.yml209
1 files changed, 209 insertions, 0 deletions
diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml
new file mode 100644
index 0000000..340cff3
--- /dev/null
+++ b/.github/workflows/meson.yml
@@ -0,0 +1,209 @@
+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