diff options
| author | 2020-06-09 01:46:26 +0000 | |
|---|---|---|
| committer | 2020-06-09 01:46:26 +0000 | |
| commit | e6478829031b3be8a4ef3e8aeba5b112c1d2c7c9 (patch) | |
| tree | 2c50a7e7f2f78f114f745d1360af72712306d388 | |
| parent | Fix the version comparison according to the pms (diff) | |
| download | soko-e6478829031b3be8a4ef3e8aeba5b112c1d2c7c9.tar.gz soko-e6478829031b3be8a4ef3e8aeba5b112c1d2c7c9.tar.bz2 soko-e6478829031b3be8a4ef3e8aeba5b112c1d2c7c9.zip | |
Correctly compute the masked versions
The masked versions are computed based on the
pms version comparison now. Previously this
was done using a third party library. Now it
is fully pms compliant.
Closes: https://bugs.gentoo.org/727468
Signed-off-by: Max Magorsch <arzano@gentoo.org>
| -rw-r--r-- | pkg/portage/repository/mask.go | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/pkg/portage/repository/mask.go b/pkg/portage/repository/mask.go index a44b2cd..ce689dc 100644 --- a/pkg/portage/repository/mask.go +++ b/pkg/portage/repository/mask.go @@ -13,7 +13,6 @@ package repository import ( "github.com/go-pg/pg/v9" - "github.com/mcuadros/go-version" "regexp" "soko/pkg/database" "soko/pkg/logger" @@ -162,7 +161,8 @@ func getMasks(path string) []string { // masked and update the MaskToVersion Table func CalculateMaskedVersions() { - // TODO clear whole table before starting + // clean up all masked versions before recalculating them + deleteAllMasksToVersion() var masks []*models.Mask err := database.DBCon.Model(&masks).Select() @@ -211,8 +211,22 @@ func comparedVersions(operator string, versionSpecifier string, packageAtom stri Select() for _, v := range versions { - if version.Compare(version.Normalize(v.Version), version.Normalize(versionSpecifier), operator) { - results = append(results, v) + if operator == ">" { + if v.Version != versionSpecifier && v.CompareTo(models.Version{ Version: versionSpecifier }){ + results = append(results, v) + } + }else if operator == ">=" { + if v.Version == versionSpecifier || v.CompareTo(models.Version{ Version: versionSpecifier }){ + results = append(results, v) + } + }else if operator == "<" { + if v.Version != versionSpecifier && (&models.Version{ Version: versionSpecifier }).CompareTo(*v){ + results = append(results, v) + } + }else if operator == "<=" { + if v.Version == versionSpecifier || (&models.Version{ Version: versionSpecifier }).CompareTo(*v) { + results = append(results, v) + } } } return results @@ -282,6 +296,15 @@ func maskVersions(versionSpecifier string, versions []*models.Version) { } // deleteAllMasks deletes all entries in the mask table +func deleteAllMasksToVersion() { + var masks []*models.MaskToVersion + database.DBCon.Model(&masks).Select() + for _, mask := range masks { + database.DBCon.Model(mask).WherePK().Delete() + } +} + +// deleteAllMasks deletes all entries in the mask table func deleteAllMasks() { var masks []*models.Mask database.DBCon.Model(&masks).Select() |
