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

John Crispin blogic at openwrt.org
Wed Sep 16 04:18:55 EDT 2015


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 at iki.fi>
> 
> ---
> Patch v2: bump opkg PKG_RELEASE and rebase
> 
> This patch superseeds https://patchwork.ozlabs.org/patch/512231/
> 
> Example:
> root at 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 at 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 at lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
> 
_______________________________________________
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