diff options
author | Qing He <qing.he@intel.com> | 2011-03-11 17:16:36 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-03-14 20:45:52 +0000 |
commit | b463188407c0c783c8d5aeb0098fc59445db57bf (patch) | |
tree | 6252a2c7a2f10607814395c61491100e874eb151 | |
parent | ca758fa404fa447689ff205ee3b4b76bd3f1068a (diff) | |
download | openembedded-core-b463188407c0c783c8d5aeb0098fc59445db57bf.tar.gz openembedded-core-b463188407c0c783c8d5aeb0098fc59445db57bf.tar.bz2 openembedded-core-b463188407c0c783c8d5aeb0098fc59445db57bf.zip |
libzypp: add machine arch support
Signed-off-by: Qing He <qing.he@intel.com>
-rw-r--r-- | meta/recipes-extended/libzypp/libzypp/archconf.patch | 15 | ||||
-rw-r--r-- | meta/recipes-extended/libzypp/libzypp/builtin-arch.patch | 122 | ||||
-rw-r--r-- | meta/recipes-extended/libzypp/libzypp/no-builtin-arch.patch | 128 | ||||
-rw-r--r-- | meta/recipes-extended/libzypp/libzypp_git.bb | 28 |
4 files changed, 292 insertions, 1 deletions
diff --git a/meta/recipes-extended/libzypp/libzypp/archconf.patch b/meta/recipes-extended/libzypp/libzypp/archconf.patch new file mode 100644 index 0000000000..44ebe33592 --- /dev/null +++ b/meta/recipes-extended/libzypp/libzypp/archconf.patch @@ -0,0 +1,15 @@ +diff --git a/zypp.conf b/zypp.conf +index 1e84a3f..7a26548 100644 +--- a/zypp.conf ++++ b/zypp.conf +@@ -17,7 +17,10 @@ + ## ** Changing this needs a full refresh (incl. download) + ## ** of all repository data. + ## ++## ** CAUTION: Don't change this value on yocto ! ++## + # arch = s390 ++arch = @MACHINE_ARCH@ + + + ## diff --git a/meta/recipes-extended/libzypp/libzypp/builtin-arch.patch b/meta/recipes-extended/libzypp/libzypp/builtin-arch.patch new file mode 100644 index 0000000000..53dcfac652 --- /dev/null +++ b/meta/recipes-extended/libzypp/libzypp/builtin-arch.patch @@ -0,0 +1,122 @@ +This patch adds the ${MACHINE_ARCH} and ${PACKAGE_ARCH} to +libzypp available archs, see do_archpatch in .bb for more +details, this is the version for ${BASE_PACKAGE_ARCH} already +recognized in libzypp. + +Also "all" is added as a synonym for noarch. + +Signed-off-by: Qing He <qing.he@intel.com> + +diff --git a/zypp/Arch.cc b/zypp/Arch.cc +index 7b357bb..d9102cc 100644 +--- a/zypp/Arch.cc ++++ b/zypp/Arch.cc +@@ -122,7 +122,13 @@ namespace zypp + + /** \relates Arch::CompatEntry */ + inline bool operator==( const Arch::CompatEntry & lhs, const Arch::CompatEntry & rhs ) +- { return lhs._idStr == rhs._idStr; } ++ { ++ if ( (lhs._idStr == "all" && rhs._idStr == "noarch") || ++ (lhs._idStr == "noarch" && rhs._idStr == "all") ) ++ return true; ++ else ++ return lhs._idStr == rhs._idStr; ++ } + /** \relates Arch::CompatEntry */ + inline bool operator!=( const Arch::CompatEntry & lhs, const Arch::CompatEntry & rhs ) + { return ! ( lhs == rhs ); } +@@ -153,7 +159,7 @@ namespace zypp + // bit for each architecture. + // + #define DEF_BUILTIN(A) const IdString _##A( #A ); +- DEF_BUILTIN( noarch ); ++ const IdString _noarch( "all" ); + + DEF_BUILTIN( i386 ); + DEF_BUILTIN( i486 ); +@@ -202,6 +208,8 @@ namespace zypp + + DEF_BUILTIN( sh4 ); + DEF_BUILTIN( sh4a ); ++ ++ const IdString _machine( "@MACHINE_ARCH@" ); + #undef DEF_BUILTIN + + /////////////////////////////////////////////////////////////////// +@@ -326,12 +334,14 @@ namespace zypp + // + defCompatibleWith( _sh4, _noarch ); + defCompatibleWith( _sh4a, _noarch,_sh4 ); ++ ++ defCompatibleWith( _machine, @PKG_ARCH_TAIL@,_@PKG_ARCH@ ); + // + /////////////////////////////////////////////////////////////////// + // dumpOn( USR ) << endl; + } + +- private: ++ public: + /** Return the next avialable _idBit. + * Ctor injects _noarch into the _compatSet, 1 is for + * nonbuiltin archs, so we can use <tt>size</tt> for +@@ -440,6 +450,8 @@ namespace zypp + const Arch Arch_sh4( _sh4 ); + const Arch Arch_sh4a( _sh4a ); + ++ const Arch Arch_machine( _machine ); ++ + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : Arch::Arch +diff --git a/zypp/Arch.h b/zypp/Arch.h +index 6b18a6e..092211c 100644 +--- a/zypp/Arch.h ++++ b/zypp/Arch.h +@@ -249,6 +249,8 @@ namespace zypp + extern const Arch Arch_sh4; + /** \relates Arch */ + extern const Arch Arch_sh4a; ++ ++ extern const Arch Arch_machine; + //@} + + /////////////////////////////////////////////////////////////////// +diff --git a/zypp/parser/yum/schema/common-inc.rnc b/zypp/parser/yum/schema/common-inc.rnc +index f12ac3b..24ce06e 100644 +--- a/zypp/parser/yum/schema/common-inc.rnc ++++ b/zypp/parser/yum/schema/common-inc.rnc +@@ -26,6 +26,7 @@ private.evr = + private.localizedtext = attribute lang { "en" | "de" }, text + + private.archenum = "noarch" ++ | "all" + | "armv4l" + | "armv5el" + | "armv5tel" +@@ -46,4 +47,5 @@ private.archenum = "noarch" + | "sh4" + | "x86_64" + | "src" ++ | "@MACHINE_ARCH@" + +diff --git a/zypp/parser/yum/schema/common-inc.rng b/zypp/parser/yum/schema/common-inc.rng +index 60e5742..8a9ce2e 100644 +--- a/zypp/parser/yum/schema/common-inc.rng ++++ b/zypp/parser/yum/schema/common-inc.rng +@@ -89,6 +89,7 @@ + <define name="private.archenum"> + <choice> + <value>noarch</value> ++ <value>all</value> + <value>armv4l</value> + <value>armv5el</value> + <value>armv5tel</value> +@@ -109,6 +110,7 @@ + <value>sh4</value> + <value>x86_64</value> + <value>src</value> ++ <value>@MACHINE_ARCH@</value> + </choice> + </define> + </grammar> diff --git a/meta/recipes-extended/libzypp/libzypp/no-builtin-arch.patch b/meta/recipes-extended/libzypp/libzypp/no-builtin-arch.patch new file mode 100644 index 0000000000..22dd89c45f --- /dev/null +++ b/meta/recipes-extended/libzypp/libzypp/no-builtin-arch.patch @@ -0,0 +1,128 @@ +This patch adds the ${MACHINE_ARCH} and ${PACKAGE_ARCH} to +libzypp available archs, see do_archpatch in .bb for more +details, this is the version for ${BASE_PACKAGE_ARCH} not +recognized in libzypp. + +Also "all" is added as a synonym for noarch. + +Signed-off-by: Qing He <qing.he@intel.com> + +diff --git a/zypp/Arch.cc b/zypp/Arch.cc +index 7b357bb..d4cbca6 100644 +--- a/zypp/Arch.cc ++++ b/zypp/Arch.cc +@@ -122,7 +122,13 @@ namespace zypp + + /** \relates Arch::CompatEntry */ + inline bool operator==( const Arch::CompatEntry & lhs, const Arch::CompatEntry & rhs ) +- { return lhs._idStr == rhs._idStr; } ++ { ++ if ( (lhs._idStr == "all" && rhs._idStr == "noarch") || ++ (lhs._idStr == "noarch" && rhs._idStr == "all") ) ++ return true; ++ else ++ return lhs._idStr == rhs._idStr; ++ } + /** \relates Arch::CompatEntry */ + inline bool operator!=( const Arch::CompatEntry & lhs, const Arch::CompatEntry & rhs ) + { return ! ( lhs == rhs ); } +@@ -153,7 +159,7 @@ namespace zypp + // bit for each architecture. + // + #define DEF_BUILTIN(A) const IdString _##A( #A ); +- DEF_BUILTIN( noarch ); ++ const IdString _noarch( "all" ); + + DEF_BUILTIN( i386 ); + DEF_BUILTIN( i486 ); +@@ -202,6 +208,9 @@ namespace zypp + + DEF_BUILTIN( sh4 ); + DEF_BUILTIN( sh4a ); ++ ++ const IdString _package( "@PKG_ARCH@" ); ++ const IdString _machine( "@MACHINE_ARCH@" ); + #undef DEF_BUILTIN + + /////////////////////////////////////////////////////////////////// +@@ -326,12 +335,15 @@ namespace zypp + // + defCompatibleWith( _sh4, _noarch ); + defCompatibleWith( _sh4a, _noarch,_sh4 ); ++ ++ defCompatibleWith( _package, _noarch ); ++ defCompatibleWith( _machine, _noarch,_package ); + // + /////////////////////////////////////////////////////////////////// + // dumpOn( USR ) << endl; + } + +- private: ++ public: + /** Return the next avialable _idBit. + * Ctor injects _noarch into the _compatSet, 1 is for + * nonbuiltin archs, so we can use <tt>size</tt> for +@@ -440,6 +452,9 @@ namespace zypp + const Arch Arch_sh4( _sh4 ); + const Arch Arch_sh4a( _sh4a ); + ++ const Arch Arch_package( _package ); ++ const Arch Arch_machine( _machine ); ++ + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : Arch::Arch +diff --git a/zypp/Arch.h b/zypp/Arch.h +index 6b18a6e..f91a562 100644 +--- a/zypp/Arch.h ++++ b/zypp/Arch.h +@@ -249,6 +249,9 @@ namespace zypp + extern const Arch Arch_sh4; + /** \relates Arch */ + extern const Arch Arch_sh4a; ++ ++ extern const Arch Arch_package; ++ extern const Arch Arch_machine; + //@} + + /////////////////////////////////////////////////////////////////// +diff --git a/zypp/parser/yum/schema/common-inc.rnc b/zypp/parser/yum/schema/common-inc.rnc +index f12ac3b..04677c3 100644 +--- a/zypp/parser/yum/schema/common-inc.rnc ++++ b/zypp/parser/yum/schema/common-inc.rnc +@@ -26,6 +26,7 @@ private.evr = + private.localizedtext = attribute lang { "en" | "de" }, text + + private.archenum = "noarch" ++ | "all" + | "armv4l" + | "armv5el" + | "armv5tel" +@@ -46,4 +47,6 @@ private.archenum = "noarch" + | "sh4" + | "x86_64" + | "src" ++ | "@PKG_ARCH@" ++ | "@MACHINE_ARCH@" + +diff --git a/zypp/parser/yum/schema/common-inc.rng b/zypp/parser/yum/schema/common-inc.rng +index 60e5742..27694aa 100644 +--- a/zypp/parser/yum/schema/common-inc.rng ++++ b/zypp/parser/yum/schema/common-inc.rng +@@ -89,6 +89,7 @@ + <define name="private.archenum"> + <choice> + <value>noarch</value> ++ <value>all</value> + <value>armv4l</value> + <value>armv5el</value> + <value>armv5tel</value> +@@ -109,6 +110,8 @@ + <value>sh4</value> + <value>x86_64</value> + <value>src</value> ++ <value>@PKG_ARCH@</value> ++ <value>@MACHINE_ARCH@</value> + </choice> + </define> + </grammar> diff --git a/meta/recipes-extended/libzypp/libzypp_git.bb b/meta/recipes-extended/libzypp/libzypp_git.bb index b9110eb09e..825339d126 100644 --- a/meta/recipes-extended/libzypp/libzypp_git.bb +++ b/meta/recipes-extended/libzypp/libzypp_git.bb @@ -13,12 +13,15 @@ RDEPENDS_${PN} = "sat-solver" S = "${WORKDIR}/git" PV = "0.0-git${SRCPV}" -PR = "r6" +PR = "r7" SRC_URI = "git://gitorious.org/opensuse/libzypp.git;protocol=git \ file://no-doc.patch \ file://rpm5.patch \ file://rpm5-no-rpmdbinit.patch \ + file://builtin-arch.patch;apply=no \ + file://no-builtin-arch.patch;apply=no \ + file://archconf.patch;apply=no \ " SRC_URI_append_mips = " file://mips-workaround-gcc-tribool-error.patch" @@ -27,3 +30,26 @@ FILES_${PN} += "${libdir}/zypp ${datadir}/zypp ${datadir}/icons" FILES_${PN}-dev += "${datadir}/cmake" EXTRA_OECMAKE += "-DLIB=lib" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +do_archpatch () { + PKG_ARCH_TAIL=`sed -n ${S}/zypp/Arch.cc -e "s|^.*defCompatibleWith( _${BASE_PACKAGE_ARCH},[ \t]*\(.*\) .*$|\1|p"` + if [ "x${PKG_ARCH_TAIL}" == x ]; then + PATCHFILE=${WORKDIR}/no-builtin-arch.patch + else + PATCHFILE=${WORKDIR}/builtin-arch.patch + fi + + sed -i "${PATCHFILE}" \ + -e "s|@MACHINE_ARCH@|${MACHINE_ARCH}|g" \ + -e "s|@PKG_ARCH@|${BASE_PACKAGE_ARCH}|g" \ + -e "s|@PKG_ARCH_TAIL@|${PKG_ARCH_TAIL}|g" + + patch -p1 -i "${PATCHFILE}" + + sed -i ${WORKDIR}/archconf.patch -e "s|@MACHINE_ARCH@|${MACHINE_ARCH}|g" + patch -p1 -i ${WORKDIR}/archconf.patch +} + +addtask archpatch before do_patch after do_unpack |