summaryrefslogtreecommitdiffstats
path: root/.github/workflows/c-cpp.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/c-cpp.yml')
-rw-r--r--.github/workflows/c-cpp.yml191
1 files changed, 191 insertions, 0 deletions
diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml
new file mode 100644
index 0000000..af9bdbf
--- /dev/null
+++ b/.github/workflows/c-cpp.yml
@@ -0,0 +1,191 @@
+name: ci-build
+
+on:
+ push:
+ branches: [ master ]
+ tags: ['*']
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ coverage:
+ runs-on: self-hosted
+ steps:
+ - uses: actions/checkout@v2
+# - 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@v2
+ - 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@v2
+ 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@v2
+ 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@v2
+ 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