#!/bin/sh set -eu artifact_dir=${1:-kernel-artifacts} if [ ! -d "$artifact_dir" ]; then echo "No existe el directorio de artifacts: $artifact_dir" >&2 exit 1 fi packages_file=$(mktemp) trap 'rm -f "$packages_file"' EXIT HUP INT TERM found_deb=false for deb in "$artifact_dir"/*.deb; do [ -f "$deb" ] || continue found_deb=true package=$(dpkg-deb -f "$deb" Package) case "$package" in linux-image-*-espos|linux-headers-*-espos) printf '%s\n' "$package" >> "$packages_file" ;; esac done if [ "$found_deb" = false ]; then echo "No se encontraron paquetes .deb en $artifact_dir" >&2 exit 1 fi sort -u "$packages_file" -o "$packages_file" selected_kernel= while IFS= read -r image_package; do case "$image_package" in linux-image-*-espos) kernel=${image_package#linux-image-} kernel=${kernel%-espos} headers_package="linux-headers-${kernel}-espos" if grep -Fxq "$headers_package" "$packages_file"; then if [ -z "$selected_kernel" ] || dpkg --compare-versions "$kernel" gt "$selected_kernel"; then selected_kernel=$kernel fi fi ;; esac done < "$packages_file" if [ -z "$selected_kernel" ]; then echo "No existe una pareja linux-image/linux-headers con la misma versión en los artifacts" >&2 echo "Paquetes detectados:" >&2 sed 's/^/ /' "$packages_file" >&2 exit 1 fi image_package="linux-image-${selected_kernel}-espos" headers_package="linux-headers-${selected_kernel}-espos" # This output is deliberately source-compatible shell with values restricted # to Debian binary package-name characters by the patterns above. printf 'KERNEL_VERSION=%s\n' "$selected_kernel" printf 'IMAGE_PACKAGE=%s\n' "$image_package" printf 'HEADERS_PACKAGE=%s\n' "$headers_package" printf 'METAPACKAGE_VERSION=%s-1\n' "$selected_kernel"