[cxxtools] Fix FTBFS on ARM.

Jon Ciesla limb at fedoraproject.org
Sat Sep 22 14:49:46 UTC 2012


commit 0e28bc1a095cf25c919ce1330dabde9c6a3515d2
Author: Jon Ciesla <limburgher at gmail.com>
Date:   Sat Sep 22 09:49:32 2012 -0500

    Fix FTBFS on ARM.

 cxxtools-2.1.1-arm.patch |  278 ++++++++++++++++++++++++++++++++++++++++++++++
 cxxtools.spec            |    7 +-
 2 files changed, 284 insertions(+), 1 deletions(-)
---
diff --git a/cxxtools-2.1.1-arm.patch b/cxxtools-2.1.1-arm.patch
new file mode 100644
index 0000000..1f07025
--- /dev/null
+++ b/cxxtools-2.1.1-arm.patch
@@ -0,0 +1,278 @@
+--- src/csvparser.cpp~	2012-09-21 14:19:12.000000000 -0500
++++ src/csvparser.cpp	2012-09-21 14:32:10.667705093 -0500
+@@ -76,7 +76,7 @@
+ 
+ void CsvParser::advance(Char ch)
+ {
+-    if (ch == L'\n')
++    if ( (int) ch == (int) L'\n')
+         ++_lineNo;
+ 
+     switch (_state)
+@@ -86,13 +86,13 @@
+             {
+                 _titles.back() += ch.narrow();
+             }
+-            else if (ch == L'\n' || ch == L'\r')
++            else if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
+             {
+                 log_debug("title=\"" << _titles.back() << '"');
+                 _noColumns = 1;
+-                _state = (ch == L'\r' ? state_cr : state_rowstart);
++                _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
+             }
+-            else if (ch == L'\'' || ch == L'"')
++            else if ( (int) ch == (int) L'\'' || (int) ch == (int) L'"')
+             {
+                 _quote = ch;
+                 _state = state_detectDelim_q;
+@@ -119,17 +119,17 @@
+             break;
+ 
+         case state_detectDelim_postq:
+-            if (isalnum(ch) || ch == L'_' || ch == L'\'' || ch == L'"' || ch == L' ')
++            if (isalnum(ch) || (int) ch == (int) L'_' || (int) ch == (int) L'\'' || (int) ch == (int) L'"' || (int) ch == (int) L' ')
+             {
+                 std::ostringstream msg;
+                 msg << "invalid character '" << ch.narrow() << "' within csv title of column " << _titles.size();
+                 SerializationError::doThrow(msg.str());
+             }
+-            else if (ch == L'\n' || ch == L'\r')
++            else if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
+             {
+                 log_debug("title=\"" << _titles.back() << '"');
+                 _noColumns = 1;
+-                _state = (ch == L'\r' ? state_cr : state_rowstart);
++                _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
+             }
+             else
+             {
+@@ -142,10 +142,10 @@
+             break;
+ 
+         case state_title:
+-            if (ch == L'\n' || ch == L'\r')
++            if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
+             {
+                 log_debug("title=\"" << _titles.back() << '"');
+-                _state = (ch == L'\r' ? state_cr : state_rowstart);
++                _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
+                 _noColumns = _titles.size();
+             }
+             else if (ch == _delimiter)
+@@ -153,7 +153,7 @@
+                 log_debug("title=\"" << _titles.back() << '"');
+                 _titles.push_back(std::string());
+             }
+-            else if (ch == '\'' || ch == '\"')
++            else if ( (int) ch == (int) '\'' || (int) ch == (int) '\"')
+             {
+                 if (_titles.back().empty())
+                 {
+@@ -185,10 +185,10 @@
+             break;
+ 
+         case state_qtitlep:
+-            if (ch == L'\n' || ch == L'\r')
++            if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
+             {
+                 log_debug("title=\"" << _titles.back() << '"');
+-                _state = (ch == L'\r' ? state_cr : state_rowstart);
++                _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
+                 _noColumns = _titles.size();
+             }
+             else if (ch == _delimiter)
+--- src/csvparser.cpp~	2012-09-21 14:32:24.000000000 -0500
++++ src/csvparser.cpp	2012-09-21 14:47:26.251661276 -0500
+@@ -82,7 +82,7 @@
+     switch (_state)
+     {
+         case state_detectDelim:
+-            if (isalnum(ch) || ch == L'_' || ch == ' ')
++            if (isalnum(ch) || (int) ch == (int) L'_' || (int) ch == (int) ' ')
+             {
+                 _titles.back() += ch.narrow();
+             }
+@@ -207,7 +207,7 @@
+ 
+         case state_cr:
+             _state = state_rowstart;
+-            if (ch == L'\n')
++            if ( (int) ch == (int) L'\n')
+             {
+                 break;
+             }
+@@ -228,14 +228,14 @@
+                 _column < _titles.size() ? _titles[_column] : std::string(),
+                 std::string(), SerializationInfo::Value);
+ 
+-            if (ch == L'\n' || ch == L'\r')
++            if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
+             {
+                 _deserializer->leaveMember();
+                 checkNoColumns(_column, _noColumns, _lineNo);
+                 _deserializer->leaveMember();
+-                _state = (ch == L'\r' ? state_cr : state_rowstart);
++                _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
+             }
+-            else if (ch == L'"' || ch == L'\'')
++            else if ((int) ch == L'"' || (int) ch == L'\'')
+             {
+                 _quote = ch;
+                 _state = state_qdata;
+@@ -253,7 +253,7 @@
+             break;
+ 
+         case state_data0:
+-            if (ch == L'"' || ch == L'\'')
++            if ( (int) ch == (int) L'"' || (int) ch == (int) L'\'')
+             {
+                 _quote = ch;
+                 _state = state_qdata;
+@@ -261,7 +261,7 @@
+             }
+ 
+         case state_data:
+-            if (ch == L'\n' || ch == L'\r')
++            if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
+             {
+                 log_debug("value \"" << _value << '"');
+                 _deserializer->setValue(_value);
+@@ -269,7 +269,7 @@
+                 checkNoColumns(_column, _noColumns, _lineNo);
+                 _deserializer->leaveMember();  // leave data item
+                 _deserializer->leaveMember();  // leave row
+-                _state = (ch == L'\r' ? state_cr : state_rowstart);
++                _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
+             }
+             else if (ch == _delimiter)
+             {
+@@ -307,11 +307,11 @@
+             break;
+ 
+         case state_qdata_end:
+-            if (ch == L'\n' || ch == L'\r')
++            if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
+             {
+                 checkNoColumns(_column, _noColumns, _lineNo);
+                 _deserializer->leaveMember();  // leave row
+-                _state = (ch == L'\r' ? state_cr : state_rowstart);
++                _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
+             }
+             else if (ch == _delimiter)
+             {
+--- src/jsonformatter.cpp~	2012-05-03 11:06:16.000000000 -0500
++++ src/jsonformatter.cpp	2012-09-21 16:10:58.726176999 -0500
+@@ -323,25 +323,25 @@
+ {
+     for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
+     {
+-        if (*it == '"')
++        if ( (int) *it == (int) '"')
+             *_ts << L'\\'
+                 << L'\"';
+-        else if (*it == '\\')
++        else if ( (int) *it == (int) '\\')
+             *_ts << L'\\'
+                 << L'\\';
+-        else if (*it == '\b')
++        else if ( (int) *it == (int) '\b')
+             *_ts << L'\\'
+                 << L'b';
+-        else if (*it == '\f')
++        else if ( (int) *it == (int) '\f')
+             *_ts << L'\\'
+                 << L'f';
+-        else if (*it == '\n')
++        else if ( (int) *it == (int) '\n')
+             *_ts << L'\\'
+                 << L'n';
+-        else if (*it == '\r')
++        else if ( (int) *it == (int) '\r')
+             *_ts << L'\\'
+                 << L'r';
+-        else if (*it == '\t')
++        else if ( (int) *it == (int) '\t')
+             *_ts << L'\\'
+                 << L't';
+         else if (static_cast<unsigned char>(*it) >= 0x80 || static_cast<unsigned char>(*it) < 0x20)
+@@ -364,25 +364,25 @@
+ {
+     for (cxxtools::String::const_iterator it = str.begin(); it != str.end(); ++it)
+     {
+-        if (*it == L'"')
++        if ( (int) *it == (int) L'"')
+             *_ts << L'\\'
+                 << L'\"';
+-        else if (*it == L'\\')
++        else if ( (int) *it == (int) L'\\')
+             *_ts << L'\\'
+                 << L'\\';
+-        else if (*it == L'\b')
++        else if ( (int) *it == (int) L'\b')
+             *_ts << L'\\'
+                 << L'b';
+-        else if (*it == L'\f')
++        else if ( (int) *it == (int) L'\f')
+             *_ts << L'\\'
+                 << L'f';
+-        else if (*it == L'\n')
++        else if ( (int) *it == (int) L'\n')
+             *_ts << L'\\'
+                 << L'n';
+-        else if (*it == L'\r')
++        else if ( (int) *it == (int) L'\r')
+             *_ts << L'\\'
+                 << L'r';
+-        else if (*it == L'\t')
++        else if ( (int) *it == (int) L'\t')
+             *_ts << L'\\'
+                 << L't';
+         else if (it->value() >= 0x80 || it->value() < 0x20)
+--- src/xml/entityresolver.cpp~	2012-05-03 11:06:15.000000000 -0500
++++ src/xml/entityresolver.cpp	2012-09-21 17:51:22.973780927 -0500
+@@ -563,19 +563,19 @@
+ 
+ String EntityResolver::resolveEntity(const String& entity) const
+ {
+-    if (!entity.empty() && entity[0] == L'#')
++    if (!entity.empty() && (int) entity[0] == (int) L'#')
+     {
+         int code = 0;
+-        if (entity.size() > 2 && entity[1] == L'x')
++        if (entity.size() > 2 && (int) entity[1] == (int) L'x')
+         {
+             // hex notation: &#xABCD;
+             for (String::const_iterator it = entity.begin() + 2; it != entity.end(); ++it)
+             {
+-                if (*it >= L'0' && *it <= L'9')
++                if ( (int) *it >= (int) L'0' && (int) *it <= (int) L'9')
+                     code = code * 16 + (it->value() - L'0');
+-                else if (*it >= L'A' && *it <= L'F')
++                else if ( (int) *it >= (int) L'A' && (int) *it <= (int) L'F')
+                     code = code * 16 + (it->value() - L'A' + 10);
+-                else if (*it >= L'a' && *it <= L'f')
++                else if ( (int) *it >= (int) L'a' && (int) *it <= (int) L'f')
+                     code = code * 16 + (it->value() - L'a' + 10);
+                 else
+                     throw std::runtime_error(std::string("invalid entity ") + entity.narrow());
+@@ -586,7 +586,7 @@
+             // dec notation: &#9999;
+             for (String::const_iterator it = entity.begin() + 1; it != entity.end(); ++it)
+             {
+-                if (*it >= L'0' && *it <= L'9')
++                if ( (int) *it >= (int) L'0' && (int) *it <= (int) L'9')
+                     code = code * 10 + (it->value() - '0');
+                 else
+                     throw std::runtime_error(std::string("invalid entity ") + entity.narrow());
+--- src/bin/formatter.cpp~	2012-05-03 11:35:06.000000000 -0500
++++ src/bin/formatter.cpp	2012-09-21 21:23:28.796827789 -0500
+@@ -218,7 +218,7 @@
+ 
+     if (type == "int")
+     {
+-        if (value.size() > 0 && (value[0] == L'-' || value[0] == L'+'))
++        if (value.size() > 0 && ( (int) value[0] == (int) L'-' || (int) value[0] == (int) L'+'))
+         {
+             int64_t v = convert<int64_t>(value);
+             printInt(*_out, v, name);
diff --git a/cxxtools.spec b/cxxtools.spec
index 563cc8f..d2d050b 100644
--- a/cxxtools.spec
+++ b/cxxtools.spec
@@ -1,12 +1,13 @@
 Name:           cxxtools
 Version:        2.1.1
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        A collection of general-purpose C++ classes
 
 Group:          System Environment/Libraries
 License:        LGPLv2+ 
 URL:            http://www.tntnet.org/cxxtools.html
 Source0:        http://www.tntnet.org/download/cxxtools-%{version}.tar.gz
+Patch0:         cxxtools-2.1.1-arm.patch
 
 Provides:       bundled(md5-polstra)
 
@@ -24,6 +25,7 @@ Development files for %{name}
 
 %prep
 %setup -q
+%patch0 -p0
 
 # fix spurious executable perm
 find -name "*.cpp" -exec chmod -x {} \;
@@ -65,6 +67,9 @@ rm -rf $RPM_BUILD_ROOT
 %{_includedir}/cxxtools/
 
 %changelog
+* Fri Sep 21 2012 Jon Ciesla <limburgher at gmail.com> - 2.1.1-5
+- Fix FTBFS on ARM.
+
 * Thu Jul 26 2012 Dan HorĂ¡k <dan[at]danny.cz> - 2.1.1-4
 - fix build on s390(x) where atomicity detection fails
 


More information about the scm-commits mailing list