#include "pool.h"
#include "poolarch.h"
#include "poolvendor.h"
+#include "evr.h"
#include "repo.h"
#include "repo_solv.h"
#include "solver.h"
}
queue_push(&autoinstq, pool_str2id(pool, pieces[2], 1));
}
+ else if (!strcmp(pieces[0], "evrcmp") && npieces == 3)
+ {
+ Id evr1 = pool_str2id(pool, pieces[1], 1);
+ Id evr2 = pool_str2id(pool, pieces[2], 1);
+ int r = pool_evrcmp(pool, evr1, evr2, EVRCMP_COMPARE);
+ r = r < 0 ? REL_LT : r > 0 ? REL_GT : REL_EQ;
+ queue_push2(job, SOLVER_NOOP | SOLVER_SOLVABLE_PROVIDES, pool_rel2id(pool, evr1, evr2, r, 1));
+ }
else
{
pool_error(pool, 0, "testcase_read: cannot parse command '%s'", pieces[0]);
for (;;)
{
-#ifdef RPM_CARET_DEPS
while (s1 < q1 && !(*s1 >= '0' && *s1 <= '9') &&
!(*s1 >= 'a' && *s1 <= 'z') && !(*s1 >= 'A' && *s1 <= 'Z') && *s1 != '~' && *s1 != '^')
s1++;
}
if (s2 < q2 && *s2 == '^')
return s1 < q1 ? 1 : -1;
-#else
- while (s1 < q1 && !(*s1 >= '0' && *s1 <= '9') &&
- !(*s1 >= 'a' && *s1 <= 'z') && !(*s1 >= 'A' && *s1 <= 'Z') && *s1 != '~')
- s1++;
- while (s2 < q2 && !(*s2 >= '0' && *s2 <= '9') &&
- !(*s2 >= 'a' && *s2 <= 'z') && !(*s2 >= 'A' && *s2 <= 'Z') && *s2 != '~')
- s2++;
-#endif
if (s1 < q1 && *s1 == '~')
{
if (s2 < q2 && *s2 == '~')
--- /dev/null
+repo system 0 empty
+repo available 0 testtags <inline>
+#>=Pkg: A1 1.0 0
+#>=Pkg: A2 1.0^ 0
+system i686 rpm system
+
+evrcmp 1.0~rc1 1.0~rc1
+evrcmp 1.0~rc1 1.0
+evrcmp 1.0 1.0~rc1
+evrcmp 1.0~rc1 1.0~rc2
+evrcmp 1.0~rc2 1.0~rc1
+evrcmp 1.0~rc1~git123 1.0~rc1~git123
+evrcmp 1.0~rc1~git123 1.0~rc1
+evrcmp 1.0~rc1 1.0~rc1~git123
+
+evrcmp 1.0^ 1.0^
+evrcmp 1.0^ 1.0
+evrcmp 1.0 1.0^
+evrcmp 1.0^git1 1.0^git1
+evrcmp 1.0^git1 1.0
+evrcmp 1.0 1.0^git1
+evrcmp 1.0^git1 1.0^git2
+evrcmp 1.0^git2 1.0^git1
+evrcmp 1.0^git1 1.01
+evrcmp 1.01 1.0^git1
+evrcmp 1.0^20160101 1.0^20160101
+evrcmp 1.0^20160101 1.0.1
+evrcmp 1.0.1 1.0^20160101
+evrcmp 1.0^20160101^git1 1.0^20160101^git1
+evrcmp 1.0^20160102 1.0^20160101^git1
+evrcmp 1.0^20160101^git1 1.0^20160102
+
+evrcmp 1.0~rc1^git1 1.0~rc1^git1
+evrcmp 1.0~rc1^git1 1.0~rc1
+evrcmp 1.0~rc1 1.0~rc1^git1
+evrcmp 1.0^git1~pre 1.0^git1~pre
+evrcmp 1.0^git1 1.0^git1~pre
+evrcmp 1.0^git1~pre 1.0^git1
+
+result jobs <inline>
+#>job noop provides 1.0 < 1.0^
+#>job noop provides 1.0 < 1.0^git1
+#>job noop provides 1.0 > 1.0~rc1
+#>job noop provides 1.0.1 > 1.0^20160101
+#>job noop provides 1.01 > 1.0^git1
+#>job noop provides 1.0^ = 1.0^
+#>job noop provides 1.0^ > 1.0
+#>job noop provides 1.0^20160101 < 1.0.1
+#>job noop provides 1.0^20160101 = 1.0^20160101
+#>job noop provides 1.0^20160101^git1 < 1.0^20160102
+#>job noop provides 1.0^20160101^git1 = 1.0^20160101^git1
+#>job noop provides 1.0^20160102 > 1.0^20160101^git1
+#>job noop provides 1.0^git1 < 1.01
+#>job noop provides 1.0^git1 < 1.0^git2
+#>job noop provides 1.0^git1 = 1.0^git1
+#>job noop provides 1.0^git1 > 1.0
+#>job noop provides 1.0^git1 > 1.0^git1~pre
+#>job noop provides 1.0^git1~pre < 1.0^git1
+#>job noop provides 1.0^git1~pre = 1.0^git1~pre
+#>job noop provides 1.0^git2 > 1.0^git1
+#>job noop provides 1.0~rc1 < 1.0
+#>job noop provides 1.0~rc1 < 1.0~rc1^git1
+#>job noop provides 1.0~rc1 < 1.0~rc2
+#>job noop provides 1.0~rc1 = 1.0~rc1
+#>job noop provides 1.0~rc1 > 1.0~rc1~git123
+#>job noop provides 1.0~rc1^git1 = 1.0~rc1^git1
+#>job noop provides 1.0~rc1^git1 > 1.0~rc1
+#>job noop provides 1.0~rc1~git123 < 1.0~rc1
+#>job noop provides 1.0~rc1~git123 = 1.0~rc1~git123
+#>job noop provides 1.0~rc2 > 1.0~rc1