summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--user/libixion/32bit.patch57
-rw-r--r--user/libixion/APKBUILD7
2 files changed, 62 insertions, 2 deletions
diff --git a/user/libixion/32bit.patch b/user/libixion/32bit.patch
new file mode 100644
index 000000000..13d25ac4e
--- /dev/null
+++ b/user/libixion/32bit.patch
@@ -0,0 +1,57 @@
+From 869492c9f3f61aaab0d1ecdda147ea9adbdb04d5 Mon Sep 17 00:00:00 2001
+From: Kohei Yoshida <kohei.yoshida@gmail.com>
+Date: Tue, 28 Aug 2018 22:58:49 -0400
+Subject: [PATCH] Fix build issues on 32-bit platforms.
+
+The string ID's are stored in mdds's unsigned long block, but we
+have changed the underlying type of string ID's from unsigned long
+to uint64_t. Because of this, on 32-bit systems it caused a type
+mismatch. On 64-bit systems this was fine since unsigned long was
+the underlying type for uint64_t...
+---
+ src/libixion/model_context.cpp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/libixion/model_context.cpp b/src/libixion/model_context.cpp
+index 0bcf940..b44713f 100644
+--- a/src/libixion/model_context.cpp
++++ b/src/libixion/model_context.cpp
+@@ -541,7 +541,7 @@ void model_context_impl::set_string_cell(const abs_address_t& addr, const char*
+ string_id_t str_id = add_string(p, n);
+ column_store_t& col_store = sheet.at(addr.column);
+ column_store_t::iterator& pos_hint = sheet.get_pos_hint(addr.column);
+- pos_hint = col_store.set(pos_hint, addr.row, str_id);
++ pos_hint = col_store.set(pos_hint, addr.row, static_cast<unsigned long>(str_id));
+ }
+
+ void model_context_impl::set_string_cell(const abs_address_t& addr, string_id_t identifier)
+@@ -549,7 +549,7 @@ void model_context_impl::set_string_cell(const abs_address_t& addr, string_id_t
+ worksheet& sheet = m_sheets.at(addr.sheet);
+ column_store_t& col_store = sheet.at(addr.column);
+ column_store_t::iterator& pos_hint = sheet.get_pos_hint(addr.column);
+- pos_hint = col_store.set(pos_hint, addr.row, identifier);
++ pos_hint = col_store.set(pos_hint, addr.row, static_cast<unsigned long>(identifier));
+ }
+
+ void model_context_impl::set_formula_cell(const abs_address_t& addr, formula_tokens_t tokens)
+@@ -800,7 +800,7 @@ string_id_t model_context_impl::get_string_identifier(const abs_address_t& addr)
+ switch (col_store.get_type(addr.row))
+ {
+ case ixion::element_type_string:
+- return col_store.get<string_id_t>(addr.row);
++ return col_store.get<unsigned long>(addr.row);
+ default:
+ ;
+ }
+@@ -813,7 +813,7 @@ string_id_t model_context_impl::get_string_identifier_nowait(const abs_address_t
+ switch (col_store.get_type(addr.row))
+ {
+ case ixion::element_type_string:
+- return col_store.get<string_id_t>(addr.row);
++ return col_store.get<unsigned long>(addr.row);
+ case ixion::element_type_formula:
+ {
+ const formula_cell* p = col_store.get<formula_cell*>(addr.row);
+--
+2.18.0
+
diff --git a/user/libixion/APKBUILD b/user/libixion/APKBUILD
index 2d4dcc870..17d1a88e6 100644
--- a/user/libixion/APKBUILD
+++ b/user/libixion/APKBUILD
@@ -11,7 +11,9 @@ depends=""
depends_dev="mdds"
makedepends="$depends_dev boost-dev"
subpackages="$pkgname-dev"
-source="http://kohei.us/files/ixion/src/$pkgname-$pkgver.tar.xz"
+source="http://kohei.us/files/ixion/src/$pkgname-$pkgver.tar.xz
+ 32bit.patch
+ "
build() {
cd "$builddir"
@@ -43,4 +45,5 @@ dev() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="8681912fb1bebb4de1fdcb4f0589aa84a3e38cd21747c81a204a87594f67879732461f3c02b70d0bf5659af59c1af1fa17df425eba5946d22a8599bc8da9fd92 libixion-0.14.0.tar.xz"
+sha512sums="8681912fb1bebb4de1fdcb4f0589aa84a3e38cd21747c81a204a87594f67879732461f3c02b70d0bf5659af59c1af1fa17df425eba5946d22a8599bc8da9fd92 libixion-0.14.0.tar.xz
+a6d26bfc8721f8f65a1eafa527e5b29166c9e0c45de39493bcaae17896ad6e145b78e123ea01903a96b0fb4a5b7def3dc2d256c3e301a0676e07c840603570ac 32bit.patch"