fix(ja4ebpf): split bpf2go generate into Ja4Tc + Ja4Ssl, fix RPM systemd-rpm-macros

- Use two separate //go:generate directives (Ja4Tc for tc_capture.c, Ja4Ssl
  for uprobe_ssl.c) to avoid duplicate LICENSE symbol and multi-file clang issue
- Update loader.go to hold tcObjs/sslObjs separately with correct field names:
  UprobeSslSetFd, UprobeSslReadEntry, UretprobeSslReadExit,
  KprobeAccept4Entry, KretprobeAccept4Exit
- Add systemd-rpm-macros to all three RPM build stages (el8/el9/el10)
  so that %{_unitdir} macro resolves correctly
- RPMs now build successfully for el8, el9, el10

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
toto
2026-04-11 23:21:11 +02:00
parent a1e4c1dad5
commit 3b047b680a
155 changed files with 197011 additions and 599 deletions

View File

@ -0,0 +1,190 @@
#!/usr/bin/env bash
# =============================================================================
# run-distro-matrix.sh — Test toutes les stacks sur toutes les distributions
#
# Usage :
# ./run-distro-matrix.sh # toutes stacks × toutes distros
# ./run-distro-matrix.sh --stacks=nginx,apache # stacks choisies
# ./run-distro-matrix.sh --distros=el9,el10 # distros choisies
# ./run-distro-matrix.sh --no-down # garder les stacks actives
# ./run-distro-matrix.sh --fail-fast # arrêter au premier échec
#
# Variables d'environnement :
# MATRIX_STACKS — liste des stacks séparées par virgules (défaut: toutes)
# MATRIX_DISTROS — liste des distros séparées par virgules (défaut: el8,el9,el10)
# =============================================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
CYAN='\033[0;36m'; BOLD='\033[1m'; NC='\033[0m'
log() { echo -e "${CYAN}[matrix]${NC} $(date +%H:%M:%S) $*"; }
pass() { echo -e "${GREEN}$*${NC}"; }
fail() { echo -e "${RED}$*${NC}"; }
warn() { echo -e "${YELLOW}$*${NC}"; }
# ── Correspondance distro → image Docker ──────────────────────────────────────
declare -A DISTRO_IMAGES=(
[el8]="almalinux:8"
[el9]="rockylinux:9"
[el10]="almalinux:10"
)
# ── Disponibilité des packages par distro ─────────────────────────────────────
# hitch n'est pas disponible sur el8 (pas dans EPEL 8)
declare -A STACK_SKIP=(
[el8_hitch-varnish]="hitch non disponible dans EPEL 8"
)
# ── Valeurs par défaut ────────────────────────────────────────────────────────
ALL_STACKS=(apache nginx nginx-varnish hitch-varnish)
ALL_DISTROS=(el8 el9 el10)
STACKS=()
DISTROS=()
KEEP_UP=false
FAIL_FAST=false
# ── Parse des arguments ───────────────────────────────────────────────────────
for arg in "$@"; do
case "$arg" in
--stacks=*)
IFS=',' read -ra STACKS <<< "${arg#--stacks=}" ;;
--distros=*)
IFS=',' read -ra DISTROS <<< "${arg#--distros=}" ;;
--no-down)
KEEP_UP=true ;;
--fail-fast)
FAIL_FAST=true ;;
esac
done
# Utiliser les valeurs env si définies
if [ -n "${MATRIX_STACKS:-}" ]; then
IFS=',' read -ra STACKS <<< "$MATRIX_STACKS"
fi
if [ -n "${MATRIX_DISTROS:-}" ]; then
IFS=',' read -ra DISTROS <<< "$MATRIX_DISTROS"
fi
# Défauts
[ "${#STACKS[@]}" -eq 0 ] && STACKS=("${ALL_STACKS[@]}")
[ "${#DISTROS[@]}" -eq 0 ] && DISTROS=("${ALL_DISTROS[@]}")
# ── Résultats ─────────────────────────────────────────────────────────────────
declare -A RESULTS # RESULTS[distro_stack] = PASS|FAIL|SKIP
# ── Lancement de la matrice ───────────────────────────────────────────────────
TOTAL_PASS=0
TOTAL_FAIL=0
TOTAL_SKIP=0
log "============================================================"
log "${BOLD}MATRICE DE TESTS : ${#DISTROS[@]} distros × ${#STACKS[@]} stacks${NC}"
log "Distros : ${DISTROS[*]}"
log "Stacks : ${STACKS[*]}"
log "============================================================"
echo ""
for distro in "${DISTROS[@]}"; do
base_image="${DISTRO_IMAGES[$distro]:-}"
if [ -z "$base_image" ]; then
warn "Distro inconnue '$distro' — ignorée. Valides: ${!DISTRO_IMAGES[*]}"
continue
fi
log "┌──────────────────────────────────────────────────────────"
log "│ DISTRO : $distro (image: $base_image)"
log "└──────────────────────────────────────────────────────────"
for stack in "${STACKS[@]}"; do
key="${distro}_${stack}"
# Vérifier si cette combinaison est à ignorer
skip_reason="${STACK_SKIP[$key]:-}"
if [ -n "$skip_reason" ]; then
warn "SKIP [$distro/$stack] : $skip_reason"
RESULTS[$key]="SKIP"
TOTAL_SKIP=$((TOTAL_SKIP + 1))
continue
fi
runner="$SCRIPT_DIR/$stack/run-tests.sh"
if [ ! -f "$runner" ]; then
warn "Runner introuvable : $runner"
RESULTS[$key]="MISSING"
TOTAL_FAIL=$((TOTAL_FAIL + 1))
continue
fi
chmod +x "$runner"
log " → Stack '$stack' sur $distro..."
# Passer BASE_IMAGE via l'env + flag --no-down si demandé
extra_args=()
$KEEP_UP && extra_args+=(--no-down)
set +e
PLATFORM_BASE_IMAGE="$base_image" bash "$runner" "${extra_args[@]}"
rc=$?
set -e
if [ $rc -eq 0 ]; then
pass "[$distro/$stack] RÉUSSI"
RESULTS[$key]="PASS"
TOTAL_PASS=$((TOTAL_PASS + 1))
else
fail "[$distro/$stack] ÉCHOUÉ (exit $rc)"
RESULTS[$key]="FAIL"
TOTAL_FAIL=$((TOTAL_FAIL + 1))
if $FAIL_FAST; then
log "FAIL-FAST activé — arrêt."
break 2
fi
fi
echo ""
done
echo ""
done
# ── Résumé en tableau ─────────────────────────────────────────────────────────
log "============================================================"
log "${BOLD}RÉSUMÉ DE LA MATRICE${NC}"
log "============================================================"
# En-tête
printf "%-16s" "DISTRO \\ STACK"
for stack in "${STACKS[@]}"; do
printf " %-18s" "$stack"
done
echo ""
printf "%-16s" "----------------"
for stack in "${STACKS[@]}"; do
printf " %-18s" "------------------"
done
echo ""
for distro in "${DISTROS[@]}"; do
printf "%-16s" "$distro"
for stack in "${STACKS[@]}"; do
key="${distro}_${stack}"
result="${RESULTS[$key]:-N/A}"
case "$result" in
PASS) printf " ${GREEN}%-18s${NC}" "PASS ✓" ;;
FAIL) printf " ${RED}%-18s${NC}" "FAIL ✗" ;;
SKIP) printf " ${YELLOW}%-18s${NC}" "SKIP ⚠" ;;
MISSING) printf " ${YELLOW}%-18s${NC}" "MISSING" ;;
*) printf " %-18s" "$result" ;;
esac
done
echo ""
done
echo ""
log "Résultat global : ${GREEN}${TOTAL_PASS} PASS${NC} | ${RED}${TOTAL_FAIL} FAIL${NC} | ${YELLOW}${TOTAL_SKIP} SKIP${NC}"
if [ $TOTAL_FAIL -gt 0 ]; then
exit 1
fi
exit 0