diff options
Diffstat (limited to 'wit.go')
| -rw-r--r-- | wit.go | 129 |
1 files changed, 0 insertions, 129 deletions
@@ -1,11 +1,7 @@ package zoopb import ( - "bufio" - "os" "strings" - - "go.wit.com/lib/fhelp" ) func (m *Machine) IsInstalled(name string) bool { @@ -113,128 +109,3 @@ func (m *Machine) FindByVersion(name string, version string) *Package { // log.Info("package not-installed:", name) return nil } - -// obviously a hack at this point -// read the package list file from mirrors.wit.com -func (m *Machine) InitWitMirrors() error { - m.Wit = NewPackages() - err := m.scanPackageListFile("/var/lib/apt/lists/mirrors.wit.com_wit_dists_sid_main_binary-amd64_Packages") - return err -} - -// adds the package if the name isn't there -// if it's newer, remove the old package and use the new one -func (all *Packages) AddIfNewer(p *Package) { - check := all.FindByName(p.Name) - if check == nil { - all.Append(p) - return - } - v1, _ := fhelp.NewDebVersion(check.Version) - v2, _ := fhelp.NewDebVersion(p.Version) - if v1.Equal(v2) { - // log.Info("do nothing", v1, v2) - return - } - if v1.LessThan(v2) { - // log.Info("removing", v1, "using", v2) - all.Delete(check) - all.Append(p) - } else { - // log.Info("keeping", v1, "got:", v2) - } -} - -// breaks up the apt list file into sections -// then sends each section to be processed -// and added to zoopb.Machine.Wit -func (m *Machine) scanPackageListFile(filename string) error { - file, err := os.Open(filename) - if err != nil { - return err - } - defer file.Close() - scanner := bufio.NewScanner(file) - var debInfo string - for scanner.Scan() { - line := scanner.Text() - if line == "" { - p := parsePackageInfo(debInfo) - m.Wit.AddIfNewer(p) - debInfo = "" - } - debInfo += line + "\n" - } - p := parsePackageInfo(debInfo) - m.Wit.Append(p) - return nil -} - -/* -func (m *Machine) addPackage(name string, version string, filename string) { - if name == "" { - return - } - // log.Info("addPackage:", name, version, filename) - var deb *DebPackage - var ok bool - deb, ok = allp[name] - if !ok { - deb = NewPackage() - deb.name.SetLabel(name) - allp[name] = deb - } - newversion := new(Version) - newversion.v = version - newversion.file = filename - deb.versions = append(deb.versions, newversion) -} -*/ - -// parses dpkg -s foo.deb -func parsePackageInfo(lines string) *Package { - var name string - var version string - var filename string - var gopath string - - for _, line := range strings.Split(lines, "\n") { - if line == "" { - continue - } - if strings.HasPrefix(line, " ") { - // these are usually Description: lines - continue - } - if strings.HasPrefix(line, "#") { - // skip comment lines. (probably doesn't happen in debian list files - continue - } - line = strings.TrimSpace(line) - parts := strings.Split(line, " ") - if len(parts) < 2 { - continue - } - if parts[0] == "Package:" { - name = parts[1] - } - if parts[0] == "Version:" { - version = parts[1] - } - if parts[0] == "Filename:" { - filename = strings.Join(parts[1:], " ") - } - if parts[0] == "GoPath:" { - gopath = parts[1] - } - } - - p := Package{ - Name: name, - Version: version, - PkgName: filename, - SrcPath: gopath, - } - - return &p -} |
