func Example_genBinaryPackage() { pkg := deb.NewPackage("testpkg", "0.0.2", "me <*****@*****.**>", "Dummy package for doing nothing\n") build := debgen.NewBuildParams() build.Init() build.IsRmtemp = false artifacts, err := deb.NewDebWriters(pkg) if err != nil { log.Fatalf("Error building binary: %v", err) } artifacts[deb.ArchAmd64].MappedFiles = map[string]string{"/usr/bin/a": "_out/a.amd64"} artifacts[deb.ArchI386].MappedFiles = map[string]string{"/usr/bin/a": "_out/a.i386"} artifacts[deb.ArchArmhf].MappedFiles = map[string]string{"/usr/bin/a": "_out/a.armhf"} prep() //prepare files for packaging using some other means. for arch, artifact := range artifacts { log.Printf("generating artifact '%s'/%v", arch, artifact) dgen := debgen.NewDebGenerator(artifact, build) err = dgen.GenerateAllDefault() if err != nil { log.Fatalf("Error building for '%s': %v", arch, err) } } // Output: // }
func Example_genSourcePackage() { pkg := deb.NewPackage("testpkg", "0.0.2", "me <*****@*****.**>", "Dummy package for doing nothing\n") build := debgen.NewBuildParams() build.IsRmtemp = false debgen.ApplyGoDefaults(pkg) spkg := deb.NewSourcePackage(pkg) err := build.Init() if err != nil { log.Fatalf("Error initializing dirs: %v", err) } spgen := debgen.NewSourcePackageGenerator(spkg, build) spgen.ApplyDefaultsPureGo() sourcesDestinationDir := pkg.Name + "_" + pkg.Version sourceDir := ".." sourcesRelativeTo := debgen.GetGoPathElement(sourceDir) spgen.OrigFiles, err = debgen.GlobForSources(sourcesRelativeTo, sourceDir, debgen.GlobGoSources, sourcesDestinationDir, []string{build.TmpDir, build.DestDir}) if err != nil { log.Fatalf("Error resolving sources: %v", err) } err = spgen.GenerateAllDefault() if err != nil { log.Fatalf("Error building source: %v", err) } // Output: // }
func main() { name := "debgen-dev" log.SetPrefix("[" + name + "] ") //set to empty strings because they're being overridden pkg := deb.NewPackage("", "", "", "") build := debgen.NewBuildParams() debgen.ApplyGoDefaults(pkg) fs := cmdutils.InitFlags(name, pkg, build) fs.StringVar(&pkg.Architecture, "arch", "all", "Architectures [any,386,armhf,amd64,all]") ddpkg := deb.NewDevPackage(pkg) var sourceDir string var glob string var sourcesRelativeTo string var sourcesDestinationDir string fs.StringVar(&sourceDir, "sources", build.WorkingDir, "source dir") fs.StringVar(&glob, "sources-glob", debgen.GlobGoSources, "Glob for inclusion of sources") fs.StringVar(&sourcesRelativeTo, "sources-relative-to", "", "Sources relative to (it will assume relevant gopath element, unless you specify this)") fs.StringVar(&sourcesDestinationDir, "sources-destination", debgen.DevGoPathDefault, "Destination dir for sources to be installed") err := cmdutils.ParseFlags(name, pkg, fs) if err != nil { log.Fatalf("%v", err) } if sourcesRelativeTo == "" { sourcesRelativeTo = debgen.GetGoPathElement(sourceDir) } mappedFiles, err := debgen.GlobForSources(sourcesRelativeTo, sourceDir, glob, sourcesDestinationDir, []string{build.TmpDir, build.DestDir}) if err != nil { log.Fatalf("Error resolving sources: %v", err) } err = build.Init() if err != nil { log.Fatalf("Error creating build directories: %v", err) } err = debgen.GenDevArtifact(ddpkg, build, mappedFiles) if err != nil { log.Fatalf("Error building -dev: %v", err) } }
func Example_genDevPackage() { pkg := deb.NewPackage("testpkg", "0.0.2", "me", "Dummy package for doing nothing\n") ddpkg := deb.NewDevPackage(pkg) build := debgen.NewBuildParams() build.IsRmtemp = false build.Init() var err error mappedFiles, err := debgen.GlobForGoSources(".", []string{build.TmpDir, build.DestDir}) if err != nil { log.Fatalf("Error building -dev: %v", err) } err = debgen.GenDevArtifact(ddpkg, build, mappedFiles) if err != nil { log.Fatalf("Error building -dev: %v", err) } // Output: // }
func main() { name := "debgen-source" log.SetPrefix("[" + name + "] ") //set to empty strings because they're being overridden pkg := deb.NewPackage("", "", "", "") build := debgen.NewBuildParams() debgen.ApplyGoDefaults(pkg) fs := cmdutils.InitFlags(name, pkg, build) fs.StringVar(&pkg.Architecture, "arch", "all", "Architectures [any,386,armhf,amd64,all]") var sourceDir string var glob string var sourcesRelativeTo string fs.StringVar(&sourceDir, "sources", ".", "source dir") fs.StringVar(&glob, "sources-glob", debgen.GlobGoSources, "Glob for inclusion of sources") fs.StringVar(&sourcesRelativeTo, "sources-relative-to", "", "Sources relative to (it will assume relevant gopath element, unless you specify this)") err := cmdutils.ParseFlags(name, pkg, fs) if err != nil { log.Fatalf("%v", err) } err = build.Init() if err != nil { log.Fatalf("Error creating build directories: %v", err) } if sourcesRelativeTo == "" { sourcesRelativeTo = debgen.GetGoPathElement(sourceDir) } spkg := deb.NewSourcePackage(pkg) sourcesDestinationDir := pkg.Name + "_" + pkg.Version spgen := debgen.NewSourcePackageGenerator(spkg, build) spgen.OrigFiles, err = debgen.GlobForSources(sourcesRelativeTo, sourceDir, glob, sourcesDestinationDir, []string{build.TmpDir, build.DestDir}) if err != nil { log.Fatalf("Error resolving sources: %v", err) } err = spgen.GenerateAllDefault() if err != nil { log.Fatalf("%v", err) } }
func main() { name := "debgen-changelog" log.SetPrefix("[" + name + "] ") //set to empty strings because they're being overridden pkg := deb.NewPackage("", "", "", "") build := debgen.NewBuildParams() debgen.ApplyGoDefaults(pkg) fs := cmdutils.InitFlags(name, pkg, build) fs.StringVar(&pkg.Architecture, "arch", "all", "Architectures [any,386,armhf,amd64,all]") var entry string fs.StringVar(&entry, "entry", "", "Changelog entry data") err := cmdutils.ParseFlags(name, pkg, fs) if err != nil { log.Fatalf("%v", err) } if entry == "" { log.Fatalf("Error: --entry is a required flag") } filename := filepath.Join(build.ResourcesDir, "debian", "changelog") templateVars := debgen.NewTemplateData(pkg) templateVars.ChangelogEntry = entry err = os.MkdirAll(filepath.Join(build.ResourcesDir, "debian"), 0777) if err != nil { log.Fatalf("Error making dirs: %v", err) } _, err = os.Stat(filename) if os.IsNotExist(err) { tpl, err := template.New("template").Parse(debgen.TemplateChangelogInitial) if err != nil { log.Fatalf("Error parsing template: %v", err) } //create .. f, err := os.Create(filename) if err != nil { log.Fatalf("Error creating file: %v", err) } defer f.Close() err = tpl.Execute(f, templateVars) if err != nil { log.Fatalf("Error executing template: %v", err) } err = f.Close() if err != nil { log.Fatalf("Error closing written file: %v", err) } } else if err != nil { log.Fatalf("Error reading existing changelog: %v", err) } else { tpl, err := template.New("template").Parse(debgen.TemplateChangelogAdditionalEntry) if err != nil { log.Fatalf("Error parsing template: %v", err) } //append.. f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0666) if err != nil { log.Fatalf("Error opening file: %v", err) } defer f.Close() err = tpl.Execute(f, templateVars) if err != nil { log.Fatalf("Error executing template: %v", err) } err = f.Close() if err != nil { log.Fatalf("Error closing written file: %v", err) } } }
func main() { name := "debgo-deb" log.SetPrefix("[" + name + "] ") build := debgen.NewBuildParams() err := build.Init() if err != nil { log.Fatalf("%v", err) } fs := flag.NewFlagSet(name, flag.ContinueOnError) fs.BoolVar(&build.IsRmtemp, "rmtemp", false, "Remove 'temp' dirs") fs.BoolVar(&build.IsVerbose, "verbose", false, "Show log messages") var isControl, isContents, isDebianContents bool fs.BoolVar(&isControl, "control", false, "Show control") fs.BoolVar(&isContents, "contents", false, "Show contents of data archive") fs.BoolVar(&isDebianContents, "debian-contents", false, "Show contents of 'debian' archive (metadata and scripts)") //var debFile string //fs.StringVar(&debFile, "file", "", ".deb file") err = fs.Parse(os.Args[1:]) if err != nil { log.Fatalf("%v", err) } args := fs.Args() if len(args) < 1 { log.Fatalf("File not specified") } if isControl { for _, debFile := range args { rdr, err := os.Open(debFile) if err != nil { log.Fatalf("%v", err) } log.Printf("File: %+v", debFile) err = deb.DebExtractFileL2(rdr, "control.tar.gz", "control", os.Stdout) if err != nil { log.Fatalf("%v", err) } } } else if isContents { for _, debFile := range args { rdr, err := os.Open(debFile) if err != nil { log.Fatalf("%v", err) } log.Printf("File: %+v", debFile) files, err := deb.DebGetContents(rdr, "data.tar.gz") if err != nil { log.Fatalf("%v", err) } for _, file := range files { log.Printf("%s", file) } } } else if isDebianContents { for _, debFile := range args { rdr, err := os.Open(debFile) if err != nil { log.Fatalf("%v", err) } log.Printf("File: %+v", debFile) files, err := deb.DebGetContents(rdr, "control.tar.gz") if err != nil { log.Fatalf("%v", err) } for _, file := range files { log.Printf("%s", file) } } } else { log.Fatalf("No command specified") } }
func main() { name := "debgen-deb" log.SetPrefix("[" + name + "] ") //set to empty strings because they're being overridden pkg := deb.NewPackage("", "", "", "") build := debgen.NewBuildParams() debgen.ApplyGoDefaults(pkg) fs := cmdutils.InitFlags(name, pkg, build) var binDir string var resourcesDir string fs.StringVar(&binDir, "binaries", "", "directory containing binaries for each architecture. Directory names should end with the architecture") fs.StringVar(&pkg.Architecture, "arch", "any", "Architectures [any,386,armhf,amd64,all]") fs.StringVar(&resourcesDir, "resources", "", "directory containing resources for this platform") err := cmdutils.ParseFlags(name, pkg, fs) if err != nil { log.Fatalf("%v", err) } err = build.Init() if err != nil { log.Fatalf("%v", err) } //log.Printf("Resources: %v", build.Resources) // TODO determine this platform //err = bpkg.Build(build, debgen.GenBinaryArtifact) artifacts, err := deb.NewDebWriters(pkg) if err != nil { log.Fatalf("%v", err) } for arch, artifact := range artifacts { dgen := debgen.NewDebGenerator(artifact, build) err = filepath.Walk(resourcesDir, func(path string, info os.FileInfo, err2 error) error { if info != nil && !info.IsDir() { rel, err := filepath.Rel(resourcesDir, path) if err == nil { dgen.OrigFiles[rel] = path } return err } return nil }) if err != nil { log.Fatalf("%v", err) } archBinDir := filepath.Join(binDir, string(arch)) err = filepath.Walk(archBinDir, func(path string, info os.FileInfo, err2 error) error { if info != nil && !info.IsDir() { rel, err := filepath.Rel(binDir, path) if err == nil { dgen.OrigFiles[rel] = path } return err } return nil }) err = dgen.GenerateAllDefault() if err != nil { log.Fatalf("Error building for '%s': %v", arch, err) } } }