From patchwork Wed Sep 16 08:09:43 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannu Nyman X-Patchwork-Id: 518287 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 14D4C14016A for ; Wed, 16 Sep 2015 18:10:17 +1000 (AEST) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 8413128B43B; Wed, 16 Sep 2015 10:08:56 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 66BFE283CAB for ; Wed, 16 Sep 2015 10:08:49 +0200 (CEST) X-policyd-weight: using cached result; rate: -5.5 Received: from filtteri2.pp.htv.fi (filtteri2.pp.htv.fi [213.243.153.185]) by arrakis.dune.hu (Postfix) with ESMTP for ; Wed, 16 Sep 2015 10:08:47 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by filtteri2.pp.htv.fi (Postfix) with ESMTP id 3101A19BED0; Wed, 16 Sep 2015 11:09:57 +0300 (EEST) X-Virus-Scanned: Debian amavisd-new at pp.htv.fi Received: from smtp5.welho.com ([213.243.153.39]) by localhost (filtteri2.pp.htv.fi [213.243.153.185]) (amavisd-new, port 10024) with ESMTP id LtgpUwsBOiVd; Wed, 16 Sep 2015 11:09:53 +0300 (EEST) Received: from localhost.localdomain (87-100-236-80.bb.dnainternet.fi [87.100.236.80]) by smtp5.welho.com (Postfix) with ESMTP id 59A3E5BC004; Wed, 16 Sep 2015 11:09:53 +0300 (EEST) From: Hannu Nyman To: openwrt-devel@lists.openwrt.org Date: Wed, 16 Sep 2015 11:09:43 +0300 Message-Id: <1442390983-10903-1-git-send-email-hannu.nyman@iki.fi> X-Mailer: git-send-email 2.1.4 Cc: Hannu Nyman Subject: [OpenWrt-Devel] [PATCH v2] opkg: Extend 'opkg list' command to optionally display package size X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" 'opkg list' command only displays the available packages' name, version and description. It would be useful to also see the approximate size of the available package. This patch extends "opkg list" command with "--size" to optionally show also the *.ipk size. * Default behaviour is to list the available packages as earlier: "name - version - description" * with "--size" the output of is "name - version - size - description". Signed-off-by: Hannu Nyman --- Patch v2: bump opkg PKG_RELEASE and rebase This patch superseeds https://patchwork.ozlabs.org/patch/512231/ Example: root@OpenWrt:~# opkg list kr* krb5-client - 1.13.1-1 - Kerberos 5 Client krb5-libs - 1.13.1-1 - Kerberos 5 Shared Libraries krb5-server - 1.13.1-1 - Kerberos 5 Server root@OpenWrt:~# opkg list --size kr* krb5-client - 1.13.1-1 - 37297 - Kerberos 5 Client krb5-libs - 1.13.1-1 - 667427 - Kerberos 5 Shared Libraries krb5-server - 1.13.1-1 - 122460 - Kerberos 5 Server Example implementation that utilises this opkg change to show the .ipk size to the user in GUI: https://github.com/openwrt/luci/issues/19#issuecomment-136397807 Index: package/system/opkg/Makefile =================================================================== --- package/system/opkg/Makefile (revision 46946) +++ package/system/opkg/Makefile (working copy) @@ -12,7 +12,7 @@ PKG_NAME:=opkg PKG_REV:=9c97d5ecd795709c8584e972bfdf3aee3a5b846d PKG_VERSION:=$(PKG_REV) -PKG_RELEASE:=9 +PKG_RELEASE:=10 PKG_SOURCE_PROTO:=git PKG_SOURCE_VERSION:=$(PKG_REV) Index: package/system/opkg/patches/250-add-print-package-size.patch =================================================================== --- package/system/opkg/patches/250-add-print-package-size.patch (revision 0) +++ package/system/opkg/patches/250-add-print-package-size.patch (working copy) @@ -0,0 +1,74 @@ +--- a/libopkg/opkg_conf.c ++++ b/libopkg/opkg_conf.c +@@ -69,6 +69,7 @@ opkg_option_t options[] = { + { "proxy_passwd", OPKG_OPT_TYPE_STRING, &_conf.proxy_passwd }, + { "proxy_user", OPKG_OPT_TYPE_STRING, &_conf.proxy_user }, + { "query-all", OPKG_OPT_TYPE_BOOL, &_conf.query_all }, ++ { "size", OPKG_OPT_TYPE_BOOL, &_conf.size }, + { "tmp_dir", OPKG_OPT_TYPE_STRING, &_conf.tmp_dir }, + { "verbosity", OPKG_OPT_TYPE_INT, &_conf.verbosity }, + #if defined(HAVE_OPENSSL) +--- a/libopkg/opkg_conf.h ++++ b/libopkg/opkg_conf.h +@@ -88,6 +88,7 @@ struct opkg_conf + int query_all; + int verbosity; + int noaction; ++ int size; + int download_only; + char *cache; + +--- a/src/opkg-cl.c ++++ b/src/opkg-cl.c +@@ -52,6 +52,7 @@ enum { + ARGS_OPT_AUTOREMOVE, + ARGS_OPT_CACHE, + ARGS_OPT_FORCE_SIGNATURE, ++ ARGS_OPT_SIZE, + }; + + static struct option long_options[] = { +@@ -98,6 +99,7 @@ static struct option long_options[] = { + {"offline-root", 1, 0, 'o'}, + {"add-arch", 1, 0, ARGS_OPT_ADD_ARCH}, + {"add-dest", 1, 0, ARGS_OPT_ADD_DEST}, ++ {"size", 0, 0, ARGS_OPT_SIZE}, + {"test", 0, 0, ARGS_OPT_NOACTION}, + {"tmp-dir", 1, 0, 't'}, + {"tmp_dir", 1, 0, 't'}, +@@ -212,6 +214,9 @@ args_parse(int argc, char *argv[]) + } + free(tuple); + break; ++ case ARGS_OPT_SIZE: ++ conf->size = 1; ++ break; + case ARGS_OPT_NOACTION: + conf->noaction = 1; + break; +@@ -315,6 +320,7 @@ usage() + printf("\t--download-only No action -- download only\n"); + printf("\t--nodeps Do not follow dependencies\n"); + printf("\t--nocase Perform case insensitive pattern matching\n"); ++ printf("\t--size Print package size when listing available packages\n"); + printf("\t--force-removal-of-dependent-packages\n"); + printf("\t Remove package and all dependencies\n"); + printf("\t--autoremove Remove packages that were installed\n"); +--- a/libopkg/opkg_cmd.c ++++ b/libopkg/opkg_cmd.c +@@ -47,10 +47,12 @@ static void + print_pkg(pkg_t *pkg) + { + char *version = pkg_version_str_alloc(pkg); ++ printf("%s - %s", pkg->name, version); ++ if (conf->size) ++ printf(" - %lu", pkg->size); + if (pkg->description) +- printf("%s - %s - %s\n", pkg->name, version, pkg->description); +- else +- printf("%s - %s\n", pkg->name, version); ++ printf(" - %s", pkg->description); ++ printf("\n"); + free(version); + } +