diff options
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.patch | 193 |
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 - |