152 lines
2.9 KiB
Go
152 lines
2.9 KiB
Go
package repokit
|
|
|
|
import "sort"
|
|
import "sync"
|
|
|
|
type RpmPackage struct {
|
|
PkgKey int64
|
|
PkgId string
|
|
Name string
|
|
Arch string
|
|
Version string
|
|
Epoch string
|
|
Release string
|
|
Summary string
|
|
Description string
|
|
Url string
|
|
TimeFile int64
|
|
TimeBuild int64
|
|
RpmLicense string
|
|
RpmVendor string
|
|
RpmGroup string
|
|
RpmBuildHost string
|
|
RpmSourceRpm string
|
|
RpmHeaderStart int
|
|
RpmHeaderEnd int
|
|
RpmPackager string
|
|
SizePackage int64
|
|
SizeInstalled int64
|
|
SizeArchive int64
|
|
LocationHref string
|
|
LocationBase string
|
|
RpmChecksumType string
|
|
FilesChecksumType string
|
|
|
|
Requires []RpmDependency
|
|
Provides []RpmDependency
|
|
Conflicts []RpmDependency
|
|
Obsoletes []RpmDependency
|
|
Suggests []RpmDependency
|
|
Enhances []RpmDependency
|
|
Recommends []RpmDependency
|
|
Supplements []RpmDependency
|
|
|
|
Files []RpmPackageFile
|
|
Changelogs []RpmChangelogEntry
|
|
}
|
|
|
|
type RpmDependency struct {
|
|
Name string
|
|
Flags string
|
|
Epoch string
|
|
Version string
|
|
Release string
|
|
Pre bool
|
|
}
|
|
|
|
type RpmChangelogEntry struct {
|
|
Author string
|
|
Date int64
|
|
Changelog string
|
|
}
|
|
|
|
type RpmPackageFile struct {
|
|
FullPath string
|
|
Type string
|
|
Digest string
|
|
}
|
|
|
|
type RpmEVR struct {
|
|
Epoch string
|
|
Version string
|
|
Release string
|
|
}
|
|
|
|
type RpmNEVR struct {
|
|
Name string
|
|
Epoch string
|
|
Version string
|
|
Release string
|
|
}
|
|
|
|
type RpmNEVRA struct {
|
|
Name string
|
|
Epoch string
|
|
Version string
|
|
Release string
|
|
Arch string
|
|
}
|
|
|
|
type RpmApValueStruct struct {
|
|
Flags string
|
|
Version string
|
|
Pre bool
|
|
}
|
|
|
|
type RpmDuplicateLocation struct {
|
|
Location string
|
|
Pkg *RpmPackage
|
|
}
|
|
|
|
type RpmXmlStruct struct {
|
|
Primary string
|
|
Filelists string
|
|
FilelistsExt string
|
|
Other string
|
|
}
|
|
|
|
type RpmXmlStructAll struct {
|
|
MutexPrimary sync.Mutex
|
|
MutexFilelists sync.Mutex
|
|
MutexOtherData sync.Mutex
|
|
MutexFilelistsExt sync.Mutex
|
|
RpmPrimaryXMLData
|
|
RpmFilelistsXMLData
|
|
RpmOtherXMLData
|
|
RpmFilelistsExtXMLData
|
|
}
|
|
|
|
func (x *RpmXmlStructAll) SortPackageByTaskID() {
|
|
sort.Slice(x.RpmPrimaryXMLData.PackageList, func(i int, j int) bool {
|
|
var cmp bool
|
|
|
|
cmp = x.RpmPrimaryXMLData.PackageList[i].ID < x.RpmPrimaryXMLData.PackageList[j].ID
|
|
return cmp
|
|
})
|
|
sort.Slice(x.RpmFilelistsXMLData.PackageList, func(i int, j int) bool {
|
|
var cmp bool
|
|
|
|
cmp = x.RpmFilelistsXMLData.PackageList[i].ID < x.RpmFilelistsXMLData.PackageList[j].ID
|
|
return cmp
|
|
})
|
|
sort.Slice(x.RpmOtherXMLData.PackageList, func(i int, j int) bool {
|
|
var cmp bool
|
|
|
|
cmp = x.RpmOtherXMLData.PackageList[i].ID < x.RpmOtherXMLData.PackageList[j].ID
|
|
return cmp
|
|
})
|
|
sort.Slice(x.RpmFilelistsExtXMLData.PackageList, func(i int, j int) bool {
|
|
var cmp bool
|
|
|
|
cmp = x.RpmFilelistsExtXMLData.PackageList[i].ID < x.RpmFilelistsExtXMLData.PackageList[j].ID
|
|
return cmp
|
|
})
|
|
}
|
|
|
|
func (x *RpmXmlStructAll) SetPackageNum() {
|
|
x.RpmPrimaryXMLData.PackageNum = len(x.RpmPrimaryXMLData.PackageList)
|
|
x.RpmFilelistsXMLData.PackageNum = len(x.RpmFilelistsXMLData.PackageList)
|
|
x.RpmOtherXMLData.PackageNum = len(x.RpmOtherXMLData.PackageList)
|
|
x.RpmFilelistsExtXMLData.PackageNum = len(x.RpmFilelistsExtXMLData.PackageList)
|
|
}
|