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 ++++
java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml
| 10 ++
java/code/src/com/redhat/rhn/taskomatic/task/TaskConstants.java
| 3
java/code/src/com/redhat/rhn/taskomatic/task/repomd/PrimaryXmlWriter.java
| 3
schema/spacewalk/common/tables/rhnPackageEnhances.sql
| 39 ++++++++++
schema/spacewalk/common/tables/tables.deps
| 1
schema/spacewalk/oracle/triggers/rhnPackageEnhances.sql
| 22 +++++
schema/spacewalk/postgres/triggers/rhnPackageEnhances.sql
| 27 ++++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/030-rhnPackageEnhances.sql
| 39 ++++++++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.oracle
| 22 +++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/031-rhnPackageEnhances.sql.postgresql
| 27 ++++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.oracle
| 9 ++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/032-fix-supplements-enhances.sql.postgresql
| 10 ++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/033-delete-cached-repodata.sql
| 8 ++
web/html/network/software/packages/dependencies.pxt
| 3
web/modules/rhn/RHN/DB/Package.pm
| 27 ++++++
web/modules/sniglets/Sniglets/Packages.pm
| 2
29 files changed, 323 insertions(+), 8 deletions(-)
New commits:
commit e8650f095af2d37e106fdde4d14cb2d78540112b
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Tue Oct 22 14:34:05 2013 +0200
fixed table alias
addressing
ERROR: missing FROM-clause entry for table "supp"
diff --git a/backend/server/rhnChannel.py b/backend/server/rhnChannel.py
index f4678a4..34455d2 100644
--- a/backend/server/rhnChannel.py
+++ b/backend/server/rhnChannel.py
@@ -1201,7 +1201,7 @@ def list_all_packages_complete_sql(channel_id):
and supp.capability_id = pc.id
union all
select
- supp.package_id,
+ enh.package_id,
'enhances' as capability_type,
enh.capability_id,
enh.sense,
commit 63f14b6388526b300cdbfebb9d82d66c54521c60
Author: Michael Calmer <mc(a)suse.de>
Date: Fri Oct 18 13:56:24 2013 +0200
Regenerate the metadata for rpm enhances dependency (bnc#846436)
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);
commit fe9eb85f023d75451cfe2b70c267b97103e7ef08
Author: Michael Calmer <mc(a)suse.de>
Date: Fri Oct 18 13:52:14 2013 +0200
add support for enhances rpm weak dependency (schema) (bnc#846436)
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;
commit 3cdcf6a9813a67a18dc5800e6273f75913ee8629
Author: Michael Calmer <mc(a)suse.de>
Date: Fri Oct 18 13:49:55 2013 +0200
add support for enhances rpm weak dependency (web) (bnc#846436)
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) {
commit 755dff25f8931fe216aca6cf5ed42de568ed0676
Author: Michael Calmer <mc(a)suse.de>
Date: Fri Oct 18 13:49:02 2013 +0200
add support for enhances rpm weak dependency (java) (bnc#846436)
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);
}
/**
commit 93e0fef99d3a11c2461296248dbbe996be797aaa
Author: Michael Calmer <mc(a)suse.de>
Date: Fri Oct 18 13:47:55 2013 +0200
add support for enhances rpm weak dependencies (backend) (bnc#846436)
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