bugGNU Octave - Bugs: bug #51857, [octave forge] (interval)...

 
 

bug #51857: [octave forge] (interval) installation fails on 32-bit

Submitter:  Oliver Heimlich <oheim>
Submitted:  Sat 26 Aug 2017 02:15:54 PM UTC
   
 
Category:  Octave Package Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Installation Failure
Status:  Fixed Assigned to:  None
Originator Name:  Oliver Heimlich Open/Closed:  * Closed
Release:  * 3.8.2 Operating System:  * GNU/Linux
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Sat 26 Aug 2017 02:31:14 PM UTC, comment #1: 
Oliver Heimlich <oheim>
Sat 26 Aug 2017 02:15:54 PM UTC, original submission:  

Version 3.0.0 of the interval package can't be compiled on 32-bit systems, because of type casting ambiguity.  The problem is that MPFR uses parameters of type “long unsigned int”, which is either 64-bit or 32-bit depending on the platform and depending on the compiler being used.  Octave's uint64NDArray elements can't be converted to the 32-bit integers, which are used on 32-bit architectures.

The attached patch fixes this.  A patched interval-3.0.0 installs without errors and “test @infsup/nthroot” passes without errors on my device.

interval package version: 3.0.0
MPFR version: 3.1.2-p3
Octave version: 3.8.2
CPU: AArch64
Debian architecture: armhf (=32-bit)

Error log:

octave:11> pkg install interval-3.0.0.tar.gz
mpfr_function_d.cc: In function 'void nthroot(NDArray&, uint64NDArray, mpfr_rnd_t)':
mpfr_function_d.cc:220:43: error: conversion from 'const octave_int<long long unsigned int>' to 'long unsigned int' is ambiguous
       mpfr_root (mp, mp, arg2.elem(i), rnd);
                                           ^
mpfr_function_d.cc:220:43: note: candidates are:
In file included from /usr/include/octave-3.8.2/octave/../octave/idx-vector.h:35:0,
                 from /usr/include/octave-3.8.2/octave/../octave/Array.h:36,
                 from /usr/include/octave-3.8.2/octave/../octave/boolMatrix.h:27,
                 from /usr/include/octave-3.8.2/octave/../octave/mx-base.h:32,
                 from /usr/include/octave-3.8.2/octave/../octave/Matrix.h:30,
                 from /usr/include/octave-3.8.2/octave/../octave/oct.h:33,
                 from mpfr_function_d.cc:21:
/usr/include/octave-3.8.2/octave/../octave/oct-inttypes.h:884:3: note: octave_int<T>::operator float() const [with T = long long unsigned int]
   operator float (void) const { return float_value (); }
   ^
/usr/include/octave-3.8.2/octave/../octave/oct-inttypes.h:882:3: note: octave_int<T>::operator double() const [with T = long long unsigned int]
   operator double (void) const { return double_value (); }
   ^
/usr/include/octave-3.8.2/octave/../octave/oct-inttypes.h:878:3: note: octave_int<T>::operator T() const [with T = long long unsigned int]
   operator T (void) const { return value (); }
   ^
In file included from mpfr_function_d.cc:22:0:
/usr/include/mpfr.h:650:21: note: initializing argument 3 of 'int mpfr_root(mpfr_ptr, mpfr_srcptr, long unsigned int, mpfr_rnd_t)'
 __MPFR_DECLSPEC int mpfr_root _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,un                     ^
make: *** [mpfr_function_d.oct] Error 1
make: Entering directory '/tmp/oct-VEGNwU/interval-3.0.0/src'
/usr/bin/mkoctfile  --compile -o crlibm_function.o  crlibm_function.cc
(cd crlibm && ./configure --disable-dependency-tracking )
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... armv8l-unknown-linux-gnueabihf
checking host system type... armv8l-unknown-linux-gnueabihf
checking whether make sets $(MAKE)... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes             checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... none
checking for ranlib... ranlib
checking whether ln -s works... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for sqrt... no
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking fenv.h usability... yes
checking fenv.h presence... yes
checking for fenv.h... yes
checking float.h usability... yes
checking float.h presence... yes
checking for float.h... yes
checking fpu_control.h usability... yes
checking fpu_control.h presence... yes
checking for fpu_control.h... yes
checking for log in -lm... yes
checking whether byte ordering is bigendian... no
checking for long double with more range or precision than double... no
checking size of int... 4
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating scs_lib/Makefile
config.status: creating crlibm_config.h
config.status: executing depfiles commands
make -C crlibm CFLAGS+="-fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable"
make[1]: Entering directory '/tmp/oct-VEGNwU/interval-3.0.0/src/crlibm'
make  all-recursive
make[2]: Entering directory '/tmp/oct-VEGNwU/interval-3.0.0/src/crlibm'
Making all in scs_lib
make[3]: Entering directory '/tmp/oct-VEGNwU/interval-3.0.0/src/crlibm/scs_lib'
gcc -DHAVE_CONFIG_H -I. -I..  -I..   -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o scs_private.o scs_private.c
gcc -DHAVE_CONFIG_H -I. -I..  -I..   -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o double2scs.o double2scs.c
gcc -DHAVE_CONFIG_H -I. -I..  -I..   -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o print_scs.o print_scs.c
gcc -DHAVE_CONFIG_H -I. -I..  -I..   -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o division_scs.o division_scs.c
gcc -DHAVE_CONFIG_H -I. -I..  -I..   -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o addition_scs.o addition_scs.c
gcc -DHAVE_CONFIG_H -I. -I..  -I..   -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o multiplication_scs.o multiplication_scs.c
gcc -DHAVE_CONFIG_H -I. -I..  -I..   -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o scs2double.o scs2double.c
gcc -DHAVE_CONFIG_H -I. -I..  -I..   -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o zero_scs.o zero_scs.c
gcc -DHAVE_CONFIG_H -I. -I..  -I..   -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o scs2mpfr.o scs2mpfr.c
rm -f libscs.a
ar cru libscs.a scs_private.o double2scs.o print_scs.o division_scs.o addition_scs.o multiplication_scs.o scs2double.o zero_scs.o scs2mpfr.o
ranlib libscs.a
make[3]: Leaving directory '/tmp/oct-VEGNwU/interval-3.0.0/src/crlibm/scs_lib'
Making all in .
make[3]: Entering directory '/tmp/oct-VEGNwU/interval-3.0.0/src/crlibm'
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o crlibm_private.o crlibm_private.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o triple-double.o triple-double.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o exp-td.o exp-td.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o exp-td-standalone.o exp-td-standalone.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o expm1-standalone.o expm1-standalone.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o expm1.o expm1.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o log.o log.cgcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o log1p.o log1p.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o rem_pio2_accurate.o rem_pio2_accurate.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o trigo_fast.o trigo_fast.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o trigo_accurate.o trigo_accurate.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o trigpi.o trigpi.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o asincos.o asincos.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o pow.o pow.cgcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o atan_fast.o atan_fast.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o atan_accurate.o atan_accurate.c
gcc -DHAVE_CONFIG_H -I.    -std=c99 -Wall -O3 -fPIC -Wno-div-by-zero -Wno-unused-variable -Wno-unused-but-set-variable -c -o csh_fast.o csh_fast.c
rm -f libcrlibm.a
ar cru libcrlibm.a crlibm_private.o triple-double.o exp-td.o exp-td-standalone.o expm1-standalone.o expm1.o log.o log1p.o rem_pio2_accurate.o trigo_fast.o trigo_accurate.o trigpi.o asincos.o pow.o atan_fast.o atan_accurate.o csh_fast.o scs_lib/scs_private.o scs_lib/addition_scs.o scs_lib/division_scs.o scs_lib/print_scs.o scs_lib/double2scs.o scs_lib/zero_scs.o scs_lib/multiplication_scs.o scs_lib/scs2double.o
ranlib libcrlibm.a
make[3]: Leaving directory '/tmp/oct-VEGNwU/interval-3.0.0/src/crlibm'
make[2]: Leaving directory '/tmp/oct-VEGNwU/interval-3.0.0/src/crlibm'
make[1]: Leaving directory '/tmp/oct-VEGNwU/interval-3.0.0/src/crlibm'
/usr/bin/mkoctfile  -o crlibm_function.oct  crlibm_function.o crlibm/*.o crlibm/scs_lib/*.o
/usr/bin/mkoctfile  -o mpfr_function_d.oct -lmpfr -Wno-comment  mpfr_function_d.cc
Makefile:57: recipe for target 'mpfr_function_d.oct' failed
make: Leaving directory '/tmp/oct-VEGNwU/interval-3.0.0/src'

pkg: error running `make' for the interval package.
error: called from 'configure_make' in file /usr/share/octave/3.8.2/m/pkg/private/configure_make.m near line 82, column 9
error: called from:
error:   /usr/share/octave/3.8.2/m/pkg/private/install.m at line 206, column 5
error:   /usr/share/octave/3.8.2/m/pkg/pkg.m at line 394, column 9
octave:11>


Oliver Heimlich <oheim>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

Attached Files
file #41668:  patch.diff added by oheim (755B - text/x-patch)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by mtmiller (Updated the item)
  • -email is unavailable- added by oheim (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2018-05-01 mtmiller StatusNone Fixed
        Open/ClosedOpen Closed
    2017-08-26 oheim Attached File- Added patch.diff, #41668

    Back to the top

    Powered by Savane 3.13-d3ae.
    Corresponding source code