Aggiornare gli SHA256SUMS nei PKGBUILD su macOS

gentilmente offerto da chatgpt

Se hai mai lavorato con Arch Linux, potresti aver utilizzato il comando updpkgsums per aggiornare automaticamente i checksum SHA256 nei file PKGBUILD. Tuttavia, su macOS non esiste uno strumento nativo con la stessa funzione. In questo articolo, vedremo come risolvere il problema con uno script Bash personalizzato per macOS.

Perché aggiornare i checksum nei PKGBUILD?

Un file PKGBUILD contiene informazioni sulla costruzione di un pacchetto, inclusi i file sorgente e i relativi checksum SHA256. Questi checksum garantiscono l’integrità e l’autenticità dei file durante la compilazione. Se un file sorgente cambia (ad esempio per un aggiornamento della versione), i vecchi checksum non saranno più validi e il processo di costruzione fallirà.

Su Arch Linux, updpkgsums è lo strumento standard per aggiornare questi checksum. Ma su macOS, dobbiamo creare una soluzione alternativa.

Script Bash per aggiornare i checksum

Ecco uno script Bash chiamato update_sha256sums.sh che esegue lo stesso compito di updpkgsums su macOS:

#!/bin/bash

# Nome del file PKGBUILD
PKGBUILD="PKGBUILD"

# Estrai il valore della variabile pkgname dal PKGBUILD
pkgname=$(awk -F'=' '/^pkgname=/ {print $2}' "$PKGBUILD" | tr -d '"')

# Estrai i nomi dei file sorgente dal PKGBUILD e sostituisci ${pkgname} con il valore effettivo
sources=($(awk '/^source=\(/,/^\)/' "$PKGBUILD" | sed -e 's/source=(//' -e 's/)//' -e 's/[" ]//g' -e "s/\${pkgname}/$pkgname/g"))

# Calcola i checksum e aggiorna il PKGBUILD
sha256sums=()
for source in "${sources[@]}"; do
    if [ -f "$source" ]; then
        checksum=$(shasum -a 256 "$source" | awk '{print $1}')
        sha256sums+=("$checksum")
    fi
done

# Crea la stringa formattata dei checksum
sha256sums_str="sha256sums=(\n"
for sum in "${sha256sums[@]}"; do
    sha256sums_str+="    '$sum'\n"
done
sha256sums_str+=")"

# Sostituisci COMPLETAMENTE il vecchio blocco sha256sums=() senza accodarlo
awk -v new_sums="$sha256sums_str" '
    BEGIN { found=0 }
    /^sha256sums=\(/ { found=1; print new_sums; next }
    found && /^\)/ { found=0; next }
    !found { print }
' "$PKGBUILD" > "$PKGBUILD.tmp" && mv "$PKGBUILD.tmp" "$PKGBUILD"

echo "Checksum aggiornati nel file $PKGBUILD."

Come utilizzare lo script

  1. Salva il codice sopra in un file chiamato update_sha256sums.sh.
  2. Rendi eseguibile lo script con il comando:
   chmod +x update_sha256sums.sh
  1. Posiziona lo script nella stessa directory del file PKGBUILD.
  2. Esegui lo script:
   ./update_sha256sums.sh
  1. Il file PKGBUILD sarà aggiornato con i nuovi checksum SHA256.

Conclusione

Questo semplice script Bash offre una soluzione pratica per gli utenti macOS che necessitano di aggiornare i checksum SHA256 nei file PKGBUILD, replicando la funzione di updpkgsums di Arch Linux. Se lavori spesso con i PKGBUILD su macOS, questo script può essere uno strumento essenziale nel tuo workflow di pacchettizzazione!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *