diff --git a/build/ci.go b/build/ci.go index 821b83eee..d7d61fbdc 100644 --- a/build/ci.go +++ b/build/ci.go @@ -62,6 +62,7 @@ import ( "github.com/ledgerwatch/turbo-geth/internal/build" "github.com/ledgerwatch/turbo-geth/params" + "github.com/cespare/cp" ) var ( @@ -549,8 +550,9 @@ func doDebianSource(cmdline []string) { log.Fatalf("Failed to rename Go source folder: %v", err) } // Add all dependency modules in compressed form - build.CopyFolder(filepath.Join(pkgdir, ".mod", "cache", "download"), filepath.Join(gobuild.Default.GOPATH, "pkg", "mod", "cache", "download"), 0755) - + if err := cp.CopyAll(filepath.Join(pkgdir, ".mod", "cache", "download"), filepath.Join(gobuild.Default.GOPATH, "pkg", "mod", "cache", "download")); err != nil { + log.Fatalf("Failed to copy Go module dependencies: %v", err) + } // Run the packaging and upload to the PPA debuild := exec.Command("debuild", "-S", "-sa", "-us", "-uc", "-d", "-Zxz") debuild.Dir = pkgdir @@ -816,9 +818,12 @@ func doWindowsInstaller(cmdline []string) { build.Render("build/nsis.uninstall.nsh", filepath.Join(*workdir, "uninstall.nsh"), 0644, allTools) build.Render("build/nsis.pathupdate.nsh", filepath.Join(*workdir, "PathUpdate.nsh"), 0644, nil) build.Render("build/nsis.envvarupdate.nsh", filepath.Join(*workdir, "EnvVarUpdate.nsh"), 0644, nil) - build.CopyFile(filepath.Join(*workdir, "SimpleFC.dll"), "build/nsis.simplefc.dll", 0755) - build.CopyFile(filepath.Join(*workdir, "COPYING"), "COPYING", 0755) - + if err := cp.CopyFile(filepath.Join(*workdir, "SimpleFC.dll"), "build/nsis.simplefc.dll"); err != nil { + log.Fatal("Failed to copy SimpleFC.dll: %v", err) + } + if err := cp.CopyFile(filepath.Join(*workdir, "COPYING"), "COPYING"); err != nil { + log.Fatal("Failed to copy copyright note: %v", err) + } // Build the installer. This assumes that all the needed files have been previously // built (don't mix building and packaging to keep cross compilation complexity to a // minimum). @@ -835,7 +840,6 @@ func doWindowsInstaller(cmdline []string) { "/DARCH="+*arch, filepath.Join(*workdir, "geth.nsi"), ) - // Sign and publish installer. if err := archiveUpload(installer, *upload, *signer); err != nil { log.Fatal(err) diff --git a/internal/build/util.go b/internal/build/util.go index 75fc5d1ec..6fa401111 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -121,51 +121,6 @@ func render(tpl *template.Template, outputFile string, outputPerm os.FileMode, x } } -// CopyFile copies a file. -func CopyFile(dst, src string, mode os.FileMode) { - if err := os.MkdirAll(filepath.Dir(dst), 0755); err != nil { - log.Fatal(err) - } - destFile, err := os.OpenFile(dst, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, mode) - if err != nil { - log.Fatal(err) - } - defer destFile.Close() - - srcFile, err := os.Open(src) - if err != nil { - log.Fatal(err) - } - defer srcFile.Close() - - if _, err := io.Copy(destFile, srcFile); err != nil { - log.Fatal(err) - } -} - -// CopyFolder copies a folder. -func CopyFolder(dst, src string, mode os.FileMode) { - if err := os.MkdirAll(dst, mode); err != nil { - log.Fatal(err) - } - dir, _ := os.Open(src) - - objects, err := dir.Readdir(-1) - if err != nil { - log.Fatal(err) - } - for _, obj := range objects { - srcPath := filepath.Join(src, obj.Name()) - dstPath := filepath.Join(dst, obj.Name()) - - if obj.IsDir() { - CopyFolder(dstPath, srcPath, mode) - } else { - CopyFile(dstPath, srcPath, mode) - } - } -} - // GoTool returns the command that runs a go tool. This uses go from GOROOT instead of PATH // so that go commands executed by build use the same version of Go as the 'host' that runs // build code. e.g.