diff options
| author | Jeff Carr <[email protected]> | 2025-10-14 10:46:26 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-14 10:46:26 -0500 |
| commit | 87cb75966a79788f7c6192c0397b92c09114b104 (patch) | |
| tree | a6888c955c107166ebfc90fc3f6ec60ac1b7b34f | |
| parent | baebea24dd4c7bbbbef2b1aaa7c230e43cacf4e4 (diff) | |
riscv64 builds should workv0.22.164
| -rw-r--r-- | Makefile | 35 | ||||
| -rw-r--r-- | argv.go | 1 | ||||
| -rw-r--r-- | build.go | 18 | ||||
| -rw-r--r-- | control | 12 | ||||
| -rw-r--r-- | control.read.go | 45 | ||||
| -rw-r--r-- | control.write.go | 13 | ||||
| -rw-r--r-- | main.go | 8 | ||||
| -rw-r--r-- | structs.go | 15 | ||||
| -rw-r--r-- | update.go | 2 |
9 files changed, 50 insertions, 99 deletions
@@ -1,25 +1,25 @@ -.PHONY: debian go-deb +.PHONY: build VERSION = $(shell git describe --tags) BUILDTIME = $(shell date +%s) run: clean goimports vet install - go-deb + go-deb --keep-files --arch riscv64 # builds a .deb of go-deb and writes the file here in this directory -go-deb: +deb.default: go-deb -go-deb-keep-files: +deb.riscv64: + go-deb --keep-files --arch riscv64 + +deb.keep-files: go-deb --keep-files vet: @GO111MODULE=off go vet @echo this go library package builds okay -auto-build: build - ./go-deb --repo go.wit.com/apps/autotypist - build: goimports vet -rm resources/*.so touch resources/blank.so @@ -64,24 +64,7 @@ nocui: reset build clean: rm -f go.* - rm -f go-deb + rm -f go-deb* + rm -rf files/ rm -f resources/*.so touch resources/blank.so - -build-go-gui-toolkits: build - ./go-deb --release - -build-test-failure: build - ./go-deb --release - -build-test-keep-files: build - ./go-deb --keep-files - -build-release: - go-deb --release - -debian: build - ./go-deb --keep-files - -test2: - go-deb go.wit.com/apps/utils/go-gui-toolkits --dir /tmp @@ -19,6 +19,7 @@ type args struct { Ldflags []string `arg:"--ldflags" help:"flags to pass to go build"` OutDir string `arg:"--dir" help:"write .deb file into this directory"` Namespace string `arg:"--namespace" help:"the namespace of the repo"` + Arch string `arg:"--arch" help:"what arch"` KeepFiles bool `arg:"--keep-files" help:"keep the build files/"` Release bool `arg:"--release" help:"build version from the @latest git tag"` Force bool `arg:"--force" default:"false" help:"force overwrite an existing .deb file"` @@ -29,10 +29,10 @@ func buildPackage(repo *gitpb.Repo) (bool, error) { arch := repo.Control["Architecture"] // c.Architecture.String() if arch == "" { - arch = "amd64" // todo: detect what you are building on + arch = argv.Arch } const layout = "200601021504" - now := time.Now() + now := time.Now().UTC() version := repo.Control["Version"] + "-" + now.Format(layout) repo.Control["Version"] = version log.Info("version is:", version) @@ -101,6 +101,10 @@ func buildPackage(repo *gitpb.Repo) (bool, error) { } else { // set the GO111 build var to true. pass the versions to the compiler manually os.Setenv("GO111MODULE", "off") + if argv.Arch == "riscv64" { + os.Setenv("GOARCH", "riscv64") + // GOOS=windows GOARCH=amd64 GO111MODULE=off go build -v -o wit.exe \ + } cmd := []string{"go", "build"} // set standard ldflag options now := time.Now() @@ -181,10 +185,12 @@ func buildPackage(repo *gitpb.Repo) (bool, error) { log.Warn("cp failed") return false, err } - cmd = []string{"strip", "files/usr/bin/" + fname} - if err := repo.RunVerbose(cmd); err != nil { - log.Warn("strip failed") - return false, err + if argv.Arch == "amd64" { + cmd = []string{"strip", "files/usr/bin/" + fname} + if err := repo.RunVerbose(cmd); err != nil { + log.Warn("strip failed") + return false, err + } } } @@ -3,14 +3,8 @@ Build-Depends: golang Package: go-deb Maintainer: Jeff Carr <[email protected]> Packager: Jeff Carr <[email protected]> -Architecture: amd64 Depends: go-gui-toolkits -URL: https://go.wit.com/ +Namespace: go.wit.com/apps/go-deb Recommends: -Conflicts: testingoldstuff -Description: create distribution packages for golang repositories - Hopefully, this can make compatible and correct source - packages for things like debuild or the incoming queue since - golang applications are more strict then the traditional C - libraries and binaries that require lots of scripting. - A person can dream anyway. +Description: create .deb packages for anything + A person can dream anyway. Examples in the sources. diff --git a/control.read.go b/control.read.go index d6a4c0d..ee0673a 100644 --- a/control.read.go +++ b/control.read.go @@ -35,7 +35,7 @@ func readControlFile(repo *gitpb.Repo) error { log.Warn("readControlFile() could not find the file") // return errors.New("'control': file not found") // if this happens, make up a fake control file - pairs["Architecture"] = "amd64" // TODO: figure this out + pairs["Architecture"] = argv.Arch pairs["Recommends"] = "" pairs["Source"] = "notsure" if me.repo == nil { @@ -93,49 +93,8 @@ func readControlFile(repo *gitpb.Repo) error { } for key, value := range pairs { repo.Control[key] = value - /* - switch key { - case "Source": - c.Source.SetText(value) - case "Build-Depends": - c.BuildDepends.SetText(value) - case "Description": - c.Description.SetText(value) - case "Maintainer": - c.Maintainer.SetText(value) - case "Packager": - c.Packager.SetText(value) - case "GoPath": - c.GoPath.SetText(value) - case "URL": - c.URL.SetText(value) - case "Depends": - c.Depends.SetText(value) - case "Recommends": - c.Recommends.SetText(value) - case "Conflicts": - c.Conflicts.SetText(value) - case "Version": - c.Version.SetText(value) - case "Package": - c.Package.SetText(value) - // if c.Package.String() != value { - // log.Warn("not sure what to do with Package", c.Package.String(), value) - // } - case "Architecture": - // todo: add logic to find OS arch - if c.Architecture.String() != value { - log.Warn("attempting to set arch to", value) - c.Architecture.SetText(value) - - } - default: - log.Warn("the 'control' file has a value I don't know about") - log.Warn("error unknown key", key, "value:", value) - } - */ } - pairs["Architecture"] = "amd64" // TODO: figure this out + pairs["Architecture"] = argv.Arch if err := scanner.Err(); err != nil { return err diff --git a/control.write.go b/control.write.go index 358774d..2ee4cad 100644 --- a/control.write.go +++ b/control.write.go @@ -3,11 +3,10 @@ package main import ( "fmt" "os" - "strconv" "strings" "time" - "github.com/go-cmd/cmd" + "go.wit.com/lib/cobol" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) @@ -52,7 +51,7 @@ func writeDebianControlFile(repo *gitpb.Repo) bool { // fmt.Fprintln(cf, "Source:", repo.Control["Source"]) // c.Source.String()) fmt.Fprintln(cf, "Version:", repo.Control["Version"]) if repo.Control["Architecture"] == "" { - repo.Control["Architecture"] = "amd64" + repo.Control["Architecture"] = argv.Arch } fmt.Fprintln(cf, "Architecture:", repo.Control["Architecture"]) // c.Architecture.String()) @@ -65,10 +64,10 @@ func writeDebianControlFile(repo *gitpb.Repo) bool { writeControlVar(cf, repo, "GoPath") writeControlVar(cf, repo, "URL") - stamp := time.Now().UTC().Format("2006/01/02 15:04:05 UTC") + t := time.Now() // update to now now despite what the GUI is showing - fmt.Fprintln(cf, "Package-Build-Date:", stamp) - fmt.Fprintln(cf, "Git-Tag-Date:", "todo: get from repo") + fmt.Fprintln(cf, "Package-Build-Date:", cobol.Time(t)) + fmt.Fprintln(cf, "Git-Tag-Date:", "go-deb todo: get this from git") desc, _ := repo.Control["Description"] // c.Description.String() parts := strings.Split(desc, "\n") @@ -118,6 +117,7 @@ func computeControlValues(repo *gitpb.Repo) bool { return true } +/* // stamp := time.Now().UTC().Format("2006/01/02 15:04:05 UTC") func getDateStamp(tag string) string { @@ -138,3 +138,4 @@ func getDateStamp(tag string) string { gitTagDate := time.Unix(gitTagTimestampInt, 0) return gitTagDate.UTC().Format("2006-01-02_15:04:05_UTC") // close to RFC3339 } +*/ @@ -23,14 +23,18 @@ var argv args func main() { me = new(mainType) - me.myGui = prep.Gui() // prepares the GUI package for go-args - me.auto = prep.Bash3(&argv) // this line should be: prep.Bash(&argv) + me.sh = prep.Autocomplete(&argv) // adds shell auto complete to go-args wd, err := os.Getwd() if err != nil { badExit(err) } + if argv.Arch == "" { + // looking forward to the day when this default is "riscv64" + argv.Arch = "amd64" + } + me.repo, err = gitpb.NewRepo(wd) if err != nil { badExit(err) @@ -2,6 +2,7 @@ package main import ( "go.wit.com/gui" + "go.wit.com/lib/fhelp" "go.wit.com/lib/gadgets" "go.wit.com/lib/gui/prep" "go.wit.com/lib/protobuf/gitpb" @@ -11,12 +12,14 @@ var me *mainType // this app's variables type mainType struct { - auto *prep.Auto // more experiments for bash handling - goSrc string // path to ~/go/src or go.work file - goPath string // the goPath to use for the package - hasWork bool // true if using go.work file - repo *gitpb.Repo // this is the repo we are in - myGui *prep.GuiPrep // the gui toolkit handle + sh *prep.Auto // more experiments for bash handling + myGui *fhelp.GuiPrep // the gui handle itself + origGui *gui.Node // the gui handle itself + + goSrc string // path to ~/go/src or go.work file + goPath string // the goPath to use for the package + hasWork bool // true if using go.work file + repo *gitpb.Repo // this is the repo we are in } type controlBox struct { @@ -12,5 +12,5 @@ func updateControl(c *controlBox) { c.Depends.SetText(me.repo.Control["Depends"]) c.Recommends.SetText(me.repo.Control["Recommends"]) - c.Architecture.SetText("amd64") + c.Architecture.SetText(argv.Arch) } |
