libzypp: workaround to pass mips build

libzypp failed due to GCC "internal compiler error: segmentation fault" error on
MIPS target. The cause is about boost tribool type usage. If having assignement
within conditional check as below:

	if ( (a = b) )
		...
<a is a tribool type, b is a normal bool type>

then gcc4.3.3 throws internal error. Then the workaround is to move assignement
out of the conditional check.

However I didn't find same case from web.

We can come back to recheck this issue after upgrading to gcc4.5.0 for MIPS. If
this issue is still there, we'll need more analysis to decide whether to report
to gcc upstream or to libzypp upstream.

This fixes [BUGID #277]

Signed-off-by: Kevin Tian <kevin.tian@intel.com>
This commit is contained in:
Kevin Tian authored and Richard Purdie committed 2010-09-08 14:39:00 +01:00
1 parent 7892add2de
commit c519aec68c
2 files changed
+25 -1

No files matched your search

@@ -0,0 +1,22 @@
# with gcc 4.3.3 and MIPS target, gcc "internal compiler error: segmentation fault" error
# occurs when compiling Applydeltarpm.cc. I didn't find the exact reason leading to this
# error, but it should be related to how boost tribool type is interpreted by g++. So provide
# this mips workaround for now. We'll come back later to check whether it's still required after
# upgrading to 4.5.0.
#
# Signed-off-by Kevin Tian <kevin.tian@intel.com>, 2010-09-08
diff --git a/zypp/repo/Applydeltarpm.cc b/zypp/repo/Applydeltarpm.cc
index 7b382be..0d7a1f8 100644
--- a/zypp/repo/Applydeltarpm.cc
+++ b/zypp/repo/Applydeltarpm.cc
@@ -77,7 +77,8 @@ namespace zypp
else
{
// _last is 'indeterminate' or '!have'
- if ( (_last = have) )
+ _last = have;
+ if ( _last )
MIL << "Found executable " << prog << endl;
else
WAR << "No executable " << prog << endl;
+3 -1
View File
@@ -10,11 +10,13 @@ DEPENDS = "rpm boost gettext curl libxml2 zlib sat-solver expat openssl udev"
S = "${WORKDIR}/git"
PV = "0.0-git${SRCPV}"
PR = "r0"
PR = "r1"
SRC_URI = "git://gitorious.org/opensuse/libzypp.git;protocol=git \
file://no-doc.patch \
file://rpm5.patch"
SRC_URI_append_mips = " file://mips-workaround-gcc-tribool-error.patch"
FILES_${PN} += "${libdir}/zypp ${datadir}/zypp ${datadir}/icons"
FILES_${PN}-dev += "${datadir}/cmake"