diff options
Diffstat (limited to '')
-rw-r--r-- | .github/AppImageBuilder.yml | 60 | ||||
-rw-r--r-- | .github/azure-pipelines.yml | 35 | ||||
-rw-r--r-- | .github/cross/ubuntu-armhf.txt | 17 | ||||
-rw-r--r-- | .github/cross/ubuntu-ppc64le.txt | 17 | ||||
-rw-r--r-- | .github/dependabot.yml | 7 | ||||
-rw-r--r-- | .github/workflows/appimage.yml | 33 | ||||
-rw-r--r-- | .github/workflows/build.yml | 118 | ||||
-rw-r--r-- | .github/workflows/release.yml | 19 |
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 }} |