[master/f20-branch][makeupdates][PATCH] Don't use cached packages with different release id
Martin Kolman
mkolman at redhat.com
Wed Nov 20 15:52:50 UTC 2013
Previously, locally cached RPMs were being used even
when they had a different release id.
This was quite an issue due to how branching works
for Pykickstart and blivet, as for example the "newer"
fc21 package might not have all the f20-branch bits
the fc20 package has.
Signed-off-by: Martin Kolman <mkolman at redhat.com>
---
scripts/makeupdates | 31 +++++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/scripts/makeupdates b/scripts/makeupdates
index ac741df..f7ac204 100755
--- a/scripts/makeupdates
+++ b/scripts/makeupdates
@@ -155,7 +155,15 @@ def check_package_version(filename, package):
filename = os.path.basename(filename)
# split the name into components
pkg_tuple = get_pkg_tuple(filename)
- return miscutils.rangeCheck(package.req_tuple, pkg_tuple)
+ # get release ids for request and the package
+ request_release = package.req_tuple[2][2]
+ package_release = pkg_tuple[4]
+ # rangeCheck actually ignores different release ids,
+ # so we need to do it here
+ if request_release != package_release:
+ return False
+ else:
+ return bool(miscutils.rangeCheck(package.req_tuple, pkg_tuple))
def doGitDiff(tag, args=None):
if args is None:
@@ -406,6 +414,7 @@ def check_for_new_packages(tag, arch, added_rpms, specfile_path):
version_vars = {}
all_used_version_vars = {}
fedora_number = get_fedora_version()
+ release_id = "fc%s" % fedora_number
Package = namedtuple("Package", "name version version_request req_tuple")
@@ -462,8 +471,8 @@ def check_for_new_packages(tag, arch, added_rpms, specfile_path):
for package_name, version_request in packages_using_this_define:
if not version.count("-"):
version = "%s-1" % version
- pkg_name = "%s-%s.fc%s.%s.rpm" % (package_name, version,
- fedora_number, arch)
+ pkg_name = "%s-%s.%s.%s.rpm" % (package_name, version,
+ release_id, arch)
pkg_tuple = get_pkg_tuple(pkg_name)
req_tuple = get_req_tuple(pkg_tuple, version_request)
new_packages[package_name] = Package(package_name, version,
@@ -511,7 +520,7 @@ def check_for_new_packages(tag, arch, added_rpms, specfile_path):
# newest package will be fetched from Koji anyway
if not version.count("-"):
version = "%s-1" % version
- pkg_name = "%s-%s.fc%s.%s.rpm" % (package_name, version, fedora_number, arch)
+ pkg_name = "%s-%s.%s.%s.rpm" % (package_name, version, release_id, arch)
pkg_tuple = get_pkg_tuple(pkg_name)
else:
pkg_tuple = (package_name, arch, '', '', '')
@@ -545,14 +554,15 @@ def check_for_new_packages(tag, arch, added_rpms, specfile_path):
except ValueError:
print("malformed RPM name ? : %s" % path)
# remove available packages from the list
- new_packages, include_rpms = remove_local_packages(new_packages, arch, added_names)
+ new_packages, include_rpms = remove_local_packages(new_packages, arch,
+ release_id, added_names)
# if some packages are not locally available, download them from Koji
if new_packages:
include_rpms.extend(get_RPMs_from_koji(new_packages, fedora_number, arch))
# return absolute paths for the packages
return map(os.path.abspath, include_rpms)
-def remove_local_packages(packages, arch, added_rpms):
+def remove_local_packages(packages, arch, release_id, added_rpms):
"""Remove locally available RPMs from the list of needed packages,
return locally unavailable packages and paths to relevant locally
available RPMs for inclusion"""
@@ -593,8 +603,13 @@ def remove_local_packages(packages, arch, added_rpms):
if proc.returncode != 0:
continue
name, version, release = proc_output[0].split()
- # add the build number, extracted from release
- version_build = "%s-%s" % (version, release.split(".")[0])
+ # get the build number and release id
+ build_id, package_release_id = release.split(".", 1)
+ # skip cached RPMs that have different release id
+ if package_release_id != release_id:
+ continue
+ # add the build id to the version string
+ version_build = "%s-%s" % (version, build_id)
# check if the package is needed
if name in packages:
package = packages[name]
--
1.8.4.2
More information about the anaconda-patches
mailing list