diff options
Diffstat (limited to '.github/workflows/c-cpp.yml')
-rw-r--r-- | .github/workflows/c-cpp.yml | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml new file mode 100644 index 0000000..66188af --- /dev/null +++ b/.github/workflows/c-cpp.yml @@ -0,0 +1,194 @@ +name: ci-build + +on: + push: + branches: [ master ] + paths-ignore: + - docs + - README.md + - NEWS.md + pull_request: + branches: [ master ] + +jobs: + coverage: + runs-on: self-hosted + steps: + - uses: actions/checkout@v3 +# - name: Update apt +# run: sudo apt-get update +# - name: Install packages +# run: sudo apt-get install libncursesw5-dev libpcre++-dev libsqlite3-dev libbz2-dev libcurl4-openssl-dev libreadline-dev zlib1g-dev lcov +# - name: install cpp-coveralls +# run: pip install --user cpp-coveralls + - name: autogen + run: ./autogen.sh + - name: configure + run: ./configure --disable-static --enable-code-coverage --enable-debug CFLAGS=-g3 CXXFLAGS=-g3 + - name: make + run: make -j3 + - name: make check + run: make check + - name: upload cover + env: + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + TRAVIS_JOB_ID: ${{ github.run_id }}-${{ github.run_number }} + run: >- + coveralls + --exclude src/doctest.hh + --exclude src/fmtlib + --exclude src/ghc + --exclude src/k_merge_tree.h + --exclude src/mapbox + --exclude src/pugixml + --exclude src/base/result.h + --exclude src/safe + --exclude src/spookyhash + --exclude src/third-party + --exclude src/ww898 + --exclude src/yajl + --exclude test + --exclude src/data_scanner_re.cc + --gcov-options '\-lp' + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Update apt + run: sudo apt-get update + - name: Install packages + run: >- + sudo apt-get install -y + make + automake + autoconf + g++ + libpcre2-dev + libpcre3-dev + libncurses-dev + libsqlite3-dev + libbz2-dev + libcurl4-openssl-dev + libreadline-dev + tshark + zlib1g-dev + - name: autogen + run: ./autogen.sh + - name: configure + run: ./configure --disable-static + - name: make + run: make -j4 + - name: make distcheck + run: make distcheck -j4 || (test -e lnav-*/_build/sub/src/tailer/test-suite.log && cat lnav-*/_build/sub/src/tailer/test-suite.log && false) || (test -e lnav-*/_build/sub/test/test-suite.log && cat lnav-*/_build/sub/test/test-suite.log && false) + - name: Upload a Build Artifact + uses: actions/upload-artifact@v3 + with: + # Artifact name + name: lnav-tot-linux-64bit.zip + # A file, directory or wildcard pattern that describes what to upload + path: src/lnav + + build-windows: + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + include: + - { icon: '🟦', sys: MSYS } + name: ${{ matrix.icon }} ${{ matrix.sys }} + defaults: + run: + shell: msys2 {0} + steps: + - name: '🧰 Checkout' + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: '${{ matrix.icon }} Setup MSYS2' + uses: msys2/setup-msys2@v2 + with: + msystem: ${{matrix.sys}} + update: true + install: >- + autoconf + automake + gcc + git + make + zip + msys/libarchive-devel + msys/libbz2-devel + msys/libcurl-devel + msys/libidn2-devel + msys/liblzma-devel + msys/libreadline-devel + msys/libsqlite-devel + msys/libunistring-devel + msys/ncurses-devel + msys/pcre2-devel + msys/zlib-devel + - name: '🔧 Generate and configure' + run: | + set -x + ./autogen.sh + mkdir -p ../lnav-build + cd ../lnav-build + export PREFIX=$PWD/lnav + ../lnav/configure \ + --enable-static \ + LDFLAGS="-static" \ + CPPFLAGS="-I../src -I../../lnav/src -I../../lnav/src/fmtlib -O2 -DNCURSES_STATIC" \ + CXXFLAGS="-fPIC" \ + CFLAGS="-fPIC" \ + LIBS="-larchive -lssh2 -llzma -llz4 -lz -lzstd -lssl -lcrypto -liconv -lunistring -lbrotlicommon" \ + --sysconfdir=/etc \ + --prefix=$PREFIX || cat config.log + - name: '🚧 Make (do not use -j)' + run: | + set -x + cd ../lnav-build + make CFLAGS="-c" + strip -s src/lnav.exe + - name: '📦 Package for distribution' + run: | + set -x + cd ../lnav-build + export PREFIX=$PWD/lnav + make install + ldd $PREFIX/bin/lnav.exe | grep /usr | cut -d' ' -f3 | xargs -I {} cp {} $PREFIX/bin/ + mkdir -p lib/terminfo/78 + cp -r /usr/lib/terminfo/78/xterm-256color lib/terminfo/78/ + zip -r ../lnav/lnav-${{ github.ref_name }}-windows-amd64.zip lnav lib + - name: '💉 Basic test' + run: | + set -x + cd ../lnav-build + export PREFIX=$PWD/lnav + $PREFIX/bin/lnav.exe -n ../lnav/test/logfile_multiline.0 + - name: '⬆️ Upload a Build Artifact' + uses: actions/upload-artifact@v3 + with: + name: lnav-${{ github.ref_name }}-windows-amd64.zip + path: lnav-${{ github.ref_name }}-windows-amd64.zip + if-no-files-found: error +# - name: '🎁 Create Release' +# id: create_release +# uses: actions/create-release@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# tag_name: ${{ github.ref_name }} +# release_name: Release ${{ github.ref_name }} +# draft: false +# prerelease: false +# - name: '⬆️ Upload Release Asset' +# id: upload-release-asset +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps +# asset_path: ./lnav-${{ github.ref_name }}-windows-amd64.zip +# asset_name: lnav-${{ github.ref_name }}-windows-amd64.zip +# asset_content_type: application/zip |