summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/AppImageBuilder.yml60
-rw-r--r--.github/azure-pipelines.yml35
-rw-r--r--.github/cross/ubuntu-armhf.txt17
-rw-r--r--.github/cross/ubuntu-ppc64le.txt17
-rw-r--r--.github/dependabot.yml7
-rw-r--r--.github/workflows/appimage.yml33
-rw-r--r--.github/workflows/build.yml118
-rw-r--r--.github/workflows/release.yml19
8 files changed, 306 insertions, 0 deletions
diff --git a/.github/AppImageBuilder.yml b/.github/AppImageBuilder.yml
new file mode 100644
index 0000000..3675edf
--- /dev/null
+++ b/.github/AppImageBuilder.yml
@@ -0,0 +1,60 @@
+# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
+version: 1
+script:
+ # Ensure that the mksquashfs tool is installed (workaround for the AppImageCrafters/build-appimage GHA)
+ - which mksquashfs || apt install squashfs-tools
+ # fake icons
+ - mkdir -p AppDir/usr/share/icons/hicolor/64x64/apps
+ - touch AppDir/usr/share/icons/hicolor/64x64/apps/nvme-cli.png
+
+AppDir:
+ path: AppDir
+ app_info:
+ id: linux-nvme.nvme-cli
+ name: nvme-cli
+ version: latest
+ icon: nvme-cli
+ exec: usr/sbin/nvme
+ exec_args: $@
+ apt:
+ arch: amd64
+ allow_unauthenticated: true
+ sources:
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
+ key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920D1991BC93C'
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
+ include:
+ - libjson-c5
+ - libhugetlbfs0
+ files:
+ include:
+ - /lib64/libcrypto.so.3
+ - /lib64/libdbus-1.so.3
+ - /lib64/libjson-c.so.5
+ exclude:
+ - usr/share/man
+ - usr/share/doc/*/README.*
+ - usr/share/doc/*/changelog.*
+ - usr/share/doc/*/NEWS.*
+ - usr/share/doc/*/TODO.*
+ test:
+ fedora-30:
+ image: appimagecrafters/tests-env:fedora-30
+ command: ./AppRun
+ debian-stable:
+ image: appimagecrafters/tests-env:debian-stable
+ command: ./AppRun
+ archlinux-latest:
+ image: appimagecrafters/tests-env:archlinux-latest
+ command: ./AppRun
+ centos-7:
+ image: appimagecrafters/tests-env:centos-7
+ command: ./AppRun
+ ubuntu-xenial:
+ image: appimagecrafters/tests-env:ubuntu-xenial
+ command: ./AppRun
+AppImage:
+ update-information: 'gh-releases-zsync|linux-nvme|nvme-cli|latest|*x86_64.AppImage.zsync'
+ arch: x86_64
diff --git a/.github/azure-pipelines.yml b/.github/azure-pipelines.yml
new file mode 100644
index 0000000..4b52903
--- /dev/null
+++ b/.github/azure-pipelines.yml
@@ -0,0 +1,35 @@
+---
+# Do not run following tests
+# - exclude data varification tests, too slow
+# - nvme/010
+# - nvme/011
+# - nvme/012
+# - nvme/013
+
+trigger: none # Disable CI triggers.
+
+jobs:
+ - job: blktests
+ timeoutInMinutes: 5
+ pool:
+ name: linux-nvme
+ steps:
+ - script: |
+ meson $(Agent.TempDirectory)/build
+ ninja -C $(Agent.TempDirectory)/build
+ displayName: Build nvme-cli
+ - script: |
+ git clone --depth 1 https://github.com/osandov/blktests.git $(Agent.TempDirectory)/blktests
+ displayName: Clone blktests
+ - script: |
+ cd $(Agent.TempDirectory)/blktests
+ sudo sh -c 'PATH=$(Agent.TempDirectory)/build:$PATH nvme_trtype=tcp ./check -x nvme/010 -x nvme/011 -x nvme/012 -x nvme/013 nvme'
+ displayName: Run blktests for NVMe transport TCP
+ - script: |
+ cd $(Agent.TempDirectory)/blktests
+ sudo sh -c 'PATH=$(Agent.TempDirectory)/build:$PATH nvme_trtype=rdma ./check -x nvme/010 -x nvme/011 -x nvme/012 -x nvme/013 nvme'
+ displayName: Run blktests for NVMe transport RDMA
+ - script: |
+ cd $(Agent.TempDirectory)/blktests
+ sudo sh -c 'PATH=$(Agent.TempDirectory)/build:$PATH nvme_trtype=fc ./check -x nvme/010 -x nvme/011 -x nvme/012 -x nvme/013 nvme'
+ displayName: Run blktests for NVMe transport FC
diff --git a/.github/cross/ubuntu-armhf.txt b/.github/cross/ubuntu-armhf.txt
new file mode 100644
index 0000000..2eee70b
--- /dev/null
+++ b/.github/cross/ubuntu-armhf.txt
@@ -0,0 +1,17 @@
+[binaries]
+c = '/usr/bin/arm-linux-gnueabihf-gcc'
+ar = '/usr/arm-linux-gnueabihf/bin/ar'
+strip = '/usr/arm-linux-gnueabihf/bin/strip'
+pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'
+ld = '/usr/bin/arm-linux/gnueabihf-ld'
+
+[properties]
+root = '/usr/arm-linux-gnueabihf'
+has_function_printf = true
+skip_sanity_check = true
+
+[host_machine]
+system = 'linux'
+cpu_family = 'arm'
+cpu = 'armv7'
+endian = 'little'
diff --git a/.github/cross/ubuntu-ppc64le.txt b/.github/cross/ubuntu-ppc64le.txt
new file mode 100644
index 0000000..4cf6a92
--- /dev/null
+++ b/.github/cross/ubuntu-ppc64le.txt
@@ -0,0 +1,17 @@
+[binaries]
+c = '/usr/bin/powerpc64le-linux-gnu-gcc'
+ar = '/usr/powerpc64le-linux-gnu/bin/ar'
+strip = '/usr/powerpc64le-linux-gnu/bin/strip'
+pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'
+ld = '/usr/bin/powerpc64le-linux-gnu-ld'
+
+[properties]
+root = '/usr/powerpc64le-linux-gnu'
+has_function_printf = true
+skip_sanity_check = true
+
+[host_machine]
+system = 'linux'
+cpu_family = 'ppc64'
+cpu = ''
+endian = 'little'
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..23c4cb3
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,7 @@
+---
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml
new file mode 100644
index 0000000..c64dfb3
--- /dev/null
+++ b/.github/workflows/appimage.yml
@@ -0,0 +1,33 @@
+---
+name: AppImage
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+env:
+ DESTDIR: ../AppDir
+
+jobs:
+ build-appimage:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: install dependencies
+ run: sudo apt-get install libjson-c-dev libdbus-1-dev libhugetlbfs-dev
+ - uses: actions/setup-python@v4
+ with:
+ python-version: '3.x'
+ - uses: BSFishy/meson-build@v1.0.3
+ with:
+ setup-options: --werror --buildtype=release --prefix=/usr
+ action: install
+ - name: build AppImage
+ uses: AppImageCrafters/build-appimage@v1.3
+ with:
+ recipe: .github/AppImageBuilder.yml
+ - uses: actions/upload-artifact@v3
+ with:
+ name: AppImage
+ path: '*.AppImage*'
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..805a962
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,118 @@
+---
+name: build
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+ workflow_dispatch:
+
+jobs:
+ build-distro:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: install dependencies
+ run: sudo apt-get install libjson-c-dev libhugetlbfs-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
+ action: test
+
+ 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
+ - name: install libraries
+ run: sudo apt install uuid-dev:armhf libjson-c-dev:armhf libdbus-1-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 -Dlibnvme:python=false
+ options: --verbose
+ action: build
+ - 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
+ - name: install libraries
+ run: sudo apt install uuid-dev:ppc64el libjson-c-dev:ppc64el libdbus-1-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 -Dlibnvme:python=false
+ options: --verbose
+ action: build
+ - 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 dependencies
+ 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: --werror -Dopenssl:werror=false -Ddbus:werror=false --wrap-mode=forcefallback
+ options: --verbose
+ action: test
+ meson-version: 0.61.2
+
+ build-static:
+ runs-on: ubuntu-latest
+ steps:
+ - name: install dependencies
+ 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: --werror -Dopenssl:werror=false -Ddbus:werror=false --wrap-mode=forcefallback --default-library=static
+ options: --verbose
+ action: test
+ meson-version: 0.61.2
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..e4ccb70
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,19 @@
+---
+name: releases
+
+on:
+ push:
+ branches: [ master ]
+ tags:
+ - '**'
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ if: startsWith(github.ref, 'refs/tags/v')
+ permissions:
+ contents: write
+ steps:
+ - uses: actions/checkout@v3
+ - uses: ncipollo/release-action@v1
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}