Diff of the two buildlogs: -- --- b1/build.log 2021-08-18 05:18:38.136791561 +0000 +++ b2/build.log 2021-08-18 05:22:59.958983972 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Tue Aug 17 17:05:24 -12 2021 -I: pbuilder-time-stamp: 1629263124 +I: Current time: Wed Aug 18 19:18:56 +14 2021 +I: pbuilder-time-stamp: 1629263936 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bullseye-reproducible-base.tgz] I: copying local configuration @@ -16,8 +16,8 @@ I: copying [./octave-io_2.6.3-1.debian.tar.xz] I: Extracting source gpgv: unknown type of key resource 'trustedkeys.kbx' -gpgv: keyblock resource '/tmp/dpkg-verify-sig.5xktel53/trustedkeys.kbx': General error -gpgv: Signature made Tue Nov 3 22:34:03 2020 -12 +gpgv: keyblock resource '/tmp/dpkg-verify-sig.FK4F0KXl/trustedkeys.kbx': General error +gpgv: Signature made Thu Nov 5 00:34:03 2020 +14 gpgv: using RSA key 53951D95272E0C5B82BE8C4A2CECE9350ECEBE4A gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./octave-io_2.6.3-1.dsc @@ -29,135 +29,169 @@ dpkg-source: info: applying conditional-java.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/14612/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/22922/tmp/hooks/D01_modify_environment starting +debug: Running on virt64b. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +Removing 'diversion of /bin/sh to /bin/sh.distrib by dash' +Adding 'diversion of /bin/sh to /bin/sh.distrib by bash' +Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash' +Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash' +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/22922/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/22922/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=3' - DISTRIBUTION='' - HOME='/root' - HOST_ARCH='armhf' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="1" [2]="4" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.1.4(1)-release' + BUILDDIR=/build + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=4' + DIRSTACK=() + DISTRIBUTION= + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='5ba21721971d4e039dd263d7ee5afaa1' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='14612' - PS1='# ' - PS2='> ' + INVOCATION_ID=6d6d7bcdc8714432b6d1248995397cbd + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=22922 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/tmp.L8uUGp1nCr/pbuilderrc_iqNp --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.L8uUGp1nCr/b1 --logfile b1/build.log octave-io_2.6.3-1.dsc' - SUDO_GID='113' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:8000/' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/tmp.L8uUGp1nCr/pbuilderrc_g2Is --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.L8uUGp1nCr/b2 --logfile b2/build.log octave-io_2.6.3-1.dsc' + SUDO_GID=113 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:8000/ I: uname -a - Linux ff4a 5.10.0-8-armmp-lpae #1 SMP Debian 5.10.46-4 (2021-08-03) armv7l GNU/Linux + Linux i-capture-the-hostname 5.10.0-8-arm64 #1 SMP Debian 5.10.46-4 (2021-08-03) aarch64 GNU/Linux I: ls -l /bin total 3580 - -rwxr-xr-x 1 root root 816764 Aug 4 08:25 bash - -rwxr-xr-x 3 root root 26052 Jul 20 2020 bunzip2 - -rwxr-xr-x 3 root root 26052 Jul 20 2020 bzcat - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzcmp -> bzdiff - -rwxr-xr-x 1 root root 2225 Jul 20 2020 bzdiff - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzegrep -> bzgrep - -rwxr-xr-x 1 root root 4877 Sep 4 2019 bzexe - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzfgrep -> bzgrep - -rwxr-xr-x 1 root root 3775 Jul 20 2020 bzgrep - -rwxr-xr-x 3 root root 26052 Jul 20 2020 bzip2 - -rwxr-xr-x 1 root root 9636 Jul 20 2020 bzip2recover - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzless -> bzmore - -rwxr-xr-x 1 root root 1297 Jul 20 2020 bzmore - -rwxr-xr-x 1 root root 26668 Sep 22 2020 cat - -rwxr-xr-x 1 root root 43104 Sep 22 2020 chgrp - -rwxr-xr-x 1 root root 38984 Sep 22 2020 chmod - -rwxr-xr-x 1 root root 43112 Sep 22 2020 chown - -rwxr-xr-x 1 root root 92616 Sep 22 2020 cp - -rwxr-xr-x 1 root root 75524 Dec 10 2020 dash - -rwxr-xr-x 1 root root 75880 Sep 22 2020 date - -rwxr-xr-x 1 root root 55436 Sep 22 2020 dd - -rwxr-xr-x 1 root root 59912 Sep 22 2020 df - -rwxr-xr-x 1 root root 96764 Sep 22 2020 dir - -rwxr-xr-x 1 root root 55012 Jul 28 07:09 dmesg - lrwxrwxrwx 1 root root 8 Nov 6 2019 dnsdomainname -> hostname - lrwxrwxrwx 1 root root 8 Nov 6 2019 domainname -> hostname - -rwxr-xr-x 1 root root 22508 Sep 22 2020 echo - -rwxr-xr-x 1 root root 28 Nov 9 2020 egrep - -rwxr-xr-x 1 root root 22496 Sep 22 2020 false - -rwxr-xr-x 1 root root 28 Nov 9 2020 fgrep - -rwxr-xr-x 1 root root 47492 Jul 28 07:09 findmnt - -rwsr-xr-x 1 root root 26076 Feb 26 04:12 fusermount - -rwxr-xr-x 1 root root 124508 Nov 9 2020 grep - -rwxr-xr-x 2 root root 2346 Mar 2 11:30 gunzip - -rwxr-xr-x 1 root root 6376 Mar 2 11:30 gzexe - -rwxr-xr-x 1 root root 64212 Mar 2 11:30 gzip - -rwxr-xr-x 1 root root 13784 Nov 6 2019 hostname - -rwxr-xr-x 1 root root 43180 Sep 22 2020 ln - -rwxr-xr-x 1 root root 35068 Feb 7 2020 login - -rwxr-xr-x 1 root root 96764 Sep 22 2020 ls - -rwxr-xr-x 1 root root 99940 Jul 28 07:09 lsblk - -rwxr-xr-x 1 root root 51408 Sep 22 2020 mkdir - -rwxr-xr-x 1 root root 43184 Sep 22 2020 mknod - -rwxr-xr-x 1 root root 30780 Sep 22 2020 mktemp - -rwxr-xr-x 1 root root 34408 Jul 28 07:09 more - -rwsr-xr-x 1 root root 34400 Jul 28 07:09 mount - -rwxr-xr-x 1 root root 9824 Jul 28 07:09 mountpoint - -rwxr-xr-x 1 root root 88524 Sep 22 2020 mv - lrwxrwxrwx 1 root root 8 Nov 6 2019 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Apr 18 03:38 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 26652 Sep 22 2020 pwd - lrwxrwxrwx 1 root root 4 Aug 4 08:25 rbash -> bash - -rwxr-xr-x 1 root root 30740 Sep 22 2020 readlink - -rwxr-xr-x 1 root root 43104 Sep 22 2020 rm - -rwxr-xr-x 1 root root 30732 Sep 22 2020 rmdir - -rwxr-xr-x 1 root root 14144 Sep 27 2020 run-parts - -rwxr-xr-x 1 root root 76012 Dec 22 2018 sed - lrwxrwxrwx 1 root root 4 Aug 14 21:29 sh -> dash - -rwxr-xr-x 1 root root 22532 Sep 22 2020 sleep - -rwxr-xr-x 1 root root 55360 Sep 22 2020 stty - -rwsr-xr-x 1 root root 46704 Jul 28 07:09 su - -rwxr-xr-x 1 root root 22532 Sep 22 2020 sync - -rwxr-xr-x 1 root root 340872 Feb 16 21:55 tar - -rwxr-xr-x 1 root root 9808 Sep 27 2020 tempfile - -rwxr-xr-x 1 root root 67696 Sep 22 2020 touch - -rwxr-xr-x 1 root root 22496 Sep 22 2020 true - -rwxr-xr-x 1 root root 9636 Feb 26 04:12 ulockmgr_server - -rwsr-xr-x 1 root root 22108 Jul 28 07:09 umount - -rwxr-xr-x 1 root root 22520 Sep 22 2020 uname - -rwxr-xr-x 2 root root 2346 Mar 2 11:30 uncompress - -rwxr-xr-x 1 root root 96764 Sep 22 2020 vdir - -rwxr-xr-x 1 root root 38512 Jul 28 07:09 wdctl - lrwxrwxrwx 1 root root 8 Nov 6 2019 ypdomainname -> hostname - -rwxr-xr-x 1 root root 1984 Mar 2 11:30 zcat - -rwxr-xr-x 1 root root 1678 Mar 2 11:30 zcmp - -rwxr-xr-x 1 root root 5880 Mar 2 11:30 zdiff - -rwxr-xr-x 1 root root 29 Mar 2 11:30 zegrep - -rwxr-xr-x 1 root root 29 Mar 2 11:30 zfgrep - -rwxr-xr-x 1 root root 2081 Mar 2 11:30 zforce - -rwxr-xr-x 1 root root 7585 Mar 2 11:30 zgrep - -rwxr-xr-x 1 root root 2206 Mar 2 11:30 zless - -rwxr-xr-x 1 root root 1842 Mar 2 11:30 zmore - -rwxr-xr-x 1 root root 4553 Mar 2 11:30 znew -I: user script /srv/workspace/pbuilder/14612/tmp/hooks/D02_print_environment finished + -rwxr-xr-x 1 root root 816764 Aug 5 10:25 bash + -rwxr-xr-x 3 root root 26052 Jul 21 2020 bunzip2 + -rwxr-xr-x 3 root root 26052 Jul 21 2020 bzcat + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzcmp -> bzdiff + -rwxr-xr-x 1 root root 2225 Jul 21 2020 bzdiff + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzegrep -> bzgrep + -rwxr-xr-x 1 root root 4877 Sep 5 2019 bzexe + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzfgrep -> bzgrep + -rwxr-xr-x 1 root root 3775 Jul 21 2020 bzgrep + -rwxr-xr-x 3 root root 26052 Jul 21 2020 bzip2 + -rwxr-xr-x 1 root root 9636 Jul 21 2020 bzip2recover + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzless -> bzmore + -rwxr-xr-x 1 root root 1297 Jul 21 2020 bzmore + -rwxr-xr-x 1 root root 26668 Sep 23 2020 cat + -rwxr-xr-x 1 root root 43104 Sep 23 2020 chgrp + -rwxr-xr-x 1 root root 38984 Sep 23 2020 chmod + -rwxr-xr-x 1 root root 43112 Sep 23 2020 chown + -rwxr-xr-x 1 root root 92616 Sep 23 2020 cp + -rwxr-xr-x 1 root root 75524 Dec 11 2020 dash + -rwxr-xr-x 1 root root 75880 Sep 23 2020 date + -rwxr-xr-x 1 root root 55436 Sep 23 2020 dd + -rwxr-xr-x 1 root root 59912 Sep 23 2020 df + -rwxr-xr-x 1 root root 96764 Sep 23 2020 dir + -rwxr-xr-x 1 root root 55012 Jul 29 09:09 dmesg + lrwxrwxrwx 1 root root 8 Nov 8 2019 dnsdomainname -> hostname + lrwxrwxrwx 1 root root 8 Nov 8 2019 domainname -> hostname + -rwxr-xr-x 1 root root 22508 Sep 23 2020 echo + -rwxr-xr-x 1 root root 28 Nov 10 2020 egrep + -rwxr-xr-x 1 root root 22496 Sep 23 2020 false + -rwxr-xr-x 1 root root 28 Nov 10 2020 fgrep + -rwxr-xr-x 1 root root 47492 Jul 29 09:09 findmnt + -rwsr-xr-x 1 root root 26076 Feb 27 06:12 fusermount + -rwxr-xr-x 1 root root 124508 Nov 10 2020 grep + -rwxr-xr-x 2 root root 2346 Mar 3 13:30 gunzip + -rwxr-xr-x 1 root root 6376 Mar 3 13:30 gzexe + -rwxr-xr-x 1 root root 64212 Mar 3 13:30 gzip + -rwxr-xr-x 1 root root 13784 Nov 8 2019 hostname + -rwxr-xr-x 1 root root 43180 Sep 23 2020 ln + -rwxr-xr-x 1 root root 35068 Feb 8 2020 login + -rwxr-xr-x 1 root root 96764 Sep 23 2020 ls + -rwxr-xr-x 1 root root 99940 Jul 29 09:09 lsblk + -rwxr-xr-x 1 root root 51408 Sep 23 2020 mkdir + -rwxr-xr-x 1 root root 43184 Sep 23 2020 mknod + -rwxr-xr-x 1 root root 30780 Sep 23 2020 mktemp + -rwxr-xr-x 1 root root 34408 Jul 29 09:09 more + -rwsr-xr-x 1 root root 34400 Jul 29 09:09 mount + -rwxr-xr-x 1 root root 9824 Jul 29 09:09 mountpoint + -rwxr-xr-x 1 root root 88524 Sep 23 2020 mv + lrwxrwxrwx 1 root root 8 Nov 8 2019 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Apr 19 05:38 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 26652 Sep 23 2020 pwd + lrwxrwxrwx 1 root root 4 Aug 5 10:25 rbash -> bash + -rwxr-xr-x 1 root root 30740 Sep 23 2020 readlink + -rwxr-xr-x 1 root root 43104 Sep 23 2020 rm + -rwxr-xr-x 1 root root 30732 Sep 23 2020 rmdir + -rwxr-xr-x 1 root root 14144 Sep 28 2020 run-parts + -rwxr-xr-x 1 root root 76012 Dec 23 2018 sed + lrwxrwxrwx 1 root root 4 Aug 18 19:19 sh -> bash + lrwxrwxrwx 1 root root 4 Aug 15 23:25 sh.distrib -> dash + -rwxr-xr-x 1 root root 22532 Sep 23 2020 sleep + -rwxr-xr-x 1 root root 55360 Sep 23 2020 stty + -rwsr-xr-x 1 root root 46704 Jul 29 09:09 su + -rwxr-xr-x 1 root root 22532 Sep 23 2020 sync + -rwxr-xr-x 1 root root 340872 Feb 17 23:55 tar + -rwxr-xr-x 1 root root 9808 Sep 28 2020 tempfile + -rwxr-xr-x 1 root root 67696 Sep 23 2020 touch + -rwxr-xr-x 1 root root 22496 Sep 23 2020 true + -rwxr-xr-x 1 root root 9636 Feb 27 06:12 ulockmgr_server + -rwsr-xr-x 1 root root 22108 Jul 29 09:09 umount + -rwxr-xr-x 1 root root 22520 Sep 23 2020 uname + -rwxr-xr-x 2 root root 2346 Mar 3 13:30 uncompress + -rwxr-xr-x 1 root root 96764 Sep 23 2020 vdir + -rwxr-xr-x 1 root root 38512 Jul 29 09:09 wdctl + lrwxrwxrwx 1 root root 8 Nov 8 2019 ypdomainname -> hostname + -rwxr-xr-x 1 root root 1984 Mar 3 13:30 zcat + -rwxr-xr-x 1 root root 1678 Mar 3 13:30 zcmp + -rwxr-xr-x 1 root root 5880 Mar 3 13:30 zdiff + -rwxr-xr-x 1 root root 29 Mar 3 13:30 zegrep + -rwxr-xr-x 1 root root 29 Mar 3 13:30 zfgrep + -rwxr-xr-x 1 root root 2081 Mar 3 13:30 zforce + -rwxr-xr-x 1 root root 7585 Mar 3 13:30 zgrep + -rwxr-xr-x 1 root root 2206 Mar 3 13:30 zless + -rwxr-xr-x 1 root root 1842 Mar 3 13:30 zmore + -rwxr-xr-x 1 root root 4553 Mar 3 13:30 znew +I: user script /srv/workspace/pbuilder/22922/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -636,7 +670,7 @@ Get: 439 http://deb.debian.org/debian bullseye/main armhf gnuplot-nox armhf 5.4.1+dfsg1-1 [785 kB] Get: 440 http://deb.debian.org/debian bullseye/main armhf dh-octave-autopkgtest all 1.0.3 [9376 B] Get: 441 http://deb.debian.org/debian bullseye/main armhf dh-octave all 1.0.3 [21.9 kB] -Fetched 133 MB in 19s (6934 kB/s) +Fetched 133 MB in 26s (5064 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package bsdextrautils. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19398 files and directories currently installed.) @@ -2447,7 +2481,8 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/octave-io-2.6.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../octave-io_2.6.3-1_source.changes +hostname: Name or service not known +I: Running cd /build/octave-io-2.6.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../octave-io_2.6.3-1_source.changes dpkg-buildpackage: info: source package octave-io dpkg-buildpackage: info: source version 2.6.3-1 dpkg-buildpackage: info: source distribution unstable @@ -2485,23 +2520,23 @@ make[1]: Entering directory '/build/octave-io-2.6.3/src' /usr/bin/mkoctfile --verbose csvexplode.cc +g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security csvexplode.cc -o /tmp/oct-XJ63Cn.o /usr/bin/mkoctfile --verbose csv2cell.cc +g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security csv2cell.cc -o /tmp/oct-Nl3lGw.o /usr/bin/mkoctfile --verbose csvconcat.cc /usr/bin/mkoctfile --verbose cell2csv.cc -g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security csvconcat.cc -o /tmp/oct-HyWNYu.o -g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security csv2cell.cc -o /tmp/oct-XNkLen.o -g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security cell2csv.cc -o /tmp/oct-UJtitA.o -g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security csvexplode.cc -o /tmp/oct-gUQlNl.o -g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o csvconcat.oct /tmp/oct-HyWNYu.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro +g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security csvconcat.cc -o /tmp/oct-3OUtGB.o +g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security cell2csv.cc -o /tmp/oct-cNIBAP.o +g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o csvexplode.oct /tmp/oct-XJ63Cn.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro +g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o csvconcat.oct /tmp/oct-3OUtGB.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro /usr/bin/mkoctfile --verbose col2num.cc -g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security col2num.cc -o /tmp/oct-4OvkzH.o -g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o csvexplode.oct /tmp/oct-gUQlNl.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro +g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security col2num.cc -o /tmp/oct-DuY8YX.o /usr/bin/mkoctfile --verbose num2col.cc -g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security num2col.cc -o /tmp/oct-iGCKB3.o -g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o cell2csv.oct /tmp/oct-UJtitA.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro -g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o csv2cell.oct /tmp/oct-XNkLen.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro -g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o col2num.oct /tmp/oct-4OvkzH.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro -g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o num2col.oct /tmp/oct-iGCKB3.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro +g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security num2col.cc -o /tmp/oct-rUIdgg.o +g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o cell2csv.oct /tmp/oct-cNIBAP.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro +g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o csv2cell.oct /tmp/oct-Nl3lGw.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro +g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o col2num.oct /tmp/oct-DuY8YX.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro +g++ -I/usr/include/octave-6.2.0/octave/.. -I/usr/include/octave-6.2.0/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-io-2.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -o num2col.oct /tmp/oct-rUIdgg.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/arm-linux-gnueabihf -Wl,-z,relro make[1]: Leaving directory '/build/octave-io-2.6.3/src' copyfile /build/octave-io-2.6.3/./src/cell2csv.oct /build/octave-io-2.6.3/./src/col2num.oct /build/octave-io-2.6.3/./src/csv2cell.oct /build/octave-io-2.6.3/./src/csvconcat.oct /build/octave-io-2.6.3/./src/csvexplode.oct /build/octave-io-2.6.3/./src/num2col.oct /build/octave-io-2.6.3/./src/cell2csv.cc-tst /build/octave-io-2.6.3/./src/col2num.cc-tst /build/octave-io-2.6.3/./src/csv2cell.cc-tst /build/octave-io-2.6.3/./src/num2col.cc-tst /build/octave-io-2.6.3/./inst/arm-unknown-linux-gnueabihf-api-v55 For information about changes from previous versions of the io package, run 'news io'. @@ -2509,267 +2544,6 @@ dh_octave_check -O--buildsystem=octave Checking package... Checking m files ... -[inst/fromJSON.m] ->>>>> /build/octave-io-2.6.3/inst/fromJSON.m -***** test ## input validation - assert(fromJSON(),[]); % ok, reference -***** warning fromJSON([],struct); - - bad = {4,{},@sin,struct(),'',false,0,[1,2,3]}; - assert(all(cellfun(@(i)isempty(fromJSON(i)),bad))); % all bad, return [] -***** test ## number - assert(fromJSON('4'),4) -***** test ## number string - assert(fromJSON('"string"'),"string") -***** test ## bool - assert(fromJSON('true'),true) -***** test ## numerical array - assert(fromJSON('[1,2,3,4]'),1:4) - assert(fromJSON('[[1,2],[3,4]]'),[1 2;3 4]) -***** test ## infinity - assert(fromJSON('1e308'), Inf) - assert(fromJSON('-1e308'), -Inf) - assert(fromJSON('1e999'), Inf) - assert(fromJSON('-1e999'), -Inf) - assert(fromJSON('Inf'), Inf) - assert(fromJSON('-Inf'), -Inf) - assert(fromJSON('Infinity'), Inf) - assert(fromJSON('-Infinity'), -Inf) - assert(fromJSON('[1,1e308,Inf,-Infinity]'),[1 Inf Inf -Inf]) -***** test ## null - assert(fromJSON( 'null' ),NaN) - assert(fromJSON('"null"'),"null") -***** test ## empty array - assert(fromJSON('[]'),[]); -***** test ## numerical matrix - assert(fromJSON('[[1,2],[3,4]]'),[1 2;3 4]) -***** test ## bool matrix - assert(fromJSON('[[true,false];[false,true]]'),!![1 0;0 1]) -***** test ## numeric/bool matrix - assert(fromJSON('[[true,3];[false,true]]'),[1 3;0 1]) -***** test ## numerical ND array - assert(fromJSON('[[[1,3,5],[2,4,6]],[[7,9,11],[8,10,12]]]'),reshape(1:12,2,3,2)); -***** test ## more N numerical ND array - json = "[[[[[1,3],[2,4]],[[5,7],[6,8]]],[[[11,13],[12,14]],[[15,17],[16,18]]]],[[[[21,23],[22,24]],[[25,27],[26,28]]],[[[31,33],[32,34]],[[35,37],[36,38]]]]]"; - assert(fromJSON(json),reshape([1:8 11:18 21:28 31:38],2,2,2,2,2)); -***** test ## mixed-class array (to cell array) - assert(fromJSON('[["a",2,3],[4,"b",5]]'), {'a' 2 3; 4 'b' 5}); -***** test ## mismatch nested array - assert(fromJSON('[[1,2,3,4,5],[1,2]]'),{[1 2 3 4 5] [1 2]}) -***** test ## more mismatched nested array - assert(fromJSON('[1,2,3,[2,3]]'),{1,2,3,[2,3]}) -***** test ## array of numerical array and mixed-class array - assert(fromJSON('[[1,2,3,"a"],[2,3,4,4]]'),{{1 2 3 "a"},[2 3 4 4]}) -***** test ## more N numerical ND array - json = "[[[[[1,3],[2,4]],[[5,7],[6,8]]],[[[11,13],[12,14]],[[15,17],[16,18]]]],[[[[21,23],[22,24]],[[25,27],[26,28]]],[[[31,33],[32,34]],[[35,37],[36,38]]]]]"; - json = regexprep(json,'(\d+)','"$1"'); % turn it input JSON array of strings - c = cellfun(@num2str,num2cell(reshape([1:8 11:18 21:28 31:38],2,2,2,2,2)), 'uniformoutput', false); - assert(fromJSON(json),c); -***** test ## JSON-like: with non-JSON, Octave, numerical notation (bonus feature) - assert(fromJSON('[Inf,-Inf,NaN,2i,pi,e]'),[Inf,-Inf,NaN,2*i,pi,e],1e-15); -***** test ## beautified JSON - obj=fromJSON("\n[\n\t [1,2,3,4],\n\t [2,3,4,4]\n] "); - assert(obj,[[1 2 3 4];[2 3 4 4]]) -***** test ## incomplete array - warning('off','all'); - assert(fromJSON("[1,2,3 "),[1,2,3]); -***** test ## more incomplete array - warning('off','all'); - assert(fromJSON("[[1,2,3],[3"),{[1,2,3],[3]}); -***** test ## string with whitespaces - assert(fromJSON('"te\nss df\t t"'),"te\nss df\t t") -***** test ## char array - assert(fromJSON('["a","b","c"]'),{'a','b','c'}) -***** test ## array of string - assert(fromJSON('["test","list","more"]'),{'test',"list","more"}) -***** test ## escaped quote - assert(fromJSON('"tes\"t"'),'tes"t'); - assert(fromJSON('["te\"t","list","more"]'),{'te"t' 'list' 'more'}) -***** test ## struct - assert(fromJSON('{}',true), struct()) - assert(fromJSON('{}',false),struct()) -***** test ## struct - assert(fromJSON('{"a":3,"b":5}',true),struct("a",3,"b",5)) -***** test ## lazy JSON struct - assert(fromJSON('{a:3,b:5}',true), struct("a",3,"b",5)) -***** test ## beautified JSON - assert(fromJSON("{\n\ta\t :\t 3\n\t}"), struct("a",3)) -***** test ## lazy key with spaces - obj=fromJSON('{key with space: 4,"a":3}'); - assert(obj,struct("a",3,"key with space",4)) -***** test ## duplicate key - assert(fromJSON('{a:3,"a":5}'),struct("a",5)) -***** test ## empty object key-val - obj=fromJSON('{a:3,,, , "b" :5}'); - assert(obj,struct("a",3,"b",5)) -***** test ## struct of vector - assert(fromJSON('{a:[1,2,3,4]}', true), struct('a',{1 2 3 4})); - assert(fromJSON('[{a:1},{a:2},{a:3},{a:4}]',true), struct('a',{1 2 3 4})); - assert(fromJSON('{a:[1,2,3,4]}', false), struct('a',[1 2 3 4])); -***** test ## struct of 2x2 array - assert(fromJSON('{a:[[1,3],[2,4]]}', true), struct('a',{1 3;2 4})); - assert(fromJSON('[{a:1},{a:2}],[{a:3},{a:4}]',true), struct('a',{1 2;3 4})); - assert(fromJSON('{a:[[1,3],[2,4]]}', false), struct('a',[1 3;2 4])); -***** test ## array of struct with SARRAY=false - assert(fromJSON('[{a:1},{a:2} , {a:3},{a:4}]',false), num2cell(struct('a',{1 2 3 4}))); - assert(fromJSON('[{a:1},{a:2}],[{a:3},{a:4}]',false), num2cell(struct('a',{1 2;3 4}))); -***** test ## struct with mixed-size arrays (will not honor SARRAY=true) - assert(fromJSON('{"a":[1,2],"b":[3,4,5]}',true), struct("a",[1,2],"b",[3,4,5])) -***** test ## struct with number and string (guard against turing string into char array) - assert(fromJSON('{"a":1,"b":"hello"}',true), struct("a",1,"b","hello")) -***** test ## struct with empty array (gaurd against returning empty struct array) - assert(fromJSON('{"a":3,"b":[]}',true), struct("a",3,"b",[])) -***** test ## incomplete struct - warning('off','all'); - assert(fromJSON('[[1,2,{a:3,b ],3,4,5]'), {{1,2,struct('a',3)},3,4,5}); -***** test ## **nested** struct with array - assert(fromJSON('{"a":{"b":[1,2,3]}}',true ), struct("a",num2cell(struct("b",{1,2,3})))) % <== struct array - assert(fromJSON('{"a":{"b":[1,2,3]}}',false), struct("a",struct("b",[1,2,3]))) % <== struct with array b -***** test ## struct with mixed class array - assert(fromJSON('{"b":[1,2,{c:4}]}',true),struct('b',{1,2,struct('c',4)})); - s.b = {1,2,struct("c",4)}; - assert(fromJSON('{"b":[1,2,{c:4}]}',false),s) -***** test ## 2x2 array of struct - obj=fromJSON('[[{a:1},{a:3}],[{a:2},{a:4}]]'); - assert(obj,struct('a',{1 3;2 4})); -***** test ## 2x2 array of struct of arrays NOTE: this is sketchy operation - obj=fromJSON('[[{"a":[1,1]},{"a":[3,3]}],[{"a":[2,2]},{"a":[4,4]}]]'); - assert(obj,struct('a',{[1 1] [3 3];[2 2] [4 4]})); -***** test ## struct of ND array - obj=fromJSON('{a:[[[1,3],[2,4]],[[11,13],[12,14]]]}'); - assert(obj,struct('a',num2cell(reshape([1:4 11:14],2,2,2)))); -***** test ## ND array of struct - obj=fromJSON('[[[{a:1},{a:3}],[{a:2},{a:4}]],[[{a:11},{a:13}],[{a:12},{a:14}]]]'); - assert(obj,struct('a',num2cell(reshape([1:4 11:14],2,2,2)))); -***** test ## mixed array with struct - assert(fromJSON('[2,{a:3,"b":5}]'),{2,struct("a",3,"b",5)}) -***** test ## more mixed array with struct - assert(fromJSON('[{a:3,"b":5},{a:3}]'),{struct("a",3,"b",5),struct("a",3)}) -***** test ## complex number struct - assert(fromJSON('{re:3,im:5}'), 3+5i); - assert(fromJSON('[{re:3,im:5}]'), 3+5i); - assert(fromJSON('{real:4,imag:6}'),4+6i); -***** test ## complex number struct with anomoly - assert(fromJSON('{im:3,re:5}'), 5+3i); - assert(fromJSON('{im:3,re:5,re:7,im:10}'),7+10i); -***** test ## complex number struct array - assert(fromJSON('{re:[4,5],im:[6,7]}'), [4+6i,5+7i] ); - assert(fromJSON('[{re:[4,5],im:[6,7]}]'), [4+6i,5+7i] ); - assert(fromJSON('[{re:[4,5;0 2],im:[6,7;3 0]}]'),[4+6i,5+7i;3i 2]); -***** test ## complex number struct in array - obj=fromJSON('[[{re:4,im:6},{re:1,im:0}],[{re:0,im:2}, {re:2,im:4}]]'); - assert(obj,[4+6i 1;2i 2+4i]); -***** test ## complex number struct mixed with number within array - obj=fromJSON('[[4,{re:1,im:0}],[{re:0,im:2}, {re:4,im:6}]]'); - assert(obj,[4 1;2i 4+6i]); -***** test ## complex number struct within a structure (nested) - assert(fromJSON('{"a": {re:1,im:5}}'),struct('a',1+5i)); -***** test ## complex number struct with structure array (nested) - obj = fromJSON('[{"a":{re:1,im:5}},{"a":{re:2,im:5}}]'); - assert(obj,struct('a',{1+5i,2+5i})); -***** test ## test apparent octave inline fn (convert to inline) - assert(fromJSON('"@sin"'),@sin); - assert(func2str(fromJSON('"@(x)3*x"')),func2str(@(x)3*x)); -***** test ## exotic object in structure - assert(fromJSON('{"a":"[java.math.BigDecimal]"}'),struct('a','[java.math.BigDecimal]')); -***** test ## JSON with confusing '[]{},' AND missing quotes (hard string parse test) - warning('off','all'); - obj=fromJSON('[{a:"tes, {}: [ ] t"},"lkj{} sdf",im mi{}ing quotes]'); - assert(obj,{struct('a',"tes, {}: [ ] t"), 'lkj{} sdf','im mi{}ing quotes'}) -***** test ## garbage (non-quoted, meaningless string) - warning('off','all'); - assert(fromJSON('garbage'),'garbage') -***** test ## garbage in array - warning('off','all'); - assert(fromJSON('[1,garbage]'),{1,'garbage'}) -***** test ## garbage in struct - warning('off','all'); - assert(fromJSON('{a:garbage}'),struct('a','garbage')) -***** test ## exotic object (placeholder of class name) - assert(fromJSON('"[java.math.BigDecimal]"'),'[java.math.BigDecimal]'); -***** test ## warnings -***** warning fromJSON('garbage'); -***** warning fromJSON('{a:3,b}'); -***** warning fromJSON('{a:3,b:4'); -***** warning fromJSON('@nofunc'); ## looks like fn, but is UNQUOTED string -***** test %% jsondecode's Arrays with the same field names in the same order. - json = ['[', ... - '{', ... - '"x_id": "5ee28980fc9ab3",', ... - '"index": 0,', ... - '"guid": "b229d1de-f94a",', ... - '"latitude": -17.124067,', ... - '"longitude": -61.161831,', ... - '"friends": [', ... - '{', ... - '"id": 0,', ... - '"name": "Collins"', ... - '},', ... - '{', ... - '"id": 1,', ... - '"name": "Hays"', ... - '},', ... - '{', ... - '"id": 2,', ... - '"name": "Griffin"', ... - '}', ... - ']', ... - '},', ... - '{', ... - '"x_id": "5ee28980dd7250",', ... - '"index": 1,', ... - '"guid": "39cee338-01fb",', ... - '"latitude": 13.205994,', ... - '"longitude": -37.276231,', ... - '"friends": [', ... - '{', ... - '"id": 0,', ... - '"name": "Osborn"', ... - '},', ... - '{', ... - '"id": 1,', ... - '"name": "Mcdowell"', ... - '},', ... - '{', ... - '"id": 2,', ... - '"name": "Jewel"', ... - '}', ... - ']', ... - '},', ... - '{', ... - '"x_id": "5ee289802422ac",', ... - '"index": 2,', ... - '"guid": "3db8d55a-663e",', ... - '"latitude": -35.453456,', ... - '"longitude": 14.080287,', ... - '"friends": [', ... - '{', ... - '"id": 0,', ... - '"name": "Socorro"', ... - '},', ... - '{', ... - '"id": 1,', ... - '"name": "Darla"', ... - '},', ... - '{', ... - '"id": 2,', ... - '"name": "Leanne"', ... - '}', ... - ']', ... - '}', ... - ']']; - var1 = struct ('id', {0 1 2}, 'name', {'Collins' 'Hays' 'Griffin'}); - var2 = struct ('id', {0 1 2}, 'name', {'Osborn' 'Mcdowell' 'Jewel'}); - var3 = struct ('id', {0 1 2}, 'name', {'Socorro' 'Darla' 'Leanne'}); - exp = struct (... - 'x_id', {'5ee28980fc9ab3' '5ee28980dd7250' '5ee289802422ac'}, ... - 'index', {0 1 2}, ... - 'guid', {'b229d1de-f94a' '39cee338-01fb' '3db8d55a-663e'}, ... - 'latitude', {-17.124067 13.205994 -35.453456}, ... - 'longitude', {-61.161831 -37.276231 14.080287}, ... - 'friends', {var1 var2 var3}); - assert (fromJSON(json), exp); -69 tests, 69 passed, 0 known failure, 0 skipped [inst/calccelladdress.m] >>>>> /build/octave-io-2.6.3/inst/calccelladdress.m ***** test @@ -2800,6 +2574,61 @@ a = calccelladdress (378, 676); assert (a, "YZ378"); 9 tests, 9 passed, 0 known failure, 0 skipped +[inst/object2json.m] +>>>>> /build/octave-io-2.6.3/inst/object2json.m +***** test + assert(object2json([logical(1), logical(0)]), '[true,false]'); +***** test + car.name = 'Mzd R8'; + car.speedsamples = [98, 33, 50; 56, 120, 102; 77, 82, 93]; + car.toofast = car.speedsamples >= 90; + car.leased = logical(1); + car.european = logical(0); + assert(object2json(car), '{"name":"Mzd R8","speedsamples":[[98,33,50],[56,120,102],[77,82,93]],"toofast":[[true,false,false],[false,true,true],[false,false,true]],"leased":true,"european":false}'); +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/read_namelist.m] +>>>>> /build/octave-io-2.6.3/inst/read_namelist.m +***** test + fn = tempname (); + fid = fopen (fn, "w"); + fprintf (fid, "&test\n"); + fprintf (fid, " z = (1.1,2.2), (0.,1.), (1.,0.)\n"); + fprintf (fid, " y = (9,8)\n"); + fprintf (fid, " a = 1. 2. 3.\n"); + fprintf (fid, [' c = "(test)"' "\n" '\\' "\n"]); + fclose (fid); + nm = read_namelist (fn); + unlink (fn); + assert (nm.test.z, [1.1+2.2i, 1i, 1], eps); + assert (nm.test.y, 9+8i, eps); + assert (nm.test.a, [1 2 3], eps); +***** test + fn = tempname (); + fid = fopen (fn, "w"); + fprintf (fid, "&test\n"); + fprintf (fid, " a = 1,\n"); + fprintf (fid, " /\n"); + fclose (fid); + nm = read_namelist (fn); + unlink (fn); + assert (nm.test.a, 1, eps); +***** test + fn = tempname(); + fid = fopen (fn, "w"); + fprintf (fid, "&test\n"); + fprintf (fid, " a = '/',\n"); % inside apostrophes + fprintf (fid, " b = ""/"",\n"); % inside double quotes + fprintf (fid, " c = '""/',\n"); % with double quotes inside apostrophes + fprintf (fid, " d = ""'/"",\n"); % with apostrophes inside double quotes + fprintf (fid, "/\n"); + fclose (fid); + nm = read_namelist (fn); + unlink (fn); + assert (strcmp(nm.test.a, '/'), 1, eps); + assert (strcmp(nm.test.b, '/'), 1, eps); + assert (strcmp(nm.test.c, '"/'), 1, eps); + assert (strcmp(nm.test.d, '''/'), 1, eps); +3 tests, 3 passed, 0 known failure, 0 skipped [inst/toJSON.m] >>>>> /build/octave-io-2.6.3/inst/toJSON.m ***** test ## invalid args @@ -3058,62 +2887,304 @@ ']']; assert (toJSON (data), exp); 55 tests, 55 passed, 0 known failure, 0 skipped -[inst/object2json.m] ->>>>> /build/octave-io-2.6.3/inst/object2json.m +[inst/fromJSON.m] +>>>>> /build/octave-io-2.6.3/inst/fromJSON.m +***** test ## input validation + assert(fromJSON(),[]); % ok, reference +***** warning fromJSON([],struct); + + bad = {4,{},@sin,struct(),'',false,0,[1,2,3]}; + assert(all(cellfun(@(i)isempty(fromJSON(i)),bad))); % all bad, return [] +***** test ## number + assert(fromJSON('4'),4) +***** test ## number string + assert(fromJSON('"string"'),"string") +***** test ## bool + assert(fromJSON('true'),true) +***** test ## numerical array + assert(fromJSON('[1,2,3,4]'),1:4) + assert(fromJSON('[[1,2],[3,4]]'),[1 2;3 4]) +***** test ## infinity + assert(fromJSON('1e308'), Inf) + assert(fromJSON('-1e308'), -Inf) + assert(fromJSON('1e999'), Inf) + assert(fromJSON('-1e999'), -Inf) + assert(fromJSON('Inf'), Inf) + assert(fromJSON('-Inf'), -Inf) + assert(fromJSON('Infinity'), Inf) + assert(fromJSON('-Infinity'), -Inf) + assert(fromJSON('[1,1e308,Inf,-Infinity]'),[1 Inf Inf -Inf]) +***** test ## null + assert(fromJSON( 'null' ),NaN) + assert(fromJSON('"null"'),"null") +***** test ## empty array + assert(fromJSON('[]'),[]); +***** test ## numerical matrix + assert(fromJSON('[[1,2],[3,4]]'),[1 2;3 4]) +***** test ## bool matrix + assert(fromJSON('[[true,false];[false,true]]'),!![1 0;0 1]) +***** test ## numeric/bool matrix + assert(fromJSON('[[true,3];[false,true]]'),[1 3;0 1]) +***** test ## numerical ND array + assert(fromJSON('[[[1,3,5],[2,4,6]],[[7,9,11],[8,10,12]]]'),reshape(1:12,2,3,2)); +***** test ## more N numerical ND array + json = "[[[[[1,3],[2,4]],[[5,7],[6,8]]],[[[11,13],[12,14]],[[15,17],[16,18]]]],[[[[21,23],[22,24]],[[25,27],[26,28]]],[[[31,33],[32,34]],[[35,37],[36,38]]]]]"; + assert(fromJSON(json),reshape([1:8 11:18 21:28 31:38],2,2,2,2,2)); +***** test ## mixed-class array (to cell array) + assert(fromJSON('[["a",2,3],[4,"b",5]]'), {'a' 2 3; 4 'b' 5}); +***** test ## mismatch nested array + assert(fromJSON('[[1,2,3,4,5],[1,2]]'),{[1 2 3 4 5] [1 2]}) +***** test ## more mismatched nested array + assert(fromJSON('[1,2,3,[2,3]]'),{1,2,3,[2,3]}) +***** test ## array of numerical array and mixed-class array + assert(fromJSON('[[1,2,3,"a"],[2,3,4,4]]'),{{1 2 3 "a"},[2 3 4 4]}) +***** test ## more N numerical ND array + json = "[[[[[1,3],[2,4]],[[5,7],[6,8]]],[[[11,13],[12,14]],[[15,17],[16,18]]]],[[[[21,23],[22,24]],[[25,27],[26,28]]],[[[31,33],[32,34]],[[35,37],[36,38]]]]]"; + json = regexprep(json,'(\d+)','"$1"'); % turn it input JSON array of strings + c = cellfun(@num2str,num2cell(reshape([1:8 11:18 21:28 31:38],2,2,2,2,2)), 'uniformoutput', false); + assert(fromJSON(json),c); +***** test ## JSON-like: with non-JSON, Octave, numerical notation (bonus feature) + assert(fromJSON('[Inf,-Inf,NaN,2i,pi,e]'),[Inf,-Inf,NaN,2*i,pi,e],1e-15); +***** test ## beautified JSON + obj=fromJSON("\n[\n\t [1,2,3,4],\n\t [2,3,4,4]\n] "); + assert(obj,[[1 2 3 4];[2 3 4 4]]) +***** test ## incomplete array + warning('off','all'); + assert(fromJSON("[1,2,3 "),[1,2,3]); +***** test ## more incomplete array + warning('off','all'); + assert(fromJSON("[[1,2,3],[3"),{[1,2,3],[3]}); +***** test ## string with whitespaces + assert(fromJSON('"te\nss df\t t"'),"te\nss df\t t") +***** test ## char array + assert(fromJSON('["a","b","c"]'),{'a','b','c'}) +***** test ## array of string + assert(fromJSON('["test","list","more"]'),{'test',"list","more"}) +***** test ## escaped quote + assert(fromJSON('"tes\"t"'),'tes"t'); + assert(fromJSON('["te\"t","list","more"]'),{'te"t' 'list' 'more'}) +***** test ## struct + assert(fromJSON('{}',true), struct()) + assert(fromJSON('{}',false),struct()) +***** test ## struct + assert(fromJSON('{"a":3,"b":5}',true),struct("a",3,"b",5)) +***** test ## lazy JSON struct + assert(fromJSON('{a:3,b:5}',true), struct("a",3,"b",5)) +***** test ## beautified JSON + assert(fromJSON("{\n\ta\t :\t 3\n\t}"), struct("a",3)) +***** test ## lazy key with spaces + obj=fromJSON('{key with space: 4,"a":3}'); + assert(obj,struct("a",3,"key with space",4)) +***** test ## duplicate key + assert(fromJSON('{a:3,"a":5}'),struct("a",5)) +***** test ## empty object key-val + obj=fromJSON('{a:3,,, , "b" :5}'); + assert(obj,struct("a",3,"b",5)) +***** test ## struct of vector + assert(fromJSON('{a:[1,2,3,4]}', true), struct('a',{1 2 3 4})); + assert(fromJSON('[{a:1},{a:2},{a:3},{a:4}]',true), struct('a',{1 2 3 4})); + assert(fromJSON('{a:[1,2,3,4]}', false), struct('a',[1 2 3 4])); +***** test ## struct of 2x2 array + assert(fromJSON('{a:[[1,3],[2,4]]}', true), struct('a',{1 3;2 4})); + assert(fromJSON('[{a:1},{a:2}],[{a:3},{a:4}]',true), struct('a',{1 2;3 4})); + assert(fromJSON('{a:[[1,3],[2,4]]}', false), struct('a',[1 3;2 4])); +***** test ## array of struct with SARRAY=false + assert(fromJSON('[{a:1},{a:2} , {a:3},{a:4}]',false), num2cell(struct('a',{1 2 3 4}))); + assert(fromJSON('[{a:1},{a:2}],[{a:3},{a:4}]',false), num2cell(struct('a',{1 2;3 4}))); +***** test ## struct with mixed-size arrays (will not honor SARRAY=true) + assert(fromJSON('{"a":[1,2],"b":[3,4,5]}',true), struct("a",[1,2],"b",[3,4,5])) +***** test ## struct with number and string (guard against turing string into char array) + assert(fromJSON('{"a":1,"b":"hello"}',true), struct("a",1,"b","hello")) +***** test ## struct with empty array (gaurd against returning empty struct array) + assert(fromJSON('{"a":3,"b":[]}',true), struct("a",3,"b",[])) +***** test ## incomplete struct + warning('off','all'); + assert(fromJSON('[[1,2,{a:3,b ],3,4,5]'), {{1,2,struct('a',3)},3,4,5}); +***** test ## **nested** struct with array + assert(fromJSON('{"a":{"b":[1,2,3]}}',true ), struct("a",num2cell(struct("b",{1,2,3})))) % <== struct array + assert(fromJSON('{"a":{"b":[1,2,3]}}',false), struct("a",struct("b",[1,2,3]))) % <== struct with array b +***** test ## struct with mixed class array + assert(fromJSON('{"b":[1,2,{c:4}]}',true),struct('b',{1,2,struct('c',4)})); + s.b = {1,2,struct("c",4)}; + assert(fromJSON('{"b":[1,2,{c:4}]}',false),s) +***** test ## 2x2 array of struct + obj=fromJSON('[[{a:1},{a:3}],[{a:2},{a:4}]]'); + assert(obj,struct('a',{1 3;2 4})); +***** test ## 2x2 array of struct of arrays NOTE: this is sketchy operation + obj=fromJSON('[[{"a":[1,1]},{"a":[3,3]}],[{"a":[2,2]},{"a":[4,4]}]]'); + assert(obj,struct('a',{[1 1] [3 3];[2 2] [4 4]})); +***** test ## struct of ND array + obj=fromJSON('{a:[[[1,3],[2,4]],[[11,13],[12,14]]]}'); + assert(obj,struct('a',num2cell(reshape([1:4 11:14],2,2,2)))); +***** test ## ND array of struct + obj=fromJSON('[[[{a:1},{a:3}],[{a:2},{a:4}]],[[{a:11},{a:13}],[{a:12},{a:14}]]]'); + assert(obj,struct('a',num2cell(reshape([1:4 11:14],2,2,2)))); +***** test ## mixed array with struct + assert(fromJSON('[2,{a:3,"b":5}]'),{2,struct("a",3,"b",5)}) +***** test ## more mixed array with struct + assert(fromJSON('[{a:3,"b":5},{a:3}]'),{struct("a",3,"b",5),struct("a",3)}) +***** test ## complex number struct + assert(fromJSON('{re:3,im:5}'), 3+5i); + assert(fromJSON('[{re:3,im:5}]'), 3+5i); + assert(fromJSON('{real:4,imag:6}'),4+6i); +***** test ## complex number struct with anomoly + assert(fromJSON('{im:3,re:5}'), 5+3i); + assert(fromJSON('{im:3,re:5,re:7,im:10}'),7+10i); +***** test ## complex number struct array + assert(fromJSON('{re:[4,5],im:[6,7]}'), [4+6i,5+7i] ); + assert(fromJSON('[{re:[4,5],im:[6,7]}]'), [4+6i,5+7i] ); + assert(fromJSON('[{re:[4,5;0 2],im:[6,7;3 0]}]'),[4+6i,5+7i;3i 2]); +***** test ## complex number struct in array + obj=fromJSON('[[{re:4,im:6},{re:1,im:0}],[{re:0,im:2}, {re:2,im:4}]]'); + assert(obj,[4+6i 1;2i 2+4i]); +***** test ## complex number struct mixed with number within array + obj=fromJSON('[[4,{re:1,im:0}],[{re:0,im:2}, {re:4,im:6}]]'); + assert(obj,[4 1;2i 4+6i]); +***** test ## complex number struct within a structure (nested) + assert(fromJSON('{"a": {re:1,im:5}}'),struct('a',1+5i)); +***** test ## complex number struct with structure array (nested) + obj = fromJSON('[{"a":{re:1,im:5}},{"a":{re:2,im:5}}]'); + assert(obj,struct('a',{1+5i,2+5i})); +***** test ## test apparent octave inline fn (convert to inline) + assert(fromJSON('"@sin"'),@sin); + assert(func2str(fromJSON('"@(x)3*x"')),func2str(@(x)3*x)); +***** test ## exotic object in structure + assert(fromJSON('{"a":"[java.math.BigDecimal]"}'),struct('a','[java.math.BigDecimal]')); +***** test ## JSON with confusing '[]{},' AND missing quotes (hard string parse test) + warning('off','all'); + obj=fromJSON('[{a:"tes, {}: [ ] t"},"lkj{} sdf",im mi{}ing quotes]'); + assert(obj,{struct('a',"tes, {}: [ ] t"), 'lkj{} sdf','im mi{}ing quotes'}) +***** test ## garbage (non-quoted, meaningless string) + warning('off','all'); + assert(fromJSON('garbage'),'garbage') +***** test ## garbage in array + warning('off','all'); + assert(fromJSON('[1,garbage]'),{1,'garbage'}) +***** test ## garbage in struct + warning('off','all'); + assert(fromJSON('{a:garbage}'),struct('a','garbage')) +***** test ## exotic object (placeholder of class name) + assert(fromJSON('"[java.math.BigDecimal]"'),'[java.math.BigDecimal]'); +***** test ## warnings +***** warning fromJSON('garbage'); +***** warning fromJSON('{a:3,b}'); +***** warning fromJSON('{a:3,b:4'); +***** warning fromJSON('@nofunc'); ## looks like fn, but is UNQUOTED string +***** test %% jsondecode's Arrays with the same field names in the same order. + json = ['[', ... + '{', ... + '"x_id": "5ee28980fc9ab3",', ... + '"index": 0,', ... + '"guid": "b229d1de-f94a",', ... + '"latitude": -17.124067,', ... + '"longitude": -61.161831,', ... + '"friends": [', ... + '{', ... + '"id": 0,', ... + '"name": "Collins"', ... + '},', ... + '{', ... + '"id": 1,', ... + '"name": "Hays"', ... + '},', ... + '{', ... + '"id": 2,', ... + '"name": "Griffin"', ... + '}', ... + ']', ... + '},', ... + '{', ... + '"x_id": "5ee28980dd7250",', ... + '"index": 1,', ... + '"guid": "39cee338-01fb",', ... + '"latitude": 13.205994,', ... + '"longitude": -37.276231,', ... + '"friends": [', ... + '{', ... + '"id": 0,', ... + '"name": "Osborn"', ... + '},', ... + '{', ... + '"id": 1,', ... + '"name": "Mcdowell"', ... + '},', ... + '{', ... + '"id": 2,', ... + '"name": "Jewel"', ... + '}', ... + ']', ... + '},', ... + '{', ... + '"x_id": "5ee289802422ac",', ... + '"index": 2,', ... + '"guid": "3db8d55a-663e",', ... + '"latitude": -35.453456,', ... + '"longitude": 14.080287,', ... + '"friends": [', ... + '{', ... + '"id": 0,', ... + '"name": "Socorro"', ... + '},', ... + '{', ... + '"id": 1,', ... + '"name": "Darla"', ... + '},', ... + '{', ... + '"id": 2,', ... + '"name": "Leanne"', ... + '}', ... + ']', ... + '}', ... + ']']; + var1 = struct ('id', {0 1 2}, 'name', {'Collins' 'Hays' 'Griffin'}); + var2 = struct ('id', {0 1 2}, 'name', {'Osborn' 'Mcdowell' 'Jewel'}); + var3 = struct ('id', {0 1 2}, 'name', {'Socorro' 'Darla' 'Leanne'}); + exp = struct (... + 'x_id', {'5ee28980fc9ab3' '5ee28980dd7250' '5ee289802422ac'}, ... + 'index', {0 1 2}, ... + 'guid', {'b229d1de-f94a' '39cee338-01fb' '3db8d55a-663e'}, ... + 'latitude', {-17.124067 13.205994 -35.453456}, ... + 'longitude', {-61.161831 -37.276231 14.080287}, ... + 'friends', {var1 var2 var3}); + assert (fromJSON(json), exp); +69 tests, 69 passed, 0 known failure, 0 skipped +Checking C++ files ... +[src/cell2csv.cc] +>>>>> /build/octave-io-2.6.3/src/cell2csv.cc ***** test - assert(object2json([logical(1), logical(0)]), '[true,false]'); + arr = arr1 = num2cell (randn (3, 3)); + for ii=1:size (arr, 1) + arr1(ii, ii) = sprintf ("\"Val = %f\"", arr{ii, ii}); + endfor + f = tempname(); + cell2csv (f, arr1); + arr2 = csv2cell (f); + unlink (f); + idx = find (cellfun ("ischar", arr2)); + arr2(idx) = cellfun (@(x) str2double(strrep(x, "Val = ", "")), arr2(idx), "Uni", false); + assert (arr, arr2, 1e-5); ***** test - car.name = 'Mzd R8'; - car.speedsamples = [98, 33, 50; 56, 120, 102; 77, 82, 93]; - car.toofast = car.speedsamples >= 90; - car.leased = logical(1); - car.european = logical(0); - assert(object2json(car), '{"name":"Mzd R8","speedsamples":[[98,33,50],[56,120,102],[77,82,93]],"toofast":[[true,false,false],[false,true,true],[false,false,true]],"leased":true,"european":false}'); + arr = arr1 = num2cell (randn (3, 3)); + for ii=1:size (arr, 1) + arr1(ii, ii) = sprintf ("Val = %f", arr{ii, ii}); + endfor + arr1(2, 2) = [arr1{2, 2} ";"]; + f = tempname(); + cell2csv (f, arr1, ";", "&"); + arr2 = csv2cell (f, ";", "&"); + unlink (f); + assert (arr2{2, 2}(end), ";"); + arr2(2, 2) = strrep (arr2{2, 2}, ";", ""); + idx = find (cellfun ("ischar", arr2)); + arr2(idx) = cellfun (@(x) str2double(strrep(x, "Val = ", "")), arr2(idx), "Uni", false); + assert (arr, arr2, 1e-5); 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/read_namelist.m] ->>>>> /build/octave-io-2.6.3/inst/read_namelist.m +[src/num2col.cc] +>>>>> /build/octave-io-2.6.3/src/num2col.cc ***** test - fn = tempname (); - fid = fopen (fn, "w"); - fprintf (fid, "&test\n"); - fprintf (fid, " z = (1.1,2.2), (0.,1.), (1.,0.)\n"); - fprintf (fid, " y = (9,8)\n"); - fprintf (fid, " a = 1. 2. 3.\n"); - fprintf (fid, [' c = "(test)"' "\n" '\\' "\n"]); - fclose (fid); - nm = read_namelist (fn); - unlink (fn); - assert (nm.test.z, [1.1+2.2i, 1i, 1], eps); - assert (nm.test.y, 9+8i, eps); - assert (nm.test.a, [1 2 3], eps); ***** test - fn = tempname (); - fid = fopen (fn, "w"); - fprintf (fid, "&test\n"); - fprintf (fid, " a = 1,\n"); - fprintf (fid, " /\n"); - fclose (fid); - nm = read_namelist (fn); - unlink (fn); - assert (nm.test.a, 1, eps); ***** test - fn = tempname(); - fid = fopen (fn, "w"); - fprintf (fid, "&test\n"); - fprintf (fid, " a = '/',\n"); % inside apostrophes - fprintf (fid, " b = ""/"",\n"); % inside double quotes - fprintf (fid, " c = '""/',\n"); % with double quotes inside apostrophes - fprintf (fid, " d = ""'/"",\n"); % with apostrophes inside double quotes - fprintf (fid, "/\n"); - fclose (fid); - nm = read_namelist (fn); - unlink (fn); - assert (strcmp(nm.test.a, '/'), 1, eps); - assert (strcmp(nm.test.b, '/'), 1, eps); - assert (strcmp(nm.test.c, '"/'), 1, eps); - assert (strcmp(nm.test.d, '''/'), 1, eps); 3 tests, 3 passed, 0 known failure, 0 skipped -Checking C++ files ... [src/csv2cell.cc] >>>>> /build/octave-io-2.6.3/src/csv2cell.cc ***** test @@ -3253,42 +3324,6 @@ ***** error csv2cell ("f.csv", ",,"); ***** error csv2cell ("f.csv", ",", "[]"); 18 tests, 18 passed, 0 known failure, 0 skipped -[src/cell2csv.cc] ->>>>> /build/octave-io-2.6.3/src/cell2csv.cc -***** test - arr = arr1 = num2cell (randn (3, 3)); - for ii=1:size (arr, 1) - arr1(ii, ii) = sprintf ("\"Val = %f\"", arr{ii, ii}); - endfor - f = tempname(); - cell2csv (f, arr1); - arr2 = csv2cell (f); - unlink (f); - idx = find (cellfun ("ischar", arr2)); - arr2(idx) = cellfun (@(x) str2double(strrep(x, "Val = ", "")), arr2(idx), "Uni", false); - assert (arr, arr2, 1e-5); -***** test - arr = arr1 = num2cell (randn (3, 3)); - for ii=1:size (arr, 1) - arr1(ii, ii) = sprintf ("Val = %f", arr{ii, ii}); - endfor - arr1(2, 2) = [arr1{2, 2} ";"]; - f = tempname(); - cell2csv (f, arr1, ";", "&"); - arr2 = csv2cell (f, ";", "&"); - unlink (f); - assert (arr2{2, 2}(end), ";"); - arr2(2, 2) = strrep (arr2{2, 2}, ";", ""); - idx = find (cellfun ("ischar", arr2)); - arr2(idx) = cellfun (@(x) str2double(strrep(x, "Val = ", "")), arr2(idx), "Uni", false); - assert (arr, arr2, 1e-5); -2 tests, 2 passed, 0 known failure, 0 skipped -[src/num2col.cc] ->>>>> /build/octave-io-2.6.3/src/num2col.cc -***** test -***** test -***** test -3 tests, 3 passed, 0 known failure, 0 skipped [src/col2num.cc] >>>>> /build/octave-io-2.6.3/src/col2num.cc ***** test @@ -3324,7 +3359,7 @@ dh_strip -a -O--buildsystem=octave dh_makeshlibs -a -O--buildsystem=octave dh_shlibdeps -a -O--buildsystem=octave -dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/csvexplode.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/csvconcat.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/num2col.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/csv2cell.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/cell2csv.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/col2num.oct were not linked against libpthread.so.0 (they use none of the library's symbols) +dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/csv2cell.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/num2col.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/csvexplode.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/csvconcat.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/cell2csv.oct debian/octave-io/usr/lib/arm-linux-gnueabihf/octave/packages/io-2.6.3/arm-unknown-linux-gnueabihf-api-v55/col2num.oct were not linked against libpthread.so.0 (they use none of the library's symbols) dh_octave_substvar -O--buildsystem=octave dh_installdeb -O--buildsystem=octave dh_gencontrol -O--buildsystem=octave @@ -3341,12 +3376,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/22922/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/22922/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/14612 and its subdirectories -I: Current time: Tue Aug 17 17:18:30 -12 2021 -I: pbuilder-time-stamp: 1629263910 +I: removing directory /srv/workspace/pbuilder/22922 and its subdirectories +I: Current time: Wed Aug 18 19:22:52 +14 2021 +I: pbuilder-time-stamp: 1629264172