Patchwork [v2] opkg: Fix add-exclude.patch

login
register
mail settings
Submitter Paul Barker
Date Feb. 19, 2014, 3:15 p.m.
Message ID <1392822917-23688-1-git-send-email-paul@paulbarker.me.uk>
Download mbox | patch
Permalink /patch/66999/
State Accepted
Commit d32189a11e03335548f3e81c4b1cccf23e000a34
Headers show

Comments

Paul Barker - Feb. 19, 2014, 3:15 p.m.
The case statement for ARGS_OPT_ADD_EXCLUDE added to the argument handling
switch statement in opkg was missing a "break;" at the end, so it was falling
through into the handler for ARGS_OPT_NOACTION. Thus when "--add-exclude" was
specified on the command line it was as if "--noaction" was also being
specified. This appears to be the root cause of YP bug 5311.

Tested using the case described by Alexandru Georgescu in YP bug 5311:

    MACHINE ??= "qemux86"
    IMAGE_INSTALL_append = " man"
    PACKAGE_EXCLUDE = "man"
    PACKAGE_CLASSES ?= "package_ipk"

Built image and boot tested on qemu, ensured that man was not installed but the
rest of the system was installed correctly.

Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
Cc: Mark Hatle <mark.hatle@windriver.com>
Cc: Saul Wold <saul.wold@intel.com>
Cc: Alexandru Georgescu <alexandru.c.georgescu@intel.com>
---
Changes:

V2: Used 'editdiff' to ensure the patch offsets were updated.

 meta/recipes-devtools/opkg/opkg/add-exclude.patch | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
Mark Hatle - Feb. 19, 2014, 3:19 p.m.
On 2/19/14, 9:15 AM, Paul Barker wrote:
> The case statement for ARGS_OPT_ADD_EXCLUDE added to the argument handling
> switch statement in opkg was missing a "break;" at the end, so it was falling
> through into the handler for ARGS_OPT_NOACTION. Thus when "--add-exclude" was
> specified on the command line it was as if "--noaction" was also being
> specified. This appears to be the root cause of YP bug 5311.
>
> Tested using the case described by Alexandru Georgescu in YP bug 5311:
>
>      MACHINE ??= "qemux86"
>      IMAGE_INSTALL_append = " man"
>      PACKAGE_EXCLUDE = "man"
>      PACKAGE_CLASSES ?= "package_ipk"
>
> Built image and boot tested on qemu, ensured that man was not installed but the
> rest of the system was installed correctly.
>
> Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
> Cc: Mark Hatle <mark.hatle@windriver.com>

Acked-by: Mark Hatle <mark.hatle@windriver.com>

> Cc: Saul Wold <saul.wold@intel.com>
> Cc: Alexandru Georgescu <alexandru.c.georgescu@intel.com>
> ---
> Changes:
>
> V2: Used 'editdiff' to ensure the patch offsets were updated.
>
>   meta/recipes-devtools/opkg/opkg/add-exclude.patch | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-devtools/opkg/opkg/add-exclude.patch b/meta/recipes-devtools/opkg/opkg/add-exclude.patch
> index 8489058..8d328d5 100644
> --- a/meta/recipes-devtools/opkg/opkg/add-exclude.patch
> +++ b/meta/recipes-devtools/opkg/opkg/add-exclude.patch
> @@ -84,7 +84,7 @@ Index: trunk/src/opkg-cl.c
>    	{"test", 0, 0, ARGS_OPT_NOACTION},
>    	{"tmp-dir", 1, 0, 't'},
>    	{"tmp_dir", 1, 0, 't'},
> -@@ -198,6 +200,17 @@ args_parse(int argc, char *argv[])
> +@@ -198,6 +200,18 @@ args_parse(int argc, char *argv[])
>    			}
>    			free(tuple);
>    			break;
> @@ -99,10 +99,11 @@ Index: trunk/src/opkg-cl.c
>   +				conf->exclude_list = realloc(conf->exclude_list, sizeof(char *) * conf->exclude_count);
>   +				conf->exclude_list[conf->exclude_count - 1] = tuple;
>   +			}
> ++			break;
>    		case ARGS_OPT_NOACTION:
>    			conf->noaction = 1;
>    			break;
> -@@ -282,6 +295,7 @@ usage()
> +@@ -282,6 +296,7 @@ usage()
>    	printf("\t--offline-root <dir>	offline installation of packages.\n");
>    	printf("\t--add-arch <arch>:<prio>	Register architecture with given priority\n");
>    	printf("\t--add-dest <name>:<path>	Register destination with given path\n");
>

Patch

diff --git a/meta/recipes-devtools/opkg/opkg/add-exclude.patch b/meta/recipes-devtools/opkg/opkg/add-exclude.patch
index 8489058..8d328d5 100644
--- a/meta/recipes-devtools/opkg/opkg/add-exclude.patch
+++ b/meta/recipes-devtools/opkg/opkg/add-exclude.patch
@@ -84,7 +84,7 @@  Index: trunk/src/opkg-cl.c
  	{"test", 0, 0, ARGS_OPT_NOACTION},
  	{"tmp-dir", 1, 0, 't'},
  	{"tmp_dir", 1, 0, 't'},
-@@ -198,6 +200,17 @@ args_parse(int argc, char *argv[])
+@@ -198,6 +200,18 @@ args_parse(int argc, char *argv[])
  			}
  			free(tuple);
  			break;
@@ -99,10 +99,11 @@  Index: trunk/src/opkg-cl.c
 +				conf->exclude_list = realloc(conf->exclude_list, sizeof(char *) * conf->exclude_count);
 +				conf->exclude_list[conf->exclude_count - 1] = tuple;
 +			}
++			break;
  		case ARGS_OPT_NOACTION:
  			conf->noaction = 1;
  			break;
-@@ -282,6 +295,7 @@ usage()
+@@ -282,6 +296,7 @@ usage()
  	printf("\t--offline-root <dir>	offline installation of packages.\n");
  	printf("\t--add-arch <arch>:<prio>	Register architecture with given priority\n");
  	printf("\t--add-dest <name>:<path>	Register destination with given path\n");