From f18c917ef83e90c6fcd3cb2579cc9e63b881796c Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin <kolyshkin@gmail.com> Date: Mon, 31 Mar 2025 13:52:06 -0700 Subject: [PATCH] ci: run golangci-lint on freebsd This could have been done by simply running GOOS=freebsd ./bin/golangci-lint run [options] ./... on Linux, but some freebsd code is using cgo (i.e. is linked to C libraries), so real freebsd environment is required. This also fixes the issue of ignoring linter errors for Windows and Darwin (exit 0), introduced by commit c9b108d5b38. Fixes: c9b108d5b38 ("Bump golangci-lint to v2.0.2") Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com> --- .cirrus.yml | 2 ++ hack/golangci-lint.sh | 38 +++++++++++++++----------- pkg/machine/e2e/config_freebsd_test.go | 7 +++++ 3 files changed, 31 insertions(+), 16 deletions(-) create mode 100644 pkg/machine/e2e/config_freebsd_test.go diff --git a/.cirrus.yml b/.cirrus.yml index eefed89ac4..2f7be8f50a 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -330,6 +330,8 @@ freebsd_alt_build_task: image_family: freebsd-13-4 setup_script: - pkg install -y gpgme bash go-md2man gmake gsed gnugrep go pkgconf zstd + lint_script: + - gmake golangci-lint build_amd64_script: - gmake podman-release # This task cannot make use of the shared repo.tar.zst artifact and must diff --git a/hack/golangci-lint.sh b/hack/golangci-lint.sh index a7b11e5115..457d56e7a1 100755 --- a/hack/golangci-lint.sh +++ b/hack/golangci-lint.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Run golangci-lint with different sets of build tags. set -e @@ -8,23 +8,29 @@ set -e # a very old version, where modern features (like `declare -A`) are # absent. -echo "Linting for GOOS=$GOOS" -# Special case: for Darwin and Windows only "remote" linting is possible and required. -if [[ "$GOOS" == "windows" || "$GOOS" == "darwin" ]]; then - ( - set -x - ./bin/golangci-lint run --build-tags="remote,containers_image_openpgp" "$@" - ) - exit 0 -fi +declare -a EXTRA_TAGS -# Normal case (Linux): run linter for various sets of build tags. -TAGS="apparmor,seccomp,selinux" -for EXTRA_TAGS in "" ",systemd" ",remote"; do +echo "Linting for GOOS=$GOOS" +case "$GOOS" in + windows|darwin) + # For Darwin and Windows, only "remote" linting is possible and required. + TAGS="remote,containers_image_openpgp" + ;; + freebsd) + TAGS="containers_image_openpgp" + EXTRA_TAGS=(",remote") + ;; + *) + # Assume Linux: run linter for various sets of build tags. + TAGS="apparmor,seccomp,selinux" + EXTRA_TAGS=(",systemd" ",remote") +esac + +for EXTRA in "" "${EXTRA_TAGS[@]}"; do + # Use set -x in a subshell to make it easy for a developer to copy-paste + # the command-line to focus or debug a single, specific linting category. ( - # Make it really easy for a developer to copy-paste the command-line - # to focus or debug a single, specific linting category. set -x - ./bin/golangci-lint run --build-tags="${TAGS}${EXTRA_TAGS}" "$@" + ./bin/golangci-lint run --build-tags="${TAGS}${EXTRA}" "$@" ) done diff --git a/pkg/machine/e2e/config_freebsd_test.go b/pkg/machine/e2e/config_freebsd_test.go new file mode 100644 index 0000000000..46107a10dd --- /dev/null +++ b/pkg/machine/e2e/config_freebsd_test.go @@ -0,0 +1,7 @@ +package e2e_test + +const podmanBinary = "../../../bin/podman-remote" + +func getOtherProvider() string { + return "" +}