aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Zamarin <arthurzam@gentoo.org>2024-03-19 09:57:58 +0200
committerArthur Zamarin <arthurzam@gentoo.org>2024-03-19 12:52:44 +0200
commit171e658b1e35665ccd5bef0a16245f5fdf8cb61b (patch)
treedf3f4d202a91f1cefef6263813e3ee01d61d4478
parentupdate/portage: fix USE_EXPAND useflag load (diff)
downloadsoko-171e658b1e35665ccd5bef0a16245f5fdf8cb61b.tar.gz
soko-171e658b1e35665ccd5bef0a16245f5fdf8cb61b.tar.bz2
soko-171e658b1e35665ccd5bef0a16245f5fdf8cb61b.zip
update/portage: fix removal of removed packages
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
-rw-r--r--pkg/portage/update.go32
-rw-r--r--pkg/portage/utils/files.go7
2 files changed, 23 insertions, 16 deletions
diff --git a/pkg/portage/update.go b/pkg/portage/update.go
index 8424ac5..394cce3 100644
--- a/pkg/portage/update.go
+++ b/pkg/portage/update.go
@@ -162,12 +162,16 @@ func FullUpdate() {
// that are present in the database but not in the main tree.
func deleteRemovedVersions() {
var versions, toDelete []*models.Version
- database.DBCon.Model(&versions).Select()
+ err := database.DBCon.Model(&versions).Column("id", "atom", "package", "version").Select()
+ if err != nil {
+ slog.Error("Failed fetching versions", slog.Any("err", err))
+ return
+ }
for _, version := range versions {
path := config.PortDir() + "/" + version.Atom + "/" + version.Package + "-" + version.Version + ".ebuild"
if !utils.FileExists(path) {
- slog.Error("Found ebuild version in the database that does not exist", slog.String("path", path))
+ slog.Error("Found ebuild version in the database that does not exist", slog.String("version", version.Id))
toDelete = append(toDelete, version)
}
}
@@ -186,18 +190,21 @@ func deleteRemovedVersions() {
// that are present in the database but not in the main tree.
func deleteRemovedPackages() {
var packages, toDelete []*models.Package
- database.DBCon.Model(&packages).Column("atom").Select()
+ err := database.DBCon.Model(&packages).Column("atom").Select()
+ if err != nil {
+ slog.Error("Failed fetching packages", slog.Any("err", err))
+ return
+ }
for _, pkg := range packages {
- path := config.PortDir() + "/" + pkg.Atom
- if !utils.FileExists(path) {
- slog.Error("Found package in the database that does not exist", slog.String("path", path))
+ if !utils.FileExists(config.PortDir() + "/" + pkg.Atom) {
+ slog.Error("Found package in the database that does not exist", slog.String("atom", pkg.Atom))
toDelete = append(toDelete, pkg)
}
}
if len(toDelete) > 0 {
- res, err := database.DBCon.Model(&toDelete).WherePK().Delete()
+ res, err := database.DBCon.Model(&toDelete).Delete()
if err != nil {
slog.Error("Failed deleting packages", slog.Any("err", err))
} else {
@@ -210,12 +217,15 @@ func deleteRemovedPackages() {
// that are present in the database but not in the main tree.
func deleteRemovedCategories() {
var categories, toDelete []*models.Category
- database.DBCon.Model(&categories).Select()
+ err := database.DBCon.Model(&categories).Column("name").Select()
+ if err != nil {
+ slog.Error("Failed fetching categories", slog.Any("err", err))
+ return
+ }
for _, category := range categories {
- path := config.PortDir() + "/" + category.Name
- if !utils.FileExists(path) {
- slog.Error("Found category in the database that does not exist", slog.String("path", path))
+ if !utils.FileExists(config.PortDir() + "/" + category.Name) {
+ slog.Error("Found category in the database that does not exist", slog.String("name", category.Name))
toDelete = append(toDelete, category)
}
}
diff --git a/pkg/portage/utils/files.go b/pkg/portage/utils/files.go
index c328cec..a0d0065 100644
--- a/pkg/portage/utils/files.go
+++ b/pkg/portage/utils/files.go
@@ -27,9 +27,6 @@ func ReadLines(path string) ([]string, error) {
// FileExists checks whether the file
// at the given path does exist
func FileExists(path string) bool {
- if _, err := os.Stat(path); err == nil {
- return true
- } else {
- return false
- }
+ _, err := os.Stat(path)
+ return err == nil
}