Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
systemsmanagement:Uyuni:Utils
tito
0010-handle-dependencies.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0010-handle-dependencies.patch of Package tito
Index: tito-tito-0.6.11-1/src/tito/tagger/main.py =================================================================== --- tito-tito-0.6.11-1.orig/src/tito/tagger/main.py +++ tito-tito-0.6.11-1/src/tito/tagger/main.py @@ -137,6 +137,8 @@ class VersionTagger(ConfigObject): self._make_changelog() new_version = self._bump_version() self._check_tag_does_not_exist(self._get_new_tag(new_version)) + self._update_dependencies() + self._update_dependencies_rhn_conf() self._update_changelog(new_version) CargoBump.tag_new_version(self.full_project_dir, new_version) self._update_setup_py(new_version) @@ -377,6 +379,99 @@ class VersionTagger(ConfigObject): mvn_new_version)) run_command("git add %s" % pom_file) + def _update_dependencies_rhn_conf(self): + for section in self.config.sections(): + if not section.endswith(".conf"): + debug("section '{}' seems not to be a config file. Skipping".format(section)) + continue + conf_file = os.path.join(self.full_project_dir, section) + if not os.path.exists(conf_file): + warn_out("File not found: {}, skipping".format(conf_file)) + continue + ver_regex = re.compile("([\w._-]+)(\s*)(=)(\s*)([\w.-]+)(.*)", re.IGNORECASE) + for key, value in self.config.items(section): + buf = StringIO() + with open(conf_file, 'r') as in_f: + for line in in_f.readlines(): + m = ver_regex.match(line) + if m and m.group(1) == key: + result_tuple = list(m.group(1, 2, 3, 4)) + result_tuple.append(value) + result_tuple.append(m.group(6)) + new_line = "%s%s%s%s%s%s\n" % tuple(result_tuple) + buf.write(new_line) + else: + buf.write(line) + + with open(conf_file, 'w') as out_f: + out_f.write(buf.getvalue()) + buf.close() + run_command("git add %s" % conf_file) + + # Legacy configuration format + if not self.config.has_section("dbschema"): + return + ver_regex = re.compile("(.*)(min_schema_version)(\s*)(=)(\s*)([\w.-]+)(.*)", re.IGNORECASE) + conf_file = "" + for f in self.config.options("dbschema"): + version = self.config.get("dbschema", f) + conf_file = os.path.join(self.full_project_dir, f) + if not os.path.exists(conf_file): + debug("File not found: {}".format(conf_file)) + continue + + buf = StringIO() + with open(conf_file, 'r') as in_f: + for line in in_f.readlines(): + m = ver_regex.match(line) + if m: + result_tuple = list(m.group(1, 2, 3, 4, 5)) + result_tuple.append(version) + result_tuple.append(m.group(7)) + new_line = "%s%s%s%s%s%s%s\n" % tuple(result_tuple) + buf.write(new_line) + else: + buf.write(line) + + with open(conf_file, 'w') as out_f: + out_f.write(buf.getvalue()) + buf.close() + run_command("git add %s" % conf_file) + + def _update_dependencies(self): + if not any(elem in self.config.sections() for elem in ["requires", "buildrequires"]): + return + + require_regex = re.compile("^(requires:\s*)(.+)$", re.IGNORECASE) + buildrequire_regex = re.compile("^(buildrequires:\s*)(.+)$", re.IGNORECASE) + specfile = [] + with open(self.spec_file, 'r') as in_f: + specfile = in_f.readlines() + + + if self.config.has_section("requires"): + for pkg in self.config.options("requires"): + version = self.config.get("requires", pkg) + specfile = self._change_spec(specfile, require_regex, pkg, version) + if self.config.has_section("buildrequires"): + for pkg in self.config.options("buildrequires"): + version = self.config.get("buildrequires", pkg) + specfile = self._change_spec(specfile, buildrequire_regex, pkg, version) + + + with open(self.spec_file + ".new", 'w') as out_f: + for line in specfile: + out_f.write(line) + shutil.move(self.spec_file + ".new", self.spec_file) + + + def _change_spec(self, specfile, regex, pkg, version): + for i, line in enumerate(specfile): + m = re.match(regex, line) + if m and m.group(2).startswith(pkg): + specfile[i] = "".join([m.group(1), pkg, " >= ", version, "\n"]) + return specfile + def _bump_version(self, release=False, zstream=False): """ Bump up the package version in the spec file. @@ -663,6 +758,8 @@ class ReleaseTagger(VersionTagger): new_version = self._bump_version(release=bump_release) self._check_tag_does_not_exist(self._get_new_tag(new_version)) + self._update_dependencies() + self._update_dependencies_rhn_conf() self._update_changelog(new_version) self._update_package_metadata(new_version) Index: tito-tito-0.6.11-1/src/tito/tagger/zstreamtagger.py =================================================================== --- tito-tito-0.6.11-1.orig/src/tito/tagger/zstreamtagger.py +++ tito-tito-0.6.11-1/src/tito/tagger/zstreamtagger.py @@ -17,6 +17,8 @@ class zStreamTagger(VersionTagger): new_version = self._bump_version(release=True) self._check_tag_does_not_exist(self._get_new_tag(new_version)) + self._update_dependencies() + self._update_dependencies_rhn_conf() self._update_changelog(new_version) self._update_package_metadata(new_version)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor