summaryrefslogtreecommitdiff
path: root/debian.go
diff options
context:
space:
mode:
Diffstat (limited to 'debian.go')
-rw-r--r--debian.go106
1 files changed, 106 insertions, 0 deletions
diff --git a/debian.go b/debian.go
new file mode 100644
index 0000000..3b21991
--- /dev/null
+++ b/debian.go
@@ -0,0 +1,106 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "fmt"
+ "os"
+
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+func buildDeb() {
+ var counter int
+ if int(argv.Max) == 0 {
+ argv.Max = 50
+ }
+
+ all := me.forge.Repos.SortByFullPath()
+ for all.Scan() {
+ var cmd []string
+ check := all.Next()
+
+ outdir := getOutdir(check)
+ os.MkdirAll(outdir, 0755)
+
+ if me.forge.Config.IsReadOnly(check.GetGoPath()) {
+ continue
+ }
+
+ if !check.IsBinary() {
+ continue
+ }
+
+ if check.IsGoPlugin() {
+ continue
+ }
+
+ if argv.Release {
+ cmd = []string{"go-deb", "--release", "--dir", outdir}
+ } else {
+ cmd = []string{"go-deb", "--dir", outdir}
+ }
+ if me.forge.Config.IsPrivate(check.GetGoPath()) {
+ cmd = []string{"go-deb", "--dir", outdir}
+ continue
+ }
+
+ if argv.Verbose {
+ log.Info("build cmd:", cmd)
+ cmd = append(cmd, "--verbose")
+ }
+ if argv.DryRun {
+ continue
+ }
+
+ if argv.Force {
+ // build everything no matter what
+ } else {
+ if state[check] != "need to build" {
+ // log.Info("skipping build for", check.GetGoPath(), state[check])
+ continue
+ }
+ }
+
+ counter += 1
+
+ if counter > int(argv.Max) {
+ log.Info("did --max builds", argv.Max)
+ okExit("")
+ }
+
+ if argv.MacBuild != nil {
+ log.Info("todo: add mac builds")
+ continue
+ }
+
+ if err := check.RunVerbose(cmd); err != nil {
+ log.Info(check.FullPath, cmd)
+ failed[check] = fmt.Sprint("godeb failed", cmd, "with", err)
+ badExit(err)
+ } else {
+ log.Info("build worked")
+ }
+ }
+}
+
+func getOutdir(repo *gitpb.Repo) string {
+ if repo.GetLastTag() != repo.GetMasterVersion() {
+ return "/home/jcarr/incoming-devel"
+ }
+
+ if repo.GetCurrentBranchVersion() != repo.GetMasterVersion() {
+ return "/home/jcarr/incoming-devel"
+ }
+
+ if repo.CheckDirty() {
+ return "/home/jcarr/incoming-devel"
+ }
+
+ if me.forge.Config.IsPrivate(repo.GetGoPath()) {
+ return "/home/jcarr/incoming-private"
+ }
+ return "/home/jcarr/incoming"
+}