Hi, just found out that we forgot one rpm weak dependency. "Enhances" is a waek version of "Supplements" and is heavyly used at SUSE.
4 patches add the support for it to 001: spacewalk-backend 002: java (taskomatic) 003: web 004: schema Patch 005 remove all cached metadata and trigger a regeneration for all channels. Feel free to skip this patch if you think that this is not needed. -- Regards Michael Calmer -------------------------------------------------------------------------- Michael Calmer SUSE LINUX Products GmbH, Maxfeldstr. 5, D-90409 Nuernberg T: +49 (0) 911 74053 0 F: +49 (0) 911 74053575 - e-mail: michael.cal...@suse.com -------------------------------------------------------------------------- SUSE LINUX Products GmbH, GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer HRB 16746 (AG Nürnberg)
>From 6e249cd0e501de5f6efb00c4efb4680ad16f19ec Mon Sep 17 00:00:00 2001 From: Michael Calmer <m...@suse.de> Date: Fri, 18 Oct 2013 13:47:55 +0200 Subject: [PATCH 1/5] add support for enhances rpm weak dependencies (backend) (bnc#846436) --- backend/satellite_tools/exporter/exportLib.py | 2 ++ backend/satellite_tools/spacewalk-remove-channel | 1 + backend/satellite_tools/xmlSource.py | 5 +++++ backend/server/importlib/backend.py | 1 + backend/server/importlib/backendOracle.py | 10 ++++++++++ backend/server/importlib/headerSource.py | 16 +++++++++++++--- backend/server/importlib/importLib.py | 1 + backend/server/importlib/mpmSource.py | 1 + backend/server/importlib/packageImport.py | 6 +++--- backend/server/repomd/domain.py | 1 + backend/server/repomd/mapper.py | 14 ++++++++++++++ backend/server/repomd/view.py | 4 ++++ backend/server/rhnChannel.py | 17 ++++++++++++++++- 13 files changed, 72 insertions(+), 7 deletions(-) diff --git a/backend/satellite_tools/exporter/exportLib.py b/backend/satellite_tools/exporter/exportLib.py index 5e14af2..aeb1c08 100644 --- a/backend/satellite_tools/exporter/exportLib.py +++ b/backend/satellite_tools/exporter/exportLib.py @@ -839,6 +839,8 @@ class _PackageDumper(BaseRowDumper): 'rhn-package-suggests-entry'], ['rhnPackageSupplements', 'rhn-package-supplements', 'rhn-package-supplements-entry'], + ['rhnPackageEnhances', 'rhn-package-enhances', + 'rhn-package-enhances-entry'], ] for table_name, container_name, entry_name in mappings: h = rhnSQL.prepare(""" diff --git a/backend/satellite_tools/spacewalk-remove-channel b/backend/satellite_tools/spacewalk-remove-channel index 53fd3d9..f3b5d2e 100755 --- a/backend/satellite_tools/spacewalk-remove-channel +++ b/backend/satellite_tools/spacewalk-remove-channel @@ -488,6 +488,7 @@ def _delete_rpm_group(packageIds): 'rhnPackageRecommends', 'rhnPackageSuggests', 'rhnPackageSupplements', + 'rhnPackageEnhances', 'rhnServerNeededCache', ] deleteStatement = "delete from %s where package_id = :package_id" diff --git a/backend/satellite_tools/xmlSource.py b/backend/satellite_tools/xmlSource.py index 81fd3a5..6ce2c3d 100644 --- a/backend/satellite_tools/xmlSource.py +++ b/backend/satellite_tools/xmlSource.py @@ -603,6 +603,7 @@ class PackageItem(IncompletePackageItem): 'rhn-package-recommends' : 'recommends', 'rhn-package-suggests' : 'suggests', 'rhn-package-supplements' : 'supplements', + 'rhn-package-enhances' : 'enhances', 'rhn-package-changelog' : 'changelog', } tagMap.update(IncompletePackageItem.tagMap) @@ -686,6 +687,10 @@ class SupplementsItem(DependencyItem): item_name = 'rhn-package-supplements-entry' addItem(SupplementsItem) +class EnhancesItem(DependencyItem): + item_name = 'rhn-package-enhances-entry' +addItem(EnhancesItem) + class FileItem(BaseChecksummedItem): item_name = 'rhn-package-file' item_class = importLib.File diff --git a/backend/server/importlib/backend.py b/backend/server/importlib/backend.py index f907794..797079b 100644 --- a/backend/server/importlib/backend.py +++ b/backend/server/importlib/backend.py @@ -732,6 +732,7 @@ class Backend: 'rhnPackageRecommends': 'package_id', 'rhnPackageSuggests': 'package_id', 'rhnPackageSupplements':'package_id', + 'rhnPackageEnhances' :'package_id', 'rhnPackageFile': 'package_id', 'rhnPackageChangeLogRec': 'package_id', } diff --git a/backend/server/importlib/backendOracle.py b/backend/server/importlib/backendOracle.py index acca10f..604192c 100644 --- a/backend/server/importlib/backendOracle.py +++ b/backend/server/importlib/backendOracle.py @@ -100,6 +100,16 @@ class OracleBackend(Backend): attribute = 'supplements', map = { 'sense' : 'flags', }, ), + Table('rhnPackageEnhances', + fields = { + 'package_id' : DBint(), + 'capability_id' : DBint(), + 'sense' : DBint(), + }, + pk = ['package_id', 'capability_id', 'sense'], + attribute = 'enhances', + map = { 'sense' : 'flags', }, + ), Table('rhnPackageChangeLogRec', fields = { 'id' : DBint(), diff --git a/backend/server/importlib/headerSource.py b/backend/server/importlib/headerSource.py index 7933d29..fc33691 100644 --- a/backend/server/importlib/headerSource.py +++ b/backend/server/importlib/headerSource.py @@ -118,6 +118,7 @@ class rpmBinaryPackage(Package, rpmPackage): 'obsoletes' : None, 'suggests' : None, 'supplements' : None, + 'enhances' : None, 'recommends' : None, 'files' : None, 'changelog' : None, @@ -162,6 +163,7 @@ class rpmBinaryPackage(Package, rpmPackage): 'conflicts' : rpmConflicts, 'obsoletes' : rpmObsoletes, 'supplements' : rpmSupplements, + 'enhances' : rpmEnhances, 'suggests' : rpmSuggests, 'recommends' : rpmRecommends, } @@ -213,15 +215,15 @@ class rpmBinaryPackage(Package, rpmPackage): hash[k] = v[i] # RPMSENSE_STRONG(1<<27) indicate recommends; if not set it is suggests only - if tag == 'recommends' and not(hash['flags'] & (1 << 27)): + if tag in ['recommends', 'supplements'] and not(hash['flags'] & (1 << 27)): continue - if tag == 'suggests' and (hash['flags'] & (1 << 27)): + if tag in ['suggests', 'enhances'] and (hash['flags'] & (1 << 27)): continue # Create a file obj = Class() # Fedora 10+ rpms have duplicate provides deps, # Lets clean em up before db inserts. - if tag in ['requires', 'provides', 'obsoletes', 'conflicts', 'recommends', 'suggests', 'supplements']: + if tag in ['requires', 'provides', 'obsoletes', 'conflicts', 'recommends', 'suggests', 'supplements', 'enhances']: if not len(hash['name']): continue dep_nv = (hash['name'], hash['version'], hash['flags']) @@ -352,6 +354,14 @@ class rpmSupplements(Dependency): 'flags' : 1161, #'enhancesflags', } +class rpmEnhances(Dependency): + # More mappings + tagMap = { + 'name' : 1159, #'enhancesname', + 'version' : 1160, #'enhancesversion', + 'flags' : 1161, #'enhancesflags', + } + class rpmConflicts(Dependency): # More mappings tagMap = { diff --git a/backend/server/importlib/importLib.py b/backend/server/importlib/importLib.py index 0eb497a..1a8e2eb 100644 --- a/backend/server/importlib/importLib.py +++ b/backend/server/importlib/importLib.py @@ -374,6 +374,7 @@ class Package(IncompletePackage): 'obsoletes' : [Dependency], 'recommends' : [Dependency], 'supplements' : [Dependency], + 'enhances' : [Dependency], 'suggests' : [Dependency], 'changelog' : [ChangeLog], 'channels' : [StringType], diff --git a/backend/server/importlib/mpmSource.py b/backend/server/importlib/mpmSource.py index 8717f0c..17f57d6 100644 --- a/backend/server/importlib/mpmSource.py +++ b/backend/server/importlib/mpmSource.py @@ -127,6 +127,7 @@ class mpmBinaryPackage(headerSource.rpmBinaryPackage): 'obsoletes' : headerSource.rpmObsoletes, 'recommends': headerSource.rpmRecommends, 'supplements': headerSource.rpmSupplements, + 'enhances' : headerSource.rpmEnhances, 'suggests' : headerSource.rpmSuggests, } diff --git a/backend/server/importlib/packageImport.py b/backend/server/importlib/packageImport.py index df4e995..34cb33a 100644 --- a/backend/server/importlib/packageImport.py +++ b/backend/server/importlib/packageImport.py @@ -226,14 +226,14 @@ class PackageImport(ChannelPackageSubscription): # XXX package['copyright'] = self._fix_encoding(package['license']) - for tag in ('recommends', 'suggests', 'supplements'): + for tag in ('recommends', 'suggests', 'supplements', 'enhances'): if not package.has_key(tag) or type(package[tag]) != type([]): # older spacewalk server do not export weak deps. # lets create an empty list package[tag] = [] # Creates all the data structures needed to insert capabilities - for tag in ('provides', 'requires', 'conflicts', 'obsoletes', 'recommends', 'suggests', 'supplements'): + for tag in ('provides', 'requires', 'conflicts', 'obsoletes', 'recommends', 'suggests', 'supplements', 'enhances'): depList = package[tag] if type(depList) != type([]): sys.stderr.write("!!! packageImport.PackageImport._processPackage: " @@ -369,7 +369,7 @@ class PackageImport(ChannelPackageSubscription): package['checksum_id'] = self.checksums[(package['checksum_type'], package['checksum'])] # Postprocess the dependency information - for tag in ('provides', 'requires', 'conflicts', 'obsoletes', 'files', 'recommends', 'suggests', 'supplements'): + for tag in ('provides', 'requires', 'conflicts', 'obsoletes', 'files', 'recommends', 'suggests', 'supplements', 'enhances'): for entry in package[tag]: nv = entry['capability'] entry['capability_id'] = self.capabilities[nv] diff --git a/backend/server/repomd/domain.py b/backend/server/repomd/domain.py index 7c5813b..c22f230 100644 --- a/backend/server/repomd/domain.py +++ b/backend/server/repomd/domain.py @@ -71,6 +71,7 @@ class Package: self.conflicts = [] self.obsoletes = [] self.supplements = [] + self.enhances = [] self.suggests = [] self.recommends = [] diff --git a/backend/server/repomd/mapper.py b/backend/server/repomd/mapper.py index b79386d..951b482 100644 --- a/backend/server/repomd/mapper.py +++ b/backend/server/repomd/mapper.py @@ -297,6 +297,18 @@ class SqlPackageMapper: and supp.capability_id = pc.id union all select + 'enhances', + enh.sense, + pc.name, + pc.version + from + rhnPackageCapability pc, + rhnPackageEnhances enh + where + enh.package_id = :package_id + and enh.capability_id = pc.id + union all + select 'suggests', sugg.sense, pc.name, @@ -447,6 +459,8 @@ class SqlPackageMapper: package.recommends.append(dep) elif item[0] == "supplements": package.supplements.append(dep) + elif item[0] == "enhances": + package.enhances.append(dep) elif item[0] == "suggests": package.suggests.append(dep) else: diff --git a/backend/server/repomd/view.py b/backend/server/repomd/view.py index 18c5b85..68ba1de 100644 --- a/backend/server/repomd/view.py +++ b/backend/server/repomd/view.py @@ -159,6 +159,10 @@ class PrimaryView(object): output.extend(self._get_deps(package.supplements)) output.append(" </rpm:supplements>") + output.append(" <rpm:enhances>") + output.extend(self._get_deps(package.enhances)) + output.append(" </rpm:enhances>") + output.append(" <rpm:conflicts>") output.extend(self._get_deps(package.conflicts)) output.append(" </rpm:conflicts>") diff --git a/backend/server/rhnChannel.py b/backend/server/rhnChannel.py index 2f2dfa8..f4678a4 100644 --- a/backend/server/rhnChannel.py +++ b/backend/server/rhnChannel.py @@ -1201,6 +1201,20 @@ def list_all_packages_complete_sql(channel_id): and supp.capability_id = pc.id union all select + supp.package_id, + 'enhances' as capability_type, + enh.capability_id, + enh.sense, + pc.name, + pc.version + from + rhnPackageEnhances enh, + rhnPackageCapability pc + where + enh.package_id = :package_id + and enh.capability_id = pc.id + union all + select pcon.package_id, 'conflicts' as capability_type, pcon.capability_id, @@ -1245,6 +1259,7 @@ def list_all_packages_complete_sql(channel_id): pkgi['recommends'] = [] pkgi['suggests'] = [] pkgi['supplements'] = [] + pkgi['enhances'] = [] g.execute(package_id = pkgi["id"]) deps = g.fetchall_dict() or [] for item in deps: @@ -1262,7 +1277,7 @@ def list_all_packages_complete_sql(channel_id): # process the results ret = map(lambda a: (a["name"], a["version"], a["release"], a["epoch"], a["arch"], a["package_size"], a['provides'], - a['requires'], a['conflicts'], a['obsoletes'], a['recommends'], a['suggests'], a['supplements']), + a['requires'], a['conflicts'], a['obsoletes'], a['recommends'], a['suggests'], a['supplements'], a['enhances']), __stringify(ret)) return ret -- 1.8.1.4
>From 11610906b1308dc788d2c2a89ba3f95a5da79a62 Mon Sep 17 00:00:00 2001 From: Michael Calmer <m...@suse.de> Date: Fri, 18 Oct 2013 13:49:02 +0200 Subject: [PATCH 2/5] add support for enhances rpm weak dependency (java) (bnc#846436) --- .../com/redhat/rhn/common/db/datasource/xml/Task_queries.xml | 10 ++++++++++ .../code/src/com/redhat/rhn/taskomatic/task/TaskConstants.java | 3 +++ .../redhat/rhn/taskomatic/task/repomd/PrimaryXmlWriter.java | 3 +++ 3 files changed, 16 insertions(+) diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml index c73ad00..a55bd09 100644 --- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml +++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml @@ -682,6 +682,16 @@ where rhnChannelErrata.errata_id = rhnErrataPackage.errata_id </query> </mode> +<mode name="repomdgenerator_capability_enhances" + class="com.redhat.rhn.frontend.dto.PackageCapabilityDto"> + <query params="package_id"> + SELECT pkgcap.id, pkgcap.name, pkgcap.version, pkgp.sense + FROM rhnPackageEnhances pkgp, rhnPackageCapability pkgcap + WHERE pkgp.capability_id = pkgcap.id + AND pkgp.package_id = :package_id + </query> +</mode> + <mode name="repomdgenerator_package_changelog" class="com.redhat.rhn.frontend.dto.PackageChangelogDto"> <query params="package_id"> diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/TaskConstants.java b/java/code/src/com/redhat/rhn/taskomatic/task/TaskConstants.java index ba47c52..fada40a 100644 --- a/java/code/src/com/redhat/rhn/taskomatic/task/TaskConstants.java +++ b/java/code/src/com/redhat/rhn/taskomatic/task/TaskConstants.java @@ -157,6 +157,9 @@ public class TaskConstants { public static final String TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_SUPPLEMENTS = "repomdgenerator_capability_supplements"; + public static final String TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_ENHANCES = + "repomdgenerator_capability_enhances"; + public static final String TASK_QUERY_REPOMD_GENERATOR_PACKAGE_CHANGELOG = "repomdgenerator_package_changelog"; diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/repomd/PrimaryXmlWriter.java b/java/code/src/com/redhat/rhn/taskomatic/task/repomd/PrimaryXmlWriter.java index 20f7f73..74a9134 100644 --- a/java/code/src/com/redhat/rhn/taskomatic/task/repomd/PrimaryXmlWriter.java +++ b/java/code/src/com/redhat/rhn/taskomatic/task/repomd/PrimaryXmlWriter.java @@ -263,6 +263,9 @@ public class PrimaryXmlWriter extends RepomdWriter { addPackageDepData( TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_SUPPLEMENTS, pkgDto.getId(), "supplements", localHandler); + addPackageDepData( + TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_ENHANCES, + pkgDto.getId(), "enhances", localHandler); } /** -- 1.8.1.4
>From 2979518a44e9a4f3bc7930e3f237530b478334ff Mon Sep 17 00:00:00 2001 From: Michael Calmer <m...@suse.de> Date: Fri, 18 Oct 2013 13:49:55 +0200 Subject: [PATCH 3/5] add support for enhances rpm weak dependency (web) (bnc#846436) --- .../network/software/packages/dependencies.pxt | 3 +++ web/modules/rhn/RHN/DB/Package.pm | 27 ++++++++++++++++++++++ web/modules/sniglets/Sniglets/Packages.pm | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/web/html/network/software/packages/dependencies.pxt b/web/html/network/software/packages/dependencies.pxt index 0a7464b..b3e440b 100644 --- a/web/html/network/software/packages/dependencies.pxt +++ b/web/html/network/software/packages/dependencies.pxt @@ -35,6 +35,9 @@ <h2>Supplements</h2> <p>{package_supplements}</p> + <h2>Enhances</h2> + <p>{package_enhances}</p> + </rhn-package-dependencies> </grail-canvas-template> diff --git a/web/modules/rhn/RHN/DB/Package.pm b/web/modules/rhn/RHN/DB/Package.pm index dc58556..2726d9b 100644 --- a/web/modules/rhn/RHN/DB/Package.pm +++ b/web/modules/rhn/RHN/DB/Package.pm @@ -423,6 +423,33 @@ EOQ return @ret; } +sub enhances { + my $self = shift; + + my @ret; + my $dbh = RHN::DB->connect; + my $query; + my $sth; + + $query = <<EOQ; +SELECT DISTINCT C.name, C.version, P.sense, UPPER(C.name) AS name_upper + FROM rhnPackageCapability C, rhnPackageEnhances P + WHERE P.package_id = ? + AND P.capability_id = C.id +ORDER BY name_upper, C.version +EOQ + + $sth = $dbh->prepare($query); + $sth->execute($self->id); + + my @columns; + while(@columns = $sth->fetchrow) { + push @ret, [ @columns ]; + } + + return @ret; +} + # don't know what tables these next 2 will need to talk to... sub obsoletes { my $self = shift; diff --git a/web/modules/sniglets/Sniglets/Packages.pm b/web/modules/sniglets/Sniglets/Packages.pm index 2f5c408..105a63c 100644 --- a/web/modules/sniglets/Sniglets/Packages.pm +++ b/web/modules/sniglets/Sniglets/Packages.pm @@ -94,7 +94,7 @@ sub package_dependencies { $package = RHN::Package->lookup(-id => $pid); $pxt->pnotes(package_name => $package->nvre); - foreach my $dependency (qw/requires provides obsoletes conflicts recommends suggests supplements/) { + foreach my $dependency (qw/requires provides obsoletes conflicts recommends suggests supplements enhances/) { my @list = $package->$dependency(); my $dep_list; foreach my $dep (@list) { -- 1.8.1.4
>From dc9599f8f0daf191564514d37140c16521f2bb1b Mon Sep 17 00:00:00 2001 From: Michael Calmer <m...@suse.de> Date: Fri, 18 Oct 2013 13:52:14 +0200 Subject: [PATCH 4/5] add support for enhances rpm weak dependency (schema) (bnc#846436) --- .../spacewalk/common/tables/rhnPackageEnhances.sql | 39 ++++++++++++++++++++++ schema/spacewalk/common/tables/tables.deps | 1 + .../oracle/triggers/rhnPackageEnhances.sql | 22 ++++++++++++ .../postgres/triggers/rhnPackageEnhances.sql | 27 +++++++++++++++ .../030-rhnPackageEnhances.sql | 39 ++++++++++++++++++++++ .../031-rhnPackageEnhances.sql.oracle | 22 ++++++++++++ .../031-rhnPackageEnhances.sql.postgresql | 27 +++++++++++++++ .../032-fix-supplements-enhances.sql.oracle | 9 +++++ .../032-fix-supplements-enhances.sql.postgresql | 10 ++++++ 9 files changed, 196 insertions(+) create mode 100644 schema/spacewalk/common/tables/rhnPackageEnhances.sql create mode 100644 schema/spacewalk/oracle/triggers/rhnPackageEnhances.sql create mode 100644 schema/spacewalk/postgres/triggers/rhnPackageEnhances.sql create mode 100644 schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/030-rhnPackageEnhances.sql create mode 100644 schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.oracle create mode 100644 schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.postgresql create mode 100644 schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.oracle create mode 100644 schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.postgresql diff --git a/schema/spacewalk/common/tables/rhnPackageEnhances.sql b/schema/spacewalk/common/tables/rhnPackageEnhances.sql new file mode 100644 index 0000000..d6787f7 --- /dev/null +++ b/schema/spacewalk/common/tables/rhnPackageEnhances.sql @@ -0,0 +1,39 @@ +-- +-- Copyright (c) 2013 Novell +-- +-- This software is licensed to you under the GNU General Public License, +-- version 2 (GPLv2). There is NO WARRANTY for this software, express or +-- implied, including the implied warranties of MERCHANTABILITY or FITNESS +-- FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 +-- along with this software; if not, see +-- http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. +-- +-- + +CREATE TABLE rhnPackageEnhances +( + package_id NUMBER NOT NULL + CONSTRAINT rhn_pkg_enh_package_fk + REFERENCES rhnPackage (id) + ON DELETE CASCADE, + capability_id NUMBER NOT NULL + CONSTRAINT rhn_pkg_enh_capability_fk + REFERENCES rhnPackageCapability (id), + sense NUMBER + DEFAULT (0) NOT NULL, + created timestamp with local time zone + DEFAULT (current_timestamp) NOT NULL, + modified timestamp with local time zone + DEFAULT (current_timestamp) NOT NULL +) +ENABLE ROW MOVEMENT +; + +CREATE UNIQUE INDEX rhn_pkg_enh_pid_cid_s_uq + ON rhnPackageEnhances (package_id, capability_id, sense) + TABLESPACE [[4m_tbs]]; + +CREATE INDEX rhn_pkg_enh_cid_idx + ON rhnPackageEnhances (capability_id) + NOLOGGING + TABLESPACE [[4m_tbs]]; diff --git a/schema/spacewalk/common/tables/tables.deps b/schema/spacewalk/common/tables/tables.deps index 3594eca..1a71319 100644 --- a/schema/spacewalk/common/tables/tables.deps +++ b/schema/spacewalk/common/tables/tables.deps @@ -125,6 +125,7 @@ rhnPackageProvides :: rhnPackage rhnPackageCapability rhnPackageRequires :: rhnPackage rhnPackageCapability rhnPackageSuggests :: rhnPackage rhnPackageCapability rhnPackageSupplements :: rhnPackage rhnPackageCapability +rhnPackageEnhances :: rhnPackage rhnPackageCapability rhnPackageRecommends :: rhnPackage rhnPackageCapability rhnPackageSource :: web_customer rhnSourceRPM rhnFile rhnPackageGroup \ rhnChecksum diff --git a/schema/spacewalk/oracle/triggers/rhnPackageEnhances.sql b/schema/spacewalk/oracle/triggers/rhnPackageEnhances.sql new file mode 100644 index 0000000..765861c --- /dev/null +++ b/schema/spacewalk/oracle/triggers/rhnPackageEnhances.sql @@ -0,0 +1,22 @@ + +-- +-- Copyright (c) 2013 Novell, Inc. +-- +-- This software is licensed to you under the GNU General Public License, +-- version 2 (GPLv2). There is NO WARRANTY for this software, express or +-- implied, including the implied warranties of MERCHANTABILITY or FITNESS +-- FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 +-- along with this software; if not, see +-- http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. +-- +-- + +create or replace trigger +rhn_pkg_enh_mod_trig +before insert or update on rhnPackageEnhances +for each row +begin + :new.modified := current_timestamp; +end; +/ +show errors diff --git a/schema/spacewalk/postgres/triggers/rhnPackageEnhances.sql b/schema/spacewalk/postgres/triggers/rhnPackageEnhances.sql new file mode 100644 index 0000000..4890e5f --- /dev/null +++ b/schema/spacewalk/postgres/triggers/rhnPackageEnhances.sql @@ -0,0 +1,27 @@ +-- oracle equivalent source sha1 b31ae5f05f77f3e6fb83c8a7005e49e0a65424e6 +-- +-- Copyright (c) 2013 Novell, Inc. +-- +-- This software is licensed to you under the GNU General Public License, +-- version 2 (GPLv2). There is NO WARRANTY for this software, express or +-- implied, including the implied warranties of MERCHANTABILITY or FITNESS +-- FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 +-- along with this software; if not, see +-- http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. +-- +-- + +create or replace function rhn_pkg_enh_mod_trig_fun() returns trigger as +$$ +begin + new.modified := current_timestamp; + + return new; +end; +$$ language plpgsql; + +create trigger +rhn_pkg_enh_mod_trig +before insert or update on rhnPackageEnhances +for each row +execute procedure rhn_pkg_enh_mod_trig_fun(); diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/030-rhnPackageEnhances.sql b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/030-rhnPackageEnhances.sql new file mode 100644 index 0000000..d6787f7 --- /dev/null +++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/030-rhnPackageEnhances.sql @@ -0,0 +1,39 @@ +-- +-- Copyright (c) 2013 Novell +-- +-- This software is licensed to you under the GNU General Public License, +-- version 2 (GPLv2). There is NO WARRANTY for this software, express or +-- implied, including the implied warranties of MERCHANTABILITY or FITNESS +-- FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 +-- along with this software; if not, see +-- http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. +-- +-- + +CREATE TABLE rhnPackageEnhances +( + package_id NUMBER NOT NULL + CONSTRAINT rhn_pkg_enh_package_fk + REFERENCES rhnPackage (id) + ON DELETE CASCADE, + capability_id NUMBER NOT NULL + CONSTRAINT rhn_pkg_enh_capability_fk + REFERENCES rhnPackageCapability (id), + sense NUMBER + DEFAULT (0) NOT NULL, + created timestamp with local time zone + DEFAULT (current_timestamp) NOT NULL, + modified timestamp with local time zone + DEFAULT (current_timestamp) NOT NULL +) +ENABLE ROW MOVEMENT +; + +CREATE UNIQUE INDEX rhn_pkg_enh_pid_cid_s_uq + ON rhnPackageEnhances (package_id, capability_id, sense) + TABLESPACE [[4m_tbs]]; + +CREATE INDEX rhn_pkg_enh_cid_idx + ON rhnPackageEnhances (capability_id) + NOLOGGING + TABLESPACE [[4m_tbs]]; diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.oracle b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.oracle new file mode 100644 index 0000000..765861c --- /dev/null +++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.oracle @@ -0,0 +1,22 @@ + +-- +-- Copyright (c) 2013 Novell, Inc. +-- +-- This software is licensed to you under the GNU General Public License, +-- version 2 (GPLv2). There is NO WARRANTY for this software, express or +-- implied, including the implied warranties of MERCHANTABILITY or FITNESS +-- FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 +-- along with this software; if not, see +-- http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. +-- +-- + +create or replace trigger +rhn_pkg_enh_mod_trig +before insert or update on rhnPackageEnhances +for each row +begin + :new.modified := current_timestamp; +end; +/ +show errors diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.postgresql b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.postgresql new file mode 100644 index 0000000..4890e5f --- /dev/null +++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.postgresql @@ -0,0 +1,27 @@ +-- oracle equivalent source sha1 b31ae5f05f77f3e6fb83c8a7005e49e0a65424e6 +-- +-- Copyright (c) 2013 Novell, Inc. +-- +-- This software is licensed to you under the GNU General Public License, +-- version 2 (GPLv2). There is NO WARRANTY for this software, express or +-- implied, including the implied warranties of MERCHANTABILITY or FITNESS +-- FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 +-- along with this software; if not, see +-- http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. +-- +-- + +create or replace function rhn_pkg_enh_mod_trig_fun() returns trigger as +$$ +begin + new.modified := current_timestamp; + + return new; +end; +$$ language plpgsql; + +create trigger +rhn_pkg_enh_mod_trig +before insert or update on rhnPackageEnhances +for each row +execute procedure rhn_pkg_enh_mod_trig_fun(); diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.oracle b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.oracle new file mode 100644 index 0000000..6609897 --- /dev/null +++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.oracle @@ -0,0 +1,9 @@ + +insert into rhnPackageEnhances (package_id, capability_id, sense) + select s.package_id, s.capability_id, s.sense + from rhnPackageSupplements s + where BITAND(s.sense, 134217728) != 134217728; +-- 134217728 == (1 << 27) STRONG FLAG in RPM + +delete from rhnPackageSupplements + where BITAND(sense, 134217728) != 134217728; diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.postgresql b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.postgresql new file mode 100644 index 0000000..d563b23 --- /dev/null +++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.postgresql @@ -0,0 +1,10 @@ +-- oracle equivalent source sha1 9f3cf822ce526d1396838ceaf5fb952d37704611 + +insert into rhnPackageEnhances (package_id, capability_id, sense) + select s.package_id, s.capability_id, s.sense + from rhnPackageSupplements s + where (s.sense & 134217728) != 134217728; +-- 134217728 == (1 << 27) STRONG FLAG in RPM + +delete from rhnPackageSupplements + where (sense & 134217728) != 134217728; -- 1.8.1.4
>From f79046ea94a1447543f9e4158d0be50bb57dac79 Mon Sep 17 00:00:00 2001 From: Michael Calmer <m...@suse.de> Date: Fri, 18 Oct 2013 13:56:24 +0200 Subject: [PATCH 5/5] Regenerate the metadata for rpm enhances dependency (bnc#846436) --- .../033-delete-cached-repodata.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/033-delete-cached-repodata.sql diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/033-delete-cached-repodata.sql b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/033-delete-cached-repodata.sql new file mode 100644 index 0000000..5f290f5 --- /dev/null +++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/033-delete-cached-repodata.sql @@ -0,0 +1,8 @@ +delete from rhnPackageRepodata; + +insert into rhnRepoRegenQueue (id, CHANNEL_LABEL, REASON, FORCE) +(select sequence_nextval('rhn_repo_regen_queue_id_seq'), + C.label, + 'package summary modification', + 'Y' + from rhnChannel C); -- 1.8.1.4
_______________________________________________ Spacewalk-devel mailing list Spacewalk-devel@redhat.com https://www.redhat.com/mailman/listinfo/spacewalk-devel