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 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 size 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 @@ noarch + all armv4l armv5el armv5tel @@ -109,6 +110,8 @@ sh4 x86_64 src + @PKG_ARCH@ + @MACHINE_ARCH@