Skip to contentSkip to conversation

zypper architecture tuning

PATCH New Qing He 1 participant 5 messages Mar 14, 2011

lore
Share & tools
lore

Qing He

author
#0 lore raw

cover zypper architecture tuning

From: Qing He <[email protected]>

Zypper and its dependencies used a hard coded list for all the archs it supports, which doesn't contains several cpu archs like mips, as well as the ${MACHINE_ARCH} used in poky. This patch set intends to add this support.

Also fixes package archs of qemux86-64.

Pull URL: git://git.pokylinux.org/poky-contrib.git
Branch: qhe/zypp1
Browse: http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=qhe/zypp1

Thanks,
Qing He <[email protected]>
---

Qing He (4):
sat-solver: add machine arch support
libzypp: add machine arch support
zypper: add machine arch support
qemux86-64: set qemux86_64 as package arch name

 meta/conf/bitbake.conf                             |    3 +-
 .../libzypp/libzypp/archconf.patch                 |   15 +++
 .../libzypp/libzypp/builtin-arch.patch             |  122 +++++++++++++++++++
 .../libzypp/libzypp/no-builtin-arch.patch          |  128 ++++++++++++++++++++
 meta/recipes-extended/libzypp/libzypp_git.bb       |   28 ++++-
 .../sat-solver/sat-solver/builtin-arch.patch       |   28 +++++
 .../sat-solver/sat-solver/no-builtin-arch.patch    |   29 +++++
 meta/recipes-extended/sat-solver/sat-solver_git.bb |   28 ++++-
 meta/recipes-extended/zypper/zypper_git.bb         |    4 +-
 9 files changed, 380 insertions(+), 5 deletions(-)
 create mode 100644 meta/recipes-extended/libzypp/libzypp/archconf.patch
 create mode 100644 meta/recipes-extended/libzypp/libzypp/builtin-arch.patch
 create mode 100644 meta/recipes-extended/libzypp/libzypp/no-builtin-arch.patch
 create mode 100644 meta/recipes-extended/sat-solver/sat-solver/builtin-arch.patch
 create mode 100644 meta/recipes-extended/sat-solver/sat-solver/no-builtin-arch.patch
author
#1 lore raw

PATCH 1/4 sat-solver: add machine arch support

From: Qing He <[email protected]>

---
 .../sat-solver/sat-solver/builtin-arch.patch       |   28 +++++++++++++++++++
 .../sat-solver/sat-solver/no-builtin-arch.patch    |   29 ++++++++++++++++++++
 meta/recipes-extended/sat-solver/sat-solver_git.bb |   28 +++++++++++++++++-
 3 files changed, 83 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-extended/sat-solver/sat-solver/builtin-arch.patch
 create mode 100644 meta/recipes-extended/sat-solver/sat-solver/no-builtin-arch.patch
meta/recipes-extended/sat-solver/sat-solver/builtin-arch.patch new file +28 -0
new file mode 100644
index 0000000..c228c36
@@ -0,0 +1,28 @@
+This patch adds the ${MACHINE_ARCH} and ${PACKAGE_ARCH} to
+sat-solver available archs, see do_archpatch in .bb for more
+details, this is the version for ${BASE_PACKAGE_ARCH} already
+recognized in sat-sovler.
+
+Signed-off-by: Qing He <[email protected]>
+
+diff --git a/src/poolarch.c b/src/poolarch.c
+index 34a14a3..660959b 100644
+--- a/src/poolarch.c
++++ b/src/poolarch.c
+@@ -21,6 +21,7 @@
+ #include "util.h"
+ 
+ const char *archpolicies[] = {
++  "@MACHINE_ARCH@",	"@MACHINE_ARCH@:@PKG_ARCH_TAIL@",
+   "x86_64",	"x86_64:i686:i586:i486:i386",
+   "i686",	"i686:i586:i486:i386",
+   "i586",	"i586:i486:i386",
+@@ -72,7 +74,7 @@ pool_setarch(Pool *pool, const char *arch)
+       return;
+     }
+ #ifndef DEBIAN_SEMANTICS
+-  id = ARCH_NOARCH;
++  id = ARCH_ALL;
+ #else
+   id = ARCH_ALL;
+ #endif
meta/recipes-extended/sat-solver/sat-solver/no-builtin-arch.patch new file +29 -0
new file mode 100644
index 0000000..225fbfe
@@ -0,0 +1,29 @@
+This patch adds the ${MACHINE_ARCH} and ${PACKAGE_ARCH} to
+sat-solver available archs, see do_archpatch in .bb for more
+details, this is the version for ${BASE_PACKAGE_ARCH} not
+recognized in sat-sovler.
+
+Signed-off-by: Qing He <[email protected]>
+
+diff --git a/src/poolarch.c b/src/poolarch.c
+index 34a14a3..36367ba 100644
+--- a/src/poolarch.c
++++ b/src/poolarch.c
+@@ -21,6 +21,8 @@
+ #include "util.h"
+ 
+ const char *archpolicies[] = {
++  "@MACHINE_ARCH@",	"@MACHINE_ARCH@:@PKG_ARCH@",
++  "@PKG_ARCH@",	"@PKG_ARCH@",
+   "x86_64",	"x86_64:i686:i586:i486:i386",
+   "i686",	"i686:i586:i486:i386",
+   "i586",	"i586:i486:i386",
+@@ -72,7 +74,7 @@ pool_setarch(Pool *pool, const char *arch)
+       return;
+     }
+ #ifndef DEBIAN_SEMANTICS
+-  id = ARCH_NOARCH;
++  id = ARCH_ALL;
+ #else
+   id = ARCH_ALL;
+ #endif
meta/recipes-extended/sat-solver/sat-solver_git.bb +26 -2
index 02b6c75..54420cd 100644
@@ -7,14 +7,38 @@ LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
 DEPENDS = "libcheck rpm zlib expat db"
 
 PV = "0.0-git${SRCPV}"
-PR = "r3"
+PR = "r4"
 
 SRC_URI = "git://gitorious.org/opensuse/sat-solver.git;protocol=git \
            file://cmake.patch \
            file://rpm5.patch \
-	   file://db5.patch"
+           file://db5.patch \
+           file://builtin-arch.patch;apply=no \
+           file://no-builtin-arch.patch;apply=no \
+          "
 
 S = "${WORKDIR}/git"
 
 EXTRA_OECMAKE += "-DLIB=lib"
+
 inherit cmake pkgconfig
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+do_archpatch () {
+	PKG_ARCH_TAIL=`sed -n ${S}/src/poolarch.c -e "s|^  \"\(${BASE_PACKAGE_ARCH}\)\",.*\"\(.*\)\",.*$|\2|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}"
+}
+
+addtask archpatch before do_patch after do_unpack
Signature · 1 line
1.7.0
author
#2 lore raw

PATCH 2/4 libzypp: add machine arch support

In reply to Qing He

From: Qing He <[email protected]>

---
 .../libzypp/libzypp/archconf.patch                 |   15 +++
 .../libzypp/libzypp/builtin-arch.patch             |  122 +++++++++++++++++++
 .../libzypp/libzypp/no-builtin-arch.patch          |  128 ++++++++++++++++++++
 meta/recipes-extended/libzypp/libzypp_git.bb       |   28 ++++-
 4 files changed, 292 insertions(+), 1 deletions(-)
 create mode 100644 meta/recipes-extended/libzypp/libzypp/archconf.patch
 create mode 100644 meta/recipes-extended/libzypp/libzypp/builtin-arch.patch
 create mode 100644 meta/recipes-extended/libzypp/libzypp/no-builtin-arch.patch
meta/recipes-extended/libzypp/libzypp/archconf.patch new file +15 -0
new file mode 100644
index 0000000..44ebe33
@@ -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@
+ 
+ 
+ ##
meta/recipes-extended/libzypp/libzypp/builtin-arch.patch new file +122 -0

122 lines not on this page · raw message

meta/recipes-extended/libzypp/libzypp/no-builtin-arch.patch new file +128 -0

128 lines not on this page · raw message

meta/recipes-extended/libzypp/libzypp_git.bb +27 -1
index b9110eb..825339d 100644
@@ -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
Signature · 1 line
1.7.0
author
#3 lore raw

PATCH 3/4 zypper: add machine arch support

In reply to Qing He

From: Qing He <[email protected]>

Since libzypp is now of ${MACHINE_ARCH}, change zypper to base on this arch to.

---
 meta/recipes-extended/zypper/zypper_git.bb |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
meta/recipes-extended/zypper/zypper_git.bb +3 -1
index af6bd49..9258477 100644
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3201406e350b39e05a82e28b5020f413"
 
 DEPENDS  = "libzypp augeas"
 RRECOMMENDS_${PN} = "procps util-linux-uuidgen"
-PR = "r4"
+PR = "r5"
 
 inherit cmake
 
@@ -18,3 +18,5 @@ SRC_URI = "git://gitorious.org/opensuse/zypper.git;protocol=git \
 S = "${WORKDIR}/git"
 
 PV = "1.5.3-git${SRCPV}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
Signature · 1 line
1.7.0
author
#4 lore raw

PATCH 4/4 qemux86-64: set qemux86_64 as package arch name

In reply to Qing He

From: Qing He <[email protected]>

thus allows rpmbuild to generated RPMs with the right architecture.

---
 meta/conf/bitbake.conf |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
meta/conf/bitbake.conf +2 -1
index cf99a81..42b9825 100644
@@ -93,7 +93,8 @@ SDK_CC_ARCH = "${BUILD_CC_ARCH}"
 BASE_PACKAGE_ARCH = "${HOST_ARCH}"
 PACKAGE_ARCH = "${BASE_PACKAGE_ARCH}"
 MACHINE_ARCH = "${@[bb.data.getVar('BASE_PACKAGE_ARCH', d, 1), bb.data.getVar('MACHINE', d, 1)][bool(bb.data.getVar('MACHINE', d, 1))]}"
-PACKAGE_ARCHS = "all any noarch ${TARGET_ARCH} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}"
+MACHINE_ARCH_qemux86-64 = "qemux86_64"
+PACKAGE_ARCHS = "all any noarch ${TARGET_ARCH} ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}"
 # MACHINE shouldn't be included here as a variable dependency since machine specific 
 # packages are handled using multimachine
 PACKAGE_ARCHS[vardepsexclude] = "MACHINE"
Signature · 1 line
1.7.0