Skip to content

Sanity check for end-of-line #372

Sanity check for end-of-line

Sanity check for end-of-line #372

Workflow file for this run

name: Compile & test
# Run whenever we push to any branch other than [coverity-scan], or if we
# manually trigger a workflow.
on:
push:
branches:
- '**'
- '!coverity-scan'
workflow_dispatch:
env:
# Shared variables amongst all projects / platforms / compilers.
CFLAGS_ALL: -std=c99 -O2
CFLAGS_CLANG_LIBCPERCIVA: -Wall -Wextra -Werror -Weverything
-Wno-#warnings -Wno-pedantic -Wno-padded
-Wno-format-nonliteral
-Wno-disabled-macro-expansion
-Wno-missing-noreturn -Wno-reserved-id-macro
-Wno-unused-macros
-Wno-documentation-unknown-command
CFLAGS_GCC_LIBCPERCIVA: -Wall -Wextra -Werror -Wpedantic
-pedantic-errors -Wno-clobbered
# Variables for specific projects / platforms / compilers.
LIBARCHIVE_OBJECTS: tar/tarsnap-bsdtar.o tar/tarsnap-getdate.o
tar/tarsnap-read.o tar/tarsnap-subst.o
tar/tarsnap-tree.o tar/tarsnap-util.o
tar/tarsnap-write.o libarchive/libarchive.a
CFLAGS_CLANG_PROJECT: -Wno-undef -Wno-implicit-fallthrough
CFLAGS_GCC_PROJECT: -Wno-cpp
# Needed for major() / minor() / makedev() thing.
CFLAGS_LIBARCHIVE_GCC: -Wno-error
CFLAGS_OSX: -Wno-poison-system-directories
-Wno-deprecated-declarations
LDFLAGS_OSX:
jobs:
Ubuntu:
name: Ubuntu
runs-on: ubuntu-20.04
steps:
- name: Update apt-get
run: sudo apt-get update
- name: Install software
run: sudo apt-get install --no-install-recommends valgrind e2fslibs-dev
autoconf-archive
- name: Checkout code
uses: actions/checkout@v3
- name: autoreconf
run:
autoreconf -i
- name: configure with clang
env:
CC: clang-10
CFLAGS: ${{ env.CFLAGS_ALL }}
run: ./configure
- name: Compile libarchive with clang
env:
CC: clang-10
# We need to use more permissive CFLAGS for libarchive code.
CFLAGS: ${{ env.CFLAGS_ALL }}
run: make ${{ env.LIBARCHIVE_OBJECTS }}
- name: Compile with clang
env:
CC: clang-10
CFLAGS: ${{ env.CFLAGS_ALL }}
${{ env.CFLAGS_CLANG_LIBCPERCIVA }}
${{ env.CFLAGS_CLANG_PROJECT }}
# make(1) doesn't automatically override the CFLAGS macro set inside
# Makefile with the environment variable.
run: make CFLAGS="${{ env.CFLAGS }}"
- name: Test clang binaries
env:
USE_VALGRIND: 1
run: make test VERBOSE=1
- name: Clean
run: make clean
- name: configure with gcc
env:
CC: gcc-10
CFLAGS: ${{ env.CFLAGS_ALL }}
run: ./configure
- name: Compile libarchive with gcc
env:
CC: gcc-10
# We need to use more permissive CFLAGS for libarchive code.
CFLAGS: ${{ env.CFLAGS_ALL }}
${{ env.CFLAGS_LIBARCHIVE_GCC }}
run: make ${{ env.LIBARCHIVE_OBJECTS }}
- name: Compile with gcc
env:
CC: gcc-10
CFLAGS: ${{ env.CFLAGS_ALL }}
${{ env.CFLAGS_GCC_LIBCPERCIVA }}
${{ env.CFLAGS_GCC_PROJECT }}
# make(1) doesn't automatically override the CFLAGS macro set inside
# Makefile with the environment variable.
run: make CFLAGS="${{ env.CFLAGS }}"
- name: Test gcc binaries
env:
USE_VALGRIND: 1
run: make test VERBOSE=1
- name: Check for untracked files
run: test -z "$(git status --porcelain=v1)"
macOS:
name: macOS
runs-on: macOS-11
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install software
run: brew install automake
- name: autoreconf
run: autoreconf -i
- name: configure with clang
env:
CC: clang
CFLAGS: ${{ env.CFLAGS_ALL }}
${{ env.CFLAGS_OSX }}
LDFLAGS: ${{ env.LDFLAGS_OSX }}
run: ./configure
- name: Compile libarchive with clang
env:
CC: clang
# We need to use more permissive CFLAGS for libarchive code.
CFLAGS: ${{ env.CFLAGS_ALL }}
run: make ${{ env.LIBARCHIVE_OBJECTS }}
- name: Compile with clang
env:
CC: clang
CFLAGS: ${{ env.CFLAGS_ALL }}
${{ env.CFLAGS_CLANG_LIBCPERCIVA }}
${{ env.CFLAGS_CLANG_PROJECT }}
${{ env.CFLAGS_OSX }}
LDFLAGS: ${{ env.LDFLAGS_OSX }}
# make(1) doesn't automatically override the CFLAGS macro set inside
# Makefile with the environment variable.
run: make CFLAGS="${{ env.CFLAGS }}"
- name: Tests clang binaries
run: make test VERBOSE=1