diff options
author | Martin Jansa <martin.jansa@gmail.com> | 2012-09-19 19:41:13 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-09-21 11:10:20 +0100 |
commit | 305993d818d5f64f40172093b1ca3f3ec0d530d7 (patch) | |
tree | 254e407e788d018a0d999b18e24eb9c5d7a29b64 /meta/recipes-devtools/opkg/opkg/0006-detect-circular-dependencies.patch | |
parent | 3e774a63e3426f07433af4955ddc0fd8c6999605 (diff) | |
download | ast2050-yocto-poky-305993d818d5f64f40172093b1ca3f3ec0d530d7.zip ast2050-yocto-poky-305993d818d5f64f40172093b1ca3f3ec0d530d7.tar.gz |
opkg: replace local patches with git patches submitted upstream
(From OE-Core rev: 1f1ae93d8cd5140028e86d92483e349868b4f3f6)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/opkg/opkg/0006-detect-circular-dependencies.patch')
-rw-r--r-- | meta/recipes-devtools/opkg/opkg/0006-detect-circular-dependencies.patch | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/meta/recipes-devtools/opkg/opkg/0006-detect-circular-dependencies.patch b/meta/recipes-devtools/opkg/opkg/0006-detect-circular-dependencies.patch new file mode 100644 index 0000000..5cf8618 --- /dev/null +++ b/meta/recipes-devtools/opkg/opkg/0006-detect-circular-dependencies.patch @@ -0,0 +1,117 @@ +From f434078a342435ae8a666b599d989c30d4c6a7f5 Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard.purdie@linuxfoundation.org> +Date: Sun, 18 Dec 2011 23:54:30 +0000 +Subject: [PATCH 6/7] detect circular dependencies + +Add logic to detect circular dependencies. If we see any dependency from +any given parent twice, ignore it the second time and print a notice message +that we did so. + +Upstream-Status: Submitted +http://code.google.com/p/opkg/issues/detail?id=93 + +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + libopkg/opkg_install.c | 8 ++++++++ + libopkg/pkg.c | 2 ++ + libopkg/pkg.h | 1 + + libopkg/pkg_depends.c | 3 +-- + libopkg/pkg_depends.h | 1 + + 5 files changed, 13 insertions(+), 2 deletions(-) + +diff --git a/libopkg/opkg_install.c b/libopkg/opkg_install.c +index 1632066..0216914 100644 +--- a/libopkg/opkg_install.c ++++ b/libopkg/opkg_install.c +@@ -84,8 +84,14 @@ satisfy_dependencies_for(pkg_t *pkg) + /* The package was uninstalled when we started, but another + dep earlier in this loop may have depended on it and pulled + it in, so check first. */ ++ if (is_pkg_in_pkg_vec(dep->wanted_by, pkg)) { ++ opkg_msg(NOTICE,"Breaking cicular dependency on %s for %s.\n", pkg->name, dep->name); ++ continue; ++ } + if ((dep->state_status != SS_INSTALLED) && (dep->state_status != SS_UNPACKED)) { + opkg_msg(DEBUG2,"Calling opkg_install_pkg.\n"); ++ if (!is_pkg_in_pkg_vec(dep->wanted_by, pkg)) ++ pkg_vec_insert(dep->wanted_by, pkg); + err = opkg_install_pkg(dep, 0); + /* mark this package as having been automatically installed to + * satisfy a dependency */ +@@ -115,6 +121,8 @@ satisfy_dependencies_for(pkg_t *pkg) + /* The package was uninstalled when we started, but another + dep earlier in this loop may have depended on it and pulled + it in, so check first. */ ++ if (!is_pkg_in_pkg_vec(dep->wanted_by, pkg)) ++ pkg_vec_insert(dep->wanted_by, pkg); + if ((dep->state_status != SS_INSTALLED) + && (dep->state_status != SS_UNPACKED)) { + opkg_msg(DEBUG2,"Calling opkg_install_pkg.\n"); +diff --git a/libopkg/pkg.c b/libopkg/pkg.c +index 6ccbde2..be486ee 100644 +--- a/libopkg/pkg.c ++++ b/libopkg/pkg.c +@@ -86,6 +86,7 @@ pkg_init(pkg_t *pkg) + pkg->section = NULL; + pkg->description = NULL; + pkg->state_want = SW_UNKNOWN; ++ pkg->wanted_by = pkg_vec_alloc(); + pkg->state_flag = SF_OK; + pkg->state_status = SS_NOT_INSTALLED; + pkg->depends_str = NULL; +@@ -191,6 +192,7 @@ pkg_deinit(pkg_t *pkg) + pkg->description = NULL; + + pkg->state_want = SW_UNKNOWN; ++ pkg_vec_free(pkg->wanted_by); + pkg->state_flag = SF_OK; + pkg->state_status = SS_NOT_INSTALLED; + +diff --git a/libopkg/pkg.h b/libopkg/pkg.h +index 775b656..5d468cb 100644 +--- a/libopkg/pkg.h ++++ b/libopkg/pkg.h +@@ -129,6 +129,7 @@ struct pkg + char *description; + char *tags; + pkg_state_want_t state_want; ++ pkg_vec_t *wanted_by; + pkg_state_flag_t state_flag; + pkg_state_status_t state_status; + char **depends_str; +diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c +index 36c76aa..a72eed7 100644 +--- a/libopkg/pkg_depends.c ++++ b/libopkg/pkg_depends.c +@@ -30,7 +30,6 @@ static int parseDepends(compound_depend_t *compound_depend, char * depend_str); + static depend_t * depend_init(void); + static char ** add_unresolved_dep(pkg_t * pkg, char ** the_lost, int ref_ndx); + static char ** merge_unresolved(char ** oldstuff, char ** newstuff); +-static int is_pkg_in_pkg_vec(pkg_vec_t * vec, pkg_t * pkg); + + static int pkg_installed_and_constraint_satisfied(pkg_t *pkg, void *cdata) + { +@@ -531,7 +530,7 @@ int pkg_dependence_satisfied(depend_t *depend) + return 0; + } + +-static int is_pkg_in_pkg_vec(pkg_vec_t * vec, pkg_t * pkg) ++int is_pkg_in_pkg_vec(pkg_vec_t * vec, pkg_t * pkg) + { + int i; + pkg_t ** pkgs = vec->pkgs; +diff --git a/libopkg/pkg_depends.h b/libopkg/pkg_depends.h +index b8072e2..ca0801f 100644 +--- a/libopkg/pkg_depends.h ++++ b/libopkg/pkg_depends.h +@@ -87,5 +87,6 @@ pkg_vec_t * pkg_hash_fetch_conflicts(pkg_t * pkg); + int pkg_dependence_satisfiable(depend_t *depend); + int pkg_dependence_satisfied(depend_t *depend); + const char* constraint_to_str(enum version_constraint c); ++int is_pkg_in_pkg_vec(pkg_vec_t * vec, pkg_t * pkg); + + #endif +-- +1.7.12 + |