#include "evr.h"
#include "pool.h"
+#ifdef ENABLE_CONDA
+#include "conda.h"
+#endif
#if defined(DEBIAN) || defined(MULTI_SEMANTICS)
for (;;)
{
while (s1 < q1 && !(*s1 >= '0' && *s1 <= '9') &&
- !(*s1 >= 'a' && *s1 <= 'z') && !(*s1 >= 'A' && *s1 <= 'Z') && *s1 != '~')
+ !(*s1 >= 'a' && *s1 <= 'z') && !(*s1 >= 'A' && *s1 <= 'Z') && *s1 != '~' && *s1 != '^')
s1++;
while (s2 < q2 && !(*s2 >= '0' && *s2 <= '9') &&
- !(*s2 >= 'a' && *s2 <= 'z') && !(*s2 >= 'A' && *s2 <= 'Z') && *s2 != '~')
+ !(*s2 >= 'a' && *s2 <= 'z') && !(*s2 >= 'A' && *s2 <= 'Z') && *s2 != '~' && *s2 != '^')
s2++;
if (s1 < q1 && *s1 == '~')
{
}
if (s2 < q2 && *s2 == '~')
return 1;
+ if (s1 < q1 && *s1 == '^')
+ {
+ if (s2 < q2 && *s2 == '^')
+ {
+ s1++;
+ s2++;
+ continue;
+ }
+ return s2 < q2 ? -1 : 1;
+ }
+ if (s2 < q2 && *s2 == '^')
+ return s1 < q1 ? 1 : -1;
if (s1 >= q1 || s2 >= q2)
break;
if ((*s1 >= '0' && *s1 <= '9') || (*s2 >= '0' && *s2 <= '9'))
while (part1 + 1 < s1 && *part1 == '0')
part1++;
- while (part2 + 1 < s1 && *part2 == '0')
+ while (part2 + 1 < s2 && *part2 == '0')
part2++;
len1 = s1 - part1;
if (pre2 == q2)
return -1;
- return solv_cmp_version_part_haiku(pre1 + 1, q1, pre2 + 1, q2);
+ cmp = solv_cmp_version_part_haiku(pre1 + 1, q1, pre2 + 1, q2);
+ return cmp == 0 ? 0 : cmp < 0 ? -1 : 1; /* must return -1, 0, or 1 */
}
#endif /* HAIKU */
-
-
-/*
+
+
+/*
* the solv_vercmp variant your system uses.
*/
int
#if defined(MULTI_SEMANTICS)
# define solv_vercmp (*(pool->disttype == DISTTYPE_DEB ? &solv_vercmp_deb : \
- pool->disttype == DISTTYPE_HAIKU ? solv_vercmp_haiku : \
+ pool->disttype == DISTTYPE_HAIKU ? &solv_vercmp_haiku : \
&solv_ver##cmp_rpm))
#elif defined(DEBIAN)
# define solv_vercmp solv_vercmp_deb
if (evr1 == evr2)
return 0;
+#ifdef ENABLE_CONDA
+ if (pool->disttype == DISTTYPE_CONDA)
+ return pool_evrcmp_conda(pool, evr1, evr2, mode);
+#endif
+
#if 0
POOL_DEBUG(DEBUG_EVRCMP, "evrcmp %s %s mode=%d\n", evr1, evr2, mode);
#endif