commit 3fcf104316ea3f00c441915786d1e841f8c5b7c1 Author: Fabio Erculiani Date: Fri Aug 20 14:14:36 2010 +0200 [entropy.server] fix revision bumping support Packages were removed before the revision bumping logic code had a chance to calculate the new package revision. diff --git a/libraries/entropy/server/interfaces/db.py b/libraries/entropy/server/interfaces/db.py index 7568490..c521f43 100644 --- a/libraries/entropy/server/interfaces/db.py +++ b/libraries/entropy/server/interfaces/db.py @@ -194,40 +194,24 @@ class ServerPackagesRepository(EntropyRepository): Reimplemented from EntropyRepository. """ - # Remove entries in the same scope. - manual_deps = set() - removelist = self.getPackagesToRemove( - pkg_data['name'], pkg_data['category'], - pkg_data['slot'], pkg_data['injected'] - ) - - for r_package_id in removelist: - manual_deps |= self.retrieveManualDependencies(r_package_id) - self.removePackage(r_package_id, do_cleanup = False, - do_commit = False) - - # inject old manual dependencies back to package metadata - for manual_dep in manual_deps: - if manual_dep in pkg_data['dependencies']: - continue - pkg_data['dependencies'][manual_dep] = \ - etpConst['dependency_type_ids']['mdepend_id'] - # build atom string, server side pkgatom = entropy.tools.create_package_atom_string( pkg_data['category'], pkg_data['name'], pkg_data['version'], pkg_data['versiontag']) - package_ids = self.getPackageIds(pkgatom) current_rev = forcedRevision - for package_id in package_ids: + manual_deps = set() + # Remove entries in the same scope. + for package_id in self.getPackageIds(pkgatom): if forcedRevision == -1: myrev = self.retrieveRevision(package_id) if myrev > current_rev: current_rev = myrev + # + manual_deps |= self.retrieveManualDependencies(package_id) # injected packages wouldn't be removed by addPackage self.removePackage(package_id, do_cleanup = False, do_commit = False) @@ -235,6 +219,24 @@ class ServerPackagesRepository(EntropyRepository): if forcedRevision == -1: current_rev += 1 + # manual dependencies handling + removelist = self.getPackagesToRemove( + pkg_data['name'], pkg_data['category'], + pkg_data['slot'], pkg_data['injected'] + ) + + for r_package_id in removelist: + manual_deps |= self.retrieveManualDependencies(r_package_id) + self.removePackage(r_package_id, do_cleanup = False, + do_commit = False) + + # inject old manual dependencies back to package metadata + for manual_dep in manual_deps: + if manual_dep in pkg_data['dependencies']: + continue + pkg_data['dependencies'][manual_dep] = \ + etpConst['dependency_type_ids']['mdepend_id'] + # add the new one return self.addPackage(pkg_data, revision = current_rev, formatted_content = formattedContent)