summaryrefslogtreecommitdiffstats
path: root/main/apk-tools/0002-apk-implement-progress-fd-to-write-progress-to-a-spe.patch
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2012-10-09 13:57:36 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2012-10-09 13:57:46 +0000
commitbbbce5f086af68543ec34f1a91529c4bc4558380 (patch)
tree86ce5815fa689cfd324437259f2c6868acacfde3 /main/apk-tools/0002-apk-implement-progress-fd-to-write-progress-to-a-spe.patch
parente6272288b1b8f6efc87475d39f65841ac8c08d52 (diff)
downloadaports-bbbce5f086af68543ec34f1a91529c4bc4558380.tar.bz2
aports-bbbce5f086af68543ec34f1a91529c4bc4558380.tar.xz
main/apk-tools: upgrade to 2.3.3
Diffstat (limited to 'main/apk-tools/0002-apk-implement-progress-fd-to-write-progress-to-a-spe.patch')
-rw-r--r--main/apk-tools/0002-apk-implement-progress-fd-to-write-progress-to-a-spe.patch176
1 files changed, 0 insertions, 176 deletions
diff --git a/main/apk-tools/0002-apk-implement-progress-fd-to-write-progress-to-a-spe.patch b/main/apk-tools/0002-apk-implement-progress-fd-to-write-progress-to-a-spe.patch
deleted file mode 100644
index 7f57ac78d..000000000
--- a/main/apk-tools/0002-apk-implement-progress-fd-to-write-progress-to-a-spe.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From 43850a126b94690302bc2564905141b077b490e7 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
-Date: Thu, 20 Sep 2012 15:12:15 +0300
-Subject: [PATCH] apk: implement --progress-fd to write progress to a
- specified fd
-
----
- src/apk.c | 5 +++++
- src/apk_database.h | 4 ++--
- src/database.c | 1 +
- src/solver.c | 44 +++++++++++++++++++++++++++-----------------
- 4 files changed, 35 insertions(+), 19 deletions(-)
-
-diff --git a/src/apk.c b/src/apk.c
-index 3bf1154..0404831 100644
---- a/src/apk.c
-+++ b/src/apk.c
-@@ -48,6 +48,7 @@ static struct apk_option generic_options[] = {
- { 'f', "force", "Do what was asked even if it looks dangerous" },
- { 'U', "update-cache", "Update the repository cache" },
- { 0x101, "progress", "Show a progress bar" },
-+ { 0x10f, "progress-fd", "Write progress to fd", required_argument, "FD" },
- { 0x110, "no-progress", "Disable progress bar even for TTYs" },
- { 0x102, "clean-protected", "Do not create .apk-new files to "
- "configuration dirs" },
-@@ -265,6 +266,7 @@ static void setup_terminal(void)
- {
- setvbuf(stderr, NULL, _IOLBF, BUFSIZ);
- signal(SIGWINCH, on_sigwinch);
-+ signal(SIGPIPE, SIG_IGN);
- }
-
- static void setup_automatic_flags(void)
-@@ -383,6 +385,9 @@ int main(int argc, char **argv)
- case 0x110:
- apk_flags &= ~APK_PROGRESS;
- break;
-+ case 0x10f:
-+ dbopts.progress_fd = atoi(optarg);
-+ break;
- case 0x102:
- apk_flags |= APK_CLEAN_PROTECTED;
- break;
-diff --git a/src/apk_database.h b/src/apk_database.h
-index 235030c..4628c23 100644
---- a/src/apk_database.h
-+++ b/src/apk_database.h
-@@ -108,7 +108,7 @@ struct apk_repository_list {
- };
-
- struct apk_db_options {
-- int lock_wait;
-+ int lock_wait, progress_fd;
- unsigned long open_flags;
- char *root;
- char *arch;
-@@ -127,7 +127,7 @@ struct apk_repository_tag {
-
- struct apk_database {
- char *root;
-- int root_fd, lock_fd, cache_fd, cachetmp_fd, keys_fd;
-+ int root_fd, lock_fd, cache_fd, cachetmp_fd, keys_fd, progress_fd;
- unsigned num_repos, num_repo_tags;
- const char *cache_dir;
- char *cache_remount_dir;
-diff --git a/src/database.c b/src/database.c
-index d1a8f1a..e130f0b 100644
---- a/src/database.c
-+++ b/src/database.c
-@@ -1359,6 +1359,7 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts)
- int r, fd, write_arch = FALSE;
-
- memset(db, 0, sizeof(*db));
-+ db->progress_fd = dbopts->progress_fd;
- if (apk_flags & APK_SIMULATE) {
- dbopts->open_flags &= ~(APK_OPENF_CREATE | APK_OPENF_WRITE);
- dbopts->open_flags |= APK_OPENF_READ;
-diff --git a/src/solver.c b/src/solver.c
-index 457d5ff..ec44958 100644
---- a/src/solver.c
-+++ b/src/solver.c
-@@ -10,6 +10,7 @@
- */
-
- #include <stdint.h>
-+#include <unistd.h>
- #include "apk_defines.h"
- #include "apk_database.h"
- #include "apk_package.h"
-@@ -1650,23 +1651,34 @@ struct progress {
- struct apk_stats done;
- struct apk_stats total;
- struct apk_package *pkg;
-- size_t count;
-+ size_t percent;
-+ int progress_fd;
- };
-
--static void progress_cb(void *ctx, size_t progress)
-+static void update_progress(struct progress *prog, size_t percent)
-+{
-+ if (prog->percent == percent)
-+ return;
-+ prog->percent = percent;
-+ if (apk_flags & APK_PROGRESS)
-+ draw_progress(percent);
-+ if (prog->progress_fd != 0) {
-+ char buf[8];
-+ size_t n = snprintf(buf, sizeof(buf), "%d\n", percent);
-+ write(prog->progress_fd, buf, n);
-+ }
-+}
-+
-+static void progress_cb(void *ctx, size_t pkg_percent)
- {
- struct progress *prog = (struct progress *) ctx;
-- size_t partial = 0, count;
-+ size_t partial = 0, percent;
-
- if (prog->pkg != NULL)
-- partial = muldiv(progress, prog->pkg->installed_size, APK_PROGRESS_SCALE);
--
-- count = muldiv(100, prog->done.bytes + prog->done.packages + partial,
-- prog->total.bytes + prog->total.packages);
--
-- if (prog->count != count)
-- draw_progress(count);
-- prog->count = count;
-+ partial = muldiv(pkg_percent, prog->pkg->installed_size, APK_PROGRESS_SCALE);
-+ percent = muldiv(100, prog->done.bytes + prog->done.packages + partial,
-+ prog->total.bytes + prog->total.packages);
-+ update_progress(prog, percent);
- }
-
- static int dump_packages(struct apk_changeset *changeset,
-@@ -1784,6 +1796,7 @@ int apk_solver_commit_changeset(struct apk_database *db,
-
- /* Count what needs to be done */
- memset(&prog, 0, sizeof(prog));
-+ prog.progress_fd = db->progress_fd;
- for (i = 0; i < changeset->changes->num; i++) {
- change = &changeset->changes->item[i];
- count_change(change, &prog.total);
-@@ -1831,17 +1844,15 @@ int apk_solver_commit_changeset(struct apk_database *db,
- change = &changeset->changes->item[i];
-
- print_change(db, change, i, changeset->changes->num);
-- if (apk_flags & APK_PROGRESS)
-- draw_progress(prog.count);
- prog.pkg = change->newpkg;
-+ progress_cb(&prog, 0);
-
- if (!(apk_flags & APK_SIMULATE)) {
- if (change->oldpkg != change->newpkg ||
- (change->reinstall && pkg_available(db, change->newpkg)))
- r = apk_db_install_pkg(db,
- change->oldpkg, change->newpkg,
-- (apk_flags & APK_PROGRESS) ? progress_cb : NULL,
-- &prog);
-+ progress_cb, &prog);
- if (r != 0)
- break;
- if (change->newpkg)
-@@ -1850,8 +1861,7 @@ int apk_solver_commit_changeset(struct apk_database *db,
-
- count_change(change, &prog.done);
- }
-- if (apk_flags & APK_PROGRESS)
-- draw_progress(100);
-+ update_progress(&prog, 100);
-
- run_triggers(db);
-
---
-1.7.12.2
-