From: Daniel Wagner Date: Thu, 16 Feb 2023 15:22:55 +0000 (+0100) Subject: build: Streamline workflows with nvme-cli X-Git-Tag: v1.4~33 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=496e5791b3c535a812bdaca7a77d98d3e86d2a23;p=users%2Fsagi%2Flibnvme.git build: Streamline workflows with nvme-cli Make the build workflow similiar to the one we have in nvme-cli. - Explicitly configure release/debug build - Explicitly set wrap mode - Explicitly enable/disable --werror (disable it for fallbacks) - Cleanup install depedencies - Merge muon.yml into build.yml - Move coverage into coverage.yml Signed-off-by: Daniel Wagner --- diff --git a/.github/cross/clang.txt b/.github/cross/clang.txt new file mode 100644 index 00000000..1484a3e7 --- /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 index c24df08c..5a6478f7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,209 +1,313 @@ -name: libnvme build +--- +name: build on: push: - branches: [ master ] + branches: [master] pull_request: - branches: [ master ] + branches: [master] workflow_dispatch: jobs: - build-disto: + gcc-debug: + name: gcc debug runs-on: ubuntu-latest steps: - name: install libraries - run: sudo apt-get install libjson-c-dev libdbus-1-dev + 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 with: - setup-options: --werror -Dlibdbus=enabled - options: --verbose action: test - # Preserve meson's log file on failure + setup-options: > + --werror + --buildtype=debug + --wrap-mode=nofallback + meson-version: 0.61.2 - uses: actions/upload-artifact@v3 if: failure() with: - name: Linux_Meson_Testlog - path: build/meson-logs/testlog.txt + name: gcc debug build logs + path: build/meson-logs/meson-log.txt - build-cross-armhf: + gcc-release: + name: gcc release 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 < + --werror + --buildtype=release + --wrap-mode=nofallback + -Dlibdbus=enabled + meson-version: 0.61.2 - uses: actions/upload-artifact@v3 if: failure() with: - name: Linux_Meson_Testlog - path: build/meson-logs/testlog.txt + name: gcc debug build log + path: build/meson-logs/meson-log.txt - build-cross-ppc64le: + clang-release: + name: clang release 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 < + --werror + --buildtype=release + --wrap-mode=nofallback + --cross-file=.github/cross/clang.txt + -Dlibdbus=enabled + meson-version: 0.61.2 - uses: actions/upload-artifact@v3 if: failure() with: - name: Linux_Meson_Testlog - path: build/meson-logs/testlog.txt + name: gcc debug build log + path: build/meson-logs/meson-log.txt - build-cross-s390x: + fallback-shared-libraries: + name: fallback shared libraries 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 < + --werror + --buildtype=release + --wrap-mode=forcefallback + -Dlibdbus=enabled + -Ddbus:werror=false + -Dopenssl:werror=false + meson-version: 0.61.2 - uses: actions/upload-artifact@v3 if: failure() with: - name: Linux_Meson_Testlog - path: build/meson-logs/testlog.txt + name: fallback shared libraries build log + path: build/meson-logs/meson-log.txt - build-fallback: + fallback-static-libraries: + name: fallback static libraries runs-on: ubuntu-latest steps: - name: install libraries - run: sudo apt-get install -y libpam-dev libcap-ng-dev + 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 with: - setup-options: --wrap-mode=forcefallback -Dlibdbus=enabled - options: --verbose action: test + setup-options: > + --werror + --buildtype=release + --wrap-mode=forcefallback + --default-library=static + -Dlibdbus=enabled + -Ddbus:werror=false + -Dopenssl:werror=false meson-version: 0.61.2 - # Preserve meson's log file on failure - uses: actions/upload-artifact@v3 if: failure() with: - name: Linux_Meson_log + name: fallback static libraries build log path: build/meson-logs/meson-log.txt - build-with-libray-static: + fallback-all-static: + name: fallback all static runs-on: ubuntu-latest steps: - name: install libraries - run: sudo apt-get install -y libpam-dev libcap-ng-dev + 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 with: - setup-options: --wrap-mode=forcefallback --default-library=static -Dlibdbus=enabled - options: --verbose action: test + 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 - # Preserve meson's log file on failure - uses: actions/upload-artifact@v3 if: failure() with: - name: Linux_Meson_log + name: fallback all static build log path: build/meson-logs/meson-log.txt - build-static: + 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 < + --werror + --buildtype=release + --wrap-mode=nofallback + --cross-file=.github/cross/ubuntu-armhf.txt + -Dpython=false meson-version: 0.61.2 - # Preserve meson's log file on failure - uses: actions/upload-artifact@v3 if: failure() with: - name: Linux_Meson_log + name: cross armhf build log path: build/meson-logs/meson-log.txt - code-coverage: + 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 < + --werror + --buildtype=release + --wrap-mode=nofallback + --cross-file=.github/cross/ubuntu-ppc64le.txt + -Dpython=false + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: cross ppc64le build log + path: build/meson-logs/meson-log.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 < + --werror + --buildtype=release + --wrap-mode=nofallback + --cross-file=.github/cross/ubuntu-s390x.txt + -Dpython=false + meson-version: 0.61.2 + - uses: actions/upload-artifact@v3 + if: failure() with: - fail_ci_if_error: false + name: cross s390x build log + path: build/meson-logs/meson-log.txt + + build-muon: + name: muon minimal + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: build muon and samury 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 libnvme + run: | + export PATH=$(pwd)/build-tools/muon/build:$PATH + + muon setup \ + -Dpython=false \ + -Dopenssl=disabled \ + -Dlibdbus=disabled \ + -Djson-c=disabled \ + build + samu -C build diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 00000000..e26ffab8 --- /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/muon.yml b/.github/workflows/muon.yml deleted file mode 100644 index 06d129ce..00000000 --- a/.github/workflows/muon.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- -name: libnvme muon - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build-minimal: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: build muon - 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 libnvme - run: | - export PATH=$(pwd)/build-tools/muon/build:$PATH - - muon setup -Dprefix=/tmp/nvme-cli-muon -Dpython=false -Dopenssl=disabled -Dlibdbus=disabled -Djson-c=disabled build-libnvme - samu -C build-libnvme diff --git a/.github/workflows/python-publish.yml b/.github/workflows/release-python.yml similarity index 95% rename from .github/workflows/python-publish.yml rename to .github/workflows/release-python.yml index 09fef2fb..32bf2d07 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 e0255a88..6ca27417 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 }}