Switch to new BPM file structure #8

Merged
EnumDev merged 11 commits from improve_bpm_structure into master 2024-10-23 06:22:40 +00:00
3 changed files with 17 additions and 65 deletions
Showing only changes of commit 1bd57110a0 - Show all commits

16
main.go
View File

@ -97,7 +97,7 @@ func resolveCommand() {
} }
for n, pkg := range packages { for n, pkg := range packages {
var info *utils.PackageInfo var info *utils.PackageInfo
info = utils.GetPackageInfo(pkg, rootDir, false) info = utils.GetPackageInfo(pkg, rootDir)
if info == nil { if info == nil {
log.Fatalf("Error: package (%s) is not installed\n", pkg) log.Fatalf("Error: package (%s) is not installed\n", pkg)
} }
@ -125,7 +125,7 @@ func resolveCommand() {
return return
} }
for n, pkg := range packages { for n, pkg := range packages {
info := utils.GetPackageInfo(pkg, rootDir, false) info := utils.GetPackageInfo(pkg, rootDir)
if info == nil { if info == nil {
fmt.Printf("Package (%s) could not be found\n", pkg) fmt.Printf("Package (%s) could not be found\n", pkg)
continue continue
@ -189,7 +189,7 @@ func resolveCommand() {
if err != nil { if err != nil {
log.Fatalf("Error: could not read package: %s\n", err) log.Fatalf("Error: could not read package: %s\n", err)
} }
if !reinstall && utils.IsPackageInstalled(bpmpkg.PkgInfo.Name, rootDir) && utils.GetPackageInfo(bpmpkg.PkgInfo.Name, rootDir, true).GetFullVersion() == bpmpkg.PkgInfo.GetFullVersion() { if !reinstall && utils.IsPackageInstalled(bpmpkg.PkgInfo.Name, rootDir) && utils.GetPackageInfo(bpmpkg.PkgInfo.Name, rootDir).GetFullVersion() == bpmpkg.PkgInfo.GetFullVersion() {
continue continue
} }
pkgsToInstall.Set(bpmpkg.PkgInfo.Name, &struct { pkgsToInstall.Set(bpmpkg.PkgInfo.Name, &struct {
@ -203,7 +203,7 @@ func resolveCommand() {
if err != nil { if err != nil {
log.Fatalf("Error: could not find package (%s) in any repository\n", pkg) log.Fatalf("Error: could not find package (%s) in any repository\n", pkg)
} }
if !reinstall && utils.IsPackageInstalled(entry.Info.Name, rootDir) && utils.GetPackageInfo(entry.Info.Name, rootDir, true).GetFullVersion() == entry.Info.GetFullVersion() { if !reinstall && utils.IsPackageInstalled(entry.Info.Name, rootDir) && utils.GetPackageInfo(entry.Info.Name, rootDir).GetFullVersion() == entry.Info.GetFullVersion() {
continue continue
} }
pkgsToInstall.Set(entry.Info.Name, &struct { pkgsToInstall.Set(entry.Info.Name, &struct {
@ -269,7 +269,7 @@ func resolveCommand() {
for _, pkg := range pkgsToInstall.Keys() { for _, pkg := range pkgsToInstall.Keys() {
value, _ := pkgsToInstall.Get(pkg) value, _ := pkgsToInstall.Get(pkg)
bpmpkg := value.bpmpkg bpmpkg := value.bpmpkg
installedInfo := utils.GetPackageInfo(bpmpkg.PkgInfo.Name, rootDir, false) installedInfo := utils.GetPackageInfo(bpmpkg.PkgInfo.Name, rootDir)
sourceInfo := "" sourceInfo := ""
if bpmpkg.PkgInfo.Type == "source" { if bpmpkg.PkgInfo.Type == "source" {
if rootDir != "/" && !force { if rootDir != "/" && !force {
@ -398,7 +398,7 @@ func resolveCommand() {
if err != nil { if err != nil {
continue continue
} }
installedInfo := utils.GetPackageInfo(pkg, rootDir, true) installedInfo := utils.GetPackageInfo(pkg, rootDir)
if installedInfo == nil { if installedInfo == nil {
log.Fatalf("Error: could not get package info for (%s)\n", pkg) log.Fatalf("Error: could not get package info for (%s)\n", pkg)
} else { } else {
@ -452,7 +452,7 @@ func resolveCommand() {
for _, key := range toUpdate.Keys() { for _, key := range toUpdate.Keys() {
value, _ := toUpdate.Get(key) value, _ := toUpdate.Get(key)
installedInfo := utils.GetPackageInfo(value.entry.Info.Name, rootDir, true) installedInfo := utils.GetPackageInfo(value.entry.Info.Name, rootDir)
sourceInfo := "" sourceInfo := ""
if value.entry.Info.Type == "source" { if value.entry.Info.Type == "source" {
sourceInfo = "(From Source)" sourceInfo = "(From Source)"
@ -560,7 +560,7 @@ func resolveCommand() {
return return
} }
for _, pkg := range packages { for _, pkg := range packages {
pkgInfo := utils.GetPackageInfo(pkg, rootDir, false) pkgInfo := utils.GetPackageInfo(pkg, rootDir)
if pkgInfo == nil { if pkgInfo == nil {
fmt.Printf("Package (%s) could not be found\n", pkg) fmt.Printf("Package (%s) could not be found\n", pkg)
continue continue

View File

@ -49,16 +49,6 @@ func stringSliceRemove(s []string, r string) []string {
return s return s
} }
func stringSliceRemoveEmpty(s []string) []string {
var r []string
for _, str := range s {
if str != "" {
r = append(r, str)
}
}
return r
}
func BytesToHumanReadable(b uint64) string { func BytesToHumanReadable(b uint64) string {
bf := float64(b) bf := float64(b)
for _, unit := range []string{"", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"} { for _, unit := range []string{"", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"} {

View File

@ -91,11 +91,11 @@ func GetInstallationReason(pkg, rootDir string) InstallationReason {
if stat, err := os.Stat(path.Join(pkgDir, "installation_reason")); err != nil || stat.IsDir() { if stat, err := os.Stat(path.Join(pkgDir, "installation_reason")); err != nil || stat.IsDir() {
return Manual return Manual
} }
bytes, err := os.ReadFile(path.Join(pkgDir, "installation_reason")) b, err := os.ReadFile(path.Join(pkgDir, "installation_reason"))
if err != nil { if err != nil {
return Unknown return Unknown
} }
reason := string(bytes) reason := string(b)
if reason == "manual" { if reason == "manual" {
return Manual return Manual
} else if reason == "dependency" { } else if reason == "dependency" {
@ -314,11 +314,11 @@ func ExecutePackageScripts(filename, rootDir string, operation Operation, postOp
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_DESC=%s", pkgInfo.PkgInfo.Description)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_DESC=%s", pkgInfo.PkgInfo.Description))
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_VERSION=%s", pkgInfo.PkgInfo.Version)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_VERSION=%s", pkgInfo.PkgInfo.Version))
if operation != Install { if operation != Install {
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_OLD_VERSION=%s", GetPackageInfo(pkgInfo.PkgInfo.Name, rootDir, true).Version)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_OLD_VERSION=%s", GetPackageInfo(pkgInfo.PkgInfo.Name, rootDir).Version))
} }
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_REVISION=%d", pkgInfo.PkgInfo.Revision)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_REVISION=%d", pkgInfo.PkgInfo.Revision))
if operation != Install { if operation != Install {
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_OLD_REVISION=%d", GetPackageInfo(pkgInfo.PkgInfo.Name, rootDir, true).Revision)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_OLD_REVISION=%d", GetPackageInfo(pkgInfo.PkgInfo.Name, rootDir).Revision))
} }
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_URL=%s", pkgInfo.PkgInfo.Url)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_URL=%s", pkgInfo.PkgInfo.Url))
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_ARCH=%s", pkgInfo.PkgInfo.Arch)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_ARCH=%s", pkgInfo.PkgInfo.Arch))
@ -426,11 +426,11 @@ func ReadPackageInfo(contents string) (*PackageInfo, error) {
} }
func CreateInfoFile(pkgInfo *PackageInfo) string { func CreateInfoFile(pkgInfo *PackageInfo) string {
bytes, err := yaml.Marshal(&pkgInfo) b, err := yaml.Marshal(&pkgInfo)
if err != nil { if err != nil {
return "" return ""
} }
return string(bytes) return string(b)
} }
func CreateReadableInfo(showArchitecture, showType, showPackageRelations bool, pkgInfo *PackageInfo, rootDir string) string { func CreateReadableInfo(showArchitecture, showType, showPackageRelations bool, pkgInfo *PackageInfo, rootDir string) string {
@ -1249,44 +1249,6 @@ func InstallPackage(filename, rootDir string, verbose, force, binaryPkgFromSrc,
return nil return nil
} }
func GetSourceScript(filename string) (string, error) {
pkgInfo, err := ReadPackage(filename)
if err != nil {
return "", err
}
if pkgInfo.PkgInfo.Type != "source" {
return "", errors.New("package not of source type")
}
file, err := os.Open(filename)
if err != nil {
return "", err
}
tr := tar.NewReader(file)
for {
header, err := tr.Next()
if err == io.EOF {
break
}
if header.Name == "source.sh" {
err := file.Close()
if err != nil {
return "", err
}
err = file.Close()
if err != nil {
return "", err
}
bs, err := io.ReadAll(tr)
if err != nil {
return "", err
}
return string(bs), nil
}
}
return "", errors.New("package does not contain a source.sh file")
}
func (pkgInfo *PackageInfo) GetAllDependencies(checkMake, checkOptional bool) []string { func (pkgInfo *PackageInfo) GetAllDependencies(checkMake, checkOptional bool) []string {
allDepends := make([]string, 0) allDepends := make([]string, 0)
allDepends = append(allDepends, pkgInfo.Depends...) allDepends = append(allDepends, pkgInfo.Depends...)
@ -1386,7 +1348,7 @@ func IsPackageProvided(pkg, rootDir string) bool {
if p == pkg { if p == pkg {
return true return true
} }
i := GetPackageInfo(p, rootDir, true) i := GetPackageInfo(p, rootDir)
if i == nil { if i == nil {
continue continue
} }
@ -1435,7 +1397,7 @@ func GetPackageFiles(pkg, rootDir string) []string {
return ret return ret
} }
func GetPackageInfo(pkg, rootDir string, defaultValues bool) *PackageInfo { func GetPackageInfo(pkg, rootDir string) *PackageInfo {
installedDir := path.Join(rootDir, "var/lib/bpm/installed/") installedDir := path.Join(rootDir, "var/lib/bpm/installed/")
pkgDir := path.Join(installedDir, pkg) pkgDir := path.Join(installedDir, pkg)
files := path.Join(pkgDir, "info") files := path.Join(pkgDir, "info")
@ -1463,7 +1425,7 @@ func GetPackageInfo(pkg, rootDir string, defaultValues bool) *PackageInfo {
func RemovePackage(pkg string, verbose bool, rootDir string) error { func RemovePackage(pkg string, verbose bool, rootDir string) error {
installedDir := path.Join(rootDir, "var/lib/bpm/installed/") installedDir := path.Join(rootDir, "var/lib/bpm/installed/")
pkgDir := path.Join(installedDir, pkg) pkgDir := path.Join(installedDir, pkg)
pkgInfo := GetPackageInfo(pkg, rootDir, false) pkgInfo := GetPackageInfo(pkg, rootDir)
if pkgInfo == nil { if pkgInfo == nil {
return errors.New("could not get package info") return errors.New("could not get package info")
} }