From 1421bc10a4f61f92f3a3790a599fd7a02e7909d7 Mon Sep 17 00:00:00 2001 From: Andrew Gerrand Date: Wed, 22 Jul 2015 09:44:05 +1000 Subject: [PATCH] misc/makerelease: delete This is now superseded by golang.org/x/build/cmd/release. Fixes #8472 Change-Id: I59664d84996a0fbb5c90582a4702714b3b3cf302 Reviewed-on: https://go-review.googlesource.com/12500 Reviewed-by: Brad Fitzpatrick --- misc/makerelease/darwin/Distribution | 32 - misc/makerelease/darwin/Resources/bg.png | Bin 11466 -> 0 bytes misc/makerelease/darwin/etc/paths.d/go | 1 - misc/makerelease/darwin/scripts/postinstall | 10 - misc/makerelease/darwin/scripts/preinstall | 8 - misc/makerelease/makerelease.go | 1089 ----------------- misc/makerelease/windows/LICENSE.rtf | Bin 1687 -> 0 bytes misc/makerelease/windows/README.txt | 25 - misc/makerelease/windows/images/Banner.jpg | Bin 6643 -> 0 bytes misc/makerelease/windows/images/Dialog.jpg | Bin 16428 -> 0 bytes .../makerelease/windows/images/DialogLeft.jpg | Bin 12961 -> 0 bytes misc/makerelease/windows/images/gopher.ico | Bin 30166 -> 0 bytes misc/makerelease/windows/installer.wxs | 163 --- 13 files changed, 1328 deletions(-) delete mode 100644 misc/makerelease/darwin/Distribution delete mode 100644 misc/makerelease/darwin/Resources/bg.png delete mode 100644 misc/makerelease/darwin/etc/paths.d/go delete mode 100755 misc/makerelease/darwin/scripts/postinstall delete mode 100755 misc/makerelease/darwin/scripts/preinstall delete mode 100644 misc/makerelease/makerelease.go delete mode 100644 misc/makerelease/windows/LICENSE.rtf delete mode 100644 misc/makerelease/windows/README.txt delete mode 100644 misc/makerelease/windows/images/Banner.jpg delete mode 100644 misc/makerelease/windows/images/Dialog.jpg delete mode 100644 misc/makerelease/windows/images/DialogLeft.jpg delete mode 100644 misc/makerelease/windows/images/gopher.ico delete mode 100644 misc/makerelease/windows/installer.wxs diff --git a/misc/makerelease/darwin/Distribution b/misc/makerelease/darwin/Distribution deleted file mode 100644 index 8b764b69f4..0000000000 --- a/misc/makerelease/darwin/Distribution +++ /dev/null @@ -1,32 +0,0 @@ - - - Go - - - - - - - - - - - - com.googlecode.go.pkg - diff --git a/misc/makerelease/darwin/Resources/bg.png b/misc/makerelease/darwin/Resources/bg.png deleted file mode 100644 index c3d8ea93acc2514ac09b295b24ad70c0b053aef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11466 zcmc(FWmH|kk}mEV+}#iE1b5dE4(<@#-Q9x2L4yXjgS%Uh0|XBcfRnycRb9QSzUmltRXKDNViYJSD0BsRY0dX%9269^GZMo4TlB~1WGE=u za~mlsbpk)oE+#x04Xpj36ka zmi(0@Zig&0e;@O3B-UEuYngM<&cB6mLc50zZa^eY@|Gk<8@g>cfo@XJlE7P_{Vw9Z zBK{@yHnh^Ywoa?laHK7{E=X|SOZ4m~ulT4=_I9QMk;(d{A#Z+iVtyv*<7X=5X$gjF z@v>4s)eZwT7`BlJxy3O1Ww5k)lJ+_x0pu4p!D$sAYcVO;WgpI& z{z$A{2yc{_oZg$ExMr>Zq5gLv@6okW*RltL*kA} zUk%TbY|~j_hno7^G_Mn%-i7bQ-^)Gv#I4T61tYJ~d90vXyLN>kcAB2Odm{QEyo>G; z1G;!`cJa%sY`^aV4`clJM_Ol;>oIM%_YoE9JzpSc^lc8VK2xHVk-2sq{IMco1lWHn z=OmN&X~fg5+^UVE{f^@6XL>nKS(W$n0`ZTE=}zUG|ICd{MEhX{9jqL}P3rA)r9Ag zWamt{iS39sGZ#+J*H(foyUC>e2@~je3QPvkPKAJAXs+_4D6}3jXALb_SmiYJdCfG! zm@-og%M+j7;6az6O!VrdEM8fg=}qj@aMB!ioQUJmeM+VjDT~an!OH8jPRWC`akJR2 z&T}oKanokMe_daR^31SolZ8#T=gAu5o>lwJ&eR26-{IRmCFk0(M6HCY2McwUk_0rE+^;Ee3bpQEY z<6iaN=$^=8GsRi=UZIWJpT^+pw}tI}^Q+@9U;PCxl};lqj*_oU`o0R|itO@r^20y! z=ULGe%xB5xkJp7;y}P_w5pw&w7Zz^o1?oceU{&Gqyd|Po1sWY*rR-*vBIQk2=P?>} z9XW?`Gx6pqk|K~gZ)e^ZE2S$u(I3$eBB?Y%dH})?$e+oa>zDwNC`fp>@A`w@4sWMzw)KM z`hy^FO|Y)ZPyNdscEb*{;Hg=DG0JPJF(2AMpn!iZ;(SVtHW2#U_UY~-$dITj$B{P& z^StNq9?oQY+v+NR*UD{M>ADxedF+`$7s|zZh;cytJdR@D&($7e4hD+#Lj`S7oH#X59u76egbEu#8yX=EPWo30 z3ID@CjlEO-lGOkA%m1YQgZ-WFpC}Wm
w8UDfduYzV|DF1z;|5V_gSpUaq-!=ZX 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 3 { - b.Label = p[2] - } - if *includeRace { - for _, t := range raceAvailable { - if t == targ || strings.HasPrefix(targ, t+"-") { - b.Race = true - } - } - } - if *staticToolchain { - for _, os := range staticLinkAvailable { - if b.OS == os { - b.static = true - } - } - } - } - if *tag == "" { - fmt.Fprintln(os.Stderr, "you must specify a -tag") - os.Exit(2) - } - if err := b.Do(); err != nil { - log.Printf("%s: %v", targ, err) - ok = false - } - } - if !ok { - os.Exit(1) - } -} - -type Build struct { - Source bool // if true, OS and Arch must be empty - Race bool // build race toolchain - OS string - Arch string - Label string - root string - gopath string - static bool // if true, build statically linked toolchain -} - -func (b *Build) Do() error { - work, err := ioutil.TempDir("", "makerelease") - if err != nil { - return err - } - defer os.RemoveAll(work) - b.root = filepath.Join(work, "go") - b.gopath = work - - // Clone Go distribution and update to tag. - _, err = b.run(work, "git", "clone", *repo, b.root) - if err != nil { - return err - } - _, err = b.run(b.root, "git", "checkout", *tag) - if err != nil { - return err - } - - // Remove exp and old packages. - if err := b.clean(preBuildCleanFiles); err != nil { - return err - } - - src := filepath.Join(b.root, "src") - if b.Source { - if runtime.GOOS == "windows" { - log.Print("Warning: running make.bash on Windows; source builds are intended to be run on a Unix machine") - } - // Build dist tool only. - _, err = b.run(src, "bash", "make.bash", "--dist-tool") - } else { - // Build. - if b.OS == "windows" { - _, err = b.run(src, "cmd", "/C", "make.bat") - } else { - _, err = b.run(src, "bash", "make.bash") - } - if b.Race { - if err != nil { - return err - } - goCmd := filepath.Join(b.root, "bin", "go") - if b.OS == "windows" { - goCmd += ".exe" - } - // Because on release branches, go install -a std is a NOP, - // we have to resort to delete pkg/$GOOS_$GOARCH, install -race, - // and then reinstall std so that we're not left with a slower, - // race-enabled cmd/go, etc. - goPkg := filepath.Join(b.root, "pkg", b.OS+"_"+b.Arch) - err = os.RemoveAll(goPkg) - if err != nil { - return err - } - _, err = b.run(src, goCmd, "tool", "dist", "install", "runtime") - if err != nil { - return err - } - _, err = b.run(src, goCmd, "install", "-race", "std") - if err != nil { - return err - } - _, err = b.run(src, goCmd, "install", "std") - if err != nil { - return err - } - // Re-building go command leaves old versions of go.exe as go.exe~ on windows. - // See (*builder).copyFile in $GOROOT/src/cmd/go/build.go for details. - // Remove it manually. - if b.OS == "windows" { - os.Remove(goCmd + "~") - } - } - if err != nil { - return err - } - err = b.extras() - } - if err != nil { - return err - } - - // Get version strings. - var ( - version string // "weekly.2012-03-04" - fullVersion []byte // "weekly.2012-03-04 9353aa1efdf3" - ) - pat := filepath.Join(b.root, "pkg/tool/*/dist*") // trailing * for .exe - m, err := filepath.Glob(pat) - if err != nil { - return err - } - if len(m) == 0 { - return fmt.Errorf("couldn't find dist in %q", pat) - } - fullVersion, err = b.run("", m[0], "version") - if err != nil { - return err - } - fullVersion = bytes.TrimSpace(fullVersion) - v := bytes.SplitN(fullVersion, []byte(" "), 2) - version = string(v[0]) - if *versionOverride != "" { - version = *versionOverride - } - - // Write VERSION file. - err = ioutil.WriteFile(filepath.Join(b.root, "VERSION"), fullVersion, 0644) - if err != nil { - return err - } - - // Clean goroot. - if err := b.clean(cleanFiles); err != nil { - return err - } - if b.Source { - if err := b.clean(sourceCleanFiles); err != nil { - return err - } - } - - // Create packages. - base := fmt.Sprintf("%s.%s-%s", version, b.OS, b.Arch) - if b.Label != "" { - base += "-" + b.Label - } - if !strings.HasPrefix(base, "go") { - base = "go." + base - } - var targs []string - switch b.OS { - case "linux", "freebsd", "netbsd", "": - // build tarball - targ := base - if b.Source { - targ = fmt.Sprintf("%s.src", version) - if !strings.HasPrefix(targ, "go") { - targ = "go." + targ - } - } - targ += ".tar.gz" - err = makeTar(targ, work) - targs = append(targs, targ) - case "darwin": - // build tarball - targ := base + ".tar.gz" - err = makeTar(targ, work) - targs = append(targs, targ) - - makerelease := filepath.Join(runtime.GOROOT(), "misc/makerelease") - - // build pkg - // arrange work so it's laid out as the dest filesystem - etc := filepath.Join(makerelease, "darwin/etc") - _, err = b.run(work, "cp", "-r", etc, ".") - if err != nil { - return err - } - localDir := filepath.Join(work, "usr/local") - err = os.MkdirAll(localDir, 0755) - if err != nil { - return err - } - _, err = b.run(work, "mv", "go", localDir) - if err != nil { - return err - } - // build package - pkgdest, err := ioutil.TempDir("", "pkgdest") - if err != nil { - return err - } - defer os.RemoveAll(pkgdest) - _, err = b.run("", "pkgbuild", - "--identifier", "com.googlecode.go", - "--version", version, - "--scripts", filepath.Join(makerelease, "darwin/scripts"), - "--root", work, - filepath.Join(pkgdest, "com.googlecode.go.pkg")) - if err != nil { - return err - } - targ = base + ".pkg" - _, err = b.run("", "productbuild", - "--distribution", filepath.Join(makerelease, "darwin/Distribution"), - "--resources", filepath.Join(makerelease, "darwin/Resources"), - "--package-path", pkgdest, - targ) - if err != nil { - return err - } - targs = append(targs, targ) - case "windows": - // Create ZIP file. - zip := filepath.Join(work, base+".zip") - err = makeZip(zip, work) - // Copy zip to target file. - targ := base + ".zip" - err = cp(targ, zip) - if err != nil { - return err - } - targs = append(targs, targ) - - // Create MSI installer. - win := filepath.Join(runtime.GOROOT(), "misc/makerelease/windows") - installer := filepath.Join(win, "installer.wxs") - appfiles := filepath.Join(work, "AppFiles.wxs") - msi := filepath.Join(work, "installer.msi") - // Gather files. - _, err = b.run(work, "heat", "dir", "go", - "-nologo", - "-gg", "-g1", "-srd", "-sfrag", - "-cg", "AppFiles", - "-template", "fragment", - "-dr", "INSTALLDIR", - "-var", "var.SourceDir", - "-out", appfiles) - if err != nil { - return err - } - // Build package. - _, err = b.run(work, "candle", - "-nologo", - "-dGoVersion="+version, - "-dWixGoVersion="+wixVersion(version), - "-dArch="+b.Arch, - "-dSourceDir=go", - installer, appfiles) - if err != nil { - return err - } - appfiles = filepath.Join(work, "AppFiles.wixobj") - installer = filepath.Join(work, "installer.wixobj") - _, err = b.run(win, "light", - "-nologo", - "-ext", "WixUIExtension", - "-ext", "WixUtilExtension", - installer, appfiles, - "-o", msi) - if err != nil { - return err - } - // Copy installer to target file. - targ = base + ".msi" - err = cp(targ, msi) - targs = append(targs, targ) - } - if err == nil && *upload { - for _, targ := range targs { - err = b.Upload(version, targ) - if err != nil { - return fmt.Errorf("uploading %s: %v", targ, err) - } - } - } - return err -} - -var versionRe = regexp.MustCompile(`^go([0-9]+(\.[0-9]+)*)`) - -// The Microsoft installer requires version format major.minor.build -// (http://msdn.microsoft.com/en-us/library/aa370859%28v=vs.85%29.aspx). -// Where the major and minor field has a maximum value of 255 and build 65535. -// The offical Go version format is goMAJOR.MINOR.PATCH at $GOROOT/VERSION. -// It's based on the Mercurial tag. Remove prefix and suffix to make the -// installer happy. -func wixVersion(v string) string { - m := versionRe.FindStringSubmatch(v) - if m == nil { - return "0.0.0" - } - return m[1] -} - -// extras fetches the go.tools, go.blog, and go-tour repositories, -// builds them and copies the resulting binaries and static assets -// to the new GOROOT. -func (b *Build) extras() error { - defer b.cleanGopath() - - if err := b.tools(); err != nil { - return err - } - if err := b.blog(); err != nil { - return err - } - return b.tour() -} - -func (b *Build) get(repoPath, revision string) error { - // Fetch the packages (without building/installing). - _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), - "get", "-d", repoPath+"/...") - if err != nil { - return err - } - - // Update the repo to the specified revision. - dest := filepath.Join(b.gopath, "src", filepath.FromSlash(repoPath)) - switch { - case exists(filepath.Join(dest, ".git")): - _, err = b.run(dest, "git", "checkout", revision) - case exists(filepath.Join(dest, ".hg")): - _, err = b.run(dest, "hg", "update", revision) - default: - err = errors.New("unknown version control system") - } - return err -} - -func (b *Build) tools() error { - // Fetch the go.tools repository. - if err := b.get(toolPath, *toolTag); err != nil { - return err - } - - // Install tools. - args := append([]string{"install"}, toolPaths...) - _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), args...) - if err != nil { - return err - } - - // Copy doc.go from go.tools/cmd/$CMD to $GOROOT/src/cmd/$CMD - // while rewriting "package main" to "package documentation". - for _, p := range toolPaths { - d, err := ioutil.ReadFile(filepath.Join(b.gopath, "src", - filepath.FromSlash(p), "doc.go")) - if err != nil { - return err - } - d = bytes.Replace(d, []byte("\npackage main\n"), - []byte("\npackage documentation\n"), 1) - cmdDir := filepath.Join(b.root, "src", "cmd", path.Base(p)) - if err := os.MkdirAll(cmdDir, 0755); err != nil { - return err - } - docGo := filepath.Join(cmdDir, "doc.go") - if err := ioutil.WriteFile(docGo, d, 0644); err != nil { - return err - } - } - - return nil -} - -func (b *Build) blog() error { - // Fetch the blog repository. - _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), "get", "-d", blogPath+"/blog") - if err != nil { - return err - } - - // Copy blog content to $GOROOT/blog. - blogSrc := filepath.Join(b.gopath, "src", filepath.FromSlash(blogPath)) - contentDir := filepath.Join(b.root, "blog") - return cpAllDir(contentDir, blogSrc, blogContent...) -} - -func (b *Build) tour() error { - // Fetch the go-tour repository. - if err := b.get(tourPath, *tourTag); err != nil { - return err - } - - // Build tour binary. - _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), - "install", tourPath+"/gotour") - if err != nil { - return err - } - - // Copy all the tour content to $GOROOT/misc/tour. - importPath := filepath.FromSlash(tourPath) - tourSrc := filepath.Join(b.gopath, "src", importPath) - contentDir := filepath.Join(b.root, "misc", "tour") - if err = cpAllDir(contentDir, tourSrc, tourContent...); err != nil { - return err - } - - // Copy the tour source code so it's accessible with $GOPATH pointing to $GOROOT/misc/tour. - if err = cpAllDir(filepath.Join(contentDir, "src", importPath), tourSrc, tourPackages...); err != nil { - return err - } - - // Copy gotour binary to tool directory as "tour"; invoked as "go tool tour". - return cp( - filepath.Join(b.root, "pkg", "tool", b.OS+"_"+b.Arch, "tour"+ext()), - filepath.Join(b.gopath, "bin", "gotour"+ext()), - ) -} - -func (b *Build) cleanGopath() { - for _, d := range []string{"bin", "pkg", "src"} { - os.RemoveAll(filepath.Join(b.gopath, d)) - } -} - -func ext() string { - if runtime.GOOS == "windows" { - return ".exe" - } - return "" -} - -func (b *Build) run(dir, name string, args ...string) ([]byte, error) { - buf := new(bytes.Buffer) - absName, err := lookPath(name) - if err != nil { - return nil, err - } - cmd := exec.Command(absName, args...) - var output io.Writer = buf - if *verbose { - log.Printf("Running %q %q", absName, args) - output = io.MultiWriter(buf, os.Stdout) - } - cmd.Stdout = output - cmd.Stderr = output - cmd.Dir = dir - cmd.Env = b.env() - if err := cmd.Run(); err != nil { - fmt.Fprintf(os.Stderr, "%s", buf.Bytes()) - return nil, fmt.Errorf("%s %s: %v", name, strings.Join(args, " "), err) - } - return buf.Bytes(), nil -} - -var cleanEnv = []string{ - "GOARCH", - "GOBIN", - "GOHOSTARCH", - "GOHOSTOS", - "GOOS", - "GOROOT", - "GOROOT_FINAL", - "GOPATH", -} - -func (b *Build) env() []string { - env := os.Environ() - for i := 0; i < len(env); i++ { - for _, c := range cleanEnv { - if strings.HasPrefix(env[i], c+"=") { - env = append(env[:i], env[i+1:]...) - } - } - } - final := "/usr/local/go" - if b.OS == "windows" { - final = `c:\go` - } - env = append(env, - "GOARCH="+b.Arch, - "GOHOSTARCH="+b.Arch, - "GOHOSTOS="+b.OS, - "GOOS="+b.OS, - "GOROOT="+b.root, - "GOROOT_FINAL="+final, - "GOPATH="+b.gopath, - ) - if b.static { - env = append(env, "GO_DISTFLAGS=-s") - } - return env -} - -func (b *Build) Upload(version string, filename string) error { - file, err := ioutil.ReadFile(filename) - if err != nil { - return err - } - - svc, err := storage.New(oauthClient) - if err != nil { - return err - } - obj := &storage.Object{ - Acl: []*storage.ObjectAccessControl{{Entity: "allUsers", Role: "READER"}}, - Name: filename, - } - _, err = svc.Objects.Insert(*storageBucket, obj).Media(bytes.NewReader(file)).Do() - if err != nil { - return err - } - - sum := fmt.Sprintf("%x", sha1.Sum(file)) - kind := "unknown" - switch { - case b.Source: - kind = "source" - case strings.HasSuffix(filename, ".tar.gz"), strings.HasSuffix(filename, ".zip"): - kind = "archive" - case strings.HasSuffix(filename, ".msi"), strings.HasSuffix(filename, ".pkg"): - kind = "installer" - } - req, err := json.Marshal(File{ - Filename: filename, - Version: version, - OS: b.OS, - Arch: b.Arch, - Checksum: sum, - Size: len(file), - Kind: kind, - }) - if err != nil { - return err - } - u := fmt.Sprintf("%s?%s", *uploadURL, url.Values{"key": []string{builderKey}}.Encode()) - resp, err := http.Post(u, "application/json", bytes.NewReader(req)) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("upload status: %v", resp.Status) - } - - return nil -} - -type File struct { - Filename string - OS string - Arch string - Version string - Checksum string `datastore:",noindex"` - Size int `datastore:",noindex"` - Kind string // "archive", "installer", "source" -} - -func setupOAuthClient() error { - config := &oauth2.Config{ - ClientID: "999119582588-h7kpj5pcm6d9solh5lgrbusmvvk4m9dn.apps.googleusercontent.com", - ClientSecret: "8YLFgOhXIELWbO-NtF3iqIQz", - Endpoint: google.Endpoint, - Scopes: []string{storage.DevstorageRead_writeScope}, - RedirectURL: "oob", - } - url := config.AuthCodeURL("junk") - fmt.Println("Visit the following URL, obtain an authentication" + - "code, and enter it below.") - fmt.Println(url) - fmt.Print("Enter authentication code: ") - code := "" - if _, err := fmt.Scan(&code); err != nil { - return err - } - tok, err := config.Exchange(oauth2.NoContext, code) - if err != nil { - return err - } - oauthClient = config.Client(oauth2.NoContext, tok) - return nil -} - -func (b *Build) clean(files []string) error { - for _, name := range files { - path := filepath.Join(b.root, name) - var err error - if b.OS == "windows" { - // Git sets some of its packfiles as 'read only', - // so os.RemoveAll will fail for the ".git" directory. - // Instead, shell out to cmd's 'del' subcommand. - cmd := exec.Command("cmd.exe", "/C", "del", "/Q", "/F", "/S", path) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err = cmd.Run() - } else { - err = os.RemoveAll(path) - } - if err != nil { - return err - } - } - return nil -} - -func exists(path string) bool { - _, err := os.Stat(path) - return err == nil -} - -func readCredentials() error { - name := os.Getenv("HOME") - if runtime.GOOS == "windows" { - name = os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH") - } - name = filepath.Join(name, ".gobuildkey") - f, err := os.Open(name) - if err != nil { - return err - } - defer f.Close() - s := bufio.NewScanner(f) - if s.Scan() { - builderKey = s.Text() - } - return s.Err() -} - -func cp(dst, src string) error { - sf, err := os.Open(src) - if err != nil { - return err - } - defer sf.Close() - fi, err := sf.Stat() - if err != nil { - return err - } - df, err := os.Create(dst) - if err != nil { - return err - } - defer df.Close() - // Windows doesn't currently implement Fchmod - if runtime.GOOS != "windows" { - if err := df.Chmod(fi.Mode()); err != nil { - return err - } - } - _, err = io.Copy(df, sf) - return err -} - -func cpDir(dst, src string) error { - walk := func(srcPath string, info os.FileInfo, err error) error { - if err != nil { - return err - } - dstPath := filepath.Join(dst, srcPath[len(src):]) - if info.IsDir() { - return os.MkdirAll(dstPath, 0755) - } - return cp(dstPath, srcPath) - } - return filepath.Walk(src, walk) -} - -func cpAllDir(dst, basePath string, dirs ...string) error { - for _, dir := range dirs { - if err := cpDir(filepath.Join(dst, dir), filepath.Join(basePath, dir)); err != nil { - return err - } - } - return nil -} - -func makeTar(targ, workdir string) error { - f, err := os.Create(targ) - if err != nil { - return err - } - zout := gzip.NewWriter(f) - tw := tar.NewWriter(zout) - - err = filepath.Walk(workdir, func(path string, fi os.FileInfo, err error) error { - if !strings.HasPrefix(path, workdir) { - log.Panicf("walked filename %q doesn't begin with workdir %q", path, workdir) - } - name := path[len(workdir):] - - // Chop of any leading / from filename, leftover from removing workdir. - if strings.HasPrefix(name, "/") { - name = name[1:] - } - // Don't include things outside of the go subdirectory (for instance, - // the zip file that we're currently writing here.) - if !strings.HasPrefix(name, "go/") { - return nil - } - if *verbose { - log.Printf("adding to tar: %s", name) - } - target, _ := os.Readlink(path) - hdr, err := tar.FileInfoHeader(fi, target) - if err != nil { - return err - } - hdr.Name = name - hdr.Uname = "root" - hdr.Gname = "root" - hdr.Uid = 0 - hdr.Gid = 0 - - // Force permissions to 0755 for executables, 0644 for everything else. - if fi.Mode().Perm()&0111 != 0 { - hdr.Mode = hdr.Mode&^0777 | 0755 - } else { - hdr.Mode = hdr.Mode&^0777 | 0644 - } - - err = tw.WriteHeader(hdr) - if err != nil { - return fmt.Errorf("Error writing file %q: %v", name, err) - } - if fi.IsDir() { - return nil - } - r, err := os.Open(path) - if err != nil { - return err - } - defer r.Close() - _, err = io.Copy(tw, r) - return err - }) - if err != nil { - return err - } - if err := tw.Close(); err != nil { - return err - } - if err := zout.Close(); err != nil { - return err - } - return f.Close() -} - -func makeZip(targ, workdir string) error { - f, err := os.Create(targ) - if err != nil { - return err - } - zw := zip.NewWriter(f) - - err = filepath.Walk(workdir, func(path string, fi os.FileInfo, err error) error { - if !strings.HasPrefix(path, workdir) { - log.Panicf("walked filename %q doesn't begin with workdir %q", path, workdir) - } - name := path[len(workdir):] - - // Convert to Unix-style named paths, as that's the - // type of zip file that archive/zip creates. - name = strings.Replace(name, "\\", "/", -1) - // Chop of any leading / from filename, leftover from removing workdir. - if strings.HasPrefix(name, "/") { - name = name[1:] - } - // Don't include things outside of the go subdirectory (for instance, - // the zip file that we're currently writing here.) - if !strings.HasPrefix(name, "go/") { - return nil - } - if *verbose { - log.Printf("adding to zip: %s", name) - } - fh, err := zip.FileInfoHeader(fi) - if err != nil { - return err - } - fh.Name = name - fh.Method = zip.Deflate - if fi.IsDir() { - fh.Name += "/" // append trailing slash - fh.Method = zip.Store // no need to deflate 0 byte files - } - w, err := zw.CreateHeader(fh) - if err != nil { - return err - } - if fi.IsDir() { - return nil - } - r, err := os.Open(path) - if err != nil { - return err - } - defer r.Close() - _, err = io.Copy(w, r) - return err - }) - if err != nil { - return err - } - if err := zw.Close(); err != nil { - return err - } - return f.Close() -} - -type tool struct { - name string - commonDirs []string -} - -var wixTool = tool{ - "http://wix.sourceforge.net/, version 3.5", - []string{`C:\Program Files\Windows Installer XML v3.5\bin`, - `C:\Program Files (x86)\Windows Installer XML v3.5\bin`}, -} - -var hgTool = tool{ - "http://mercurial.selenic.com/wiki/WindowsInstall", - []string{`C:\Program Files\Mercurial`, - `C:\Program Files (x86)\Mercurial`, - }, -} - -var gitTool = tool{ - "http://git-scm.com/download/win", - []string{`C:\Program Files\Git`, `C:\Program Files (x86)\Git`}, -} - -var gccTool = tool{ - "Mingw gcc; http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/", - []string{`C:\Mingw\bin`}, -} - -var windowsDeps = map[string]tool{ - "gcc": gccTool, - "heat": wixTool, - "candle": wixTool, - "light": wixTool, - "cmd": {"Windows cmd.exe", nil}, - "git": gitTool, - "hg": hgTool, -} - -func checkWindowsDeps() { - for prog, help := range windowsDeps { - absPath, err := lookPath(prog) - if err != nil { - log.Fatalf("Failed to find necessary binary %q in path or common locations; %s", prog, help) - } - if *verbose { - log.Printf("found windows dep %s at %s", prog, absPath) - } - } -} - -func lookPath(prog string) (absPath string, err error) { - absPath, err = exec.LookPath(prog) - if err == nil { - return - } - t, ok := windowsDeps[prog] - if !ok { - return - } - for _, dir := range t.commonDirs { - for _, ext := range []string{"exe", "bat"} { - absPath = filepath.Join(dir, prog+"."+ext) - if _, err1 := os.Stat(absPath); err1 == nil { - err = nil - os.Setenv("PATH", os.Getenv("PATH")+";"+dir) - return - } - } - } - return -} diff --git a/misc/makerelease/windows/LICENSE.rtf b/misc/makerelease/windows/LICENSE.rtf deleted file mode 100644 index b2b0be62c0a252cf358b9a8a79d9fe544500c66c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1687 zcmb_d(T?Ia6z%g$`wv(9w6j7KW_P5v^Ar*TmO?^fXIP}XWD*CgLX2WFXf&FC?{OHq zOk1fhl~7{YzUQ2K?ooItI@gSgvbDN@REN#@_U^W*Rnv@KipI3gJ?^j=6-}#mMN@6d z&MG&e&>TChI!e^({`K|ahnM0@u~Dt+N@qG+*v6?^JGvWw8xL>syBm-0UyCQLPJigO z{#G2Tad9ZSy4aQNW<2`(wdb(oUx0jg?(}Bs=yP>Lx1-UoB)5uYhJvHpn$8X>*zKsl zVyRPBbx*1udbE!p&d&_o)^+;v=(K66Y->7NMY<&m*_G;d9(7xG&(xT1ZwGYJZc9+^ z-{$COZ))A>s`LN@Dmz67)$O%ITXg8mldiFF+tT5o0J7VelWsRunHGJc$o55h<$k+X zMnqrey*x{%x#+4)t!RI=4t=>2dOdjgXr2^+FSfMC=}HZ7rY-Hzs0X;_MZ51s!HsHH z>b>gTZ2DIjpu6(qA_L9VM_BfMEAi9tn6;^nd)2z$X+M~sF$IH@j`pQfoi2CwhvWU2 z`m(D5UpJK~3=p;cPFwDk_hx3yW~Yd^)sR}CU(R~xwX@#5b6Sutus+kH@_~VkhE!W) z7dV|)u{RD$=q*8A4SC2OH8=n&#$iq4PChM{9NB}ae2`G2eY`p!q4pdmYmt+8!Ig6^ zNTgG_3Nl7mFSGQ4M=YYrn&g~Om@d~DpUoxB(>P+8pdg8`o5+k$a+zY|Qy@_JsXqvk zHL>r@j0r($Mtrf1IlzFP1&QQL42UOToJTyF4F~{~q>^I3;1btlI_OFNSw`uU7Aym$_s#OVg$4dG+TR6??LbVfL3#ccwoZG z*{Q&rArOktkMpl<;6p~_RgaXgS;|LaP&V_Bo^}<069ECQ4zZfL(DFx93Frv$4j9&1!nDmx~^EbOM>2K`q==`0;f5}gO0`jyM3IG5A diff --git a/misc/makerelease/windows/README.txt b/misc/makerelease/windows/README.txt deleted file mode 100644 index 0cf828b24d..0000000000 --- a/misc/makerelease/windows/README.txt +++ /dev/null @@ -1,25 +0,0 @@ - -Windows build dependencies - -- Mercurial (hg): http://mercurial.selenic.com/ -- MinGW: http://www.mingw.org/ -- Windows Installer XML (WiX) toolset: http://wix.sourceforge.net/ - -Packaging - -The dependencies must be in/added to the system's search PATH. - -Run bindist as normal, eg: - bindist windows-386 - -TODO - -- Documentation server shortcut checkbox option - -Misc - -WiX box sizes: - - banner size: 493x58 - - left side of dialog: 164x312 - - full dialog size: 493x312 - diff --git a/misc/makerelease/windows/images/Banner.jpg b/misc/makerelease/windows/images/Banner.jpg deleted file mode 100644 index ce65f63af933929600f2cc2a4ea551a90bc7f3d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6643 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 G)_($_=x#tb14wmU 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 diff --git a/misc/makerelease/windows/images/DialogLeft.jpg b/misc/makerelease/windows/images/DialogLeft.jpg deleted file mode 100644 index 73bab89b43615503982ee942d9a16f33c6e27776..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12961 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 Nf8+drI}bC1{|0O@Z_5Ax diff --git a/misc/makerelease/windows/images/gopher.ico b/misc/makerelease/windows/images/gopher.ico deleted file mode 100644 index 2e861ebe046ebe166170f31429b1c67ffd7b4c2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30166 zcmdU1dr*|wm2byn#@Zx1vsGJL*?)GXQnkCOR4V1}RPCmAQ#Gb)YHPAdCS+DOX4DZ4 z1`}^ImFE(vAG)-&G zepQ$I_4j@Ep2t1+oO92;2a{=p>2=fS(I(XIm`eZAWSV9&ncjKF`TH%C>97CEWO@rV z--mw3WZL>~rhec5!+-Yweot`!?`O?1nSP8u0m6h=svlGyFA*^fx1i&Z?4z-bySt^Xu8t&##bS{tvqh}79E?Y)8W+CD)kl+V=lbkb-)kIt zdQM4rlo>duh$SUOqEhlDrJ_wNr4C6bZj{KBVhP3ju<$6%j~uy(G19o|KJ@QbU0=L- zQNoEgaJAQUsXC{z8~2@(gWoxgU6SwUMmZ%Z)ol`P$(P`8vsgi=>zKSMIy4;4(Ym^7 ziG-ZkYJn^8wAHpNymd_)bkWa93+XfG*D1P5$JMJ>)p+Q>U*;HS7~~!0f%4&syT*5* znzZO~G3V4O*`n?u-t1q)c$svN|DjP9#Y@fGfpGTpPSZhJ!V+v!TwJPXAl~H9`|q3H z3^WazH=UiGVzyTgnfKo4;QR>1Jfi(;gdQs`Emik7ow5}uI)MKh?2Ecm2yui<&Z#h+)c z{ExC#sQK$I2mbyx@b8vLYrgUWo%pNy<`1r(+GzZ#9|A4^q?@{wHo*)Z%87qK{XLC; z3hX9*0m{F>{Pxz4bJ%RLzAXF|KSIO9`)sc_Jp6s0Qr)in!9dHtmM7ZYAn0lOYk|_8 znpWLkSX9DGvA?8&x{W?(Aa!Sd{NYc;Sg3pg>Obi5q+JQL?(C0$C-`HLNs~<9(_}$p5tDd6hhN11lmug48i+U~@n=a$vA;0Ru5gEPPaf;y-p=5EkBkqE zQZX>{P4jT5@}qHAw$_hz7IAUMZ?NBN!#P6Vp|ibRt-m<$hB^;iX|AnnG;|Jpox$Mi z_mpee2T%H4f8(t-bX1gz2{FE;W2vq<`7#!atI@|NFWmh!_wm=fChw@z?TA4$wqnHO zjCGYaeD!nop<@vA&B=eKp7nXXu4yFA^e<^=7?&X*HO{=Jj$o~yv!))TE-yvfCl4NA z{bbOgY0!9jtJy#4{~&0*-*$`mQ&$Fu(#CcxJ;#`g_7&Jaais2xv6ZSAAm33Zjtz;F zF+ss9cBAc+Ex+Og9q9@GKHkRw7RJsg?{8>+`XVp-8^()*G5-k%?Ii?qkniYG{H4## z7?~PdjBjaah4Q0=BP}ZSMA@Z}5DNNfTlt)AiJvFDU7xY-aMxU<7v+th@xe;wiHpJ? zaV6TEP9r8j{`6gpFNGow`oZ{68ISL2d$_I-O~{d;V9+s0jLzUa#u{U)VjNOP5sTeL;MqRj2NRUuifuy*SX)J z;S(2si|&K_Ko(1i!i98DE}uMkqVQ+ULK_(#7N+EhWA)?FKUXyTe9Q;1p?ZDaqxJ#3 z$q;n`$IHnd^3ZR8LDQ^h;BU%gICx1}=cW1IbLy0n-=icrI2e4cRq;#47F5HKse9#Uk8K&)WlQAO2v7$XN{3yHn z)`qd7-QbvTY+T{+KG217#6GEKCPKGUH&Rxpm&i}zPyI)|rRTPmAMVMI8Z}DI^B8N6 z;yrPvUJBwG5q=8$)-VE%yY5f-&owoD1j5(r8PY%<;>v%G|1W;=3nC{!{ppXD4XNn7 zsdVxO<3p5xR8d{~O7M5*Q5W}*AU~Xc#Ghq+NSIn15+QwYo>NAGLqZh2^fO2gbu8yI z*O0jIC@^}5eGOJLEXJ4UUvo`Mc_J-bpVMcj566r8hdib|Jf$B9QuPN|yDm8HHGzNv|y}VtX$IkmaXPj~3#EE@t*P*r_?)P1YjqTsRA9k}n;4y4p zaN`_V;EqpOnQ3HBafR{?66{<*wu!Z}9r_jf#a!F) zoCExft5*%X>)w7izt6yrvfAvjbRBIH_vM^16RaFn-9*BZ3z&-dt#^~u|aZgae z=9&|5`xidLIv+UDUJ{Q4_`CXy1mu5M`!#hA?ER~AOzv>qe>?F24p!`gL|JU&z@84{ z9+X{w$AIJN8+?rqV;@Ybl1_MSOyGA;Dg1 ztmVlgMSr7Eem(U+&@=k*R`|VYEj0+g`Asx*o#8KYu0ZdQCm6FBtbesHKM*|kcXf>p ziP7u&0p-rn`zfV>SzIlucJiO=*RTY;)Yf`Gx9kp=ziGQt@++ORQ>PCggeyzbD#cNl%&+qA@&`+Yj<_r9~`bK3ljhGZ{Iq0WsvCy7Trj$P2 z)drr{i8ZIf%NQB^jiF|PcG&+xV}~5`7^_{zh9S-!y+R6iLGK`zV6_*E4SpACrYte` z&H2>kK%Atw7C2Eaxs3tvB<+j?(Qk9*ueW=`k4i`};A75P;cw7xJbPxu_83o@7#b-- zSc5W#8VtFbhZGjLVcvuDp#UuBimSY4P9_xZj| zjI=)2P0snI=Lvlut26$94u+)nDSz~vEa1Do80R3|@W?2&Z!#9^SDw$NesYcXsJQ_- zq26HpaHz2L_dVw?N^ryy+24Lhp>X$`UWti{RC2Kb7^w@3Mu_QEm+mw$)@$E>uhQrQ{GEbRc-Be;gdcTeBb@26gm zNQEv0U6ko!z|t4zG{@yP9|mE*oPn;dl&O&ka_Q0~9>f?neBFlw^PS^ttv)34Rxr=u zj7CAS(rxm|tQa*P{`T*FDD%>*#jz(a^lSL6Z(c{dd{ezF&E169f3k2cP+uus30o14 z_-_ParJO(XSzOx&^8WJqGqSF7t9*!<^Oz4m7On}YBktY1D>;Rwa^~a^{QTR%jOD@G zBE3*k49hT-;J|vxC~u?gU(EQ;VloOtH!O&Cyvf2)1xlQ=Fyw+V0wErTeAquq56Xj) z!hEu~P~JiDCr+_<_f9!K4B!4xN2jc>*)G+MZPMQPr9}SB_j7Uk4#Kx9YLKL={aA`Nm;jD4t?nx|JQHbg|_XIxwS(wwj7eIx+7xSa#-Svnxw3Hi=6K{E4aMQq4EZ< z|M!UOY%);Jv+RMDE6VNvVO|a&1pswjB{`NrTi@m5uh+z9rZ+ zYE{WLN#A-{wI}|Wz~9cY?J#Ut^ME?wK*tfWtaC^vz9sw&l$7!vlD@GO_noqGU9&nT z;R*h`e{cG$)f*bYt4_r?)gJxW${MAhVvD2!r}*q@xpu{~4mxlI{>z3vfZZwC+mA@< z=0gg;9lz7IbVz3XQHi&2kh5Q%0Qmm=C*I59_gE_rKo{nuH}9W3~! z$60#cMmv;OoVWTK>1%@jF?Q@&$+BnSCkQaTNSEfrx2?W?`?kcz#!5>|ixd?W%B@?s zK!Eu*&;SmPLH4lPgC2oem2V6F#K&why~e%OiV9<2|NQy$QdLz26g|(0ZwoENoj4L7 z)+f7p%H z>AQq?{_JUqh>DZBOOnKryhfsu^Cf9xn=D`7Dv7Xf^H!Be$lQ4OJYs?5WM|98b7#@a zz?Jm7_Nkx0sv3G*BFt7wPr_H^ z$&}eKVqKLgCyyU>r9+L4rsZYfkNy=L&e3gKYUPXA<;pe^&y3oG3h#8(%1**g>pE@o z0ocF}$!|FU`nn}Pf4hXmt&*gaHFEvxWkm8L4z?b`qtp2BhWOkzusFn zWJa__@iJ}Gffw*~$6x<;rz5xNm}E5^lg}61q@<)o(ZK#so;)dc?%YwoH4S_|+=9Lo zZ#p_U#GF+nYvG4vY&qEHTWLH8t6k}!+~v1^C7;EnN=AByG}PD2`t|E2EiFxM+_*u3 z3YgtMU$2t~Teoe;`jhw{1@8^n7z}4m?=>B1oA%4Py%*%ylftBGV>$UQ3GwlA{5bV4 z&W}0g9q)%zfWOk2v{$pSe$02Ad@lPQ{d+iLuqo10~Ba*^bo`3pfuJCdt0Nd$imKjQ9Qc-{O$ywDN%APdccBX&)l21yWR0 z1aQyCoA-ez7|Yku>j=j9W?9w-ME+gJAg2L)U~9L^l0j-g- zSe3jAz5w!8!LLBbkEVfs$I3FCp_GrkUtiz6j}I`<~(zLc2@m&u*mUlV9R_)p%WFQq#h8gSMx zqtfX+_-}hX(L-N^ai)ma74i@<&Oq>A^8oe8OvvP{d9kv(hCUl{9~^&I`J#?gzAA05 zv$)bh{25n@UbaRaKfE6h{GGC+c%PGrm{LTd6z({s>`jIjf7ul$-s^di2Yto$Ogdyd z8?i6O#ro5y(YZdUx9Y=4!i68NtJZG^)EYFeo zDJ2pWpCt1v8Io3O_&#h)UZ}Bw{ErKsF1P=DDxK4( zIO9@s>kt0U_OCsD_(0}kyw_l??TYV44BZvKf$k|6l(#I%-Lk?u36EbRk=R#C-nd7_ z;kEp0|7VW1P(GXX8Ih;&?3WEgyAk7@a?{y)SYk7cwH9G$cmv_==^fi;g9fhOb1{c0 zQ?7lb!4?+nJS|ffSjC>6){p<%b`E76K*MWg<4hwHlhP3T*zdEvd&8a2X9G4l)TRn788W0oaTG)xtp!0y=X_?pbZmw$*%laK^ZPy3O zW!@V4->^lBm)uV&+pX3i*?oHI#du2pz6=|veb0!f7`bxg3eM3WPLH#UzT)r1UD0s) z;svQFFOwPbse!aS45~*#ry8T`s!9o(G+m-nk+&M3uGUzTS>nlf zLmuKzjGNF7kgja_p{bR-)!C;Fm7A2^&&|$Mba3B`eD#F4>oX-g(61kSG(rA+^9EQs zbe#|UUmN!m)9X`b%n^G-x6DpRlj*Ump!2^{c#^-1a6T(y`C3_M+n{2Axh-EoCvKB* z)8@)AKbiu0-7beaI{^Nfr01>2zL&9g=6wzrye|NZkcF$HFh5V>4qT`=ha3~Vfmq}x zVe{3#BHF8*i=v%pB(-|KidPmEm&l>^19I@-L0MN?E_32n%jC$VGCj@)x!)s`aYiOI zEL@hvC&-k!%cKbUWH29_^PRRiE^#HIc|JDSV24G=j`0kD%0jK6Lao1`8+N~#qu+p zd8-c}JyPdT^m!Np+|#ySMt$GNTm9Y--jqK~kCv#_%v+r$OLA(|{2;C#WeCsLU{5wW z-YT>;z+p%{cc+Q8^BMQkEh~~_LRhrK7i^c@ygYgO^r<|2_)yinXMA$@?Aef|cF0Yf z{N&yLknfHhDL;SzL-|v5GU9W&lE34O(!HGfZmCaJTyGO<3LcTD|0`PNbN~X+? zU8&A3P)BK>ThqXK!8PbKTG%X*ub4M zFrV#rK|%7b|1w&B{ozNL-}}^FKyvz8oP{{!{PwBb!a1Ch(lVKwQ~*7Ubqn;o9tY}G z3-*}OGIPlifHvfp_kk$de`{=Rk)UZ&vIKdn_wTBh0O6^tv7ufTXOv;@=$On~yh85( zMaAr$b3}h7lAT+i;!?`jhaAzK=k%7DiSS%~$#ma#`JbDa0Iql{TZEQKw^w`;IIp{;#od8^~b zDH`^-?ZuhM2$i=QU)TWueXr6jT+_~hP20U|r<&W3A3s+4tJF~wCQLB$R%eCDqU0PE zTcAB$l3gPoP5xXiS@QOG07O{~LL$%S(4kdDUhL8Ndv0o#l$N`@NK;5UOFJCw(#p}x?W$gxu zMIJhRxta6hBtz^td!->HE?oDs@%JKhx`wi-tmb>>L#V1 zFc$AVkIz57e@BiSYL~K_Z8AGL5wW6hDJt6}=WxD2_j~`FuT|b^Q{9%nXPPJa8{ccn zDvYSKy45|%ALDZebSP`HDULM{K052Zywy14d0)Qjd(Pkbx$}FKkBasK);K(=@=U$e zgXOI{oc+7j#KVl|#LHO|4Z_y}|PIobj? zS@JQ5Hf?K=1HkFt9rb@VULH@7|Bzi&uKcxxtc{X{Gpk8BFPnh#vXMzeGA}Vz>8k5j zE&}zyj?0--C)Js$#C5H*7JdrP^DwSJf01znu9Grwu6=QSJ@Qs_WkW@kJbrL5V0i3s zw5UBnuCuj|t=DSWXXSIoWioN*BQCd2mf7;;=Cvyd2l~Xr;Yma5UgS;g?4#Kgw(GrK zyYLKYa`i!pTDnGdG!H*-wP5{5*w9w2-3^|*!t``cJcxt20J&VbMbdSov+ulxKYXaz zv`vNcC}TR{H~pXt}Qwt(uQli9;=Jv$dFyt+;os@KrSdd* zo||LpD{Ov8dEt5fbrm&!!#~$^7O|R2%x#`W8Z6%0|GfdfMJnL;_{)DA*1+lvqZipH zPpAuXA#2o&jLGsmpz-{$nm0Au{L7&_-gN|P{8V*z#~bgtZ?U|%LFFsO!!9J?%zc_O zrowf6d|{(deuql`qx*l6r0n(B8*;{22iOl~oN3|mbh&!rEOJzf0kZ*l42KcNJ&N@& z@>WaM4;g+#lLKcEx2iehjdscd-|@V{D&$IJ6jw?ravCx)R(#I&>*tACvZdBo%lXO! z?k}&($NxXVe)&MK`{a=_0D4#BdAi-x1$yVi;?(7y{-WJ(j(CkGI>_XUSX@T;=c)gY&(|9%?#GxidWt94F7-d5y{ z8qZweKELl&K1%$G)rfl^@(F%D_H^dKUT{B^`v5BbzZvIVAYa+A>x9pkpkwE5X>F<( zYp#*E>OMyN&G_5&C3b1pUZ?&?*kH6jdGtVHteNsZpU2{ynN^B*pOeKon`LDt@>Ywg zWLd#h34<(6p1WMu7L>@ooz0SpywwcsiMzumo>rXGwyd^Gi`nGU`jzmb5>sT{tR?Eq zYSM;Ql{X+yA9399f50xNyw#6BohMVHQ)KG=6*6fK_JE+{pYvSLhocggUMAPCTw+t7 zebR26$&63UlaRPHMKc@oV!Y?d<$M)*dd8-lgqa_LZCSwunn7?F&tirlHVeKXr@6kBW=5p>d zHX7%a(ZP^$ICtTqO!>k!Z}qmyTb;geg{&xTl_OouO?!&+3}?Krh-Gah@}=OLLGIG9 zKar4Dtm7O*hOP1KINT-Urp|Qctu_hsR+;DaLf$IIthBsRou8o0M&S&{fk5T0o<3#d zt*)t(HQTymC33Zj%Tx{s&=i%6jwPo2_IJNm`$3Cfr~foJL9SoF&ewj^?%tMptBmU< z)pW?bmB?E?cb5IDD?7s`lV>lIDahky-s*hht+wv*P1m6VpK-i-{hDmp+@SUY=BT{Y z8mVi*8T-;2SzS;ia~2_Q6|qt?VqWLYog;2O_dS$vuP|@5Y8&!ar^_!toFF+R8`1oU z+`so1mA86!sClbg8ucP9qw-dPvcojlnX}5=)wlZ - - - - - - - - - - - - - - - - - - - - - - - -1 - - - - VersionNT >= 500 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 2.50.0