summaryrefslogtreecommitdiffstats
path: root/.github/workflows
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 20:01:36 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 20:01:36 +0000
commit62e4c68907d8d33709c2c1f92a161dff00b3d5f2 (patch)
treeadbbaf3acf88ea08f6eeec4b75ee98ad3b07fbdc /.github/workflows
parentInitial commit. (diff)
downloadlnav-62e4c68907d8d33709c2c1f92a161dff00b3d5f2.tar.xz
lnav-62e4c68907d8d33709c2c1f92a161dff00b3d5f2.zip
Adding upstream version 0.11.2.upstream/0.11.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/bins.yml114
-rw-r--r--.github/workflows/c-cpp.yml194
-rw-r--r--.github/workflows/check-md-links.yml12
-rw-r--r--.github/workflows/coverity.yml48
-rw-r--r--.github/workflows/release.yml98
-rw-r--r--.github/workflows/rpmbuild.yml49
-rw-r--r--.github/workflows/tailer-ape.yml37
7 files changed, 552 insertions, 0 deletions
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