aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Magorsch <arzano@gentoo.org>2020-06-09 01:46:26 +0000
committerMax Magorsch <arzano@gentoo.org>2020-06-09 01:46:26 +0000
commite6478829031b3be8a4ef3e8aeba5b112c1d2c7c9 (patch)
tree2c50a7e7f2f78f114f745d1360af72712306d388
parentFix the version comparison according to the pms (diff)
downloadsoko-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.go31
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()