Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -674,25 +674,61 @@ func convertPackageVersionToTdnfArg(pkgVer *pkgjson.PackageVer) (tdnfArg string)

// TDNF does not accept versioning information on implicit provides.
if pkgVer.IsImplicitPackage() {
if pkgVer.Condition != "" {
if pkgVer.Condition != "" || pkgVer.SCondition != "" {
logger.Log.Warnf("Discarding version constraint for implicit package: %v", pkgVer)
}
return
}

// Handle first condition
var firstConstraint, secondConstraint string


// To avoid significant overhead we only download the latest version of a package
// for ">" and ">=" constraints (ie remove constraints).

switch pkgVer.Condition {
case "":
case "=":
tdnfArg = fmt.Sprintf("%s-%s", pkgVer.Name, pkgVer.Version)
firstConstraint = fmt.Sprintf("%s-%s", pkgVer.Name, pkgVer.Version)
tdnfArg = firstConstraint // For exact matches, use this format
return // Don't process second condition for exact matches
case "<=", "<":
firstConstraint = fmt.Sprintf("%s %s %s", pkgVer.Name, pkgVer.Condition, pkgVer.Version)
case ">", ">=":
logger.Log.Warnf("Discarding '%s' version constraint for performance: %v", pkgVer.Condition, pkgVer)
// Don't set firstConstraint, we're discarding this
default:
if pkgVer.Condition != "" {
logger.Log.Errorf("Unsupported version constraint: %s", pkgVer.Condition)
}
}

// Handle second condition
switch pkgVer.SCondition {
case "":
case "=":
secondConstraint = fmt.Sprintf("%s-%s", pkgVer.Name, pkgVer.SVersion)
case "<=", "<":
tdnfArg = fmt.Sprintf("%s %s %s", pkgVer.Name, pkgVer.Condition, pkgVer.Version)
secondConstraint = fmt.Sprintf("%s %s %s", pkgVer.Name, pkgVer.SCondition, pkgVer.SVersion)
case ">", ">=":
logger.Log.Warnf("Discarding '%s' version constraint for: %v", pkgVer.Condition, pkgVer)
logger.Log.Warnf("Discarding '%s' second version constraint for performance: %v", pkgVer.SCondition, pkgVer)
// Don't set secondConstraint, we're discarding this
default:
logger.Log.Errorf("Unsupported version constraint: %s", pkgVer.Condition)
if pkgVer.SCondition != "" {
logger.Log.Errorf("Unsupported second version constraint: %s", pkgVer.SCondition)
}
}

// Combine constraints
if firstConstraint != "" && secondConstraint != "" {
tdnfArg = fmt.Sprintf("%s %s", firstConstraint, secondConstraint)
} else if firstConstraint != "" {
tdnfArg = firstConstraint
} else if secondConstraint != "" {
tdnfArg = secondConstraint
}
// else tdnfArg remains just the package name

return
}
Expand Down
Loading