'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.ny...@iki.fi>

---

Tested with ar71xx / WNDR3700:

opkg package size increase is minimal:

root@OpenWrt2:~# ls -l /bin/opkg
-rwxr-xr-x    1 root     root        101532 Aug 29 23:05 /bin/opkg

root@OpenWrt2:~# opkg install /tmp/opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9_ar71xx.ipk Upgrading opkg on root from 9c97d5ecd795709c8584e972bfdf3aee3a5b846d-8 to 9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9...
Configuring opkg.

root@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@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@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



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);
+ }
+ 
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to