Blob Blame History Raw
From 0f7f66f5731ef04948794329f1a1ed6597015589 Mon Sep 17 00:00:00 2001
From: Michal Luscon <mluscon@redhat.com>
Date: Mon, 14 Mar 2016 17:29:20 +0100
Subject: [PATCH 1/3] hy-package: add support for Requires(pre)
 (Related:RhBug:1303117)

Closes: #95

Reviewed-by: Igor Gnatenko <ignatenko@redhat.com>
---
 src/package.c           | 16 +++++++++++++++-
 src/package.h           |  1 +
 src/python/package-py.c |  2 ++
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/package.c b/src/package.c
index 3c47d24..1bd5fb3 100644
--- a/src/package.c
+++ b/src/package.c
@@ -25,6 +25,7 @@
 #include <solv/evr.h>
 #include <solv/pool.h>
 #include <solv/repo.h>
+#include <solv/queue.h>
 #include <solv/util.h>
 
 // hawkey
@@ -65,9 +66,16 @@ reldeps_for(HyPackage pkg, Id type)
     Solvable *s = get_solvable(pkg);
     HyReldepList reldeplist;
     Queue q;
+    Id marker = -1;
+    Id solv_type = type;
 
+    if (type == SOLVABLE_PREREQMARKER) {
+        solv_type = SOLVABLE_REQUIRES;
+        marker = 1;
+    }
     queue_init(&q);
-    solvable_lookup_deparray(s, type, &q, -1);
+    solvable_lookup_deparray(s, solv_type, &q, marker);
+
     reldeplist = reldeplist_from_queue(pool, q);
 
     queue_free(&q);
@@ -425,6 +433,12 @@ hy_package_get_requires(HyPackage pkg)
 }
 
 HyReldepList
+hy_package_get_requires_pre(HyPackage pkg)
+{
+    return reldeps_for(pkg, SOLVABLE_PREREQMARKER);
+}
+
+HyReldepList
 hy_package_get_suggests(HyPackage pkg)
 {
     return reldeps_for(pkg, SOLVABLE_SUGGESTS);
diff --git a/src/package.h b/src/package.h
index 742f0f6..43f335b 100644
--- a/src/package.h
+++ b/src/package.h
@@ -83,6 +83,7 @@ HyReldepList hy_package_get_obsoletes(HyPackage pkg);
 HyReldepList hy_package_get_provides(HyPackage pkg);
 HyReldepList hy_package_get_recommends(HyPackage pkg);
 HyReldepList hy_package_get_requires(HyPackage pkg);
+HyReldepList hy_package_get_requires_pre(HyPackage pkg);
 HyReldepList hy_package_get_suggests(HyPackage pkg);
 HyReldepList hy_package_get_supplements(HyPackage pkg);
 HyStringArray hy_package_get_files(HyPackage pkg);
diff --git a/src/python/package-py.c b/src/python/package-py.c
index 7087cf9..cd41e15 100644
--- a/src/python/package-py.c
+++ b/src/python/package-py.c
@@ -332,6 +332,8 @@ static PyGetSetDef package_getsetters[] = {
      (void *)hy_package_get_recommends},
     {"requires",  (getter)get_reldep, NULL, NULL,
      (void *)hy_package_get_requires},
+    {"requires_pre",  (getter)get_reldep, NULL, NULL,
+     (void *)hy_package_get_requires_pre},
     {"suggests",  (getter)get_reldep, NULL, NULL,
      (void *)hy_package_get_suggests},
     {"supplements",  (getter)get_reldep, NULL, NULL,
-- 
2.11.1