1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
}
|