From 8208bfa2b9146e13772667bcc28b903ce6e24152 Mon Sep 17 00:00:00 2001 From: Harrison Jones Date: Mon, 26 Mar 2018 11:44:44 -0700 Subject: [PATCH] build: Add icon & file info to syncthing.exe (#4839) --- assets/logo.ico | Bin 0 -> 150284 bytes build.go | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 assets/logo.ico diff --git a/assets/logo.ico b/assets/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..ff3b74052c21de13cab87595f9ed5c9b06a4dab0 GIT binary patch literal 150284 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 C)^X$j literal 0 HcmV?d00001 diff --git a/build.go b/build.go index 7d400d6ff..79c8e72b8 100644 --- a/build.go +++ b/build.go @@ -380,6 +380,7 @@ func setup() { "honnef.co/go/tools/cmd/gosimple", "honnef.co/go/tools/cmd/staticcheck", "honnef.co/go/tools/cmd/unused", + "github.com/josephspurrier/goversioninfo", } for _, pkg := range packages { fmt.Println(pkg) @@ -427,6 +428,17 @@ func install(target target, tags []string) { os.Setenv("GOOS", goos) os.Setenv("GOARCH", goarch) + + // On Windows generate a special file which the Go compiler will automatically use when generating Windows binaries + // to set things like the file icon, version, etc. + if goos == "windows" { + sysoPath, err := shouldBuildSyso(cwd) + if err != nil { + log.Printf("Warning: Windows binaries will not have file information encoded: %v", err) + } + defer shouldCleanupSyso(sysoPath) + } + runPrint("go", args...) } @@ -621,6 +633,56 @@ func buildSnap(target target) { runPrint("snapcraft") } +func shouldBuildSyso(dir string) (string, error) { + jsonPath := filepath.Join(dir, "versioninfo.json") + file, err := os.Create(filepath.Join(dir, "versioninfo.json")) + if err != nil { + return "", errors.New("failed to create " + jsonPath + ": " + err.Error()) + } + + major, minor, patch, build := semanticVersion() + fmt.Fprintf(file, `{ + "FixedFileInfo": { + "FileVersion": { + "Major": %s, + "Minor": %s, + "Patch": %s, + "Build": %s + } + }, + "StringFileInfo": { + "FileDescription": "Open Source Continuous File Synchronization", + "LegalCopyright": "The Syncthing Authors", + "ProductVersion": "%s", + "ProductName": "Syncthing" + }, + "IconPath": "assets/logo.ico" +}`, major, minor, patch, build, getVersion()) + file.Close() + defer func() { + if err := os.Remove(jsonPath); err != nil { + log.Printf("Warning: unable to remove generated %s: %v. Please remove it manually.", jsonPath, err) + } + }() + + sysoPath := filepath.Join(dir, "cmd", "syncthing", "resource.syso") + + if _, err := runError("goversioninfo", "-o", sysoPath); err != nil { + return "", errors.New("failed to create " + sysoPath + ": " + err.Error()) + } + + return sysoPath, nil +} + +func shouldCleanupSyso(sysoFilePath string) { + if sysoFilePath == "" { + return + } + if err := os.Remove(sysoFilePath); err != nil { + log.Printf("Warning: unable to remove generated %s: %v. Please remove it manually.", sysoFilePath, err) + } +} + // copyFile copies a file from src to dst, ensuring the containing directory // exists. The permission bits are copied as well. If dst already exists and // the contents are identical to src the modification time is not updated. @@ -797,6 +859,15 @@ func getVersion() string { return "unknown-dev" } +func semanticVersion() (major, minor, patch, build string) { + r := regexp.MustCompile(`v(?P\d+)\.(?P\d+).(?P\d+).*\+(?P\d+)`) + matches := r.FindStringSubmatch(getVersion()) + if len(matches) != 5 { + return "0", "0", "0", "0" + } + return matches[1], matches[2], matches[3], matches[4] +} + func getBranchSuffix() string { bs, err := runError("git", "branch", "-a", "--contains") if err != nil {