diff options
author | Arthur Zamarin <arthurzam@gentoo.org> | 2024-03-19 09:57:58 +0200 |
---|---|---|
committer | Arthur Zamarin <arthurzam@gentoo.org> | 2024-03-19 12:52:44 +0200 |
commit | 171e658b1e35665ccd5bef0a16245f5fdf8cb61b (patch) | |
tree | df3f4d202a91f1cefef6263813e3ee01d61d4478 /pkg/portage | |
parent | update/portage: fix USE_EXPAND useflag load (diff) | |
download | soko-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>
Diffstat (limited to 'pkg/portage')
-rw-r--r-- | pkg/portage/update.go | 32 | ||||
-rw-r--r-- | pkg/portage/utils/files.go | 7 |
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 } |