| #!/usr/bin/env sh |
| set -eu |
| |
| : "${PACKAGER_NAME=}" |
| |
| quadVersionNum() { |
| num=$(echo "${1:-0}" | cut -d. -f"$2") |
| if [ "$num" != "0" ]; then |
| echo "${num#0}" |
| else |
| echo "$num" |
| fi |
| } |
| |
| . ./scripts/build/.variables |
| |
| # Create version quad for Windows of the form major.minor.patch.build |
| VERSION_QUAD=$(printf "%s" "$VERSION" | sed -re 's/^([0-9.]*).*$/\1/' | sed -re 's/\.$//' | sed -re 's/^[0-9]+$/\0\.0/' | sed -re 's/^[0-9]+\.[0-9]+$/\0\.0/' | sed -re 's/^[0-9]+\.[0-9]+\.[0-9]+$/\0\.0/') |
| |
| # Generate versioninfo.json to be able to create a syso file which contains |
| # Microsoft Windows Version Information and an icon using goversioninfo. |
| # https://docs.microsoft.com/en-us/windows/win32/menurc/stringfileinfo-block |
| # https://github.com/josephspurrier/goversioninfo/blob/v1.5.0/testdata/resource/versioninfo.json |
| cat > ./cmd/docker/winresources/versioninfo.json <<EOL |
| { |
| "FixedFileInfo": |
| { |
| "FileVersion": { |
| "Major": $(quadVersionNum "$VERSION_QUAD" 1), |
| "Minor": $(quadVersionNum "$VERSION_QUAD" 2), |
| "Patch": $(quadVersionNum "$VERSION_QUAD" 3), |
| "Build": $(quadVersionNum "$VERSION_QUAD" 4) |
| }, |
| "FileFlagsMask": "3f", |
| "FileFlags ": "00", |
| "FileOS": "040004", |
| "FileType": "01", |
| "FileSubType": "00" |
| }, |
| "StringFileInfo": |
| { |
| "Comments": "", |
| "CompanyName": "${PACKAGER_NAME}", |
| "FileDescription": "Docker Client", |
| "FileVersion": "${VERSION}", |
| "InternalName": "", |
| "LegalCopyright": "Copyright © 2015-$(date +'%Y') Docker Inc.", |
| "LegalTrademarks": "", |
| "OriginalFilename": "$(basename "${TARGET}")", |
| "PrivateBuild": "", |
| "ProductName": "Docker Client", |
| "ProductVersion": "${VERSION}", |
| "SpecialBuild": "${GITCOMMIT}" |
| }, |
| "VarFileInfo": |
| { |
| "Translation": { |
| "LangID": "0409", |
| "CharsetID": "04B0" |
| } |
| } |
| } |
| EOL |
| (set -x ; cat ./cmd/docker/winresources/versioninfo.json) |
| |
| # Create winresources package stub if removed while using tmpfs in Dockerfile |
| if [ ! -f "./cmd/docker/winresources/winresources.go" ]; then |
| echo "package winresources" > "./cmd/docker/winresources/winresources.go" |
| fi |