From eb947f9b20ab26f3a264512d9ea876c503eb0ec1 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Thu, 9 Oct 2025 20:01:19 -0500 Subject: make /home/mirrors/debian/dists --- makePackageFile.go | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 makePackageFile.go (limited to 'makePackageFile.go') diff --git a/makePackageFile.go b/makePackageFile.go new file mode 100644 index 0000000..3926901 --- /dev/null +++ b/makePackageFile.go @@ -0,0 +1,90 @@ +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 +} -- cgit v1.2.3