libzypp: add machine arch support
(From OE-Core rev: b463188407c0c783c8d5aeb0098fc59445db57bf) Signed-off-by: Qing He <qing.he@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
023c43b98c
commit
764f68cd82
|
@ -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@
|
||||
|
||||
|
||||
##
|
|
@ -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>
|
|
@ -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>
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue