build: Unify checksumming behavior

As a rule, dist scripts will always output sha-256 and sha-512 sums but
the checksums files will be generated only on releases.
This commit is contained in:
Bruno
2025-02-10 08:46:41 -03:00
parent 095727b074
commit 0c1d11dc86
5 changed files with 65 additions and 40 deletions

View File

@ -786,7 +786,7 @@ dist-flatpak-weekly:
artifacts:
expose_as: 'Linux flatpak'
paths:
- org.gimp.GIMP.Nightly.flatpak
- build/linux/flatpak/_Output/
expire_in: 8 days
dist-installer-weekly:

View File

@ -430,17 +430,25 @@ file "./$APPIMAGETOOL_APP_NAME"
#if [ "$CI_COMMIT_TAG" = "$(git describe --all | sed 's|tags/||')" ]; then
# mv ${APPIMAGETOOL_APP_NAME}.zsync GIMP-${CHANNEL}-${ARCH}.AppImage.zsync
#fi
echo -e "\e[0Ksection_end:`date +%s`:${ARCH}_making\r\e[0K"
# 6. GENERATE SHASUMS
echo -e "\e[0Ksection_start:`date +%s`:${ARCH}_trust[collapsed=true]\r\e[0KChecksumming $APPIMAGETOOL_APP_NAME"
if [ "$CI_COMMIT_TAG" = "$(git describe --all | sed 's|tags/||')" ]; then
sha256sum $APPIMAGETOOL_APP_NAME > $APPIMAGETOOL_APP_NAME.SHA256SUMS
fi
echo "(INFO): $APPIMAGETOOL_APP_NAME SHA-256: $(sha256sum $APPIMAGETOOL_APP_NAME | cut -d ' ' -f 1)"
if [ "$CI_COMMIT_TAG" = "$(git describe --all | sed 's|tags/||')" ]; then
sha512sum $APPIMAGETOOL_APP_NAME > $APPIMAGETOOL_APP_NAME.SHA512SUMS
fi
echo "(INFO): $APPIMAGETOOL_APP_NAME SHA-512: $(sha512sum $APPIMAGETOOL_APP_NAME | cut -d ' ' -f 1)"
echo -e "\e[0Ksection_end:`date +%s`:${ARCH}_trust\r\e[0K"
if [ "$GITLAB_CI" ]; then
output_dir='build/linux/appimage/_Output'
mkdir -p $output_dir
mv GIMP*.AppImage* $output_dir
if [ "$CI_COMMIT_TAG" = "$(git describe --all | sed 's|tags/||')" ]; then
echo "(INFO): generating checksums for $APPIMAGETOOL_APP_NAME"
sha256sum $output_dir/$APPIMAGETOOL_APP_NAME > $output_dir/$APPIMAGETOOL_APP_NAME.SHA256SUMS
sha512sum $output_dir/$APPIMAGETOOL_APP_NAME > $output_dir/$APPIMAGETOOL_APP_NAME.SHA512SUMS
fi
fi
echo -e "\e[0Ksection_end:`date +%s`:${ARCH}_making\r\e[0K"
done

View File

@ -3,6 +3,9 @@
set -e
APP_ID='org.gimp.GIMP.Nightly'
if [ "$GITLAB_CI" ]; then
# Extract previously exported OSTree repo/
tar xf repo.tar --warning=no-timestamp
@ -11,11 +14,25 @@ fi
# Generate a Flatpak "bundle" to be tested with GNOME runtime installed
# (it is NOT a real/full bundle, deps from GNOME runtime are not bundled)
echo -e "\e[0Ksection_start:`date +%s`:flat_making[collapsed=true]\r\e[0KPackaging repo as org.gimp.GIMP.Nightly.flatpak"
flatpak build-bundle repo org.gimp.GIMP.Nightly.flatpak --runtime-repo=https://nightly.gnome.org/gnome-nightly.flatpakrepo org.gimp.GIMP.Nightly ${BRANCH}
echo -e "\e[0Ksection_start:`date +%s`:flat_making[collapsed=true]\r\e[0KPackaging repo as ${APP_ID}.flatpak"
flatpak build-bundle repo ${APP_ID}.flatpak --runtime-repo=https://nightly.gnome.org/gnome-nightly.flatpakrepo ${APP_ID} ${BRANCH}
echo -e "\e[0Ksection_end:`date +%s`:flat_making\r\e[0K"
# Generate shasums for .flatpak
echo -e "\e[0Ksection_start:`date +%s`:flat_trust[collapsed=true]\r\e[0KChecksumming ${APP_ID}.flatpak"
echo "(INFO): ${APP_ID}.flatpak SHA-256: $(sha256sum ${APP_ID}.flatpak | cut -d ' ' -f 1)"
echo "(INFO): ${APP_ID}.flatpak SHA-512: $(sha512sum ${APP_ID}.flatpak | cut -d ' ' -f 1)"
echo -e "\e[0Ksection_end:`date +%s`:flat_trust\r\e[0K"
if [ "$GITLAB_CI" ]; then
output_dir='build/linux/flatpak/_Output'
mkdir -p $output_dir
mv ${APP_ID}* $output_dir
fi
# Publish GIMP repo in GNOME nightly
# We take the commands from 'flatpak_ci_initiative.yml'
if [ "$GITLAB_CI" ] && [ "$CI_COMMIT_BRANCH" = "$CI_DEFAULT_BRANCH" ]; then

View File

@ -233,7 +233,6 @@ if ("$LASTEXITCODE" -gt '0' -or "$?" -eq 'False')
Set-Location $GIMP_BASE
Write-Output "$([char]27)[0Ksection_end:$(Get-Date -UFormat %s -Millisecond 0):installer_making$([char]13)$([char]27)[0K"
# Clean changes in the bundles and Inno installation
## Revert revisioning
foreach ($bundle in $supported_archs)
@ -251,22 +250,31 @@ Move-Item "$twain_list_file.bak" $twain_list_file
Remove-Item "$INNO_PATH\Languages\Unofficial" -Recurse -Force
# 6. GENERATE CHECKSUMS IN GNU FORMAT
Write-Output "$([char]27)[0Ksection_start:$(Get-Date -UFormat %s -Millisecond 0):installer_trust[collapsed=true]$([char]13)$([char]27)[0KChecksumming $INSTALLER"
## (We use .NET directly because 'sha*sum' does NOT support BOM from pre-PS6 'Set-Content')
$Utf8NoBomEncoding = New-Object -TypeName System.Text.UTF8Encoding -ArgumentList $False
$sha256 = (Get-FileHash $INSTALLER -Algorithm SHA256 | Select-Object -ExpandProperty Hash).ToLower()
if ($CI_COMMIT_TAG)
{
[System.IO.File]::WriteAllText("$GIMP_BASE\$INSTALLER.SHA256SUMS", "$sha256 *$INSTALLER", $Utf8NoBomEncoding)
#Set-Content $INSTALLER.SHA256SUMS "$sha256 *$INSTALLER" -Encoding utf8NoBOM -NoNewline
}
Write-Output "(INFO): $INSTALLER SHA-256: $sha256"
$sha512 = (Get-FileHash $INSTALLER -Algorithm SHA512 | Select-Object -ExpandProperty Hash).ToLower()
if ($CI_COMMIT_TAG)
{
[System.IO.File]::WriteAllText("$GIMP_BASE\$INSTALLER.SHA512SUMS", "$sha512 *$INSTALLER", $Utf8NoBomEncoding)
#Set-Content $INSTALLER.SHA512SUMS "$sha512 *$INSTALLER" -Encoding utf8NoBOM -NoNewline
}
Write-Output "(INFO): $INSTALLER SHA-512: $sha512"
Write-Output "$([char]27)[0Ksection_end:$(Get-Date -UFormat %s -Millisecond 0):installer_trust$([char]13)$([char]27)[0K"
if ($GITLAB_CI)
{
# GitLab doesn't support wildcards when using "expose_as" so let's move to a dir
$output_dir = "$GIMP_BASE\build\windows\installer\_Output"
New-Item $output_dir -ItemType Directory | Out-Null
Move-Item $GIMP_BASE\$INSTALLER $output_dir
# Generate checksums in common "sha*sum" format
if ($CI_COMMIT_TAG)
{
Write-Output "(INFO): generating checksums for $INSTALLER"
# (We use .NET directly because 'sha*sum' does NOT support BOM from pre-PS6 'Set-Content')
$Utf8NoBomEncoding = New-Object -TypeName System.Text.UTF8Encoding -ArgumentList $False
[System.IO.File]::WriteAllText("$output_dir\$INSTALLER.SHA256SUMS", "$((Get-FileHash $output_dir\$INSTALLER -Algorithm SHA256 | Select-Object -ExpandProperty Hash).ToLower()) *$INSTALLER", $Utf8NoBomEncoding)
#Set-Content $output_dir\$INSTALLER.SHA256SUMS "$((Get-FileHash $output_dir\$INSTALLER -Algorithm SHA256 | Select-Object -ExpandProperty Hash).ToLower()) *$INSTALLER" -Encoding utf8NoBOM -NoNewline
[System.IO.File]::WriteAllText("$output_dir\$INSTALLER.SHA512SUMS", "$((Get-FileHash $output_dir\$INSTALLER -Algorithm SHA512 | Select-Object -ExpandProperty Hash).ToLower()) *$INSTALLER", $Utf8NoBomEncoding)
#Set-Content $output_dir\$INSTALLER.SHA512SUMS "$((Get-FileHash $output_dir\$INSTALLER -Algorithm SHA512 | Select-Object -ExpandProperty Hash).ToLower()) *$INSTALLER" -Encoding utf8NoBOM -NoNewline
}
Move-Item $GIMP_BASE\$INSTALLER* $output_dir
}

View File

@ -392,7 +392,7 @@ if (-not $GITLAB_CI -and $wack -eq 'WACK')
# (Partner Center does the same thing, for free, before publishing)
if ($CI_COMMIT_TAG -notmatch 'GIMP_[0-9]*_[0-9]*_[0-9]*' -and $GIMP_CI_MS_STORE -notlike 'MSIXUPLOAD*' -and $MSIX_ARTIFACT -notlike "*msixupload")
{
Write-Output "$([char]27)[0Ksection_start:$(Get-Date -UFormat %s -Millisecond 0):msix_sign${msix_arch}[collapsed=true]$([char]13)$([char]27)[0KSelf-signing $MSIX_ARTIFACT (for testing purposes)"
Write-Output "$([char]27)[0Ksection_start:$(Get-Date -UFormat %s -Millisecond 0):msix_trust${msix_arch}[collapsed=true]$([char]13)$([char]27)[0KSelf-signing $MSIX_ARTIFACT (for testing purposes)"
signtool sign /debug /fd sha256 /a /f $(Resolve-Path build\windows\store\pseudo-gimp*.pfx) /p eek $MSIX_ARTIFACT
if ("$LASTEXITCODE" -gt '0' -or "$?" -eq 'False')
{
@ -400,7 +400,13 @@ if ($CI_COMMIT_TAG -notmatch 'GIMP_[0-9]*_[0-9]*_[0-9]*' -and $GIMP_CI_MS_STORE
exit 1
}
Copy-Item build\windows\store\pseudo-gimp*.pfx pseudo-gimp.pfx -Recurse
Write-Output "$([char]27)[0Ksection_end:$(Get-Date -UFormat %s -Millisecond 0):msix_sign${msix_arch}$([char]13)$([char]27)[0K"
## Generate checksums
$sha256 = (Get-FileHash $MSIX_ARTIFACT -Algorithm SHA256 | Select-Object -ExpandProperty Hash).ToLower()
Write-Output "(INFO): $MSIX_ARTIFACT SHA-256: $sha256"
$sha512 = (Get-FileHash $MSIX_ARTIFACT -Algorithm SHA512 | Select-Object -ExpandProperty Hash).ToLower()
Write-Output "(INFO): $MSIX_ARTIFACT SHA-512: $sha512"
Write-Output "$([char]27)[0Ksection_end:$(Get-Date -UFormat %s -Millisecond 0):msix_trust${msix_arch}$([char]13)$([char]27)[0K"
}
@ -414,20 +420,6 @@ if ($GITLAB_CI)
{
Copy-Item pseudo-gimp.pfx $OUTPUT_DIR
}
# Generate checksums in common "sha*sum" format
if ($CI_COMMIT_TAG -match 'GIMP_[0-9]*_[0-9]*_[0-9]*')
{
Write-Output "(INFO): generating checksums for $MSIX_ARTIFACT"
# (We use .NET directly because 'sha*sum' does NOT support BOM from pre-PS6 'Set-Content')
$Utf8NoBomEncoding = New-Object -TypeName System.Text.UTF8Encoding -ArgumentList $False
[System.IO.File]::WriteAllText("$OUTPUT_DIR\$MSIX_ARTIFACT.SHA256SUMS", "$((Get-FileHash $OUTPUT_DIR\$MSIX_ARTIFACT -Algorithm SHA256 | Select-Object -ExpandProperty Hash).ToLower()) *$MSIX_ARTIFACT", $Utf8NoBomEncoding)
#Set-Content $OUTPUT_DIR\$MSIX_ARTIFACT.SHA256SUMS "$((Get-FileHash $OUTPUT_DIR\$MSIX_ARTIFACT -Algorithm SHA256 | Select-Object -ExpandProperty Hash).ToLower()) *$MSIX_ARTIFACT" -Encoding utf8NoBOM -NoNewline
[System.IO.File]::WriteAllText("$OUTPUT_DIR\$MSIX_ARTIFACT.SHA512SUMS", "$((Get-FileHash $OUTPUT_DIR\$MSIX_ARTIFACT -Algorithm SHA512 | Select-Object -ExpandProperty Hash).ToLower()) *$MSIX_ARTIFACT", $Utf8NoBomEncoding)
#Set-Content $OUTPUT_DIR\$MSIX_ARTIFACT.SHA512SUMS "$((Get-FileHash $OUTPUT_DIR\$MSIX_ARTIFACT -Algorithm SHA512 | Select-Object -ExpandProperty Hash).ToLower()) *$MSIX_ARTIFACT" -Encoding utf8NoBOM -NoNewline
}
}