diff mbox

[OpenWrt-Devel,v2] opkg: Extend 'opkg list' command to optionally display package size

Message ID 1442390983-10903-1-git-send-email-hannu.nyman@iki.fi
State Superseded
Headers show

Commit Message

Hannu Nyman Sept. 16, 2015, 8:09 a.m. UTC
'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 <hannu.nyman@iki.fi>

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

Comments

John Crispin Sept. 16, 2015, 8:18 a.m. UTC | #1
see inline ...

On 16/09/2015 10:09, Hannu Nyman wrote:
> '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 <hannu.nyman@iki.fi>
> 
> ---
> 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)

^^^ this is against the wrong base and git am does not apply it because
of that. how did you generate the patch ?



> @@ -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);
> + }
> + 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
John Crispin Sept. 16, 2015, 8:29 a.m. UTC | #2
On 16/09/2015 10:22, Hannu Nyman wrote:
> On 16.9.2015 11:18, John Crispin wrote:
>> see inline ...
>>
>> On 16/09/2015 10:09, Hannu Nyman wrote:
>>> Index: package/system/opkg/Makefile
>>> ===================================================================
>>> --- package/system/opkg/Makefile    (revision 46946)
>>> +++ package/system/opkg/Makefile    (working copy)
>> ^^^ this is against the wrong base and git am does not apply it because
>> of that. how did you generate the patch ?
>>
>>
> 
> perus@vb1504:/Openwrt/trunk$ svn diff package/system/opkg/ > opkg.patch

please dont remove the CC to the ML a very annoying habit.

once you send a patch that git am can apply i will merge it
diff mbox

Patch

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);
+ }
+