summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlbert Graef2017-11-11 21:54:11 +0100
committerAlbert Graef2017-11-11 21:56:16 +0100
commitaaa0d062346ad86ff4c93a40e11d4e9c99b779e3 (patch)
treeb178da1810b8236a0e4217d93ee641daa3702969
parent8eaef0bc957ddbb6b1574c99ef723c5a29b7b374 (diff)
downloadaur-aaa0d062346ad86ff4c93a40e11d4e9c99b779e3.tar.gz
Rebuild for latest Octave (currently needs Octave 4.3.0+ from git, use package octave-hg in AUR; embedded interface of Octave 4.2 is broken).
-rw-r--r--.SRCINFO8
-rw-r--r--PKGBUILD13
-rw-r--r--octave-4.3-compat.diff53
3 files changed, 68 insertions, 6 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 78871e26e039..dd7c2e51b8ea 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,9 +1,9 @@
# Generated by mksrcinfo v8
-# Wed Mar 1 23:03:50 UTC 2017
+# Sat Nov 11 20:51:34 UTC 2017
pkgbase = pure-octave
pkgdesc = embed an Octave interpreter into Pure.
pkgver = 0.9
- pkgrel = 1
+ pkgrel = 2
url = http://purelang.bitbucket.org/
arch = i686
arch = x86_64
@@ -12,8 +12,10 @@ pkgbase = pure-octave
license = GPL3
depends = pure
depends = octave
- source = https://bitbucket.org/purelang/pure-lang/downloads/pure-octave-0.9.tar.gz
+ source = https://github.com/agraef/pure-lang/releases/download/pure-octave-0.9/pure-octave-0.9.tar.gz
+ source = octave-4.3-compat.diff
sha1sums = 2d4b3cad23aadcd33925cea04661e2eab6109423
+ sha1sums = db422de2b028ec284e19e2d8fd5e840540875d48
pkgname = pure-octave
diff --git a/PKGBUILD b/PKGBUILD
index 57ea547cea1b..8f33db24aad1 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,16 +3,23 @@
pkgname=pure-octave
pkgver=0.9
-pkgrel=1
+pkgrel=2
pkgdesc="embed an Octave interpreter into Pure."
arch=("i686" "x86_64")
license=('GPL3')
url="http://purelang.bitbucket.org/"
+# NB: Currently requires octave-hg (4.3.0+) to build, Octave 4.2 is broken.
depends=('pure' 'octave')
makedepends=()
groups=(pure-complete pure-math)
-source=("https://bitbucket.org/purelang/pure-lang/downloads/$pkgname-$pkgver.tar.gz")
-sha1sums=('2d4b3cad23aadcd33925cea04661e2eab6109423')
+source=("https://github.com/agraef/pure-lang/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz" octave-4.3-compat.diff)
+sha1sums=('2d4b3cad23aadcd33925cea04661e2eab6109423'
+ 'db422de2b028ec284e19e2d8fd5e840540875d48')
+
+prepare() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -p2 < ../octave-4.3-compat.diff
+}
build() {
cd $srcdir/$pkgname-$pkgver
diff --git a/octave-4.3-compat.diff b/octave-4.3-compat.diff
new file mode 100644
index 000000000000..3db5404425b0
--- /dev/null
+++ b/octave-4.3-compat.diff
@@ -0,0 +1,53 @@
+diff --git a/pure-octave/embed.cc b/pure-octave/embed.cc
+index 94bb666b..bae774f6 100644
+--- a/pure-octave/embed.cc
++++ b/pure-octave/embed.cc
+@@ -98,6 +98,35 @@ static void my_clean_up_and_exit(int exit_status, bool safe_to_return)
+ embedded_interpreter = 0;
+ }
+ }
++
++// other recent breakage in the 4.3 API:
++#define is_bool_type islogical
++#define is_integer_type isinteger
++#define is_complex_type iscomplex
++
++#define get_global_value myget_global_value
++#define set_global_value myset_global_value
++
++octave_value
++get_global_value (const std::string& nm, bool silent)
++{
++ octave::symbol_table& symtab = embedded_interpreter->get_symbol_table();
++
++ octave_value val = symtab.global_varval (nm);
++
++ if (val.is_undefined () && ! silent)
++ error ("get_global_value: undefined symbol '%s'", nm.c_str ());
++
++ return val;
++}
++
++void
++set_global_value (const std::string& nm, const octave_value& val)
++{
++ octave::symbol_table& symtab = embedded_interpreter->get_symbol_table();
++
++ symtab.global_assign (nm, val);
++}
+ #endif
+
+ static void install_builtins();
+@@ -843,7 +872,12 @@ pure_expr *octave_func(pure_expr *fun)
+ // First try to find an ordinary function handle.
+ char *s;
+ if (pure_is_cstring_dup(fun, &s)) {
++#if OCTAVE_MAJOR>4 || OCTAVE_MAJOR>=4 && OCTAVE_MINOR>=3
++ octave::symbol_table& symtab = embedded_interpreter->get_symbol_table();
++ octave_value f = symtab.find_function(s);
++#else
+ octave_value f = symbol_table::find_function(s);
++#endif
+ free(s);
+ if (f.is_defined()) {
+ pure_expr *f = pure_string_dup("str2func"),