diff options
-rw-r--r-- | system/apk-tools/APKBUILD | 16 | ||||
-rw-r--r-- | system/apk-tools/deep.patch | 50 | ||||
-rw-r--r-- | system/apk-tools/list.patch | 24 | ||||
-rw-r--r-- | system/apk-tools/pmmx.patch | 2 | ||||
-rw-r--r-- | system/apk-tools/search.patch | 29 | ||||
-rw-r--r-- | system/apk-tools/virtual.patch | 109 |
6 files changed, 147 insertions, 83 deletions
diff --git a/system/apk-tools/APKBUILD b/system/apk-tools/APKBUILD index 78478e51e..86a15d28a 100644 --- a/system/apk-tools/APKBUILD +++ b/system/apk-tools/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Adelie Platform Group <adelie-devel@lists.adelielinux.org> pkgname=apk-tools -pkgver=2.10.3 -pkgrel=2 +pkgver=2.10.4 +pkgrel=0 pkgdesc="Alpine Package Keeper - package manager" url="https://git.alpinelinux.org/cgit/apk-tools/" arch="all" @@ -13,9 +13,9 @@ makedepends_host="zlib-dev openssl openssl-dev linux-headers" makedepends="$makedepends_build $makedepends_host" subpackages="$pkgname-static" source="https://dev.alpinelinux.org/archive/$pkgname/$pkgname-$pkgver.tar.xz - deep.patch - list.patch pmmx.patch + search.patch + virtual.patch " prepare() { @@ -69,7 +69,7 @@ static() { "$subpkgdir"/sbin/apk.static } -sha512sums="1b190cfd04c69369bd4f2b708d4df0f8cf2937e1580c95138fd2c2257e7604d015deaca10a9fe0da6742981caadb6b067c15e417a1951866f781b8a5c71c98ee apk-tools-2.10.3.tar.xz -059f0368b096c53357db567bf720f049cf19a88dbf10dc2496a739dfe332a6487b87f07056d7cf6f0c8a385782821547d4aba8c393591c4070838f1c98819dda deep.patch -53d446734d32341cbd9ca00aedcd65d4d99220da354a9339837a6c79609a321f61ae917fb3cd9d4bffebcfc171d06c0f0d315e29a2d16285545c4fa085a75639 list.patch -746d00ce2af554a25db7ecea2b0a4d8f7399d2560efb6bf59ea144012d0163d3e0bad84c799bd706e8be6c0a543d4e35728d6beb269fddbbea626384009129cb pmmx.patch" +sha512sums="d2d9fde0aae9059236f68a3fc2f2186104bb9a099b15d296a6202a20ab2912638f10bb3b9edb70f359d060c5839573c3d50ef37d13095fa01c66dc3219ab6e39 apk-tools-2.10.4.tar.xz +78f863c83af8b245aa38416c47016bcbe95ea8e33802123f6ea54b3752eb3c1ee79e5d6fc76ddedd2fba522b82a7367837f4596321085d54397b27fd5edf3b2f pmmx.patch +5ac09eadabe44fe05c952c25df8f6daca292c63e6e5e3481d57603b8b3f1980385ccd87ad4a87b617353d1f936591afb9ee8815e4d8ec3e33913be2b3e3a3f84 search.patch +4e2a8db82e6e40ae4863d12ee55151468d6e8c383e2e2001015f469e07f47057bc9055ab52a4a04f2bffa41ec225f77a9bd6042d5e1fcbd2908d7393e3aed2a1 virtual.patch" diff --git a/system/apk-tools/deep.patch b/system/apk-tools/deep.patch deleted file mode 100644 index b9e361717..000000000 --- a/system/apk-tools/deep.patch +++ /dev/null @@ -1,50 +0,0 @@ -From b0be9f610c02bb2d5e681a3904940d311e9de298 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> -Date: Mon, 3 Jun 2019 14:53:46 +0300 -Subject: solver: fix common dependency merging to inherit pinning and flags - -Notably this fixes occasional issues when doing upgrade with multiple -versions of same packages. Without this the upgrade flag is not always -propagated properly down the dependency chain. ---- - src/solver.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/src/solver.c b/src/solver.c -index e10cf8b..2121dd9 100644 ---- a/src/solver.c -+++ b/src/solver.c -@@ -462,6 +462,8 @@ static void reconsider_name(struct apk_solver_state *ss, struct apk_name *name) - name->name, name0->name); - name0->ss.requirers++; - name_requirers_changed(ss, name0); -+ foreach_array_item(p, name0->providers) -+ inherit_pinning_and_flags(ss, p->pkg, pkg); - } - } - } -@@ -510,7 +512,6 @@ static int compare_providers(struct apk_solver_state *ss, - unsigned int solver_flags; - int r; - -- - /* Prefer existing package */ - if (pkgA == NULL || pkgB == NULL) - return (pkgA != NULL) - (pkgB != NULL); -@@ -675,8 +676,11 @@ static void select_package(struct apk_solver_state *ss, struct apk_name *name) - - if (name->ss.requirers || name->ss.has_iif) { - foreach_array_item(p, name->providers) { -- dbg_printf(" consider "PKG_VER_FMT" iif_triggered=%d, tag_ok=%d, selectable=%d, provider_priority=%d, installed=%d\n", -- PKG_VER_PRINTF(p->pkg), p->pkg->ss.iif_triggered, p->pkg->ss.tag_ok, p->pkg->ss.pkg_selectable, -+ dbg_printf(" consider "PKG_VER_FMT" iif_triggered=%d, tag_ok=%d, selectable=%d, available=%d, flags=0x%x, provider_priority=%d, installed=%d\n", -+ PKG_VER_PRINTF(p->pkg), -+ p->pkg->ss.iif_triggered, p->pkg->ss.tag_ok, -+ p->pkg->ss.pkg_selectable, p->pkg->ss.pkg_available, -+ p->pkg->ss.solver_flags, - p->pkg->provider_priority, p->pkg->ipkg != NULL); - /* Ensure valid pinning and install-if trigger */ - if (name->ss.requirers == 0 && --- -cgit v1.2.1 - diff --git a/system/apk-tools/list.patch b/system/apk-tools/list.patch deleted file mode 100644 index 9692c0c8c..000000000 --- a/system/apk-tools/list.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/src/list.c b/src/list.c -index e285e3f..dcbaeea 100644 ---- a/src/list.c -+++ b/src/list.c -@@ -61,7 +61,7 @@ static int is_orphaned(const struct apk_name *name) - /* repo 1 is always installed-db, so if other bits are set it means the package is available somewhere - * (either cache or in a proper repo) - */ -- return (repos & ~BIT(1)) == 0; -+ return (repos & ~BIT(0)) == 0; - } - - /* returns the currently installed package if there is a newer package that satisfies `name` */ -@@ -144,7 +144,7 @@ static void filter_package(const struct apk_package *pkg, const struct list_ctx - if (ctx->orphaned && !is_orphaned(pkg->name)) - return; - -- if (ctx->available && pkg->repos == BIT(1)) -+ if (ctx->available && pkg->repos == BIT(0)) - return; - - if (ctx->upgradable && !is_upgradable(pkg->name, pkg)) -0001-list-Detect-orphaned-packages-correctly.patch -0001-list-Detect-orphaned-packages-correctly.patch diff --git a/system/apk-tools/pmmx.patch b/system/apk-tools/pmmx.patch index 1b19edc94..e64ad6c0d 100644 --- a/system/apk-tools/pmmx.patch +++ b/system/apk-tools/pmmx.patch @@ -1,6 +1,6 @@ --- apk-tools-2.10.1/src/apk_defines.h.old 2018-09-10 08:04:03.000000000 +0000 +++ apk-tools-2.10.1/src/apk_defines.h 2019-01-04 03:31:41.900000000 +0000 -@@ -88,7 +88,7 @@ +@@ -89,7 +89,7 @@ #if defined(__x86_64__) #define APK_DEFAULT_ARCH "x86_64" #elif defined(__i386__) diff --git a/system/apk-tools/search.patch b/system/apk-tools/search.patch new file mode 100644 index 000000000..1c652356f --- /dev/null +++ b/system/apk-tools/search.patch @@ -0,0 +1,29 @@ +From 530a6e6847657aa9187acd187269ac25f7cdd932 Mon Sep 17 00:00:00 2001 +From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> +Date: Tue, 9 Jul 2019 00:40:15 -0500 +Subject: [PATCH] search: Show in "simple" help output + +Most users probably want to know about the 'search' applet. + +Omission from 'apk --help' output reported by fungalnet[1]. + +[1]: https://www.reddit.com/r/AdelieLinux/comments/c8mtk9/apk_search/ +--- + src/search.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/search.c b/src/search.c +index 9a71747..0b00a3b 100644 +--- a/src/search.c ++++ b/src/search.c +@@ -209,6 +209,7 @@ static struct apk_applet apk_search = { + .help = "Search package by PATTERNs or by indexed dependencies", + .arguments = "PATTERN", + .open_flags = APK_OPENF_READ | APK_OPENF_NO_STATE, ++ .command_groups = APK_COMMAND_GROUP_QUERY, + .context_size = sizeof(struct search_ctx), + .optgroups = { &optgroup_global, &optgroup_applet }, + .main = search_main, +-- +2.22.0 + diff --git a/system/apk-tools/virtual.patch b/system/apk-tools/virtual.patch new file mode 100644 index 000000000..31e6d6807 --- /dev/null +++ b/system/apk-tools/virtual.patch @@ -0,0 +1,109 @@ +From b45415b1096e76f40b32326d2798123f81fe5976 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> +Date: Tue, 2 Jul 2019 15:27:57 +0300 +Subject: [PATCH 1/2] add: fix virtual package id generation + +Fixes 37fbafcd by adding more input to the hash than just second +grained time stamp - collisions would happen when running apk +scripted. + +For virtual package the hash works only as unique identifier, so +try to add elements that should make it unique in most cases. + +Fixes #10648 +--- + src/add.c | 51 +++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 35 insertions(+), 16 deletions(-) + +diff --git a/src/add.c b/src/add.c +index 2d342ab..e028736 100644 +--- a/src/add.c ++++ b/src/add.c +@@ -11,6 +11,7 @@ + + #include <errno.h> + #include <stdio.h> ++#include <unistd.h> + #include "apk_applet.h" + #include "apk_database.h" + #include "apk_print.h" +@@ -80,6 +81,38 @@ static int non_repository_check(struct apk_database *db) + return 1; + } + ++static struct apk_package *create_virtual_package(struct apk_database *db, struct apk_name *name) ++{ ++ char ver[32]; ++ struct apk_package *virtpkg; ++ struct tm tm; ++ EVP_MD_CTX *mdctx; ++ time_t now = apk_time(); ++ pid_t pid = getpid(); ++ ++ localtime_r(&now, &tm); ++ strftime(ver, sizeof ver, "%Y%m%d.%H%M%S", &tm); ++ ++ virtpkg = apk_pkg_new(); ++ if (virtpkg == NULL) return 0; ++ ++ virtpkg->name = name; ++ virtpkg->version = apk_blob_atomize(APK_BLOB_STR(ver)); ++ virtpkg->description = strdup("virtual meta package"); ++ virtpkg->arch = apk_blob_atomize(APK_BLOB_STR("noarch")); ++ ++ mdctx = EVP_MD_CTX_new(); ++ EVP_DigestInit_ex(mdctx, apk_checksum_default(), NULL); ++ EVP_DigestUpdate(mdctx, &tm, sizeof tm); ++ EVP_DigestUpdate(mdctx, &pid, sizeof pid); ++ EVP_DigestUpdate(mdctx, virtpkg->name->name, strlen(virtpkg->name->name) + 1); ++ virtpkg->csum.type = EVP_MD_CTX_size(mdctx); ++ EVP_DigestFinal_ex(mdctx, virtpkg->csum.data, NULL); ++ EVP_MD_CTX_free(mdctx); ++ ++ return virtpkg; ++} ++ + static int add_main(void *ctx, struct apk_database *db, struct apk_string_array *args) + { + struct add_ctx *actx = (struct add_ctx *) ctx; +@@ -93,10 +126,6 @@ static int add_main(void *ctx, struct apk_database *db, struct apk_string_array + + if (actx->virtpkg) { + apk_blob_t b = APK_BLOB_STR(actx->virtpkg); +- struct tm tm; +- time_t now; +- char ver[32]; +- + apk_blob_pull_dep(&b, db, &virtdep); + if (APK_BLOB_IS_NULL(b) || virtdep.conflict || + virtdep.result_mask != APK_DEPMASK_ANY || +@@ -104,24 +133,14 @@ static int add_main(void *ctx, struct apk_database *db, struct apk_string_array + apk_error("%s: bad package specifier"); + return -1; + } +- + if (virtdep.name->name[0] != '.' && non_repository_check(db)) + return -1; + +- now = apk_time(); +- localtime_r(&now, &tm); +- strftime(ver, sizeof ver, "%Y%m%d.%H%M%S", &tm); +- +- virtpkg = apk_pkg_new(); +- if (virtpkg == NULL) { ++ virtpkg = create_virtual_package(db, virtdep.name); ++ if (!virtpkg) { + apk_error("Failed to allocate virtual meta package"); + return -1; + } +- virtpkg->name = virtdep.name; +- apk_blob_checksum(APK_BLOB_STR(ver), apk_checksum_default(), &virtpkg->csum); +- virtpkg->version = apk_blob_atomize(APK_BLOB_STR(ver)); +- virtpkg->description = strdup("virtual meta package"); +- virtpkg->arch = apk_blob_atomize(APK_BLOB_STR("noarch")); + + virtdep.result_mask = APK_VERSION_EQUAL; + virtdep.version = virtpkg->version; +-- +2.22.0 + |