When installing GHC or MSYS2 on Windows, Stack will also install 7-Zip. 7-Zip is a file archiver and is used by Stack to extract files from archives. This section explains the steps required to upgrade the 7-Zip version used by Stack. The 7-Zip functionality used by Stack is mature and stable. It is anticipated that the Stack-supplied 7-Zip will not need to be updated frequently. On 10 September 2022, it was updated from 7-Zip 9.20 (released on 18 November 2010) to 7-Zip 22.01 (released on 15 July 2022).
Download the latest installer for 64-bit x64 Windows from 7-Zip's website.
Run the installer and install to the default location (
C:\C:\Program Files\7-Zip). The four relevant files from those installed will be:
In the commercialhaskell/stackage-content GitHub repository, create a new draft release tagged and named
XX.YYis the 7-Zip version number.
Upload the four relevant files in step 2 above into the draft release.
Provide a description for the release. For example:
Publish the release.
Changes need to be made to the stackage-content/stack/stack-setup-2.yaml file, to switch over to using the newly uploaded files. For example (extract):
sevenzexe-info: url: "https://github.com/commercialhaskell/stackage-content/releases/download/7z-22.01/7z.exe" content-length: 545280 sha256: 254cf6411d38903b2440819f7e0a847f0cfee7f8096cfad9e90fea62f42b0c23 sevenzdll-info: url: "https://github.com/commercialhaskell/stackage-content/releases/download/7z-22.01/7z.dll" content-length: 1814016 sha256: 73578f14d50f747efa82527a503f1ad542f9db170e2901eddb54d6bce93fc00e
content-length:key's value is the size of the file in bytes. It can be obtained from the
Lengthfield of the
sha256:key's value can be obtained from the commands (in PowerShell):
(Get-FileHash 7z.exe -Algorithm SHA256).Hash.ToLower() (Get-FileHash 7z.dll -Algorithm SHA256).Hash.ToLower()
sha256:key only accepts lowercase hash results as values.
stack-setup-2.yamlfile should be tested locally. This can be done by:
temporarily disabling the existing local copy of 7-Zip by changing the name of the
7z.dllfiles in the
stack path --programsdirectory;
identifying a version of GHC not already installed in the
stack path --programsdirectory; and
executing the command:
<snapshot>requires the missing version of GHC.
If all is well, the command should proceed to download the missing version of GHC, download the
7z.dllfiles, and use the 7-Zip version to extract files from the GHC archive.
Raise a pull request on
commercialhaskell/stackage-contentsfor the changes to the locally-tested