Skip to content

Compression Differences Between Source Artifact and GitHub Zip #5441

@ellahathaway

Description

@ellahathaway

When producing source artifact zip using the CreateSourceArtifacts task, the resulting zip does not match the one produced by GitHub because of compression differences between the two artifacts.

Investigation Summary

I normalized two zips for the 10.0.101 release by running a script that repacks zip files deterministically, preserving their original metadata (timestamps, file modes, comments, etc.) while using a fixed compression method (ZIP_DEFLATED) and an optional compression level. The zips included are:

  • dotnet-10.0.101.zip (from GitHub)
  • dotnet-source-10.0.101-servicing.25569.105.zip (produced by the CreateSourceArtifacts task)
> sha256sum dotnet-10.0.101.zip 
5b6d0957d2ac8a48e3125729b562b80bd78c6365f3e3e7c5bb8e1b1c1741f4f5  dotnet-10.0.101.zip

> sha256sum dotnet-source-10.0.101-servicing.25569.105.zip 
5c058d90f5bb2db93a5975857ce3a0a3ac16bba73a6a7d33c076c172ff6081b0  dotnet-source-10.0.101-servicing.25569.105.zip

> python3 rezip_deterministic.py dotnet-10.0.101.zip dotnet-10.0.101.norm.zip
Wrote deterministic zip: dotnet-10.0.101.norm.zip

> python3 rezip_deterministic.py dotnet-source-10.0.101-servicing.25569.105.zip dotnet-source-10.0.101-servicing.25569.105.norm.zip
Wrote deterministic zip: dotnet-source-10.0.101-servicing.25569.105.norm.zip

> sha256sum dotnet-10.0.101.norm.zip 
6f3d802cf7b4bfcffb6e407ab7464e359f41eccd288159198a93720078fd445f  dotnet-10.0.101.norm.zip

> sha256sum dotnet-source-10.0.101-servicing.25569.105.norm.zip 
6f3d802cf7b4bfcffb6e407ab7464e359f41eccd288159198a93720078fd445f  dotnet-source-10.0.101-servicing.25569.105.norm.zip

After running the normalization, the hashes of the files were exactly the same.

Metadata

Metadata

Assignees

Labels

area-release-infraRelease infrastructure owned by .NET Product Construction

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions