[apron] Fix the tests for GCC 4.7.1.
Jerry James
jjames at fedoraproject.org
Wed Jul 25 21:07:41 UTC 2012
commit 17f95a3ef5ac2481efb65c22f8a07593a8707a96
Author: Jerry James <loganjerry at gmail.com>
Date: Wed Jul 25 15:07:01 2012 -0600
Fix the tests for GCC 4.7.1.
apron-test.patch | 335 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
apron.spec | 5 +-
2 files changed, 339 insertions(+), 1 deletions(-)
---
diff --git a/apron-test.patch b/apron-test.patch
new file mode 100644
index 0000000..a3dbbb5
--- /dev/null
+++ b/apron-test.patch
@@ -0,0 +1,335 @@
+--- ./apronxx/apronxx_test.cc.orig 2009-12-22 06:33:22.000000000 -0700
++++ ./apronxx/apronxx_test.cc 2012-07-25 14:53:57.429804754 -0600
+@@ -327,11 +327,13 @@ void test_coeff()
+
+ void test_dimchange()
+ {
++ ap_dim_t temp_array1[3] = {1,2,3};
++ ap_dim_t temp_array2[3] = {3,2,1};
+ cout << endl << "dimchange"
+ << endl << "=========" << endl << endl;
+- dimchange d = dimchange(1,2,(ap_dim_t[]){1,2,3});
++ dimchange d = dimchange(1,2,temp_array1);
+ cout << "from array 1 2 3: " << d;
+- d = (ap_dim_t[]){3,2,1};
++ d = temp_array2;
+ cout << "from array 3 2 1: " << d;
+ cout << d.get_intdim() << " " << d.get_realdim() << " " << d.get(0) << " " << d[1] << endl;
+ try { d.get(3); assert(0); } catch (out_of_range& b) {}
+@@ -362,15 +364,17 @@ void test_dimchange()
+
+ void test_dimperm()
+ {
++ ap_dim_t temp_array1[3] = {1,0,2};
++ ap_dim_t temp_array2[3] = {1,2,0};
+ cout << endl << "dimperm"
+ << endl << "=======" << endl << endl;
+ dimperm i = id(3);
+ cout << "identity: " << i << endl;
+- dimperm d = dimperm(3,(ap_dim_t[]){1,0,2});
++ dimperm d = dimperm(3,temp_array1);
+ cout << "from array 1 0 2: " << d;
+ d = id(3);
+ cout << "identity: " << d;
+- d = (ap_dim_t[]){1,2,0};
++ d = temp_array2;
+ cout << "from array 1 2 0: " << d;
+ cout << d.size() << " " << d.get(0) << " " << d[1] << endl;
+ try { d.get(3); assert(0); } catch (out_of_range& b) {}
+@@ -408,8 +412,10 @@ void test_dimperm()
+
+ void test_linexpr0()
+ {
+- dimchange dim = dimchange(1,1,(ap_dim_t[]){0,2});
+- dimperm perm = dimperm(3,(ap_dim_t[]){1,0,2});
++ ap_dim_t temp_array1[2] = {0,2};
++ ap_dim_t temp_array2[3] = {1,0,2};
++ dimchange dim = dimchange(1,1,temp_array1);
++ dimperm perm = dimperm(3,temp_array2);
+ dimperm perm2 = -perm;
+
+ // dense
+@@ -554,6 +560,8 @@ void test_linexpr0()
+
+ void test_lincons0()
+ {
++ ap_dim_t temp_array1[2] = {0,2};
++ ap_dim_t temp_array2[3] = {1,0,2};
+ cout << endl << "lincons0"
+ << endl << "========" << endl << endl;
+ coeff a[] = {1,2,3};
+@@ -568,10 +576,10 @@ void test_lincons0()
+ lincons0 m = l;
+ assert(!l.is_unsat() && l.is_quasilinear() && l.is_linear());
+ cout << "copy 1x0 + 2x1 + 3x2 + 4 = 0: " << m << endl;
+- lincons0 n = lincons0(m,dimchange(2,0,(ap_dim_t[]){0,2}));
++ lincons0 n = lincons0(m,dimchange(2,0,temp_array1));
+ assert(!n.is_unsat() && n.is_quasilinear() && n.is_linear());
+ cout << "dimchange 1x1 + 2x2 + 3x4 + 4 = 0: " << n << endl;
+- lincons0 o = lincons0(m,dimperm(3,(ap_dim_t[]){1,0,2}));
++ lincons0 o = lincons0(m,dimperm(3,temp_array2));
+ assert(!o.is_unsat() && o.is_quasilinear() && o.is_linear());
+ cout << "dimperm 2x0 + 1x1 + 3x2 + 4 = 0: " << o << endl;
+ cout << "unsat: " << lincons0(unsat()) << endl;
+@@ -582,9 +590,9 @@ void test_lincons0()
+ cout << "unsat: " << l << endl;
+ o = n = lincons0(AP_CONS_EQ,linexpr0(3,a,4));
+ cout << "chained copy 1x0 + 2x1 + 3x2 + 4 = 0: " << o << endl;
+- o.add_dimensions(dimchange(2,0,(ap_dim_t[]){0,2}));
++ o.add_dimensions(dimchange(2,0,temp_array1));
+ cout << "dimchange 1x1 + 2x2 + 3x4 + 4 = 0: " << o << endl;
+- n.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++ n.permute_dimensions(dimperm(3,temp_array2));
+ cout << "dimperm 2x0 + 1x1 + 3x2 + 4 = 0: " << n << endl;
+ n.resize(2);
+ cout << "resize 2x0 + 1x1 + 4 = 0: " << n << endl;
+@@ -620,6 +628,8 @@ void test_lincons0()
+
+ void test_lincons0_array()
+ {
++ ap_dim_t temp_array1[3] = {1,0,2};
++ ap_dim_t temp_array2[2] = {0,2};
+ cout << endl << "lincons0 array"
+ << endl << "==============" << endl << endl;
+ coeff a[] = {1,2,3};
+@@ -631,9 +641,9 @@ void test_lincons0_array()
+ cout << "construct: " << t << endl;
+ lincons0_array u = t;
+ cout << "copy: " << t << endl;
+- lincons0_array v = lincons0_array(u,dimperm(3,(ap_dim_t[]){1,0,2}));
++ lincons0_array v = lincons0_array(u,dimperm(3,temp_array1));
+ cout << "permutation: " << v << endl;
+- lincons0_array w = lincons0_array(u,dimchange(1,1,(ap_dim_t[]){0,2}));
++ lincons0_array w = lincons0_array(u,dimchange(1,1,temp_array2));
+ cout << "dim change: " << w << endl;
+ lincons0 ar[3] = { lincons0(AP_CONS_EQ,linexpr0(3,a,5)),
+ lincons0(AP_CONS_EQ,linexpr0(2,b,4)),
+@@ -650,10 +660,10 @@ void test_lincons0_array()
+ cout << "from vector: " << x << endl;
+ w = v;
+ cout << "copy: " << w << endl;
+- w.add_dimensions(dimchange(1,1,(ap_dim_t[]){0,2}));
++ w.add_dimensions(dimchange(1,1,temp_array2));
+ cout << "dim change: " << w << endl;
+ w = v;
+- w.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++ w.permute_dimensions(dimperm(3,temp_array1));
+ cout << "permutation: " << w << endl;
+ cout << "size: " << w.size() << endl;
+ assert(w.is_linear() && w.is_quasilinear());
+@@ -675,6 +685,8 @@ void test_lincons0_array()
+
+ void test_generator0()
+ {
++ ap_dim_t temp_array1[2] = {0,2};
++ ap_dim_t temp_array2[3] = {1,0,2};
+ cout << endl << "generator0"
+ << endl << "==========" << endl << endl;
+ coeff a[] = {1,2,3};
+@@ -688,17 +700,17 @@ void test_generator0()
+ generator0 l = generator0(AP_GEN_VERTEX,linexpr0(3,a,4));
+ generator0 m = l;
+ cout << "copy vert 1x0 + 2x1 + 3x2 + 4: " << m << endl;
+- generator0 n = generator0(m,dimchange(2,0,(ap_dim_t[]){0,2}));
++ generator0 n = generator0(m,dimchange(2,0,temp_array1));
+ cout << "dimchange vert 1x1 + 2x2 + 3x4 + 4: " << n << endl;
+- generator0 o = generator0(m,dimperm(3,(ap_dim_t[]){1,0,2}));
++ generator0 o = generator0(m,dimperm(3,temp_array2));
+ cout << "dimperm vert 2x0 + 1x1 + 3x2 + 4: " << o << endl;
+ l = generator0(AP_GEN_RAY,linexpr0(4,b,5));
+ cout << "copy ray 4x0 + 3x1 + 2x2 + 1x3 + 5: " << l << endl;
+ o = n = generator0(AP_GEN_LINE,linexpr0(3,a,4));
+ cout << "chained copy line 1x0 + 2x1 + 3x2 + 4: " << o << endl;
+- o.add_dimensions(dimchange(2,0,(ap_dim_t[]){0,2}));
++ o.add_dimensions(dimchange(2,0,temp_array1));
+ cout << "dimchange line 1x1 + 2x2 + 3x4 + 4: " << o << endl;
+- n.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++ n.permute_dimensions(dimperm(3,temp_array2));
+ cout << "dimperm line 2x0 + 1x1 + 3x2 + 4: " << n << endl;
+ n.resize(2);
+ cout << "resize line 2x0 + 1x1 + 4: " << n << endl;
+@@ -723,6 +735,8 @@ void test_generator0()
+
+ void test_generator0_array()
+ {
++ ap_dim_t temp_array1[3] = {1,0,2};
++ ap_dim_t temp_array2[2] = {0,2};
+ cout << endl << "generator0 array"
+ << endl << "================" << endl << endl;
+ coeff a[] = {1,2,3};
+@@ -734,9 +748,9 @@ void test_generator0_array()
+ cout << "construct: " << t << endl;
+ generator0_array u = t;
+ cout << "copy: " << t << endl;
+- generator0_array v = generator0_array(u,dimperm(3,(ap_dim_t[]){1,0,2}));
++ generator0_array v = generator0_array(u,dimperm(3,temp_array1));
+ cout << "permutation: " << v << endl;
+- generator0_array w = generator0_array(u,dimchange(1,1,(ap_dim_t[]){0,2}));
++ generator0_array w = generator0_array(u,dimchange(1,1,temp_array2));
+ cout << "dim change: " << w << endl;
+ generator0 ar[3] = { generator0(AP_GEN_VERTEX,linexpr0(3,a,5)),
+ generator0(AP_GEN_VERTEX,linexpr0(2,b,4)),
+@@ -753,10 +767,10 @@ void test_generator0_array()
+ cout << "from vector: " << x << endl;
+ w = v;
+ cout << "copy: " << w << endl;
+- w.add_dimensions(dimchange(1,1,(ap_dim_t[]){0,2}));
++ w.add_dimensions(dimchange(1,1,temp_array2));
+ cout << "dim change: " << w << endl;
+ w = v;
+- w.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++ w.permute_dimensions(dimperm(3,temp_array1));
+ cout << "permutation: " << w << endl;
+ cout << "size: " << w.size() << endl;
+ w[0] = generator0(AP_GEN_LINE,linexpr0(2,b,88));
+@@ -775,6 +789,8 @@ void test_generator0_array()
+
+ void test_texpr0()
+ {
++ ap_dim_t temp_array1[2] = {0,2};
++ ap_dim_t temp_array2[3] = {1,0,2};
+ cout << endl << "texpr0"
+ << endl << "======" << endl << endl;
+ coeff a[] = {1,2,3};
+@@ -857,8 +873,8 @@ void test_texpr0()
+ x = y = sqrt(dim(0)+1); cout << "chained assign sqrt(x0+1): " << x << "; " << y << endl;
+
+ // dimensions
+- dimchange dimc = dimchange(1,1,(ap_dim_t[]){0,2});
+- dimperm perm = dimperm(3,(ap_dim_t[]){1,0,2});
++ dimchange dimc = dimchange(1,1,temp_array1);
++ dimperm perm = dimperm(3,temp_array2);
+ x = dim(0)/dim(1);
+ cout << "add dim x1/x2: " << texpr0(x,dimc) << endl;
+ cout << "del dim ]-oo;+oo[/x0: " << texpr0(x,dimc,false) << endl;
+@@ -1002,6 +1018,8 @@ void test_texpr0()
+
+ void test_tcons0()
+ {
++ ap_dim_t temp_array1[2] = {0,2};
++ ap_dim_t temp_array2[3] = {1,0,2};
+ cout << endl << "tcons0"
+ << endl << "======" << endl << endl;
+ coeff a[] = {1,2,3};
+@@ -1026,9 +1044,9 @@ void test_tcons0()
+ assert(!l.is_interval_cst() && !l.is_interval_linear() && l.is_interval_polynomial() &&
+ l.is_interval_polyfrac() && l.is_scalar());
+ cout << "copy x0 * x2 = 0: " << m << endl;
+- tcons0 n = tcons0(m,dimchange(2,0,(ap_dim_t[]){0,2}));
++ tcons0 n = tcons0(m,dimchange(2,0,temp_array1));
+ cout << "dimchange x1 * x4 = 0: " << n << endl;
+- tcons0 o = tcons0(m,dimperm(3,(ap_dim_t[]){1,0,2}));
++ tcons0 o = tcons0(m,dimperm(3,temp_array2));
+ cout << "dimperm x1 * x2 = 0: " << o << endl;
+ cout << "unsat: " << tcons0(unsat()) << endl;
+ l = tcons0(AP_CONS_SUPEQ,dim(0));
+@@ -1040,12 +1058,12 @@ void test_tcons0()
+ l.is_interval_polyfrac() && l.is_scalar());
+ o = n = tcons0(AP_CONS_EQ,dim(0)*dim(2)+2);
+ cout << "chained copy x0 * x2 +2 = 0: " << o << endl;
+- o.add_dimensions(dimchange(2,0,(ap_dim_t[]){0,2}));
++ o.add_dimensions(dimchange(2,0,temp_array1));
+ cout << "dimchange x1 * x4 + 2 = 0: " << o << endl;
+ o = tcons0(AP_CONS_EQ,dim(0)*dim(3)+2);
+- o.remove_dimensions(dimchange(2,0,(ap_dim_t[]){0,2}));
++ o.remove_dimensions(dimchange(2,0,temp_array1));
+ cout << "dimchange ]-oo;+oo[ * x1 + 2 = 0: " << o << endl;
+- n.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++ n.permute_dimensions(dimperm(3,temp_array2));
+ cout << "dimperm x1 * x2 + 2 = 0: " << n << endl;
+ assert(n.get_constyp()==AP_CONS_EQ);
+ n.get_constyp()=AP_CONS_SUP;
+@@ -1084,6 +1102,8 @@ void test_tcons0()
+
+ void test_tcons0_array()
+ {
++ ap_dim_t temp_array1[3] = {1,0,2};
++ ap_dim_t temp_array2[2] = {0,2};
+ cout << endl << "tcons0 array"
+ << endl << "============" << endl << endl;
+ coeff a[] = {1,2,3};
+@@ -1095,11 +1115,11 @@ void test_tcons0_array()
+ cout << "construct: " << t << endl;
+ tcons0_array u = t;
+ cout << "copy: " << t << endl;
+- tcons0_array v = tcons0_array(u,dimperm(3,(ap_dim_t[]){1,0,2}));
++ tcons0_array v = tcons0_array(u,dimperm(3,temp_array1));
+ cout << "permutation: " << v << endl;
+- tcons0_array w = tcons0_array(u,dimchange(1,1,(ap_dim_t[]){0,2}));
++ tcons0_array w = tcons0_array(u,dimchange(1,1,temp_array2));
+ cout << "add dim: " << w << endl;
+- tcons0_array ww = tcons0_array(u,dimchange(1,1,(ap_dim_t[]){0,2}),false);
++ tcons0_array ww = tcons0_array(u,dimchange(1,1,temp_array2),false);
+ cout << "rem dim: " << ww << endl;
+ tcons0 ar[3] = { tcons0(AP_CONS_SUPEQ,dim(0)*dim(1)*dim(2)),
+ tcons0(AP_CONS_EQ,dim(0)%dim(1)),
+@@ -1117,13 +1137,13 @@ void test_tcons0_array()
+ cout << "from vector: " << x << endl;
+ w = u;
+ cout << "copy: " << w << endl;
+- w.add_dimensions(dimchange(1,1,(ap_dim_t[]){0,2}));
++ w.add_dimensions(dimchange(1,1,temp_array2));
+ cout << "add dim: " << w << endl;
+ w = u;
+- w.remove_dimensions(dimchange(1,1,(ap_dim_t[]){0,2}));
++ w.remove_dimensions(dimchange(1,1,temp_array2));
+ cout << "del dim: " << w << endl;
+ w = u;
+- w.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++ w.permute_dimensions(dimperm(3,temp_array1));
+ cout << "permutation: " << w << endl;
+ cout << "size: " << w.size() << endl;
+ assert(!w.is_interval_linear());
+@@ -1607,7 +1627,6 @@ void test_texpr1()
+ var af[] = { "f1","f3","f2" };
+ environment env(ai,2,af,2);
+ environment env2(ai,3,af,3);
+- coeff a[] = {1,2,3};
+
+ // construction
+ cout << "construct 2: " << texpr1(env,2) << endl;
+@@ -1806,7 +1825,6 @@ void test_tcons1_array()
+ var af[] = { "f1","f3","f2" };
+ environment env(ai,2,af,2);
+ environment env2(ai,3,af,3);
+- coeff a[] = {1,2,3};
+ coeff b[] = {5,3};
+ tcons1_array t = tcons1_array(env,2);
+ try { cout << t; assert(0); } catch (invalid_argument& r) { cout << endl; }
+@@ -1859,6 +1877,9 @@ void test_tcons1_array()
+
+ void test_abstract0(manager& m, manager& mm)
+ {
++ ap_dim_t temp_array1[3] = {1,2,3};
++ ap_dim_t temp_array2[5] = {0,1,3,4,2};
++ ap_dim_t temp_array3[3] = {0,1,2};
+ cout << "level 0" << endl << endl;
+
+ interval i[5] = {
+@@ -2220,7 +2241,7 @@ void test_abstract0(manager& m, manager&
+
+ // dim change & permute
+
+- dimchange dc = dimchange(1,2,(ap_dim_t[]){1,2,3});
++ dimchange dc = dimchange(1,2,temp_array1);
+ a1 = abstract0(m,2,3,ia);
+ add_dimensions(m,a2,a1,dc);
+ add_dimensions(m,a3,a1,dc,true);
+@@ -2235,7 +2256,7 @@ void test_abstract0(manager& m, manager&
+ assert(a1==abstract0(m,2,3,ia));
+ cout << "remove dim: " << a1 << endl;
+
+- dimperm dp = dimperm(5,(ap_dim_t[]){0,1,3,4,2});
++ dimperm dp = dimperm(5,temp_array2);
+ a1 = abstract0(m,2,3,ia);
+ permute_dimensions(m,a2,a1,dp);
+ a1.permute_dimensions(m,dp);
+@@ -2243,7 +2264,7 @@ void test_abstract0(manager& m, manager&
+ cout << "permute dim: " << a1 << endl;
+ a1.permute_dimensions(m,-dp);
+ assert(a1==abstract0(m,2,3,ia));
+- try { a1.permute_dimensions(m,dimperm(3,(ap_dim_t[]){0,1,2})); assert(0); }
++ try { a1.permute_dimensions(m,dimperm(3,temp_array3)); assert(0); }
+ catch (invalid_argument&c) {}
+
+ // expand fold
diff --git a/apron.spec b/apron.spec
index 27ad46a..226368d 100644
--- a/apron.spec
+++ b/apron.spec
@@ -21,6 +21,8 @@ Source0: http://apron.cri.ensmp.fr/library/%{name}-%{version}.tgz
Patch0: %{name}-weak.patch
# Sent upstream 10 May 2012. This patch adapts to mlgmpidl 1.2.
Patch1: %{name}-mlgmpidl12.patch
+# Not yet sent upstream. Fix the tests for GCC 4.7.1.
+Patch2: %{name}-test.patch
BuildRequires: mpfr-devel
BuildRequires: ppl-devel
@@ -79,6 +81,7 @@ Development files for the Ocaml interface to the APRON library.
%setup -q
%patch0
%patch1
+%patch2
# Set the configuration values
sed -e "s|^# HAS_CPP.*|HAS_CPP = 1|" \
@@ -88,7 +91,7 @@ sed -e "s|^# HAS_CPP.*|HAS_CPP = 1|" \
-e "s|^MLGMPIDL_PREFIX =.*|MLGMPIDL_PREFIX=%{_libdir}/ocaml/gmp|" \
-e "s|^PPL_PREFIX =.*|PPL_PREFIX=%{_prefix}|" \
-e "s|^-fPIC -O3 -DNDEBUG|$RPM_OPT_FLAGS -fPIC -DNDEBUG -Wl,--as-needed|" \
- -e "s|^-fPIC -g -O0|$RPM_OPT_FLAGS -fPIC -O0 -Wl,--as-needed|" \
+ -e "s|^-fPIC -g -O0|$RPM_OPT_FLAGS -fPIC -Wl,--as-needed|" \
%ifarch %{ocaml_arches}
%if !%opt
-e "s|^HAS_OCAMLOPT.*|# HAS_OCAMLOPT = 1|" \
More information about the scm-commits
mailing list