Hello community, here is the log from the commit of package libixion for openSUSE:Factory checked in at 2015-04-21 10:49:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libixion (Old) and /work/SRC/openSUSE:Factory/.libixion.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libixion" Changes: -------- --- /work/SRC/openSUSE:Factory/libixion/libixion.changes 2015-03-30 19:10:58.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libixion.new/libixion.changes 2015-04-21 10:49:26.000000000 +0200 @@ -1,0 +2,7 @@ +Mon Apr 13 10:47:29 UTC 2015 - [email protected] + +- Version bump to 0.9.1: + * various triv bugfixes + * Build with tests and work this time + +------------------------------------------------------------------- Old: ---- libixion-0.9.0.tar.xz New: ---- libixion-0.9.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libixion.spec ++++++ --- /var/tmp/diff_new_pack.ohxILo/_old 2015-04-21 10:49:27.000000000 +0200 +++ /var/tmp/diff_new_pack.ohxILo/_new 2015-04-21 10:49:27.000000000 +0200 @@ -18,7 +18,7 @@ %define libname libixion-0_10-0 Name: libixion -Version: 0.9.0 +Version: 0.9.1 Release: 0 Summary: Threaded multi-target formula parser & interpreter License: MIT @@ -82,8 +82,7 @@ make %{?_smp_mflags} %check -# Tests broken in this release, wil be fixed next time -make check %{?_smp_mflags} || : +make check %{?_smp_mflags} %install make DESTDIR=%{buildroot} install %{?_smp_mflags} ++++++ libixion-0.9.0.tar.xz -> libixion-0.9.1.tar.xz ++++++ ++++ 3670 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/AUTHORS new/libixion-0.9.1/AUTHORS --- old/libixion-0.9.0/AUTHORS 2015-01-30 03:11:24.000000000 +0100 +++ new/libixion-0.9.1/AUTHORS 2015-04-05 16:07:03.000000000 +0200 @@ -1,2 +1,10 @@ Kohei Yoshida <[email protected]> +David Tardon <[email protected]> Cédric Bosdonnat <[email protected]> +Markus Mohrhard <[email protected]> +Fridrich Štrba <[email protected]> +Andreas Schwab <[email protected]> +Bjoern Michaelsen <[email protected]> +Miklos Vajna <[email protected]> +Rene Engelhard <[email protected]> +Tomas Chvatal <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/ChangeLog new/libixion-0.9.1/ChangeLog --- old/libixion-0.9.0/ChangeLog 2015-02-17 02:26:46.000000000 +0100 +++ new/libixion-0.9.1/ChangeLog 2015-04-05 16:13:36.000000000 +0200 @@ -1,5 +1,119 @@ # Generated by Makefile. Do not edit. +commit 823c96ff213760bf3e4e9f26c7b456b1e522b0f2 +Author: Kohei Yoshida <[email protected]> +Date: Sun Apr 5 10:07:10 2015 -0400 + + Update AUTHORS. + +commit dee0ffa0a7ea98e33d305b7d56216030a9712448 +Author: Kohei Yoshida <[email protected]> +Date: Sun Apr 5 10:00:30 2015 -0400 + + Create README on the fly. + +commit 4e3686355f73d3b1f69651b5f6a31e6a1e5da2ef +Author: Kohei Yoshida <[email protected]> +Date: Sun Apr 5 09:41:26 2015 -0400 + + Set the version to 0.9.1. + +commit 2bd12372cef579d5c644b844ffb3b198b51c5bce +Author: Kohei Yoshida <[email protected]> +Date: Sun Apr 5 12:54:59 2015 +0000 + + Reformatted the Download section to make it appear better. + +commit 2684b41e7d17adb8326a1eb5db58c64c49f4598e +Author: Kohei Yoshida <[email protected]> +Date: Sun Apr 5 08:46:40 2015 -0400 + + Add Download section content to README. + +commit 2ac9865bef5bd7def83272c0e44d5ccc541ddc3b +Author: Kohei Yoshida <[email protected]> +Date: Sun Apr 5 08:29:25 2015 -0400 + + Put the project's old wiki home content into README. + +commit e9b71b7d083bddd291f12efd07113d7aec9f87ff +Author: David Tardon <[email protected]> +Date: Sun Apr 5 10:55:49 2015 +0200 + + add something to NEWS + +commit a833414d6f8a841da968692a9773bd86dc873ed6 +Author: David Tardon <[email protected]> +Date: Fri Mar 6 08:33:19 2015 -0500 + + match argument and format unit + + This makes ixion.sheet work correctly on s390x. + +commit 877f3e2fe6b38d320a6732c5d569652b7cbdc872 +Author: David Tardon <[email protected]> +Date: Fri Mar 6 14:12:12 2015 +0100 + + set correct CPPFLAGS for the python module + +commit 9e7763aa51d50b941754ad678fd5ec8e4fe5670f +Author: David Tardon <[email protected]> +Date: Fri Mar 6 10:17:55 2015 +0100 + + let python do the arg parsing + +commit e7806c150283ed4e7dbbeda82f9408ece9139841 +Author: David Tardon <[email protected]> +Date: Fri Mar 6 10:14:01 2015 +0100 + + add cast + +commit 209bea9422b2e4675cc87eb63ab98790e60a73e7 +Author: David Tardon <[email protected]> +Date: Fri Mar 6 09:56:46 2015 +0100 + + use METH_NOARGS flag + +commit 21e8f74df328006a24096f4587e8d668f75ac185 +Author: David Tardon <[email protected]> +Date: Thu Mar 5 17:47:30 2015 +0100 + + add missing includes for assert() + +commit 6acd183e4db7b8dc4c6336750f01b68de3fb4fb1 +Author: David Tardon <[email protected]> +Date: Thu Mar 5 16:26:37 2015 +0100 + + fix python test on some platforms + + Functions with METH_VARAGS flag (of type PyCFunction) do not take + keywords. Attempt to use a 3rd argument would access some irrelevant + data on the stack. + +commit a32dad8961413056a10f61881843fa4a895c89c9 +Author: David Tardon <[email protected]> +Date: Wed Feb 18 08:42:02 2015 +0100 + + fix make distcheck + +commit b85f73c1ad4e665e265330d22f3f5c319b58c541 +Author: David Tardon <[email protected]> +Date: Wed Feb 18 07:57:58 2015 +0100 + + package ixion-python-test.py + +commit c940a1c061e98ff0cce8119e6ced2565996e6f5a +Author: David Tardon <[email protected]> +Date: Mon Feb 9 21:20:04 2015 +0100 + + add compile to .gitignore + +commit a359ee803fb24a3c190941974bc61dc3ff4443d6 +Author: Kohei Yoshida <[email protected]> +Date: Mon Feb 16 20:29:19 2015 -0500 + + Add python doc files to automake file. + commit 4232d1b8b1ec3d350ca8ce1d2f981d29171d2b84 Author: Kohei Yoshida <[email protected]> Date: Mon Feb 16 20:16:53 2015 -0500 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/Makefile.am new/libixion-0.9.1/Makefile.am --- old/libixion-0.9.0/Makefile.am 2015-02-17 02:19:18.000000000 +0100 +++ new/libixion-0.9.1/Makefile.am 2015-04-05 16:00:12.000000000 +0200 @@ -36,6 +36,7 @@ test/13-relational-operators-02.txt \ test/13-relational-operators-03.txt \ test/ixion-parser-test.sh \ + test/ixion-python-test.py \ test/thread/function-parallel.txt \ test/thread/function-wait-simple.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/NEWS new/libixion-0.9.1/NEWS --- old/libixion-0.9.0/NEWS 2015-01-30 03:11:21.000000000 +0100 +++ new/libixion-0.9.1/NEWS 2015-04-05 14:25:45.000000000 +0200 @@ -0,0 +1,5 @@ +libixion 0.9.1 + +- Include python bindings test in the tarball. +- Fix various portability problems in python bindings. +- Several minor build fixes. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/README new/libixion-0.9.1/README --- old/libixion-0.9.0/README 2015-01-30 03:11:28.000000000 +0100 +++ new/libixion-0.9.1/README 2015-04-05 16:12:29.000000000 +0200 @@ -1 +1,83 @@ -Ixion project \ No newline at end of file +Ixion is a general purpose formula parser & interpreter that can calculate +multiple named targets, or "cells". + +## Overview +The goal of this project is to create a library for calculating the +results of formula expressions stored in multiple named targets, or +"cells". The cells can be referenced from each other, and the library +takes care of resolving their dependencies automatically upon calculation. +The caller can run the calculation routine either in a single-threaded +mode, or a multi-threaded mode. The library also supports re-calculations +where the contents of one or more cells have been modified since the last +calculation, and a partial calculation of only the affected cells need to +be calculated. + +## Portability +This library is written with portability in mind; platform specific calls +are avoided as much as possible. It makes extensive use of the [boost +library](http://boost.org) to achieve portability where possible. + +## Performance +Achieving good performance is one of the goals of this project. As much +care is taken as humanly possible, to attain reasonable performance. + +## Threaded calculation +Ixion can perform threaded calculation using arbitrary number of threads, +for both full and partial calculation modes. + +## Supported features +* Each calculation session is defined in a plain text file, which is parsed + and interpreted by the Ixion parser. +* Fully threaded calculation. +* Name resolution using A1-style references. +* Support 2D cell references and named expressions. +* Support range references. +* Dependency tracking during both full calculation and partial re-calculation. +* Inline strings. +* Volatile functions. The framework for volatile functions is implemented. We + just need to implement more functions. + +## Features in progress +* 3D cell and range references - Initial support is in place. Needs more + testing. +* Standard C/C++ interface for external applications - It's there, but needs + to be stabilized. + +## Planned features +* Matrix support. + * Inline matrix. + * Matrix as formula out from a single function. + * Jump matrix - range input to function that expects a scalar input, and + generate matrix output. +* Support for R1C1 style references. +* More built-in functions. +* Support for custom functions defined in the caller program. +* Support for external references. + +## Download + +### 0.9.0 [libixion-0.9.0.tar.xz](http://kohei.us/files/ixion/src/libixion-0.9.0.tar.xz) + * release date: 2015-02-16 + * md5sum: 26f293e708513dea5e6e25e9232a7400 + * sha1sum: 4f97682546236aee686e86293f9890d79f25cf23 + +### 0.7.0 [libixion-0.7.0.tar.bz2](http://kohei.us/files/ixion/src/libixion-0.7.0.tar.bz2) + * release date: 2013-12-13 + * md5sum: 000157117801f9507f34b26ba998c4d1 + * sha1sum: 99b8f9f49078ef7e15280f5c73dff639a6e9472c + +### 0.5.0 [libixion-0.5.0.tar.bz2](http://kohei.us/files/ixion/src/libixion-0.5.0.tar.bz2) + * release date: 2013-03-27 + * md5sum: ebaeab9ffe1e6bd68b2a20bfa430b3af + * sha1sum: 99290ed5aa2ab2338ba04737210256c48885107c + +### 0.3.0 [libixion_0.3.0.tar.bz2](http://kohei.us/files/ixion/src/libixion_0.3.0.tar.bz2) + * release date: 2011-11-01 + * md5sum: 96a36a0016f968a5a7c4b167eeb1643b + * sha1sum: ac1fa915303ed8492ac50d6f0aa4d974e8405954 + +## Python binding +Starting with version 0.9.0, Ixion provides Python binding for those who wish +to use Ixion from Python scripts. Refer to this +[documentation](http://kohei.us/files/ixion/pydoc/current) for more details on +how to use Ixion's Python API. \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/autogen.sh new/libixion-0.9.1/autogen.sh --- old/libixion-0.9.0/autogen.sh 2015-01-30 03:11:28.000000000 +0100 +++ new/libixion-0.9.1/autogen.sh 2015-04-05 16:10:55.000000000 +0200 @@ -1,6 +1,9 @@ #!/bin/sh -touch ChangeLog +if [ -d .git ]; then + touch ChangeLog + cp README.md README +fi TESTLIBTOOLIZE="glibtoolize libtoolize" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/configure.ac new/libixion-0.9.1/configure.ac --- old/libixion-0.9.0/configure.ac 2015-02-12 02:52:21.000000000 +0100 +++ new/libixion-0.9.1/configure.ac 2015-04-05 15:32:05.000000000 +0200 @@ -3,7 +3,7 @@ m4_define([ixion_major_version], [0]) m4_define([ixion_minor_version], [9]) -m4_define([ixion_micro_version], [0]) +m4_define([ixion_micro_version], [1]) m4_define([ixion_version], [ixion_major_version.ixion_minor_version.ixion_micro_version]) m4_define([ixion_minor_api_version], [m4_eval(ixion_minor_version + ixion_minor_version%2)]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/m4/libtool.m4 new/libixion-0.9.1/m4/libtool.m4 --- old/libixion-0.9.0/m4/libtool.m4 2015-02-17 02:19:21.000000000 +0100 +++ new/libixion-0.9.1/m4/libtool.m4 2015-04-05 16:12:30.000000000 +0200 @@ -1324,12 +1324,19 @@ LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - LD="${LD-ld} -m elf_i386" + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac ;; - powerpc64le-*linux*) + powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; - powerpc64-*linux*) + powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -1348,10 +1355,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*linux*) + powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; - powerpc-*linux*) + powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -1694,7 +1701,8 @@ ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -2518,17 +2526,6 @@ esac ;; -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no @@ -2645,7 +2642,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no @@ -2675,14 +2672,10 @@ # before this can be enabled. hardcode_into_libs=yes - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -2694,6 +2687,18 @@ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -3253,10 +3258,6 @@ fi ;; -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -3295,11 +3296,11 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -4047,7 +4048,7 @@ ;; esac ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler @@ -4111,7 +4112,7 @@ ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4346,7 +4347,7 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -4588,6 +4589,9 @@ ;; esac ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -4650,6 +4654,9 @@ openbsd*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -4871,7 +4878,7 @@ fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -5048,6 +5055,7 @@ if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi + _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then @@ -5352,7 +5360,7 @@ _LT_TAGVAR(link_all_deplibs, $1)=yes ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -6232,9 +6240,6 @@ _LT_TAGVAR(ld_shlibs, $1)=yes ;; - gnu*) - ;; - haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes @@ -6396,7 +6401,7 @@ _LT_TAGVAR(inherit_rpath, $1)=yes ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/missing new/libixion-0.9.1/missing --- old/libixion-0.9.0/missing 2015-01-30 03:11:28.000000000 +0100 +++ new/libixion-0.9.1/missing 2015-01-25 17:22:04.000000000 +0100 @@ -1,10 +1,10 @@ #! /bin/sh -# Common stub for a few missing GNU programs while installing. +# Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-01-06.18; # UTC +scriptversion=2013-10-28.13; # UTC -# Copyright (C) 1996-2012 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard <[email protected]>, 1996. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard <[email protected]>, 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -29,61 +29,33 @@ exit 1 fi -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, 'missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi +case $1 in -msg="missing on your system" + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... -Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails Supported PROGRAM values: - aclocal touch file 'aclocal.m4' - autoconf touch file 'configure' - autoheader touch file 'config.h.in' - autom4te touch the output file, or create a stub one - automake touch all 'Makefile.in' files - bison create 'y.tab.[ch]', if possible, from existing .[ch] - flex create 'lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create 'lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create 'y.tab.[ch]', if possible, from existing .[ch] + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. @@ -98,228 +70,141 @@ ;; -*) - echo 1>&2 "$0: Unknown '$1' option" + echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; +# Run the given program, remember its exit status. +"$@"; st=$? - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running '$TOOL --version' or '$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified 'acinclude.m4' or '${configure_ac}'. You might want - to install the Automake and Perl packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified '${configure_ac}'. You might want to install the - Autoconf and GNU m4 packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified 'acconfig.h' or '${configure_ac}'. You might want - to install the Autoconf and GNU m4 packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; +# If it succeeded, we are done. +test $st -eq 0 && exit 0 - automake*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'. - You might want to install the Automake and Perl packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: '$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get '$1' as part of Autoconf from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: '$1' $msg. You should only need it if - you modified a '.y' file. You may need the Bison package - in order for those modifications to take effect. You can get - Bison from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified a '.l' file. You may need the Flex package - in order for those modifications to take effect. You can get - Flex from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - Help2man package in order for those modifications to take - effect. You can get Help2man from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified a '.texi' or '.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy 'make' (AIX, - DU, IRIX). You might want to install the Texinfo package or - the GNU make package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - *) - echo 1>&2 "\ -WARNING: '$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the 'README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing '$1' program." - exit 1 - ;; -esac +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi -exit 0 +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/Makefile.am new/libixion-0.9.1/src/Makefile.am --- old/libixion-0.9.0/src/Makefile.am 2015-02-06 02:59:32.000000000 +0100 +++ new/libixion-0.9.1/src/Makefile.am 2015-02-25 04:53:03.000000000 +0100 @@ -24,4 +24,6 @@ ixion_sorter_LDADD = libixion/libixion-@[email protected] \ $(BOOST_THREAD_LIBS) $(BOOST_PROGRAM_OPTIONS_LIBS) +AM_TESTS_ENVIRONMENT = PATH=.libs$${PATH:+:$${PATH}}; epxort PATH; \ + LD_LIBRARY_PATH=libixion/.libs$${LD_LIBRARY_PATH:+:$${LD_LIBRARY_PATH}}; export LD_LIBRARY_PATH; TESTS = ../test/ixion-parser-test.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/Makefile.am new/libixion-0.9.1/src/libixion/Makefile.am --- old/libixion-0.9.0/src/libixion/Makefile.am 2015-02-06 02:59:32.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/Makefile.am 2015-02-25 04:53:03.000000000 +0100 @@ -1,6 +1,6 @@ AM_CPPFLAGS = -I$(top_srcdir)/include -DIXION_BUILD $(MDDS_CFLAGS) -EXTRA_PROGRAMS = ixion-test +check_PROGRAMS = ixion-test lib_LTLIBRARIES = libixion-@[email protected] libixion_@IXION_API_VERSION@_la_SOURCES = \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/cell.cpp new/libixion-0.9.1/src/libixion/cell.cpp --- old/libixion-0.9.0/src/libixion/cell.cpp 2015-02-17 01:33:46.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/cell.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -18,6 +18,7 @@ #include <boost/scoped_ptr.hpp> #include <boost/thread.hpp> +#include <cassert> #include <string> #include <sstream> #include <iostream> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/cell_listener_tracker.cpp new/libixion-0.9.1/src/libixion/cell_listener_tracker.cpp --- old/libixion-0.9.0/src/libixion/cell_listener_tracker.cpp 2015-02-12 02:52:21.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/cell_listener_tracker.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -16,6 +16,8 @@ #define DEBUG_CELL_LISTENER_TRACKER 0 +#include <cassert> + #if DEBUG_CELL_LISTENER_TRACKER #include <iostream> #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/cell_queue_manager.cpp new/libixion-0.9.1/src/libixion/cell_queue_manager.cpp --- old/libixion-0.9.0/src/libixion/cell_queue_manager.cpp 2015-02-12 02:52:21.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/cell_queue_manager.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -15,6 +15,7 @@ #include <boost/thread/shared_mutex.hpp> #include <boost/thread/mutex.hpp> +#include <cassert> #include <iostream> #include <queue> #include <string> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/formula_functions.cpp new/libixion-0.9.1/src/libixion/formula_functions.cpp --- old/libixion-0.9.0/src/libixion/formula_functions.cpp 2015-02-12 02:52:21.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/formula_functions.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -21,6 +21,7 @@ #define DEBUG_FORMULA_FUNCTIONS 0 +#include <cassert> #include <iostream> #include <sstream> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/formula_interpreter.cpp new/libixion-0.9.1/src/libixion/formula_interpreter.cpp --- old/libixion-0.9.0/src/libixion/formula_interpreter.cpp 2015-02-12 02:52:21.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/formula_interpreter.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -15,6 +15,7 @@ #include "ixion/interface/session_handler.hpp" #include "ixion/interface/table_handler.hpp" +#include <cassert> #include <string> #include <iostream> #include <sstream> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/formula_lexer.cpp new/libixion-0.9.1/src/libixion/formula_lexer.cpp --- old/libixion-0.9.0/src/libixion/formula_lexer.cpp 2015-01-30 03:11:23.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/formula_lexer.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -8,6 +8,7 @@ #include "ixion/formula_lexer.hpp" #include "ixion/global.hpp" +#include <cassert> #include <iostream> #include <sstream> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/formula_name_resolver.cpp new/libixion-0.9.1/src/libixion/formula_name_resolver.cpp --- old/libixion-0.9.0/src/libixion/formula_name_resolver.cpp 2015-02-12 02:52:21.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/formula_name_resolver.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -12,6 +12,7 @@ #include "formula_functions.hpp" +#include <cassert> #include <iostream> #include <sstream> #include <vector> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/formula_result.cpp new/libixion-0.9.1/src/libixion/formula_result.cpp --- old/libixion-0.9.0/src/libixion/formula_result.cpp 2015-02-12 02:52:21.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/formula_result.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -10,6 +10,7 @@ #include "ixion/exceptions.hpp" #include "ixion/interface/formula_model_access.hpp" +#include <cassert> #include <sstream> #define DEBUG_FORMULA_RESULT 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/libixion/function_objects.cpp new/libixion-0.9.1/src/libixion/function_objects.cpp --- old/libixion-0.9.0/src/libixion/function_objects.cpp 2015-02-12 02:52:21.000000000 +0100 +++ new/libixion-0.9.1/src/libixion/function_objects.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -15,6 +15,7 @@ #include "ixion/interface/formula_model_access.hpp" #include "ixion/formula_name_resolver.hpp" +#include <cassert> #include <vector> #include <boost/scoped_ptr.hpp> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/python/Makefile.am new/libixion-0.9.1/src/python/Makefile.am --- old/libixion-0.9.0/src/python/Makefile.am 2015-02-06 02:59:32.000000000 +0100 +++ new/libixion-0.9.1/src/python/Makefile.am 2015-04-05 14:25:45.000000000 +0200 @@ -1,5 +1,3 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include -DIXION_BUILD $(MDDS_CFLAGS) - pyexec_LTLIBRARIES = ixion.la ixion_la_SOURCES = \ document.hpp \ @@ -11,9 +9,10 @@ sheet.cpp ixion_la_LDFLAGS = -module -avoid-version -export-symbols-regex initixion -ixion_la_CPPFLAGS = -I$(top_srcdir)/include $(PYTHON_CFLAGS) +ixion_la_CPPFLAGS = -I$(top_srcdir)/include $(PYTHON_CFLAGS) $(MDDS_CFLAGS) ixion_la_LIBADD = \ ../libixion/libixion-@[email protected] \ $(PYTHON_LIBS) +AM_TESTS_ENVIRONMENT = PYTHONPATH=.libs$${PYTHONPATH:+:$${PYTHONPATH}}; export PYTHONPATH; TESTS = ../../test/ixion-python-test.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/python/document.cpp new/libixion-0.9.1/src/python/document.cpp --- old/libixion-0.9.0/src/python/document.cpp 2015-02-17 01:33:46.000000000 +0100 +++ new/libixion-0.9.1/src/python/document.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -69,7 +69,7 @@ return 0; } -PyObject* document_append_sheet(document* self, PyObject* args, PyObject* kwargs) +PyObject* document_append_sheet(document* self, PyObject* args) { char* sheet_name = NULL; if (!PyArg_ParseTuple(args, "s", &sheet_name)) @@ -84,11 +84,11 @@ if (!sheet_type) return NULL; - PyObject* obj_sheet = sheet_type->tp_new(sheet_type, args, kwargs); + PyObject* obj_sheet = sheet_type->tp_new(sheet_type, args, 0); if (!obj_sheet) return NULL; - sheet_type->tp_init(obj_sheet, args, kwargs); + sheet_type->tp_init(obj_sheet, args, 0); // Pass model_context to the sheet object. sheet_data* sd = get_sheet_data(obj_sheet); @@ -137,12 +137,8 @@ return Py_None; } -PyObject* document_get_sheet(document* self, PyObject* args, PyObject*) +PyObject* document_get_sheet(document* self, PyObject* arg) { - PyObject* arg = NULL; - if (!PyArg_ParseTuple(args, "O", &arg)) - return NULL; - const vector<PyObject*>& sheets = self->m_data->m_sheets; if (PyInt_Check(arg)) { @@ -212,9 +208,9 @@ PyMethodDef document_methods[] = { { "append_sheet", (PyCFunction)document_append_sheet, METH_VARARGS, "append new sheet to the document" }, - { "calculate", (PyCFunction)document_calculate, 0, "calculate formula cells" }, - { "get_sheet_names", (PyCFunction)document_get_sheet_names, 0, "get a tuple of sheet names" }, - { "get_sheet", (PyCFunction)document_get_sheet, METH_KEYWORDS, "get a sheet object either by index or name" }, + { "calculate", (PyCFunction)document_calculate, METH_NOARGS, "calculate formula cells" }, + { "get_sheet_names", (PyCFunction)document_get_sheet_names, METH_NOARGS, "get a tuple of sheet names" }, + { "get_sheet", (PyCFunction)document_get_sheet, METH_O, "get a sheet object either by index or name" }, { NULL } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/python/python.cpp new/libixion-0.9.1/src/python/python.cpp --- old/libixion-0.9.0/src/python/python.cpp 2015-02-17 01:33:46.000000000 +0100 +++ new/libixion-0.9.1/src/python/python.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -51,7 +51,7 @@ PyMethodDef ixion_methods[] = { - { "info", info, 0, "Print ixion module information." }, + { "info", (PyCFunction)info, METH_NOARGS, "Print ixion module information." }, { NULL, NULL, 0, NULL } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/src/python/sheet.cpp new/libixion-0.9.1/src/python/sheet.cpp --- old/libixion-0.9.0/src/python/sheet.cpp 2015-02-16 23:02:33.000000000 +0100 +++ new/libixion-0.9.1/src/python/sheet.cpp 2015-04-05 14:25:45.000000000 +0200 @@ -78,8 +78,8 @@ PyObject* sheet_set_numeric_cell(sheet* self, PyObject* args, PyObject* kwargs) { - long col = -1; - long row = -1; + int col = -1; + int row = -1; double val = 0.0; static const char* kwlist[] = { "row", "column", "value", NULL }; @@ -105,8 +105,8 @@ PyObject* sheet_set_string_cell(sheet* self, PyObject* args, PyObject* kwargs) { - long col = -1; - long row = -1; + int col = -1; + int row = -1; char* val = NULL; static const char* kwlist[] = { "row", "column", "value", NULL }; @@ -132,8 +132,8 @@ PyObject* sheet_set_formula_cell(sheet* self, PyObject* args, PyObject* kwargs) { - long col = -1; - long row = -1; + int col = -1; + int row = -1; char* formula = NULL; static const char* kwlist[] = { "row", "column", "value", NULL }; @@ -164,8 +164,8 @@ PyObject* sheet_get_numeric_value(sheet* self, PyObject* args, PyObject* kwargs) { - long col = -1; - long row = -1; + int col = -1; + int row = -1; static const char* kwlist[] = { "row", "column", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii", const_cast<char**>(kwlist), &row, &col)) @@ -196,8 +196,8 @@ PyObject* sheet_get_string_value(sheet* self, PyObject* args, PyObject* kwargs) { - long col = -1; - long row = -1; + int col = -1; + int row = -1; static const char* kwlist[] = { "row", "column", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii", const_cast<char**>(kwlist), &row, &col)) @@ -222,8 +222,8 @@ PyObject* sheet_get_formula_expression(sheet* self, PyObject* args, PyObject* kwargs) { - long col = -1; - long row = -1; + int col = -1; + int row = -1; static const char* kwlist[] = { "row", "column", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii", const_cast<char**>(kwlist), &row, &col)) @@ -259,8 +259,8 @@ PyObject* sheet_erase_cell(sheet* self, PyObject* args, PyObject* kwargs) { - long col = -1; - long row = -1; + int col = -1; + int row = -1; static const char* kwlist[] = { "row", "column", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii", const_cast<char**>(kwlist), &row, &col)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/test/ixion-parser-test.sh new/libixion-0.9.1/test/ixion-parser-test.sh --- old/libixion-0.9.0/test/ixion-parser-test.sh 2015-01-30 03:11:21.000000000 +0100 +++ new/libixion-0.9.1/test/ixion-parser-test.sh 2015-02-25 04:53:03.000000000 +0100 @@ -1,6 +1,5 @@ #!/usr/bin/env bash PROGDIR=`dirname $0` -PARSER=$PROGDIR/../bin/ixion-parser.sh -$PARSER $PROGDIR/*.txt +ixion-parser $PROGDIR/*.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libixion-0.9.0/test/ixion-python-test.py new/libixion-0.9.1/test/ixion-python-test.py --- old/libixion-0.9.0/test/ixion-python-test.py 1970-01-01 01:00:00.000000000 +0100 +++ new/libixion-0.9.1/test/ixion-python-test.py 2015-02-25 04:53:03.000000000 +0100 @@ -0,0 +1,222 @@ +#!/usr/bin/env python + +import unittest +import itertools + +import ixion + +class Test(unittest.TestCase): + + def setUp(self): + self.doc = ixion.Document() + + def test_append_sheets(self): + tests = ( + "Normal", # normal name + "First Sheet", # white space + "Laura's", # single quote + '"Quoted"' # double quote + ) + + sheets = [] + for test in tests: + sh = self.doc.append_sheet(test) + sheets.append(sh) + + for test, sheet in itertools.izip(tests, sheets): + self.assertEqual(test, sheet.name) + + self.assertEqual(tests, self.doc.get_sheet_names()) + + for i, test in enumerate(tests): + # get sheet by index. + sh = self.doc.get_sheet(i) + self.assertEqual(test, sh.name) + + for test in tests: + # get sheet by name. + sh = self.doc.get_sheet(test) + self.assertEqual(test, sh.name) + + try: + sheets[0].name = "Try to change sheet name" + self.assertTrue(False, "sheet name attribute should not be writable.") + except TypeError: + pass # TypeError is expected when attempting to overwrite sheet name attribute. + except: + self.assertTrue(False, "Wrong exception has been raised") + + # Trying to insert a new sheet with an existing name should fail. + try: + sh = self.doc.append_sheet(tests[0]) + self.assertTrue(False, "Trying to insert a new sheet with an existing sheet name should fail") + except ixion.DocumentError: + # This is expected. + pass + + def test_numeric_cell_input(self): + sh1 = self.doc.append_sheet("Data") + + # Empty cell should yield a value of 0.0. + check_val = sh1.get_numeric_value(0, 0) + self.assertEqual(0.0, check_val) + + tests = ( + # row, column, value + (3, 1, 11.2), + (4, 1, 12.0), + (6, 2, -12.0), + (6, 3, 0.0) + ) + + for test in tests: + sh1.set_numeric_cell(test[0], test[1], test[2]) # row, column, value + check_val = sh1.get_numeric_value(column=test[1], row=test[0]) # swap row and column + self.assertEqual(test[2], check_val) + + def test_string_cell_input(self): + sh1 = self.doc.append_sheet("Data") + + # Empty cell should yield an empty string. + check_val = sh1.get_string_value(0, 0) + self.assertEqual("", check_val) + + tests = ( + # row, column, value + (0, 0, "normal string"), # normal string + (1, 0, "A1+B1"), # string that looks like a formula expression + (2, 0, "'single quote'"), # single quote + (3, 0, "80's music"), # single quote + (4, 0, '"The" Music in the 80\'s'), # single and double quotes mixed + ) + + for test in tests: + sh1.set_string_cell(test[0], test[1], test[2]) # row, column, value + check_val = sh1.get_string_value(column=test[1], row=test[0]) # swap row and column + self.assertEqual(test[2], check_val) + + def test_formula_cell_input(self): + sh1 = self.doc.append_sheet("Data") + sh1.set_formula_cell(0, 0, "12*3") + try: + val = sh1.get_numeric_value(0, 0) + self.assertTrue(False, "TypeError should have been raised") + except TypeError: + # TypeError is expected when trying to fetch numeric value from + # formula cell before it is calculated. + pass + + self.doc.calculate() + val = sh1.get_numeric_value(0, 0) + self.assertEqual(12*3, val) + + def test_formula_cell_recalc(self): + sh1 = self.doc.append_sheet("Data") + sh1.set_numeric_cell(0, 0, 1.0) + sh1.set_numeric_cell(1, 0, 2.0) + sh1.set_numeric_cell(2, 0, 4.0) + sh1.set_formula_cell(3, 0, "SUM(A1:A3)") + + # initial calculation + self.doc.calculate() + val = sh1.get_numeric_value(3, 0) + self.assertEqual(7.0, val) + + # recalculation + sh1.set_numeric_cell(1, 0, 8.0) + self.doc.calculate() + val = sh1.get_numeric_value(3, 0) + self.assertEqual(13.0, val) + + # add another formula cell and recalc. + sh1.set_formula_cell(0, 1, "A1+15") + sh1.set_numeric_cell(0, 0, 0.0) + self.doc.calculate() + val = sh1.get_numeric_value(0, 1) + self.assertEqual(15.0, val) + val = sh1.get_numeric_value(3, 0) + self.assertEqual(12.0, val) + + def test_formula_cell_recalc2(self): + sh1 = self.doc.append_sheet("Data") + sh1.set_numeric_cell(4, 1, 12.0) # B5 + sh1.set_formula_cell(5, 1, "B5*2") + sh1.set_formula_cell(6, 1, "B6+10") + + self.doc.calculate() + val = sh1.get_numeric_value(4, 1) + self.assertEqual(12.0, val) + val = sh1.get_numeric_value(5, 1) + self.assertEqual(24.0, val) + val = sh1.get_numeric_value(6, 1) + self.assertEqual(34.0, val) + + # Delete B5 and check. + sh1.erase_cell(4, 1) + self.doc.calculate() + val = sh1.get_numeric_value(4, 1) + self.assertEqual(0.0, val) + val = sh1.get_numeric_value(5, 1) + self.assertEqual(0.0, val) + val = sh1.get_numeric_value(6, 1) + self.assertEqual(10.0, val) + + def test_formula_cell_string(self): + sh1 = self.doc.append_sheet("MyData") + sh1.set_string_cell(1, 1, "My precious string") # B2 + sh1.set_formula_cell(1, 2, "B2") # C2 + sh1.set_formula_cell(2, 2, "concatenate(B2, \" is here\")") # C3 + self.doc.calculate() + self.assertEqual("My precious string", sh1.get_string_value(1, 1)) + self.assertEqual("My precious string", sh1.get_string_value(1, 2)) + self.assertEqual("My precious string is here", sh1.get_string_value(2, 2)) + + def test_detached_sheet(self): + # You can't set values to a detached sheet that doesn't belong to a + # Document object. + sh = ixion.Sheet() + try: + sh.set_numeric_cell(1, 1, 12) + self.assertTrue(False, "failed to raise a SheetError.") + except ixion.SheetError: + pass # expected + + try: + sh.set_string_cell(2, 2, "String") + self.assertTrue(False, "failed to raise a SheetError.") + except ixion.SheetError: + pass # expected + + try: + sh.set_formula_cell(2, 2, "A1") + self.assertTrue(False, "failed to raise a SheetError.") + except ixion.SheetError: + pass # expected + + try: + sh.erase_cell(2, 1) + self.assertTrue(False, "failed to raise a SheetError.") + except ixion.SheetError: + pass # expected + + try: + val = sh.get_numeric_value(2, 1) + self.assertTrue(False, "failed to raise a SheetError.") + except ixion.SheetError: + pass # expected + + try: + s = sh.get_string_value(2, 1) + self.assertTrue(False, "failed to raise a SheetError.") + except ixion.SheetError: + pass # expected + + try: + expr = sh.get_formula_expression(2, 1) + self.assertTrue(False, "failed to raise a SheetError.") + except ixion.SheetError: + pass # expected + + +if __name__ == '__main__': + unittest.main()
