summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/apk-tools/APKBUILD16
-rw-r--r--system/apk-tools/deep.patch50
-rw-r--r--system/apk-tools/list.patch24
-rw-r--r--system/apk-tools/pmmx.patch2
-rw-r--r--system/apk-tools/search.patch29
-rw-r--r--system/apk-tools/virtual.patch109
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
+