[OpenWrt-Devel] [PATCH] opkg: Extend 'opkg list' command to optionally display package size
Hannu Nyman
hannu.nyman at iki.fi
Sun Aug 30 10:37:52 EDT 2015
'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 in the listing.
* Default behaviour is to print the list of available packages as earlier:
"name - version - description"
* with "--size" the output of is "name - version - size - description".
All current functionality should continue working without any change. Luci
might be extended to utilize the new options to e.g. answer
https://github.com/openwrt/luci/issues/19
Signed-off-by: Hannu Nyman < hannu.nyman at iki.fi>
---
Tested with ar71xx / WNDR3700:
opkg package size increase is minimal:
root at OpenWrt2:~# ls -l /bin/opkg
-rwxr-xr-x 1 root root 101532 Aug 29 23:05 /bin/opkg
root at OpenWrt2:~# opkg install
/tmp/opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9_ar71xx.ipk
Upgrading opkg on root from 9c97d5ecd795709c8584e972bfdf3aee3a5b846d-8 to
9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9...
Configuring opkg.
root at OpenWrt2:~# ls -l /bin/opkg
-rwxr-xr-x 1 root root 101548 Aug 29 23:05 /bin/opkg
--size works as expected:
(packages not from "packages" feed have been removed for clarity)
root at OpenWrt2:/tmp# opkg list j*
jansson - 2.7-1 - Jansson is a C library for encoding, decoding and
manipulating JSON data
joe - 4.0-4 - Joe is world-famous Wordstar like text editor, that also features
Emacs and Pico emulation
jpeg-tools - 9a-1 - The Independent JPEG Group's JPEG manipulation tools
json4lua - 0.9.53-1 - JSON and JSONRPC for Lua
root at OpenWrt2:/tmp# opkg list --size j*
jansson - 2.7-1 - 19182 - Jansson is a C library for encoding, decoding and
manipulating JSON data
joe - 4.0-4 - 173911 - Joe is world-famous Wordstar like text editor, that
also features
Emacs and Pico emulation
jpeg-tools - 9a-1 - 31188 - The Independent JPEG Group's JPEG manipulation tools
json4lua - 0.9.53-1 - 7205 - JSON and JSONRPC for Lua
-------------
https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/packages/packages/
jansson_2.7-1_ar71xx.ipk 26-Aug-2015
05:20 19182
joe_4.0-4_ar71xx.ipk 26-Aug-2015
05:20 173911
jpeg-tools_9a-1_ar71xx.ipk 26-Aug-2015
00:04 31188
json4lua_0.9.53-1_ar71xx.ipk 26-Aug-2015
05:21 7205
-------------- next part --------------
Index: package/system/opkg/Makefile
===================================================================
--- package/system/opkg/Makefile (revision 46751)
+++ package/system/opkg/Makefile (working copy)
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@@ -12,7 +12,7 @@
PKG_NAME:=opkg
PKG_REV:=9c97d5ecd795709c8584e972bfdf3aee3a5b846d
PKG_VERSION:=$(PKG_REV)
-PKG_RELEASE:=8
+PKG_RELEASE:=9
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'},
+@@ -207,6 +209,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;
+@@ -310,6 +315,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);
+ }
+
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list