From 5d64e8a26388e2abbf6a6585d17392d6e944ae7b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 1 Jul 2023 00:38:51 +0200 Subject: Merging upstream version 2.5. Signed-off-by: Daniel Baumann --- .github/cross/clang.txt | 5 - .github/cross/ubuntu-armhf.txt | 18 -- .github/cross/ubuntu-cross-armhf.txt | 18 ++ .github/cross/ubuntu-cross-ppc64le.txt | 18 ++ .github/cross/ubuntu-cross-s390x.txt | 18 ++ .github/cross/ubuntu-ppc64le.txt | 18 -- .github/cross/ubuntu-s390x.txt | 18 -- .github/workflows/appimage.yml | 34 +++- .github/workflows/build.yml | 350 +++++---------------------------- 9 files changed, 141 insertions(+), 356 deletions(-) delete mode 100644 .github/cross/clang.txt delete mode 100644 .github/cross/ubuntu-armhf.txt create mode 100644 .github/cross/ubuntu-cross-armhf.txt create mode 100644 .github/cross/ubuntu-cross-ppc64le.txt create mode 100644 .github/cross/ubuntu-cross-s390x.txt delete mode 100644 .github/cross/ubuntu-ppc64le.txt delete mode 100644 .github/cross/ubuntu-s390x.txt (limited to '.github') diff --git a/.github/cross/clang.txt b/.github/cross/clang.txt deleted file mode 100644 index 1484a3e..0000000 --- a/.github/cross/clang.txt +++ /dev/null @@ -1,5 +0,0 @@ -[binaries] -c = 'clang' -cpp = 'clang++' -strip = 'strip' -pkgconfig = 'pkg-config' diff --git a/.github/cross/ubuntu-armhf.txt b/.github/cross/ubuntu-armhf.txt deleted file mode 100644 index 41c8328..0000000 --- a/.github/cross/ubuntu-armhf.txt +++ /dev/null @@ -1,18 +0,0 @@ -[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' -exe_wrapper = '/usr/bin/qemu-arm-static' - -[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-cross-armhf.txt b/.github/cross/ubuntu-cross-armhf.txt new file mode 100644 index 0000000..41c8328 --- /dev/null +++ b/.github/cross/ubuntu-cross-armhf.txt @@ -0,0 +1,18 @@ +[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' +exe_wrapper = '/usr/bin/qemu-arm-static' + +[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-cross-ppc64le.txt b/.github/cross/ubuntu-cross-ppc64le.txt new file mode 100644 index 0000000..6baaefb --- /dev/null +++ b/.github/cross/ubuntu-cross-ppc64le.txt @@ -0,0 +1,18 @@ +[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' +exe_wrapper = '/usr/bin/qemu-ppc64le-static' + +[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/cross/ubuntu-cross-s390x.txt b/.github/cross/ubuntu-cross-s390x.txt new file mode 100644 index 0000000..51a3511 --- /dev/null +++ b/.github/cross/ubuntu-cross-s390x.txt @@ -0,0 +1,18 @@ +[binaries] +c = '/usr/bin/s390x-linux-gnu-gcc' +ar = '/usr/s390x-linux-gnu/bin/ar' +strip = '/usr/s390x-linux-gnu/bin/strip' +pkgconfig = '/usr/bin/s390x-linux-gnu-pkg-config' +ld = '/usr/bin/s390x-linux-gnu-ld' +exe_wrapper = '/usr/bin/qemu-s390x-static' + +[properties] +root = '/usr/s390x-linux-gnu' +has_function_printf = true +skip_sanity_check = true + +[host_machine] +system = 'linux' +cpu_family = 's390x' +cpu = '' +endian = 'big' diff --git a/.github/cross/ubuntu-ppc64le.txt b/.github/cross/ubuntu-ppc64le.txt deleted file mode 100644 index 6baaefb..0000000 --- a/.github/cross/ubuntu-ppc64le.txt +++ /dev/null @@ -1,18 +0,0 @@ -[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' -exe_wrapper = '/usr/bin/qemu-ppc64le-static' - -[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/cross/ubuntu-s390x.txt b/.github/cross/ubuntu-s390x.txt deleted file mode 100644 index 51a3511..0000000 --- a/.github/cross/ubuntu-s390x.txt +++ /dev/null @@ -1,18 +0,0 @@ -[binaries] -c = '/usr/bin/s390x-linux-gnu-gcc' -ar = '/usr/s390x-linux-gnu/bin/ar' -strip = '/usr/s390x-linux-gnu/bin/strip' -pkgconfig = '/usr/bin/s390x-linux-gnu-pkg-config' -ld = '/usr/bin/s390x-linux-gnu-ld' -exe_wrapper = '/usr/bin/qemu-s390x-static' - -[properties] -root = '/usr/s390x-linux-gnu' -has_function_printf = true -skip_sanity_check = true - -[host_machine] -system = 'linux' -cpu_family = 's390x' -cpu = '' -endian = 'big' diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index 80b0496..f7b7ae0 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -22,13 +22,45 @@ jobs: python-version: '3.x' - uses: BSFishy/meson-build@v1.0.3 with: - setup-options: --werror --buildtype=release --prefix=/usr + setup-options: > + --werror + --buildtype=release + --prefix=/usr + --force-fallback-for=libnvme + -Dlibnvme:werror=false action: install + meson-version: 0.61.2 - name: build AppImage uses: AppImageCrafters/build-appimage@v1.3 with: recipe: .github/AppImageBuilder.yml - uses: actions/upload-artifact@v3 + name: upload artifacts to github with: name: AppImage path: '*.AppImage*' + + deploy-appimage: + name: deploy AppImage + runs-on: ubuntu-latest + needs: build-appimage + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} + steps: + - name: Download artifact + uses: dawidd6/action-download-artifact@v2 + with: + workflow: ${{ github.event.workflow_run.workflow_id }} + workflow_conclusion: success + - name: FTP Deployer + uses: sand4rt/ftp-deployer@v1.7 + with: + sftp: true + host: ${{ secrets.SFTP_SERVER }} + port: 22 + username: ${{ secrets.SFTP_USERNAME }} + password: ${{ secrets.SFTP_PASSWORD }} + remote_folder: '/upload' + local_folder: '.' + cleanup: false + include: '[ "*", "**/*" ]' + exclude: '[".github/**", ".git/**", "*.env"]' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fae50a5..e3e2fd4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,341 +10,99 @@ on: workflow_dispatch: jobs: - gcc-debug: - name: gcc debug + default: runs-on: ubuntu-latest + strategy: + matrix: + compiler: [gcc, clang] + buildtype: [debug, release] + container: + image: ghcr.io/igaw/linux-nvme/debian:0.30 steps: - - name: install dependencies - run: sudo apt-get install gcc pkg-config libjson-c-dev libhugetlbfs-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 - -Dlibnvme: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 - - gcc-release: - name: gcc release - runs-on: ubuntu-latest - steps: - - name: install dependencies - run: sudo apt-get install gcc pkg-config libjson-c-dev libhugetlbfs-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 - -Dlibnvme: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 - - clang-release: - name: clang release - runs-on: ubuntu-latest - steps: - - name: install dependencies - run: sudo apt-get install clang pkg-config libjson-c-dev libhugetlbfs-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 - --cross-file=.github/cross/clang.txt - -Dlibnvme: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-shared-libraries: - name: fallback shared libraries - runs-on: ubuntu-latest - steps: - - name: install dependencies - 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=shared - -Dlibnvme: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 + - name: build + run: | + scripts/build.sh -b ${{ matrix.buildtype }} -c ${{ matrix.compiler }} - uses: actions/upload-artifact@v3 + name: upload logs if: failure() with: - name: log files + name: logs files path: | - build/meson-logs/*.txt + .build-ci/meson-logs/*.txt - fallback-static-libraries: - name: fallback static libraries + cross: runs-on: ubuntu-latest + strategy: + matrix: + include: + - arch: armhf + port: armhf + compiler: gcc-arm-linux-gnueabihf + packages: + - arch: s390x + port: s390x + compiler: gcc-s390x-linux-gnu + packages: libgcc-s1:s390x + - arch: ppc64le + port: ppc64el + compiler: gcc-powerpc64le-linux-gnu + packges: steps: - - name: install dependencies - 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 - -Dlibnvme: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 - - 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 dpkg --add-architecture ${{ matrix.port }} 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 < - --werror - --buildtype=release - --cross-file=.github/cross/ubuntu-armhf.txt - -Dlibnvme:python=disabled - -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 - - cross-ppc64le: - name: cross ppc64le - runs-on: ubuntu-latest - steps: - - name: set up ppc64le architecture + sudo apt install -y meson pkg-config qemu-user-static ${{ matrix.compiler}} libjson-c-dev:${{ matrix.port }} ${{ matrix.packages }} + - name: build 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 < - --werror - --buildtype=release - --cross-file=.github/cross/ubuntu-ppc64le.txt - -Dlibnvme:werror=false - -Dlibnvme:python=disabled - -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 + scripts/build.sh -b release -c gcc -t ${{ matrix.arch }} cross - uses: actions/upload-artifact@v3 + name: upload logs if: failure() with: name: log files path: | - build/meson-logs/*.txt + .build-ci/meson-logs/*.txt - cross-s390x: - name: cross s390x + fallback-shared-libraries: + name: fallback shared libraries runs-on: ubuntu-latest + container: + image: ghcr.io/igaw/linux-nvme/debian:0.30 + if: github.ref == 'refs/heads/master' 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 < - --werror - --buildtype=release - --cross-file=.github/cross/ubuntu-s390x.txt - -Dlibnvme:werror=false - -Dlibnvme:python=disabled - -Dopenssl:werror=false - meson-version: 0.61.2 - - uses: bsfishy/meson-build@v1.0.3 - name: test + - uses: actions/setup-python@v4 with: - action: test - meson-version: 0.61.2 + python-version: '3.x' + - name: build + run: | + scripts/build.sh -b release -c gcc fallback - uses: actions/upload-artifact@v3 if: failure() with: name: log files path: | - build/meson-logs/*.txt + .build-ci/meson-logs/*.txt - build-minimal: - name: muon minimal + build-muon: + name: muon minimal static runs-on: ubuntu-latest + container: + image: ghcr.io/igaw/linux-nvme/debian:0.30 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: fetch libnvme - run: | - cd subprojects - git clone https://github.com/linux-nvme/libnvme.git - libnvme_ref=$(sed -n "s/revision = \([0-9a-z]\+\)/\1/p" libnvme.wrap) - git -C libnvme checkout $libnvme_ref - name: build run: | - export PATH=$(pwd)/build-tools/muon/build:$PATH - - muon setup \ - -Dlibnvme:python=disabled \ - -Dlibnvme:json-c=disabled \ - -Djson-c=disabled \ - build - samu -C build - - name: test - run: | - export PATH=$(pwd)/build-tools/muon/build:$PATH - - muon -C build test + scripts/build.sh -m muon -- cgit v1.2.3