[yocto] [PATCH] libopkg: Add disable_intercepts option to opkg.conf
Alejandro del Castillo
alejandro.delcastillo at ni.com
Wed Jan 6 15:56:40 PST 2016
On 01/06/2016 05:07 PM, Haris Okanovic wrote:
> When set, this option disables interception and deferral of certain
> utilities (E.g. depmod, ldconfig) when called from maintainer scripts
> (E.g. postinst). Disabled by default to maintain old behavior.
>
> Append "option disable_intercepts 1" to opkg.conf to set it.
>
> Testing:
> * Installed package containing postinst script and verified
> intercept prep/finalize does not run via DEBUG output.
> * Ran `make check` with option set in the test suite's opkg.conf,
> no additional failures.
>
> Yocto bug: https://bugzilla.yoctoproject.org/show_bug.cgi?id=8837
>
> Signed-off-by: Haris Okanovic <haris.okanovic at ni.com>
> Cc: Alejandro del Castillo <alejandro.delcastillo at ni.com>
> Cc: Paul Barker <paul at paulbarker.me.uk>
> ---
> libopkg/opkg_cmd.c | 22 ++++++++++++++--------
> libopkg/opkg_conf.c | 1 +
> libopkg/opkg_conf.h | 1 +
> 3 files changed, 16 insertions(+), 8 deletions(-)
>
> diff --git a/libopkg/opkg_cmd.c b/libopkg/opkg_cmd.c
> index 050e6ec..ff3dcc0 100644
> --- a/libopkg/opkg_cmd.c
> +++ b/libopkg/opkg_cmd.c
> @@ -328,7 +328,7 @@ static int opkg_configure_packages(char *pkg_name)
> pkg_vec_t *all, *ordered, *visited;
> unsigned int i;
> pkg_t *pkg;
> - opkg_intercept_t ic;
> + opkg_intercept_t ic = NULL;
> int r, err = 0;
>
> if (opkg_config->offline_root && !opkg_config->force_postinstall) {
> @@ -352,10 +352,13 @@ static int opkg_configure_packages(char *pkg_name)
> opkg_recurse_pkgs_in_order(pkg, all, visited, ordered);
> }
>
> - ic = opkg_prep_intercepts();
> - if (ic == NULL) {
> - err = -1;
> - goto error;
> + if (!opkg_config->disable_intercepts) {
> + ic = opkg_prep_intercepts();
> + if (ic == NULL) {
> + err = -1;
> + goto error;
> + }
> + opkg_msg(DEBUG, "Intercepts enabled; statedir=\"%s\"\n", ic->statedir);
> }
>
> for (i = 0; i < ordered->len; i++) {
> @@ -379,9 +382,12 @@ static int opkg_configure_packages(char *pkg_name)
> }
> }
>
> - r = opkg_finalize_intercepts(ic);
> - if (r != 0)
> - err = -1;
> + if (!opkg_config->disable_intercepts) {
> + opkg_msg(DEBUG, "Finalizing intercepts\n");
> + r = opkg_finalize_intercepts(ic);
> + if (r != 0)
> + err = -1;
> + }
>
> error:
> pkg_vec_free(all);
> diff --git a/libopkg/opkg_conf.c b/libopkg/opkg_conf.c
> index f52a4db..2d2f4f7 100644
> --- a/libopkg/opkg_conf.c
> +++ b/libopkg/opkg_conf.c
> @@ -85,6 +85,7 @@ static opkg_option_t options[] = {
> {"overwrite_no_owner", OPKG_OPT_TYPE_BOOL, &_conf.overwrite_no_owner},
> {"combine", OPKG_OPT_TYPE_BOOL, &_conf.combine},
> {"cache_local_files", OPKG_OPT_TYPE_BOOL, &_conf.cache_local_files},
> + {"disable_intercepts", OPKG_OPT_TYPE_BOOL, &_conf.disable_intercepts},
> #if defined(HAVE_OPENSSL)
> {"signature_ca_file", OPKG_OPT_TYPE_STRING, &_conf.signature_ca_file},
> {"signature_ca_path", OPKG_OPT_TYPE_STRING, &_conf.signature_ca_path},
> diff --git a/libopkg/opkg_conf.h b/libopkg/opkg_conf.h
> index 7460ca2..5421044 100644
> --- a/libopkg/opkg_conf.h
> +++ b/libopkg/opkg_conf.h
> @@ -107,6 +107,7 @@ typedef struct opkg_conf {
> int volatile_cache;
> int combine;
> int cache_local_files;
> + int disable_intercepts;
> int host_cache_dir;
>
> /* ssl options: used only when opkg is configured with '--enable-curl',
>
Wrong ml, could you resend to opkg-devel at googlegroups.com? Also, you no longer
needed to CC Paul
--
Cheers,
Alejandro
More information about the yocto
mailing list