summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-10 13:53:56 -0500
committerJeff Carr <[email protected]>2025-10-10 16:29:28 -0500
commit01a3360487faf0a665316f112f73a4caff6ea028 (patch)
treee69e630346f41cece4dfc48790bcc4c3db455acc
parent2c1c6217d6b0136a50e359ce5104ad6772c8fcf5 (diff)
renamed file (and added stuff)
-rw-r--r--makePackageFile.go90
-rw-r--r--mirrorsSupport.go141
2 files changed, 141 insertions, 90 deletions
diff --git a/makePackageFile.go b/makePackageFile.go
deleted file mode 100644
index 3926901..0000000
--- a/makePackageFile.go
+++ /dev/null
@@ -1,90 +0,0 @@
-package zoopb
-
-import (
- "bytes"
- "fmt"
- "io"
- "os"
- "path"
- "path/filepath"
-)
-
-// remove and return the pb varname
-func (pb *Package) DeleteString(varname string) string {
- return "todo"
-}
-
-// makes /home/mirrors/debian/dists/ for use by 'apt update'
-func (pb *Packages) MakeDists() (string, error) {
- os.Chdir(pb.BaseDir)
-
- arch := "risc64"
- packageDir := filepath.Join("dists", "sid", "main", "binary"+arch)
- pb.MakePackageFile(packageDir, arch)
-
- /*
- // 5. Generate and sign the Release file
- log.Println("Generating and signing Release file...")
- if err := generateAndSignReleaseFile(distPath); err != nil {
- log.Printf("Failed to generate or sign Release file: %v\n", err)
- return err
- }
- */
-
- return "--- Repository generation complete! ---", nil
-}
-
-// similar to "dpkg -I moonbuggy.deb"
-// destroys the pb so send a copy
-func (pb *Package) writeDebInfo(w io.Writer) {
- fmt.Fprintf(w, "Package: %s\n", pb.Package)
- fmt.Fprintf(w, "Filename: %s\n", pb.Filename)
- fmt.Fprintf(w, "MD5sum: %s\n", pb.DeleteString("md5sum"))
- fmt.Fprintf(w, "SHA1: %s\n", pb.DeleteString("SHA1"))
- fmt.Fprintf(w, "SHA256: %s\n", pb.DeleteString("sha256"))
-}
-
-// makes the file "dists/sid/main/binary-riscv64/Packages"
-// then compresses it as .gz & .bz2 files
-func (pb *Packages) MakePackageFile(packageDir string, arch string) error {
- if err := os.Chdir(pb.BaseDir); err != nil {
- return err
- }
-
- fullpath := path.Join(pb.BaseDir, packageDir)
- os.MkdirAll(fullpath, 0755)
-
- // made a new PB in memory of just the matching riscv64.deb files
- matcharch := NewPackages()
-
- // goes through each .deb file and writes out the entry in the Packages file
- for debPB := range pb.IterByFilename() {
- if debPB.Architecture != arch {
- continue
- }
- matcharch.Append(debPB)
- }
-
- var data bytes.Buffer
- for debPB := range matcharch.IterByFilename() {
- debPB.writeDebInfo(&data)
- }
-
- // write out the "Packages" file
- if err := os.WriteFile(filepath.Join(packageDir, "Package"), []byte(data.String()), 0644); err != nil {
- return err
- }
-
- /*
- // Create "Packages.gz"
- if err := compressFile(filepath.Join(fullfile, "Package.gz"); err != nil {
- return err
- }
-
- // Create "Packages.gz"
- if err := compressFile(filepath.Join(fullfile, "Package.bz2"); err != nil {
- return err
- }
- */
- return nil
-}
diff --git a/mirrorsSupport.go b/mirrorsSupport.go
new file mode 100644
index 0000000..3baa76e
--- /dev/null
+++ b/mirrorsSupport.go
@@ -0,0 +1,141 @@
+package zoopb
+
+// makes dists/ directores for 'apt update'
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "io"
+ "os"
+ "path"
+ "path/filepath"
+
+ "go.wit.com/log"
+)
+
+var verbose bool
+
+// remove and return the pb varname
+func (pb *Package) DeleteString(varname string) string {
+ return "todo"
+}
+
+// makes /home/mirrors/debian/dists/ for use by 'apt update'
+func (pb *Packages) MakeDists() (string, error) {
+ log.Printf("Attempting to make dists/ in %s with %d .deb files\n", pb.BaseDir, pb.Len())
+ os.Chdir(pb.BaseDir)
+
+ var s string
+ var err error
+ var archpb *Packages
+ archpb, s, err = pb.doNormalArch("all")
+ log.Printf("arch all found %5d packages. %s err=(%v)\n", archpb.Len(), filepath.Join(pb.BaseDir, s), err)
+ archpb, s, err = pb.doNormalArch("riscv64")
+ log.Printf("arch riscv64 found %5d packages. %s err=(%v)\n", archpb.Len(), filepath.Join(pb.BaseDir, s), err)
+ archpb, s, err = pb.doNormalArch("amd64")
+ log.Printf("arch amd64 found %5d packages. %s err=(%v)\n", archpb.Len(), filepath.Join(pb.BaseDir, s), err)
+ // archpb, s, err = pb.doNormalArch("arm64")
+ // log.Printf("arch arm64 found %5d not as cool as riscv packages. msg='%s' err=(%v)\n", archpb.Len(), s, err)
+
+ return s, nil
+}
+
+func (pb *Packages) doNormalArch(arch string) (*Packages, string, error) {
+ packageDir := filepath.Join("dists", "sid", "main", "binary-"+arch)
+ archpb, s, err := pb.MakePackageFile(packageDir, arch)
+ if err != nil {
+ log.Info("MakePackageFile() failed", s, err)
+ } else {
+ if verbose {
+ log.Info("MakePackageFile() for", arch, "worked")
+ }
+ }
+
+ /*
+ // 5. Generate and sign the Release file
+ log.Println("Generating and signing Release file...")
+ if err := generateAndSignReleaseFile(distPath); err != nil {
+ log.Printf("Failed to generate or sign Release file: %v\n", err)
+ return err
+ }
+ */
+ return archpb, filepath.Join(packageDir, "Packages"), err
+}
+
+// similar to "dpkg -I moonbuggy.deb"
+// destroys the pb so send a copy
+func (pb *Package) writeDebInfo(w io.Writer) {
+ fmt.Fprintf(w, "Package: %s\n", pb.Package)
+ fmt.Fprintf(w, "Filename: %s\n", pb.Filename)
+ fmt.Fprintf(w, "MD5sum: %s\n", pb.DeleteString("md5sum"))
+ fmt.Fprintf(w, "SHA1: %s\n", pb.DeleteString("SHA1"))
+ fmt.Fprintf(w, "SHA256: %s\n", pb.DeleteString("sha256"))
+}
+
+// makes the file "dists/sid/main/binary-riscv64/Packages"
+// then compresses it as .gz & .bz2 files
+func (pb *Packages) MakePackageFile(packageDir string, arch string) (*Packages, string, error) {
+ if verbose {
+ log.Printf("Attempting to make Package file for arch=%s\n", arch)
+ }
+ if err := os.Chdir(pb.BaseDir); err != nil {
+ return nil, "", err
+ }
+
+ fullpath := path.Join(pb.BaseDir, packageDir)
+ if err := os.MkdirAll(fullpath, 0755); err != nil {
+ return nil, "", err
+ }
+
+ // made a new PB in memory of just the matching riscv64.deb files
+ matcharch := NewPackages()
+
+ // goes through each .deb file and writes out the entry in the Packages file
+ for debPB := range pb.IterAll() {
+ if verbose {
+ log.Info("Adding package", debPB.Architecture, debPB.Filename)
+ }
+ if debPB.Architecture != arch {
+ continue
+ }
+ matcharch.Append(debPB)
+ }
+
+ if matcharch.Len() == 0 {
+ return matcharch, "found no files", errors.New("no " + arch + " files found")
+ }
+
+ var data bytes.Buffer
+ for debPB := range matcharch.IterByFilename() {
+ if verbose {
+ log.Info("Adding package", debPB.Filename)
+ }
+ debPB.writeDebInfo(&data)
+ }
+
+ // write out the "Packages" file
+ filename := filepath.Join(packageDir, "Package")
+ fullname := filepath.Join(pb.BaseDir, filename)
+ if len(data.String()) == 0 {
+ return matcharch, fullname, errors.New("something is wrong. Package file would be empty")
+ }
+ log.Info("Going to write file", fullname, "with string length", len(data.String()))
+ if err := os.WriteFile(fullname, []byte(data.String()), 0644); err != nil {
+ return matcharch, fullname, err
+ }
+
+ /*
+ // Create "Packages.gz"
+ if err := compressFile(filepath.Join(fullfile, "Package.gz"); err != nil {
+ return err
+ }
+
+ // Create "Packages.gz"
+ if err := compressFile(filepath.Join(fullfile, "Package.bz2"); err != nil {
+ return err
+ }
+ */
+ s := log.Sprintf("Created %s", fullname)
+ return matcharch, s, nil
+}