summaryrefslogtreecommitdiff
path: root/sys-apps/apk-tools/files/apk-tools-2.6.6-fuzzy-versions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/apk-tools/files/apk-tools-2.6.6-fuzzy-versions.patch')
-rw-r--r--sys-apps/apk-tools/files/apk-tools-2.6.6-fuzzy-versions.patch193
1 files changed, 0 insertions, 193 deletions
diff --git a/sys-apps/apk-tools/files/apk-tools-2.6.6-fuzzy-versions.patch b/sys-apps/apk-tools/files/apk-tools-2.6.6-fuzzy-versions.patch
deleted file mode 100644
index 11843b218..000000000
--- a/sys-apps/apk-tools/files/apk-tools-2.6.6-fuzzy-versions.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-From 4d71ddcd8f4a370babdaba22cbf43c4a00524c5b Mon Sep 17 00:00:00 2001
-From: Andrew Wilcox <AWilcox@Wilcox-Tech.com>
-Date: Sun, 18 Oct 2015 10:59:54 -0500
-Subject: [PATCH 1/3] Add ~ operator for fuzzy version matching.
-
----
- src/add.c | 2 +-
- src/apk_package.h | 1 +
- src/apk_version.h | 1 +
- src/package.c | 16 ++++++++++++----
- src/version.c | 9 +++++++--
- 5 files changed, 22 insertions(+), 7 deletions(-)
-
-diff --git a/src/add.c b/src/add.c
-index 2df4dc8..742df07 100644
---- a/src/add.c
-+++ b/src/add.c
-@@ -137,7 +137,7 @@ static int add_main(void *ctx, struct apk_database *db, struct apk_string_array
-
- apk_blob_pull_dep(&b, db, &dep);
- if (APK_BLOB_IS_NULL(b) || b.len > 0) {
-- apk_error("'%s' is not a valid dependency, format is name(@tag)([<>=]version)",
-+ apk_error("'%s' is not a valid dependency, format is name(@tag)([<>~=]version)",
- *parg);
- return -1;
- }
-diff --git a/src/apk_package.h b/src/apk_package.h
-index 1b0e2cf..30de39a 100644
---- a/src/apk_package.h
-+++ b/src/apk_package.h
-@@ -73,6 +73,7 @@ struct apk_dependency {
- unsigned repository_tag : 6;
- unsigned conflict : 1;
- unsigned result_mask : 3;
-+ unsigned fuzzy : 1;
- };
- APK_ARRAY(apk_dependency_array, struct apk_dependency);
-
-diff --git a/src/apk_version.h b/src/apk_version.h
-index 4275343..01e401b 100644
---- a/src/apk_version.h
-+++ b/src/apk_version.h
-@@ -26,6 +26,7 @@
- const char *apk_version_op_string(int result_mask);
- int apk_version_result_mask(const char *str);
- int apk_version_validate(apk_blob_t ver);
-+int apk_version_compare_blob_fuzzy(apk_blob_t a, apk_blob_t b, int fuzzy);
- int apk_version_compare_blob(apk_blob_t a, apk_blob_t b);
- int apk_version_compare(const char *str1, const char *str2);
-
-diff --git a/src/package.c b/src/package.c
-index 65f105d..24a4f94 100644
---- a/src/package.c
-+++ b/src/package.c
-@@ -31,6 +31,7 @@
-
- static const apk_spn_match_def apk_spn_dependency_comparer = {
-- [7] = (1<<4) /*<*/ | (1<<5) /*=*/ | (1<<6) /*<*/,
-+ [7] = (1<<4) /*<*/ | (1<<5) /*=*/ | (1<<6) /*>*/,
-+ [15]= (1<<6) /*~*/,
- };
-
- static const apk_spn_match_def apk_spn_dependency_separator = {
-@@ -190,9 +191,9 @@ void apk_blob_pull_dep(apk_blob_t *b, struct apk_database *db, struct apk_depend
- {
- struct apk_name *name;
- apk_blob_t bdep, bname, bop, bver = APK_BLOB_NULL, btag;
-- int mask = APK_DEPMASK_ANY, conflict = 0, tag = 0;
-+ int mask = APK_DEPMASK_ANY, conflict = 0, tag = 0, fuzzy = 0;
-
-- /* [!]name[<,<=,=,>=,>,><]ver */
-+ /* [!]name[<,<=,<~,=,~,>~,>=,>,><]ver */
- if (APK_BLOB_IS_NULL(*b))
- goto fail;
-
-@@ -231,6 +232,9 @@ void apk_blob_pull_dep(apk_blob_t *b, struct apk_database *db, struct apk_depend
- case '>':
- mask |= APK_VERSION_GREATER;
- break;
-+ case '~':
-+ fuzzy = 1;
-+ mask |= APK_VERSION_FUZZY; // XXX implicit
- case '=':
- mask |= APK_VERSION_EQUAL;
- break;
-@@ -259,6 +264,7 @@ void apk_blob_pull_dep(apk_blob_t *b, struct apk_database *db, struct apk_depend
- .repository_tag = tag,
- .result_mask = mask,
- .conflict = conflict,
-+ .fuzzy = fuzzy
- };
- return;
- fail:
-@@ -320,7 +326,8 @@ int apk_dep_is_provided(struct apk_dependency *dep, struct apk_provider *p)
- default:
- if (p->version == &apk_null_blob)
- return dep->conflict;
-- if (apk_version_compare_blob(*p->version, *dep->version)
-+ if (apk_version_compare_blob_fuzzy(*p->version, *dep->version,
-+ dep->fuzzy)
- & dep->result_mask)
- return !dep->conflict;
- return dep->conflict;
-@@ -341,7 +348,8 @@ int apk_dep_is_materialized(struct apk_dependency *dep, struct apk_package *pkg)
- case APK_DEPMASK_ANY:
- return !dep->conflict;
- default:
-- if (apk_version_compare_blob(*pkg->version, *dep->version)
-+ if (apk_version_compare_blob_fuzzy(*pkg->version, *dep->version,
-+ dep->fuzzy)
- & dep->result_mask)
- return !dep->conflict;
- return dep->conflict;
-diff --git a/src/version.c b/src/version.c
-index 00c78d1..212a5d1 100644
---- a/src/version.c
-+++ b/src/version.c
-@@ -186,7 +186,7 @@ int apk_version_validate(apk_blob_t ver)
- return t == TOKEN_END;
- }
-
--int apk_version_compare_blob(apk_blob_t a, apk_blob_t b)
-+int apk_version_compare_blob_fuzzy(apk_blob_t a, apk_blob_t b, int fuzzy)
- {
- int at = TOKEN_DIGIT, bt = TOKEN_DIGIT, tt;
- int av = 0, bv = 0;
-@@ -215,7 +215,7 @@ int apk_version_compare_blob(apk_blob_t a, apk_blob_t b)
- return APK_VERSION_GREATER;
-
- /* both have TOKEN_END or TOKEN_INVALID next? */
-- if (at == bt)
-+ if (at == bt || fuzzy)
- return APK_VERSION_EQUAL;
-
- /* leading version components and their values are equal,
-@@ -235,6 +235,11 @@ int apk_version_compare_blob(apk_blob_t a, apk_blob_t b)
- return APK_VERSION_EQUAL;
- }
-
-+int apk_version_compare_blob(apk_blob_t a, apk_blob_t b)
-+{
-+ return apk_version_compare_blob_fuzzy(a, b, 0);
-+}
-+
- int apk_version_compare(const char *str1, const char *str2)
- {
- return apk_version_compare_blob(APK_BLOB_STR(str1), APK_BLOB_STR(str2));
-diff --git a/src/apk_package.h b/src/apk_package.h
-index 30de39a..9984080 100644
---- a/src/apk_package.h
-+++ b/src/apk_package.h
-@@ -72,7 +72,7 @@ struct apk_dependency {
- unsigned broken : 1;
- unsigned repository_tag : 6;
- unsigned conflict : 1;
-- unsigned result_mask : 3;
-+ unsigned result_mask : 4;
- unsigned fuzzy : 1;
- };
- APK_ARRAY(apk_dependency_array, struct apk_dependency);
-diff --git a/src/apk_version.h b/src/apk_version.h
-index 01e401b..e13c534 100644
---- a/src/apk_version.h
-+++ b/src/apk_version.h
-@@ -18,9 +18,10 @@
- #define APK_VERSION_EQUAL 1
- #define APK_VERSION_LESS 2
- #define APK_VERSION_GREATER 4
-+#define APK_VERSION_FUZZY 8
-
- #define APK_DEPMASK_ANY (APK_VERSION_EQUAL|APK_VERSION_LESS|\
-- APK_VERSION_GREATER)
-+ APK_VERSION_FUZZY|APK_VERSION_GREATER)
- #define APK_DEPMASK_CHECKSUM (APK_VERSION_LESS|APK_VERSION_GREATER)
-
- const char *apk_version_op_string(int result_mask);
-diff --git a/src/version.c b/src/version.c
-index 5a790b5..14c61d8 100644
---- a/src/version.c
-+++ b/src/version.c
-@@ -147,6 +147,9 @@ const char *apk_version_op_string(int mask)
- return "<=";
- case APK_VERSION_EQUAL:
- return "=";
-+ case APK_VERSION_EQUAL|APK_VERSION_FUZZY:
-+ case APK_VERSION_FUZZY:
-+ return "~";
- case APK_VERSION_GREATER|APK_VERSION_EQUAL:
- return ">=";
- case APK_VERSION_GREATER:
---
-2.9.2
-