On Sun, Sep 30, 2012 at 11:06:35AM +0200, Martin Jansa wrote: > On Sat, Sep 29, 2012 at 07:19:16PM +0200, Martin Jansa wrote: > > * http://code.google.com/p/opkg/issues/detail?id=94 > > It needs a bit more testing, because for some reason I got > > | * satisfy_dependencies_for: Cannot satisfy the following dependencies for > packagegroup-shr-minimal-x: > | * xserver-xorg (= = 2:1.11.2-r11) * > > armv4t/Package looks ok > Package: xserver-xorg-module-exa > Version: 2:1.11.2-r11 > Depends: xserver-xorg (= 2:1.11.2-r11), libc6 (>= 2.16) > > and it works on target..
Found it and updated patch in upstream bug tracker, will send v3 after rebuilding from scratch.. Cheers, > > Signed-off-by: Martin Jansa <martin.ja...@gmail.com> > > --- > > .../0009-pkg_depends-fix-version-constraints.patch | 188 > > +++++++++++++++++++++ > > ...depends-fix-version_constraints_satisfied.patch | 37 ++++ > > meta/recipes-devtools/opkg/opkg_svn.bb | 4 +- > > 3 files changed, 228 insertions(+), 1 deletion(-) > > create mode 100644 > > meta/recipes-devtools/opkg/opkg/0009-pkg_depends-fix-version-constraints.patch > > create mode 100644 > > meta/recipes-devtools/opkg/opkg/0010-pkg_depends-fix-version_constraints_satisfied.patch > > > > diff --git > > a/meta/recipes-devtools/opkg/opkg/0009-pkg_depends-fix-version-constraints.patch > > > > b/meta/recipes-devtools/opkg/opkg/0009-pkg_depends-fix-version-constraints.patch > > new file mode 100644 > > index 0000000..27df307 > > --- /dev/null > > +++ > > b/meta/recipes-devtools/opkg/opkg/0009-pkg_depends-fix-version-constraints.patch > > @@ -0,0 +1,188 @@ > > +From b6a4d289499ac4c4def48401edadd775eccc387c Mon Sep 17 00:00:00 2001 > > +From: Martin Jansa <martin.ja...@gmail.com> > > +Date: Sat, 29 Sep 2012 11:38:03 +0200 > > +Subject: [PATCH 9/9] pkg_depends: fix version constraints > > + > > +* factor parsing version constraint to str_to_constraint and use that > > + from pkg (pkg_version_satisfied) and also pkg_depends (parseDepends) > > +* fix constraint_to_str(), for EARLIER and LATER it was using '<' and > > + '>' which is parsed later as EARLIER_EQUAL and LATER_EQUAL > > +* show notice when deprecated '<' or '>' is used > > + > > +Upstream-Status: Submitted > > +http://code.google.com/p/opkg/issues/detail?id=94 > > + > > +Signed-off-by: Martin Jansa <martin.ja...@gmail.com> > > +--- > > + libopkg/pkg.c | 36 +++++++++++-------------- > > + libopkg/pkg_depends.c | 73 > > +++++++++++++++++++++++++++++---------------------- > > + libopkg/pkg_depends.h | 1 + > > + 3 files changed, 59 insertions(+), 51 deletions(-) > > + > > +diff --git a/libopkg/pkg.c b/libopkg/pkg.c > > +index 255c673..1e98b9c 100644 > > +--- a/libopkg/pkg.c > > ++++ b/libopkg/pkg.c > > +@@ -968,28 +968,24 @@ pkg_version_satisfied(pkg_t *it, pkg_t *ref, const > > char *op) > > + int r; > > + > > + r = pkg_compare_versions(it, ref); > > ++ char *op2 = op; > > ++ enum version_constraint constraint = str_to_constraint(&op2); > > + > > +- if (strcmp(op, "<=") == 0 || strcmp(op, "<") == 0) { > > +- return r <= 0; > > +- } > > +- > > +- if (strcmp(op, ">=") == 0 || strcmp(op, ">") == 0) { > > +- return r >= 0; > > +- } > > +- > > +- if (strcmp(op, "<<") == 0) { > > +- return r < 0; > > +- } > > +- > > +- if (strcmp(op, ">>") == 0) { > > +- return r > 0; > > +- } > > +- > > +- if (strcmp(op, "=") == 0) { > > +- return r == 0; > > ++ switch (constraint) > > ++ { > > ++ case EARLIER_EQUAL: > > ++ return r <= 0; > > ++ case LATER_EQUAL: > > ++ return r >= 0; > > ++ case EARLIER: > > ++ return r < 0; > > ++ case LATER: > > ++ return r > 0; > > ++ case EQUAL: > > ++ return r == 0; > > ++ case NONE: > > ++ opkg_msg(ERROR, "Unknown operator: %s.\n", op); > > + } > > +- > > +- opkg_msg(ERROR, "Unknown operator: %s.\n", op); > > + return 0; > > + } > > + > > +diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c > > +index a72eed7..4b7a2a5 100644 > > +--- a/libopkg/pkg_depends.c > > ++++ b/libopkg/pkg_depends.c > > +@@ -781,7 +781,7 @@ constraint_to_str(enum version_constraint c) > > + case NONE: > > + return ""; > > + case EARLIER: > > +- return "< "; > > ++ return "<< "; > > + case EARLIER_EQUAL: > > + return "<= "; > > + case EQUAL: > > +@@ -789,12 +789,51 @@ constraint_to_str(enum version_constraint c) > > + case LATER_EQUAL: > > + return ">= "; > > + case LATER: > > +- return "> "; > > ++ return ">> "; > > + } > > + > > + return ""; > > + } > > + > > ++enum version_constraint > > ++str_to_constraint(char **str) > > ++{ > > ++ if(!strncmp(*str, "<<", 2)){ > > ++ *str += 2; > > ++ return EARLIER; > > ++ } > > ++ else if(!strncmp(*str, "<=", 2)){ > > ++ *str += 2; > > ++ return EARLIER_EQUAL; > > ++ } > > ++ else if(!strncmp(*str, ">=", 2)){ > > ++ *str += 2; > > ++ return LATER_EQUAL; > > ++ } > > ++ else if(!strncmp(*str, ">>", 2)){ > > ++ *str += 2; > > ++ return LATER; > > ++ } > > ++ else if(!strncmp(*str, "=", 1)){ > > ++ *str++; > > ++ return EQUAL; > > ++ } > > ++ /* should these be here to support deprecated designations; dpkg does */ > > ++ else if(!strncmp(*str, "<", 1)){ > > ++ *str++; > > ++ opkg_msg(NOTICE, "Deprecated version constraint '<' was used > > with the same meaning as '<='. Use '<<' for EARLIER constraint.\n"); > > ++ return EARLIER_EQUAL; > > ++ } > > ++ else if(!strncmp(*str, ">", 1)){ > > ++ *str++; > > ++ opkg_msg(NOTICE, "Deprecated version constraint '>' was used > > with the same meaning as '>='. Use '>>' for LATER constraint.\n"); > > ++ return LATER_EQUAL; > > ++ } > > ++ else { > > ++ return NONE; > > ++ } > > ++} > > ++ > > + /* > > + * Returns a printable string for pkg's dependency at the specified idx. > > The > > + * resultant string must be passed to free() by the caller. > > +@@ -949,35 +988,7 @@ static int parseDepends(compound_depend_t > > *compound_depend, > > + /* extract constraint and version */ > > + if(*src == '('){ > > + src++; > > +- if(!strncmp(src, "<<", 2)){ > > +- possibilities[i]->constraint = EARLIER; > > +- src += 2; > > +- } > > +- else if(!strncmp(src, "<=", 2)){ > > +- possibilities[i]->constraint = EARLIER_EQUAL; > > +- src += 2; > > +- } > > +- else if(!strncmp(src, ">=", 2)){ > > +- possibilities[i]->constraint = LATER_EQUAL; > > +- src += 2; > > +- } > > +- else if(!strncmp(src, ">>", 2)){ > > +- possibilities[i]->constraint = LATER; > > +- src += 2; > > +- } > > +- else if(!strncmp(src, "=", 1)){ > > +- possibilities[i]->constraint = EQUAL; > > +- src++; > > +- } > > +- /* should these be here to support deprecated designations; dpkg > > does */ > > +- else if(!strncmp(src, "<", 1)){ > > +- possibilities[i]->constraint = EARLIER_EQUAL; > > +- src++; > > +- } > > +- else if(!strncmp(src, ">", 1)){ > > +- possibilities[i]->constraint = LATER_EQUAL; > > +- src++; > > +- } > > ++ possibilities[i]->constraint = str_to_constraint(&src); > > + > > + /* now we have any constraint, pass space to version string */ > > + while(isspace(*src)) src++; > > +diff --git a/libopkg/pkg_depends.h b/libopkg/pkg_depends.h > > +index ca0801f..685a722 100644 > > +--- a/libopkg/pkg_depends.h > > ++++ b/libopkg/pkg_depends.h > > +@@ -87,6 +87,7 @@ 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); > > ++enum version_constraint str_to_constraint(char **str); > > + int is_pkg_in_pkg_vec(pkg_vec_t * vec, pkg_t * pkg); > > + > > + #endif > > +-- > > +1.7.12 > > + > > diff --git > > a/meta/recipes-devtools/opkg/opkg/0010-pkg_depends-fix-version_constraints_satisfied.patch > > > > b/meta/recipes-devtools/opkg/opkg/0010-pkg_depends-fix-version_constraints_satisfied.patch > > new file mode 100644 > > index 0000000..841b508 > > --- /dev/null > > +++ > > b/meta/recipes-devtools/opkg/opkg/0010-pkg_depends-fix-version_constraints_satisfied.patch > > @@ -0,0 +1,37 @@ > > +From 51a45a02a32064c14e0d4d6ef41c1a6276432b29 Mon Sep 17 00:00:00 2001 > > +From: Martin Jansa <martin.ja...@gmail.com> > > +Date: Sat, 29 Sep 2012 18:56:01 +0200 > > +Subject: [PATCH 10/10] pkg_depends: fix version_constraints_satisfied > > + > > +* with > > + Package: a > > + Version: 1 > > + and > > + Conflicts: a (<< 1) > > + we have comparison == 0, but constraint EARLIER is not satisfied! > > + > > +Upstream-Status: Submitted > > +http://code.google.com/p/opkg/issues/detail?id=94 > > + > > +Signed-off-by: Martin Jansa <martin.ja...@gmail.com> > > +--- > > + libopkg/pkg_depends.c | 3 ++- > > + 1 file changed, 2 insertions(+), 1 deletion(-) > > + > > +diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c > > +index 4b7a2a5..a67579a 100644 > > +--- a/libopkg/pkg_depends.c > > ++++ b/libopkg/pkg_depends.c > > +@@ -464,7 +464,8 @@ int version_constraints_satisfied(depend_t * depends, > > pkg_t * pkg) > > + else if((depends->constraint == LATER) && > > + (comparison > 0)) > > + return 1; > > +- else if(comparison == 0) > > ++ else if((depends->constraint == EQUAL) && > > ++ (comparison == 0)) > > + return 1; > > + else if((depends->constraint == LATER_EQUAL) && > > + (comparison >= 0)) > > +-- > > +1.7.12 > > + > > diff --git a/meta/recipes-devtools/opkg/opkg_svn.bb > > b/meta/recipes-devtools/opkg/opkg_svn.bb > > index 820a224..d89a3f6 100644 > > --- a/meta/recipes-devtools/opkg/opkg_svn.bb > > +++ b/meta/recipes-devtools/opkg/opkg_svn.bb > > @@ -9,6 +9,8 @@ SRC_URI = > > "svn://opkg.googlecode.com/svn;module=trunk;protocol=http \ > > file://0006-detect-circular-dependencies.patch \ > > file://0007-merge-newpkg-provides-even-when-oldpkg-provides-exis.patch \ > > file://0008-select_higher_version.patch \ > > + file://0009-pkg_depends-fix-version-constraints.patch \ > > + file://0010-pkg_depends-fix-version_constraints_satisfied.patch \ > > " > > > > S = "${WORKDIR}/trunk" > > @@ -16,4 +18,4 @@ S = "${WORKDIR}/trunk" > > SRCREV = "633" > > PV = "0.1.8+svnr${SRCPV}" > > > > -PR = "${INC_PR}.4" > > +PR = "${INC_PR}.5" > > -- > > 1.7.12 > > > > -- > Martin 'JaMa' Jansa jabber: martin.ja...@gmail.com -- Martin 'JaMa' Jansa jabber: martin.ja...@gmail.com
signature.asc
Description: Digital signature
_______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core