From 62e4c68907d8d33709c2c1f92a161dff00b3d5f2 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 22:01:36 +0200 Subject: Adding upstream version 0.11.2. Signed-off-by: Daniel Baumann --- .github/workflows/bins.yml | 114 ++++++++++++++++++++ .github/workflows/c-cpp.yml | 194 +++++++++++++++++++++++++++++++++++ .github/workflows/check-md-links.yml | 12 +++ .github/workflows/coverity.yml | 48 +++++++++ .github/workflows/release.yml | 98 ++++++++++++++++++ .github/workflows/rpmbuild.yml | 49 +++++++++ .github/workflows/tailer-ape.yml | 37 +++++++ 7 files changed, 552 insertions(+) create mode 100644 .github/workflows/bins.yml create mode 100644 .github/workflows/c-cpp.yml create mode 100644 .github/workflows/check-md-links.yml create mode 100644 .github/workflows/coverity.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/rpmbuild.yml create mode 100644 .github/workflows/tailer-ape.yml (limited to '.github/workflows') diff --git a/.github/workflows/bins.yml b/.github/workflows/bins.yml new file mode 100644 index 0000000..27a9a04 --- /dev/null +++ b/.github/workflows/bins.yml @@ -0,0 +1,114 @@ +name: bins + +on: + push: + branches: + - master + paths-ignore: + - docs + - README.md + - NEWS.md + workflow_call: + inputs: + lnav_version_number: + description: The version number of the release + required: false + type: string + upload_url: + description: The URL to upload release assets + required: false + type: string + +jobs: + build-musl: + runs-on: ubuntu-latest + container: + image: tstack/lnav-build:1 + env: + LNAV_BASENAME: lnav-${{ inputs.lnav_version_number }} + LNAV_ZIPNAME: lnav-${{ inputs.lnav_version_number }}-x86_64-linux-musl.zip + steps: + - name: checkout + uses: actions/checkout@v3 + - name: make + run: /entrypoint.sh + - name: Build musl package + if: ${{ inputs.lnav_version_number != '' }} + run: >- + mkdir ${{ env.LNAV_BASENAME }} && + cd ${{ env.LNAV_BASENAME }} && + cp ../NEWS.md ../README . && + cp ../lbuild/src/lnav . && + cd .. && + zip -r ${{ env.LNAV_ZIPNAME }} ${{ env.LNAV_BASENAME }} + - name: Upload a Build Artifact + uses: actions/upload-artifact@v3 + with: + # Artifact name + name: lnav-linux-musl-64bit.zip + # A file, directory or wildcard pattern that describes what to upload + path: lbuild/src/lnav + - name: Upload musl-binary archive + uses: actions/upload-release-asset@v1.0.2 + if: ${{ inputs.upload_url != '' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ inputs.upload_url }} + asset_path: ${{ env.LNAV_ZIPNAME }} + asset_name: ${{ env.LNAV_ZIPNAME }} + asset_content_type: application/octet-stream + + build-macos: + runs-on: macos-12 + env: + LNAV_BASENAME: lnav-${{ inputs.lnav_version_number }} + LNAV_ZIPNAME: lnav-${{ inputs.lnav_version_number }}-x86_64-macos.zip + steps: + - name: checkout + uses: actions/checkout@v3 + - name: install packages + run: brew install pcre2 sqlite ncurses xz zstd readline libarchive curl autoconf automake + - name: autogen + run: ./autogen.sh + - name: configure + run: >- + ./configure --enable-static \ + --with-libcurl=/usr \ + --with-pcre2=$(brew --prefix pcre2) \ + --with-sqlite3=$(brew --prefix sqlite3) \ + "CXXFLAGS=-I$(brew --prefix ncurses)/include -g2 -O2" \ + 'CFLAGS=-O2 -g2' \ + "LDFLAGS=-L$(brew --prefix ncurses)/lib -L$(brew --prefix xz)/lib -L$(brew --prefix zstd)/lib/" \ + --with-readline=$(brew --prefix readline) \ + --with-libarchive=$(brew --prefix libarchive) \ + "LIBS=-llzma -lzstd -lbrotlidec-static -liconv -llz4" + - name: make + run: make -j2 + - name: Build macos package + if: ${{ inputs.lnav_version_number != '' }} + run: >- + mkdir ${{ env.LNAV_BASENAME }} && + cd ${{ env.LNAV_BASENAME }} && + cp ../NEWS.md ../README . && + cp ../src/lnav . && + cd .. && + zip -r ${{ env.LNAV_ZIPNAME }} ${{ env.LNAV_BASENAME }} + - name: Upload config.log artifact + uses: actions/upload-artifact@v3 + if: ${{ always() }} + with: + # Artifact name + name: config-log.zip + # A file, directory or wildcard pattern that describes what to upload + path: config.log + - name: Upload macos archive + uses: actions/upload-release-asset@v1.0.2 + if: ${{ inputs.upload_url != '' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ inputs.upload_url }} + asset_path: ${{ env.LNAV_ZIPNAME }} + asset_name: ${{ env.LNAV_ZIPNAME }} + asset_content_type: application/octet-stream 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 diff --git a/.github/workflows/check-md-links.yml b/.github/workflows/check-md-links.yml new file mode 100644 index 0000000..f55b468 --- /dev/null +++ b/.github/workflows/check-md-links.yml @@ -0,0 +1,12 @@ +name: Check Markdown links + +on: push + +jobs: + markdown-link-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - uses: gaurav-nelson/github-action-markdown-link-check@v1 + with: + config-file: '.github/mlc_config.json' diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml new file mode 100644 index 0000000..a081f33 --- /dev/null +++ b/.github/workflows/coverity.yml @@ -0,0 +1,48 @@ +# GitHub actions workflow. +# https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions + +name: Coverity Scan + +on: + push: + branches: [ main ] + + schedule: + # The GH mirroring from Google GoB does not trigger push actions. + # Fire it once a week to provide some coverage. + - cron: '39 2 * * WED' + + # Allow for manual triggers from the web. + workflow_dispatch: + +jobs: + coverity: + 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++ + 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 + - uses: vapier/coverity-scan-action@v1 + with: + command: make -j$(getconf _NPROCESSORS_CONF) + email: ${{ secrets.COVERITY_SCAN_EMAIL }} + token: ${{ secrets.COVERITY_SCAN_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..650f053 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,98 @@ + +name: release +on: + push: + tags: + - '*' +jobs: + create-release: + name: create-release + runs-on: ubuntu-latest + outputs: + upload_url: ${{ steps.release.outputs.upload_url }} + lnav_version_number: ${{ env.LNAV_VERSION_NUMBER }} + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Make release notes + run: make -C release release-NEWS.md + - name: Get the release version from the tag + shell: bash + run: | + # Apparently, this is the right way to get a tag name. Really? + # + # See: https://github.community/t5/GitHub-Actions/How-to-get-just-the-tag-name/m-p/32167/highlight/true#M1027 + echo "LNAV_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + echo "LNAV_VERSION_NUMBER=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + echo "version is: ${{ env.LNAV_VERSION }}" + - name: Create GitHub release + id: release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.LNAV_VERSION }} + release_name: ${{ env.LNAV_VERSION }} + body_path: release/release-NEWS.md + draft: true + + build-binaries: + name: build-binaries + needs: ['create-release'] + uses: ./.github/workflows/bins.yml + secrets: inherit + with: + lnav_version_number: ${{ needs.create-release.outputs.lnav_version_number }} + upload_url: ${{ needs.create-release.outputs.upload_url }} + + build-release: + name: build-release + needs: ['create-release'] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + 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 + zlib1g-dev + - name: autogen + run: ./autogen.sh + - name: configure + run: ./configure --disable-static + - name: make dist + run: >- + make dist dist-bzip2 && + mv -n lnav-*.tar.gz lnav-${{ needs.create-release.outputs.lnav_version_number }}.tar.gz && + mv -n lnav-*.tar.bz2 lnav-${{ needs.create-release.outputs.lnav_version_number }}.tar.bz2 + - name: Upload tgz archive + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-release.outputs.upload_url }} + asset_path: lnav-${{ needs.create-release.outputs.lnav_version_number }}.tar.gz + asset_name: lnav-${{ needs.create-release.outputs.lnav_version_number }}.tar.gz + asset_content_type: application/octet-stream + - name: Upload tbz2 archive + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-release.outputs.upload_url }} + asset_path: lnav-${{ needs.create-release.outputs.lnav_version_number }}.tar.bz2 + asset_name: lnav-${{ needs.create-release.outputs.lnav_version_number }}.tar.bz2 + asset_content_type: application/octet-stream diff --git a/.github/workflows/rpmbuild.yml b/.github/workflows/rpmbuild.yml new file mode 100644 index 0000000..67e6d83 --- /dev/null +++ b/.github/workflows/rpmbuild.yml @@ -0,0 +1,49 @@ + +name: RPM Build + +on: + push: + branches: [ master ] + paths-ignore: + - docs + - README.md + - NEWS.md + tags: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Get the release version from the tag + shell: bash + run: | + # Apparently, this is the right way to get a tag name. Really? + # + # See: https://github.community/t5/GitHub-Actions/How-to-get-just-the-tag-name/m-p/32167/highlight/true#M1027 + echo "LNAV_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + echo "LNAV_VERSION_NUMBER=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + echo "version is: ${{ env.LNAV_VERSION }}" + make -C release lnav.spec + - name: build RPM package + id: rpm + uses: tstack/rpmbuild@master + with: + spec_file: "release/lnav.spec" + + - name: Upload artifact + uses: actions/upload-artifact@v1.0.0 + with: + name: Binary RPM + path: ${{ steps.rpm.outputs.rpm_dir_path }} + + - name: Push to packagecloud.io + uses: tstack/upload-packagecloud@main + if: github.ref_type == 'tag' + with: + userrepo: tstack/lnav + apitoken: ${{ secrets.PACKAGECLOUD_TOKEN }} + packages: ${{ steps.rpm.outputs.rpm_dir_path }}x86_64 + rpmdists: el/8 diff --git a/.github/workflows/tailer-ape.yml b/.github/workflows/tailer-ape.yml new file mode 100644 index 0000000..e487507 --- /dev/null +++ b/.github/workflows/tailer-ape.yml @@ -0,0 +1,37 @@ +name: tailer-ape + +on: + push: + branches: [ master ] + paths-ignore: + - docs + - README.md + - NEWS.md + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: update apt + run: sudo apt-get update + - name: Install packages + run: >- + wget https://github.com/tstack/cosmopolitan/releases/download/v1.0stack/cosmopolitan-amalgamation-1.0-stack.zip && + unzip cosmopolitan-amalgamation-1.0-stack.zip + - name: Build + run: >- + gcc -g -Os -static -nostdlib -nostdinc -fno-pie -no-pie -mno-red-zone + -fno-omit-frame-pointer -pg -mnop-mcount + -o tailer.dbg -I src/tailer + src/tailer/tailer.main.c src/tailer/tailer.c src/tailer/sha-256.c + -fuse-ld=bfd -Wl,-T,ape.lds + -include cosmopolitan.h crt.o ape.o cosmopolitan.a + - name: Objcopy + run: objcopy -S -O binary tailer.dbg src/tailer/tailer.ape + - uses: stefanzweifel/git-auto-commit-action@v4 + with: + # Optional, but recommended + # Defaults to "Apply automatic changes" + commit_message: Update tailer + file_pattern: src/tailer/tailer.ape -- cgit v1.2.3