Running as unit: rb-build-amd64_15-38898.service ==================================================================================== Thu Nov 21 05:47:20 UTC 2024 - running /srv/jenkins/bin/reproducible_build.sh (for job reproducible_builder_amd64_15) on jenkins, called using "ionos11-amd64 ionos15-amd64" as arguments. Thu Nov 21 05:47:20 UTC 2024 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-MbJs4YoP" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Thu Nov 21 05:47:20 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos11-amd64.debian.net is marked as down. Thu Nov 21 05:47:20 UTC 2024 - checking via ssh if ionos11-amd64.debian.net is up. removed '/tmp/read-only-fs-test-QHRtem' Thu Nov 21 05:47:20 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos15-amd64.debian.net is marked as down. Thu Nov 21 05:47:20 UTC 2024 - checking via ssh if ionos15-amd64.debian.net is up. removed '/tmp/read-only-fs-test-SzjxjS' ok, let's check if libffi-platypus-perl is building anywhere yet… ok, libffi-platypus-perl is not building anywhere… UPDATE 1 ============================================================================= Initialising reproducibly build of libffi-platypus-perl in trixie on amd64 on jenkins now. 1st build will be done on ionos11-amd64.debian.net. 2nd build will be done on ionos15-amd64.debian.net. ============================================================================= Thu Nov 21 05:47:35 UTC 2024 I: starting to build libffi-platypus-perl/trixie/amd64 on jenkins on '2024-11-21 05:47' Thu Nov 21 05:47:35 UTC 2024 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/amd64_15/38898/console.log 1732168055 amd64 trixie libffi-platypus-perl Thu Nov 21 05:47:35 UTC 2024 I: Downloading source for trixie/libffi-platypus-perl=2.09-1 --2024-11-21 05:47:35-- http://deb.debian.org/debian/pool/main/libf/libffi-platypus-perl/libffi-platypus-perl_2.09-1.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2684 (2.6K) [text/prs.lines.tag] Saving to: ‘libffi-platypus-perl_2.09-1.dsc’ 0K .. 100% 388M=0s 2024-11-21 05:47:35 (388 MB/s) - ‘libffi-platypus-perl_2.09-1.dsc’ saved [2684/2684] --2024-11-21 05:47:35-- http://deb.debian.org/debian/pool/main/libf/libffi-platypus-perl/libffi-platypus-perl_2.09-1.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2684 (2.6K) [text/prs.lines.tag] Saving to: ‘libffi-platypus-perl_2.09-1.dsc’ 0K .. 100% 388M=0s 2024-11-21 05:47:35 (388 MB/s) - ‘libffi-platypus-perl_2.09-1.dsc’ saved [2684/2684] Thu Nov 21 05:47:35 UTC 2024 I: libffi-platypus-perl_2.09-1.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: libffi-platypus-perl Binary: libffi-platypus-perl Architecture: any Version: 2.09-1 Maintainer: Debian Perl Group Uploaders: C.J. Collier , gregor herrmann Homepage: https://metacpan.org/release/FFI-Platypus Standards-Version: 4.7.0 Vcs-Browser: https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl Vcs-Git: https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl.git Testsuite: autopkgtest-pkg-perl Build-Depends: debhelper-compat (= 13), libcapture-tiny-perl, libextutils-parsexs-perl, libffi-checklib-perl , libffi-dev, libjson-pp-perl, libscalar-list-utils-perl , libtest-simple-perl , libtest2-suite-perl , perl-xs-dev, perl:native, pkgconf | pkg-config | libpkgconfig-perl Package-List: libffi-platypus-perl deb perl optional arch=any Checksums-Sha1: 688c5a4982aabe25ba3f554815f0b32375a54fe2 422835 libffi-platypus-perl_2.09.orig.tar.gz c58c710b1bdac735e67ab06afe89c7b75be0e0cb 4856 libffi-platypus-perl_2.09-1.debian.tar.xz Checksums-Sha256: 9d312312289e78735b45c311b7ac16a9e8da093f779bf69469c70afac4dd5b63 422835 libffi-platypus-perl_2.09.orig.tar.gz 604ac379ddc26984b15656122e7ca4061f8cf667cacb5434d43c85a24f5f67ff 4856 libffi-platypus-perl_2.09-1.debian.tar.xz Files: 8184b1e07401ea214c052452c62f0278 422835 libffi-platypus-perl_2.09.orig.tar.gz e3ccdf14fb4ef774d474aabb60883e82 4856 libffi-platypus-perl_2.09-1.debian.tar.xz Dgit: 0e040785d4c6dd4cb4dd771cb1b49da6217d281d debian archive/debian/2.09-1 https://git.dgit.debian.org/libffi-platypus-perl -----BEGIN PGP SIGNATURE----- iQKTBAEBCgB9FiEE0eExbpOnYKgQTYX6uzpoAYZJqgYFAmbQQR9fFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEQx RTEzMTZFOTNBNzYwQTgxMDREODVGQUJCM0E2ODAxODY0OUFBMDYACgkQuzpoAYZJ qgaUFRAApk1z5C6MpXlG7uZa9F2mEZC7bLpiurEL9lLv1yBk8nOpOPrL49vj14j2 0+Gm7eAyWiDaV3ci8aymJG3JTEmJBFpA7+S377sVrxplHtaEiD6uK4mHRILmdaL4 iK5Tpn3h/iKEuZp7FKLMiK6bEXvWKmT8p7ywATi3GM1GOLcWfUPoiQDcYhbbKLdj eskDQ/152xtOCuTZY1Ou0qtq7AKgUdyVAeYBUyn2DyAG9OPcqRuvGmWOEzslhjFl SaZDSG8/PVehnjEaCcyY1anJVpxXPW+6dQGujFgaVwB9E7v1viaXI3b2llq9g3Fi le0Po2d9gX8maa1zGJ00Ru1HXV6Dxg7hVSCPJuhDigMYIEcfvokjES1WtsWneUXF 0l/Ab/by4HUMMyzRXkMHYj2E9dIY/GdaRszcOcaP8z9xG+ygQTaX3Aw0VmLVB1Lb htQiPXG/LsHWG5rsiY1ZtOU/jinZH8NT5K2uwazQqQh/uGKvg5h9SBvruhRIgi11 RnU+dxYLc/m6CsSqfksTf8MRt9bE9YkdE0nPQLJ3XgwHfZWdpHXh6bLpVo1Ft2cJ waDKCRMqtCIsqRt5J2VuVmpqJ7InE6Wudu8PzwtOrxg4SfliQa8pLdDC4LuqacqV 6fD95HoZf9degF/jdgDz7vn0V2fvZEsdA6u5KdPMrZPU8n3m+yc= =6PEG -----END PGP SIGNATURE----- Thu Nov 21 05:47:35 UTC 2024 I: Checking whether the package is not for us Thu Nov 21 05:47:35 UTC 2024 I: Starting 1st build on remote node ionos11-amd64.debian.net. Thu Nov 21 05:47:35 UTC 2024 I: Preparing to do remote build '1' on ionos11-amd64.debian.net. Thu Nov 21 05:47:35 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos11-amd64.debian.net is marked as down. Thu Nov 21 05:47:35 UTC 2024 - checking via ssh if ionos11-amd64.debian.net is up. removed '/tmp/read-only-fs-test-Pa4EEz' ==================================================================================== Thu Nov 21 05:47:37 UTC 2024 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on ionos11-amd64, called using "1 libffi-platypus-perl trixie /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg 2.09-1" as arguments. Thu Nov 21 05:47:37 UTC 2024 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-xNZt1jJK" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Thu Nov 21 05:47:37 UTC 2024 I: Downloading source for trixie/libffi-platypus-perl=2.09-1 Reading package lists... NOTICE: 'libffi-platypus-perl' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl.git Please use: git clone https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 430 kB of source archives. Get:1 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (dsc) [2684 B] Get:2 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (tar) [423 kB] Get:3 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (diff) [4856 B] Fetched 430 kB in 0s (7128 kB/s) Download complete and in download only mode Reading package lists... NOTICE: 'libffi-platypus-perl' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl.git Please use: git clone https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 430 kB of source archives. Get:1 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (dsc) [2684 B] Get:2 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (tar) [423 kB] Get:3 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (diff) [4856 B] Fetched 430 kB in 0s (7128 kB/s) Download complete and in download only mode ============================================================================= Building libffi-platypus-perl in trixie on amd64 on ionos11-amd64 now. Date: Thu Nov 21 05:47:37 UTC 2024 Date UTC: Thu Nov 21 05:47:37 UTC 2024 ============================================================================= W: /root/.pbuilderrc does not exist I: Logging to b1/build.log I: pbuilder: network access will be disabled during build I: Current time: Wed Nov 20 17:47:37 -12 2024 I: pbuilder-time-stamp: 1732168057 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [libffi-platypus-perl_2.09-1.dsc] I: copying [./libffi-platypus-perl_2.09.orig.tar.gz] I: copying [./libffi-platypus-perl_2.09-1.debian.tar.xz] I: Extracting source gpgv: Signature made Thu Aug 29 09:36:31 2024 gpgv: using RSA key D1E1316E93A760A8104D85FABB3A68018649AA06 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./libffi-platypus-perl_2.09-1.dsc: no acceptable signature found dpkg-source: info: extracting libffi-platypus-perl in libffi-platypus-perl-2.09 dpkg-source: info: unpacking libffi-platypus-perl_2.09.orig.tar.gz dpkg-source: info: unpacking libffi-platypus-perl_2.09-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/3063139/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' DISTRIBUTION='trixie' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='f707cf4ef42140d78707e7d3d753f7ad' 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='3063139' PS1='# ' PS2='> ' 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/r-b-build.hxADhKAg/pbuilderrc_vXw1 --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b1 --logfile b1/build.log libffi-platypus-perl_2.09-1.dsc' SUDO_GID='111' SUDO_UID='106' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://46.16.76.132:3128' I: uname -a Linux ionos11-amd64 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Aug 4 21:30 /bin -> usr/bin I: user script /srv/workspace/pbuilder/3063139/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), libcapture-tiny-perl, libextutils-parsexs-perl, libffi-checklib-perl, libffi-dev, libjson-pp-perl, libscalar-list-utils-perl, libtest-simple-perl, libtest2-suite-perl, perl-xs-dev, perl:native, pkgconf | pkg-config | libpkgconfig-perl dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19969 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on libcapture-tiny-perl; however: Package libcapture-tiny-perl is not installed. pbuilder-satisfydepends-dummy depends on libffi-checklib-perl; however: Package libffi-checklib-perl is not installed. pbuilder-satisfydepends-dummy depends on libffi-dev; however: Package libffi-dev is not installed. pbuilder-satisfydepends-dummy depends on libtest2-suite-perl; however: Package libtest2-suite-perl is not installed. pbuilder-satisfydepends-dummy depends on perl-xs-dev; however: Package perl-xs-dev is not installed. pbuilder-satisfydepends-dummy depends on perl:native. pbuilder-satisfydepends-dummy depends on pkgconf | pkg-config | libpkgconfig-perl; however: Package pkgconf is not installed. Package pkg-config is not installed. Package libpkgconfig-perl is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} debhelper{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libcapture-tiny-perl{a} libdebhelper-perl{a} libelf1t64{a} libffi-checklib-perl{a} libffi-dev{a} libfile-stripnondeterminism-perl{a} libfile-which-perl{a} libicu72{a} libmagic-mgc{a} libmagic1t64{a} libperl-dev{a} libpipeline1{a} libpkgconf3{a} libtest2-suite-perl{a} libtool{a} libuchardet0{a} libxml2{a} m4{a} man-db{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} sensible-utils{a} The following packages are RECOMMENDED but will NOT be installed: curl libarchive-cpio-perl libltdl-dev libmail-sendmail-perl libmodule-pluggable-perl lynx wget 0 packages upgraded, 38 newly installed, 0 to remove and 0 not upgraded. Need to get 21.5 MB of archives. After unpacking 82.7 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian trixie/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 2 http://deb.debian.org/debian trixie/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 3 http://deb.debian.org/debian trixie/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 4 http://deb.debian.org/debian trixie/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 5 http://deb.debian.org/debian trixie/main amd64 gettext-base amd64 0.22.5-2 [200 kB] Get: 6 http://deb.debian.org/debian trixie/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 7 http://deb.debian.org/debian trixie/main amd64 groff-base amd64 1.23.0-5 [1181 kB] Get: 8 http://deb.debian.org/debian trixie/main amd64 bsdextrautils amd64 2.40.2-11 [91.5 kB] Get: 9 http://deb.debian.org/debian trixie/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 10 http://deb.debian.org/debian trixie/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 11 http://deb.debian.org/debian trixie/main amd64 m4 amd64 1.4.19-4 [287 kB] Get: 12 http://deb.debian.org/debian trixie/main amd64 autoconf all 2.72-3 [493 kB] Get: 13 http://deb.debian.org/debian trixie/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 14 http://deb.debian.org/debian trixie/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get: 15 http://deb.debian.org/debian trixie/main amd64 autopoint all 0.22.5-2 [723 kB] Get: 16 http://deb.debian.org/debian trixie/main amd64 libdebhelper-perl all 13.20 [89.7 kB] Get: 17 http://deb.debian.org/debian trixie/main amd64 libtool all 2.4.7-8 [517 kB] Get: 18 http://deb.debian.org/debian trixie/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 19 http://deb.debian.org/debian trixie/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 20 http://deb.debian.org/debian trixie/main amd64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB] Get: 21 http://deb.debian.org/debian trixie/main amd64 dh-strip-nondeterminism all 1.14.0-1 [8448 B] Get: 22 http://deb.debian.org/debian trixie/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 23 http://deb.debian.org/debian trixie/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 24 http://deb.debian.org/debian trixie/main amd64 libicu72 amd64 72.1-5+b1 [9423 kB] Get: 25 http://deb.debian.org/debian trixie/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 26 http://deb.debian.org/debian trixie/main amd64 gettext amd64 0.22.5-2 [1601 kB] Get: 27 http://deb.debian.org/debian trixie/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 28 http://deb.debian.org/debian trixie/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 29 http://deb.debian.org/debian trixie/main amd64 debhelper all 13.20 [915 kB] Get: 30 http://deb.debian.org/debian trixie/main amd64 libcapture-tiny-perl all 0.48-2 [24.6 kB] Get: 31 http://deb.debian.org/debian trixie/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get: 32 http://deb.debian.org/debian trixie/main amd64 libffi-checklib-perl all 0.31-1 [19.4 kB] Get: 33 http://deb.debian.org/debian trixie/main amd64 libffi-dev amd64 3.4.6-1 [60.6 kB] Get: 34 http://deb.debian.org/debian trixie/main amd64 libperl-dev amd64 5.40.0-7 [1112 kB] Get: 35 http://deb.debian.org/debian trixie/main amd64 libpkgconf3 amd64 1.8.1-4 [36.4 kB] Get: 36 http://deb.debian.org/debian trixie/main amd64 libtest2-suite-perl all 0.000163-1 [383 kB] Get: 37 http://deb.debian.org/debian trixie/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB] Get: 38 http://deb.debian.org/debian trixie/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB] Fetched 21.5 MB in 2s (8818 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package sensible-utils. (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 ... 19969 files and directories currently installed.) Preparing to unpack .../00-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../01-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../02-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../03-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../04-gettext-base_0.22.5-2_amd64.deb ... Unpacking gettext-base (0.22.5-2) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../05-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../06-groff-base_1.23.0-5_amd64.deb ... Unpacking groff-base (1.23.0-5) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../07-bsdextrautils_2.40.2-11_amd64.deb ... Unpacking bsdextrautils (2.40.2-11) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../08-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../09-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../10-m4_1.4.19-4_amd64.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../11-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../12-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../13-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../14-autopoint_0.22.5-2_all.deb ... Unpacking autopoint (0.22.5-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../15-libdebhelper-perl_13.20_all.deb ... Unpacking libdebhelper-perl (13.20) ... Selecting previously unselected package libtool. Preparing to unpack .../16-libtool_2.4.7-8_all.deb ... Unpacking libtool (2.4.7-8) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../17-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../18-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../19-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../20-dh-strip-nondeterminism_1.14.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.0-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../21-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../22-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../23-libicu72_72.1-5+b1_amd64.deb ... Unpacking libicu72:amd64 (72.1-5+b1) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../24-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../25-gettext_0.22.5-2_amd64.deb ... Unpacking gettext (0.22.5-2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../26-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../27-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../28-debhelper_13.20_all.deb ... Unpacking debhelper (13.20) ... Selecting previously unselected package libcapture-tiny-perl. Preparing to unpack .../29-libcapture-tiny-perl_0.48-2_all.deb ... Unpacking libcapture-tiny-perl (0.48-2) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../30-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libffi-checklib-perl. Preparing to unpack .../31-libffi-checklib-perl_0.31-1_all.deb ... Unpacking libffi-checklib-perl (0.31-1) ... Selecting previously unselected package libffi-dev:amd64. Preparing to unpack .../32-libffi-dev_3.4.6-1_amd64.deb ... Unpacking libffi-dev:amd64 (3.4.6-1) ... Selecting previously unselected package libperl-dev:amd64. Preparing to unpack .../33-libperl-dev_5.40.0-7_amd64.deb ... Unpacking libperl-dev:amd64 (5.40.0-7) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../34-libpkgconf3_1.8.1-4_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-4) ... Selecting previously unselected package libtest2-suite-perl. Preparing to unpack .../35-libtest2-suite-perl_0.000163-1_all.deb ... Unpacking libtest2-suite-perl (0.000163-1) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../36-pkgconf-bin_1.8.1-4_amd64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:amd64. Preparing to unpack .../37-pkgconf_1.8.1-4_amd64.deb ... Unpacking pkgconf:amd64 (1.8.1-4) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libfile-which-perl (1.27-2) ... Setting up libicu72:amd64 (72.1-5+b1) ... Setting up bsdextrautils (2.40.2-11) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libdebhelper-perl (13.20) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up gettext-base (0.22.5-2) ... Setting up m4 (1.4.19-4) ... Setting up libperl-dev:amd64 (5.40.0-7) ... Setting up file (1:5.45-3+b1) ... Setting up libffi-dev:amd64 (3.4.6-1) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libtest2-suite-perl (0.000163-1) ... Setting up autotools-dev (20220109.1) ... Setting up libpkgconf3:amd64 (1.8.1-4) ... Setting up libffi-checklib-perl (0.31-1) ... Setting up autopoint (0.22.5-2) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up autoconf (2.72-3) ... Setting up libcapture-tiny-perl (0.48-2) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... Setting up gettext (0.22.5-2) ... Setting up libtool (2.4.7-8) ... Setting up pkgconf:amd64 (1.8.1-4) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up dh-strip-nondeterminism (1.14.0-1) ... Setting up groff-base (1.23.0-5) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up debhelper (13.20) ... Processing triggers for libc-bin (2.40-3) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/libffi-platypus-perl-2.09/ && 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 > ../libffi-platypus-perl_2.09-1_source.changes dpkg-buildpackage: info: source package libffi-platypus-perl dpkg-buildpackage: info: source version 2.09-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by gregor herrmann dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean dh_clean debian/rules binary dh binary dh_update_autotools_config dh_autoreconf dh_auto_configure /usr/bin/perl Makefile.PL INSTALLDIRS=vendor "OPTIMIZE=-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" "LD=x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now" using system libffi via /usr/bin/pkg-config Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for FFI::Platypus Writing MYMETA.yml and MYMETA.json debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_build -- V=1 make -j20 V=1 make[2]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' Running Mkbootstrap for lib/FFI/Platypus () "/usr/bin/perl" "/usr/share/perl/5.40/ExtUtils/xsubpp" -typemap '/usr/share/perl/5.40/ExtUtils/typemap' lib/FFI/Platypus.xs > lib/FFI/Platypus.xsc chmod 644 "lib/FFI/Platypus.bs" cp lib/FFI/Build/File/Base.pm blib/lib/FFI/Build/File/Base.pm cp lib/FFI/Build/Plugin.pm blib/lib/FFI/Build/Plugin.pm cp lib/FFI/Platypus/Lang/Win32.pm blib/lib/FFI/Platypus/Lang/Win32.pm cp lib/FFI/Build/Platform.pm blib/lib/FFI/Build/Platform.pm cp lib/FFI/Platypus.pm blib/lib/FFI/Platypus.pm cp lib/FFI/Platypus/Type.pm blib/lib/FFI/Platypus/Type.pm cp lib/FFI/Platypus/Legacy.pm blib/lib/FFI/Platypus/Legacy.pm cp lib/FFI/Build/File/CXX.pm blib/lib/FFI/Build/File/CXX.pm cp lib/FFI/Build/File/Library.pm blib/lib/FFI/Build/File/Library.pm cp lib/FFI/Platypus/Constant.pm blib/lib/FFI/Platypus/Constant.pm cp lib/FFI/Platypus/Lang/ASM.pm blib/lib/FFI/Platypus/Lang/ASM.pm cp lib/FFI/Platypus/Bundle.pm blib/lib/FFI/Platypus/Bundle.pm cp lib/FFI/Platypus/Type/StringPointer.pm blib/lib/FFI/Platypus/Type/StringPointer.pm cp lib/FFI/Platypus/Record.pm blib/lib/FFI/Platypus/Record.pm cp lib/FFI/Build.pm blib/lib/FFI/Build.pm cp lib/FFI/Platypus/TypeParser/Version2.pm blib/lib/FFI/Platypus/TypeParser/Version2.pm cp lib/FFI/Platypus/DL.pm blib/lib/FFI/Platypus/DL.pm cp lib/FFI/Platypus/TypeParser/Version1.pm blib/lib/FFI/Platypus/TypeParser/Version1.pm cp lib/FFI/Build/PluginData.pm blib/lib/FFI/Build/PluginData.pm cp lib/FFI/Build/MM.pm blib/lib/FFI/Build/MM.pm cp lib/FFI/Build/File/Object.pm blib/lib/FFI/Build/File/Object.pm cp lib/FFI/Platypus/Record/TieArray.pm blib/lib/FFI/Platypus/Record/TieArray.pm cp lib/FFI/Platypus/Internal.pm blib/lib/FFI/Platypus/Internal.pm cp lib/FFI/Platypus/Buffer.pm blib/lib/FFI/Platypus/Buffer.pm cp lib/FFI/Platypus/Type/PointerSizeBuffer.pm blib/lib/FFI/Platypus/Type/PointerSizeBuffer.pm cp lib/FFI/Platypus/TypeParser.pm blib/lib/FFI/Platypus/TypeParser.pm cp lib/FFI/Platypus/Memory.pm blib/lib/FFI/Platypus/Memory.pm cp lib/FFI/Platypus/Type/StringArray.pm blib/lib/FFI/Platypus/Type/StringArray.pm cp lib/FFI/Platypus/API.pm blib/lib/FFI/Platypus/API.pm cp lib/FFI/Platypus/Record/Meta.pm blib/lib/FFI/Platypus/Record/Meta.pm cp lib/FFI/Platypus/ShareConfig.pm blib/lib/FFI/Platypus/ShareConfig.pm cp lib/FFI/Platypus/TypeParser/Version0.pm blib/lib/FFI/Platypus/TypeParser/Version0.pm cp lib/FFI/Platypus/Closure.pm blib/lib/FFI/Platypus/Closure.pm cp lib/FFI/Platypus/Function.pm blib/lib/FFI/Platypus/Function.pm cp lib/FFI/Platypus/Type/WideString.pm blib/lib/FFI/Platypus/Type/WideString.pm cp lib/FFI/Platypus/Lang.pm blib/lib/FFI/Platypus/Lang.pm cp lib/FFI/Build/File/C.pm blib/lib/FFI/Build/File/C.pm cp lib/FFI/Platypus/Lang/C.pm blib/lib/FFI/Platypus/Lang/C.pm "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 cp lib/FFI/Temp.pm blib/lib/FFI/Temp.pm cp lib/FFI/typemap blib/lib/FFI/typemap cp lib/FFI/Probe.pm blib/lib/FFI/Probe.pm cp lib/FFI/Probe/Runner/Builder.pm blib/lib/FFI/Probe/Runner/Builder.pm cp lib/FFI/Probe/Runner/Result.pm blib/lib/FFI/Probe/Runner/Result.pm cp lib/FFI/Probe/Runner.pm blib/lib/FFI/Probe/Runner.pm mv lib/FFI/Platypus.xsc lib/FFI/Platypus.c +x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c -o blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.o blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.c +x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -fstack-protector-strong -L/usr/local/lib -o blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.o -ldl +blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun verify self dlrun verify self ok +pkgconf --cflags libffi +pkgconf --libs libffi [out] -lffi PR header."stdlib.h"=1 PR header."stdint.h"=1 PR header."sys/types.h"=1 PR header."sys/stat.h"=1 PR header."unistd.h"=1 PR header."alloca.h"=1 PR header."dlfcn.h"=1 PR header."limits.h"=1 PR header."stddef.h"=1 PR header."wchar.h"=1 PR header."signal.h"=1 PR header."inttypes.h"=1 PR header."windows.h"=0 PR header."sys/cygwin.h"=0 PR header."string.h"=1 PR header."psapi.h"=0 PR header."stdio.h"=1 PR header."stdbool.h"=1 PR header."complex.h"=1 PR type.char.align=1 PR type.char.sign=signed PR type.char.size=1 PR type.signed char.align=1 PR type.signed char.sign=signed PR type.signed char.size=1 PR type.unsigned char.align=1 PR type.unsigned char.sign=unsigned PR type.unsigned char.size=1 PR type.short.align=2 PR type.short.sign=signed PR type.short.size=2 PR type.signed short.align=2 PR type.signed short.sign=signed PR type.signed short.size=2 PR type.unsigned short.align=2 PR type.unsigned short.sign=unsigned PR type.unsigned short.size=2 PR type.int.align=4 PR type.int.sign=signed PR type.int.size=4 PR type.signed int.align=4 PR type.signed int.sign=signed PR type.signed int.size=4 PR type.unsigned int.align=4 PR type.unsigned int.sign=unsigned PR type.unsigned int.size=4 PR type.long.align=8 PR type.long.sign=signed PR type.long.size=8 PR type.signed long.align=8 PR type.signed long.sign=signed PR type.signed long.size=8 PR type.unsigned long.align=8 PR type.unsigned long.sign=unsigned PR type.unsigned long.size=8 PR type.uint8_t.align=1 PR type.uint8_t.sign=unsigned PR type.uint8_t.size=1 PR type.int8_t.align=1 PR type.int8_t.sign=signed PR type.int8_t.size=1 PR type.uint16_t.align=2 PR type.uint16_t.sign=unsigned PR type.uint16_t.size=2 PR type.int16_t.align=2 PR type.int16_t.sign=signed PR type.int16_t.size=2 PR type.uint32_t.align=4 PR type.uint32_t.sign=unsigned PR type.uint32_t.size=4 PR type.int32_t.align=4 PR type.int32_t.sign=signed PR type.int32_t.size=4 PR type.uint64_t.align=8 PR type.uint64_t.sign=unsigned PR type.uint64_t.size=8 PR type.int64_t.align=8 PR type.int64_t.sign=signed PR type.int64_t.size=8 PR type.size_t.align=8 PR type.size_t.sign=unsigned PR type.size_t.size=8 PR type.ssize_t.align=8 PR type.ssize_t.sign=signed PR type.ssize_t.size=8 PR type.float.align=4 PR type.float.size=4 PR type.double.align=8 PR type.double.size=8 PR type.long double.align=16 PR type.long double.size=16 PR type.float complex.align=4 PR type.float complex.size=8 PR type.double complex.align=8 PR type.double complex.size=16 PR type.long double complex.align=16 PR type.long double complex.size=32 PR type.bool.align=1 PR type.bool.sign=unsigned PR type.bool.size=1 PR type._Bool.align=1 PR type._Bool.sign=unsigned PR type._Bool.size=1 PR type.pointer.align=8 PR type.pointer.size=8 PR type.uintptr_t.align=8 PR type.uintptr_t.sign=unsigned PR type.uintptr_t.size=8 PR type.intptr_t.align=8 PR type.intptr_t.sign=signed PR type.intptr_t.size=8 PR type.enum.align=4 PR type.enum.sign=unsigned PR type.enum.size=4 PR type.senum.align=4 PR type.senum.sign=signed PR type.senum.size=4 PR type.intmax_t.align=8 PR type.intmax_t.sign=signed PR type.intmax_t.size=8 PR type.uintmax_t.align=8 PR type.uintmax_t.sign=unsigned PR type.uintmax_t.size=8 PR type.long long.align=8 PR type.long long.sign=signed PR type.long long.size=8 PR type.signed long long.align=8 PR type.signed long long.sign=signed PR type.signed long long.size=8 PR type.unsigned long long.align=8 PR type.unsigned long long.sign=unsigned PR type.unsigned long long.size=8 PR type.dev_t.align=8 PR type.dev_t.sign=unsigned PR type.dev_t.size=8 PR type.ino_t.align=8 PR type.ino_t.sign=unsigned PR type.ino_t.size=8 PR type.mode_t.align=4 PR type.mode_t.sign=unsigned PR type.mode_t.size=4 PR type.nlink_t.align=8 PR type.nlink_t.sign=unsigned PR type.nlink_t.size=8 PR type.uid_t.align=4 PR type.uid_t.sign=unsigned PR type.uid_t.size=4 PR type.gid_t.align=4 PR type.gid_t.sign=unsigned PR type.gid_t.size=4 PR type.off_t.align=8 PR type.off_t.sign=signed PR type.off_t.size=8 PR type.blksize_t.align=8 PR type.blksize_t.sign=signed PR type.blksize_t.size=8 PR type.blkcnt_t.align=8 PR type.blkcnt_t.sign=signed PR type.blkcnt_t.size=8 PR type.time_t.align=8 PR type.time_t.sign=signed PR type.time_t.size=8 PR type.ptrdiff_t.align=8 PR type.ptrdiff_t.sign=signed PR type.ptrdiff_t.size=8 PR type.wchar_t.align=4 PR type.wchar_t.sign=signed PR type.wchar_t.size=4 PR type.wint_t.align=4 PR type.wint_t.sign=unsigned PR type.wint_t.size=4 PR probe.abi=1 PR probe.alloca=1 PR probe.complex=1 PR probe.longdouble=1 PR probe.recordvalue=1 PR probe.strnlen=1 PR probe.variadic=1 PR abi.unix64=2 PR abi.win64=3 PR abi.efi64=3 PR abi.gnuw64=4 PR abi.default_abi=2 "/usr/bin/perl" "/usr/share/perl/5.40/ExtUtils/xsubpp" -typemap '/usr/share/perl/5.40/ExtUtils/typemap' lib/FFI/Platypus.xs > lib/FFI/Platypus.xsc x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/cast.c -o xs/cast.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/closure.c -o xs/closure.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/complex.c -o xs/complex.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/custom.c -o xs/custom.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/meta.c -o xs/meta.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/names.c -o xs/names.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/perl_math_int64.c -o xs/perl_math_int64.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/record_opaque.c -o xs/record_opaque.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/record_simple.c -o xs/record_simple.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/record_string.c -o xs/record_string.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/windl.c -o xs/windl.o mv lib/FFI/Platypus.xsc lib/FFI/Platypus.c x86_64-linux-gnu-gcc -c -Iinclude \ -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 \ -DVERSION=\"2.09\" \ -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" lib/FFI/Platypus.c -o lib/FFI/Platypus.o rm -f blib/arch/auto/FFI/Platypus/Platypus.so x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -shared -L/usr/local/lib -fstack-protector-strong lib/FFI/Platypus.o xs/cast.o xs/closure.o xs/complex.o xs/custom.o xs/meta.o xs/names.o xs/perl_math_int64.o xs/record_opaque.o xs/record_simple.o xs/record_string.o xs/windl.o -o blib/arch/auto/FFI/Platypus/Platypus.so \ -lffi \ chmod 755 blib/arch/auto/FFI/Platypus/Platypus.so +pkgconf --cflags libffi +pkgconf --libs libffi [out] -lffi +x86_64-linux-gnu-gcc -Iblib/lib/auto/share/dist/FFI-Platypus/include -Iinclude -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c ffi/constant.c -o ffi/_build/constant.c.o +x86_64-linux-gnu-gcc -Iblib/lib/auto/share/dist/FFI-Platypus/include -Iinclude -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c ffi/memory.c -o ffi/_build/memory.c.o +x86_64-linux-gnu-gcc -Iblib/lib/auto/share/dist/FFI-Platypus/include -Iinclude -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c ffi/record_meta.c -o ffi/_build/record_meta.c.o +x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -shared -L/usr/local/lib -fstack-protector-strong ffi/_build/constant.c.o ffi/_build/memory.c.o ffi/_build/record_meta.c.o -lffi -o blib/lib/auto/share/dist/FFI-Platypus/lib/libplfill.so Manifying 33 pod documents Manifying 10 pod documents make[2]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_test make -j20 test TEST_VERBOSE=1 make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 CC t/ffi/align.c CC t/ffi/align_array.c CC t/ffi/align_fixed.c CC t/ffi/align_string.c CC t/ffi/basic.c CC t/ffi/closure.c CC t/ffi/color.c CC t/ffi/complex_double.c CC t/ffi/complex_float.c CC t/ffi/double.c CC t/ffi/float.c CC t/ffi/gh117.c CC t/ffi/gh174.c CC t/ffi/longdouble.c CC t/ffi/memcmp4.c CC t/ffi/meta.c CC t/ffi/pointer.c CC t/ffi/record.c CC t/ffi/sint16.c CC t/ffi/sint32.c CC t/ffi/sint64.c CC t/ffi/sint8.c CC t/ffi/string.c CC t/ffi/string_array.c CC t/ffi/uint16.c CC t/ffi/uint32.c CC t/ffi/uint64.c CC t/ffi/uint8.c CC t/ffi/variadic.c LD t/ffi/libtest.so PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t # # # # HARNESS_ACTIVE=1 # HARNESS_IS_VERBOSE=1 # HARNESS_VERSION=3.48 # LANG=C # LC_ALL=C # PERL5LIB=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib:/build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # PERL_DL_NONLAZY=1 # PERL_USE_UNSAFE_INC=1 # SHELL=/bin/bash # # # # PERL5LIB path # /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib # /build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # # # # perl 5.040000 linux x86_64-linux-gnu-thread-multi # Alien::Base - # Alien::FFI - # Capture::Tiny 0.48 # Devel::Hide - # ExtUtils::CBuilder 0.280240 # ExtUtils::MakeMaker 7.70 # ExtUtils::ParseXS 3.51 # FFI::CheckLib 0.31 # File::Spec::Functions 3.91 # IPC::Cmd 1.04 # JSON::PP 4.16 # List::Util 1.63 # Math::LongDouble - # PkgConfig - # Test2::API 1.302199 # Test2::V0 0.000163 # autodie 2.37 # constant 1.33 # forks - # parent 0.241 # # # # mode : system # Alien::FFI::pkgconfig->VERSION = # Alien::FFI::pkgconfig->install_type = system # Alien::FFI::pkgconfig->cflags = # Alien::FFI::pkgconfig->libs = -lffi # Alien::FFI::pkgconfig->version = 3.4.6 # # # # ffi.platypus.memory.strdup_impl =libc # ffi.platypus.memory.strndup_impl=libc # # # # Types: # complex_double : double complex # complex_float : float complex # complex_longdouble : long double complex # double : double # float : float # longdouble : long double # sint16 : int16_t, short, signed short # sint32 : int, int32_t, senum, signed int, wchar_t # sint64 : blkcnt_t, blksize_t, int64_t, intmax_t, intptr_t, long, long long, off_t, ptrdiff_t, signed long, signed long long, ssize_t, time_t # sint8 : char, int8_t, signed char # uint16 : uint16_t, unsigned short, ushort # uint32 : enum, gid_t, mode_t, uid_t, uint, uint32_t, unsigned int, wint_t # uint64 : dev_t, ino_t, nlink_t, size_t, uint64_t, uintmax_t, uintptr_t, ulong, unsigned long, unsigned long long # uint8 : bool, uchar, uint8_t, unsigned char # # # # ABIs: # default_abi 2 # efi64 3 # gnuw64 4 # unix64 2 # win64 3 # # # # Probes: # complex 1 # variadic 1 # strnlen 1 # recordvalue 1 # bigendian64 0 # bigendian 0 # longdouble 1 # alloca 1 # abi 1 # # # # CPU Info: # model name : AMD Opteron 62xx class CPU # flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm cmp_legacy svm abm sse4a misalignsse 3dnowprefetch osvw ssbd ibpb vmmcall virt_ssbd arat npt nrip_save # address sizes : 40 bits physical, 48 bits virtual # # # # [PLATFORM] # osname : linux # cc : x86_64-linux-gnu-gcc # cxx : x86_64-linux-gnu-g++ # cxxld : x86_64-linux-gnu-g++ # for : --- # ld : x86_64-linux-gnu-gcc # ccflags : -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include # ldflags : -shared -L/usr/local/lib -fstack-protector-strong # object suffix : .o # library prefix : lib # library suffix : .so # cc mm works : -MM # # # t/00_diag.t .............................. ok 1 - okay 1..1 ok t/ffi_build.t ............................ ok 1 - basic { ok 1 - FFI::Build=HASH->isa('FFI::Build') ok 2 - foo is somewhere in the native name for the lib # lib.file.path = ./libfoo.so ok 3 - dir is a dir ok 4 - FFI::Build::Platform=HASH->isa('FFI::Build::Platform') ok 5 - FFI::Build::File::C=HASH->isa('FFI::Build::File::C') 1..5 } ok 2 - file classes { ok 1 - at least one # class = FFI::Build::File::C # class = FFI::Build::File::CXX # class = FFI::Build::File::Library # class = FFI::Build::File::Object # class = FFI::Build::File::Foo2 # class = FFI::Build::File::Foo1 1..1 } ok 3 - build { ok 1 - name { # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo1.c.o # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo2.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/jzPbZBauNc/libfoo.so ok 2 ok 3 1..3 } ok 2 - object { # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/_build/foo1.c.o corpus/ffi_build/project1/_build/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/DpQFkBz3fi/libfoo.so ok 2 ok 3 1..3 } ok 3 - array { # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo1.c.o # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo2.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/bx1rGUxD5E/libfoo.so ok 2 ok 3 1..3 } 1..3 } ok 4 - build c++ { # corpus/ffi_build/project-cxx/foo1.cxx # corpus/ffi_build/project-cxx/foo2.cpp ok 1 - no error # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo1.cxx -o corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo1.o # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo2.cpp -o corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo2.o # +x86_64-linux-gnu-g++ -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo1.o corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo2.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/tmpbuild._j3jVq/libfoo.so ok 2 - foo1 found ok 3 - foo2 found ok 4 ok 5 1..5 } ok 5 - alien { 1..0 # SKIP Test requires Acme::Alien::DontPanic 1.03 } 1..5 ok t/ffi_build_file_base.t .................. ok 1 - basic { ok 1 - basic usage { ok 1 # error = content is required at t/ffi_build_file_base.t line 16. 1..1 } ok 2 - array filename { ok 1 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Base') ok 2 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Foo') ok 3 - stringifies to path ok 4 ok 5 - is_temp ok 6 - basename ok 7 - dirname # dirname = corpus/ffi_build_file_base ok 8 - No forward slashes! ok 9 - native name # native = corpus/ffi_build_file_base/basic.foo 1..9 } ok 3 - string filename { ok 1 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Base') ok 2 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Foo') ok 3 ok 4 - is_temp ok 5 - No forward slashes! 1..5 } ok 4 - string ref { ok 1 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Base') ok 2 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Foo') ok 3 - has the correct extension ok 4 - is_temp ok 5 # path: /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_LnxLku.foo ok 6 - No forward slashes! ok 7 - file exists ok 8 - file is removed after destroy 1..8 } ok 5 - string ref keep { ok 1 ok 2 - file exists ok 3 - No forward slashes! ok 4 - file exists after undef 1..4 } 1..5 } 1..1 ok t/ffi_build_file_c.t ..................... ok 1 - basic { ok 1 - FFI::Build::File::C=HASH->isa('FFI::Build::File::C') ok 2 - FFI::Build::File::C=HASH->isa('FFI::Build::File::Base') ok 3 ok 4 1..4 } ok 2 - compile { ok 1 - FFI::Build::File::Object=HASH->isa('FFI::Build::File::Object') ok 2 1..2 } ok 3 - headers { ok 1 - no die ok 2 - dep is a file: corpus/ffi_build_file_c/foo2.c ok 3 - dep is a file: corpus/ffi_build_file_c/include/myfoo.h 1..3 } 1..3 ok t/ffi_build_file_cxx.t ................... ok 1 - basic { ok 1 - FFI::Build::File::CXX=HASH->isa('FFI::Build::File::CXX') ok 2 - FFI::Build::File::CXX=HASH->isa('FFI::Build::File::C') ok 3 - FFI::Build::File::CXX=HASH->isa('FFI::Build::File::Base') ok 4 ok 5 1..5 } ok 2 - compile { ok 1 - FFI::Build::File::Object=HASH->isa('FFI::Build::File::Object') ok 2 1..2 } ok 3 - headers { ok 1 - no die ok 2 - dep is afile: corpus/ffi_build_file_cxx/foo2.cpp ok 3 - dep is afile: corpus/ffi_build_file_cxx/include/myfoo.h 1..3 } 1..3 ok t/ffi_build_file_library.t ............... ok 1 - basic { ok 1 ok 2 # path = corpus/basic.so 1..2 } 1..1 ok t/ffi_build_file_object.t ................ ok 1 - basic { ok 1 ok 2 # path = corpus/basic.o 1..2 } 1..1 ok t/ffi_build_mm.t ......................... ok 1 - basic { ok 1 - FFI::Build::MM=HASH->isa('FFI::Build::MM') ok 2 ok 3 ok 4 ok 5 - build with fbx file { ok 1 - FFI::Build=HASH->isa('FFI::Build') ok 2 1..2 } ok 6 - build with fbx file with errors { ok 1 - caught compile error in fbx file 1..1 } ok 7 - build with default { ok 1 - FFI::Build=HASH->isa('FFI::Build') ok 2 1..2 } ok 8 # [postamble] # .PHONY: fbx_build ffi fbx_test ffi-test fbx_clean ffi-clean # # realclean :: fbx_clean # # fbx_clean ffi-clean: # $(FULLPERL) -MFFI::Build::MM=cmd -e fbx_clean # # pure_all :: fbx_build # # fbx_build ffi: # $(FULLPERL) -MFFI::Build::MM=cmd -e fbx_build # # subdirs-test_dynamic subdirs-test_static subdirs-test :: fbx_test # # fbx_test ffi-test: # $(FULLPERL) -MFFI::Build::MM=cmd -e fbx_test # # ok 9 ok 10 1..10 } ok 2 - with a build! { ok 1 - namespace is clean { ok 1 - fbx_build not imported yet ok 2 - fbx_test not imported yet ok 3 - fbx_clean not imported yet 1..3 } ok 2 - do not save on request { ok 1 1..1 } ok 3 - perl Makefile.PL { ok 1 1..1 } ok 4 - import { ok 1 - fbx_build not imported yet ok 2 - fbx_test not imported yet ok 3 - fbx_clean not imported yet 1..3 } ok 5 - make { # CC ffi/x.c # CC ffi/y.c # CC ffi/z.c # LD blib/lib/auto/share/dist/Crock-O-Stimpy/lib/libCrock-O-Stimpy.so ok 1 ok 2 # lib=blib/lib/auto/share/dist/Crock-O-Stimpy/lib/libCrock-O-Stimpy.so ok 3 1..3 } ok 6 - make test { # CC t/ffi/a.c # CC t/ffi/b.c # CC t/ffi/c.c # LD t/ffi/_build/libtest.so ok 1 1..1 } ok 7 - make clean { ok 1 1..1 } 1..7 } ok 3 - alien { 1..0 # SKIP todo } 1..3 ok t/ffi_build_platform.t ................... ok 1 - basic { ok 1 - FFI::Build::Platform=HASH->isa('FFI::Build::Platform') # osname : linux # cc : x86_64-linux-gnu-gcc # cxx : x86_64-linux-gnu-g++ # cxxld : x86_64-linux-gnu-g++ # for : --- # ld : x86_64-linux-gnu-gcc # ccflags : -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include # ldflags : -shared -L/usr/local/lib -fstack-protector-strong # object suffix : .o # library prefix : lib # library suffix : .so # cc mm works : -MM 1..1 } ok 2 - cc mm works { # CC (checkfor -MM) ok 1 # cc_mm_works = -MM 1..1 } 1..2 ok t/ffi_build_plugin.t ..................... # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # @INC[]=/etc/perl # @INC[]=/usr/local/lib/x86_64-linux-gnu/perl/5.40.0 # @INC[]=/usr/local/share/perl/5.40.0 # @INC[]=/usr/lib/x86_64-linux-gnu/perl5/5.40 # @INC[]=/usr/share/perl5 # @INC[]=/usr/lib/x86_64-linux-gnu/perl-base # @INC[]=/usr/lib/x86_64-linux-gnu/perl/5.40 # @INC[]=/usr/share/perl/5.40 # @INC[]=/usr/local/lib/site_perl # @INC[]=. ok 1 - works with local config # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # @INC[]=/etc/perl # @INC[]=/usr/local/lib/x86_64-linux-gnu/perl/5.40.0 # @INC[]=/usr/local/share/perl/5.40.0 # @INC[]=/usr/lib/x86_64-linux-gnu/perl5/5.40 # @INC[]=/usr/share/perl5 # @INC[]=/usr/lib/x86_64-linux-gnu/perl-base # @INC[]=/usr/lib/x86_64-linux-gnu/perl/5.40 # @INC[]=/usr/share/perl/5.40 # @INC[]=/usr/local/lib/site_perl # @INC[]=. # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/corpus/ffi_build_plugin/lib2 ok 2 - works with local + empty dir # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/corpus/ffi_build_plugin/lib2 ok 3 1..3 ok t/ffi_build_plugindata.t ................. ok 1 ok 2 ok 3 1..3 ok t/ffi_platypus.t ......................... ok 1 - constructor { ok 1 - basic { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') 1..1 } ok 2 - no arguments { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') ok 2 - ffi.lib 1..2 } ok 3 - with single lib { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') ok 2 - ffi.lib 1..2 } ok 4 - with multiple lib { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') ok 2 - ffi.lib 1..2 } 1..4 } ok 2 - abi { ok 1 - has a default ABI ok 2 - gnuw64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 3 - default_abi { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 4 - unix64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 5 - win64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 6 - efi64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 7 - bogus { ok 1 - string ok 2 - integer 1..2 } 1..7 } ok 3 - alignof { ok 1 - ffi types { ok 1 - alignof sint8 = 1 ok 2 ok 3 - alignof sint8 [2] = 1 ok 4 - alignof sint8 * = 8 ok 5 - alignof custom_sint8 = 1 ok 6 - alignof uint8 = 1 ok 7 ok 8 - alignof uint8 [2] = 1 ok 9 - alignof uint8 * = 8 ok 10 - alignof custom_uint8 = 1 ok 11 - alignof sint16 = 2 ok 12 ok 13 - alignof sint16 [2] = 2 ok 14 - alignof sint16 * = 8 ok 15 - alignof custom_sint16 = 2 ok 16 - alignof uint16 = 2 ok 17 ok 18 - alignof uint16 [2] = 2 ok 19 - alignof uint16 * = 8 ok 20 - alignof custom_uint16 = 2 ok 21 - alignof sint32 = 4 ok 22 ok 23 - alignof sint32 [2] = 4 ok 24 - alignof sint32 * = 8 ok 25 - alignof custom_sint32 = 4 ok 26 - alignof uint32 = 4 ok 27 ok 28 - alignof uint32 [2] = 4 ok 29 - alignof uint32 * = 8 ok 30 - alignof custom_uint32 = 4 ok 31 - alignof sint64 = 8 ok 32 ok 33 - alignof sint64 [2] = 8 ok 34 - alignof sint64 * = 8 ok 35 - alignof custom_sint64 = 8 ok 36 - alignof uint64 = 8 ok 37 ok 38 - alignof uint64 [2] = 8 ok 39 - alignof uint64 * = 8 ok 40 - alignof custom_uint64 = 8 ok 41 - alignof float = 4 ok 42 ok 43 - alignof float [2] = 4 ok 44 - alignof float * = 8 ok 45 - alignof custom_float = 4 ok 46 - alignof double = 8 ok 47 ok 48 - alignof double [2] = 8 ok 49 - alignof double * = 8 ok 50 - alignof custom_double = 8 ok 51 - alignof opaque = 8 ok 52 ok 53 - alignof opaque [2] = 8 ok 54 - alignof opaque * = 8 ok 55 - alignof custom_opaque = 8 ok 56 - alignof string = 8 ok 57 1..57 } ok 2 - aliases { ok 1 - alignof ushort = 2 ok 2 - alignof foo = 2 1..2 } ok 3 - closure { ok 1 - sizeof closure_t = 8 1..1 } ok 4 - record { ok 1 # {'ffi_type' => 'pointer','ref' => 0,'size' => 22,'type' => 'record','type_code' => 2308} 1..1 } 1..4 } ok 4 - custom type { ok 1 - float { ok 1 - ffi.custom_type 1 # {'float_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 2 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 3 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 4 - ffi.custom_type 1 # {'float_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 5 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 6 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} 1..6 } ok 2 - double { ok 1 - ffi.custom_type 1 # {'double_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 2 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 3 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 4 - ffi.custom_type 1 # {'double_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 5 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 6 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} 1..6 } ok 3 - opaque { ok 1 - ffi.custom_type 1 # {'opaque_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 2 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 3 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 4 - ffi.custom_type 1 # {'opaque_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 5 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 6 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} 1..6 } ok 4 - uint8 { ok 1 - ffi.custom_type 1 # {'uint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 2 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 3 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 4 - ffi.custom_type 1 # {'uint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 5 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 6 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} 1..6 } ok 5 - sint8 { ok 1 - ffi.custom_type 1 # {'sint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 2 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 3 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 4 - ffi.custom_type 1 # {'sint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 5 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 6 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} 1..6 } ok 6 - uint16 { ok 1 - ffi.custom_type 1 # {'uint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 2 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 3 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 4 - ffi.custom_type 1 # {'uint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 5 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 6 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} 1..6 } ok 7 - sint16 { ok 1 - ffi.custom_type 1 # {'sint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 2 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 3 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 4 - ffi.custom_type 1 # {'sint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 5 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 6 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} 1..6 } ok 8 - uint32 { ok 1 - ffi.custom_type 1 # {'uint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 2 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 3 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 4 - ffi.custom_type 1 # {'uint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 5 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 6 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} 1..6 } ok 9 - sint32 { ok 1 - ffi.custom_type 1 # {'sint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 2 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 3 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 4 - ffi.custom_type 1 # {'sint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 5 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 6 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} 1..6 } ok 10 - uint64 { ok 1 - ffi.custom_type 1 # {'uint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 2 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 3 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 4 - ffi.custom_type 1 # {'uint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 5 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 6 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} 1..6 } ok 11 - sint64 { ok 1 - ffi.custom_type 1 # {'sint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 2 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 3 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 4 - ffi.custom_type 1 # {'sint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 5 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 6 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} 1..6 } 1..11 } ok 5 - find lib { ok 1 - find_lib { ok 1 - found f0 = 139699138683760 1..1 } ok 2 - external { ok 1 - ffi.find_symbol(f0) = 139699138683760 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } ok 3 - internal { ok 1 - ffi.find_symbol(printf) = 139699140243904 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } 1..3 } ok 6 - find symbol { ok 1 - external { ok 1 - ffi.find_symbol(f0) = 139699138683760 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } ok 2 - internal { ok 1 - ffi.find_symbol(printf) = 139699140243904 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } 1..2 } ok 7 - lib { ok 1 - basic { ok 1 - exists t/ffi/libtest.so ok 2 - ffi.lib (set) ok 3 - ffi.lib (get) 1..3 } ok 2 - undef { ok 1 - baseline { ok 1 1..1 } ok 2 - lib => [undef] { ok 1 1..1 } ok 3 - lib => undef { ok 1 1..1 } 1..3 } ok 3 - coderef { ok 1 - exists t/ffi/libtest.so ok 2 - ffi.lib (set) ok 3 - ffi.lib (get) 1..3 } 1..3 } ok 8 - sizeof { ok 1 - integers { ok 1 - sizeof uint8 = 1 ok 2 - sizeof uint16 = 2 ok 3 - sizeof uint32 = 4 ok 4 - sizeof uint64 = 8 ok 5 - sizeof sint8 = 1 ok 6 - sizeof sint16 = 2 ok 7 - sizeof sint32 = 4 ok 8 - sizeof sint64 = 8 1..8 } ok 2 - class methods { ok 1 - sizeof uint8 = 1 ok 2 - sizeof uint16 = 2 ok 3 - sizeof uint32 = 4 ok 4 - sizeof uint64 = 8 ok 5 - sizeof sint8 = 1 ok 6 - sizeof sint16 = 2 ok 7 - sizeof sint32 = 4 ok 8 - sizeof sint64 = 8 1..8 } ok 3 - floats { ok 1 - sizeof float = 4 ok 2 - sizeof double = 8 1..2 } ok 4 - pointers { ok 1 - sizeof opaque = 8 ok 2 - sizeof uint8* = 8 ok 3 - sizeof uint16* = 8 ok 4 - sizeof uint32* = 8 ok 5 - sizeof uint64* = 8 ok 6 - sizeof sint8* = 8 ok 7 - sizeof sint16* = 8 ok 8 - sizeof sint32* = 8 ok 9 - sizeof sint64* = 8 ok 10 - sizeof float* = 8 ok 11 - sizeof double* = 8 ok 12 - sizeof opaque* = 8 ok 13 - sizeof string = 8 ok 14 - sizeof (int)->int = 8 1..14 } ok 5 - arrays { ok 1 - sizeof uint8 [32] = 1 ok 2 - sizeof uint8 [32] = 2 ok 3 - sizeof uint8 [32] = 3 ok 4 - sizeof uint8 [32] = 4 ok 5 - sizeof uint8 [32] = 5 ok 6 - sizeof uint8 [32] = 6 ok 7 - sizeof uint8 [32] = 7 ok 8 - sizeof uint8 [32] = 8 ok 9 - sizeof uint8 [32] = 9 ok 10 - sizeof uint8 [32] = 10 ok 11 - sizeof uint16 [32] = 2 ok 12 - sizeof uint16 [32] = 4 ok 13 - sizeof uint16 [32] = 6 ok 14 - sizeof uint16 [32] = 8 ok 15 - sizeof uint16 [32] = 10 ok 16 - sizeof uint16 [32] = 12 ok 17 - sizeof uint16 [32] = 14 ok 18 - sizeof uint16 [32] = 16 ok 19 - sizeof uint16 [32] = 18 ok 20 - sizeof uint16 [32] = 20 ok 21 - sizeof uint32 [32] = 4 ok 22 - sizeof uint32 [32] = 8 ok 23 - sizeof uint32 [32] = 12 ok 24 - sizeof uint32 [32] = 16 ok 25 - sizeof uint32 [32] = 20 ok 26 - sizeof uint32 [32] = 24 ok 27 - sizeof uint32 [32] = 28 ok 28 - sizeof uint32 [32] = 32 ok 29 - sizeof uint32 [32] = 36 ok 30 - sizeof uint32 [32] = 40 ok 31 - sizeof uint64 [32] = 8 ok 32 - sizeof uint64 [32] = 16 ok 33 - sizeof uint64 [32] = 24 ok 34 - sizeof uint64 [32] = 32 ok 35 - sizeof uint64 [32] = 40 ok 36 - sizeof uint64 [32] = 48 ok 37 - sizeof uint64 [32] = 56 ok 38 - sizeof uint64 [32] = 64 ok 39 - sizeof uint64 [32] = 72 ok 40 - sizeof uint64 [32] = 80 ok 41 - sizeof sint8 [32] = 1 ok 42 - sizeof sint8 [32] = 2 ok 43 - sizeof sint8 [32] = 3 ok 44 - sizeof sint8 [32] = 4 ok 45 - sizeof sint8 [32] = 5 ok 46 - sizeof sint8 [32] = 6 ok 47 - sizeof sint8 [32] = 7 ok 48 - sizeof sint8 [32] = 8 ok 49 - sizeof sint8 [32] = 9 ok 50 - sizeof sint8 [32] = 10 ok 51 - sizeof sint16 [32] = 2 ok 52 - sizeof sint16 [32] = 4 ok 53 - sizeof sint16 [32] = 6 ok 54 - sizeof sint16 [32] = 8 ok 55 - sizeof sint16 [32] = 10 ok 56 - sizeof sint16 [32] = 12 ok 57 - sizeof sint16 [32] = 14 ok 58 - sizeof sint16 [32] = 16 ok 59 - sizeof sint16 [32] = 18 ok 60 - sizeof sint16 [32] = 20 ok 61 - sizeof sint32 [32] = 4 ok 62 - sizeof sint32 [32] = 8 ok 63 - sizeof sint32 [32] = 12 ok 64 - sizeof sint32 [32] = 16 ok 65 - sizeof sint32 [32] = 20 ok 66 - sizeof sint32 [32] = 24 ok 67 - sizeof sint32 [32] = 28 ok 68 - sizeof sint32 [32] = 32 ok 69 - sizeof sint32 [32] = 36 ok 70 - sizeof sint32 [32] = 40 ok 71 - sizeof sint64 [32] = 8 ok 72 - sizeof sint64 [32] = 16 ok 73 - sizeof sint64 [32] = 24 ok 74 - sizeof sint64 [32] = 32 ok 75 - sizeof sint64 [32] = 40 ok 76 - sizeof sint64 [32] = 48 ok 77 - sizeof sint64 [32] = 56 ok 78 - sizeof sint64 [32] = 64 ok 79 - sizeof sint64 [32] = 72 ok 80 - sizeof sint64 [32] = 80 ok 81 - sizeof float [32] = 4 ok 82 - sizeof float [32] = 8 ok 83 - sizeof float [32] = 12 ok 84 - sizeof float [32] = 16 ok 85 - sizeof float [32] = 20 ok 86 - sizeof float [32] = 24 ok 87 - sizeof float [32] = 28 ok 88 - sizeof float [32] = 32 ok 89 - sizeof float [32] = 36 ok 90 - sizeof float [32] = 40 ok 91 - sizeof double [32] = 8 ok 92 - sizeof double [32] = 16 ok 93 - sizeof double [32] = 24 ok 94 - sizeof double [32] = 32 ok 95 - sizeof double [32] = 40 ok 96 - sizeof double [32] = 48 ok 97 - sizeof double [32] = 56 ok 98 - sizeof double [32] = 64 ok 99 - sizeof double [32] = 72 ok 100 - sizeof double [32] = 80 ok 101 - sizeof opaque [32] = 8 ok 102 - sizeof opaque [32] = 16 ok 103 - sizeof opaque [32] = 24 ok 104 - sizeof opaque [32] = 32 ok 105 - sizeof opaque [32] = 40 ok 106 - sizeof opaque [32] = 48 ok 107 - sizeof opaque [32] = 56 ok 108 - sizeof opaque [32] = 64 ok 109 - sizeof opaque [32] = 72 ok 110 - sizeof opaque [32] = 80 1..110 } ok 6 - custom_type { ok 1 - sizeof my_uint8 = 1 ok 2 - sizeof my_uint16 = 2 ok 3 - sizeof my_uint32 = 4 ok 4 - sizeof my_uint64 = 8 ok 5 - sizeof my_sint8 = 1 ok 6 - sizeof my_sint16 = 2 ok 7 - sizeof my_sint32 = 4 ok 8 - sizeof my_sint64 = 8 ok 9 - sizeof my_float = 4 ok 10 - sizeof my_double = 8 ok 11 - sizeof my_opaque = 8 1..11 } 1..6 } ok 9 - type { ok 1 - simple type { ok 1 - ffi.type(sint8) 1..1 } ok 2 - aliased type { ok 1 - ffi.type(sint8 => my_integer_8) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - ffi.types returns my_integer_8 1..3 } ok 3 - ffi basic types { ok 1 - sint8 { ok 1 - ffi.type(sint8) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'scalar','type_code' => 17} # ok 2 - size = 1 1..2 } ok 2 - uint8 { ok 1 - ffi.type(uint8) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'scalar','type_code' => 33} # ok 2 - size = 1 1..2 } ok 3 - sint16 { ok 1 - ffi.type(sint16) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'scalar','type_code' => 18} # ok 2 - size = 2 1..2 } ok 4 - uint16 { ok 1 - ffi.type(uint16) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'scalar','type_code' => 34} # ok 2 - size = 2 1..2 } ok 5 - sint32 { ok 1 - ffi.type(sint32) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19} # ok 2 - size = 4 1..2 } ok 6 - uint32 { ok 1 - ffi.type(uint32) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'scalar','type_code' => 35} # ok 2 - size = 4 1..2 } ok 7 - sint64 { ok 1 - ffi.type(sint64) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'scalar','type_code' => 20} # ok 2 - size = 8 1..2 } ok 8 - uint64 { ok 1 - ffi.type(uint64) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'scalar','type_code' => 36} # ok 2 - size = 8 1..2 } ok 9 - float { ok 1 - ffi.type(float) # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'scalar','type_code' => 67} # ok 2 - size = 4 1..2 } ok 10 - double { ok 1 - ffi.type(double) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'scalar','type_code' => 68} # ok 2 - size = 8 1..2 } ok 11 - opaque { ok 1 - ffi.type(opaque) # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'scalar','type_code' => 260} # ok 2 - size = 8 1..2 } ok 12 - string { ok 1 - ffi.type(string) # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # ok 2 - size = 8 1..2 } ok 13 - longdouble { ok 1 - ffi.type(longdouble) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 16,'type' => 'scalar','type_code' => 69} # ok 2 - size = 16 1..2 } ok 14 - complex_float { ok 1 - ffi.type(complex_float) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'complex_float','size' => 8,'type' => 'scalar','type_code' => 132} # ok 2 - size = 8 1..2 } ok 15 - complex_double { ok 1 - ffi.type(complex_double) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'complex_double','size' => 16,'type' => 'scalar','type_code' => 133} # ok 2 - size = 16 1..2 } 1..15 } ok 4 - ffi pointer types { ok 1 - sint8 * { ok 1 - ffi.type(sint8 *) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4113} # ok 2 - size = 8 1..2 } ok 2 - uint8 * { ok 1 - ffi.type(uint8 *) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4129} # ok 2 - size = 8 1..2 } ok 3 - sint16 * { ok 1 - ffi.type(sint16 *) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4114} # ok 2 - size = 8 1..2 } ok 4 - uint16 * { ok 1 - ffi.type(uint16 *) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4130} # ok 2 - size = 8 1..2 } ok 5 - sint32 * { ok 1 - ffi.type(sint32 *) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4115} # ok 2 - size = 8 1..2 } ok 6 - uint32 * { ok 1 - ffi.type(uint32 *) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4131} # ok 2 - size = 8 1..2 } ok 7 - sint64 * { ok 1 - ffi.type(sint64 *) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4116} # ok 2 - size = 8 1..2 } ok 8 - uint64 * { ok 1 - ffi.type(uint64 *) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4132} # ok 2 - size = 8 1..2 } ok 9 - float * { ok 1 - ffi.type(float *) # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 8,'type' => 'pointer','type_code' => 4163} # ok 2 - size = 8 1..2 } ok 10 - double * { ok 1 - ffi.type(double *) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'pointer','type_code' => 4164} # ok 2 - size = 8 1..2 } ok 11 - opaque * { ok 1 - ffi.type(opaque *) # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'pointer','type_code' => 4356} # ok 2 - size = 8 1..2 } ok 12 - string * { 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE POINTER } ok 13 - longdouble * { ok 1 - ffi.type(longdouble *) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 8,'type' => 'pointer','type_code' => 4165} # ok 2 - size = 8 1..2 } ok 14 - complex_float * { ok 1 - ffi.type(complex_float *) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'complex_float','size' => 8,'type' => 'pointer','type_code' => 4228} # ok 2 - size = 8 1..2 } ok 15 - complex_double * { ok 1 - ffi.type(complex_double *) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'complex_double','size' => 8,'type' => 'pointer','type_code' => 4229} # ok 2 - size = 8 1..2 } 1..15 } ok 5 - ffi array types { ok 1 - sint8 [5] { ok 1 - ffi.type(sint8 [5]) # {'element_count' => 5,'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 5,'type' => 'array','type_code' => 8209} # ok 2 - size = 5 ok 3 - size = 5 1..3 } ok 2 - uint8 [7] { ok 1 - ffi.type(uint8 [7]) # {'element_count' => 7,'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 7,'type' => 'array','type_code' => 8225} # ok 2 - size = 7 ok 3 - size = 7 1..3 } ok 3 - sint16 [9] { ok 1 - ffi.type(sint16 [9]) # {'element_count' => 9,'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 18,'type' => 'array','type_code' => 8210} # ok 2 - size = 18 ok 3 - size = 9 1..3 } ok 4 - uint16 [11] { ok 1 - ffi.type(uint16 [11]) # {'element_count' => 11,'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 22,'type' => 'array','type_code' => 8226} # ok 2 - size = 22 ok 3 - size = 11 1..3 } ok 5 - sint32 [13] { ok 1 - ffi.type(sint32 [13]) # {'element_count' => 13,'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 52,'type' => 'array','type_code' => 8211} # ok 2 - size = 52 ok 3 - size = 13 1..3 } ok 6 - uint32 [15] { ok 1 - ffi.type(uint32 [15]) # {'element_count' => 15,'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 60,'type' => 'array','type_code' => 8227} # ok 2 - size = 60 ok 3 - size = 15 1..3 } ok 7 - sint64 [17] { ok 1 - ffi.type(sint64 [17]) # {'element_count' => 17,'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 136,'type' => 'array','type_code' => 8212} # ok 2 - size = 136 ok 3 - size = 17 1..3 } ok 8 - uint64 [19] { ok 1 - ffi.type(uint64 [19]) # {'element_count' => 19,'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 152,'type' => 'array','type_code' => 8228} # ok 2 - size = 152 ok 3 - size = 19 1..3 } ok 9 - float [21] { ok 1 - ffi.type(float [21]) # {'element_count' => 21,'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 84,'type' => 'array','type_code' => 8259} # ok 2 - size = 84 ok 3 - size = 21 1..3 } ok 10 - double [23] { ok 1 - ffi.type(double [23]) # {'element_count' => 23,'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 184,'type' => 'array','type_code' => 8260} # ok 2 - size = 184 ok 3 - size = 23 1..3 } ok 11 - opaque [25] { ok 1 - ffi.type(opaque [25]) # {'element_count' => 25,'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 200,'type' => 'array','type_code' => 8452} # ok 2 - size = 200 ok 3 - size = 25 1..3 } ok 12 - string [27] { 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE ARRAY } ok 13 - longdouble [29] { ok 1 - ffi.type(longdouble [29]) # {'element_count' => 29,'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 464,'type' => 'array','type_code' => 8261} # ok 2 - size = 464 ok 3 - size = 29 1..3 } ok 14 - complex_float [31] { ok 1 - ffi.type(complex_float [31]) # {'element_count' => 31,'element_size' => 8,'element_type' => 'float','ffi_type' => 'complex_float','size' => 248,'type' => 'array','type_code' => 8324} # ok 2 - size = 248 ok 3 - size = 31 1..3 } ok 15 - complex_double [33] { ok 1 - ffi.type(complex_double [33]) # {'element_count' => 33,'element_size' => 16,'element_type' => 'float','ffi_type' => 'complex_double','size' => 528,'type' => 'array','type_code' => 8325} # ok 2 - size = 528 ok 3 - size = 33 1..3 } 1..15 } ok 6 - closure types { ok 1 - (int)->int is a legal closure type # {'element_size' => 8,'ffi_type' => 'pointer','signature' => [[{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19}],{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19}],'size' => 8,'type' => 'closure','type_code' => 1284} # ok 2 - skipped test # skip arrays not currently supported as closure argument types ok 3 - inline closure illegal ok 4 - argument type closure illegal ok 5 - return type closure illegal ok 6 - a more complicated closure # {'element_size' => 8,'ffi_type' => 'pointer','signature' => [[{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19},{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19},{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19},{'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'scalar','type_code' => 17},{'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772},{'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'scalar','type_code' => 260}],{'element_size' => 0,'element_type' => 'void','ffi_type' => 'void','size' => 0,'type' => 'scalar','type_code' => 8}],'size' => 8,'type' => 'closure','type_code' => 1284} # 1..6 } ok 7 - record { # {'ffi_type' => 'pointer','ref' => 0,'size' => 1,'type' => 'record','type_code' => 2308} # # {'ffi_type' => 'pointer','ref' => 0,'size' => 32,'type' => 'record','type_code' => 2308} # ok 1 - sizeof my_record_1 = 1 ok 2 - sizeof my_record_32 = 32 # {'class' => 'My::Record22','ffi_type' => 'pointer','ref' => 1,'size' => 22,'type' => 'record','type_code' => 2308} # # {'class' => 'My::Record44','ffi_type' => 'pointer','ref' => 1,'size' => 44,'type' => 'record','type_code' => 2308} # ok 3 - sizeof my_record_22 = 22 ok 4 - sizeof my_record_44 = 44 1..4 } ok 8 - string { ok 1 - string { ok 1 - sizeof string = 8 ok 2 - access = ro # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 2 - string_rw { ok 1 - sizeof string_rw = 8 ok 2 - access = rw # {'access' => 'rw','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 3 - string_ro { ok 1 - sizeof string_ro = 8 ok 2 - access = ro # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 4 - string rw { ok 1 - sizeof string rw = 8 ok 2 - access = rw # {'access' => 'rw','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 5 - string ro { ok 1 - sizeof string ro = 8 ok 2 - access = ro # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 6 - string (10) { ok 1 - is actually a record type ok 2 - sizeof string (10) = 10 # {'ffi_type' => 'pointer','ref' => 0,'size' => 10,'type' => 'record','type_code' => 2308} # 1..2 } ok 7 - string(10) { ok 1 - is actually a record type ok 2 - sizeof string(10) = 10 # {'ffi_type' => 'pointer','ref' => 0,'size' => 10,'type' => 'record','type_code' => 2308} # 1..2 } 1..7 } ok 9 - private { ok 1 - void { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(void) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = void 1..3 } ok 2 - uint8 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint8) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint8 1..3 } ok 3 - sint8 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint8) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint8 1..3 } ok 4 - uint16 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint16) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint16 1..3 } ok 5 - sint16 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint16) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint16 1..3 } ok 6 - uint32 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint32) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint32 1..3 } ok 7 - sint32 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint32) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint32 1..3 } ok 8 - uint64 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint64) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint64 1..3 } ok 9 - sint64 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint64) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint64 1..3 } ok 10 - float { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(float) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = float 1..3 } ok 11 - double { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(double) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = double 1..3 } ok 12 - longdouble { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(longdouble) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = longdouble 1..3 } ok 13 - opaque { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(opaque) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = pointer 1..3 } ok 14 - pointer { 1..0 # SKIP test requires longdouble support } ok 15 - string { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(string) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = pointer 1..3 } 1..15 } 1..9 } ok 10 - class or instance method { ok 1 - class and instance methods are identical # type: blkcnt_t # type: blksize_t # type: bool # type: char # type: complex_double # type: complex_float # type: dev_t # type: double # type: double complex # type: enum # type: float # type: float complex # type: gid_t # type: ino_t # type: int # type: int16_t # type: int32_t # type: int64_t # type: int8_t # type: intmax_t # type: intptr_t # type: long # type: long double # type: long long # type: longdouble # type: mode_t # type: nlink_t # type: off_t # type: opaque # type: pointer # type: ptrdiff_t # type: senum # type: short # type: signed char # type: signed int # type: signed long # type: signed long long # type: signed short # type: sint16 # type: sint32 # type: sint64 # type: sint8 # type: size_t # type: ssize_t # type: string # type: time_t # type: uchar # type: uid_t # type: uint # type: uint16 # type: uint16_t # type: uint32 # type: uint32_t # type: uint64 # type: uint64_t # type: uint8 # type: uint8_t # type: uintmax_t # type: uintptr_t # type: ulong # type: unsigned char # type: unsigned int # type: unsigned long # type: unsigned long long # type: unsigned short # type: ushort # type: void # type: wchar_t # type: wint_t 1..1 } ok 11 - cast { ok 1 - cast from string to pointer { ok 1 - dynamic ok 2 - static 1..2 } ok 2 - cast from pointer to string { ok 1 - dynamic ok 2 - static 1..2 } ok 3 - cast closure to opaque { ok 1 - dynamic ok 2 - dynamic ok 3 - static ok 4 - static 1..4 } ok 4 - attach cast with wrapper { ok 1 ok 2 1..2 } 1..4 } ok 12 - ignore_not_found { ok 1 - ignore_not_found=undef { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 634. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 638. 1..4 } ok 2 - ignore_not_found=0 { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 653. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 657. 1..4 } ok 3 - ignore_not_found=0 (constructor) { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 670. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 674. 1..4 } ok 4 - ignore_not_found=1 { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function no exception ok 4 - f2 is undefined ok 5 - attach no exception 1..5 } ok 5 - ignore_not_found=1 (constructor) { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function no exception ok 4 - f2 is undefined ok 5 - attach no exception 1..5 } ok 6 - ignore_not_found bool context { ok 1 - f1 exists and resolved to boolean true ok 2 - f2 does not exist and resolved to boolean false 1..2 } 1..6 } ok 13 - attach basic { ok 1 - f0(22) = 22 ok 2 - f1(22) = 22 ok 3 - Roger::f1(22) = 22 ok 4 - f0_wrap(22) = 25 ok 5 - f0_wrap(22) = 25 1..5 } ok 14 - attach void { ok 1 - $i_ptr = 43 after f2(\$i_ptr) ok 2 - $i_ptr = 44 after f2_implicit(\$i_ptr) 1..2 } ok 15 - customer mangler { ok 1 1..1 } ok 16 - ->package is only allowed for api = 0 { ok 1 - api = 0 { ok 1 1..1 } ok 2 - api = 1 { ok 1 1..1 } 1..2 } ok 17 - warning defaults { ok 1 - api = 0 { ok 1 ok 2 1..2 } ok 2 - api = 1 { # [warning] # warning: error loading corpus/bogus.so: corpus/bogus.so: cannot open shared object file: No such file or directory at /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/FFI/Platypus.pm line 508. ok 1 ok 2 1..2 } 1..2 } ok 18 - language plugin api version { ok 1 - api = 0 { ok 1 1..1 } ok 2 - api = 1 { ok 1 1..1 } 1..2 } ok 19 - language load_custom_types hook { ok 1 ok 2 - FFI::Platypus=HASH->isa('FFI::Platypus') 1..2 } ok 20 - api attribute { ok 1 - default is zero ok 2 - explicit zero ok 3 - explicit one 1..3 } ok 21 - kindof { ok 1 - void ok 2 - scalar ok 3 - pointer ok 4 - array (fixed) ok 5 - array (var) ok 6 - string 1..6 } ok 22 - countof { ok 1 - void ok 2 - scalar ok 3 - pointer ok 4 - array (fixed) ok 5 - array (var) ok 6 - string 1..6 } ok 23 - def { ok 1 - needs to be a real type { ok 1 1..1 } ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 1..10 } ok 24 - unitof { ok 1 - void ok 2 - scalar ok 3 - pointer ok 4 - array (fixed) ok 5 - array (var) ok 6 - string 1..6 } ok 25 - pass undef into closure method should just return undef { ok 1 - no error ok 2 - returns undef 1..2 } 1..25 ok t/ffi_platypus_api.t ..................... ok 1 - basic { ok 1 1..1 } 1..1 ok t/ffi_platypus_buffer.t .................. ok 1 - simple { ok 1 - ptr = 94893479131952 ok 2 - scalar to pointer matches ok 3 - size = 16 ok 4 - scalar = me grimlock king 1..4 } ok 2 - unicode { ok 1 - ptr = 94893479176352 ok 2 - size = 12 ok 3 - scalar = привет 1..3 } ok 3 - grow { ok 1 - B::PV returns consistent string length ok 2 - initial buffer size is smaler than required ok 3 - default options { ok 1 - buffer grew as expected ok 2 - original contents cleared ok 3 - string length == requested buffer length 1..3 } ok 4 - clear { ok 1 - on { ok 1 - buffer grew as expected ok 2 - buffer contents cleared 1..2 } ok 2 - off { ok 1 - buffer grew as expected ok 2 - buffer contents not cleared 1..2 } 1..2 } ok 5 - set_length { ok 1 - on { ok 1 - buffer grew as expected ok 2 - buffer length set 1..2 } ok 2 - off { ok 1 - buffer grew as expected ok 2 - buffer length not cleared 1..2 } 1..2 } ok 6 - bad option { ok 1 - croaked 1..1 } ok 7 - fail on reference { ok 1 - croaked 1..1 } ok 8 - $str = undef { ok 1 - buffer grew as expected 1..1 } ok 9 - undef { ok 1 - croaked 1..1 } 1..9 } ok 4 - set_used_length { ok 1 - length < max { ok 1 - requested length ok 2 - requested string 1..2 } ok 2 - length == max { ok 1 - requested length 1..1 } ok 3 - length > max { ok 1 - maxed out length 1..1 } ok 4 - fail on reference { ok 1 - croaked 1..1 } ok 5 - $str = undef { # TODO is set_used_length undef behavior correct? not ok 1 - no added length # # Failed test (with amnesty) 'no added length' # at t/ffi_platypus_buffer.t line 155. # +-----+----+-------+ # | GOT | OP | CHECK | # +-----+----+-------+ # | 16 | eq | 0 | # +-----+----+-------+ ok 2 - maxed out length # 1..2 } ok 6 - undef { ok 1 - croaked 1..1 } 1..6 } ok 5 - hardwire { ok 1 - ascii { ok 1 ok 2 ok 3 ok 4 ok 5 1..5 } ok 2 - unicode { ok 1 ok 2 ok 3 ok 4 ok 5 1..5 } ok 3 - strlen { ok 1 ok 2 ok 3 1..3 } 1..3 } 1..5 ok t/ffi_platypus_bundle.t .................. ok 1 - from installed { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/L18AcSD9FR/lib/Foo/Bar1.pm] # package Foo::Bar1; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # $ffi->attach("bar1" => [] => 'sint32'); # 1; # spew(end) # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_cLpREL.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_cLpREL.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_cLpREL.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/L18AcSD9FR/lib/auto/share/dist/Foo-Bar1/libbar1.so # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/L18AcSD9FR/lib/auto/Foo/Bar1/Bar1.txt] # FFI::Build@auto/share/dist/Foo-Bar1/libbar1.so # spew(end) ok 1 ok 2 ok 3 ok 4 1..4 } ok 2 - from blib { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/4WeehX3sUq/lib/Foo/Bar2.pm] # package Foo::Bar2; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # $ffi->attach("bar2" => [] => 'sint32'); # 1; # spew(end) # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_U4eWLk.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_U4eWLk.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_U4eWLk.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/4WeehX3sUq/lib/auto/share/dist/Foo-Bar2/libbar2.so # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/4WeehX3sUq/arch/auto/Foo/Bar2/Bar2.txt] # FFI::Build@auto/share/dist/Foo-Bar2/libbar2.so # spew(end) ok 1 ok 2 1..2 } ok 3 - not loaded yet { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/BSJACpA2VS/lib/Foo/Bar3.pm] # package Foo::Bar3; # die; # 1; # spew(end) # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_fNgjXH.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fNgjXH.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fNgjXH.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/BSJACpA2VS/lib/auto/share/dist/Foo-Bar3/libbar3.so # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/BSJACpA2VS/lib/auto/Foo/Bar3/Bar3.txt] # FFI::Build@auto/share/dist/Foo-Bar3/libbar3.so # spew(end) ok 1 1..1 } ok 4 - with a ffi dir { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/r83yJJkm8t/lib/Foo/Bar4.pm] # package Foo::Bar4; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # $ffi->attach("bar4" => [] => 'sint32'); # 1; # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/r83yJJkm8t/ffi/foo.c] # int bar4(void) { return 45; } # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/r83yJJkm8t/ffi/foo.fbx] # use strict; # use warnings; # our $DIR; # { export => ['bar4'], source => ["$DIR/*.c"] }; # spew(end) ok 1 ok 2 1..2 } ok 5 - entry points { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/pwX7Gw7kh0/lib/Foo/Bar5.pm] # package Foo::Bar5; # use strict; # use warnings; # use FFI::Platypus; # our $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle([$ffi->cast('(string)->void' => 'opaque', $main::log_closure)]); # 1; # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/pwX7Gw7kh0/ffi/foo.c] # #include # #include # # typedef void (*log_t)(const char *); # log_t logit; # char buffer[1024]; # # void # ffi_pl_bundle_init(const char *package, int c, void **args) # { # int i; # logit = (log_t) args[0]; # logit("ffi_pl_bundle_init (enter)"); # sprintf(buffer, "package = %s", package); # logit(buffer); # sprintf(buffer, "c = %d", c); # logit(buffer); # for(i=0; args[i] != NULL; i++) # { # sprintf(buffer, "args[%d] = %d", i, args[i]); # logit(buffer); # } # logit("ffi_pl_bundle_init (leave)"); # } # # void # ffi_pl_bundle_fini(const char *package) # { # logit("ffi_pl_bundle_fini (enter)"); # sprintf(buffer, "package = %s", package); # logit(buffer); # logit("ffi_pl_bundle_fini (leave)"); # } # # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/pwX7Gw7kh0/ffi/foo.fbx] # use strict; # use warnings; # our $DIR; # { export => ['ffi_pl_bundle_init','ffi_pl_bundle_fini'], source => ["$DIR/*.c"] }; # spew(end) ok 1 # log:ffi_pl_bundle_init (enter) # log:package = Foo::Bar5 # log:c = 1 # log:args[0] = 1042026512 # log:ffi_pl_bundle_init (leave) ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # log:ffi_pl_bundle_fini (enter) # log:package = Foo::Bar5 # log:ffi_pl_bundle_fini (leave) ok 9 1..9 } 1..5 ok t/ffi_platypus_closure.t ................. ok 1 - basic { ok 1 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 2 - closure.(1) = 2 ok 3 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 4 - closure.(1) = 3 ok 5 - closure.call(1) = 3 ok 6 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 7 - closure.(1) = 3 ok 8 - closure.call(1) = 3 1..8 } ok 2 - sticky { ok 1 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') # _svrefcnt = 1 ok 2 - called $closure->sticky ok 3 ok 4 - called $closure->sticky ok 5 ok 6 - called $closure->unstick ok 7 1..7 } ok 3 - private { ok 1 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 2 - closure.(1) = 2 1..2 } ok 4 - space { ok 1 - good without space ok 2 - good with space 1..2 } ok 5 - die { ok 1 ok 2 - does not exit # warning = 'omg i don't want to die! at t/ffi_platypus_closure.t line 70. # ' 1..2 } ok 6 - reuse { ok 1 ok 2 1..2 } ok 7 - immediate { ok 1 1..1 } ok 8 - closure passing into a closure { ok 1 # error = Only native types and strings are supported as closure argument types (1284) at /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/FFI/Platypus/TypeParser/Version0.pm line 68. ok 2 # error = Only native types are supported as closure return types (1284) at /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/FFI/Platypus/TypeParser/Version0.pm line 68. 1..2 } 1..8 ok t/ffi_platypus_constant.t ................ ok 1 - very very basic... { ok 1 - FFI::Platypus::Constant=HASH->isa('FFI::Platypus::Constant') ok 2 1..2 } ok 2 - create constants { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/KcZKsMeGu1/lib/Foo/Bar1.pm] # package Foo::Bar1; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # 1; # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/KcZKsMeGu1/ffi/bar1.c] # #include # void ffi_pl_bundle_constant(const char *package, ffi_platypus_constant_t *b) # { # b->set_str("FOO1", "VAL1"); # b->set_str("Foo::Bar1::Baz::FOO2", "VAL2"); # b->set_sint("FOO3", -42); # b->set_uint("FOO4", 512); # b->set_double("FOO5", 2.5); # b->set_str("FOO6", package); # } # spew(end) ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 1..7 } 1..2 ok t/ffi_platypus_dl.t ...................... ok 1 - flags { ok 1 - RTLD_PLATYPUS_DEFAULT is defined # RTLD_LOCAL 0000 0 # RTLD_LAZY 0001 1 # RTLD_PLATYPUS_DEFAULT 0001 1 # RTLD_NOW 0002 2 # RTLD_NOLOAD 0004 4 # RTLD_DEEPBIND 0008 8 # RTLD_GLOBAL 0100 256 # RTLD_NODELETE 1000 4096 1..1 } ok 2 - dlopen { ok 1 - bad library { ok 1 - Returns undef on fail # dlerror = t/ffi/libbogus.so: cannot open shared object file: No such file or directory 1..1 } ok 2 - good library { ok 1 - Returns handle on good # h = 94723883937744 1..1 } 1..2 } ok 3 - dlsym { ok 1 - good symbol { ok 1 - returns an address # address = 139688871879536 1..1 } ok 2 - bad symbol { ok 1 - bad symbol returns undef # dlerror = t/ffi/libtest.so: undefined symbol: bogus 1..1 } 1..2 } 1..3 ok t/ffi_platypus_function.t ................ ok 1 - built in type { ok 1 - ffi.function(f0, [uint8] => uint8) ok 2 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function::Function') ok 4 - function.call(22) = 22 ok 5 - function.(22) = 22 1..5 } ok 2 - custom type { ok 1 - ffi.function(f0, [my_int_8] => my_int_8) ok 2 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function::Function') ok 4 - function.call(22) = 22 ok 5 - function.(22) = 22 1..5 } ok 3 - private { ok 1 - FFI::Platypus::Function->new ok 2 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function::Function') ok 4 - function.call(22) = 22 ok 5 - fooble(22) = 22 1..5 } ok 4 - meta { ok 1 - unattached { ok 1 ok 2 1..2 } ok 2 - attached { ok 1 ok 2 1..2 } 1..2 } ok 5 - sub_ref { ok 1 - calls okay ok 2 - it is a code reference 1..2 } ok 6 - prototype { ok 1 - one { ok 1 ok 2 1..2 } ok 2 - two { ok 1 ok 2 1..2 } 1..2 } ok 7 - variadic { ok 1 - unattached { ok 1 - sans wrapper ok 2 - with wrapper ok 3 - sans wrapper ok 4 - with wrapper ok 5 - sans wrapper ok 6 - with wrapper ok 7 - sans wrapper ok 8 - with wrapper ok 9 - sans wrapper ok 10 - with wrapper ok 11 - sans wrapper ok 12 - with wrapper ok 13 - sans wrapper ok 14 - with wrapper 1..14 } ok 2 - attached { ok 1 - sans wrapper ok 2 - with wrapper ok 3 - sans wrapper ok 4 - with wrapper ok 5 - sans wrapper ok 6 - with wrapper ok 7 - sans wrapper ok 8 - with wrapper ok 9 - sans wrapper ok 10 - with wrapper ok 11 - sans wrapper ok 12 - with wrapper ok 13 - sans wrapper ok 14 - with wrapper 1..14 } ok 3 - examples { ok 1 ok 2 ok 3 1..3 } 1..3 } ok 8 - void as arg should fail is arg count > 1 { ok 1 1..1 } ok 9 - single void arg treated as no args { ok 1 1..1 } 1..9 ok t/ffi_platypus_function_wrapper.t ........ ok 1 - built in type { ok 1 - ffi.function(f0, [uint8] => uint8) ok 2 - FFI::Platypus::Function::Wrapper=ARRAY->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Wrapper=ARRAY->isa('FFI::Platypus::Function::Wrapper') ok 4 - function.call(22) = 44 ok 5 - function.(22) = 44 ok 6 - baboon(11) = 22 1..6 } ok 2 - sub_ref { ok 1 - calls okay ok 2 - it is a code reference 1..2 } ok 3 - prototype { ok 1 - one { ok 1 ok 2 1..2 } ok 2 - two { ok 1 ok 2 1..2 } 1..2 } 1..3 ok t/ffi_platypus_internal.t ................ ok 1 - basic { # alpha order: ok 1 - FFI_PL_BASE_CLOSURE 0x0400 ok 2 - FFI_PL_BASE_COMPLEX 0x0080 ok 3 - FFI_PL_BASE_FLOAT 0x0040 ok 4 - FFI_PL_BASE_MASK 0x0ff8 ok 5 - FFI_PL_BASE_OPAQUE 0x0100 ok 6 - FFI_PL_BASE_RECORD 0x0800 ok 7 - FFI_PL_BASE_SINT 0x0010 ok 8 - FFI_PL_BASE_STRING 0x0200 ok 9 - FFI_PL_BASE_UINT 0x0020 ok 10 - FFI_PL_BASE_VOID 0x0008 ok 11 - FFI_PL_SHAPE_ARRAY 0x2000 ok 12 - FFI_PL_SHAPE_CUSTOM_MASK 0xf000 ok 13 - FFI_PL_SHAPE_CUSTOM_PERL 0x3000 ok 14 - FFI_PL_SHAPE_OBJECT 0x4000 ok 15 - FFI_PL_SHAPE_POINTER 0x1000 ok 16 - FFI_PL_SHAPE_SCALAR 0x0000 ok 17 - FFI_PL_SIZE_0 0x0000 ok 18 - FFI_PL_SIZE_128 0x0005 ok 19 - FFI_PL_SIZE_16 0x0002 ok 20 - FFI_PL_SIZE_256 0x0006 ok 21 - FFI_PL_SIZE_32 0x0003 ok 22 - FFI_PL_SIZE_512 0x0007 ok 23 - FFI_PL_SIZE_64 0x0004 ok 24 - FFI_PL_SIZE_8 0x0001 ok 25 - FFI_PL_SIZE_MASK 0x0007 ok 26 - FFI_PL_SIZE_PTR 0x0004 ok 27 - FFI_PL_TYPE_CLOSURE 0x0504 ok 28 - FFI_PL_TYPE_COMPLEX_DOUBLE 0x0085 ok 29 - FFI_PL_TYPE_COMPLEX_FLOAT 0x0084 ok 30 - FFI_PL_TYPE_DOUBLE 0x0044 ok 31 - FFI_PL_TYPE_FLOAT 0x0043 ok 32 - FFI_PL_TYPE_LONG_DOUBLE 0x0045 ok 33 - FFI_PL_TYPE_OPAQUE 0x0104 ok 34 - FFI_PL_TYPE_RECORD 0x0904 ok 35 - FFI_PL_TYPE_RECORD_VALUE 0x0800 ok 36 - FFI_PL_TYPE_SINT16 0x0012 ok 37 - FFI_PL_TYPE_SINT32 0x0013 ok 38 - FFI_PL_TYPE_SINT64 0x0014 ok 39 - FFI_PL_TYPE_SINT8 0x0011 ok 40 - FFI_PL_TYPE_STRING 0x0304 ok 41 - FFI_PL_TYPE_UINT16 0x0022 ok 42 - FFI_PL_TYPE_UINT32 0x0023 ok 43 - FFI_PL_TYPE_UINT64 0x0024 ok 44 - FFI_PL_TYPE_UINT8 0x0021 ok 45 - FFI_PL_TYPE_VOID 0x0008 # value order: ok 46 - FFI_PL_SIZE_0 0x0000 ok 47 - FFI_PL_SHAPE_SCALAR 0x0000 ok 48 - FFI_PL_SIZE_8 0x0001 ok 49 - FFI_PL_SIZE_16 0x0002 ok 50 - FFI_PL_SIZE_32 0x0003 ok 51 - FFI_PL_SIZE_64 0x0004 ok 52 - FFI_PL_SIZE_PTR 0x0004 ok 53 - FFI_PL_SIZE_128 0x0005 ok 54 - FFI_PL_SIZE_256 0x0006 ok 55 - FFI_PL_SIZE_512 0x0007 ok 56 - FFI_PL_SIZE_MASK 0x0007 ok 57 - FFI_PL_BASE_VOID 0x0008 ok 58 - FFI_PL_TYPE_VOID 0x0008 ok 59 - FFI_PL_BASE_SINT 0x0010 ok 60 - FFI_PL_TYPE_SINT8 0x0011 ok 61 - FFI_PL_TYPE_SINT16 0x0012 ok 62 - FFI_PL_TYPE_SINT32 0x0013 ok 63 - FFI_PL_TYPE_SINT64 0x0014 ok 64 - FFI_PL_BASE_UINT 0x0020 ok 65 - FFI_PL_TYPE_UINT8 0x0021 ok 66 - FFI_PL_TYPE_UINT16 0x0022 ok 67 - FFI_PL_TYPE_UINT32 0x0023 ok 68 - FFI_PL_TYPE_UINT64 0x0024 ok 69 - FFI_PL_BASE_FLOAT 0x0040 ok 70 - FFI_PL_TYPE_FLOAT 0x0043 ok 71 - FFI_PL_TYPE_DOUBLE 0x0044 ok 72 - FFI_PL_TYPE_LONG_DOUBLE 0x0045 ok 73 - FFI_PL_BASE_COMPLEX 0x0080 ok 74 - FFI_PL_TYPE_COMPLEX_FLOAT 0x0084 ok 75 - FFI_PL_TYPE_COMPLEX_DOUBLE 0x0085 ok 76 - FFI_PL_BASE_OPAQUE 0x0100 ok 77 - FFI_PL_TYPE_OPAQUE 0x0104 ok 78 - FFI_PL_BASE_STRING 0x0200 ok 79 - FFI_PL_TYPE_STRING 0x0304 ok 80 - FFI_PL_BASE_CLOSURE 0x0400 ok 81 - FFI_PL_TYPE_CLOSURE 0x0504 ok 82 - FFI_PL_TYPE_RECORD_VALUE 0x0800 ok 83 - FFI_PL_BASE_RECORD 0x0800 ok 84 - FFI_PL_TYPE_RECORD 0x0904 ok 85 - FFI_PL_BASE_MASK 0x0ff8 ok 86 - FFI_PL_SHAPE_POINTER 0x1000 ok 87 - FFI_PL_SHAPE_ARRAY 0x2000 ok 88 - FFI_PL_SHAPE_CUSTOM_PERL 0x3000 ok 89 - FFI_PL_SHAPE_OBJECT 0x4000 ok 90 - FFI_PL_SHAPE_CUSTOM_MASK 0xf000 1..90 } 1..1 ok t/ffi_platypus_lang.t .................... ok 1 - Foo constructor { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang.t line 12. ok 2 - foo_t is an okay type ok 3 - sint16 is an okay type ok 4 - sizeof foo_t = 2 ok 5 - sizeof foo_t = 4 ok 6 1..6 } ok 2 - Foo attribute { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang.t line 31. ok 2 - foo_t is an okay type ok 3 - sint16 is an okay type ok 4 - sizeof foo_t = 2 ok 5 - sizeof foo_t = 4 ok 6 1..6 } ok 3 - MyLang::Roger { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang.t line 49. ok 2 - sizeof foo_t = 4 1..2 } 1..3 ok t/ffi_platypus_lang_asm.t ................ ok 1 - ASM { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang_asm.t line 11. ok 2 - foo_t is not an okay type # unknown ffi/platypus type foo_t at t/ffi_platypus_lang_asm.t line 14. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 } 1..1 ok t/ffi_platypus_lang_c.t .................. ok 1 - C { ok 1 - int is an okay type ok 2 - foo_t is not an okay type # unknown ffi/platypus type foo_t at t/ffi_platypus_lang_c.t line 13. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 } 1..1 ok t/ffi_platypus_lang_win32.t .............. # encoding = UTF-32LE # width = 4 ok 1 - native type map diagnostic { # BOOL sint32 # BOOLEAN uint8 # BYTE uint8 # CCHAR sint8 # CHAR sint8 # COLORREF uint32 # DWORD uint32 # DWORD32 uint32 # DWORD64 uint64 # DWORDLONG uint64 # DWORD_PTR uint16 # FLOAT float # HACCEL opaque # HALF_PTR sint16 # HANDLE opaque # HBITMAP opaque # HBRUSH opaque # HCOLORSPACE opaque # HCONV opaque # HCONVLIST opaque # HCURSOR opaque # HDC opaque # HDDEDATA opaque # HDESK opaque # HDROP opaque # HDWP opaque # HENHMETAFILE opaque # HFILE sint32 # HFONT opaque # HGDIOBJ opaque # HGLOBAL opaque # HHOOK opaque # HICON opaque # HINSTANCE opaque # HKEY opaque # HKL opaque # HLOCAL opaque # HMENU opaque # HMETAFILE opaque # HMODULE opaque # HMONITOR opaque # HPALETTE opaque # HPEN opaque # HRESULT sint32 # HRGN opaque # HRSRC opaque # HSZ opaque # HWINSTA opaque # HWND opaque # INT sint32 # INT16 sint16 # INT32 sint32 # INT64 sint64 # INT8 sint8 # INT_PTR sint32 # LANGID uint16 # LCID uint32 # LCTYPE uint32 # LGRPID uint32 # LONG sint32 # LONG32 sint32 # LONG64 sint64 # LONGLONG sint64 # LONG_PTR sint16 # LPCSTR string # LPCVOID opaque # LPVOID opaque # LRESULT sint16 # PSTR string # PVOID opaque # QWORD uint64 # SC_HANDLE opaque # SC_LOCK opaque # SERVICE_STATUS_HANDLE opaque # SHORT sint16 # SIZE_T uint16 # SSIZE_T sint16 # UCHAR uint8 # UHALF_PTR uint16 # UINT uint32 # UINT16 uint16 # UINT32 uint32 # UINT64 uint64 # UINT8 uint8 # UINT_PTR uint32 # ULONG uint32 # ULONG32 uint32 # ULONG64 uint64 # ULONGLONG uint64 # ULONG_PTR uint16 # USHORT uint16 # USN sint64 # VOID void # WORD uint16 # WPARAM uint32 # blkcnt_t sint64 # blksize_t sint64 # bool uint8 # char sint8 # dev_t uint64 # double double # double complex complex_double # enum uint32 # float float # float complex complex_float # gid_t uint32 # ino_t uint64 # int sint32 # int16_t sint16 # int32_t sint32 # int64_t sint64 # int8_t sint8 # intmax_t sint64 # intptr_t sint64 # long sint64 # long double longdouble # long double complex complex_longdouble # long long sint64 # mode_t uint32 # nlink_t uint64 # off_t sint64 # ptrdiff_t sint64 # senum sint32 # short sint16 # signed char sint8 # signed int sint32 # signed long sint64 # signed long long sint64 # signed short sint16 # size_t uint64 # ssize_t sint64 # time_t sint64 # uchar uint8 # uid_t uint32 # uint uint32 # uint16_t uint16 # uint32_t uint32 # uint64_t uint64 # uint8_t uint8 # uintmax_t uint64 # uintptr_t uint64 # ulong uint64 # unsigned char uint8 # unsigned int uint32 # unsigned long uint64 # unsigned long long uint64 # unsigned short uint16 # ushort uint16 # wchar_t sint32 # wint_t uint32 ok 1 - good 1..1 } ok 2 - load { ok 1 1..1 } ok 3 - LPCWSTR { 1..0 # SKIP Test only works on Windows } ok 4 - LPWSTR { 1..0 # SKIP Test only works on Windows } 1..4 ok t/ffi_platypus_legacy.t .................. ok 1 - only load as needed { ok 1 ok 2 1..2 } 1..1 ok t/ffi_platypus_memory.t .................. # lib=undef # lib=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/lib/libplfill.so ok 1 - malloc calloc memset free { ok 1 - malloc returns 94547154123552 ok 2 - calloc returns 94547153775408 ok 3 - string = yyyyxxxx ok 4 - free $ptr1 ok 5 - free $ptr2 1..5 } ok 2 - memcpy { ok 1 - initial data copied ok 2 - copy of copy ok 3 - memcpy returns a pointer ok 4 - free $ptr1 ok 5 - free $ptr2 1..5 } ok 3 - realloc { ok 1 - realloc call ptr = 94547154254752 ok 2 - initial data copied ok 3 - realloc call ptr = 94547154254896 (2) ok 4 - after realloc data there ok 5 - final free 1..5 } ok 4 - strdup { # strdup implementation = libc ok 1 - string = this and ok 2 - free $ptr1 1..2 } ok 5 - strndup { # strndup implementation = libc ok 1 - full string { ok 1 1..1 } ok 2 - partial string { ok 1 1..1 } 1..2 } ok 6 - strcpy { ok 1 - pointer cast back to string matches 1..1 } 1..6 ok t/ffi_platypus_record.t .................. ok 1 - integer accessor { ok 1 - Foo1=SCALAR->isa('Foo1') ok 2 - foo._record_size = 8 ok 3 - foo.first = 1 ok 4 - foo.second = 2 ok 5 - foo.first = 22 ok 6 - foo.second = 42 ok 7 - foo.first = 3 ok 8 - foo.second = 4 # {'class' => 'Foo1','ffi_type' => 'pointer','ref' => 1,'size' => 8,'type' => 'record','type_code' => 2308} # {'ffi_type' => 'pointer','ref' => 0,'size' => 8,'type' => 'record','type_code' => 2308} 1..8 } ok 2 - values match in C { ok 1 - Color=SCALAR->isa('Color') ok 2 - color.get_red = 50 ok 3 - color.get_green = 100 ok 4 - color.get_blue = 150 1..4 } ok 3 - complex alignment { ok 1 - Foo2=SCALAR->isa('Foo2') ok 2 - uint64 = 512 ok 3 - sint64 = -512 ok 4 - uint32 = 1024 ok 5 - sint32 = -1024 ok 6 - uint16 = 2048 ok 7 - sint16 = -2048 ok 8 - uint8 = 48 ok 9 - sint8 = -48 ok 10 - float = 1.5 ok 11 - double = -1.5 ok 12 - get_opaque = 94533076321200 ok 13 - opaque = 94533076321200 ok 14 - get_opaque = undef ok 15 - opaque = undef 1..15 } ok 4 - same name { ok 1 - two members of the same name not allowed # accessor/method foo already exists at t/ffi_platypus_record.t line 186. 1..1 } ok 5 - array alignment { ok 1 - Foo4=SCALAR->isa('Foo4') ok 2 - unsigned 8 integer { ok 1 - uint8 = 1,2,3 ok 2 - get_uint8 = 1,2,3 ok 3 - uint8(1) = 2 ok 4 - uint8 = 1,20,3 1..4 } ok 3 - signed 8 integer { ok 1 - sint8 = -1,2,-3 ok 2 - get_sint8 = -1,2,-3 ok 3 - sint8(2) = -3 ok 4 - sint8 = -1,-20,-3 1..4 } ok 4 - unsigned 16 integer { ok 1 - uint16 = 1,2,3 ok 2 - get_uint16 = 1,2,3 ok 3 - uint16(1) = 2 ok 4 - uint16 = 1,20,3 1..4 } ok 5 - signed 16 integer { ok 1 - sint16 = -1,2,-3 ok 2 - get_sint16 = -1,2,-3 ok 3 - sint16(2) = -3 ok 4 - sint16 = -1,-20,-3 1..4 } ok 6 - unsigned 32 integer { ok 1 - uint32 = 1,2,3 ok 2 - get_uint32 = 1,2,3 ok 3 - uint32(1) = 2 ok 4 - uint32 = 1,20,3 1..4 } ok 7 - signed 32 integer { ok 1 - sint32 = -1,2,-3 ok 2 - get_sint32 = -1,2,-3 ok 3 - sint32(2) = -3 ok 4 - sint32 = -1,-20,-3 1..4 } ok 8 - unsigned 64 integer { ok 1 - uint64 = 1,2,3 ok 2 - get_uint64 = 1,2,3 ok 3 - uint64(1) = 2 ok 4 - uint64 = 1,20,3 1..4 } ok 9 - signed 64 integer { ok 1 - sint64 = -1,2,-3 ok 2 - get_sint64 = -1,2,-3 ok 3 - sint64(2) = -3 ok 4 - sint64 = -1,-20,-3 1..4 } ok 10 - float { ok 1 - float = 1.5,0,-1.5 ok 2 ok 3 ok 4 ok 5 - float = 1.5,20,-1.5 1..5 } ok 11 - double { ok 1 - double = 1.5,0,-1.5 ok 2 ok 3 ok 4 ok 5 - double = 1.5,20,-1.5 1..5 } ok 12 - opaque { ok 1 - opaque = 94533076485600,undef,94533076507504 ok 2 - opaque = 94533076485600,94533076485600,94533076507504 ok 3 - opaque = undef,94533076485600,94533076507504 ok 4 ok 5 ok 6 1..6 } ok 13 - align = 8 ok 14 - align is positive 1..14 } ok 6 - string ro { ok 1 - Foo5=SCALAR->isa('Foo5') ok 2 - foo.value = undef ok 3 - foo.get_value = undef ok 4 - foo.value = my value ok 5 - foo.get_value = my value ok 6 - value is ro # member is read only at t/ffi_platypus_record.t line 340. ok 7 - foo.value = undef ok 8 - foo.get_value = undef 1..8 } ok 7 - fixed string { ok 1 - Foo6=SCALAR->isa('Foo6') ok 2 - foo.value = "\0\0\0\0\0\0\0\0\0\0" ok 3 - foo.get_value = "" ok 4 - foo.value = "one two th" ok 5 - foo.value = 123456789\0 ok 6 - foo.get_value = 123456789 1..6 } ok 8 - string rw { ok 1 - Foo7=SCALAR->isa('Foo7') ok 2 - foo.value = hi there ok 3 - foo.get_value = hi there ok 4 - foo.value = undef ok 5 - foo.get_value = undef ok 6 - foo.value = starscream!!! ok 7 - foo.get_value = starscream!!! 1..7 } ok 9 - record with custom ffi { ok 1 - Foo8=SCALAR->isa('Foo8') ok 2 1..2 } ok 10 - record with ffi args { ok 1 - Foo8=SCALAR->isa('Foo8') ok 2 1..2 } ok 11 - api_1 { ok 1 - no $ffi or args { ok 1 ok 2 1..2 } ok 2 - args { ok 1 ok 2 1..2 } ok 3 - $ffi { ok 1 ok 2 1..2 } 1..3 } 1..11 ok t/ffi_platypus_record_meta.t ............. ok 1 - basic { ok 1 - FFI::Platypus::Record::Meta=SCALAR->isa('FFI::Platypus::Record::Meta') ok 2 - meta->ffi_type = 94739977708896 ok 3 - meta->size ok 4 - meta->alignment ok 5 - meta->element_pointers 1..5 } ok 2 - bogus types { ok 1 ok 2 1..2 } 1..2 ok t/ffi_platypus_record_tiearray.t ......... ok 1 - Foo=SCALAR->isa('Foo') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 ok 33 ok 34 ok 35 ok 36 ok 37 ok 38 ok 39 ok 40 ok 41 ok 42 ok 43 ok 44 ok 45 1..45 ok t/ffi_platypus_shareconfig.t ............. # { # 'abi' => { # 'default_abi' => '2', # 'efi64' => '3', # 'gnuw64' => '4', # 'unix64' => '2', # 'win64' => '3' # }, # 'align' => { # 'double' => '8', # 'double complex' => '8', # 'float' => '4', # 'float complex' => '4', # 'long double' => '16', # 'long double complex' => '16', # 'pointer' => '8', # 'sint16' => '2', # 'sint32' => '4', # 'sint64' => '8', # 'sint8' => '1', # 'uint16' => '2', # 'uint32' => '4', # 'uint64' => '8', # 'uint8' => '1' # }, # 'config_dlext' => [ # 'so' # ], # 'probe' => { # 'abi' => 1, # 'alloca' => 1, # 'bigendian' => 0, # 'bigendian64' => 0, # 'complex' => 1, # 'longdouble' => 1, # 'recordvalue' => 1, # 'strnlen' => 1, # 'variadic' => 1 # }, # 'test-key' => 'test-value', # 'type_map' => { # 'blkcnt_t' => 'sint64', # 'blksize_t' => 'sint64', # 'bool' => 'uint8', # 'char' => 'sint8', # 'dev_t' => 'uint64', # 'double' => 'double', # 'double complex' => 'complex_double', # 'enum' => 'uint32', # 'float' => 'float', # 'float complex' => 'complex_float', # 'gid_t' => 'uint32', # 'ino_t' => 'uint64', # 'int' => 'sint32', # 'int16_t' => 'sint16', # 'int32_t' => 'sint32', # 'int64_t' => 'sint64', # 'int8_t' => 'sint8', # 'intmax_t' => 'sint64', # 'intptr_t' => 'sint64', # 'long' => 'sint64', # 'long double' => 'longdouble', # 'long double complex' => 'complex_longdouble', # 'long long' => 'sint64', # 'mode_t' => 'uint32', # 'nlink_t' => 'uint64', # 'off_t' => 'sint64', # 'ptrdiff_t' => 'sint64', # 'senum' => 'sint32', # 'short' => 'sint16', # 'signed char' => 'sint8', # 'signed int' => 'sint32', # 'signed long' => 'sint64', # 'signed long long' => 'sint64', # 'signed short' => 'sint16', # 'size_t' => 'uint64', # 'ssize_t' => 'sint64', # 'time_t' => 'sint64', # 'uchar' => 'uint8', # 'uid_t' => 'uint32', # 'uint' => 'uint32', # 'uint16_t' => 'uint16', # 'uint32_t' => 'uint32', # 'uint64_t' => 'uint64', # 'uint8_t' => 'uint8', # 'uintmax_t' => 'uint64', # 'uintptr_t' => 'uint64', # 'ulong' => 'uint64', # 'unsigned char' => 'uint8', # 'unsigned int' => 'uint32', # 'unsigned long' => 'uint64', # 'unsigned long long' => 'uint64', # 'unsigned short' => 'uint16', # 'ushort' => 'uint16', # 'wchar_t' => 'sint32', # 'wint_t' => 'uint32' # } # } # ok 1 ok 2 1..2 ok t/ffi_platypus_type.t .................... ok 1 - basic type { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 1, # 'type' => 'scalar', # 'type_code' => 17 # }; 1..8 } ok 2 - fixed string / record (pass by reference) { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'ffi_type' => 'pointer', # 'ref' => 0, # 'size' => 22, # 'type' => 'record', # 'type_code' => 2308 # }; ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 # $VAR1 = { # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'ffi_type' => 'pointer', # 'ref' => 0, # 'size' => 22, # 'sub_type' => 'record', # 'type' => 'custom_perl', # 'type_code' => 14596 # }; 1..16 } ok 3 - record { ok 1 - record class value (pass by value) { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 # $VAR1 = { # 'class' => 'Foo::Bar', # 'ffi_type' => 'struct', # 'ref' => 1, # 'size' => 4, # 'type' => 'record_value', # 'type_code' => 2048 # }; ok 11 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 # $VAR1 = { # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'ffi_type' => 'struct', # 'size' => 4, # 'type' => 'custom_perl', # 'type_code' => 14336 # }; 1..18 } ok 2 - record class (pass by reference) { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'class' => 'Foo::Bar', # 'ffi_type' => 'pointer', # 'ref' => 1, # 'size' => 4, # 'type' => 'record', # 'type_code' => 2308 # }; ok 10 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 # $VAR1 = { # 'class' => 'Foo::Bar', # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'ffi_type' => 'pointer', # 'ref' => 1, # 'size' => 4, # 'sub_type' => 'record', # 'type' => 'custom_perl', # 'type_code' => 14596 # }; 1..17 } 1..2 } ok 4 - string rw { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'access' => 'rw', # 'element_size' => 8, # 'ffi_type' => 'pointer', # 'size' => 8, # 'type' => 'string', # 'type_code' => 772 # }; 1..9 } ok 5 - string ro { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'access' => 'ro', # 'element_size' => 8, # 'ffi_type' => 'pointer', # 'size' => 8, # 'type' => 'string', # 'type_code' => 772 # }; 1..9 } ok 6 - fixed array { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'element_count' => 10, # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 10, # 'type' => 'array', # 'type_code' => 8209 # }; 1..9 } ok 7 - var array { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'element_count' => 0, # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 0, # 'type' => 'array', # 'type_code' => 8209 # }; 1..8 } ok 8 - pointer { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 8, # 'type' => 'pointer', # 'type_code' => 4113 # }; 1..8 } ok 9 - custom type { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 1, # 'type' => 'custom_perl', # 'type_code' => 12305 # }; 1..8 } 1..9 ok t/ffi_platypus_type_pointersizebuffer.t .. ok 1 ok 2 ok 3 ok 4 ok 5 1..5 ok t/ffi_platypus_type_stringarray.t ........ ok 1 - fixed length input { ok 1 - with default { ok 1 - a1(0) = foo ok 2 - a1(0) = bar ok 3 - a1(0) = baz ok 4 - a1(0) = hey ok 5 - a1(0) = five ok 6 - a1(0) = undef 1..6 } ok 2 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five ok 6 - a2(0) = undef 1..6 } 1..2 } ok 2 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 3 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle ok 4 - returns with NULL/undef in the middle with default 1..4 } ok 4 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } 1..4 ok t/ffi_platypus_type_stringpointer.t ...... ok 1 - arg pass in { ok 1 - not null ok 2 - \undef is null ok 3 - undef is null 1..3 } ok 2 - arg pass out { ok 1 - not null string = hi there ok 2 - not null string = and another 1..2 } ok 3 - return value { ok 1 - not null string = once more onto ok 2 - \null ok 3 - null 1..3 } 1..3 ok t/ffi_platypus_type_widestring.t ......... # encoding = UTF-32LE # width = 4 ok 1 - wcschr { ok 1 ok 2 ok 3 1..3 } ok 2 - wide string as argument (in) { ok 1 - trivial ok 2 - simple ok 3 - fancy ok 4 - complex ok 5 - NULL 1..5 } ok 3 - wide string as argument (out) { ok 1 - trivial default buffer size ok 2 - trivial with just enough buffer ok 3 - simple default buffer size ok 4 - simple with just enough buffer ok 5 - fancy default buffer size ok 6 - fancy with just enough buffer ok 7 - complex default buffer size ok 8 - complex with just enough buffer ok 9 - NULL 1..9 } ok 4 - wide string as a return value { ok 1 - trivial ok 2 - simple ok 3 - fancy ok 4 - complex ok 5 - NULL 1..5 } ok 5 - wide string as in-out argument { ok 1 - trivial default buffer size ok 2 - trivial with just enough buffer ok 3 - simple default buffer size ok 4 - simple with just enough buffer ok 5 - fancy default buffer size ok 6 - fancy with just enough buffer ok 7 - complex default buffer size ok 8 - complex with just enough buffer 1..8 } 1..5 ok t/ffi_platypus_typeparser.t .............. ok 1 - basic { ok 1 - FFI::Platypus::TypeParser=HASH->isa('FFI::Platypus::TypeParser') 1..1 } ok 2 - pick the right one { ok 1 - FFI::Platypus::TypeParser::Version0=HASH->isa('FFI::Platypus::TypeParser::Version0') ok 2 - FFI::Platypus::TypeParser::Version1=HASH->isa('FFI::Platypus::TypeParser::Version1') 1..2 } 1..2 ok t/ffi_platypus_typeparser_version0.t ..... ok 1 - basic { ok 1 - basic basic ok 2 - longdouble { ok 1 - longdouble 1..1 } ok 3 - complex { ok 1 - complex float ok 2 - complex double 1..2 } 1..3 } ok 2 - record { ok 1 - fixed string ok 2 - unclassed record ok 3 - classed record 1..3 } ok 3 - string { ok 1 - default string ok 2 - explicit ro string ok 3 - explicit ro string with underscore ok 4 - explicit rw string ok 5 - explicit rw string with underscore 1..5 } ok 4 - array { ok 1 - fixed array ok 2 - variable array ok 3 - longdouble { ok 1 - variable array 1..1 } ok 4 - complex { ok 1 - variable array ok 2 - variable array 1..2 } 1..4 } ok 5 - pointer { ok 1 - pointer ok 2 - longdouble { ok 1 - longdouble pointer 1..1 } ok 3 - complex { ok 1 - complex float pointer ok 2 - complex double pointer 1..2 } 1..3 } 1..5 ok t/ffi_platypus_typeparser_version1.t ..... ok 1 - bad types { ok 1 ok 2 1..2 } ok 2 - basic types { ok 1 - void { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 1..4 } ok 2 - non-void { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 3 - string { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 } ok 4 - bogus { ok 1 1..1 } 1..4 } ok 3 - type map { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 1..23 } ok 4 - fixed record / fixed string { ok 1 - zero bad { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 2 - ten good { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 6 ok 7 ok 8 ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 14 ok 15 ok 16 ok 17 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 18 ok 19 ok 20 ok 21 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 22 ok 23 ok 24 1..24 } ok 3 - ten pass-by-value { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } 1..3 } ok 5 - record class { ok 1 - good with size { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..2 } ok 2 - bad without size { ok 1 ok 2 1..2 } ok 3 - pass-by-value { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..1 } ok 4 - alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } 1..4 } ok 6 - check alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 1..8 } ok 7 - use alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 1..10 } ok 8 - object { ok 1 ok 2 ok 3 1..3 } 1..8 ok t/ffi_platypus_typeparser_version2.t ..... ok 1 - bad types { ok 1 ok 2 1..2 } ok 2 - basic types { ok 1 - void { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 1..4 } ok 2 - non-void { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 3 - string { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 } ok 4 - bogus { ok 1 1..1 } 1..4 } ok 3 - type map { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 1..23 } ok 4 - fixed record / fixed string { ok 1 - zero bad { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 2 - ten good { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 6 ok 7 ok 8 ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 14 ok 15 ok 16 ok 17 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 18 ok 19 ok 20 ok 21 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 22 ok 23 ok 24 1..24 } ok 3 - ten pass-by-value { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 6 ok 7 ok 8 ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 14 ok 15 ok 16 ok 17 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 18 ok 19 ok 20 1..20 } ok 4 - ten record pass-by-value { ok 1 1..1 } 1..4 } ok 5 - record class { ok 1 - good with size { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..2 } ok 2 - bad without size { ok 1 ok 2 1..2 } ok 3 - pass-by-value { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..1 } ok 4 - alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } 1..4 } ok 6 - check alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 1..8 } ok 7 - use alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 1..10 } ok 8 - object { ok 1 ok 2 ok 3 1..3 } 1..8 ok t/ffi_probe.t ............................ ok 1 - check_header { ok 1 - FFI::Probe=HASH->isa('FFI::Probe') # PR header."stdio.h"=1 # PR header."bogus/does/not/exist.h"=0 ok 2 ok 3 # ==probe.log== # code: #include # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/ffi_build_ITpqja.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/_build/ffi_build_ITpqja.c.o # header."stdio.h"=1 # code: #include # code: #include # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/ffi_build_wdz7iz.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/_build/ffi_build_wdz7iz.c.o # /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/ffi_build_wdz7iz.c:2:10: fatal error: bogus/does/not/exist.h: No such file or directory # 2 | #include # | ^~~~~~~~~~~~~~~~~~~~~~~~ # compilation terminated. # header."bogus/does/not/exist.h"=0 # ==probe.pl== # do { my $x = { # 'header' => { # 'bogus/does/not/exist.h' => 0, # 'stdio.h' => 1 # } # }; # $x;} ok 4 ok 5 # ok 6 ok 7 # ==probe2.log== # # ==probe.pl== # do { my $x = { # 'header' => { # 'bogus/does/not/exist.h' => 0, # 'stdio.h' => 1 # } # }; # $x;} 1..7 } ok 2 - check_eval { # PR foo.bar.baz=3 ok 1 - foo.bar.baz ok 2 # PR foo.bar.string=hello world 7 ok 3 - foo.bar.string ok 4 # PR header."stddef.h"=1 # PR type.unsigned char.align=1 # PR type.unsigned char.sign=unsigned # PR type.unsigned char.size=1 ok 5 ok 6 ok 7 ok 8 # PR type.float.align=4 # PR type.float.size=4 ok 9 ok 10 ok 11 # PR type.pointer.align=8 # PR type.pointer.size=8 ok 12 ok 13 ok 14 # ==probe.log== # code: #include # code: # code: # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", 1+2); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_IaDEwg.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_IaDEwg.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_IaDEwg.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval1.so # [stdout] # eval1=<<<3>>> # [stderr] # # rv = 0 # foo.bar.baz=3 # code: #include # code: # code: char buffer[256]; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: sprintf(buffer, "hello world %d", 3+4); # code: # code: printf("eval1=<<<%s>>>\n", buffer); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build__oyXxz.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build__oyXxz.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build__oyXxz.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval2.so # [stdout] # eval1=<<>> # [stderr] # # rv = 0 # foo.bar.string=hello world 7 # code: #include # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_7SKIk9.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_7SKIk9.c.o # header."stddef.h"=1 # code: #include # code: #include # code: # code: #define signed(type) (((type)-1) < 0) ? "signed" : "unsigned" # code: struct align { char a; unsigned char b; }; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", (int)offsetof(struct align, b)); # code: printf("eval2=<<<%s>>>\n", signed(unsigned char)); # code: printf("eval3=<<<%d>>>\n", (int)sizeof(unsigned char)); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_DcYKcZ.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_DcYKcZ.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_DcYKcZ.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval4.so # [stdout] # eval1=<<<1>>> # eval2=<<>> # eval3=<<<1>>> # [stderr] # # rv = 0 # type.unsigned char.align=1 # type.unsigned char.sign=unsigned # type.unsigned char.size=1 # code: #include # code: #include # code: # code: struct align { char a; float b; }; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", (int)offsetof(struct align, b)); # code: printf("eval2=<<<%d>>>\n", (int)sizeof(float)); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_M_G5aY.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_M_G5aY.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_M_G5aY.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval5.so # [stdout] # eval1=<<<4>>> # eval2=<<<4>>> # [stderr] # # rv = 0 # type.float.align=4 # type.float.size=4 # code: #include # code: #include # code: # code: struct align { char a; void* b; }; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", (int)offsetof(struct align, b)); # code: printf("eval2=<<<%d>>>\n", (int)sizeof(void *)); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_qo30uE.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_qo30uE.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_qo30uE.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval6.so # [stdout] # eval1=<<<8>>> # eval2=<<<8>>> # [stderr] # # rv = 0 # type.pointer.align=8 # type.pointer.size=8 # ==probe.pl== # do { my $x = { # 'foo' => { # 'bar' => { # 'baz' => '3', # 'string' => 'hello world 7' # } # }, # 'header' => { # 'stddef.h' => 1 # }, # 'type' => { # 'float' => { # 'align' => '4', # 'size' => '4' # }, # 'pointer' => { # 'align' => '8', # 'size' => '8' # }, # 'unsigned char' => { # 'align' => '1', # 'sign' => 'unsigned', # 'size' => '1' # } # } # }; # $x;} 1..14 } 1..2 ok t/ffi_probe_runner.t ..................... ok 1 - basic { # exe=blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun ok 1 - FFI::Probe::Runner=HASH->isa('FFI::Probe::Runner') ok 2 ok 3 1..3 } ok 2 - run not pass { # CC corpus/ffi_probe_runner/foo.c # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-D9snX7/libfrooble1.so # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-D9snX7/libfrooble1.so ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 1..9 } ok 3 - run pass { # CC corpus/ffi_probe_runner/bar.c # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-fnzQ5w/libfrooble2.so # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-fnzQ5w/libfrooble2.so ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 1..9 } 1..3 ok t/ffi_probe_runner_builder.t ............. # dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh # libs=-ldl # libs= # libs=-lm # libs=-lpthread # libs=-lc # libs=-lcrypt ok 1 - FFI::Probe::Runner::Builder=HASH->isa('FFI::Probe::Runner::Builder') # +x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/src/dlrun.o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/src/dlrun.c # +x86_64-linux-gnu-gcc -fstack-protector-strong -L/usr/local/lib -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/src/dlrun.o -ldl # +/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun verify self # dlrun verify self ok ok 2 - no error ok 3 - executable exists # exe = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun # + /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun verify self # dlrun verify self ok ok 4 - verify ok # + ldd /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun # linux-vdso.so.1 (0x00007ffd2dfee000) # libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe36e20a000) # /lib64/ld-linux-x86-64.so.2 (0x00007fe36e412000) 1..4 ok t/ffi_probe_runner_result.t .............. ok 1 - FFI::Probe::Runner::Result=HASH->isa('FFI::Probe::Runner::Result') ok 2 ok 3 - FFI::Probe::Runner::Result=HASH->isa('FFI::Probe::Runner::Result') ok 4 ok 5 ok 6 - FFI::Probe::Runner::Result=HASH->isa('FFI::Probe::Runner::Result') ok 7 ok 8 1..8 ok t/ffi_temp.t ............................. ok 1 # dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/MmKETEDLQr # file = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/bwpDrbFa2x 1..1 ok t/forks.t ................................ skipped: Test requires forks t/gh117.t ................................ # value64 = 1099511627775 ok 1 1..1 ok t/gh129.t ................................ ok 1 - attached function { ok 1 1..1 } ok 2 - dynamic function { ok 1 1..1 } ok 3 - type wrapper argument { ok 1 1..1 } ok 4 - type wrapper argument post { ok 1 1..1 } ok 5 - type wrapper return type { ok 1 1..1 } 1..5 ok t/gh323.t ................................ ok 1 - api => 0 { # double = 3.140000 # float = 3.140000 ok 1 # my_float = 3.140000 ok 2 1..2 } ok 2 - api => 1 { # double = 3.140000 # float = 3.140000 ok 1 # my_float = 3.140000 ok 2 1..2 } ok 3 - api => 2 { # double = 3.140000 # float = 3.140000 ok 1 # my_float = 3.140000 ok 2 1..2 } 1..3 ok t/memory.t ............................... skipped: tested only in CI t/threads.t .............................. ok 1 ok 2 - works in a thread ok 3 - works in main thread 1..3 ok t/type_complex_double.t .................. ok 1 - api = 0 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 2 - api = 1 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 3 - api = 2 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { ok 1 1..1 } ok 8 - complex array ret { ok 1 1..1 } 1..8 } 1..3 ok t/type_complex_float.t ................... ok 1 - api = 0 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 2 - api = 1 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 3 - api = 2 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { ok 1 1..1 } ok 8 - complex array ret { ok 1 1..1 } 1..8 } 1..3 ok t/type_custom.t .......................... ok 1 - legal custom types { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 } ok 2 - illegal types { # alias = foo_sint8_32_ ok 1 # alias = foo_sint8_ ok 2 1..2 } ok 3 - records { ok 1 - pointer { ok 1 ok 2 ok 3 ok 4 ok 5 1..5 } ok 2 - by-value { ok 1 ok 2 ok 3 ok 4 - return-value { ok 1 1..1 } 1..4 } 1..2 } 1..3 ok t/type_double.t .......................... ok 1 - api = 0 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 16 - null2() == undef ok 17 - call_closure(2.5) = 4.75 ok 18 - call_closure(2.5) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } 1..3 ok t/type_float.t ........................... ok 1 - api = 0 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 16 - null2() == undef ok 17 - call_closure(2.5) = 4.75 ok 18 - call_closure(2.5) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } 1..3 ok t/type_longdouble.t ...................... ok 1 - Math::LongDouble is loaded when needed for return type { ok 1 - not pre-loaded ok 2 ok 3 1..3 } ok 2 - api = 0 { ok 1 - with Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } ok 2 - without Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } 1..2 } ok 3 - api = 1 { ok 1 - with Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } ok 2 - without Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } 1..2 } ok 4 - api = 2 { ok 1 - with Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } ok 2 - without Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } 1..2 } 1..4 ok t/type_longdouble__array.t ............... ok 1 - Math::LongDouble is loaded when needed for return type { ok 1 - not pre-loaded ok 2 ok 3 1..3 } 1..1 ok t/type_longdouble__hide.t ................ skipped: test requires Devel::Hide 0.0010 t/type_longdouble__ptr.t ................. ok 1 - Math::LongDouble is loaded when needed for return type { ok 1 - not pre-loaded ok 2 ok 3 1..3 } 1..1 ok t/type_opaque.t .......................... ok 1 - api = 0 { ok 1 - null = ()/undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(94313971916336); getp() = 94313971916336 ok 6 - get($tmp); tmp = 94313971916336 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_null_in([undef,undef,undef]) ok 10 - aa_out() ok 11 - aa_null_out() ok 12 - ra_out() ok 13 - ra_out_nt() ok 14 - ra_null_out ok 15 - pp2p(\undef) = undef ok 16 - pp2p(\94313971875232) = 94313971875232 ok 17 - p2pp(undef) = \undef ok 18 - pp2p(94313967701424) = \94313967701424 ok 19 - call_closure(undef) = undef ok 20 - save = undef ok 21 - call_closure(\94313972009680) = 94313972009680 ok 22 - save = 94313972009680 ok 23 - custom type input { ok 1 ok 2 1..2 } ok 24 - custom type output { ok 1 ok 2 1..2 } 1..24 } ok 2 - api = 1 { ok 1 - null = ()/undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(94313972015344); getp() = 94313972015344 ok 6 - get($tmp); tmp = 94313972015344 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_null_in([undef,undef,undef]) ok 10 - aa_out() ok 11 - aa_null_out() ok 12 - ra_out() ok 13 - ra_out_nt() ok 14 - ra_null_out ok 15 - pp2p(\undef) = undef ok 16 - pp2p(\94313958710272) = 94313958710272 ok 17 - p2pp(undef) = \undef ok 18 - pp2p(94313972044544) = \94313972044544 ok 19 - call_closure(undef) = undef ok 20 - save = undef ok 21 - call_closure(\94313972039648) = 94313972039648 ok 22 - save = 94313972039648 ok 23 - custom type input { ok 1 ok 2 1..2 } ok 24 - custom type output { ok 1 ok 2 1..2 } 1..24 } ok 3 - api = 2 { ok 1 - null = ()/undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(94313972008064); getp() = 94313972008064 ok 6 - get($tmp); tmp = 94313972008064 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_in([one two three]) ok 10 - aa_null_in([undef,undef,undef]) ok 11 - aa_out() ok 12 - aa_out() ok 13 - aa_null_out() ok 14 - ra_out() ok 15 - ra_out_nt() ok 16 - ra_null_out ok 17 - pp2p(\undef) = undef ok 18 - pp2p(\94313972170864) = 94313972170864 ok 19 - p2pp(undef) = \undef ok 20 - pp2p(94313971876576) = \94313971876576 ok 21 - call_closure(undef) = undef ok 22 - save = undef ok 23 - call_closure(\94313972034992) = 94313972034992 ok 24 - save = 94313972034992 ok 25 - custom type input { ok 1 ok 2 1..2 } ok 26 - custom type output { ok 1 ok 2 1..2 } 1..26 } ok 4 - object { ok 1 - argument { ok 1 ok 2 1..2 } ok 2 - return value { ok 1 ok 2 - Roger=SCALAR->isa('Roger') ok 3 ok 4 - Roger=SCALAR->isa('Roger') ok 5 1..5 } ok 3 1..3 } ok 5 - object { ok 1 - argument { ok 1 ok 2 1..2 } ok 2 - return value { ok 1 ok 2 - Roger=SCALAR->isa('Roger') ok 3 ok 4 - Roger=SCALAR->isa('Roger') ok 5 1..5 } ok 3 1..3 } 1..5 ok t/type_record.t .......................... # record size = 20 ok 1 - not a reference { ok 1 - in { # packed size = 20 ok 1 - get_value($packed) = 42 ok 2 - get_name($packed) = hi there ok 3 - is_null(undef) 1..3 } ok 2 - out { # packed size = 20 ok 1 - get_value($packed) = 47 ok 2 - get_value($packed) = platypus ok 3 - null() = undef 1..3 } 1..2 } ok 2 - return null { ok 1 ok 2 1..2 } ok 3 - is a reference { ok 1 - in { # packed size = 20 ok 1 - get_value(\$packed) = 42 ok 2 - get_name(\$packed) = hi there ok 3 - is_null(\undef) 1..3 } ok 2 - out { # packed size = 36 ok 1 - My::FooRecord=SCALAR->isa('My::FooRecord') ok 2 - packed.my_method = starscream ok 3 - get_value($packed) = 47 ok 4 - get_value($packed) = platypus ok 5 - null() = \undef 1..5 } 1..2 } ok 4 - closure { ok 1 - allow record type as arg ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 # error = record is read-only at t/type_record.t line 135. ok 8 ok 9 ok 10 ok 11 # error = record is read-only at t/type_record.t line 144. ok 12 ok 13 # error = record is read-only at t/type_record.t line 151. ok 14 ok 15 ok 16 # error = record is read-only at t/type_record.t line 160. ok 17 ok 18 ok 19 # error = record is read-only at t/type_record.t line 169. ok 20 ok 21 # error = record is read-only at t/type_record.t line 176. ok 22 ok 23 # error = record is read-only at t/type_record.t line 184. ok 24 ok 25 ok 26 # error = record is read-only at t/type_record.t line 193. ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 1..32 } ok 5 - api = 1 fixed string { ok 1 ok 2 ok 3 1..3 } 1..5 ok t/type_record_value.t .................... ok 1 - is a reference { ok 1 - argument { ok 1 - bad { ok 1 ok 2 ok 3 1..3 } ok 2 - good { ok 1 ok 2 1..2 } 1..2 } ok 2 - return value { ok 1 - function object { ok 1 ok 2 1..2 } ok 2 - xsub_ref { ok 1 ok 2 1..2 } ok 3 - attach { ok 1 ok 2 1..2 } 1..3 } 1..2 } ok 2 - closure { ok 1 - do allow record type as arg ok 2 - do not allow record type with pointer strings as ret type ok 3 # first closure ok 4 - Closure::Record::RW=SCALAR->isa('Closure::Record::RW') ok 5 ok 6 ok 7 ok 8 ok 9 # error = record is read-only at t/type_record_value.t line 156. ok 10 ok 11 ok 12 ok 13 # error = record is read-only at t/type_record_value.t line 165. ok 14 ok 15 # error = record is read-only at t/type_record_value.t line 172. ok 16 ok 17 ok 18 # error = record is read-only at t/type_record_value.t line 181. ok 19 ok 20 ok 21 # error = record is read-only at t/type_record_value.t line 190. ok 22 ok 23 # error = record is read-only at t/type_record_value.t line 197. ok 24 ok 25 # error = record is read-only at t/type_record_value.t line 205. ok 26 ok 27 ok 28 # error = record is read-only at t/type_record_value.t line 214. ok 29 ok 30 ok 31 1..31 } ok 3 - closure ret { ok 1 ok 2 ok 3 - good { ok 1 - Closure::Record::Simple=SCALAR->isa('Closure::Record::Simple') ok 2 ok 3 ok 4 1..4 } ok 4 - bad { # Return record from closure is wrong type! at t/type_record_value.t line 286. ok 1 - Closure::Record::Simple=SCALAR->isa('Closure::Record::Simple') ok 2 ok 3 ok 4 1..4 } ok 5 - short { # Return record from closure is wrong size! at t/type_record_value.t line 307. ok 1 - Closure::Record::Simple=SCALAR->isa('Closure::Record::Simple') ok 2 ok 3 ok 4 1..4 } 1..5 } 1..3 ok t/type_sint16.t .......................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_sint32.t .......................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_sint64.t .......................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_sint8.t ........................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_string.t .......................... ok 1 - api = 0 { ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 - fixed length input { ok 1 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five 1..5 } 1..1 } ok 27 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 28 - variable length input { 1..0 # SKIP test requires api >=2 } ok 29 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle 1..3 } ok 30 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } ok 31 - argument update { ok 1 1..1 } ok 32 - write to string { ok 1 1..1 } ok 33 1..33 } ok 2 - api = 1 { ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 - fixed length input { ok 1 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five 1..5 } 1..1 } ok 27 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 28 - variable length input { 1..0 # SKIP test requires api >=2 } ok 29 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle 1..3 } ok 30 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } ok 31 - argument update { ok 1 1..1 } ok 32 - write to string { ok 1 1..1 } ok 33 1..33 } ok 3 - api = 2 { ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 - fixed length input { ok 1 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five 1..5 } 1..1 } ok 27 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 28 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 29 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle 1..3 } ok 30 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } ok 31 - argument update { ok 1 1..1 } ok 32 - write to string { ok 1 1..1 } ok 33 1..33 } 1..3 ok t/type_uint16.t .......................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_uint32.t .......................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_uint64.t .......................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_uint8.t ........................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok All tests successful. Files=72, Tests=320, 26 wallclock secs ( 0.58 usr 0.18 sys + 17.95 cusr 3.92 csys = 22.63 CPU) Result: PASS make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' create-stamp debian/debhelper-build-stamp dh_prep debian/rules override_dh_auto_install make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_install make -j20 install DESTDIR=/build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl AM_UPDATE_INFO_DIR=no PREFIX=/usr make[2]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 Manifying 33 pod documents Manifying 10 pod documents Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Platypus.so Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Record/Meta/Meta.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Constant/Constant.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Memory/Memory.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/typemap Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Temp.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Bundle.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Closure.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Memory.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Internal.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Buffer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Function.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Constant.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/API.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Legacy.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/DL.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/ShareConfig.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version2.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version0.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version1.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/TieArray.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/Meta.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/C.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/Win32.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/ASM.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/WideString.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/StringPointer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/PointerSizeBuffer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/StringArray.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner/Builder.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner/Result.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/MM.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/Platform.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/Plugin.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/PluginData.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/C.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Object.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/CXX.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Base.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Library.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/config.pl Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/include/ffi_platypus_bundle.h Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/include/ffi_platypus_config.h Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/lib/libplfill.so Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/probe.pl Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/src/dlrun.c Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/bin/dlrun Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Function.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::PluginData.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Result.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version2.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::DL.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Bundle.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::MM.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Closure.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringArray.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Legacy.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Internal.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version1.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::API.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::C.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::ASM.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Constant.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::C.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::PointerSizeBuffer.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Library.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringPointer.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Builder.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Memory.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Temp.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::CXX.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Plugin.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version0.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record::TieArray.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Buffer.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record::Meta.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::Win32.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Object.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Base.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::WideString.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Platform.3pm make[2]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' # contentless manpage rm -f -v /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm removed '/build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm' make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_installdocs dh_installchangelogs debian/rules override_dh_installexamples make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_installexamples sed -i '1s|^#!perl|#!/usr/bin/perl|' /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/doc/libffi-platypus-perl/examples/*.pl sed -i '1s|^#!/usr/bin/env perl|#!/usr/bin/perl|' /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/doc/libffi-platypus-perl/examples/*.pl make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_installman dh_perl dh_link dh_strip_nondeterminism dh_compress dh_fixperms dh_missing dh_dwz -a dh_strip -a dh_makeshlibs -a dh_shlibdeps -a dpkg-shlibdeps: warning: diversions involved - output may be incorrect diversion by libc6 from: /lib64/ld-linux-x86-64.so.2 dpkg-shlibdeps: warning: diversions involved - output may be incorrect diversion by libc6 to: /lib64/ld-linux-x86-64.so.2.usr-is-merged dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'libffi-platypus-perl-dbgsym' in '../libffi-platypus-perl-dbgsym_2.09-1_amd64.deb'. dpkg-deb: building package 'libffi-platypus-perl' in '../libffi-platypus-perl_2.09-1_amd64.deb'. dpkg-genbuildinfo --build=binary -O../libffi-platypus-perl_2.09-1_amd64.buildinfo dpkg-genchanges --build=binary -O../libffi-platypus-perl_2.09-1_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration 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/3063139 and its subdirectories I: Current time: Wed Nov 20 17:50:12 -12 2024 I: pbuilder-time-stamp: 1732168212 Thu Nov 21 05:50:12 UTC 2024 I: Signing ./b1/libffi-platypus-perl_2.09-1_amd64.buildinfo as libffi-platypus-perl_2.09-1_amd64.buildinfo.asc Thu Nov 21 05:50:12 UTC 2024 I: Signed ./b1/libffi-platypus-perl_2.09-1_amd64.buildinfo as ./b1/libffi-platypus-perl_2.09-1_amd64.buildinfo.asc Thu Nov 21 05:50:12 UTC 2024 - build #1 for libffi-platypus-perl/trixie/amd64 on ionos11-amd64 done. Starting cleanup. All cleanup done. Thu Nov 21 05:50:12 UTC 2024 - reproducible_build.sh stopped running as /tmp/jenkins-script-xNZt1jJK, removing. /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg: total 16 drwxr-xr-x 2 jenkins jenkins 4096 Nov 21 05:50 b1 drwxr-xr-x 2 jenkins jenkins 4096 Nov 21 05:47 b2 -rw-r--r-- 1 jenkins jenkins 2684 Aug 29 09:47 libffi-platypus-perl_2.09-1.dsc -rw------- 1 jenkins jenkins 3871 Nov 21 05:47 rbuildlog.bVYM105 /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b1: total 1244 -rw-r--r-- 1 jenkins jenkins 256319 Nov 21 05:50 build.log -rw-r--r-- 1 jenkins jenkins 219984 Nov 21 05:50 libffi-platypus-perl-dbgsym_2.09-1_amd64.deb -rw-r--r-- 1 jenkins jenkins 4856 Nov 21 05:50 libffi-platypus-perl_2.09-1.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2684 Nov 21 05:50 libffi-platypus-perl_2.09-1.dsc -rw-r--r-- 1 jenkins jenkins 5348 Nov 21 05:50 libffi-platypus-perl_2.09-1_amd64.buildinfo -rw-r--r-- 1 jenkins jenkins 6230 Nov 21 05:50 libffi-platypus-perl_2.09-1_amd64.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1644 Nov 21 05:50 libffi-platypus-perl_2.09-1_amd64.changes -rw-r--r-- 1 jenkins jenkins 330836 Nov 21 05:50 libffi-platypus-perl_2.09-1_amd64.deb -rw-r--r-- 1 jenkins jenkins 1740 Nov 21 05:50 libffi-platypus-perl_2.09-1_source.changes -rw-r--r-- 1 jenkins jenkins 422835 Nov 21 05:50 libffi-platypus-perl_2.09.orig.tar.gz /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b2: total 0 Thu Nov 21 05:50:13 UTC 2024 I: Deleting $TMPDIR on ionos11-amd64.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Wed Nov 20 17:47:37 -12 2024 I: pbuilder-time-stamp: 1732168057 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [libffi-platypus-perl_2.09-1.dsc] I: copying [./libffi-platypus-perl_2.09.orig.tar.gz] I: copying [./libffi-platypus-perl_2.09-1.debian.tar.xz] I: Extracting source gpgv: Signature made Thu Aug 29 09:36:31 2024 gpgv: using RSA key D1E1316E93A760A8104D85FABB3A68018649AA06 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./libffi-platypus-perl_2.09-1.dsc: no acceptable signature found dpkg-source: info: extracting libffi-platypus-perl in libffi-platypus-perl-2.09 dpkg-source: info: unpacking libffi-platypus-perl_2.09.orig.tar.gz dpkg-source: info: unpacking libffi-platypus-perl_2.09-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/3063139/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' DISTRIBUTION='trixie' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='f707cf4ef42140d78707e7d3d753f7ad' 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='3063139' PS1='# ' PS2='> ' 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/r-b-build.hxADhKAg/pbuilderrc_vXw1 --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b1 --logfile b1/build.log libffi-platypus-perl_2.09-1.dsc' SUDO_GID='111' SUDO_UID='106' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://46.16.76.132:3128' I: uname -a Linux ionos11-amd64 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Aug 4 21:30 /bin -> usr/bin I: user script /srv/workspace/pbuilder/3063139/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), libcapture-tiny-perl, libextutils-parsexs-perl, libffi-checklib-perl, libffi-dev, libjson-pp-perl, libscalar-list-utils-perl, libtest-simple-perl, libtest2-suite-perl, perl-xs-dev, perl:native, pkgconf | pkg-config | libpkgconfig-perl dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19969 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on libcapture-tiny-perl; however: Package libcapture-tiny-perl is not installed. pbuilder-satisfydepends-dummy depends on libffi-checklib-perl; however: Package libffi-checklib-perl is not installed. pbuilder-satisfydepends-dummy depends on libffi-dev; however: Package libffi-dev is not installed. pbuilder-satisfydepends-dummy depends on libtest2-suite-perl; however: Package libtest2-suite-perl is not installed. pbuilder-satisfydepends-dummy depends on perl-xs-dev; however: Package perl-xs-dev is not installed. pbuilder-satisfydepends-dummy depends on perl:native. pbuilder-satisfydepends-dummy depends on pkgconf | pkg-config | libpkgconfig-perl; however: Package pkgconf is not installed. Package pkg-config is not installed. Package libpkgconfig-perl is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} debhelper{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libcapture-tiny-perl{a} libdebhelper-perl{a} libelf1t64{a} libffi-checklib-perl{a} libffi-dev{a} libfile-stripnondeterminism-perl{a} libfile-which-perl{a} libicu72{a} libmagic-mgc{a} libmagic1t64{a} libperl-dev{a} libpipeline1{a} libpkgconf3{a} libtest2-suite-perl{a} libtool{a} libuchardet0{a} libxml2{a} m4{a} man-db{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} sensible-utils{a} The following packages are RECOMMENDED but will NOT be installed: curl libarchive-cpio-perl libltdl-dev libmail-sendmail-perl libmodule-pluggable-perl lynx wget 0 packages upgraded, 38 newly installed, 0 to remove and 0 not upgraded. Need to get 21.5 MB of archives. After unpacking 82.7 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian trixie/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 2 http://deb.debian.org/debian trixie/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 3 http://deb.debian.org/debian trixie/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 4 http://deb.debian.org/debian trixie/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 5 http://deb.debian.org/debian trixie/main amd64 gettext-base amd64 0.22.5-2 [200 kB] Get: 6 http://deb.debian.org/debian trixie/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 7 http://deb.debian.org/debian trixie/main amd64 groff-base amd64 1.23.0-5 [1181 kB] Get: 8 http://deb.debian.org/debian trixie/main amd64 bsdextrautils amd64 2.40.2-11 [91.5 kB] Get: 9 http://deb.debian.org/debian trixie/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 10 http://deb.debian.org/debian trixie/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 11 http://deb.debian.org/debian trixie/main amd64 m4 amd64 1.4.19-4 [287 kB] Get: 12 http://deb.debian.org/debian trixie/main amd64 autoconf all 2.72-3 [493 kB] Get: 13 http://deb.debian.org/debian trixie/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 14 http://deb.debian.org/debian trixie/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get: 15 http://deb.debian.org/debian trixie/main amd64 autopoint all 0.22.5-2 [723 kB] Get: 16 http://deb.debian.org/debian trixie/main amd64 libdebhelper-perl all 13.20 [89.7 kB] Get: 17 http://deb.debian.org/debian trixie/main amd64 libtool all 2.4.7-8 [517 kB] Get: 18 http://deb.debian.org/debian trixie/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 19 http://deb.debian.org/debian trixie/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 20 http://deb.debian.org/debian trixie/main amd64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB] Get: 21 http://deb.debian.org/debian trixie/main amd64 dh-strip-nondeterminism all 1.14.0-1 [8448 B] Get: 22 http://deb.debian.org/debian trixie/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 23 http://deb.debian.org/debian trixie/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 24 http://deb.debian.org/debian trixie/main amd64 libicu72 amd64 72.1-5+b1 [9423 kB] Get: 25 http://deb.debian.org/debian trixie/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 26 http://deb.debian.org/debian trixie/main amd64 gettext amd64 0.22.5-2 [1601 kB] Get: 27 http://deb.debian.org/debian trixie/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 28 http://deb.debian.org/debian trixie/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 29 http://deb.debian.org/debian trixie/main amd64 debhelper all 13.20 [915 kB] Get: 30 http://deb.debian.org/debian trixie/main amd64 libcapture-tiny-perl all 0.48-2 [24.6 kB] Get: 31 http://deb.debian.org/debian trixie/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get: 32 http://deb.debian.org/debian trixie/main amd64 libffi-checklib-perl all 0.31-1 [19.4 kB] Get: 33 http://deb.debian.org/debian trixie/main amd64 libffi-dev amd64 3.4.6-1 [60.6 kB] Get: 34 http://deb.debian.org/debian trixie/main amd64 libperl-dev amd64 5.40.0-7 [1112 kB] Get: 35 http://deb.debian.org/debian trixie/main amd64 libpkgconf3 amd64 1.8.1-4 [36.4 kB] Get: 36 http://deb.debian.org/debian trixie/main amd64 libtest2-suite-perl all 0.000163-1 [383 kB] Get: 37 http://deb.debian.org/debian trixie/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB] Get: 38 http://deb.debian.org/debian trixie/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB] Fetched 21.5 MB in 2s (8818 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package sensible-utils. (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 ... 19969 files and directories currently installed.) Preparing to unpack .../00-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../01-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../02-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../03-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../04-gettext-base_0.22.5-2_amd64.deb ... Unpacking gettext-base (0.22.5-2) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../05-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../06-groff-base_1.23.0-5_amd64.deb ... Unpacking groff-base (1.23.0-5) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../07-bsdextrautils_2.40.2-11_amd64.deb ... Unpacking bsdextrautils (2.40.2-11) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../08-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../09-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../10-m4_1.4.19-4_amd64.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../11-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../12-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../13-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../14-autopoint_0.22.5-2_all.deb ... Unpacking autopoint (0.22.5-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../15-libdebhelper-perl_13.20_all.deb ... Unpacking libdebhelper-perl (13.20) ... Selecting previously unselected package libtool. Preparing to unpack .../16-libtool_2.4.7-8_all.deb ... Unpacking libtool (2.4.7-8) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../17-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../18-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../19-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../20-dh-strip-nondeterminism_1.14.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.0-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../21-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../22-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../23-libicu72_72.1-5+b1_amd64.deb ... Unpacking libicu72:amd64 (72.1-5+b1) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../24-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../25-gettext_0.22.5-2_amd64.deb ... Unpacking gettext (0.22.5-2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../26-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../27-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../28-debhelper_13.20_all.deb ... Unpacking debhelper (13.20) ... Selecting previously unselected package libcapture-tiny-perl. Preparing to unpack .../29-libcapture-tiny-perl_0.48-2_all.deb ... Unpacking libcapture-tiny-perl (0.48-2) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../30-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libffi-checklib-perl. Preparing to unpack .../31-libffi-checklib-perl_0.31-1_all.deb ... Unpacking libffi-checklib-perl (0.31-1) ... Selecting previously unselected package libffi-dev:amd64. Preparing to unpack .../32-libffi-dev_3.4.6-1_amd64.deb ... Unpacking libffi-dev:amd64 (3.4.6-1) ... Selecting previously unselected package libperl-dev:amd64. Preparing to unpack .../33-libperl-dev_5.40.0-7_amd64.deb ... Unpacking libperl-dev:amd64 (5.40.0-7) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../34-libpkgconf3_1.8.1-4_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-4) ... Selecting previously unselected package libtest2-suite-perl. Preparing to unpack .../35-libtest2-suite-perl_0.000163-1_all.deb ... Unpacking libtest2-suite-perl (0.000163-1) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../36-pkgconf-bin_1.8.1-4_amd64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:amd64. Preparing to unpack .../37-pkgconf_1.8.1-4_amd64.deb ... Unpacking pkgconf:amd64 (1.8.1-4) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libfile-which-perl (1.27-2) ... Setting up libicu72:amd64 (72.1-5+b1) ... Setting up bsdextrautils (2.40.2-11) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libdebhelper-perl (13.20) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up gettext-base (0.22.5-2) ... Setting up m4 (1.4.19-4) ... Setting up libperl-dev:amd64 (5.40.0-7) ... Setting up file (1:5.45-3+b1) ... Setting up libffi-dev:amd64 (3.4.6-1) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libtest2-suite-perl (0.000163-1) ... Setting up autotools-dev (20220109.1) ... Setting up libpkgconf3:amd64 (1.8.1-4) ... Setting up libffi-checklib-perl (0.31-1) ... Setting up autopoint (0.22.5-2) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up autoconf (2.72-3) ... Setting up libcapture-tiny-perl (0.48-2) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... Setting up gettext (0.22.5-2) ... Setting up libtool (2.4.7-8) ... Setting up pkgconf:amd64 (1.8.1-4) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up dh-strip-nondeterminism (1.14.0-1) ... Setting up groff-base (1.23.0-5) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up debhelper (13.20) ... Processing triggers for libc-bin (2.40-3) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/libffi-platypus-perl-2.09/ && 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 > ../libffi-platypus-perl_2.09-1_source.changes dpkg-buildpackage: info: source package libffi-platypus-perl dpkg-buildpackage: info: source version 2.09-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by gregor herrmann dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean dh_clean debian/rules binary dh binary dh_update_autotools_config dh_autoreconf dh_auto_configure /usr/bin/perl Makefile.PL INSTALLDIRS=vendor "OPTIMIZE=-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" "LD=x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now" using system libffi via /usr/bin/pkg-config Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for FFI::Platypus Writing MYMETA.yml and MYMETA.json debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_build -- V=1 make -j20 V=1 make[2]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' Running Mkbootstrap for lib/FFI/Platypus () "/usr/bin/perl" "/usr/share/perl/5.40/ExtUtils/xsubpp" -typemap '/usr/share/perl/5.40/ExtUtils/typemap' lib/FFI/Platypus.xs > lib/FFI/Platypus.xsc chmod 644 "lib/FFI/Platypus.bs" cp lib/FFI/Build/File/Base.pm blib/lib/FFI/Build/File/Base.pm cp lib/FFI/Build/Plugin.pm blib/lib/FFI/Build/Plugin.pm cp lib/FFI/Platypus/Lang/Win32.pm blib/lib/FFI/Platypus/Lang/Win32.pm cp lib/FFI/Build/Platform.pm blib/lib/FFI/Build/Platform.pm cp lib/FFI/Platypus.pm blib/lib/FFI/Platypus.pm cp lib/FFI/Platypus/Type.pm blib/lib/FFI/Platypus/Type.pm cp lib/FFI/Platypus/Legacy.pm blib/lib/FFI/Platypus/Legacy.pm cp lib/FFI/Build/File/CXX.pm blib/lib/FFI/Build/File/CXX.pm cp lib/FFI/Build/File/Library.pm blib/lib/FFI/Build/File/Library.pm cp lib/FFI/Platypus/Constant.pm blib/lib/FFI/Platypus/Constant.pm cp lib/FFI/Platypus/Lang/ASM.pm blib/lib/FFI/Platypus/Lang/ASM.pm cp lib/FFI/Platypus/Bundle.pm blib/lib/FFI/Platypus/Bundle.pm cp lib/FFI/Platypus/Type/StringPointer.pm blib/lib/FFI/Platypus/Type/StringPointer.pm cp lib/FFI/Platypus/Record.pm blib/lib/FFI/Platypus/Record.pm cp lib/FFI/Build.pm blib/lib/FFI/Build.pm cp lib/FFI/Platypus/TypeParser/Version2.pm blib/lib/FFI/Platypus/TypeParser/Version2.pm cp lib/FFI/Platypus/DL.pm blib/lib/FFI/Platypus/DL.pm cp lib/FFI/Platypus/TypeParser/Version1.pm blib/lib/FFI/Platypus/TypeParser/Version1.pm cp lib/FFI/Build/PluginData.pm blib/lib/FFI/Build/PluginData.pm cp lib/FFI/Build/MM.pm blib/lib/FFI/Build/MM.pm cp lib/FFI/Build/File/Object.pm blib/lib/FFI/Build/File/Object.pm cp lib/FFI/Platypus/Record/TieArray.pm blib/lib/FFI/Platypus/Record/TieArray.pm cp lib/FFI/Platypus/Internal.pm blib/lib/FFI/Platypus/Internal.pm cp lib/FFI/Platypus/Buffer.pm blib/lib/FFI/Platypus/Buffer.pm cp lib/FFI/Platypus/Type/PointerSizeBuffer.pm blib/lib/FFI/Platypus/Type/PointerSizeBuffer.pm cp lib/FFI/Platypus/TypeParser.pm blib/lib/FFI/Platypus/TypeParser.pm cp lib/FFI/Platypus/Memory.pm blib/lib/FFI/Platypus/Memory.pm cp lib/FFI/Platypus/Type/StringArray.pm blib/lib/FFI/Platypus/Type/StringArray.pm cp lib/FFI/Platypus/API.pm blib/lib/FFI/Platypus/API.pm cp lib/FFI/Platypus/Record/Meta.pm blib/lib/FFI/Platypus/Record/Meta.pm cp lib/FFI/Platypus/ShareConfig.pm blib/lib/FFI/Platypus/ShareConfig.pm cp lib/FFI/Platypus/TypeParser/Version0.pm blib/lib/FFI/Platypus/TypeParser/Version0.pm cp lib/FFI/Platypus/Closure.pm blib/lib/FFI/Platypus/Closure.pm cp lib/FFI/Platypus/Function.pm blib/lib/FFI/Platypus/Function.pm cp lib/FFI/Platypus/Type/WideString.pm blib/lib/FFI/Platypus/Type/WideString.pm cp lib/FFI/Platypus/Lang.pm blib/lib/FFI/Platypus/Lang.pm cp lib/FFI/Build/File/C.pm blib/lib/FFI/Build/File/C.pm cp lib/FFI/Platypus/Lang/C.pm blib/lib/FFI/Platypus/Lang/C.pm "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 cp lib/FFI/Temp.pm blib/lib/FFI/Temp.pm cp lib/FFI/typemap blib/lib/FFI/typemap cp lib/FFI/Probe.pm blib/lib/FFI/Probe.pm cp lib/FFI/Probe/Runner/Builder.pm blib/lib/FFI/Probe/Runner/Builder.pm cp lib/FFI/Probe/Runner/Result.pm blib/lib/FFI/Probe/Runner/Result.pm cp lib/FFI/Probe/Runner.pm blib/lib/FFI/Probe/Runner.pm mv lib/FFI/Platypus.xsc lib/FFI/Platypus.c +x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c -o blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.o blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.c +x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -fstack-protector-strong -L/usr/local/lib -o blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.o -ldl +blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun verify self dlrun verify self ok +pkgconf --cflags libffi +pkgconf --libs libffi [out] -lffi PR header."stdlib.h"=1 PR header."stdint.h"=1 PR header."sys/types.h"=1 PR header."sys/stat.h"=1 PR header."unistd.h"=1 PR header."alloca.h"=1 PR header."dlfcn.h"=1 PR header."limits.h"=1 PR header."stddef.h"=1 PR header."wchar.h"=1 PR header."signal.h"=1 PR header."inttypes.h"=1 PR header."windows.h"=0 PR header."sys/cygwin.h"=0 PR header."string.h"=1 PR header."psapi.h"=0 PR header."stdio.h"=1 PR header."stdbool.h"=1 PR header."complex.h"=1 PR type.char.align=1 PR type.char.sign=signed PR type.char.size=1 PR type.signed char.align=1 PR type.signed char.sign=signed PR type.signed char.size=1 PR type.unsigned char.align=1 PR type.unsigned char.sign=unsigned PR type.unsigned char.size=1 PR type.short.align=2 PR type.short.sign=signed PR type.short.size=2 PR type.signed short.align=2 PR type.signed short.sign=signed PR type.signed short.size=2 PR type.unsigned short.align=2 PR type.unsigned short.sign=unsigned PR type.unsigned short.size=2 PR type.int.align=4 PR type.int.sign=signed PR type.int.size=4 PR type.signed int.align=4 PR type.signed int.sign=signed PR type.signed int.size=4 PR type.unsigned int.align=4 PR type.unsigned int.sign=unsigned PR type.unsigned int.size=4 PR type.long.align=8 PR type.long.sign=signed PR type.long.size=8 PR type.signed long.align=8 PR type.signed long.sign=signed PR type.signed long.size=8 PR type.unsigned long.align=8 PR type.unsigned long.sign=unsigned PR type.unsigned long.size=8 PR type.uint8_t.align=1 PR type.uint8_t.sign=unsigned PR type.uint8_t.size=1 PR type.int8_t.align=1 PR type.int8_t.sign=signed PR type.int8_t.size=1 PR type.uint16_t.align=2 PR type.uint16_t.sign=unsigned PR type.uint16_t.size=2 PR type.int16_t.align=2 PR type.int16_t.sign=signed PR type.int16_t.size=2 PR type.uint32_t.align=4 PR type.uint32_t.sign=unsigned PR type.uint32_t.size=4 PR type.int32_t.align=4 PR type.int32_t.sign=signed PR type.int32_t.size=4 PR type.uint64_t.align=8 PR type.uint64_t.sign=unsigned PR type.uint64_t.size=8 PR type.int64_t.align=8 PR type.int64_t.sign=signed PR type.int64_t.size=8 PR type.size_t.align=8 PR type.size_t.sign=unsigned PR type.size_t.size=8 PR type.ssize_t.align=8 PR type.ssize_t.sign=signed PR type.ssize_t.size=8 PR type.float.align=4 PR type.float.size=4 PR type.double.align=8 PR type.double.size=8 PR type.long double.align=16 PR type.long double.size=16 PR type.float complex.align=4 PR type.float complex.size=8 PR type.double complex.align=8 PR type.double complex.size=16 PR type.long double complex.align=16 PR type.long double complex.size=32 PR type.bool.align=1 PR type.bool.sign=unsigned PR type.bool.size=1 PR type._Bool.align=1 PR type._Bool.sign=unsigned PR type._Bool.size=1 PR type.pointer.align=8 PR type.pointer.size=8 PR type.uintptr_t.align=8 PR type.uintptr_t.sign=unsigned PR type.uintptr_t.size=8 PR type.intptr_t.align=8 PR type.intptr_t.sign=signed PR type.intptr_t.size=8 PR type.enum.align=4 PR type.enum.sign=unsigned PR type.enum.size=4 PR type.senum.align=4 PR type.senum.sign=signed PR type.senum.size=4 PR type.intmax_t.align=8 PR type.intmax_t.sign=signed PR type.intmax_t.size=8 PR type.uintmax_t.align=8 PR type.uintmax_t.sign=unsigned PR type.uintmax_t.size=8 PR type.long long.align=8 PR type.long long.sign=signed PR type.long long.size=8 PR type.signed long long.align=8 PR type.signed long long.sign=signed PR type.signed long long.size=8 PR type.unsigned long long.align=8 PR type.unsigned long long.sign=unsigned PR type.unsigned long long.size=8 PR type.dev_t.align=8 PR type.dev_t.sign=unsigned PR type.dev_t.size=8 PR type.ino_t.align=8 PR type.ino_t.sign=unsigned PR type.ino_t.size=8 PR type.mode_t.align=4 PR type.mode_t.sign=unsigned PR type.mode_t.size=4 PR type.nlink_t.align=8 PR type.nlink_t.sign=unsigned PR type.nlink_t.size=8 PR type.uid_t.align=4 PR type.uid_t.sign=unsigned PR type.uid_t.size=4 PR type.gid_t.align=4 PR type.gid_t.sign=unsigned PR type.gid_t.size=4 PR type.off_t.align=8 PR type.off_t.sign=signed PR type.off_t.size=8 PR type.blksize_t.align=8 PR type.blksize_t.sign=signed PR type.blksize_t.size=8 PR type.blkcnt_t.align=8 PR type.blkcnt_t.sign=signed PR type.blkcnt_t.size=8 PR type.time_t.align=8 PR type.time_t.sign=signed PR type.time_t.size=8 PR type.ptrdiff_t.align=8 PR type.ptrdiff_t.sign=signed PR type.ptrdiff_t.size=8 PR type.wchar_t.align=4 PR type.wchar_t.sign=signed PR type.wchar_t.size=4 PR type.wint_t.align=4 PR type.wint_t.sign=unsigned PR type.wint_t.size=4 PR probe.abi=1 PR probe.alloca=1 PR probe.complex=1 PR probe.longdouble=1 PR probe.recordvalue=1 PR probe.strnlen=1 PR probe.variadic=1 PR abi.unix64=2 PR abi.win64=3 PR abi.efi64=3 PR abi.gnuw64=4 PR abi.default_abi=2 "/usr/bin/perl" "/usr/share/perl/5.40/ExtUtils/xsubpp" -typemap '/usr/share/perl/5.40/ExtUtils/typemap' lib/FFI/Platypus.xs > lib/FFI/Platypus.xsc x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/cast.c -o xs/cast.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/closure.c -o xs/closure.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/complex.c -o xs/complex.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/custom.c -o xs/custom.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/meta.c -o xs/meta.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/names.c -o xs/names.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/perl_math_int64.c -o xs/perl_math_int64.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/record_opaque.c -o xs/record_opaque.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/record_simple.c -o xs/record_simple.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/record_string.c -o xs/record_string.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/windl.c -o xs/windl.o mv lib/FFI/Platypus.xsc lib/FFI/Platypus.c x86_64-linux-gnu-gcc -c -Iinclude \ -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 \ -DVERSION=\"2.09\" \ -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" lib/FFI/Platypus.c -o lib/FFI/Platypus.o rm -f blib/arch/auto/FFI/Platypus/Platypus.so x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -shared -L/usr/local/lib -fstack-protector-strong lib/FFI/Platypus.o xs/cast.o xs/closure.o xs/complex.o xs/custom.o xs/meta.o xs/names.o xs/perl_math_int64.o xs/record_opaque.o xs/record_simple.o xs/record_string.o xs/windl.o -o blib/arch/auto/FFI/Platypus/Platypus.so \ -lffi \ chmod 755 blib/arch/auto/FFI/Platypus/Platypus.so +pkgconf --cflags libffi +pkgconf --libs libffi [out] -lffi +x86_64-linux-gnu-gcc -Iblib/lib/auto/share/dist/FFI-Platypus/include -Iinclude -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c ffi/constant.c -o ffi/_build/constant.c.o +x86_64-linux-gnu-gcc -Iblib/lib/auto/share/dist/FFI-Platypus/include -Iinclude -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c ffi/memory.c -o ffi/_build/memory.c.o +x86_64-linux-gnu-gcc -Iblib/lib/auto/share/dist/FFI-Platypus/include -Iinclude -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c ffi/record_meta.c -o ffi/_build/record_meta.c.o +x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -shared -L/usr/local/lib -fstack-protector-strong ffi/_build/constant.c.o ffi/_build/memory.c.o ffi/_build/record_meta.c.o -lffi -o blib/lib/auto/share/dist/FFI-Platypus/lib/libplfill.so Manifying 33 pod documents Manifying 10 pod documents make[2]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_test make -j20 test TEST_VERBOSE=1 make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 CC t/ffi/align.c CC t/ffi/align_array.c CC t/ffi/align_fixed.c CC t/ffi/align_string.c CC t/ffi/basic.c CC t/ffi/closure.c CC t/ffi/color.c CC t/ffi/complex_double.c CC t/ffi/complex_float.c CC t/ffi/double.c CC t/ffi/float.c CC t/ffi/gh117.c CC t/ffi/gh174.c CC t/ffi/longdouble.c CC t/ffi/memcmp4.c CC t/ffi/meta.c CC t/ffi/pointer.c CC t/ffi/record.c CC t/ffi/sint16.c CC t/ffi/sint32.c CC t/ffi/sint64.c CC t/ffi/sint8.c CC t/ffi/string.c CC t/ffi/string_array.c CC t/ffi/uint16.c CC t/ffi/uint32.c CC t/ffi/uint64.c CC t/ffi/uint8.c CC t/ffi/variadic.c LD t/ffi/libtest.so PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t # # # # HARNESS_ACTIVE=1 # HARNESS_IS_VERBOSE=1 # HARNESS_VERSION=3.48 # LANG=C # LC_ALL=C # PERL5LIB=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib:/build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # PERL_DL_NONLAZY=1 # PERL_USE_UNSAFE_INC=1 # SHELL=/bin/bash # # # # PERL5LIB path # /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib # /build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # # # # perl 5.040000 linux x86_64-linux-gnu-thread-multi # Alien::Base - # Alien::FFI - # Capture::Tiny 0.48 # Devel::Hide - # ExtUtils::CBuilder 0.280240 # ExtUtils::MakeMaker 7.70 # ExtUtils::ParseXS 3.51 # FFI::CheckLib 0.31 # File::Spec::Functions 3.91 # IPC::Cmd 1.04 # JSON::PP 4.16 # List::Util 1.63 # Math::LongDouble - # PkgConfig - # Test2::API 1.302199 # Test2::V0 0.000163 # autodie 2.37 # constant 1.33 # forks - # parent 0.241 # # # # mode : system # Alien::FFI::pkgconfig->VERSION = # Alien::FFI::pkgconfig->install_type = system # Alien::FFI::pkgconfig->cflags = # Alien::FFI::pkgconfig->libs = -lffi # Alien::FFI::pkgconfig->version = 3.4.6 # # # # ffi.platypus.memory.strdup_impl =libc # ffi.platypus.memory.strndup_impl=libc # # # # Types: # complex_double : double complex # complex_float : float complex # complex_longdouble : long double complex # double : double # float : float # longdouble : long double # sint16 : int16_t, short, signed short # sint32 : int, int32_t, senum, signed int, wchar_t # sint64 : blkcnt_t, blksize_t, int64_t, intmax_t, intptr_t, long, long long, off_t, ptrdiff_t, signed long, signed long long, ssize_t, time_t # sint8 : char, int8_t, signed char # uint16 : uint16_t, unsigned short, ushort # uint32 : enum, gid_t, mode_t, uid_t, uint, uint32_t, unsigned int, wint_t # uint64 : dev_t, ino_t, nlink_t, size_t, uint64_t, uintmax_t, uintptr_t, ulong, unsigned long, unsigned long long # uint8 : bool, uchar, uint8_t, unsigned char # # # # ABIs: # default_abi 2 # efi64 3 # gnuw64 4 # unix64 2 # win64 3 # # # # Probes: # complex 1 # variadic 1 # strnlen 1 # recordvalue 1 # bigendian64 0 # bigendian 0 # longdouble 1 # alloca 1 # abi 1 # # # # CPU Info: # model name : AMD Opteron 62xx class CPU # flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm cmp_legacy svm abm sse4a misalignsse 3dnowprefetch osvw ssbd ibpb vmmcall virt_ssbd arat npt nrip_save # address sizes : 40 bits physical, 48 bits virtual # # # # [PLATFORM] # osname : linux # cc : x86_64-linux-gnu-gcc # cxx : x86_64-linux-gnu-g++ # cxxld : x86_64-linux-gnu-g++ # for : --- # ld : x86_64-linux-gnu-gcc # ccflags : -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include # ldflags : -shared -L/usr/local/lib -fstack-protector-strong # object suffix : .o # library prefix : lib # library suffix : .so # cc mm works : -MM # # # t/00_diag.t .............................. ok 1 - okay 1..1 ok t/ffi_build.t ............................ ok 1 - basic { ok 1 - FFI::Build=HASH->isa('FFI::Build') ok 2 - foo is somewhere in the native name for the lib # lib.file.path = ./libfoo.so ok 3 - dir is a dir ok 4 - FFI::Build::Platform=HASH->isa('FFI::Build::Platform') ok 5 - FFI::Build::File::C=HASH->isa('FFI::Build::File::C') 1..5 } ok 2 - file classes { ok 1 - at least one # class = FFI::Build::File::C # class = FFI::Build::File::CXX # class = FFI::Build::File::Library # class = FFI::Build::File::Object # class = FFI::Build::File::Foo2 # class = FFI::Build::File::Foo1 1..1 } ok 3 - build { ok 1 - name { # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo1.c.o # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo2.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/jzPbZBauNc/libfoo.so ok 2 ok 3 1..3 } ok 2 - object { # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/_build/foo1.c.o corpus/ffi_build/project1/_build/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/DpQFkBz3fi/libfoo.so ok 2 ok 3 1..3 } ok 3 - array { # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo1.c.o # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo2.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/bx1rGUxD5E/libfoo.so ok 2 ok 3 1..3 } 1..3 } ok 4 - build c++ { # corpus/ffi_build/project-cxx/foo1.cxx # corpus/ffi_build/project-cxx/foo2.cpp ok 1 - no error # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo1.cxx -o corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo1.o # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo2.cpp -o corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo2.o # +x86_64-linux-gnu-g++ -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo1.o corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo2.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/tmpbuild._j3jVq/libfoo.so ok 2 - foo1 found ok 3 - foo2 found ok 4 ok 5 1..5 } ok 5 - alien { 1..0 # SKIP Test requires Acme::Alien::DontPanic 1.03 } 1..5 ok t/ffi_build_file_base.t .................. ok 1 - basic { ok 1 - basic usage { ok 1 # error = content is required at t/ffi_build_file_base.t line 16. 1..1 } ok 2 - array filename { ok 1 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Base') ok 2 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Foo') ok 3 - stringifies to path ok 4 ok 5 - is_temp ok 6 - basename ok 7 - dirname # dirname = corpus/ffi_build_file_base ok 8 - No forward slashes! ok 9 - native name # native = corpus/ffi_build_file_base/basic.foo 1..9 } ok 3 - string filename { ok 1 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Base') ok 2 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Foo') ok 3 ok 4 - is_temp ok 5 - No forward slashes! 1..5 } ok 4 - string ref { ok 1 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Base') ok 2 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Foo') ok 3 - has the correct extension ok 4 - is_temp ok 5 # path: /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_LnxLku.foo ok 6 - No forward slashes! ok 7 - file exists ok 8 - file is removed after destroy 1..8 } ok 5 - string ref keep { ok 1 ok 2 - file exists ok 3 - No forward slashes! ok 4 - file exists after undef 1..4 } 1..5 } 1..1 ok t/ffi_build_file_c.t ..................... ok 1 - basic { ok 1 - FFI::Build::File::C=HASH->isa('FFI::Build::File::C') ok 2 - FFI::Build::File::C=HASH->isa('FFI::Build::File::Base') ok 3 ok 4 1..4 } ok 2 - compile { ok 1 - FFI::Build::File::Object=HASH->isa('FFI::Build::File::Object') ok 2 1..2 } ok 3 - headers { ok 1 - no die ok 2 - dep is a file: corpus/ffi_build_file_c/foo2.c ok 3 - dep is a file: corpus/ffi_build_file_c/include/myfoo.h 1..3 } 1..3 ok t/ffi_build_file_cxx.t ................... ok 1 - basic { ok 1 - FFI::Build::File::CXX=HASH->isa('FFI::Build::File::CXX') ok 2 - FFI::Build::File::CXX=HASH->isa('FFI::Build::File::C') ok 3 - FFI::Build::File::CXX=HASH->isa('FFI::Build::File::Base') ok 4 ok 5 1..5 } ok 2 - compile { ok 1 - FFI::Build::File::Object=HASH->isa('FFI::Build::File::Object') ok 2 1..2 } ok 3 - headers { ok 1 - no die ok 2 - dep is afile: corpus/ffi_build_file_cxx/foo2.cpp ok 3 - dep is afile: corpus/ffi_build_file_cxx/include/myfoo.h 1..3 } 1..3 ok t/ffi_build_file_library.t ............... ok 1 - basic { ok 1 ok 2 # path = corpus/basic.so 1..2 } 1..1 ok t/ffi_build_file_object.t ................ ok 1 - basic { ok 1 ok 2 # path = corpus/basic.o 1..2 } 1..1 ok t/ffi_build_mm.t ......................... ok 1 - basic { ok 1 - FFI::Build::MM=HASH->isa('FFI::Build::MM') ok 2 ok 3 ok 4 ok 5 - build with fbx file { ok 1 - FFI::Build=HASH->isa('FFI::Build') ok 2 1..2 } ok 6 - build with fbx file with errors { ok 1 - caught compile error in fbx file 1..1 } ok 7 - build with default { ok 1 - FFI::Build=HASH->isa('FFI::Build') ok 2 1..2 } ok 8 # [postamble] # .PHONY: fbx_build ffi fbx_test ffi-test fbx_clean ffi-clean # # realclean :: fbx_clean # # fbx_clean ffi-clean: # $(FULLPERL) -MFFI::Build::MM=cmd -e fbx_clean # # pure_all :: fbx_build # # fbx_build ffi: # $(FULLPERL) -MFFI::Build::MM=cmd -e fbx_build # # subdirs-test_dynamic subdirs-test_static subdirs-test :: fbx_test # # fbx_test ffi-test: # $(FULLPERL) -MFFI::Build::MM=cmd -e fbx_test # # ok 9 ok 10 1..10 } ok 2 - with a build! { ok 1 - namespace is clean { ok 1 - fbx_build not imported yet ok 2 - fbx_test not imported yet ok 3 - fbx_clean not imported yet 1..3 } ok 2 - do not save on request { ok 1 1..1 } ok 3 - perl Makefile.PL { ok 1 1..1 } ok 4 - import { ok 1 - fbx_build not imported yet ok 2 - fbx_test not imported yet ok 3 - fbx_clean not imported yet 1..3 } ok 5 - make { # CC ffi/x.c # CC ffi/y.c # CC ffi/z.c # LD blib/lib/auto/share/dist/Crock-O-Stimpy/lib/libCrock-O-Stimpy.so ok 1 ok 2 # lib=blib/lib/auto/share/dist/Crock-O-Stimpy/lib/libCrock-O-Stimpy.so ok 3 1..3 } ok 6 - make test { # CC t/ffi/a.c # CC t/ffi/b.c # CC t/ffi/c.c # LD t/ffi/_build/libtest.so ok 1 1..1 } ok 7 - make clean { ok 1 1..1 } 1..7 } ok 3 - alien { 1..0 # SKIP todo } 1..3 ok t/ffi_build_platform.t ................... ok 1 - basic { ok 1 - FFI::Build::Platform=HASH->isa('FFI::Build::Platform') # osname : linux # cc : x86_64-linux-gnu-gcc # cxx : x86_64-linux-gnu-g++ # cxxld : x86_64-linux-gnu-g++ # for : --- # ld : x86_64-linux-gnu-gcc # ccflags : -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include # ldflags : -shared -L/usr/local/lib -fstack-protector-strong # object suffix : .o # library prefix : lib # library suffix : .so # cc mm works : -MM 1..1 } ok 2 - cc mm works { # CC (checkfor -MM) ok 1 # cc_mm_works = -MM 1..1 } 1..2 ok t/ffi_build_plugin.t ..................... # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # @INC[]=/etc/perl # @INC[]=/usr/local/lib/x86_64-linux-gnu/perl/5.40.0 # @INC[]=/usr/local/share/perl/5.40.0 # @INC[]=/usr/lib/x86_64-linux-gnu/perl5/5.40 # @INC[]=/usr/share/perl5 # @INC[]=/usr/lib/x86_64-linux-gnu/perl-base # @INC[]=/usr/lib/x86_64-linux-gnu/perl/5.40 # @INC[]=/usr/share/perl/5.40 # @INC[]=/usr/local/lib/site_perl # @INC[]=. ok 1 - works with local config # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # @INC[]=/etc/perl # @INC[]=/usr/local/lib/x86_64-linux-gnu/perl/5.40.0 # @INC[]=/usr/local/share/perl/5.40.0 # @INC[]=/usr/lib/x86_64-linux-gnu/perl5/5.40 # @INC[]=/usr/share/perl5 # @INC[]=/usr/lib/x86_64-linux-gnu/perl-base # @INC[]=/usr/lib/x86_64-linux-gnu/perl/5.40 # @INC[]=/usr/share/perl/5.40 # @INC[]=/usr/local/lib/site_perl # @INC[]=. # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/corpus/ffi_build_plugin/lib2 ok 2 - works with local + empty dir # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/corpus/ffi_build_plugin/lib2 ok 3 1..3 ok t/ffi_build_plugindata.t ................. ok 1 ok 2 ok 3 1..3 ok t/ffi_platypus.t ......................... ok 1 - constructor { ok 1 - basic { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') 1..1 } ok 2 - no arguments { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') ok 2 - ffi.lib 1..2 } ok 3 - with single lib { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') ok 2 - ffi.lib 1..2 } ok 4 - with multiple lib { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') ok 2 - ffi.lib 1..2 } 1..4 } ok 2 - abi { ok 1 - has a default ABI ok 2 - gnuw64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 3 - default_abi { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 4 - unix64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 5 - win64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 6 - efi64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 7 - bogus { ok 1 - string ok 2 - integer 1..2 } 1..7 } ok 3 - alignof { ok 1 - ffi types { ok 1 - alignof sint8 = 1 ok 2 ok 3 - alignof sint8 [2] = 1 ok 4 - alignof sint8 * = 8 ok 5 - alignof custom_sint8 = 1 ok 6 - alignof uint8 = 1 ok 7 ok 8 - alignof uint8 [2] = 1 ok 9 - alignof uint8 * = 8 ok 10 - alignof custom_uint8 = 1 ok 11 - alignof sint16 = 2 ok 12 ok 13 - alignof sint16 [2] = 2 ok 14 - alignof sint16 * = 8 ok 15 - alignof custom_sint16 = 2 ok 16 - alignof uint16 = 2 ok 17 ok 18 - alignof uint16 [2] = 2 ok 19 - alignof uint16 * = 8 ok 20 - alignof custom_uint16 = 2 ok 21 - alignof sint32 = 4 ok 22 ok 23 - alignof sint32 [2] = 4 ok 24 - alignof sint32 * = 8 ok 25 - alignof custom_sint32 = 4 ok 26 - alignof uint32 = 4 ok 27 ok 28 - alignof uint32 [2] = 4 ok 29 - alignof uint32 * = 8 ok 30 - alignof custom_uint32 = 4 ok 31 - alignof sint64 = 8 ok 32 ok 33 - alignof sint64 [2] = 8 ok 34 - alignof sint64 * = 8 ok 35 - alignof custom_sint64 = 8 ok 36 - alignof uint64 = 8 ok 37 ok 38 - alignof uint64 [2] = 8 ok 39 - alignof uint64 * = 8 ok 40 - alignof custom_uint64 = 8 ok 41 - alignof float = 4 ok 42 ok 43 - alignof float [2] = 4 ok 44 - alignof float * = 8 ok 45 - alignof custom_float = 4 ok 46 - alignof double = 8 ok 47 ok 48 - alignof double [2] = 8 ok 49 - alignof double * = 8 ok 50 - alignof custom_double = 8 ok 51 - alignof opaque = 8 ok 52 ok 53 - alignof opaque [2] = 8 ok 54 - alignof opaque * = 8 ok 55 - alignof custom_opaque = 8 ok 56 - alignof string = 8 ok 57 1..57 } ok 2 - aliases { ok 1 - alignof ushort = 2 ok 2 - alignof foo = 2 1..2 } ok 3 - closure { ok 1 - sizeof closure_t = 8 1..1 } ok 4 - record { ok 1 # {'ffi_type' => 'pointer','ref' => 0,'size' => 22,'type' => 'record','type_code' => 2308} 1..1 } 1..4 } ok 4 - custom type { ok 1 - float { ok 1 - ffi.custom_type 1 # {'float_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 2 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 3 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 4 - ffi.custom_type 1 # {'float_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 5 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 6 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} 1..6 } ok 2 - double { ok 1 - ffi.custom_type 1 # {'double_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 2 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 3 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 4 - ffi.custom_type 1 # {'double_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 5 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 6 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} 1..6 } ok 3 - opaque { ok 1 - ffi.custom_type 1 # {'opaque_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 2 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 3 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 4 - ffi.custom_type 1 # {'opaque_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 5 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 6 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} 1..6 } ok 4 - uint8 { ok 1 - ffi.custom_type 1 # {'uint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 2 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 3 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 4 - ffi.custom_type 1 # {'uint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 5 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 6 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} 1..6 } ok 5 - sint8 { ok 1 - ffi.custom_type 1 # {'sint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 2 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 3 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 4 - ffi.custom_type 1 # {'sint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 5 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 6 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} 1..6 } ok 6 - uint16 { ok 1 - ffi.custom_type 1 # {'uint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 2 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 3 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 4 - ffi.custom_type 1 # {'uint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 5 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 6 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} 1..6 } ok 7 - sint16 { ok 1 - ffi.custom_type 1 # {'sint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 2 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 3 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 4 - ffi.custom_type 1 # {'sint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 5 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 6 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} 1..6 } ok 8 - uint32 { ok 1 - ffi.custom_type 1 # {'uint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 2 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 3 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 4 - ffi.custom_type 1 # {'uint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 5 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 6 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} 1..6 } ok 9 - sint32 { ok 1 - ffi.custom_type 1 # {'sint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 2 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 3 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 4 - ffi.custom_type 1 # {'sint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 5 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 6 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} 1..6 } ok 10 - uint64 { ok 1 - ffi.custom_type 1 # {'uint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 2 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 3 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 4 - ffi.custom_type 1 # {'uint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 5 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 6 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} 1..6 } ok 11 - sint64 { ok 1 - ffi.custom_type 1 # {'sint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 2 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 3 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 4 - ffi.custom_type 1 # {'sint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 5 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 6 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} 1..6 } 1..11 } ok 5 - find lib { ok 1 - find_lib { ok 1 - found f0 = 139699138683760 1..1 } ok 2 - external { ok 1 - ffi.find_symbol(f0) = 139699138683760 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } ok 3 - internal { ok 1 - ffi.find_symbol(printf) = 139699140243904 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } 1..3 } ok 6 - find symbol { ok 1 - external { ok 1 - ffi.find_symbol(f0) = 139699138683760 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } ok 2 - internal { ok 1 - ffi.find_symbol(printf) = 139699140243904 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } 1..2 } ok 7 - lib { ok 1 - basic { ok 1 - exists t/ffi/libtest.so ok 2 - ffi.lib (set) ok 3 - ffi.lib (get) 1..3 } ok 2 - undef { ok 1 - baseline { ok 1 1..1 } ok 2 - lib => [undef] { ok 1 1..1 } ok 3 - lib => undef { ok 1 1..1 } 1..3 } ok 3 - coderef { ok 1 - exists t/ffi/libtest.so ok 2 - ffi.lib (set) ok 3 - ffi.lib (get) 1..3 } 1..3 } ok 8 - sizeof { ok 1 - integers { ok 1 - sizeof uint8 = 1 ok 2 - sizeof uint16 = 2 ok 3 - sizeof uint32 = 4 ok 4 - sizeof uint64 = 8 ok 5 - sizeof sint8 = 1 ok 6 - sizeof sint16 = 2 ok 7 - sizeof sint32 = 4 ok 8 - sizeof sint64 = 8 1..8 } ok 2 - class methods { ok 1 - sizeof uint8 = 1 ok 2 - sizeof uint16 = 2 ok 3 - sizeof uint32 = 4 ok 4 - sizeof uint64 = 8 ok 5 - sizeof sint8 = 1 ok 6 - sizeof sint16 = 2 ok 7 - sizeof sint32 = 4 ok 8 - sizeof sint64 = 8 1..8 } ok 3 - floats { ok 1 - sizeof float = 4 ok 2 - sizeof double = 8 1..2 } ok 4 - pointers { ok 1 - sizeof opaque = 8 ok 2 - sizeof uint8* = 8 ok 3 - sizeof uint16* = 8 ok 4 - sizeof uint32* = 8 ok 5 - sizeof uint64* = 8 ok 6 - sizeof sint8* = 8 ok 7 - sizeof sint16* = 8 ok 8 - sizeof sint32* = 8 ok 9 - sizeof sint64* = 8 ok 10 - sizeof float* = 8 ok 11 - sizeof double* = 8 ok 12 - sizeof opaque* = 8 ok 13 - sizeof string = 8 ok 14 - sizeof (int)->int = 8 1..14 } ok 5 - arrays { ok 1 - sizeof uint8 [32] = 1 ok 2 - sizeof uint8 [32] = 2 ok 3 - sizeof uint8 [32] = 3 ok 4 - sizeof uint8 [32] = 4 ok 5 - sizeof uint8 [32] = 5 ok 6 - sizeof uint8 [32] = 6 ok 7 - sizeof uint8 [32] = 7 ok 8 - sizeof uint8 [32] = 8 ok 9 - sizeof uint8 [32] = 9 ok 10 - sizeof uint8 [32] = 10 ok 11 - sizeof uint16 [32] = 2 ok 12 - sizeof uint16 [32] = 4 ok 13 - sizeof uint16 [32] = 6 ok 14 - sizeof uint16 [32] = 8 ok 15 - sizeof uint16 [32] = 10 ok 16 - sizeof uint16 [32] = 12 ok 17 - sizeof uint16 [32] = 14 ok 18 - sizeof uint16 [32] = 16 ok 19 - sizeof uint16 [32] = 18 ok 20 - sizeof uint16 [32] = 20 ok 21 - sizeof uint32 [32] = 4 ok 22 - sizeof uint32 [32] = 8 ok 23 - sizeof uint32 [32] = 12 ok 24 - sizeof uint32 [32] = 16 ok 25 - sizeof uint32 [32] = 20 ok 26 - sizeof uint32 [32] = 24 ok 27 - sizeof uint32 [32] = 28 ok 28 - sizeof uint32 [32] = 32 ok 29 - sizeof uint32 [32] = 36 ok 30 - sizeof uint32 [32] = 40 ok 31 - sizeof uint64 [32] = 8 ok 32 - sizeof uint64 [32] = 16 ok 33 - sizeof uint64 [32] = 24 ok 34 - sizeof uint64 [32] = 32 ok 35 - sizeof uint64 [32] = 40 ok 36 - sizeof uint64 [32] = 48 ok 37 - sizeof uint64 [32] = 56 ok 38 - sizeof uint64 [32] = 64 ok 39 - sizeof uint64 [32] = 72 ok 40 - sizeof uint64 [32] = 80 ok 41 - sizeof sint8 [32] = 1 ok 42 - sizeof sint8 [32] = 2 ok 43 - sizeof sint8 [32] = 3 ok 44 - sizeof sint8 [32] = 4 ok 45 - sizeof sint8 [32] = 5 ok 46 - sizeof sint8 [32] = 6 ok 47 - sizeof sint8 [32] = 7 ok 48 - sizeof sint8 [32] = 8 ok 49 - sizeof sint8 [32] = 9 ok 50 - sizeof sint8 [32] = 10 ok 51 - sizeof sint16 [32] = 2 ok 52 - sizeof sint16 [32] = 4 ok 53 - sizeof sint16 [32] = 6 ok 54 - sizeof sint16 [32] = 8 ok 55 - sizeof sint16 [32] = 10 ok 56 - sizeof sint16 [32] = 12 ok 57 - sizeof sint16 [32] = 14 ok 58 - sizeof sint16 [32] = 16 ok 59 - sizeof sint16 [32] = 18 ok 60 - sizeof sint16 [32] = 20 ok 61 - sizeof sint32 [32] = 4 ok 62 - sizeof sint32 [32] = 8 ok 63 - sizeof sint32 [32] = 12 ok 64 - sizeof sint32 [32] = 16 ok 65 - sizeof sint32 [32] = 20 ok 66 - sizeof sint32 [32] = 24 ok 67 - sizeof sint32 [32] = 28 ok 68 - sizeof sint32 [32] = 32 ok 69 - sizeof sint32 [32] = 36 ok 70 - sizeof sint32 [32] = 40 ok 71 - sizeof sint64 [32] = 8 ok 72 - sizeof sint64 [32] = 16 ok 73 - sizeof sint64 [32] = 24 ok 74 - sizeof sint64 [32] = 32 ok 75 - sizeof sint64 [32] = 40 ok 76 - sizeof sint64 [32] = 48 ok 77 - sizeof sint64 [32] = 56 ok 78 - sizeof sint64 [32] = 64 ok 79 - sizeof sint64 [32] = 72 ok 80 - sizeof sint64 [32] = 80 ok 81 - sizeof float [32] = 4 ok 82 - sizeof float [32] = 8 ok 83 - sizeof float [32] = 12 ok 84 - sizeof float [32] = 16 ok 85 - sizeof float [32] = 20 ok 86 - sizeof float [32] = 24 ok 87 - sizeof float [32] = 28 ok 88 - sizeof float [32] = 32 ok 89 - sizeof float [32] = 36 ok 90 - sizeof float [32] = 40 ok 91 - sizeof double [32] = 8 ok 92 - sizeof double [32] = 16 ok 93 - sizeof double [32] = 24 ok 94 - sizeof double [32] = 32 ok 95 - sizeof double [32] = 40 ok 96 - sizeof double [32] = 48 ok 97 - sizeof double [32] = 56 ok 98 - sizeof double [32] = 64 ok 99 - sizeof double [32] = 72 ok 100 - sizeof double [32] = 80 ok 101 - sizeof opaque [32] = 8 ok 102 - sizeof opaque [32] = 16 ok 103 - sizeof opaque [32] = 24 ok 104 - sizeof opaque [32] = 32 ok 105 - sizeof opaque [32] = 40 ok 106 - sizeof opaque [32] = 48 ok 107 - sizeof opaque [32] = 56 ok 108 - sizeof opaque [32] = 64 ok 109 - sizeof opaque [32] = 72 ok 110 - sizeof opaque [32] = 80 1..110 } ok 6 - custom_type { ok 1 - sizeof my_uint8 = 1 ok 2 - sizeof my_uint16 = 2 ok 3 - sizeof my_uint32 = 4 ok 4 - sizeof my_uint64 = 8 ok 5 - sizeof my_sint8 = 1 ok 6 - sizeof my_sint16 = 2 ok 7 - sizeof my_sint32 = 4 ok 8 - sizeof my_sint64 = 8 ok 9 - sizeof my_float = 4 ok 10 - sizeof my_double = 8 ok 11 - sizeof my_opaque = 8 1..11 } 1..6 } ok 9 - type { ok 1 - simple type { ok 1 - ffi.type(sint8) 1..1 } ok 2 - aliased type { ok 1 - ffi.type(sint8 => my_integer_8) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - ffi.types returns my_integer_8 1..3 } ok 3 - ffi basic types { ok 1 - sint8 { ok 1 - ffi.type(sint8) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'scalar','type_code' => 17} # ok 2 - size = 1 1..2 } ok 2 - uint8 { ok 1 - ffi.type(uint8) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'scalar','type_code' => 33} # ok 2 - size = 1 1..2 } ok 3 - sint16 { ok 1 - ffi.type(sint16) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'scalar','type_code' => 18} # ok 2 - size = 2 1..2 } ok 4 - uint16 { ok 1 - ffi.type(uint16) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'scalar','type_code' => 34} # ok 2 - size = 2 1..2 } ok 5 - sint32 { ok 1 - ffi.type(sint32) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19} # ok 2 - size = 4 1..2 } ok 6 - uint32 { ok 1 - ffi.type(uint32) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'scalar','type_code' => 35} # ok 2 - size = 4 1..2 } ok 7 - sint64 { ok 1 - ffi.type(sint64) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'scalar','type_code' => 20} # ok 2 - size = 8 1..2 } ok 8 - uint64 { ok 1 - ffi.type(uint64) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'scalar','type_code' => 36} # ok 2 - size = 8 1..2 } ok 9 - float { ok 1 - ffi.type(float) # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'scalar','type_code' => 67} # ok 2 - size = 4 1..2 } ok 10 - double { ok 1 - ffi.type(double) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'scalar','type_code' => 68} # ok 2 - size = 8 1..2 } ok 11 - opaque { ok 1 - ffi.type(opaque) # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'scalar','type_code' => 260} # ok 2 - size = 8 1..2 } ok 12 - string { ok 1 - ffi.type(string) # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # ok 2 - size = 8 1..2 } ok 13 - longdouble { ok 1 - ffi.type(longdouble) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 16,'type' => 'scalar','type_code' => 69} # ok 2 - size = 16 1..2 } ok 14 - complex_float { ok 1 - ffi.type(complex_float) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'complex_float','size' => 8,'type' => 'scalar','type_code' => 132} # ok 2 - size = 8 1..2 } ok 15 - complex_double { ok 1 - ffi.type(complex_double) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'complex_double','size' => 16,'type' => 'scalar','type_code' => 133} # ok 2 - size = 16 1..2 } 1..15 } ok 4 - ffi pointer types { ok 1 - sint8 * { ok 1 - ffi.type(sint8 *) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4113} # ok 2 - size = 8 1..2 } ok 2 - uint8 * { ok 1 - ffi.type(uint8 *) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4129} # ok 2 - size = 8 1..2 } ok 3 - sint16 * { ok 1 - ffi.type(sint16 *) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4114} # ok 2 - size = 8 1..2 } ok 4 - uint16 * { ok 1 - ffi.type(uint16 *) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4130} # ok 2 - size = 8 1..2 } ok 5 - sint32 * { ok 1 - ffi.type(sint32 *) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4115} # ok 2 - size = 8 1..2 } ok 6 - uint32 * { ok 1 - ffi.type(uint32 *) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4131} # ok 2 - size = 8 1..2 } ok 7 - sint64 * { ok 1 - ffi.type(sint64 *) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4116} # ok 2 - size = 8 1..2 } ok 8 - uint64 * { ok 1 - ffi.type(uint64 *) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4132} # ok 2 - size = 8 1..2 } ok 9 - float * { ok 1 - ffi.type(float *) # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 8,'type' => 'pointer','type_code' => 4163} # ok 2 - size = 8 1..2 } ok 10 - double * { ok 1 - ffi.type(double *) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'pointer','type_code' => 4164} # ok 2 - size = 8 1..2 } ok 11 - opaque * { ok 1 - ffi.type(opaque *) # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'pointer','type_code' => 4356} # ok 2 - size = 8 1..2 } ok 12 - string * { 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE POINTER } ok 13 - longdouble * { ok 1 - ffi.type(longdouble *) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 8,'type' => 'pointer','type_code' => 4165} # ok 2 - size = 8 1..2 } ok 14 - complex_float * { ok 1 - ffi.type(complex_float *) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'complex_float','size' => 8,'type' => 'pointer','type_code' => 4228} # ok 2 - size = 8 1..2 } ok 15 - complex_double * { ok 1 - ffi.type(complex_double *) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'complex_double','size' => 8,'type' => 'pointer','type_code' => 4229} # ok 2 - size = 8 1..2 } 1..15 } ok 5 - ffi array types { ok 1 - sint8 [5] { ok 1 - ffi.type(sint8 [5]) # {'element_count' => 5,'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 5,'type' => 'array','type_code' => 8209} # ok 2 - size = 5 ok 3 - size = 5 1..3 } ok 2 - uint8 [7] { ok 1 - ffi.type(uint8 [7]) # {'element_count' => 7,'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 7,'type' => 'array','type_code' => 8225} # ok 2 - size = 7 ok 3 - size = 7 1..3 } ok 3 - sint16 [9] { ok 1 - ffi.type(sint16 [9]) # {'element_count' => 9,'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 18,'type' => 'array','type_code' => 8210} # ok 2 - size = 18 ok 3 - size = 9 1..3 } ok 4 - uint16 [11] { ok 1 - ffi.type(uint16 [11]) # {'element_count' => 11,'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 22,'type' => 'array','type_code' => 8226} # ok 2 - size = 22 ok 3 - size = 11 1..3 } ok 5 - sint32 [13] { ok 1 - ffi.type(sint32 [13]) # {'element_count' => 13,'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 52,'type' => 'array','type_code' => 8211} # ok 2 - size = 52 ok 3 - size = 13 1..3 } ok 6 - uint32 [15] { ok 1 - ffi.type(uint32 [15]) # {'element_count' => 15,'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 60,'type' => 'array','type_code' => 8227} # ok 2 - size = 60 ok 3 - size = 15 1..3 } ok 7 - sint64 [17] { ok 1 - ffi.type(sint64 [17]) # {'element_count' => 17,'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 136,'type' => 'array','type_code' => 8212} # ok 2 - size = 136 ok 3 - size = 17 1..3 } ok 8 - uint64 [19] { ok 1 - ffi.type(uint64 [19]) # {'element_count' => 19,'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 152,'type' => 'array','type_code' => 8228} # ok 2 - size = 152 ok 3 - size = 19 1..3 } ok 9 - float [21] { ok 1 - ffi.type(float [21]) # {'element_count' => 21,'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 84,'type' => 'array','type_code' => 8259} # ok 2 - size = 84 ok 3 - size = 21 1..3 } ok 10 - double [23] { ok 1 - ffi.type(double [23]) # {'element_count' => 23,'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 184,'type' => 'array','type_code' => 8260} # ok 2 - size = 184 ok 3 - size = 23 1..3 } ok 11 - opaque [25] { ok 1 - ffi.type(opaque [25]) # {'element_count' => 25,'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 200,'type' => 'array','type_code' => 8452} # ok 2 - size = 200 ok 3 - size = 25 1..3 } ok 12 - string [27] { 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE ARRAY } ok 13 - longdouble [29] { ok 1 - ffi.type(longdouble [29]) # {'element_count' => 29,'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 464,'type' => 'array','type_code' => 8261} # ok 2 - size = 464 ok 3 - size = 29 1..3 } ok 14 - complex_float [31] { ok 1 - ffi.type(complex_float [31]) # {'element_count' => 31,'element_size' => 8,'element_type' => 'float','ffi_type' => 'complex_float','size' => 248,'type' => 'array','type_code' => 8324} # ok 2 - size = 248 ok 3 - size = 31 1..3 } ok 15 - complex_double [33] { ok 1 - ffi.type(complex_double [33]) # {'element_count' => 33,'element_size' => 16,'element_type' => 'float','ffi_type' => 'complex_double','size' => 528,'type' => 'array','type_code' => 8325} # ok 2 - size = 528 ok 3 - size = 33 1..3 } 1..15 } ok 6 - closure types { ok 1 - (int)->int is a legal closure type # {'element_size' => 8,'ffi_type' => 'pointer','signature' => [[{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19}],{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19}],'size' => 8,'type' => 'closure','type_code' => 1284} # ok 2 - skipped test # skip arrays not currently supported as closure argument types ok 3 - inline closure illegal ok 4 - argument type closure illegal ok 5 - return type closure illegal ok 6 - a more complicated closure # {'element_size' => 8,'ffi_type' => 'pointer','signature' => [[{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19},{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19},{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19},{'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'scalar','type_code' => 17},{'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772},{'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'scalar','type_code' => 260}],{'element_size' => 0,'element_type' => 'void','ffi_type' => 'void','size' => 0,'type' => 'scalar','type_code' => 8}],'size' => 8,'type' => 'closure','type_code' => 1284} # 1..6 } ok 7 - record { # {'ffi_type' => 'pointer','ref' => 0,'size' => 1,'type' => 'record','type_code' => 2308} # # {'ffi_type' => 'pointer','ref' => 0,'size' => 32,'type' => 'record','type_code' => 2308} # ok 1 - sizeof my_record_1 = 1 ok 2 - sizeof my_record_32 = 32 # {'class' => 'My::Record22','ffi_type' => 'pointer','ref' => 1,'size' => 22,'type' => 'record','type_code' => 2308} # # {'class' => 'My::Record44','ffi_type' => 'pointer','ref' => 1,'size' => 44,'type' => 'record','type_code' => 2308} # ok 3 - sizeof my_record_22 = 22 ok 4 - sizeof my_record_44 = 44 1..4 } ok 8 - string { ok 1 - string { ok 1 - sizeof string = 8 ok 2 - access = ro # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 2 - string_rw { ok 1 - sizeof string_rw = 8 ok 2 - access = rw # {'access' => 'rw','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 3 - string_ro { ok 1 - sizeof string_ro = 8 ok 2 - access = ro # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 4 - string rw { ok 1 - sizeof string rw = 8 ok 2 - access = rw # {'access' => 'rw','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 5 - string ro { ok 1 - sizeof string ro = 8 ok 2 - access = ro # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 6 - string (10) { ok 1 - is actually a record type ok 2 - sizeof string (10) = 10 # {'ffi_type' => 'pointer','ref' => 0,'size' => 10,'type' => 'record','type_code' => 2308} # 1..2 } ok 7 - string(10) { ok 1 - is actually a record type ok 2 - sizeof string(10) = 10 # {'ffi_type' => 'pointer','ref' => 0,'size' => 10,'type' => 'record','type_code' => 2308} # 1..2 } 1..7 } ok 9 - private { ok 1 - void { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(void) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = void 1..3 } ok 2 - uint8 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint8) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint8 1..3 } ok 3 - sint8 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint8) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint8 1..3 } ok 4 - uint16 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint16) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint16 1..3 } ok 5 - sint16 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint16) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint16 1..3 } ok 6 - uint32 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint32) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint32 1..3 } ok 7 - sint32 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint32) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint32 1..3 } ok 8 - uint64 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint64) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint64 1..3 } ok 9 - sint64 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint64) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint64 1..3 } ok 10 - float { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(float) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = float 1..3 } ok 11 - double { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(double) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = double 1..3 } ok 12 - longdouble { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(longdouble) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = longdouble 1..3 } ok 13 - opaque { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(opaque) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = pointer 1..3 } ok 14 - pointer { 1..0 # SKIP test requires longdouble support } ok 15 - string { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(string) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = pointer 1..3 } 1..15 } 1..9 } ok 10 - class or instance method { ok 1 - class and instance methods are identical # type: blkcnt_t # type: blksize_t # type: bool # type: char # type: complex_double # type: complex_float # type: dev_t # type: double # type: double complex # type: enum # type: float # type: float complex # type: gid_t # type: ino_t # type: int # type: int16_t # type: int32_t # type: int64_t # type: int8_t # type: intmax_t # type: intptr_t # type: long # type: long double # type: long long # type: longdouble # type: mode_t # type: nlink_t # type: off_t # type: opaque # type: pointer # type: ptrdiff_t # type: senum # type: short # type: signed char # type: signed int # type: signed long # type: signed long long # type: signed short # type: sint16 # type: sint32 # type: sint64 # type: sint8 # type: size_t # type: ssize_t # type: string # type: time_t # type: uchar # type: uid_t # type: uint # type: uint16 # type: uint16_t # type: uint32 # type: uint32_t # type: uint64 # type: uint64_t # type: uint8 # type: uint8_t # type: uintmax_t # type: uintptr_t # type: ulong # type: unsigned char # type: unsigned int # type: unsigned long # type: unsigned long long # type: unsigned short # type: ushort # type: void # type: wchar_t # type: wint_t 1..1 } ok 11 - cast { ok 1 - cast from string to pointer { ok 1 - dynamic ok 2 - static 1..2 } ok 2 - cast from pointer to string { ok 1 - dynamic ok 2 - static 1..2 } ok 3 - cast closure to opaque { ok 1 - dynamic ok 2 - dynamic ok 3 - static ok 4 - static 1..4 } ok 4 - attach cast with wrapper { ok 1 ok 2 1..2 } 1..4 } ok 12 - ignore_not_found { ok 1 - ignore_not_found=undef { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 634. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 638. 1..4 } ok 2 - ignore_not_found=0 { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 653. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 657. 1..4 } ok 3 - ignore_not_found=0 (constructor) { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 670. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 674. 1..4 } ok 4 - ignore_not_found=1 { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function no exception ok 4 - f2 is undefined ok 5 - attach no exception 1..5 } ok 5 - ignore_not_found=1 (constructor) { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function no exception ok 4 - f2 is undefined ok 5 - attach no exception 1..5 } ok 6 - ignore_not_found bool context { ok 1 - f1 exists and resolved to boolean true ok 2 - f2 does not exist and resolved to boolean false 1..2 } 1..6 } ok 13 - attach basic { ok 1 - f0(22) = 22 ok 2 - f1(22) = 22 ok 3 - Roger::f1(22) = 22 ok 4 - f0_wrap(22) = 25 ok 5 - f0_wrap(22) = 25 1..5 } ok 14 - attach void { ok 1 - $i_ptr = 43 after f2(\$i_ptr) ok 2 - $i_ptr = 44 after f2_implicit(\$i_ptr) 1..2 } ok 15 - customer mangler { ok 1 1..1 } ok 16 - ->package is only allowed for api = 0 { ok 1 - api = 0 { ok 1 1..1 } ok 2 - api = 1 { ok 1 1..1 } 1..2 } ok 17 - warning defaults { ok 1 - api = 0 { ok 1 ok 2 1..2 } ok 2 - api = 1 { # [warning] # warning: error loading corpus/bogus.so: corpus/bogus.so: cannot open shared object file: No such file or directory at /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/FFI/Platypus.pm line 508. ok 1 ok 2 1..2 } 1..2 } ok 18 - language plugin api version { ok 1 - api = 0 { ok 1 1..1 } ok 2 - api = 1 { ok 1 1..1 } 1..2 } ok 19 - language load_custom_types hook { ok 1 ok 2 - FFI::Platypus=HASH->isa('FFI::Platypus') 1..2 } ok 20 - api attribute { ok 1 - default is zero ok 2 - explicit zero ok 3 - explicit one 1..3 } ok 21 - kindof { ok 1 - void ok 2 - scalar ok 3 - pointer ok 4 - array (fixed) ok 5 - array (var) ok 6 - string 1..6 } ok 22 - countof { ok 1 - void ok 2 - scalar ok 3 - pointer ok 4 - array (fixed) ok 5 - array (var) ok 6 - string 1..6 } ok 23 - def { ok 1 - needs to be a real type { ok 1 1..1 } ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 1..10 } ok 24 - unitof { ok 1 - void ok 2 - scalar ok 3 - pointer ok 4 - array (fixed) ok 5 - array (var) ok 6 - string 1..6 } ok 25 - pass undef into closure method should just return undef { ok 1 - no error ok 2 - returns undef 1..2 } 1..25 ok t/ffi_platypus_api.t ..................... ok 1 - basic { ok 1 1..1 } 1..1 ok t/ffi_platypus_buffer.t .................. ok 1 - simple { ok 1 - ptr = 94893479131952 ok 2 - scalar to pointer matches ok 3 - size = 16 ok 4 - scalar = me grimlock king 1..4 } ok 2 - unicode { ok 1 - ptr = 94893479176352 ok 2 - size = 12 ok 3 - scalar = привет 1..3 } ok 3 - grow { ok 1 - B::PV returns consistent string length ok 2 - initial buffer size is smaler than required ok 3 - default options { ok 1 - buffer grew as expected ok 2 - original contents cleared ok 3 - string length == requested buffer length 1..3 } ok 4 - clear { ok 1 - on { ok 1 - buffer grew as expected ok 2 - buffer contents cleared 1..2 } ok 2 - off { ok 1 - buffer grew as expected ok 2 - buffer contents not cleared 1..2 } 1..2 } ok 5 - set_length { ok 1 - on { ok 1 - buffer grew as expected ok 2 - buffer length set 1..2 } ok 2 - off { ok 1 - buffer grew as expected ok 2 - buffer length not cleared 1..2 } 1..2 } ok 6 - bad option { ok 1 - croaked 1..1 } ok 7 - fail on reference { ok 1 - croaked 1..1 } ok 8 - $str = undef { ok 1 - buffer grew as expected 1..1 } ok 9 - undef { ok 1 - croaked 1..1 } 1..9 } ok 4 - set_used_length { ok 1 - length < max { ok 1 - requested length ok 2 - requested string 1..2 } ok 2 - length == max { ok 1 - requested length 1..1 } ok 3 - length > max { ok 1 - maxed out length 1..1 } ok 4 - fail on reference { ok 1 - croaked 1..1 } ok 5 - $str = undef { # TODO is set_used_length undef behavior correct? not ok 1 - no added length # # Failed test (with amnesty) 'no added length' # at t/ffi_platypus_buffer.t line 155. # +-----+----+-------+ # | GOT | OP | CHECK | # +-----+----+-------+ # | 16 | eq | 0 | # +-----+----+-------+ ok 2 - maxed out length # 1..2 } ok 6 - undef { ok 1 - croaked 1..1 } 1..6 } ok 5 - hardwire { ok 1 - ascii { ok 1 ok 2 ok 3 ok 4 ok 5 1..5 } ok 2 - unicode { ok 1 ok 2 ok 3 ok 4 ok 5 1..5 } ok 3 - strlen { ok 1 ok 2 ok 3 1..3 } 1..3 } 1..5 ok t/ffi_platypus_bundle.t .................. ok 1 - from installed { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/L18AcSD9FR/lib/Foo/Bar1.pm] # package Foo::Bar1; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # $ffi->attach("bar1" => [] => 'sint32'); # 1; # spew(end) # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_cLpREL.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_cLpREL.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_cLpREL.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/L18AcSD9FR/lib/auto/share/dist/Foo-Bar1/libbar1.so # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/L18AcSD9FR/lib/auto/Foo/Bar1/Bar1.txt] # FFI::Build@auto/share/dist/Foo-Bar1/libbar1.so # spew(end) ok 1 ok 2 ok 3 ok 4 1..4 } ok 2 - from blib { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/4WeehX3sUq/lib/Foo/Bar2.pm] # package Foo::Bar2; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # $ffi->attach("bar2" => [] => 'sint32'); # 1; # spew(end) # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_U4eWLk.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_U4eWLk.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_U4eWLk.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/4WeehX3sUq/lib/auto/share/dist/Foo-Bar2/libbar2.so # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/4WeehX3sUq/arch/auto/Foo/Bar2/Bar2.txt] # FFI::Build@auto/share/dist/Foo-Bar2/libbar2.so # spew(end) ok 1 ok 2 1..2 } ok 3 - not loaded yet { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/BSJACpA2VS/lib/Foo/Bar3.pm] # package Foo::Bar3; # die; # 1; # spew(end) # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_fNgjXH.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fNgjXH.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fNgjXH.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/BSJACpA2VS/lib/auto/share/dist/Foo-Bar3/libbar3.so # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/BSJACpA2VS/lib/auto/Foo/Bar3/Bar3.txt] # FFI::Build@auto/share/dist/Foo-Bar3/libbar3.so # spew(end) ok 1 1..1 } ok 4 - with a ffi dir { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/r83yJJkm8t/lib/Foo/Bar4.pm] # package Foo::Bar4; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # $ffi->attach("bar4" => [] => 'sint32'); # 1; # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/r83yJJkm8t/ffi/foo.c] # int bar4(void) { return 45; } # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/r83yJJkm8t/ffi/foo.fbx] # use strict; # use warnings; # our $DIR; # { export => ['bar4'], source => ["$DIR/*.c"] }; # spew(end) ok 1 ok 2 1..2 } ok 5 - entry points { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/pwX7Gw7kh0/lib/Foo/Bar5.pm] # package Foo::Bar5; # use strict; # use warnings; # use FFI::Platypus; # our $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle([$ffi->cast('(string)->void' => 'opaque', $main::log_closure)]); # 1; # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/pwX7Gw7kh0/ffi/foo.c] # #include # #include # # typedef void (*log_t)(const char *); # log_t logit; # char buffer[1024]; # # void # ffi_pl_bundle_init(const char *package, int c, void **args) # { # int i; # logit = (log_t) args[0]; # logit("ffi_pl_bundle_init (enter)"); # sprintf(buffer, "package = %s", package); # logit(buffer); # sprintf(buffer, "c = %d", c); # logit(buffer); # for(i=0; args[i] != NULL; i++) # { # sprintf(buffer, "args[%d] = %d", i, args[i]); # logit(buffer); # } # logit("ffi_pl_bundle_init (leave)"); # } # # void # ffi_pl_bundle_fini(const char *package) # { # logit("ffi_pl_bundle_fini (enter)"); # sprintf(buffer, "package = %s", package); # logit(buffer); # logit("ffi_pl_bundle_fini (leave)"); # } # # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/pwX7Gw7kh0/ffi/foo.fbx] # use strict; # use warnings; # our $DIR; # { export => ['ffi_pl_bundle_init','ffi_pl_bundle_fini'], source => ["$DIR/*.c"] }; # spew(end) ok 1 # log:ffi_pl_bundle_init (enter) # log:package = Foo::Bar5 # log:c = 1 # log:args[0] = 1042026512 # log:ffi_pl_bundle_init (leave) ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # log:ffi_pl_bundle_fini (enter) # log:package = Foo::Bar5 # log:ffi_pl_bundle_fini (leave) ok 9 1..9 } 1..5 ok t/ffi_platypus_closure.t ................. ok 1 - basic { ok 1 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 2 - closure.(1) = 2 ok 3 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 4 - closure.(1) = 3 ok 5 - closure.call(1) = 3 ok 6 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 7 - closure.(1) = 3 ok 8 - closure.call(1) = 3 1..8 } ok 2 - sticky { ok 1 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') # _svrefcnt = 1 ok 2 - called $closure->sticky ok 3 ok 4 - called $closure->sticky ok 5 ok 6 - called $closure->unstick ok 7 1..7 } ok 3 - private { ok 1 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 2 - closure.(1) = 2 1..2 } ok 4 - space { ok 1 - good without space ok 2 - good with space 1..2 } ok 5 - die { ok 1 ok 2 - does not exit # warning = 'omg i don't want to die! at t/ffi_platypus_closure.t line 70. # ' 1..2 } ok 6 - reuse { ok 1 ok 2 1..2 } ok 7 - immediate { ok 1 1..1 } ok 8 - closure passing into a closure { ok 1 # error = Only native types and strings are supported as closure argument types (1284) at /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/FFI/Platypus/TypeParser/Version0.pm line 68. ok 2 # error = Only native types are supported as closure return types (1284) at /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/FFI/Platypus/TypeParser/Version0.pm line 68. 1..2 } 1..8 ok t/ffi_platypus_constant.t ................ ok 1 - very very basic... { ok 1 - FFI::Platypus::Constant=HASH->isa('FFI::Platypus::Constant') ok 2 1..2 } ok 2 - create constants { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/KcZKsMeGu1/lib/Foo/Bar1.pm] # package Foo::Bar1; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # 1; # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/KcZKsMeGu1/ffi/bar1.c] # #include # void ffi_pl_bundle_constant(const char *package, ffi_platypus_constant_t *b) # { # b->set_str("FOO1", "VAL1"); # b->set_str("Foo::Bar1::Baz::FOO2", "VAL2"); # b->set_sint("FOO3", -42); # b->set_uint("FOO4", 512); # b->set_double("FOO5", 2.5); # b->set_str("FOO6", package); # } # spew(end) ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 1..7 } 1..2 ok t/ffi_platypus_dl.t ...................... ok 1 - flags { ok 1 - RTLD_PLATYPUS_DEFAULT is defined # RTLD_LOCAL 0000 0 # RTLD_LAZY 0001 1 # RTLD_PLATYPUS_DEFAULT 0001 1 # RTLD_NOW 0002 2 # RTLD_NOLOAD 0004 4 # RTLD_DEEPBIND 0008 8 # RTLD_GLOBAL 0100 256 # RTLD_NODELETE 1000 4096 1..1 } ok 2 - dlopen { ok 1 - bad library { ok 1 - Returns undef on fail # dlerror = t/ffi/libbogus.so: cannot open shared object file: No such file or directory 1..1 } ok 2 - good library { ok 1 - Returns handle on good # h = 94723883937744 1..1 } 1..2 } ok 3 - dlsym { ok 1 - good symbol { ok 1 - returns an address # address = 139688871879536 1..1 } ok 2 - bad symbol { ok 1 - bad symbol returns undef # dlerror = t/ffi/libtest.so: undefined symbol: bogus 1..1 } 1..2 } 1..3 ok t/ffi_platypus_function.t ................ ok 1 - built in type { ok 1 - ffi.function(f0, [uint8] => uint8) ok 2 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function::Function') ok 4 - function.call(22) = 22 ok 5 - function.(22) = 22 1..5 } ok 2 - custom type { ok 1 - ffi.function(f0, [my_int_8] => my_int_8) ok 2 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function::Function') ok 4 - function.call(22) = 22 ok 5 - function.(22) = 22 1..5 } ok 3 - private { ok 1 - FFI::Platypus::Function->new ok 2 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function::Function') ok 4 - function.call(22) = 22 ok 5 - fooble(22) = 22 1..5 } ok 4 - meta { ok 1 - unattached { ok 1 ok 2 1..2 } ok 2 - attached { ok 1 ok 2 1..2 } 1..2 } ok 5 - sub_ref { ok 1 - calls okay ok 2 - it is a code reference 1..2 } ok 6 - prototype { ok 1 - one { ok 1 ok 2 1..2 } ok 2 - two { ok 1 ok 2 1..2 } 1..2 } ok 7 - variadic { ok 1 - unattached { ok 1 - sans wrapper ok 2 - with wrapper ok 3 - sans wrapper ok 4 - with wrapper ok 5 - sans wrapper ok 6 - with wrapper ok 7 - sans wrapper ok 8 - with wrapper ok 9 - sans wrapper ok 10 - with wrapper ok 11 - sans wrapper ok 12 - with wrapper ok 13 - sans wrapper ok 14 - with wrapper 1..14 } ok 2 - attached { ok 1 - sans wrapper ok 2 - with wrapper ok 3 - sans wrapper ok 4 - with wrapper ok 5 - sans wrapper ok 6 - with wrapper ok 7 - sans wrapper ok 8 - with wrapper ok 9 - sans wrapper ok 10 - with wrapper ok 11 - sans wrapper ok 12 - with wrapper ok 13 - sans wrapper ok 14 - with wrapper 1..14 } ok 3 - examples { ok 1 ok 2 ok 3 1..3 } 1..3 } ok 8 - void as arg should fail is arg count > 1 { ok 1 1..1 } ok 9 - single void arg treated as no args { ok 1 1..1 } 1..9 ok t/ffi_platypus_function_wrapper.t ........ ok 1 - built in type { ok 1 - ffi.function(f0, [uint8] => uint8) ok 2 - FFI::Platypus::Function::Wrapper=ARRAY->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Wrapper=ARRAY->isa('FFI::Platypus::Function::Wrapper') ok 4 - function.call(22) = 44 ok 5 - function.(22) = 44 ok 6 - baboon(11) = 22 1..6 } ok 2 - sub_ref { ok 1 - calls okay ok 2 - it is a code reference 1..2 } ok 3 - prototype { ok 1 - one { ok 1 ok 2 1..2 } ok 2 - two { ok 1 ok 2 1..2 } 1..2 } 1..3 ok t/ffi_platypus_internal.t ................ ok 1 - basic { # alpha order: ok 1 - FFI_PL_BASE_CLOSURE 0x0400 ok 2 - FFI_PL_BASE_COMPLEX 0x0080 ok 3 - FFI_PL_BASE_FLOAT 0x0040 ok 4 - FFI_PL_BASE_MASK 0x0ff8 ok 5 - FFI_PL_BASE_OPAQUE 0x0100 ok 6 - FFI_PL_BASE_RECORD 0x0800 ok 7 - FFI_PL_BASE_SINT 0x0010 ok 8 - FFI_PL_BASE_STRING 0x0200 ok 9 - FFI_PL_BASE_UINT 0x0020 ok 10 - FFI_PL_BASE_VOID 0x0008 ok 11 - FFI_PL_SHAPE_ARRAY 0x2000 ok 12 - FFI_PL_SHAPE_CUSTOM_MASK 0xf000 ok 13 - FFI_PL_SHAPE_CUSTOM_PERL 0x3000 ok 14 - FFI_PL_SHAPE_OBJECT 0x4000 ok 15 - FFI_PL_SHAPE_POINTER 0x1000 ok 16 - FFI_PL_SHAPE_SCALAR 0x0000 ok 17 - FFI_PL_SIZE_0 0x0000 ok 18 - FFI_PL_SIZE_128 0x0005 ok 19 - FFI_PL_SIZE_16 0x0002 ok 20 - FFI_PL_SIZE_256 0x0006 ok 21 - FFI_PL_SIZE_32 0x0003 ok 22 - FFI_PL_SIZE_512 0x0007 ok 23 - FFI_PL_SIZE_64 0x0004 ok 24 - FFI_PL_SIZE_8 0x0001 ok 25 - FFI_PL_SIZE_MASK 0x0007 ok 26 - FFI_PL_SIZE_PTR 0x0004 ok 27 - FFI_PL_TYPE_CLOSURE 0x0504 ok 28 - FFI_PL_TYPE_COMPLEX_DOUBLE 0x0085 ok 29 - FFI_PL_TYPE_COMPLEX_FLOAT 0x0084 ok 30 - FFI_PL_TYPE_DOUBLE 0x0044 ok 31 - FFI_PL_TYPE_FLOAT 0x0043 ok 32 - FFI_PL_TYPE_LONG_DOUBLE 0x0045 ok 33 - FFI_PL_TYPE_OPAQUE 0x0104 ok 34 - FFI_PL_TYPE_RECORD 0x0904 ok 35 - FFI_PL_TYPE_RECORD_VALUE 0x0800 ok 36 - FFI_PL_TYPE_SINT16 0x0012 ok 37 - FFI_PL_TYPE_SINT32 0x0013 ok 38 - FFI_PL_TYPE_SINT64 0x0014 ok 39 - FFI_PL_TYPE_SINT8 0x0011 ok 40 - FFI_PL_TYPE_STRING 0x0304 ok 41 - FFI_PL_TYPE_UINT16 0x0022 ok 42 - FFI_PL_TYPE_UINT32 0x0023 ok 43 - FFI_PL_TYPE_UINT64 0x0024 ok 44 - FFI_PL_TYPE_UINT8 0x0021 ok 45 - FFI_PL_TYPE_VOID 0x0008 # value order: ok 46 - FFI_PL_SIZE_0 0x0000 ok 47 - FFI_PL_SHAPE_SCALAR 0x0000 ok 48 - FFI_PL_SIZE_8 0x0001 ok 49 - FFI_PL_SIZE_16 0x0002 ok 50 - FFI_PL_SIZE_32 0x0003 ok 51 - FFI_PL_SIZE_64 0x0004 ok 52 - FFI_PL_SIZE_PTR 0x0004 ok 53 - FFI_PL_SIZE_128 0x0005 ok 54 - FFI_PL_SIZE_256 0x0006 ok 55 - FFI_PL_SIZE_512 0x0007 ok 56 - FFI_PL_SIZE_MASK 0x0007 ok 57 - FFI_PL_BASE_VOID 0x0008 ok 58 - FFI_PL_TYPE_VOID 0x0008 ok 59 - FFI_PL_BASE_SINT 0x0010 ok 60 - FFI_PL_TYPE_SINT8 0x0011 ok 61 - FFI_PL_TYPE_SINT16 0x0012 ok 62 - FFI_PL_TYPE_SINT32 0x0013 ok 63 - FFI_PL_TYPE_SINT64 0x0014 ok 64 - FFI_PL_BASE_UINT 0x0020 ok 65 - FFI_PL_TYPE_UINT8 0x0021 ok 66 - FFI_PL_TYPE_UINT16 0x0022 ok 67 - FFI_PL_TYPE_UINT32 0x0023 ok 68 - FFI_PL_TYPE_UINT64 0x0024 ok 69 - FFI_PL_BASE_FLOAT 0x0040 ok 70 - FFI_PL_TYPE_FLOAT 0x0043 ok 71 - FFI_PL_TYPE_DOUBLE 0x0044 ok 72 - FFI_PL_TYPE_LONG_DOUBLE 0x0045 ok 73 - FFI_PL_BASE_COMPLEX 0x0080 ok 74 - FFI_PL_TYPE_COMPLEX_FLOAT 0x0084 ok 75 - FFI_PL_TYPE_COMPLEX_DOUBLE 0x0085 ok 76 - FFI_PL_BASE_OPAQUE 0x0100 ok 77 - FFI_PL_TYPE_OPAQUE 0x0104 ok 78 - FFI_PL_BASE_STRING 0x0200 ok 79 - FFI_PL_TYPE_STRING 0x0304 ok 80 - FFI_PL_BASE_CLOSURE 0x0400 ok 81 - FFI_PL_TYPE_CLOSURE 0x0504 ok 82 - FFI_PL_TYPE_RECORD_VALUE 0x0800 ok 83 - FFI_PL_BASE_RECORD 0x0800 ok 84 - FFI_PL_TYPE_RECORD 0x0904 ok 85 - FFI_PL_BASE_MASK 0x0ff8 ok 86 - FFI_PL_SHAPE_POINTER 0x1000 ok 87 - FFI_PL_SHAPE_ARRAY 0x2000 ok 88 - FFI_PL_SHAPE_CUSTOM_PERL 0x3000 ok 89 - FFI_PL_SHAPE_OBJECT 0x4000 ok 90 - FFI_PL_SHAPE_CUSTOM_MASK 0xf000 1..90 } 1..1 ok t/ffi_platypus_lang.t .................... ok 1 - Foo constructor { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang.t line 12. ok 2 - foo_t is an okay type ok 3 - sint16 is an okay type ok 4 - sizeof foo_t = 2 ok 5 - sizeof foo_t = 4 ok 6 1..6 } ok 2 - Foo attribute { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang.t line 31. ok 2 - foo_t is an okay type ok 3 - sint16 is an okay type ok 4 - sizeof foo_t = 2 ok 5 - sizeof foo_t = 4 ok 6 1..6 } ok 3 - MyLang::Roger { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang.t line 49. ok 2 - sizeof foo_t = 4 1..2 } 1..3 ok t/ffi_platypus_lang_asm.t ................ ok 1 - ASM { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang_asm.t line 11. ok 2 - foo_t is not an okay type # unknown ffi/platypus type foo_t at t/ffi_platypus_lang_asm.t line 14. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 } 1..1 ok t/ffi_platypus_lang_c.t .................. ok 1 - C { ok 1 - int is an okay type ok 2 - foo_t is not an okay type # unknown ffi/platypus type foo_t at t/ffi_platypus_lang_c.t line 13. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 } 1..1 ok t/ffi_platypus_lang_win32.t .............. # encoding = UTF-32LE # width = 4 ok 1 - native type map diagnostic { # BOOL sint32 # BOOLEAN uint8 # BYTE uint8 # CCHAR sint8 # CHAR sint8 # COLORREF uint32 # DWORD uint32 # DWORD32 uint32 # DWORD64 uint64 # DWORDLONG uint64 # DWORD_PTR uint16 # FLOAT float # HACCEL opaque # HALF_PTR sint16 # HANDLE opaque # HBITMAP opaque # HBRUSH opaque # HCOLORSPACE opaque # HCONV opaque # HCONVLIST opaque # HCURSOR opaque # HDC opaque # HDDEDATA opaque # HDESK opaque # HDROP opaque # HDWP opaque # HENHMETAFILE opaque # HFILE sint32 # HFONT opaque # HGDIOBJ opaque # HGLOBAL opaque # HHOOK opaque # HICON opaque # HINSTANCE opaque # HKEY opaque # HKL opaque # HLOCAL opaque # HMENU opaque # HMETAFILE opaque # HMODULE opaque # HMONITOR opaque # HPALETTE opaque # HPEN opaque # HRESULT sint32 # HRGN opaque # HRSRC opaque # HSZ opaque # HWINSTA opaque # HWND opaque # INT sint32 # INT16 sint16 # INT32 sint32 # INT64 sint64 # INT8 sint8 # INT_PTR sint32 # LANGID uint16 # LCID uint32 # LCTYPE uint32 # LGRPID uint32 # LONG sint32 # LONG32 sint32 # LONG64 sint64 # LONGLONG sint64 # LONG_PTR sint16 # LPCSTR string # LPCVOID opaque # LPVOID opaque # LRESULT sint16 # PSTR string # PVOID opaque # QWORD uint64 # SC_HANDLE opaque # SC_LOCK opaque # SERVICE_STATUS_HANDLE opaque # SHORT sint16 # SIZE_T uint16 # SSIZE_T sint16 # UCHAR uint8 # UHALF_PTR uint16 # UINT uint32 # UINT16 uint16 # UINT32 uint32 # UINT64 uint64 # UINT8 uint8 # UINT_PTR uint32 # ULONG uint32 # ULONG32 uint32 # ULONG64 uint64 # ULONGLONG uint64 # ULONG_PTR uint16 # USHORT uint16 # USN sint64 # VOID void # WORD uint16 # WPARAM uint32 # blkcnt_t sint64 # blksize_t sint64 # bool uint8 # char sint8 # dev_t uint64 # double double # double complex complex_double # enum uint32 # float float # float complex complex_float # gid_t uint32 # ino_t uint64 # int sint32 # int16_t sint16 # int32_t sint32 # int64_t sint64 # int8_t sint8 # intmax_t sint64 # intptr_t sint64 # long sint64 # long double longdouble # long double complex complex_longdouble # long long sint64 # mode_t uint32 # nlink_t uint64 # off_t sint64 # ptrdiff_t sint64 # senum sint32 # short sint16 # signed char sint8 # signed int sint32 # signed long sint64 # signed long long sint64 # signed short sint16 # size_t uint64 # ssize_t sint64 # time_t sint64 # uchar uint8 # uid_t uint32 # uint uint32 # uint16_t uint16 # uint32_t uint32 # uint64_t uint64 # uint8_t uint8 # uintmax_t uint64 # uintptr_t uint64 # ulong uint64 # unsigned char uint8 # unsigned int uint32 # unsigned long uint64 # unsigned long long uint64 # unsigned short uint16 # ushort uint16 # wchar_t sint32 # wint_t uint32 ok 1 - good 1..1 } ok 2 - load { ok 1 1..1 } ok 3 - LPCWSTR { 1..0 # SKIP Test only works on Windows } ok 4 - LPWSTR { 1..0 # SKIP Test only works on Windows } 1..4 ok t/ffi_platypus_legacy.t .................. ok 1 - only load as needed { ok 1 ok 2 1..2 } 1..1 ok t/ffi_platypus_memory.t .................. # lib=undef # lib=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/lib/libplfill.so ok 1 - malloc calloc memset free { ok 1 - malloc returns 94547154123552 ok 2 - calloc returns 94547153775408 ok 3 - string = yyyyxxxx ok 4 - free $ptr1 ok 5 - free $ptr2 1..5 } ok 2 - memcpy { ok 1 - initial data copied ok 2 - copy of copy ok 3 - memcpy returns a pointer ok 4 - free $ptr1 ok 5 - free $ptr2 1..5 } ok 3 - realloc { ok 1 - realloc call ptr = 94547154254752 ok 2 - initial data copied ok 3 - realloc call ptr = 94547154254896 (2) ok 4 - after realloc data there ok 5 - final free 1..5 } ok 4 - strdup { # strdup implementation = libc ok 1 - string = this and ok 2 - free $ptr1 1..2 } ok 5 - strndup { # strndup implementation = libc ok 1 - full string { ok 1 1..1 } ok 2 - partial string { ok 1 1..1 } 1..2 } ok 6 - strcpy { ok 1 - pointer cast back to string matches 1..1 } 1..6 ok t/ffi_platypus_record.t .................. ok 1 - integer accessor { ok 1 - Foo1=SCALAR->isa('Foo1') ok 2 - foo._record_size = 8 ok 3 - foo.first = 1 ok 4 - foo.second = 2 ok 5 - foo.first = 22 ok 6 - foo.second = 42 ok 7 - foo.first = 3 ok 8 - foo.second = 4 # {'class' => 'Foo1','ffi_type' => 'pointer','ref' => 1,'size' => 8,'type' => 'record','type_code' => 2308} # {'ffi_type' => 'pointer','ref' => 0,'size' => 8,'type' => 'record','type_code' => 2308} 1..8 } ok 2 - values match in C { ok 1 - Color=SCALAR->isa('Color') ok 2 - color.get_red = 50 ok 3 - color.get_green = 100 ok 4 - color.get_blue = 150 1..4 } ok 3 - complex alignment { ok 1 - Foo2=SCALAR->isa('Foo2') ok 2 - uint64 = 512 ok 3 - sint64 = -512 ok 4 - uint32 = 1024 ok 5 - sint32 = -1024 ok 6 - uint16 = 2048 ok 7 - sint16 = -2048 ok 8 - uint8 = 48 ok 9 - sint8 = -48 ok 10 - float = 1.5 ok 11 - double = -1.5 ok 12 - get_opaque = 94533076321200 ok 13 - opaque = 94533076321200 ok 14 - get_opaque = undef ok 15 - opaque = undef 1..15 } ok 4 - same name { ok 1 - two members of the same name not allowed # accessor/method foo already exists at t/ffi_platypus_record.t line 186. 1..1 } ok 5 - array alignment { ok 1 - Foo4=SCALAR->isa('Foo4') ok 2 - unsigned 8 integer { ok 1 - uint8 = 1,2,3 ok 2 - get_uint8 = 1,2,3 ok 3 - uint8(1) = 2 ok 4 - uint8 = 1,20,3 1..4 } ok 3 - signed 8 integer { ok 1 - sint8 = -1,2,-3 ok 2 - get_sint8 = -1,2,-3 ok 3 - sint8(2) = -3 ok 4 - sint8 = -1,-20,-3 1..4 } ok 4 - unsigned 16 integer { ok 1 - uint16 = 1,2,3 ok 2 - get_uint16 = 1,2,3 ok 3 - uint16(1) = 2 ok 4 - uint16 = 1,20,3 1..4 } ok 5 - signed 16 integer { ok 1 - sint16 = -1,2,-3 ok 2 - get_sint16 = -1,2,-3 ok 3 - sint16(2) = -3 ok 4 - sint16 = -1,-20,-3 1..4 } ok 6 - unsigned 32 integer { ok 1 - uint32 = 1,2,3 ok 2 - get_uint32 = 1,2,3 ok 3 - uint32(1) = 2 ok 4 - uint32 = 1,20,3 1..4 } ok 7 - signed 32 integer { ok 1 - sint32 = -1,2,-3 ok 2 - get_sint32 = -1,2,-3 ok 3 - sint32(2) = -3 ok 4 - sint32 = -1,-20,-3 1..4 } ok 8 - unsigned 64 integer { ok 1 - uint64 = 1,2,3 ok 2 - get_uint64 = 1,2,3 ok 3 - uint64(1) = 2 ok 4 - uint64 = 1,20,3 1..4 } ok 9 - signed 64 integer { ok 1 - sint64 = -1,2,-3 ok 2 - get_sint64 = -1,2,-3 ok 3 - sint64(2) = -3 ok 4 - sint64 = -1,-20,-3 1..4 } ok 10 - float { ok 1 - float = 1.5,0,-1.5 ok 2 ok 3 ok 4 ok 5 - float = 1.5,20,-1.5 1..5 } ok 11 - double { ok 1 - double = 1.5,0,-1.5 ok 2 ok 3 ok 4 ok 5 - double = 1.5,20,-1.5 1..5 } ok 12 - opaque { ok 1 - opaque = 94533076485600,undef,94533076507504 ok 2 - opaque = 94533076485600,94533076485600,94533076507504 ok 3 - opaque = undef,94533076485600,94533076507504 ok 4 ok 5 ok 6 1..6 } ok 13 - align = 8 ok 14 - align is positive 1..14 } ok 6 - string ro { ok 1 - Foo5=SCALAR->isa('Foo5') ok 2 - foo.value = undef ok 3 - foo.get_value = undef ok 4 - foo.value = my value ok 5 - foo.get_value = my value ok 6 - value is ro # member is read only at t/ffi_platypus_record.t line 340. ok 7 - foo.value = undef ok 8 - foo.get_value = undef 1..8 } ok 7 - fixed string { ok 1 - Foo6=SCALAR->isa('Foo6') ok 2 - foo.value = "\0\0\0\0\0\0\0\0\0\0" ok 3 - foo.get_value = "" ok 4 - foo.value = "one two th" ok 5 - foo.value = 123456789\0 ok 6 - foo.get_value = 123456789 1..6 } ok 8 - string rw { ok 1 - Foo7=SCALAR->isa('Foo7') ok 2 - foo.value = hi there ok 3 - foo.get_value = hi there ok 4 - foo.value = undef ok 5 - foo.get_value = undef ok 6 - foo.value = starscream!!! ok 7 - foo.get_value = starscream!!! 1..7 } ok 9 - record with custom ffi { ok 1 - Foo8=SCALAR->isa('Foo8') ok 2 1..2 } ok 10 - record with ffi args { ok 1 - Foo8=SCALAR->isa('Foo8') ok 2 1..2 } ok 11 - api_1 { ok 1 - no $ffi or args { ok 1 ok 2 1..2 } ok 2 - args { ok 1 ok 2 1..2 } ok 3 - $ffi { ok 1 ok 2 1..2 } 1..3 } 1..11 ok t/ffi_platypus_record_meta.t ............. ok 1 - basic { ok 1 - FFI::Platypus::Record::Meta=SCALAR->isa('FFI::Platypus::Record::Meta') ok 2 - meta->ffi_type = 94739977708896 ok 3 - meta->size ok 4 - meta->alignment ok 5 - meta->element_pointers 1..5 } ok 2 - bogus types { ok 1 ok 2 1..2 } 1..2 ok t/ffi_platypus_record_tiearray.t ......... ok 1 - Foo=SCALAR->isa('Foo') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 ok 33 ok 34 ok 35 ok 36 ok 37 ok 38 ok 39 ok 40 ok 41 ok 42 ok 43 ok 44 ok 45 1..45 ok t/ffi_platypus_shareconfig.t ............. # { # 'abi' => { # 'default_abi' => '2', # 'efi64' => '3', # 'gnuw64' => '4', # 'unix64' => '2', # 'win64' => '3' # }, # 'align' => { # 'double' => '8', # 'double complex' => '8', # 'float' => '4', # 'float complex' => '4', # 'long double' => '16', # 'long double complex' => '16', # 'pointer' => '8', # 'sint16' => '2', # 'sint32' => '4', # 'sint64' => '8', # 'sint8' => '1', # 'uint16' => '2', # 'uint32' => '4', # 'uint64' => '8', # 'uint8' => '1' # }, # 'config_dlext' => [ # 'so' # ], # 'probe' => { # 'abi' => 1, # 'alloca' => 1, # 'bigendian' => 0, # 'bigendian64' => 0, # 'complex' => 1, # 'longdouble' => 1, # 'recordvalue' => 1, # 'strnlen' => 1, # 'variadic' => 1 # }, # 'test-key' => 'test-value', # 'type_map' => { # 'blkcnt_t' => 'sint64', # 'blksize_t' => 'sint64', # 'bool' => 'uint8', # 'char' => 'sint8', # 'dev_t' => 'uint64', # 'double' => 'double', # 'double complex' => 'complex_double', # 'enum' => 'uint32', # 'float' => 'float', # 'float complex' => 'complex_float', # 'gid_t' => 'uint32', # 'ino_t' => 'uint64', # 'int' => 'sint32', # 'int16_t' => 'sint16', # 'int32_t' => 'sint32', # 'int64_t' => 'sint64', # 'int8_t' => 'sint8', # 'intmax_t' => 'sint64', # 'intptr_t' => 'sint64', # 'long' => 'sint64', # 'long double' => 'longdouble', # 'long double complex' => 'complex_longdouble', # 'long long' => 'sint64', # 'mode_t' => 'uint32', # 'nlink_t' => 'uint64', # 'off_t' => 'sint64', # 'ptrdiff_t' => 'sint64', # 'senum' => 'sint32', # 'short' => 'sint16', # 'signed char' => 'sint8', # 'signed int' => 'sint32', # 'signed long' => 'sint64', # 'signed long long' => 'sint64', # 'signed short' => 'sint16', # 'size_t' => 'uint64', # 'ssize_t' => 'sint64', # 'time_t' => 'sint64', # 'uchar' => 'uint8', # 'uid_t' => 'uint32', # 'uint' => 'uint32', # 'uint16_t' => 'uint16', # 'uint32_t' => 'uint32', # 'uint64_t' => 'uint64', # 'uint8_t' => 'uint8', # 'uintmax_t' => 'uint64', # 'uintptr_t' => 'uint64', # 'ulong' => 'uint64', # 'unsigned char' => 'uint8', # 'unsigned int' => 'uint32', # 'unsigned long' => 'uint64', # 'unsigned long long' => 'uint64', # 'unsigned short' => 'uint16', # 'ushort' => 'uint16', # 'wchar_t' => 'sint32', # 'wint_t' => 'uint32' # } # } # ok 1 ok 2 1..2 ok t/ffi_platypus_type.t .................... ok 1 - basic type { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 1, # 'type' => 'scalar', # 'type_code' => 17 # }; 1..8 } ok 2 - fixed string / record (pass by reference) { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'ffi_type' => 'pointer', # 'ref' => 0, # 'size' => 22, # 'type' => 'record', # 'type_code' => 2308 # }; ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 # $VAR1 = { # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'ffi_type' => 'pointer', # 'ref' => 0, # 'size' => 22, # 'sub_type' => 'record', # 'type' => 'custom_perl', # 'type_code' => 14596 # }; 1..16 } ok 3 - record { ok 1 - record class value (pass by value) { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 # $VAR1 = { # 'class' => 'Foo::Bar', # 'ffi_type' => 'struct', # 'ref' => 1, # 'size' => 4, # 'type' => 'record_value', # 'type_code' => 2048 # }; ok 11 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 # $VAR1 = { # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'ffi_type' => 'struct', # 'size' => 4, # 'type' => 'custom_perl', # 'type_code' => 14336 # }; 1..18 } ok 2 - record class (pass by reference) { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'class' => 'Foo::Bar', # 'ffi_type' => 'pointer', # 'ref' => 1, # 'size' => 4, # 'type' => 'record', # 'type_code' => 2308 # }; ok 10 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 # $VAR1 = { # 'class' => 'Foo::Bar', # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'ffi_type' => 'pointer', # 'ref' => 1, # 'size' => 4, # 'sub_type' => 'record', # 'type' => 'custom_perl', # 'type_code' => 14596 # }; 1..17 } 1..2 } ok 4 - string rw { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'access' => 'rw', # 'element_size' => 8, # 'ffi_type' => 'pointer', # 'size' => 8, # 'type' => 'string', # 'type_code' => 772 # }; 1..9 } ok 5 - string ro { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'access' => 'ro', # 'element_size' => 8, # 'ffi_type' => 'pointer', # 'size' => 8, # 'type' => 'string', # 'type_code' => 772 # }; 1..9 } ok 6 - fixed array { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'element_count' => 10, # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 10, # 'type' => 'array', # 'type_code' => 8209 # }; 1..9 } ok 7 - var array { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'element_count' => 0, # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 0, # 'type' => 'array', # 'type_code' => 8209 # }; 1..8 } ok 8 - pointer { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 8, # 'type' => 'pointer', # 'type_code' => 4113 # }; 1..8 } ok 9 - custom type { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 1, # 'type' => 'custom_perl', # 'type_code' => 12305 # }; 1..8 } 1..9 ok t/ffi_platypus_type_pointersizebuffer.t .. ok 1 ok 2 ok 3 ok 4 ok 5 1..5 ok t/ffi_platypus_type_stringarray.t ........ ok 1 - fixed length input { ok 1 - with default { ok 1 - a1(0) = foo ok 2 - a1(0) = bar ok 3 - a1(0) = baz ok 4 - a1(0) = hey ok 5 - a1(0) = five ok 6 - a1(0) = undef 1..6 } ok 2 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five ok 6 - a2(0) = undef 1..6 } 1..2 } ok 2 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 3 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle ok 4 - returns with NULL/undef in the middle with default 1..4 } ok 4 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } 1..4 ok t/ffi_platypus_type_stringpointer.t ...... ok 1 - arg pass in { ok 1 - not null ok 2 - \undef is null ok 3 - undef is null 1..3 } ok 2 - arg pass out { ok 1 - not null string = hi there ok 2 - not null string = and another 1..2 } ok 3 - return value { ok 1 - not null string = once more onto ok 2 - \null ok 3 - null 1..3 } 1..3 ok t/ffi_platypus_type_widestring.t ......... # encoding = UTF-32LE # width = 4 ok 1 - wcschr { ok 1 ok 2 ok 3 1..3 } ok 2 - wide string as argument (in) { ok 1 - trivial ok 2 - simple ok 3 - fancy ok 4 - complex ok 5 - NULL 1..5 } ok 3 - wide string as argument (out) { ok 1 - trivial default buffer size ok 2 - trivial with just enough buffer ok 3 - simple default buffer size ok 4 - simple with just enough buffer ok 5 - fancy default buffer size ok 6 - fancy with just enough buffer ok 7 - complex default buffer size ok 8 - complex with just enough buffer ok 9 - NULL 1..9 } ok 4 - wide string as a return value { ok 1 - trivial ok 2 - simple ok 3 - fancy ok 4 - complex ok 5 - NULL 1..5 } ok 5 - wide string as in-out argument { ok 1 - trivial default buffer size ok 2 - trivial with just enough buffer ok 3 - simple default buffer size ok 4 - simple with just enough buffer ok 5 - fancy default buffer size ok 6 - fancy with just enough buffer ok 7 - complex default buffer size ok 8 - complex with just enough buffer 1..8 } 1..5 ok t/ffi_platypus_typeparser.t .............. ok 1 - basic { ok 1 - FFI::Platypus::TypeParser=HASH->isa('FFI::Platypus::TypeParser') 1..1 } ok 2 - pick the right one { ok 1 - FFI::Platypus::TypeParser::Version0=HASH->isa('FFI::Platypus::TypeParser::Version0') ok 2 - FFI::Platypus::TypeParser::Version1=HASH->isa('FFI::Platypus::TypeParser::Version1') 1..2 } 1..2 ok t/ffi_platypus_typeparser_version0.t ..... ok 1 - basic { ok 1 - basic basic ok 2 - longdouble { ok 1 - longdouble 1..1 } ok 3 - complex { ok 1 - complex float ok 2 - complex double 1..2 } 1..3 } ok 2 - record { ok 1 - fixed string ok 2 - unclassed record ok 3 - classed record 1..3 } ok 3 - string { ok 1 - default string ok 2 - explicit ro string ok 3 - explicit ro string with underscore ok 4 - explicit rw string ok 5 - explicit rw string with underscore 1..5 } ok 4 - array { ok 1 - fixed array ok 2 - variable array ok 3 - longdouble { ok 1 - variable array 1..1 } ok 4 - complex { ok 1 - variable array ok 2 - variable array 1..2 } 1..4 } ok 5 - pointer { ok 1 - pointer ok 2 - longdouble { ok 1 - longdouble pointer 1..1 } ok 3 - complex { ok 1 - complex float pointer ok 2 - complex double pointer 1..2 } 1..3 } 1..5 ok t/ffi_platypus_typeparser_version1.t ..... ok 1 - bad types { ok 1 ok 2 1..2 } ok 2 - basic types { ok 1 - void { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 1..4 } ok 2 - non-void { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 3 - string { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 } ok 4 - bogus { ok 1 1..1 } 1..4 } ok 3 - type map { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 1..23 } ok 4 - fixed record / fixed string { ok 1 - zero bad { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 2 - ten good { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 6 ok 7 ok 8 ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 14 ok 15 ok 16 ok 17 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 18 ok 19 ok 20 ok 21 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 22 ok 23 ok 24 1..24 } ok 3 - ten pass-by-value { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } 1..3 } ok 5 - record class { ok 1 - good with size { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..2 } ok 2 - bad without size { ok 1 ok 2 1..2 } ok 3 - pass-by-value { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..1 } ok 4 - alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } 1..4 } ok 6 - check alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 1..8 } ok 7 - use alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 1..10 } ok 8 - object { ok 1 ok 2 ok 3 1..3 } 1..8 ok t/ffi_platypus_typeparser_version2.t ..... ok 1 - bad types { ok 1 ok 2 1..2 } ok 2 - basic types { ok 1 - void { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 1..4 } ok 2 - non-void { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 3 - string { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 } ok 4 - bogus { ok 1 1..1 } 1..4 } ok 3 - type map { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 1..23 } ok 4 - fixed record / fixed string { ok 1 - zero bad { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 2 - ten good { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 6 ok 7 ok 8 ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 14 ok 15 ok 16 ok 17 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 18 ok 19 ok 20 ok 21 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 22 ok 23 ok 24 1..24 } ok 3 - ten pass-by-value { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 6 ok 7 ok 8 ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 14 ok 15 ok 16 ok 17 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 18 ok 19 ok 20 1..20 } ok 4 - ten record pass-by-value { ok 1 1..1 } 1..4 } ok 5 - record class { ok 1 - good with size { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..2 } ok 2 - bad without size { ok 1 ok 2 1..2 } ok 3 - pass-by-value { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..1 } ok 4 - alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } 1..4 } ok 6 - check alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 1..8 } ok 7 - use alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 1..10 } ok 8 - object { ok 1 ok 2 ok 3 1..3 } 1..8 ok t/ffi_probe.t ............................ ok 1 - check_header { ok 1 - FFI::Probe=HASH->isa('FFI::Probe') # PR header."stdio.h"=1 # PR header."bogus/does/not/exist.h"=0 ok 2 ok 3 # ==probe.log== # code: #include # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/ffi_build_ITpqja.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/_build/ffi_build_ITpqja.c.o # header."stdio.h"=1 # code: #include # code: #include # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/ffi_build_wdz7iz.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/_build/ffi_build_wdz7iz.c.o # /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/ffi_build_wdz7iz.c:2:10: fatal error: bogus/does/not/exist.h: No such file or directory # 2 | #include # | ^~~~~~~~~~~~~~~~~~~~~~~~ # compilation terminated. # header."bogus/does/not/exist.h"=0 # ==probe.pl== # do { my $x = { # 'header' => { # 'bogus/does/not/exist.h' => 0, # 'stdio.h' => 1 # } # }; # $x;} ok 4 ok 5 # ok 6 ok 7 # ==probe2.log== # # ==probe.pl== # do { my $x = { # 'header' => { # 'bogus/does/not/exist.h' => 0, # 'stdio.h' => 1 # } # }; # $x;} 1..7 } ok 2 - check_eval { # PR foo.bar.baz=3 ok 1 - foo.bar.baz ok 2 # PR foo.bar.string=hello world 7 ok 3 - foo.bar.string ok 4 # PR header."stddef.h"=1 # PR type.unsigned char.align=1 # PR type.unsigned char.sign=unsigned # PR type.unsigned char.size=1 ok 5 ok 6 ok 7 ok 8 # PR type.float.align=4 # PR type.float.size=4 ok 9 ok 10 ok 11 # PR type.pointer.align=8 # PR type.pointer.size=8 ok 12 ok 13 ok 14 # ==probe.log== # code: #include # code: # code: # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", 1+2); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_IaDEwg.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_IaDEwg.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_IaDEwg.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval1.so # [stdout] # eval1=<<<3>>> # [stderr] # # rv = 0 # foo.bar.baz=3 # code: #include # code: # code: char buffer[256]; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: sprintf(buffer, "hello world %d", 3+4); # code: # code: printf("eval1=<<<%s>>>\n", buffer); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build__oyXxz.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build__oyXxz.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build__oyXxz.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval2.so # [stdout] # eval1=<<>> # [stderr] # # rv = 0 # foo.bar.string=hello world 7 # code: #include # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_7SKIk9.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_7SKIk9.c.o # header."stddef.h"=1 # code: #include # code: #include # code: # code: #define signed(type) (((type)-1) < 0) ? "signed" : "unsigned" # code: struct align { char a; unsigned char b; }; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", (int)offsetof(struct align, b)); # code: printf("eval2=<<<%s>>>\n", signed(unsigned char)); # code: printf("eval3=<<<%d>>>\n", (int)sizeof(unsigned char)); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_DcYKcZ.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_DcYKcZ.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_DcYKcZ.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval4.so # [stdout] # eval1=<<<1>>> # eval2=<<>> # eval3=<<<1>>> # [stderr] # # rv = 0 # type.unsigned char.align=1 # type.unsigned char.sign=unsigned # type.unsigned char.size=1 # code: #include # code: #include # code: # code: struct align { char a; float b; }; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", (int)offsetof(struct align, b)); # code: printf("eval2=<<<%d>>>\n", (int)sizeof(float)); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_M_G5aY.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_M_G5aY.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_M_G5aY.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval5.so # [stdout] # eval1=<<<4>>> # eval2=<<<4>>> # [stderr] # # rv = 0 # type.float.align=4 # type.float.size=4 # code: #include # code: #include # code: # code: struct align { char a; void* b; }; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", (int)offsetof(struct align, b)); # code: printf("eval2=<<<%d>>>\n", (int)sizeof(void *)); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_qo30uE.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_qo30uE.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_qo30uE.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval6.so # [stdout] # eval1=<<<8>>> # eval2=<<<8>>> # [stderr] # # rv = 0 # type.pointer.align=8 # type.pointer.size=8 # ==probe.pl== # do { my $x = { # 'foo' => { # 'bar' => { # 'baz' => '3', # 'string' => 'hello world 7' # } # }, # 'header' => { # 'stddef.h' => 1 # }, # 'type' => { # 'float' => { # 'align' => '4', # 'size' => '4' # }, # 'pointer' => { # 'align' => '8', # 'size' => '8' # }, # 'unsigned char' => { # 'align' => '1', # 'sign' => 'unsigned', # 'size' => '1' # } # } # }; # $x;} 1..14 } 1..2 ok t/ffi_probe_runner.t ..................... ok 1 - basic { # exe=blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun ok 1 - FFI::Probe::Runner=HASH->isa('FFI::Probe::Runner') ok 2 ok 3 1..3 } ok 2 - run not pass { # CC corpus/ffi_probe_runner/foo.c # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-D9snX7/libfrooble1.so # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-D9snX7/libfrooble1.so ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 1..9 } ok 3 - run pass { # CC corpus/ffi_probe_runner/bar.c # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-fnzQ5w/libfrooble2.so # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-fnzQ5w/libfrooble2.so ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 1..9 } 1..3 ok t/ffi_probe_runner_builder.t ............. # dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh # libs=-ldl # libs= # libs=-lm # libs=-lpthread # libs=-lc # libs=-lcrypt ok 1 - FFI::Probe::Runner::Builder=HASH->isa('FFI::Probe::Runner::Builder') # +x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/src/dlrun.o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/src/dlrun.c # +x86_64-linux-gnu-gcc -fstack-protector-strong -L/usr/local/lib -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/src/dlrun.o -ldl # +/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun verify self # dlrun verify self ok ok 2 - no error ok 3 - executable exists # exe = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun # + /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun verify self # dlrun verify self ok ok 4 - verify ok # + ldd /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun # linux-vdso.so.1 (0x00007ffd2dfee000) # libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe36e20a000) # /lib64/ld-linux-x86-64.so.2 (0x00007fe36e412000) 1..4 ok t/ffi_probe_runner_result.t .............. ok 1 - FFI::Probe::Runner::Result=HASH->isa('FFI::Probe::Runner::Result') ok 2 ok 3 - FFI::Probe::Runner::Result=HASH->isa('FFI::Probe::Runner::Result') ok 4 ok 5 ok 6 - FFI::Probe::Runner::Result=HASH->isa('FFI::Probe::Runner::Result') ok 7 ok 8 1..8 ok t/ffi_temp.t ............................. ok 1 # dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/MmKETEDLQr # file = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/bwpDrbFa2x 1..1 ok t/forks.t ................................ skipped: Test requires forks t/gh117.t ................................ # value64 = 1099511627775 ok 1 1..1 ok t/gh129.t ................................ ok 1 - attached function { ok 1 1..1 } ok 2 - dynamic function { ok 1 1..1 } ok 3 - type wrapper argument { ok 1 1..1 } ok 4 - type wrapper argument post { ok 1 1..1 } ok 5 - type wrapper return type { ok 1 1..1 } 1..5 ok t/gh323.t ................................ ok 1 - api => 0 { # double = 3.140000 # float = 3.140000 ok 1 # my_float = 3.140000 ok 2 1..2 } ok 2 - api => 1 { # double = 3.140000 # float = 3.140000 ok 1 # my_float = 3.140000 ok 2 1..2 } ok 3 - api => 2 { # double = 3.140000 # float = 3.140000 ok 1 # my_float = 3.140000 ok 2 1..2 } 1..3 ok t/memory.t ............................... skipped: tested only in CI t/threads.t .............................. ok 1 ok 2 - works in a thread ok 3 - works in main thread 1..3 ok t/type_complex_double.t .................. ok 1 - api = 0 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 2 - api = 1 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 3 - api = 2 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { ok 1 1..1 } ok 8 - complex array ret { ok 1 1..1 } 1..8 } 1..3 ok t/type_complex_float.t ................... ok 1 - api = 0 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 2 - api = 1 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 3 - api = 2 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { ok 1 1..1 } ok 8 - complex array ret { ok 1 1..1 } 1..8 } 1..3 ok t/type_custom.t .......................... ok 1 - legal custom types { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 } ok 2 - illegal types { # alias = foo_sint8_32_ ok 1 # alias = foo_sint8_ ok 2 1..2 } ok 3 - records { ok 1 - pointer { ok 1 ok 2 ok 3 ok 4 ok 5 1..5 } ok 2 - by-value { ok 1 ok 2 ok 3 ok 4 - return-value { ok 1 1..1 } 1..4 } 1..2 } 1..3 ok t/type_double.t .......................... ok 1 - api = 0 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 16 - null2() == undef ok 17 - call_closure(2.5) = 4.75 ok 18 - call_closure(2.5) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } 1..3 ok t/type_float.t ........................... ok 1 - api = 0 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 16 - null2() == undef ok 17 - call_closure(2.5) = 4.75 ok 18 - call_closure(2.5) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } 1..3 ok t/type_longdouble.t ...................... ok 1 - Math::LongDouble is loaded when needed for return type { ok 1 - not pre-loaded ok 2 ok 3 1..3 } ok 2 - api = 0 { ok 1 - with Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } ok 2 - without Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } 1..2 } ok 3 - api = 1 { ok 1 - with Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } ok 2 - without Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } 1..2 } ok 4 - api = 2 { ok 1 - with Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } ok 2 - without Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } 1..2 } 1..4 ok t/type_longdouble__array.t ............... ok 1 - Math::LongDouble is loaded when needed for return type { ok 1 - not pre-loaded ok 2 ok 3 1..3 } 1..1 ok t/type_longdouble__hide.t ................ skipped: test requires Devel::Hide 0.0010 t/type_longdouble__ptr.t ................. ok 1 - Math::LongDouble is loaded when needed for return type { ok 1 - not pre-loaded ok 2 ok 3 1..3 } 1..1 ok t/type_opaque.t .......................... ok 1 - api = 0 { ok 1 - null = ()/undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(94313971916336); getp() = 94313971916336 ok 6 - get($tmp); tmp = 94313971916336 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_null_in([undef,undef,undef]) ok 10 - aa_out() ok 11 - aa_null_out() ok 12 - ra_out() ok 13 - ra_out_nt() ok 14 - ra_null_out ok 15 - pp2p(\undef) = undef ok 16 - pp2p(\94313971875232) = 94313971875232 ok 17 - p2pp(undef) = \undef ok 18 - pp2p(94313967701424) = \94313967701424 ok 19 - call_closure(undef) = undef ok 20 - save = undef ok 21 - call_closure(\94313972009680) = 94313972009680 ok 22 - save = 94313972009680 ok 23 - custom type input { ok 1 ok 2 1..2 } ok 24 - custom type output { ok 1 ok 2 1..2 } 1..24 } ok 2 - api = 1 { ok 1 - null = ()/undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(94313972015344); getp() = 94313972015344 ok 6 - get($tmp); tmp = 94313972015344 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_null_in([undef,undef,undef]) ok 10 - aa_out() ok 11 - aa_null_out() ok 12 - ra_out() ok 13 - ra_out_nt() ok 14 - ra_null_out ok 15 - pp2p(\undef) = undef ok 16 - pp2p(\94313958710272) = 94313958710272 ok 17 - p2pp(undef) = \undef ok 18 - pp2p(94313972044544) = \94313972044544 ok 19 - call_closure(undef) = undef ok 20 - save = undef ok 21 - call_closure(\94313972039648) = 94313972039648 ok 22 - save = 94313972039648 ok 23 - custom type input { ok 1 ok 2 1..2 } ok 24 - custom type output { ok 1 ok 2 1..2 } 1..24 } ok 3 - api = 2 { ok 1 - null = ()/undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(94313972008064); getp() = 94313972008064 ok 6 - get($tmp); tmp = 94313972008064 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_in([one two three]) ok 10 - aa_null_in([undef,undef,undef]) ok 11 - aa_out() ok 12 - aa_out() ok 13 - aa_null_out() ok 14 - ra_out() ok 15 - ra_out_nt() ok 16 - ra_null_out ok 17 - pp2p(\undef) = undef ok 18 - pp2p(\94313972170864) = 94313972170864 ok 19 - p2pp(undef) = \undef ok 20 - pp2p(94313971876576) = \94313971876576 ok 21 - call_closure(undef) = undef ok 22 - save = undef ok 23 - call_closure(\94313972034992) = 94313972034992 ok 24 - save = 94313972034992 ok 25 - custom type input { ok 1 ok 2 1..2 } ok 26 - custom type output { ok 1 ok 2 1..2 } 1..26 } ok 4 - object { ok 1 - argument { ok 1 ok 2 1..2 } ok 2 - return value { ok 1 ok 2 - Roger=SCALAR->isa('Roger') ok 3 ok 4 - Roger=SCALAR->isa('Roger') ok 5 1..5 } ok 3 1..3 } ok 5 - object { ok 1 - argument { ok 1 ok 2 1..2 } ok 2 - return value { ok 1 ok 2 - Roger=SCALAR->isa('Roger') ok 3 ok 4 - Roger=SCALAR->isa('Roger') ok 5 1..5 } ok 3 1..3 } 1..5 ok t/type_record.t .......................... # record size = 20 ok 1 - not a reference { ok 1 - in { # packed size = 20 ok 1 - get_value($packed) = 42 ok 2 - get_name($packed) = hi there ok 3 - is_null(undef) 1..3 } ok 2 - out { # packed size = 20 ok 1 - get_value($packed) = 47 ok 2 - get_value($packed) = platypus ok 3 - null() = undef 1..3 } 1..2 } ok 2 - return null { ok 1 ok 2 1..2 } ok 3 - is a reference { ok 1 - in { # packed size = 20 ok 1 - get_value(\$packed) = 42 ok 2 - get_name(\$packed) = hi there ok 3 - is_null(\undef) 1..3 } ok 2 - out { # packed size = 36 ok 1 - My::FooRecord=SCALAR->isa('My::FooRecord') ok 2 - packed.my_method = starscream ok 3 - get_value($packed) = 47 ok 4 - get_value($packed) = platypus ok 5 - null() = \undef 1..5 } 1..2 } ok 4 - closure { ok 1 - allow record type as arg ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 # error = record is read-only at t/type_record.t line 135. ok 8 ok 9 ok 10 ok 11 # error = record is read-only at t/type_record.t line 144. ok 12 ok 13 # error = record is read-only at t/type_record.t line 151. ok 14 ok 15 ok 16 # error = record is read-only at t/type_record.t line 160. ok 17 ok 18 ok 19 # error = record is read-only at t/type_record.t line 169. ok 20 ok 21 # error = record is read-only at t/type_record.t line 176. ok 22 ok 23 # error = record is read-only at t/type_record.t line 184. ok 24 ok 25 ok 26 # error = record is read-only at t/type_record.t line 193. ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 1..32 } ok 5 - api = 1 fixed string { ok 1 ok 2 ok 3 1..3 } 1..5 ok t/type_record_value.t .................... ok 1 - is a reference { ok 1 - argument { ok 1 - bad { ok 1 ok 2 ok 3 1..3 } ok 2 - good { ok 1 ok 2 1..2 } 1..2 } ok 2 - return value { ok 1 - function object { ok 1 ok 2 1..2 } ok 2 - xsub_ref { ok 1 ok 2 1..2 } ok 3 - attach { ok 1 ok 2 1..2 } 1..3 } 1..2 } ok 2 - closure { ok 1 - do allow record type as arg ok 2 - do not allow record type with pointer strings as ret type ok 3 # first closure ok 4 - Closure::Record::RW=SCALAR->isa('Closure::Record::RW') ok 5 ok 6 ok 7 ok 8 ok 9 # error = record is read-only at t/type_record_value.t line 156. ok 10 ok 11 ok 12 ok 13 # error = record is read-only at t/type_record_value.t line 165. ok 14 ok 15 # error = record is read-only at t/type_record_value.t line 172. ok 16 ok 17 ok 18 # error = record is read-only at t/type_record_value.t line 181. ok 19 ok 20 ok 21 # error = record is read-only at t/type_record_value.t line 190. ok 22 ok 23 # error = record is read-only at t/type_record_value.t line 197. ok 24 ok 25 # error = record is read-only at t/type_record_value.t line 205. ok 26 ok 27 ok 28 # error = record is read-only at t/type_record_value.t line 214. ok 29 ok 30 ok 31 1..31 } ok 3 - closure ret { ok 1 ok 2 ok 3 - good { ok 1 - Closure::Record::Simple=SCALAR->isa('Closure::Record::Simple') ok 2 ok 3 ok 4 1..4 } ok 4 - bad { # Return record from closure is wrong type! at t/type_record_value.t line 286. ok 1 - Closure::Record::Simple=SCALAR->isa('Closure::Record::Simple') ok 2 ok 3 ok 4 1..4 } ok 5 - short { # Return record from closure is wrong size! at t/type_record_value.t line 307. ok 1 - Closure::Record::Simple=SCALAR->isa('Closure::Record::Simple') ok 2 ok 3 ok 4 1..4 } 1..5 } 1..3 ok t/type_sint16.t .......................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_sint32.t .......................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_sint64.t .......................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_sint8.t ........................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_string.t .......................... ok 1 - api = 0 { ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 - fixed length input { ok 1 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five 1..5 } 1..1 } ok 27 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 28 - variable length input { 1..0 # SKIP test requires api >=2 } ok 29 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle 1..3 } ok 30 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } ok 31 - argument update { ok 1 1..1 } ok 32 - write to string { ok 1 1..1 } ok 33 1..33 } ok 2 - api = 1 { ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 - fixed length input { ok 1 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five 1..5 } 1..1 } ok 27 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 28 - variable length input { 1..0 # SKIP test requires api >=2 } ok 29 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle 1..3 } ok 30 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } ok 31 - argument update { ok 1 1..1 } ok 32 - write to string { ok 1 1..1 } ok 33 1..33 } ok 3 - api = 2 { ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 - fixed length input { ok 1 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five 1..5 } 1..1 } ok 27 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 28 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 29 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle 1..3 } ok 30 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } ok 31 - argument update { ok 1 1..1 } ok 32 - write to string { ok 1 1..1 } ok 33 1..33 } 1..3 ok t/type_uint16.t .......................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_uint32.t .......................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_uint64.t .......................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_uint8.t ........................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok All tests successful. Files=72, Tests=320, 26 wallclock secs ( 0.58 usr 0.18 sys + 17.95 cusr 3.92 csys = 22.63 CPU) Result: PASS make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' create-stamp debian/debhelper-build-stamp dh_prep debian/rules override_dh_auto_install make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_install make -j20 install DESTDIR=/build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl AM_UPDATE_INFO_DIR=no PREFIX=/usr make[2]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 Manifying 33 pod documents Manifying 10 pod documents Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Platypus.so Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Record/Meta/Meta.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Constant/Constant.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Memory/Memory.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/typemap Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Temp.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Bundle.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Closure.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Memory.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Internal.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Buffer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Function.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Constant.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/API.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Legacy.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/DL.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/ShareConfig.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version2.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version0.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version1.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/TieArray.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/Meta.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/C.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/Win32.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/ASM.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/WideString.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/StringPointer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/PointerSizeBuffer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/StringArray.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner/Builder.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner/Result.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/MM.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/Platform.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/Plugin.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/PluginData.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/C.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Object.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/CXX.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Base.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Library.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/config.pl Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/include/ffi_platypus_bundle.h Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/include/ffi_platypus_config.h Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/lib/libplfill.so Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/probe.pl Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/src/dlrun.c Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/bin/dlrun Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Function.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::PluginData.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Result.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version2.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::DL.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Bundle.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::MM.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Closure.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringArray.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Legacy.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Internal.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version1.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::API.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::C.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::ASM.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Constant.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::C.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::PointerSizeBuffer.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Library.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringPointer.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Builder.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Memory.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Temp.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::CXX.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Plugin.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version0.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record::TieArray.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Buffer.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record::Meta.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::Win32.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Object.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Base.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::WideString.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Platform.3pm make[2]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' # contentless manpage rm -f -v /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm removed '/build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm' make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_installdocs dh_installchangelogs debian/rules override_dh_installexamples make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_installexamples sed -i '1s|^#!perl|#!/usr/bin/perl|' /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/doc/libffi-platypus-perl/examples/*.pl sed -i '1s|^#!/usr/bin/env perl|#!/usr/bin/perl|' /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/doc/libffi-platypus-perl/examples/*.pl make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_installman dh_perl dh_link dh_strip_nondeterminism dh_compress dh_fixperms dh_missing dh_dwz -a dh_strip -a dh_makeshlibs -a dh_shlibdeps -a dpkg-shlibdeps: warning: diversions involved - output may be incorrect diversion by libc6 from: /lib64/ld-linux-x86-64.so.2 dpkg-shlibdeps: warning: diversions involved - output may be incorrect diversion by libc6 to: /lib64/ld-linux-x86-64.so.2.usr-is-merged dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'libffi-platypus-perl-dbgsym' in '../libffi-platypus-perl-dbgsym_2.09-1_amd64.deb'. dpkg-deb: building package 'libffi-platypus-perl' in '../libffi-platypus-perl_2.09-1_amd64.deb'. dpkg-genbuildinfo --build=binary -O../libffi-platypus-perl_2.09-1_amd64.buildinfo dpkg-genchanges --build=binary -O../libffi-platypus-perl_2.09-1_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration 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/3063139 and its subdirectories I: Current time: Wed Nov 20 17:50:12 -12 2024 I: pbuilder-time-stamp: 1732168212 Thu Nov 21 05:50:13 UTC 2024 I: 1st build successful. Starting 2nd build on remote node ionos15-amd64.debian.net. Thu Nov 21 05:50:13 UTC 2024 I: Preparing to do remote build '2' on ionos15-amd64.debian.net. Thu Nov 21 05:50:13 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos15-amd64.debian.net is marked as down. Thu Nov 21 05:50:13 UTC 2024 - checking via ssh if ionos15-amd64.debian.net is up. removed '/tmp/read-only-fs-test-bAcy7R' ==================================================================================== Wed Dec 24 12:13:14 UTC 2025 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on ionos15-amd64, called using "2 libffi-platypus-perl trixie /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg 2.09-1" as arguments. Wed Dec 24 12:13:14 UTC 2025 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-Tk7b8KMI" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Wed Dec 24 12:13:14 UTC 2025 I: Downloading source for trixie/libffi-platypus-perl=2.09-1 Reading package lists... NOTICE: 'libffi-platypus-perl' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl.git Please use: git clone https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 430 kB of source archives. Get:1 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (dsc) [2684 B] Get:2 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (tar) [423 kB] Get:3 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (diff) [4856 B] Fetched 430 kB in 0s (31.6 MB/s) Download complete and in download only mode Reading package lists... NOTICE: 'libffi-platypus-perl' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl.git Please use: git clone https://salsa.debian.org/perl-team/modules/packages/libffi-platypus-perl.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 430 kB of source archives. Get:1 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (dsc) [2684 B] Get:2 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (tar) [423 kB] Get:3 http://deb.debian.org/debian trixie/main libffi-platypus-perl 2.09-1 (diff) [4856 B] Fetched 430 kB in 0s (31.6 MB/s) Download complete and in download only mode ============================================================================= Re-Building libffi-platypus-perl in trixie on amd64 on ionos15-amd64 now. Date: Wed Dec 24 12:13:14 UTC 2025 Date UTC: Wed Dec 24 12:13:14 UTC 2025 ============================================================================= ++ mktemp -t pbuilderrc_XXXX --tmpdir=/srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg + local TMPCFG=/srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/pbuilderrc_UdkH + case ${ARCH} in + case $ARCH in + locale=et_EE + language=et + case "${SUITE}" in + reproducible_buildflags=+all + extra_deb_build_options= + case "${SRCPACKAGE}" in + cat + echo BUILDDIR=/build/reproducible-path + '[' libffi-platypus-perl = debian-installer -o libffi-platypus-perl = debian-installer-netboot-images ']' + pbuilder_options=() + local pbuilder_options + DEBBUILDOPTS=-b + BINARYTARGET= + '[' libffi-platypus-perl = u-boot ']' + case "${SRCPACKAGE}" in + PBUILDERTIMEOUT=24 + local PRESULT=0 + sudo 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/r-b-build.hxADhKAg/pbuilderrc_UdkH --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b2 --logfile b2/build.log libffi-platypus-perl_2.09-1.dsc W: /root/.pbuilderrc does not exist I: Logging to b2/build.log I: pbuilder: network access will be disabled during build I: Current time: Thu Dec 25 02:13:14 +14 2025 I: pbuilder-time-stamp: 1766578394 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [libffi-platypus-perl_2.09-1.dsc] I: copying [./libffi-platypus-perl_2.09.orig.tar.gz] I: copying [./libffi-platypus-perl_2.09-1.debian.tar.xz] I: Extracting source gpgv: Signature made Thu Aug 29 09:36:31 2024 gpgv: using RSA key D1E1316E93A760A8104D85FABB3A68018649AA06 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./libffi-platypus-perl_2.09-1.dsc: no acceptable signature found dpkg-source: info: extracting libffi-platypus-perl in libffi-platypus-perl-2.09 dpkg-source: info: unpacking libffi-platypus-perl_2.09.orig.tar.gz dpkg-source: info: unpacking libffi-platypus-perl_2.09-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/D01_modify_environment starting debug: Running on ionos15-amd64. 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 '/bin/sh' -> '/bin/bash' lrwxrwxrwx 1 root root 9 Dec 24 12:13 /bin/sh -> /bin/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/1959285/tmp/hooks/D01_modify_environment finished I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/D02_print_environment starting I: set BASH=/bin/sh BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=([0]="12" [1]="0") BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") BASH_VERSINFO=([0]="5" [1]="2" [2]="32" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") BASH_VERSION='5.2.32(1)-release' BUILDDIR=/build/reproducible-path BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' BUILDUSERNAME=pbuilder2 BUILD_ARCH=amd64 DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' DIRSTACK=() DISTRIBUTION=trixie EUID=0 FUNCNAME=([0]="Echo" [1]="main") GROUPS=() HOME=/root HOSTNAME=i-capture-the-hostname HOSTTYPE=x86_64 HOST_ARCH=amd64 IFS=' ' INVOCATION_ID=09c1ff7987104d4db23b1a3aa2b194a6 LANG=C LANGUAGE=et_EE:et LC_ALL=C MACHTYPE=x86_64-pc-linux-gnu MAIL=/var/mail/root OPTERR=1 OPTIND=1 OSTYPE=linux-gnu 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=1959285 PS4='+ ' 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/r-b-build.hxADhKAg/pbuilderrc_UdkH --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b2 --logfile b2/build.log libffi-platypus-perl_2.09-1.dsc' SUDO_GID=111 SUDO_UID=106 SUDO_USER=jenkins TERM=unknown TZ=/usr/share/zoneinfo/Etc/GMT-14 UID=0 USER=root _='I: set' http_proxy=http://213.165.73.152:3128 I: uname -a Linux i-capture-the-hostname 6.11.5+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11.5-1~bpo12+1 (2024-11-11) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Aug 4 2024 /bin -> usr/bin I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), libcapture-tiny-perl, libextutils-parsexs-perl, libffi-checklib-perl, libffi-dev, libjson-pp-perl, libscalar-list-utils-perl, libtest-simple-perl, libtest2-suite-perl, perl-xs-dev, perl:native, pkgconf | pkg-config | libpkgconfig-perl dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19969 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on libcapture-tiny-perl; however: Package libcapture-tiny-perl is not installed. pbuilder-satisfydepends-dummy depends on libffi-checklib-perl; however: Package libffi-checklib-perl is not installed. pbuilder-satisfydepends-dummy depends on libffi-dev; however: Package libffi-dev is not installed. pbuilder-satisfydepends-dummy depends on libtest2-suite-perl; however: Package libtest2-suite-perl is not installed. pbuilder-satisfydepends-dummy depends on perl-xs-dev; however: Package perl-xs-dev is not installed. pbuilder-satisfydepends-dummy depends on perl:native. pbuilder-satisfydepends-dummy depends on pkgconf | pkg-config | libpkgconfig-perl; however: Package pkgconf is not installed. Package pkg-config is not installed. Package libpkgconfig-perl is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} debhelper{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libcapture-tiny-perl{a} libdebhelper-perl{a} libelf1t64{a} libffi-checklib-perl{a} libffi-dev{a} libfile-stripnondeterminism-perl{a} libfile-which-perl{a} libicu72{a} libmagic-mgc{a} libmagic1t64{a} libperl-dev{a} libpipeline1{a} libpkgconf3{a} libtest2-suite-perl{a} libtool{a} libuchardet0{a} libxml2{a} m4{a} man-db{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} sensible-utils{a} The following packages are RECOMMENDED but will NOT be installed: curl libarchive-cpio-perl libltdl-dev libmail-sendmail-perl libmodule-pluggable-perl lynx wget 0 packages upgraded, 38 newly installed, 0 to remove and 0 not upgraded. Need to get 21.5 MB of archives. After unpacking 82.7 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian trixie/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 2 http://deb.debian.org/debian trixie/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 3 http://deb.debian.org/debian trixie/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 4 http://deb.debian.org/debian trixie/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 5 http://deb.debian.org/debian trixie/main amd64 gettext-base amd64 0.22.5-2 [200 kB] Get: 6 http://deb.debian.org/debian trixie/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 7 http://deb.debian.org/debian trixie/main amd64 groff-base amd64 1.23.0-5 [1181 kB] Get: 8 http://deb.debian.org/debian trixie/main amd64 bsdextrautils amd64 2.40.2-11 [91.5 kB] Get: 9 http://deb.debian.org/debian trixie/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 10 http://deb.debian.org/debian trixie/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 11 http://deb.debian.org/debian trixie/main amd64 m4 amd64 1.4.19-4 [287 kB] Get: 12 http://deb.debian.org/debian trixie/main amd64 autoconf all 2.72-3 [493 kB] Get: 13 http://deb.debian.org/debian trixie/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 14 http://deb.debian.org/debian trixie/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get: 15 http://deb.debian.org/debian trixie/main amd64 autopoint all 0.22.5-2 [723 kB] Get: 16 http://deb.debian.org/debian trixie/main amd64 libdebhelper-perl all 13.20 [89.7 kB] Get: 17 http://deb.debian.org/debian trixie/main amd64 libtool all 2.4.7-8 [517 kB] Get: 18 http://deb.debian.org/debian trixie/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 19 http://deb.debian.org/debian trixie/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 20 http://deb.debian.org/debian trixie/main amd64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB] Get: 21 http://deb.debian.org/debian trixie/main amd64 dh-strip-nondeterminism all 1.14.0-1 [8448 B] Get: 22 http://deb.debian.org/debian trixie/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 23 http://deb.debian.org/debian trixie/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 24 http://deb.debian.org/debian trixie/main amd64 libicu72 amd64 72.1-5+b1 [9423 kB] Get: 25 http://deb.debian.org/debian trixie/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 26 http://deb.debian.org/debian trixie/main amd64 gettext amd64 0.22.5-2 [1601 kB] Get: 27 http://deb.debian.org/debian trixie/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 28 http://deb.debian.org/debian trixie/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 29 http://deb.debian.org/debian trixie/main amd64 debhelper all 13.20 [915 kB] Get: 30 http://deb.debian.org/debian trixie/main amd64 libcapture-tiny-perl all 0.48-2 [24.6 kB] Get: 31 http://deb.debian.org/debian trixie/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get: 32 http://deb.debian.org/debian trixie/main amd64 libffi-checklib-perl all 0.31-1 [19.4 kB] Get: 33 http://deb.debian.org/debian trixie/main amd64 libffi-dev amd64 3.4.6-1 [60.6 kB] Get: 34 http://deb.debian.org/debian trixie/main amd64 libperl-dev amd64 5.40.0-7 [1112 kB] Get: 35 http://deb.debian.org/debian trixie/main amd64 libpkgconf3 amd64 1.8.1-4 [36.4 kB] Get: 36 http://deb.debian.org/debian trixie/main amd64 libtest2-suite-perl all 0.000163-1 [383 kB] Get: 37 http://deb.debian.org/debian trixie/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB] Get: 38 http://deb.debian.org/debian trixie/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB] Fetched 21.5 MB in 6s (3594 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package sensible-utils. (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 ... 19969 files and directories currently installed.) Preparing to unpack .../00-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../01-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../02-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../03-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../04-gettext-base_0.22.5-2_amd64.deb ... Unpacking gettext-base (0.22.5-2) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../05-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../06-groff-base_1.23.0-5_amd64.deb ... Unpacking groff-base (1.23.0-5) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../07-bsdextrautils_2.40.2-11_amd64.deb ... Unpacking bsdextrautils (2.40.2-11) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../08-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../09-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../10-m4_1.4.19-4_amd64.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../11-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../12-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../13-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../14-autopoint_0.22.5-2_all.deb ... Unpacking autopoint (0.22.5-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../15-libdebhelper-perl_13.20_all.deb ... Unpacking libdebhelper-perl (13.20) ... Selecting previously unselected package libtool. Preparing to unpack .../16-libtool_2.4.7-8_all.deb ... Unpacking libtool (2.4.7-8) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../17-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../18-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../19-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../20-dh-strip-nondeterminism_1.14.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.0-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../21-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../22-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../23-libicu72_72.1-5+b1_amd64.deb ... Unpacking libicu72:amd64 (72.1-5+b1) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../24-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../25-gettext_0.22.5-2_amd64.deb ... Unpacking gettext (0.22.5-2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../26-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../27-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../28-debhelper_13.20_all.deb ... Unpacking debhelper (13.20) ... Selecting previously unselected package libcapture-tiny-perl. Preparing to unpack .../29-libcapture-tiny-perl_0.48-2_all.deb ... Unpacking libcapture-tiny-perl (0.48-2) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../30-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libffi-checklib-perl. Preparing to unpack .../31-libffi-checklib-perl_0.31-1_all.deb ... Unpacking libffi-checklib-perl (0.31-1) ... Selecting previously unselected package libffi-dev:amd64. Preparing to unpack .../32-libffi-dev_3.4.6-1_amd64.deb ... Unpacking libffi-dev:amd64 (3.4.6-1) ... Selecting previously unselected package libperl-dev:amd64. Preparing to unpack .../33-libperl-dev_5.40.0-7_amd64.deb ... Unpacking libperl-dev:amd64 (5.40.0-7) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../34-libpkgconf3_1.8.1-4_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-4) ... Selecting previously unselected package libtest2-suite-perl. Preparing to unpack .../35-libtest2-suite-perl_0.000163-1_all.deb ... Unpacking libtest2-suite-perl (0.000163-1) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../36-pkgconf-bin_1.8.1-4_amd64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:amd64. Preparing to unpack .../37-pkgconf_1.8.1-4_amd64.deb ... Unpacking pkgconf:amd64 (1.8.1-4) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libfile-which-perl (1.27-2) ... Setting up libicu72:amd64 (72.1-5+b1) ... Setting up bsdextrautils (2.40.2-11) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libdebhelper-perl (13.20) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up gettext-base (0.22.5-2) ... Setting up m4 (1.4.19-4) ... Setting up libperl-dev:amd64 (5.40.0-7) ... Setting up file (1:5.45-3+b1) ... Setting up libffi-dev:amd64 (3.4.6-1) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libtest2-suite-perl (0.000163-1) ... Setting up autotools-dev (20220109.1) ... Setting up libpkgconf3:amd64 (1.8.1-4) ... Setting up libffi-checklib-perl (0.31-1) ... Setting up autopoint (0.22.5-2) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up autoconf (2.72-3) ... Setting up libcapture-tiny-perl (0.48-2) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... Setting up gettext (0.22.5-2) ... Setting up libtool (2.4.7-8) ... Setting up pkgconf:amd64 (1.8.1-4) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up dh-strip-nondeterminism (1.14.0-1) ... Setting up groff-base (1.23.0-5) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up debhelper (13.20) ... Processing triggers for libc-bin (2.40-3) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/A99_set_merged_usr starting Not re-configuring usrmerge for trixie I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/A99_set_merged_usr finished hostname: Name or service not known I: Running cd /build/reproducible-path/libffi-platypus-perl-2.09/ && 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 > ../libffi-platypus-perl_2.09-1_source.changes dpkg-buildpackage: info: source package libffi-platypus-perl dpkg-buildpackage: info: source version 2.09-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by gregor herrmann dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean dh_clean debian/rules binary dh binary dh_update_autotools_config dh_autoreconf dh_auto_configure /usr/bin/perl Makefile.PL INSTALLDIRS=vendor "OPTIMIZE=-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" "LD=x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now" using system libffi via /usr/bin/pkg-config Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for FFI::Platypus Writing MYMETA.yml and MYMETA.json debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_build -- V=1 make -j42 V=1 make[2]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' Running Mkbootstrap for lib/FFI/Platypus () "/usr/bin/perl" "/usr/share/perl/5.40/ExtUtils/xsubpp" -typemap '/usr/share/perl/5.40/ExtUtils/typemap' lib/FFI/Platypus.xs > lib/FFI/Platypus.xsc chmod 644 "lib/FFI/Platypus.bs" "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 cp lib/FFI/Platypus.pm blib/lib/FFI/Platypus.pm cp lib/FFI/Platypus/Lang/ASM.pm blib/lib/FFI/Platypus/Lang/ASM.pm cp lib/FFI/Platypus/Function.pm blib/lib/FFI/Platypus/Function.pm cp lib/FFI/Platypus/Type.pm blib/lib/FFI/Platypus/Type.pm cp lib/FFI/Platypus/Constant.pm blib/lib/FFI/Platypus/Constant.pm cp lib/FFI/Platypus/TypeParser/Version0.pm blib/lib/FFI/Platypus/TypeParser/Version0.pm cp lib/FFI/Platypus/DL.pm blib/lib/FFI/Platypus/DL.pm cp lib/FFI/Platypus/Type/StringArray.pm blib/lib/FFI/Platypus/Type/StringArray.pm cp lib/FFI/Platypus/Legacy.pm blib/lib/FFI/Platypus/Legacy.pm cp lib/FFI/Platypus/Record.pm blib/lib/FFI/Platypus/Record.pm cp lib/FFI/Platypus/TypeParser/Version1.pm blib/lib/FFI/Platypus/TypeParser/Version1.pm cp lib/FFI/Build/File/C.pm blib/lib/FFI/Build/File/C.pm cp lib/FFI/Build/Plugin.pm blib/lib/FFI/Build/Plugin.pm cp lib/FFI/Build.pm blib/lib/FFI/Build.pm cp lib/FFI/Build/File/CXX.pm blib/lib/FFI/Build/File/CXX.pm cp lib/FFI/Platypus/Type/StringPointer.pm blib/lib/FFI/Platypus/Type/StringPointer.pm cp lib/FFI/Platypus/ShareConfig.pm blib/lib/FFI/Platypus/ShareConfig.pm cp lib/FFI/Build/Platform.pm blib/lib/FFI/Build/Platform.pm cp lib/FFI/Platypus/Buffer.pm blib/lib/FFI/Platypus/Buffer.pm cp lib/FFI/Platypus/Record/TieArray.pm blib/lib/FFI/Platypus/Record/TieArray.pm cp lib/FFI/Platypus/API.pm blib/lib/FFI/Platypus/API.pm cp lib/FFI/Platypus/Memory.pm blib/lib/FFI/Platypus/Memory.pm cp lib/FFI/Platypus/Lang.pm blib/lib/FFI/Platypus/Lang.pm cp lib/FFI/Platypus/Lang/C.pm blib/lib/FFI/Platypus/Lang/C.pm cp lib/FFI/Build/PluginData.pm blib/lib/FFI/Build/PluginData.pm cp lib/FFI/Platypus/Type/WideString.pm blib/lib/FFI/Platypus/Type/WideString.pm cp lib/FFI/Build/File/Base.pm blib/lib/FFI/Build/File/Base.pm cp lib/FFI/Build/File/Library.pm blib/lib/FFI/Build/File/Library.pm cp lib/FFI/Platypus/Type/PointerSizeBuffer.pm blib/lib/FFI/Platypus/Type/PointerSizeBuffer.pm cp lib/FFI/Build/MM.pm blib/lib/FFI/Build/MM.pm cp lib/FFI/Platypus/Internal.pm blib/lib/FFI/Platypus/Internal.pm cp lib/FFI/Platypus/Bundle.pm blib/lib/FFI/Platypus/Bundle.pm cp lib/FFI/Platypus/TypeParser.pm blib/lib/FFI/Platypus/TypeParser.pm cp lib/FFI/Build/File/Object.pm blib/lib/FFI/Build/File/Object.pm cp lib/FFI/Platypus/Lang/Win32.pm blib/lib/FFI/Platypus/Lang/Win32.pm cp lib/FFI/Platypus/TypeParser/Version2.pm blib/lib/FFI/Platypus/TypeParser/Version2.pm cp lib/FFI/Platypus/Record/Meta.pm blib/lib/FFI/Platypus/Record/Meta.pm cp lib/FFI/Platypus/Closure.pm blib/lib/FFI/Platypus/Closure.pm cp lib/FFI/Probe/Runner/Result.pm blib/lib/FFI/Probe/Runner/Result.pm cp lib/FFI/Probe/Runner/Builder.pm blib/lib/FFI/Probe/Runner/Builder.pm cp lib/FFI/typemap blib/lib/FFI/typemap cp lib/FFI/Probe.pm blib/lib/FFI/Probe.pm cp lib/FFI/Probe/Runner.pm blib/lib/FFI/Probe/Runner.pm cp lib/FFI/Temp.pm blib/lib/FFI/Temp.pm mv lib/FFI/Platypus.xsc lib/FFI/Platypus.c +x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c -o blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.o blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.c +x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -fstack-protector-strong -L/usr/local/lib -o blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.o -ldl +blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun verify self dlrun verify self ok +pkgconf --cflags libffi +pkgconf --libs libffi [out] -lffi PR header."stdlib.h"=1 PR header."stdint.h"=1 PR header."sys/types.h"=1 PR header."sys/stat.h"=1 PR header."unistd.h"=1 PR header."alloca.h"=1 PR header."dlfcn.h"=1 PR header."limits.h"=1 PR header."stddef.h"=1 PR header."wchar.h"=1 PR header."signal.h"=1 PR header."inttypes.h"=1 PR header."windows.h"=0 PR header."sys/cygwin.h"=0 PR header."string.h"=1 PR header."psapi.h"=0 PR header."stdio.h"=1 PR header."stdbool.h"=1 PR header."complex.h"=1 PR type.char.align=1 PR type.char.sign=signed PR type.char.size=1 PR type.signed char.align=1 PR type.signed char.sign=signed PR type.signed char.size=1 PR type.unsigned char.align=1 PR type.unsigned char.sign=unsigned PR type.unsigned char.size=1 PR type.short.align=2 PR type.short.sign=signed PR type.short.size=2 PR type.signed short.align=2 PR type.signed short.sign=signed PR type.signed short.size=2 PR type.unsigned short.align=2 PR type.unsigned short.sign=unsigned PR type.unsigned short.size=2 PR type.int.align=4 PR type.int.sign=signed PR type.int.size=4 PR type.signed int.align=4 PR type.signed int.sign=signed PR type.signed int.size=4 PR type.unsigned int.align=4 PR type.unsigned int.sign=unsigned PR type.unsigned int.size=4 PR type.long.align=8 PR type.long.sign=signed PR type.long.size=8 PR type.signed long.align=8 PR type.signed long.sign=signed PR type.signed long.size=8 PR type.unsigned long.align=8 PR type.unsigned long.sign=unsigned PR type.unsigned long.size=8 PR type.uint8_t.align=1 PR type.uint8_t.sign=unsigned PR type.uint8_t.size=1 PR type.int8_t.align=1 PR type.int8_t.sign=signed PR type.int8_t.size=1 PR type.uint16_t.align=2 PR type.uint16_t.sign=unsigned PR type.uint16_t.size=2 PR type.int16_t.align=2 PR type.int16_t.sign=signed PR type.int16_t.size=2 PR type.uint32_t.align=4 PR type.uint32_t.sign=unsigned PR type.uint32_t.size=4 PR type.int32_t.align=4 PR type.int32_t.sign=signed PR type.int32_t.size=4 PR type.uint64_t.align=8 PR type.uint64_t.sign=unsigned PR type.uint64_t.size=8 PR type.int64_t.align=8 PR type.int64_t.sign=signed PR type.int64_t.size=8 PR type.size_t.align=8 PR type.size_t.sign=unsigned PR type.size_t.size=8 PR type.ssize_t.align=8 PR type.ssize_t.sign=signed PR type.ssize_t.size=8 PR type.float.align=4 PR type.float.size=4 PR type.double.align=8 PR type.double.size=8 PR type.long double.align=16 PR type.long double.size=16 PR type.float complex.align=4 PR type.float complex.size=8 PR type.double complex.align=8 PR type.double complex.size=16 PR type.long double complex.align=16 PR type.long double complex.size=32 PR type.bool.align=1 PR type.bool.sign=unsigned PR type.bool.size=1 PR type._Bool.align=1 PR type._Bool.sign=unsigned PR type._Bool.size=1 PR type.pointer.align=8 PR type.pointer.size=8 PR type.uintptr_t.align=8 PR type.uintptr_t.sign=unsigned PR type.uintptr_t.size=8 PR type.intptr_t.align=8 PR type.intptr_t.sign=signed PR type.intptr_t.size=8 PR type.enum.align=4 PR type.enum.sign=unsigned PR type.enum.size=4 PR type.senum.align=4 PR type.senum.sign=signed PR type.senum.size=4 PR type.intmax_t.align=8 PR type.intmax_t.sign=signed PR type.intmax_t.size=8 PR type.uintmax_t.align=8 PR type.uintmax_t.sign=unsigned PR type.uintmax_t.size=8 PR type.long long.align=8 PR type.long long.sign=signed PR type.long long.size=8 PR type.signed long long.align=8 PR type.signed long long.sign=signed PR type.signed long long.size=8 PR type.unsigned long long.align=8 PR type.unsigned long long.sign=unsigned PR type.unsigned long long.size=8 PR type.dev_t.align=8 PR type.dev_t.sign=unsigned PR type.dev_t.size=8 PR type.ino_t.align=8 PR type.ino_t.sign=unsigned PR type.ino_t.size=8 PR type.mode_t.align=4 PR type.mode_t.sign=unsigned PR type.mode_t.size=4 PR type.nlink_t.align=8 PR type.nlink_t.sign=unsigned PR type.nlink_t.size=8 PR type.uid_t.align=4 PR type.uid_t.sign=unsigned PR type.uid_t.size=4 PR type.gid_t.align=4 PR type.gid_t.sign=unsigned PR type.gid_t.size=4 PR type.off_t.align=8 PR type.off_t.sign=signed PR type.off_t.size=8 PR type.blksize_t.align=8 PR type.blksize_t.sign=signed PR type.blksize_t.size=8 PR type.blkcnt_t.align=8 PR type.blkcnt_t.sign=signed PR type.blkcnt_t.size=8 PR type.time_t.align=8 PR type.time_t.sign=signed PR type.time_t.size=8 PR type.ptrdiff_t.align=8 PR type.ptrdiff_t.sign=signed PR type.ptrdiff_t.size=8 PR type.wchar_t.align=4 PR type.wchar_t.sign=signed PR type.wchar_t.size=4 PR type.wint_t.align=4 PR type.wint_t.sign=unsigned PR type.wint_t.size=4 PR probe.abi=1 PR probe.alloca=1 PR probe.complex=1 PR probe.longdouble=1 PR probe.recordvalue=1 PR probe.strnlen=1 PR probe.variadic=1 PR abi.unix64=2 PR abi.win64=3 PR abi.efi64=3 PR abi.gnuw64=4 PR abi.default_abi=2 "/usr/bin/perl" "/usr/share/perl/5.40/ExtUtils/xsubpp" -typemap '/usr/share/perl/5.40/ExtUtils/typemap' lib/FFI/Platypus.xs > lib/FFI/Platypus.xsc x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/cast.c -o xs/cast.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/closure.c -o xs/closure.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/complex.c -o xs/complex.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/custom.c -o xs/custom.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/meta.c -o xs/meta.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/names.c -o xs/names.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/perl_math_int64.c -o xs/perl_math_int64.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/record_opaque.c -o xs/record_opaque.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/record_simple.c -o xs/record_simple.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/record_string.c -o xs/record_string.o x86_64-linux-gnu-gcc -c -Iinclude -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" xs/windl.c -o xs/windl.o mv lib/FFI/Platypus.xsc lib/FFI/Platypus.c x86_64-linux-gnu-gcc -c -Iinclude \ -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 \ -DVERSION=\"2.09\" \ -DXS_VERSION=\"2.09\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.40/CORE" lib/FFI/Platypus.c -o lib/FFI/Platypus.o rm -f blib/arch/auto/FFI/Platypus/Platypus.so x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -shared -L/usr/local/lib -fstack-protector-strong lib/FFI/Platypus.o xs/cast.o xs/closure.o xs/complex.o xs/custom.o xs/meta.o xs/names.o xs/perl_math_int64.o xs/record_opaque.o xs/record_simple.o xs/record_string.o xs/windl.o -o blib/arch/auto/FFI/Platypus/Platypus.so \ -lffi \ chmod 755 blib/arch/auto/FFI/Platypus/Platypus.so +pkgconf --cflags libffi +pkgconf --libs libffi [out] -lffi +x86_64-linux-gnu-gcc -Iblib/lib/auto/share/dist/FFI-Platypus/include -Iinclude -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c ffi/constant.c -o ffi/_build/constant.c.o +x86_64-linux-gnu-gcc -Iblib/lib/auto/share/dist/FFI-Platypus/include -Iinclude -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c ffi/memory.c -o ffi/_build/memory.c.o +x86_64-linux-gnu-gcc -Iblib/lib/auto/share/dist/FFI-Platypus/include -Iinclude -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c ffi/record_meta.c -o ffi/_build/record_meta.c.o +x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -shared -L/usr/local/lib -fstack-protector-strong ffi/_build/constant.c.o ffi/_build/memory.c.o ffi/_build/record_meta.c.o -lffi -o blib/lib/auto/share/dist/FFI-Platypus/lib/libplfill.so Manifying 33 pod documents Manifying 10 pod documents make[2]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_test make -j42 test TEST_VERBOSE=1 make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 CC t/ffi/align.c CC t/ffi/align_array.c CC t/ffi/align_fixed.c CC t/ffi/align_string.c CC t/ffi/basic.c CC t/ffi/closure.c CC t/ffi/color.c CC t/ffi/complex_double.c CC t/ffi/complex_float.c CC t/ffi/double.c CC t/ffi/float.c CC t/ffi/gh117.c CC t/ffi/gh174.c CC t/ffi/longdouble.c CC t/ffi/memcmp4.c CC t/ffi/meta.c CC t/ffi/pointer.c CC t/ffi/record.c CC t/ffi/sint16.c CC t/ffi/sint32.c CC t/ffi/sint64.c CC t/ffi/sint8.c CC t/ffi/string.c CC t/ffi/string_array.c CC t/ffi/uint16.c CC t/ffi/uint32.c CC t/ffi/uint64.c CC t/ffi/uint8.c CC t/ffi/variadic.c LD t/ffi/libtest.so PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t # # # # HARNESS_ACTIVE=1 # HARNESS_IS_VERBOSE=1 # HARNESS_VERSION=3.48 # LANG=C # LC_ALL=C # PERL5LIB=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib:/build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # PERL_DL_NONLAZY=1 # PERL_USE_UNSAFE_INC=1 # SHELL=/bin/bash # # # # PERL5LIB path # /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib # /build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # # # # perl 5.040000 linux x86_64-linux-gnu-thread-multi # Alien::Base - # Alien::FFI - # Capture::Tiny 0.48 # Devel::Hide - # ExtUtils::CBuilder 0.280240 # ExtUtils::MakeMaker 7.70 # ExtUtils::ParseXS 3.51 # FFI::CheckLib 0.31 # File::Spec::Functions 3.91 # IPC::Cmd 1.04 # JSON::PP 4.16 # List::Util 1.63 # Math::LongDouble - # PkgConfig - # Test2::API 1.302199 # Test2::V0 0.000163 # autodie 2.37 # constant 1.33 # forks - # parent 0.241 # # # # mode : system # Alien::FFI::pkgconfig->VERSION = # Alien::FFI::pkgconfig->install_type = system # Alien::FFI::pkgconfig->cflags = # Alien::FFI::pkgconfig->libs = -lffi # Alien::FFI::pkgconfig->version = 3.4.6 # # # # ffi.platypus.memory.strdup_impl =libc # ffi.platypus.memory.strndup_impl=libc # # # # Types: # complex_double : double complex # complex_float : float complex # complex_longdouble : long double complex # double : double # float : float # longdouble : long double # sint16 : int16_t, short, signed short # sint32 : int, int32_t, senum, signed int, wchar_t # sint64 : blkcnt_t, blksize_t, int64_t, intmax_t, intptr_t, long, long long, off_t, ptrdiff_t, signed long, signed long long, ssize_t, time_t # sint8 : char, int8_t, signed char # uint16 : uint16_t, unsigned short, ushort # uint32 : enum, gid_t, mode_t, uid_t, uint, uint32_t, unsigned int, wint_t # uint64 : dev_t, ino_t, nlink_t, size_t, uint64_t, uintmax_t, uintptr_t, ulong, unsigned long, unsigned long long # uint8 : bool, uchar, uint8_t, unsigned char # # # # ABIs: # default_abi 2 # efi64 3 # gnuw64 4 # unix64 2 # win64 3 # # # # Probes: # bigendian 0 # variadic 1 # abi 1 # longdouble 1 # complex 1 # recordvalue 1 # strnlen 1 # bigendian64 0 # alloca 1 # # # # CPU Info: # model name : Intel Core Processor (Haswell) # flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveopt arat vnmi md_clear # address sizes : 40 bits physical, 48 bits virtual # # # # [PLATFORM] # osname : linux # cc : x86_64-linux-gnu-gcc # cxx : x86_64-linux-gnu-g++ # cxxld : x86_64-linux-gnu-g++ # for : --- # ld : x86_64-linux-gnu-gcc # ccflags : -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include # ldflags : -shared -L/usr/local/lib -fstack-protector-strong # object suffix : .o # library prefix : lib # library suffix : .so # cc mm works : -MM # # # t/00_diag.t .............................. ok 1 - okay 1..1 ok t/ffi_build.t ............................ ok 1 - basic { ok 1 - FFI::Build=HASH->isa('FFI::Build') ok 2 - foo is somewhere in the native name for the lib # lib.file.path = ./libfoo.so ok 3 - dir is a dir ok 4 - FFI::Build::Platform=HASH->isa('FFI::Build::Platform') ok 5 - FFI::Build::File::C=HASH->isa('FFI::Build::File::C') 1..5 } ok 2 - file classes { ok 1 - at least one # class = FFI::Build::File::C # class = FFI::Build::File::CXX # class = FFI::Build::File::Library # class = FFI::Build::File::Object # class = FFI::Build::File::Foo1 # class = FFI::Build::File::Foo2 1..1 } ok 3 - build { ok 1 - name { # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo1.c.o # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo2.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/oMVzku7xs5/libfoo.so ok 2 ok 3 1..3 } ok 2 - object { # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/_build/foo1.c.o corpus/ffi_build/project1/_build/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/nVfBuZduqU/libfoo.so ok 2 ok 3 1..3 } ok 3 - array { # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo1.c.o # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo2.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/vD5TN7S1nq/libfoo.so ok 2 ok 3 1..3 } 1..3 } ok 4 - build c++ { # corpus/ffi_build/project-cxx/foo1.cxx # corpus/ffi_build/project-cxx/foo2.cpp ok 1 - no error # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo1.cxx -o corpus/ffi_build/project-cxx/tmpbuild.1969527.1766578526/foo1.o # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo2.cpp -o corpus/ffi_build/project-cxx/tmpbuild.1969527.1766578526/foo2.o # +x86_64-linux-gnu-g++ -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project-cxx/tmpbuild.1969527.1766578526/foo1.o corpus/ffi_build/project-cxx/tmpbuild.1969527.1766578526/foo2.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/tmpbuild.buNUkB/libfoo.so ok 2 - foo1 found ok 3 - foo2 found ok 4 ok 5 1..5 } ok 5 - alien { 1..0 # SKIP Test requires Acme::Alien::DontPanic 1.03 } 1..5 ok t/ffi_build_file_base.t .................. ok 1 - basic { ok 1 - basic usage { ok 1 # error = content is required at t/ffi_build_file_base.t line 16. 1..1 } ok 2 - array filename { ok 1 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Base') ok 2 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Foo') ok 3 - stringifies to path ok 4 ok 5 - is_temp ok 6 - basename ok 7 - dirname # dirname = corpus/ffi_build_file_base ok 8 - No forward slashes! ok 9 - native name # native = corpus/ffi_build_file_base/basic.foo 1..9 } ok 3 - string filename { ok 1 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Base') ok 2 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Foo') ok 3 ok 4 - is_temp ok 5 - No forward slashes! 1..5 } ok 4 - string ref { ok 1 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Base') ok 2 - FFI::Build::File::Foo=HASH->isa('FFI::Build::File::Foo') ok 3 - has the correct extension ok 4 - is_temp ok 5 # path: /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_52iZIB.foo ok 6 - No forward slashes! ok 7 - file exists ok 8 - file is removed after destroy 1..8 } ok 5 - string ref keep { ok 1 ok 2 - file exists ok 3 - No forward slashes! ok 4 - file exists after undef 1..4 } 1..5 } 1..1 ok t/ffi_build_file_c.t ..................... ok 1 - basic { ok 1 - FFI::Build::File::C=HASH->isa('FFI::Build::File::C') ok 2 - FFI::Build::File::C=HASH->isa('FFI::Build::File::Base') ok 3 ok 4 1..4 } ok 2 - compile { ok 1 - FFI::Build::File::Object=HASH->isa('FFI::Build::File::Object') ok 2 1..2 } ok 3 - headers { ok 1 - no die ok 2 - dep is a file: corpus/ffi_build_file_c/foo2.c ok 3 - dep is a file: corpus/ffi_build_file_c/include/myfoo.h 1..3 } 1..3 ok t/ffi_build_file_cxx.t ................... ok 1 - basic { ok 1 - FFI::Build::File::CXX=HASH->isa('FFI::Build::File::CXX') ok 2 - FFI::Build::File::CXX=HASH->isa('FFI::Build::File::C') ok 3 - FFI::Build::File::CXX=HASH->isa('FFI::Build::File::Base') ok 4 ok 5 1..5 } ok 2 - compile { ok 1 - FFI::Build::File::Object=HASH->isa('FFI::Build::File::Object') ok 2 1..2 } ok 3 - headers { ok 1 - no die ok 2 - dep is afile: corpus/ffi_build_file_cxx/foo2.cpp ok 3 - dep is afile: corpus/ffi_build_file_cxx/include/myfoo.h 1..3 } 1..3 ok t/ffi_build_file_library.t ............... ok 1 - basic { ok 1 ok 2 # path = corpus/basic.so 1..2 } 1..1 ok t/ffi_build_file_object.t ................ ok 1 - basic { ok 1 ok 2 # path = corpus/basic.o 1..2 } 1..1 ok t/ffi_build_mm.t ......................... ok 1 - basic { ok 1 - FFI::Build::MM=HASH->isa('FFI::Build::MM') ok 2 ok 3 ok 4 ok 5 - build with fbx file { ok 1 - FFI::Build=HASH->isa('FFI::Build') ok 2 1..2 } ok 6 - build with fbx file with errors { ok 1 - caught compile error in fbx file 1..1 } ok 7 - build with default { ok 1 - FFI::Build=HASH->isa('FFI::Build') ok 2 1..2 } ok 8 # [postamble] # .PHONY: fbx_build ffi fbx_test ffi-test fbx_clean ffi-clean # # realclean :: fbx_clean # # fbx_clean ffi-clean: # $(FULLPERL) -MFFI::Build::MM=cmd -e fbx_clean # # pure_all :: fbx_build # # fbx_build ffi: # $(FULLPERL) -MFFI::Build::MM=cmd -e fbx_build # # subdirs-test_dynamic subdirs-test_static subdirs-test :: fbx_test # # fbx_test ffi-test: # $(FULLPERL) -MFFI::Build::MM=cmd -e fbx_test # # ok 9 ok 10 1..10 } ok 2 - with a build! { ok 1 - namespace is clean { ok 1 - fbx_build not imported yet ok 2 - fbx_test not imported yet ok 3 - fbx_clean not imported yet 1..3 } ok 2 - do not save on request { ok 1 1..1 } ok 3 - perl Makefile.PL { ok 1 1..1 } ok 4 - import { ok 1 - fbx_build not imported yet ok 2 - fbx_test not imported yet ok 3 - fbx_clean not imported yet 1..3 } ok 5 - make { # CC ffi/x.c # CC ffi/y.c # CC ffi/z.c # LD blib/lib/auto/share/dist/Crock-O-Stimpy/lib/libCrock-O-Stimpy.so ok 1 ok 2 # lib=blib/lib/auto/share/dist/Crock-O-Stimpy/lib/libCrock-O-Stimpy.so ok 3 1..3 } ok 6 - make test { # CC t/ffi/a.c # CC t/ffi/b.c # CC t/ffi/c.c # LD t/ffi/_build/libtest.so ok 1 1..1 } ok 7 - make clean { ok 1 1..1 } 1..7 } ok 3 - alien { 1..0 # SKIP todo } 1..3 ok t/ffi_build_platform.t ................... ok 1 - basic { ok 1 - FFI::Build::Platform=HASH->isa('FFI::Build::Platform') # osname : linux # cc : x86_64-linux-gnu-gcc # cxx : x86_64-linux-gnu-g++ # cxxld : x86_64-linux-gnu-g++ # for : --- # ld : x86_64-linux-gnu-gcc # ccflags : -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include # ldflags : -shared -L/usr/local/lib -fstack-protector-strong # object suffix : .o # library prefix : lib # library suffix : .so # cc mm works : -MM 1..1 } ok 2 - cc mm works { # CC (checkfor -MM) ok 1 # cc_mm_works = -MM 1..1 } 1..2 ok t/ffi_build_plugin.t ..................... # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # @INC[]=/etc/perl # @INC[]=/usr/local/lib/x86_64-linux-gnu/perl/5.40.0 # @INC[]=/usr/local/share/perl/5.40.0 # @INC[]=/usr/lib/x86_64-linux-gnu/perl5/5.40 # @INC[]=/usr/share/perl5 # @INC[]=/usr/lib/x86_64-linux-gnu/perl-base # @INC[]=/usr/lib/x86_64-linux-gnu/perl/5.40 # @INC[]=/usr/share/perl/5.40 # @INC[]=/usr/local/lib/site_perl # @INC[]=. ok 1 - works with local config # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/blib/arch # @INC[]=/etc/perl # @INC[]=/usr/local/lib/x86_64-linux-gnu/perl/5.40.0 # @INC[]=/usr/local/share/perl/5.40.0 # @INC[]=/usr/lib/x86_64-linux-gnu/perl5/5.40 # @INC[]=/usr/share/perl5 # @INC[]=/usr/lib/x86_64-linux-gnu/perl-base # @INC[]=/usr/lib/x86_64-linux-gnu/perl/5.40 # @INC[]=/usr/share/perl/5.40 # @INC[]=/usr/local/lib/site_perl # @INC[]=. # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/corpus/ffi_build_plugin/lib2 ok 2 - works with local + empty dir # @INC[]=/build/reproducible-path/libffi-platypus-perl-2.09/corpus/ffi_build_plugin/lib2 ok 3 1..3 ok t/ffi_build_plugindata.t ................. ok 1 ok 2 ok 3 1..3 ok t/ffi_platypus.t ......................... ok 1 - constructor { ok 1 - basic { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') 1..1 } ok 2 - no arguments { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') ok 2 - ffi.lib 1..2 } ok 3 - with single lib { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') ok 2 - ffi.lib 1..2 } ok 4 - with multiple lib { ok 1 - FFI::Platypus=HASH->isa('FFI::Platypus') ok 2 - ffi.lib 1..2 } 1..4 } ok 2 - abi { ok 1 - has a default ABI ok 2 - efi64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 3 - unix64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 4 - win64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 5 - gnuw64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 6 - default_abi { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } ok 7 - bogus { ok 1 - string ok 2 - integer 1..2 } 1..7 } ok 3 - alignof { ok 1 - ffi types { ok 1 - alignof sint8 = 1 ok 2 ok 3 - alignof sint8 [2] = 1 ok 4 - alignof sint8 * = 8 ok 5 - alignof custom_sint8 = 1 ok 6 - alignof uint8 = 1 ok 7 ok 8 - alignof uint8 [2] = 1 ok 9 - alignof uint8 * = 8 ok 10 - alignof custom_uint8 = 1 ok 11 - alignof sint16 = 2 ok 12 ok 13 - alignof sint16 [2] = 2 ok 14 - alignof sint16 * = 8 ok 15 - alignof custom_sint16 = 2 ok 16 - alignof uint16 = 2 ok 17 ok 18 - alignof uint16 [2] = 2 ok 19 - alignof uint16 * = 8 ok 20 - alignof custom_uint16 = 2 ok 21 - alignof sint32 = 4 ok 22 ok 23 - alignof sint32 [2] = 4 ok 24 - alignof sint32 * = 8 ok 25 - alignof custom_sint32 = 4 ok 26 - alignof uint32 = 4 ok 27 ok 28 - alignof uint32 [2] = 4 ok 29 - alignof uint32 * = 8 ok 30 - alignof custom_uint32 = 4 ok 31 - alignof sint64 = 8 ok 32 ok 33 - alignof sint64 [2] = 8 ok 34 - alignof sint64 * = 8 ok 35 - alignof custom_sint64 = 8 ok 36 - alignof uint64 = 8 ok 37 ok 38 - alignof uint64 [2] = 8 ok 39 - alignof uint64 * = 8 ok 40 - alignof custom_uint64 = 8 ok 41 - alignof float = 4 ok 42 ok 43 - alignof float [2] = 4 ok 44 - alignof float * = 8 ok 45 - alignof custom_float = 4 ok 46 - alignof double = 8 ok 47 ok 48 - alignof double [2] = 8 ok 49 - alignof double * = 8 ok 50 - alignof custom_double = 8 ok 51 - alignof opaque = 8 ok 52 ok 53 - alignof opaque [2] = 8 ok 54 - alignof opaque * = 8 ok 55 - alignof custom_opaque = 8 ok 56 - alignof string = 8 ok 57 1..57 } ok 2 - aliases { ok 1 - alignof ushort = 2 ok 2 - alignof foo = 2 1..2 } ok 3 - closure { ok 1 - sizeof closure_t = 8 1..1 } ok 4 - record { ok 1 # {'ffi_type' => 'pointer','ref' => 0,'size' => 22,'type' => 'record','type_code' => 2308} 1..1 } 1..4 } ok 4 - custom type { ok 1 - float { ok 1 - ffi.custom_type 1 # {'float_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 2 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 3 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 4 - ffi.custom_type 1 # {'float_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 5 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} ok 6 - ffi.custom_type 1 # {'float_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'custom_perl','type_code' => 12355}} 1..6 } ok 2 - double { ok 1 - ffi.custom_type 1 # {'double_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 2 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 3 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 4 - ffi.custom_type 1 # {'double_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 5 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} ok 6 - ffi.custom_type 1 # {'double_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'custom_perl','type_code' => 12356}} 1..6 } ok 3 - opaque { ok 1 - ffi.custom_type 1 # {'opaque_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 2 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 3 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 4 - ffi.custom_type 1 # {'opaque_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 5 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} ok 6 - ffi.custom_type 1 # {'opaque_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'custom_perl','type_code' => 12548}} 1..6 } ok 4 - uint8 { ok 1 - ffi.custom_type 1 # {'uint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 2 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 3 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 4 - ffi.custom_type 1 # {'uint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 5 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} ok 6 - ffi.custom_type 1 # {'uint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'custom_perl','type_code' => 12321}} 1..6 } ok 5 - sint8 { ok 1 - ffi.custom_type 1 # {'sint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 2 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 3 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 4 - ffi.custom_type 1 # {'sint8_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 5 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} ok 6 - ffi.custom_type 1 # {'sint8_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'custom_perl','type_code' => 12305}} 1..6 } ok 6 - uint16 { ok 1 - ffi.custom_type 1 # {'uint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 2 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 3 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 4 - ffi.custom_type 1 # {'uint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 5 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} ok 6 - ffi.custom_type 1 # {'uint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'custom_perl','type_code' => 12322}} 1..6 } ok 7 - sint16 { ok 1 - ffi.custom_type 1 # {'sint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 2 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 3 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 4 - ffi.custom_type 1 # {'sint16_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 5 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} ok 6 - ffi.custom_type 1 # {'sint16_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'custom_perl','type_code' => 12306}} 1..6 } ok 8 - uint32 { ok 1 - ffi.custom_type 1 # {'uint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 2 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 3 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 4 - ffi.custom_type 1 # {'uint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 5 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} ok 6 - ffi.custom_type 1 # {'uint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'custom_perl','type_code' => 12323}} 1..6 } ok 9 - sint32 { ok 1 - ffi.custom_type 1 # {'sint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 2 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 3 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 4 - ffi.custom_type 1 # {'sint32_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 5 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} ok 6 - ffi.custom_type 1 # {'sint32_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'custom_perl','type_code' => 12307}} 1..6 } ok 10 - uint64 { ok 1 - ffi.custom_type 1 # {'uint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 2 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 3 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 4 - ffi.custom_type 1 # {'uint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 5 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} ok 6 - ffi.custom_type 1 # {'uint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'custom_perl','type_code' => 12324}} 1..6 } ok 11 - sint64 { ok 1 - ffi.custom_type 1 # {'sint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 2 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 3 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 4 - ffi.custom_type 1 # {'sint64_1' => {'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 5 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} ok 6 - ffi.custom_type 1 # {'sint64_1' => {'custom_native_to_p' => \sub { "DUMMY" },'custom_perl_to_nat' => \sub { "DUMMY" },'custom_perl_to_native_p' => \sub { "DUMMY" },'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'custom_perl','type_code' => 12308}} 1..6 } 1..11 } ok 5 - find lib { ok 1 - find_lib { ok 1 - found f0 = 140684102787952 1..1 } ok 2 - external { ok 1 - ffi.find_symbol(f0) = 140684102787952 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } ok 3 - internal { ok 1 - ffi.find_symbol(printf) = 140684104139200 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } 1..3 } ok 6 - find symbol { ok 1 - external { ok 1 - ffi.find_symbol(f0) = 140684102787952 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } ok 2 - internal { ok 1 - ffi.find_symbol(printf) = 140684104139200 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } 1..2 } ok 7 - lib { ok 1 - basic { ok 1 - exists t/ffi/libtest.so ok 2 - ffi.lib (set) ok 3 - ffi.lib (get) 1..3 } ok 2 - undef { ok 1 - baseline { ok 1 1..1 } ok 2 - lib => [undef] { ok 1 1..1 } ok 3 - lib => undef { ok 1 1..1 } 1..3 } ok 3 - coderef { ok 1 - exists t/ffi/libtest.so ok 2 - ffi.lib (set) ok 3 - ffi.lib (get) 1..3 } 1..3 } ok 8 - sizeof { ok 1 - integers { ok 1 - sizeof uint8 = 1 ok 2 - sizeof uint16 = 2 ok 3 - sizeof uint32 = 4 ok 4 - sizeof uint64 = 8 ok 5 - sizeof sint8 = 1 ok 6 - sizeof sint16 = 2 ok 7 - sizeof sint32 = 4 ok 8 - sizeof sint64 = 8 1..8 } ok 2 - class methods { ok 1 - sizeof uint8 = 1 ok 2 - sizeof uint16 = 2 ok 3 - sizeof uint32 = 4 ok 4 - sizeof uint64 = 8 ok 5 - sizeof sint8 = 1 ok 6 - sizeof sint16 = 2 ok 7 - sizeof sint32 = 4 ok 8 - sizeof sint64 = 8 1..8 } ok 3 - floats { ok 1 - sizeof float = 4 ok 2 - sizeof double = 8 1..2 } ok 4 - pointers { ok 1 - sizeof opaque = 8 ok 2 - sizeof uint8* = 8 ok 3 - sizeof uint16* = 8 ok 4 - sizeof uint32* = 8 ok 5 - sizeof uint64* = 8 ok 6 - sizeof sint8* = 8 ok 7 - sizeof sint16* = 8 ok 8 - sizeof sint32* = 8 ok 9 - sizeof sint64* = 8 ok 10 - sizeof float* = 8 ok 11 - sizeof double* = 8 ok 12 - sizeof opaque* = 8 ok 13 - sizeof string = 8 ok 14 - sizeof (int)->int = 8 1..14 } ok 5 - arrays { ok 1 - sizeof uint8 [32] = 1 ok 2 - sizeof uint8 [32] = 2 ok 3 - sizeof uint8 [32] = 3 ok 4 - sizeof uint8 [32] = 4 ok 5 - sizeof uint8 [32] = 5 ok 6 - sizeof uint8 [32] = 6 ok 7 - sizeof uint8 [32] = 7 ok 8 - sizeof uint8 [32] = 8 ok 9 - sizeof uint8 [32] = 9 ok 10 - sizeof uint8 [32] = 10 ok 11 - sizeof uint16 [32] = 2 ok 12 - sizeof uint16 [32] = 4 ok 13 - sizeof uint16 [32] = 6 ok 14 - sizeof uint16 [32] = 8 ok 15 - sizeof uint16 [32] = 10 ok 16 - sizeof uint16 [32] = 12 ok 17 - sizeof uint16 [32] = 14 ok 18 - sizeof uint16 [32] = 16 ok 19 - sizeof uint16 [32] = 18 ok 20 - sizeof uint16 [32] = 20 ok 21 - sizeof uint32 [32] = 4 ok 22 - sizeof uint32 [32] = 8 ok 23 - sizeof uint32 [32] = 12 ok 24 - sizeof uint32 [32] = 16 ok 25 - sizeof uint32 [32] = 20 ok 26 - sizeof uint32 [32] = 24 ok 27 - sizeof uint32 [32] = 28 ok 28 - sizeof uint32 [32] = 32 ok 29 - sizeof uint32 [32] = 36 ok 30 - sizeof uint32 [32] = 40 ok 31 - sizeof uint64 [32] = 8 ok 32 - sizeof uint64 [32] = 16 ok 33 - sizeof uint64 [32] = 24 ok 34 - sizeof uint64 [32] = 32 ok 35 - sizeof uint64 [32] = 40 ok 36 - sizeof uint64 [32] = 48 ok 37 - sizeof uint64 [32] = 56 ok 38 - sizeof uint64 [32] = 64 ok 39 - sizeof uint64 [32] = 72 ok 40 - sizeof uint64 [32] = 80 ok 41 - sizeof sint8 [32] = 1 ok 42 - sizeof sint8 [32] = 2 ok 43 - sizeof sint8 [32] = 3 ok 44 - sizeof sint8 [32] = 4 ok 45 - sizeof sint8 [32] = 5 ok 46 - sizeof sint8 [32] = 6 ok 47 - sizeof sint8 [32] = 7 ok 48 - sizeof sint8 [32] = 8 ok 49 - sizeof sint8 [32] = 9 ok 50 - sizeof sint8 [32] = 10 ok 51 - sizeof sint16 [32] = 2 ok 52 - sizeof sint16 [32] = 4 ok 53 - sizeof sint16 [32] = 6 ok 54 - sizeof sint16 [32] = 8 ok 55 - sizeof sint16 [32] = 10 ok 56 - sizeof sint16 [32] = 12 ok 57 - sizeof sint16 [32] = 14 ok 58 - sizeof sint16 [32] = 16 ok 59 - sizeof sint16 [32] = 18 ok 60 - sizeof sint16 [32] = 20 ok 61 - sizeof sint32 [32] = 4 ok 62 - sizeof sint32 [32] = 8 ok 63 - sizeof sint32 [32] = 12 ok 64 - sizeof sint32 [32] = 16 ok 65 - sizeof sint32 [32] = 20 ok 66 - sizeof sint32 [32] = 24 ok 67 - sizeof sint32 [32] = 28 ok 68 - sizeof sint32 [32] = 32 ok 69 - sizeof sint32 [32] = 36 ok 70 - sizeof sint32 [32] = 40 ok 71 - sizeof sint64 [32] = 8 ok 72 - sizeof sint64 [32] = 16 ok 73 - sizeof sint64 [32] = 24 ok 74 - sizeof sint64 [32] = 32 ok 75 - sizeof sint64 [32] = 40 ok 76 - sizeof sint64 [32] = 48 ok 77 - sizeof sint64 [32] = 56 ok 78 - sizeof sint64 [32] = 64 ok 79 - sizeof sint64 [32] = 72 ok 80 - sizeof sint64 [32] = 80 ok 81 - sizeof float [32] = 4 ok 82 - sizeof float [32] = 8 ok 83 - sizeof float [32] = 12 ok 84 - sizeof float [32] = 16 ok 85 - sizeof float [32] = 20 ok 86 - sizeof float [32] = 24 ok 87 - sizeof float [32] = 28 ok 88 - sizeof float [32] = 32 ok 89 - sizeof float [32] = 36 ok 90 - sizeof float [32] = 40 ok 91 - sizeof double [32] = 8 ok 92 - sizeof double [32] = 16 ok 93 - sizeof double [32] = 24 ok 94 - sizeof double [32] = 32 ok 95 - sizeof double [32] = 40 ok 96 - sizeof double [32] = 48 ok 97 - sizeof double [32] = 56 ok 98 - sizeof double [32] = 64 ok 99 - sizeof double [32] = 72 ok 100 - sizeof double [32] = 80 ok 101 - sizeof opaque [32] = 8 ok 102 - sizeof opaque [32] = 16 ok 103 - sizeof opaque [32] = 24 ok 104 - sizeof opaque [32] = 32 ok 105 - sizeof opaque [32] = 40 ok 106 - sizeof opaque [32] = 48 ok 107 - sizeof opaque [32] = 56 ok 108 - sizeof opaque [32] = 64 ok 109 - sizeof opaque [32] = 72 ok 110 - sizeof opaque [32] = 80 1..110 } ok 6 - custom_type { ok 1 - sizeof my_uint8 = 1 ok 2 - sizeof my_uint16 = 2 ok 3 - sizeof my_uint32 = 4 ok 4 - sizeof my_uint64 = 8 ok 5 - sizeof my_sint8 = 1 ok 6 - sizeof my_sint16 = 2 ok 7 - sizeof my_sint32 = 4 ok 8 - sizeof my_sint64 = 8 ok 9 - sizeof my_float = 4 ok 10 - sizeof my_double = 8 ok 11 - sizeof my_opaque = 8 1..11 } 1..6 } ok 9 - type { ok 1 - simple type { ok 1 - ffi.type(sint8) 1..1 } ok 2 - aliased type { ok 1 - ffi.type(sint8 => my_integer_8) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - ffi.types returns my_integer_8 1..3 } ok 3 - ffi basic types { ok 1 - sint8 { ok 1 - ffi.type(sint8) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'scalar','type_code' => 17} # ok 2 - size = 1 1..2 } ok 2 - uint8 { ok 1 - ffi.type(uint8) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'scalar','type_code' => 33} # ok 2 - size = 1 1..2 } ok 3 - sint16 { ok 1 - ffi.type(sint16) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'scalar','type_code' => 18} # ok 2 - size = 2 1..2 } ok 4 - uint16 { ok 1 - ffi.type(uint16) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'scalar','type_code' => 34} # ok 2 - size = 2 1..2 } ok 5 - sint32 { ok 1 - ffi.type(sint32) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19} # ok 2 - size = 4 1..2 } ok 6 - uint32 { ok 1 - ffi.type(uint32) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'scalar','type_code' => 35} # ok 2 - size = 4 1..2 } ok 7 - sint64 { ok 1 - ffi.type(sint64) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'scalar','type_code' => 20} # ok 2 - size = 8 1..2 } ok 8 - uint64 { ok 1 - ffi.type(uint64) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'scalar','type_code' => 36} # ok 2 - size = 8 1..2 } ok 9 - float { ok 1 - ffi.type(float) # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'scalar','type_code' => 67} # ok 2 - size = 4 1..2 } ok 10 - double { ok 1 - ffi.type(double) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'scalar','type_code' => 68} # ok 2 - size = 8 1..2 } ok 11 - opaque { ok 1 - ffi.type(opaque) # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'scalar','type_code' => 260} # ok 2 - size = 8 1..2 } ok 12 - string { ok 1 - ffi.type(string) # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # ok 2 - size = 8 1..2 } ok 13 - longdouble { ok 1 - ffi.type(longdouble) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 16,'type' => 'scalar','type_code' => 69} # ok 2 - size = 16 1..2 } ok 14 - complex_float { ok 1 - ffi.type(complex_float) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'complex_float','size' => 8,'type' => 'scalar','type_code' => 132} # ok 2 - size = 8 1..2 } ok 15 - complex_double { ok 1 - ffi.type(complex_double) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'complex_double','size' => 16,'type' => 'scalar','type_code' => 133} # ok 2 - size = 16 1..2 } 1..15 } ok 4 - ffi pointer types { ok 1 - sint8 * { ok 1 - ffi.type(sint8 *) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4113} # ok 2 - size = 8 1..2 } ok 2 - uint8 * { ok 1 - ffi.type(uint8 *) # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4129} # ok 2 - size = 8 1..2 } ok 3 - sint16 * { ok 1 - ffi.type(sint16 *) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4114} # ok 2 - size = 8 1..2 } ok 4 - uint16 * { ok 1 - ffi.type(uint16 *) # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4130} # ok 2 - size = 8 1..2 } ok 5 - sint32 * { ok 1 - ffi.type(sint32 *) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4115} # ok 2 - size = 8 1..2 } ok 6 - uint32 * { ok 1 - ffi.type(uint32 *) # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4131} # ok 2 - size = 8 1..2 } ok 7 - sint64 * { ok 1 - ffi.type(sint64 *) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4116} # ok 2 - size = 8 1..2 } ok 8 - uint64 * { ok 1 - ffi.type(uint64 *) # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4132} # ok 2 - size = 8 1..2 } ok 9 - float * { ok 1 - ffi.type(float *) # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 8,'type' => 'pointer','type_code' => 4163} # ok 2 - size = 8 1..2 } ok 10 - double * { ok 1 - ffi.type(double *) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'pointer','type_code' => 4164} # ok 2 - size = 8 1..2 } ok 11 - opaque * { ok 1 - ffi.type(opaque *) # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'pointer','type_code' => 4356} # ok 2 - size = 8 1..2 } ok 12 - string * { 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE POINTER } ok 13 - longdouble * { ok 1 - ffi.type(longdouble *) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 8,'type' => 'pointer','type_code' => 4165} # ok 2 - size = 8 1..2 } ok 14 - complex_float * { ok 1 - ffi.type(complex_float *) # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'complex_float','size' => 8,'type' => 'pointer','type_code' => 4228} # ok 2 - size = 8 1..2 } ok 15 - complex_double * { ok 1 - ffi.type(complex_double *) # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'complex_double','size' => 8,'type' => 'pointer','type_code' => 4229} # ok 2 - size = 8 1..2 } 1..15 } ok 5 - ffi array types { ok 1 - sint8 [5] { ok 1 - ffi.type(sint8 [5]) # {'element_count' => 5,'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 5,'type' => 'array','type_code' => 8209} # ok 2 - size = 5 ok 3 - size = 5 1..3 } ok 2 - uint8 [7] { ok 1 - ffi.type(uint8 [7]) # {'element_count' => 7,'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 7,'type' => 'array','type_code' => 8225} # ok 2 - size = 7 ok 3 - size = 7 1..3 } ok 3 - sint16 [9] { ok 1 - ffi.type(sint16 [9]) # {'element_count' => 9,'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 18,'type' => 'array','type_code' => 8210} # ok 2 - size = 18 ok 3 - size = 9 1..3 } ok 4 - uint16 [11] { ok 1 - ffi.type(uint16 [11]) # {'element_count' => 11,'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 22,'type' => 'array','type_code' => 8226} # ok 2 - size = 22 ok 3 - size = 11 1..3 } ok 5 - sint32 [13] { ok 1 - ffi.type(sint32 [13]) # {'element_count' => 13,'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 52,'type' => 'array','type_code' => 8211} # ok 2 - size = 52 ok 3 - size = 13 1..3 } ok 6 - uint32 [15] { ok 1 - ffi.type(uint32 [15]) # {'element_count' => 15,'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 60,'type' => 'array','type_code' => 8227} # ok 2 - size = 60 ok 3 - size = 15 1..3 } ok 7 - sint64 [17] { ok 1 - ffi.type(sint64 [17]) # {'element_count' => 17,'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 136,'type' => 'array','type_code' => 8212} # ok 2 - size = 136 ok 3 - size = 17 1..3 } ok 8 - uint64 [19] { ok 1 - ffi.type(uint64 [19]) # {'element_count' => 19,'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 152,'type' => 'array','type_code' => 8228} # ok 2 - size = 152 ok 3 - size = 19 1..3 } ok 9 - float [21] { ok 1 - ffi.type(float [21]) # {'element_count' => 21,'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 84,'type' => 'array','type_code' => 8259} # ok 2 - size = 84 ok 3 - size = 21 1..3 } ok 10 - double [23] { ok 1 - ffi.type(double [23]) # {'element_count' => 23,'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 184,'type' => 'array','type_code' => 8260} # ok 2 - size = 184 ok 3 - size = 23 1..3 } ok 11 - opaque [25] { ok 1 - ffi.type(opaque [25]) # {'element_count' => 25,'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 200,'type' => 'array','type_code' => 8452} # ok 2 - size = 200 ok 3 - size = 25 1..3 } ok 12 - string [27] { 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE ARRAY } ok 13 - longdouble [29] { ok 1 - ffi.type(longdouble [29]) # {'element_count' => 29,'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 464,'type' => 'array','type_code' => 8261} # ok 2 - size = 464 ok 3 - size = 29 1..3 } ok 14 - complex_float [31] { ok 1 - ffi.type(complex_float [31]) # {'element_count' => 31,'element_size' => 8,'element_type' => 'float','ffi_type' => 'complex_float','size' => 248,'type' => 'array','type_code' => 8324} # ok 2 - size = 248 ok 3 - size = 31 1..3 } ok 15 - complex_double [33] { ok 1 - ffi.type(complex_double [33]) # {'element_count' => 33,'element_size' => 16,'element_type' => 'float','ffi_type' => 'complex_double','size' => 528,'type' => 'array','type_code' => 8325} # ok 2 - size = 528 ok 3 - size = 33 1..3 } 1..15 } ok 6 - closure types { ok 1 - (int)->int is a legal closure type # {'element_size' => 8,'ffi_type' => 'pointer','signature' => [[{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19}],{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19}],'size' => 8,'type' => 'closure','type_code' => 1284} # ok 2 - skipped test # skip arrays not currently supported as closure argument types ok 3 - inline closure illegal ok 4 - argument type closure illegal ok 5 - return type closure illegal ok 6 - a more complicated closure # {'element_size' => 8,'ffi_type' => 'pointer','signature' => [[{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19},{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19},{'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19},{'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'scalar','type_code' => 17},{'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772},{'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'scalar','type_code' => 260}],{'element_size' => 0,'element_type' => 'void','ffi_type' => 'void','size' => 0,'type' => 'scalar','type_code' => 8}],'size' => 8,'type' => 'closure','type_code' => 1284} # 1..6 } ok 7 - record { # {'ffi_type' => 'pointer','ref' => 0,'size' => 1,'type' => 'record','type_code' => 2308} # # {'ffi_type' => 'pointer','ref' => 0,'size' => 32,'type' => 'record','type_code' => 2308} # ok 1 - sizeof my_record_1 = 1 ok 2 - sizeof my_record_32 = 32 # {'class' => 'My::Record22','ffi_type' => 'pointer','ref' => 1,'size' => 22,'type' => 'record','type_code' => 2308} # # {'class' => 'My::Record44','ffi_type' => 'pointer','ref' => 1,'size' => 44,'type' => 'record','type_code' => 2308} # ok 3 - sizeof my_record_22 = 22 ok 4 - sizeof my_record_44 = 44 1..4 } ok 8 - string { ok 1 - string { ok 1 - sizeof string = 8 ok 2 - access = ro # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 2 - string_rw { ok 1 - sizeof string_rw = 8 ok 2 - access = rw # {'access' => 'rw','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 3 - string_ro { ok 1 - sizeof string_ro = 8 ok 2 - access = ro # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 4 - string rw { ok 1 - sizeof string rw = 8 ok 2 - access = rw # {'access' => 'rw','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 5 - string ro { ok 1 - sizeof string ro = 8 ok 2 - access = ro # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 1..2 } ok 6 - string (10) { ok 1 - is actually a record type ok 2 - sizeof string (10) = 10 # {'ffi_type' => 'pointer','ref' => 0,'size' => 10,'type' => 'record','type_code' => 2308} # 1..2 } ok 7 - string(10) { ok 1 - is actually a record type ok 2 - sizeof string(10) = 10 # {'ffi_type' => 'pointer','ref' => 0,'size' => 10,'type' => 'record','type_code' => 2308} # 1..2 } 1..7 } ok 9 - private { ok 1 - void { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(void) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = void 1..3 } ok 2 - uint8 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint8) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint8 1..3 } ok 3 - sint8 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint8) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint8 1..3 } ok 4 - uint16 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint16) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint16 1..3 } ok 5 - sint16 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint16) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint16 1..3 } ok 6 - uint32 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint32) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint32 1..3 } ok 7 - sint32 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint32) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint32 1..3 } ok 8 - uint64 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(uint64) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = uint64 1..3 } ok 9 - sint64 { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(sint64) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = sint64 1..3 } ok 10 - float { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(float) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = float 1..3 } ok 11 - double { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(double) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = double 1..3 } ok 12 - longdouble { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(longdouble) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = longdouble 1..3 } ok 13 - opaque { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(opaque) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = pointer 1..3 } ok 14 - pointer { 1..0 # SKIP test requires longdouble support } ok 15 - string { ok 1 - type = FFI::Platypus::TypeParser::Version0->new->parse(string) ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 3 - type.meta.ffi_type = pointer 1..3 } 1..15 } 1..9 } ok 10 - class or instance method { ok 1 - class and instance methods are identical # type: blkcnt_t # type: blksize_t # type: bool # type: char # type: complex_double # type: complex_float # type: dev_t # type: double # type: double complex # type: enum # type: float # type: float complex # type: gid_t # type: ino_t # type: int # type: int16_t # type: int32_t # type: int64_t # type: int8_t # type: intmax_t # type: intptr_t # type: long # type: long double # type: long long # type: longdouble # type: mode_t # type: nlink_t # type: off_t # type: opaque # type: pointer # type: ptrdiff_t # type: senum # type: short # type: signed char # type: signed int # type: signed long # type: signed long long # type: signed short # type: sint16 # type: sint32 # type: sint64 # type: sint8 # type: size_t # type: ssize_t # type: string # type: time_t # type: uchar # type: uid_t # type: uint # type: uint16 # type: uint16_t # type: uint32 # type: uint32_t # type: uint64 # type: uint64_t # type: uint8 # type: uint8_t # type: uintmax_t # type: uintptr_t # type: ulong # type: unsigned char # type: unsigned int # type: unsigned long # type: unsigned long long # type: unsigned short # type: ushort # type: void # type: wchar_t # type: wint_t 1..1 } ok 11 - cast { ok 1 - cast from string to pointer { ok 1 - dynamic ok 2 - static 1..2 } ok 2 - cast from pointer to string { ok 1 - dynamic ok 2 - static 1..2 } ok 3 - cast closure to opaque { ok 1 - dynamic ok 2 - dynamic ok 3 - static ok 4 - static 1..4 } ok 4 - attach cast with wrapper { ok 1 ok 2 1..2 } 1..4 } ok 12 - ignore_not_found { ok 1 - ignore_not_found=undef { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 634. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 638. 1..4 } ok 2 - ignore_not_found=0 { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 653. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 657. 1..4 } ok 3 - ignore_not_found=0 (constructor) { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function exception # exception=unable to find bogus at t/ffi_platypus.t line 670. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 674. 1..4 } ok 4 - ignore_not_found=1 { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function no exception ok 4 - f2 is undefined ok 5 - attach no exception 1..5 } ok 5 - ignore_not_found=1 (constructor) { ok 1 - no exception ok 2 - returned a function # f1 isa FFI::Platypus::Function::Function ok 3 - function no exception ok 4 - f2 is undefined ok 5 - attach no exception 1..5 } ok 6 - ignore_not_found bool context { ok 1 - f1 exists and resolved to boolean true ok 2 - f2 does not exist and resolved to boolean false 1..2 } 1..6 } ok 13 - attach basic { ok 1 - f0(22) = 22 ok 2 - f1(22) = 22 ok 3 - Roger::f1(22) = 22 ok 4 - f0_wrap(22) = 25 ok 5 - f0_wrap(22) = 25 1..5 } ok 14 - attach void { ok 1 - $i_ptr = 43 after f2(\$i_ptr) ok 2 - $i_ptr = 44 after f2_implicit(\$i_ptr) 1..2 } ok 15 - customer mangler { ok 1 1..1 } ok 16 - ->package is only allowed for api = 0 { ok 1 - api = 0 { ok 1 1..1 } ok 2 - api = 1 { ok 1 1..1 } 1..2 } ok 17 - warning defaults { ok 1 - api = 0 { ok 1 ok 2 1..2 } ok 2 - api = 1 { # [warning] # warning: error loading corpus/bogus.so: corpus/bogus.so: cannot open shared object file: No such file or directory at /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/FFI/Platypus.pm line 508. ok 1 ok 2 1..2 } 1..2 } ok 18 - language plugin api version { ok 1 - api = 0 { ok 1 1..1 } ok 2 - api = 1 { ok 1 1..1 } 1..2 } ok 19 - language load_custom_types hook { ok 1 ok 2 - FFI::Platypus=HASH->isa('FFI::Platypus') 1..2 } ok 20 - api attribute { ok 1 - default is zero ok 2 - explicit zero ok 3 - explicit one 1..3 } ok 21 - kindof { ok 1 - void ok 2 - scalar ok 3 - pointer ok 4 - array (fixed) ok 5 - array (var) ok 6 - string 1..6 } ok 22 - countof { ok 1 - void ok 2 - scalar ok 3 - pointer ok 4 - array (fixed) ok 5 - array (var) ok 6 - string 1..6 } ok 23 - def { ok 1 - needs to be a real type { ok 1 1..1 } ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 1..10 } ok 24 - unitof { ok 1 - void ok 2 - scalar ok 3 - pointer ok 4 - array (fixed) ok 5 - array (var) ok 6 - string 1..6 } ok 25 - pass undef into closure method should just return undef { ok 1 - no error ok 2 - returns undef 1..2 } 1..25 ok t/ffi_platypus_api.t ..................... ok 1 - basic { ok 1 1..1 } 1..1 ok t/ffi_platypus_buffer.t .................. ok 1 - simple { ok 1 - ptr = 94432494359152 ok 2 - scalar to pointer matches ok 3 - size = 16 ok 4 - scalar = me grimlock king 1..4 } ok 2 - unicode { ok 1 - ptr = 94432505409872 ok 2 - size = 12 ok 3 - scalar = привет 1..3 } ok 3 - grow { ok 1 - B::PV returns consistent string length ok 2 - initial buffer size is smaler than required ok 3 - default options { ok 1 - buffer grew as expected ok 2 - original contents cleared ok 3 - string length == requested buffer length 1..3 } ok 4 - clear { ok 1 - on { ok 1 - buffer grew as expected ok 2 - buffer contents cleared 1..2 } ok 2 - off { ok 1 - buffer grew as expected ok 2 - buffer contents not cleared 1..2 } 1..2 } ok 5 - set_length { ok 1 - on { ok 1 - buffer grew as expected ok 2 - buffer length set 1..2 } ok 2 - off { ok 1 - buffer grew as expected ok 2 - buffer length not cleared 1..2 } 1..2 } ok 6 - bad option { ok 1 - croaked 1..1 } ok 7 - fail on reference { ok 1 - croaked 1..1 } ok 8 - $str = undef { ok 1 - buffer grew as expected 1..1 } ok 9 - undef { ok 1 - croaked 1..1 } 1..9 } ok 4 - set_used_length { ok 1 - length < max { ok 1 - requested length ok 2 - requested string 1..2 } ok 2 - length == max { ok 1 - requested length 1..1 } ok 3 - length > max { ok 1 - maxed out length 1..1 } ok 4 - fail on reference { ok 1 - croaked 1..1 } ok 5 - $str = undef { # TODO is set_used_length undef behavior correct? not ok 1 - no added length # # Failed test (with amnesty) 'no added length' # at t/ffi_platypus_buffer.t line 155. # +-----+----+-------+ # | GOT | OP | CHECK | # +-----+----+-------+ # | 16 | eq | 0 | # +-----+----+-------+ ok 2 - maxed out length # 1..2 } ok 6 - undef { ok 1 - croaked 1..1 } 1..6 } ok 5 - hardwire { ok 1 - ascii { ok 1 ok 2 ok 3 ok 4 ok 5 1..5 } ok 2 - unicode { ok 1 ok 2 ok 3 ok 4 ok 5 1..5 } ok 3 - strlen { ok 1 ok 2 ok 3 1..3 } 1..3 } 1..5 ok t/ffi_platypus_bundle.t .................. ok 1 - from installed { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/jI4qfruS0k/lib/Foo/Bar1.pm] # package Foo::Bar1; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # $ffi->attach("bar1" => [] => 'sint32'); # 1; # spew(end) # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_tHwBzy.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_tHwBzy.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_tHwBzy.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/jI4qfruS0k/lib/auto/share/dist/Foo-Bar1/libbar1.so # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/jI4qfruS0k/lib/auto/Foo/Bar1/Bar1.txt] # FFI::Build@auto/share/dist/Foo-Bar1/libbar1.so # spew(end) ok 1 ok 2 ok 3 ok 4 1..4 } ok 2 - from blib { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/mfSvf5zCDS/lib/Foo/Bar2.pm] # package Foo::Bar2; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # $ffi->attach("bar2" => [] => 'sint32'); # 1; # spew(end) # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_hqXAra.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_hqXAra.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_hqXAra.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/mfSvf5zCDS/lib/auto/share/dist/Foo-Bar2/libbar2.so # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/mfSvf5zCDS/arch/auto/Foo/Bar2/Bar2.txt] # FFI::Build@auto/share/dist/Foo-Bar2/libbar2.so # spew(end) ok 1 ok 2 1..2 } ok 3 - not loaded yet { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/yHCZt02tck/lib/Foo/Bar3.pm] # package Foo::Bar3; # die; # 1; # spew(end) # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_fQ2CYA.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fQ2CYA.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fQ2CYA.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/yHCZt02tck/lib/auto/share/dist/Foo-Bar3/libbar3.so # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/yHCZt02tck/lib/auto/Foo/Bar3/Bar3.txt] # FFI::Build@auto/share/dist/Foo-Bar3/libbar3.so # spew(end) ok 1 1..1 } ok 4 - with a ffi dir { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/iR4gz5vjN9/lib/Foo/Bar4.pm] # package Foo::Bar4; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # $ffi->attach("bar4" => [] => 'sint32'); # 1; # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/iR4gz5vjN9/ffi/foo.c] # int bar4(void) { return 45; } # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/iR4gz5vjN9/ffi/foo.fbx] # use strict; # use warnings; # our $DIR; # { export => ['bar4'], source => ["$DIR/*.c"] }; # spew(end) ok 1 ok 2 1..2 } ok 5 - entry points { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/wyLf6wgoa0/lib/Foo/Bar5.pm] # package Foo::Bar5; # use strict; # use warnings; # use FFI::Platypus; # our $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle([$ffi->cast('(string)->void' => 'opaque', $main::log_closure)]); # 1; # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/wyLf6wgoa0/ffi/foo.c] # #include # #include # # typedef void (*log_t)(const char *); # log_t logit; # char buffer[1024]; # # void # ffi_pl_bundle_init(const char *package, int c, void **args) # { # int i; # logit = (log_t) args[0]; # logit("ffi_pl_bundle_init (enter)"); # sprintf(buffer, "package = %s", package); # logit(buffer); # sprintf(buffer, "c = %d", c); # logit(buffer); # for(i=0; args[i] != NULL; i++) # { # sprintf(buffer, "args[%d] = %d", i, args[i]); # logit(buffer); # } # logit("ffi_pl_bundle_init (leave)"); # } # # void # ffi_pl_bundle_fini(const char *package) # { # logit("ffi_pl_bundle_fini (enter)"); # sprintf(buffer, "package = %s", package); # logit(buffer); # logit("ffi_pl_bundle_fini (leave)"); # } # # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/wyLf6wgoa0/ffi/foo.fbx] # use strict; # use warnings; # our $DIR; # { export => ['ffi_pl_bundle_init','ffi_pl_bundle_fini'], source => ["$DIR/*.c"] }; # spew(end) ok 1 # log:ffi_pl_bundle_init (enter) # log:package = Foo::Bar5 # log:c = 1 # log:args[0] = 1659494416 # log:ffi_pl_bundle_init (leave) ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # log:ffi_pl_bundle_fini (enter) # log:package = Foo::Bar5 # log:ffi_pl_bundle_fini (leave) ok 9 1..9 } 1..5 ok t/ffi_platypus_closure.t ................. ok 1 - basic { ok 1 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 2 - closure.(1) = 2 ok 3 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 4 - closure.(1) = 3 ok 5 - closure.call(1) = 3 ok 6 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 7 - closure.(1) = 3 ok 8 - closure.call(1) = 3 1..8 } ok 2 - sticky { ok 1 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') # _svrefcnt = 1 ok 2 - called $closure->sticky ok 3 ok 4 - called $closure->sticky ok 5 ok 6 - called $closure->unstick ok 7 1..7 } ok 3 - private { ok 1 - FFI::Platypus::Closure=HASH->isa('FFI::Platypus::Closure') ok 2 - closure.(1) = 2 1..2 } ok 4 - space { ok 1 - good without space ok 2 - good with space 1..2 } ok 5 - die { ok 1 ok 2 - does not exit # warning = 'omg i don't want to die! at t/ffi_platypus_closure.t line 70. # ' 1..2 } ok 6 - reuse { ok 1 ok 2 1..2 } ok 7 - immediate { ok 1 1..1 } ok 8 - closure passing into a closure { ok 1 # error = Only native types and strings are supported as closure argument types (1284) at /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/FFI/Platypus/TypeParser/Version0.pm line 68. ok 2 # error = Only native types are supported as closure return types (1284) at /build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/FFI/Platypus/TypeParser/Version0.pm line 68. 1..2 } 1..8 ok t/ffi_platypus_constant.t ................ ok 1 - very very basic... { ok 1 - FFI::Platypus::Constant=HASH->isa('FFI::Platypus::Constant') ok 2 1..2 } ok 2 - create constants { # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/vMiA9QKufR/lib/Foo/Bar1.pm] # package Foo::Bar1; # use strict; # use warnings; # use FFI::Platypus; # my $ffi = FFI::Platypus->new( api => 1, lang => 'ASM' ); # $ffi->bundle; # 1; # spew(end) # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/vMiA9QKufR/ffi/bar1.c] # #include # void ffi_pl_bundle_constant(const char *package, ffi_platypus_constant_t *b) # { # b->set_str("FOO1", "VAL1"); # b->set_str("Foo::Bar1::Baz::FOO2", "VAL2"); # b->set_sint("FOO3", -42); # b->set_uint("FOO4", 512); # b->set_double("FOO5", 2.5); # b->set_str("FOO6", package); # } # spew(end) ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 1..7 } 1..2 ok t/ffi_platypus_dl.t ...................... ok 1 - flags { ok 1 - RTLD_PLATYPUS_DEFAULT is defined # RTLD_LOCAL 0000 0 # RTLD_LAZY 0001 1 # RTLD_PLATYPUS_DEFAULT 0001 1 # RTLD_NOW 0002 2 # RTLD_NOLOAD 0004 4 # RTLD_DEEPBIND 0008 8 # RTLD_GLOBAL 0100 256 # RTLD_NODELETE 1000 4096 1..1 } ok 2 - dlopen { ok 1 - bad library { ok 1 - Returns undef on fail # dlerror = t/ffi/libbogus.so: cannot open shared object file: No such file or directory 1..1 } ok 2 - good library { ok 1 - Returns handle on good # h = 94124268964320 1..1 } 1..2 } ok 3 - dlsym { ok 1 - good symbol { ok 1 - returns an address # address = 140496125907824 1..1 } ok 2 - bad symbol { ok 1 - bad symbol returns undef # dlerror = t/ffi/libtest.so: undefined symbol: bogus 1..1 } 1..2 } 1..3 ok t/ffi_platypus_function.t ................ ok 1 - built in type { ok 1 - ffi.function(f0, [uint8] => uint8) ok 2 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function::Function') ok 4 - function.call(22) = 22 ok 5 - function.(22) = 22 1..5 } ok 2 - custom type { ok 1 - ffi.function(f0, [my_int_8] => my_int_8) ok 2 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function::Function') ok 4 - function.call(22) = 22 ok 5 - function.(22) = 22 1..5 } ok 3 - private { ok 1 - FFI::Platypus::Function->new ok 2 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Function=SCALAR->isa('FFI::Platypus::Function::Function') ok 4 - function.call(22) = 22 ok 5 - fooble(22) = 22 1..5 } ok 4 - meta { ok 1 - unattached { ok 1 ok 2 1..2 } ok 2 - attached { ok 1 ok 2 1..2 } 1..2 } ok 5 - sub_ref { ok 1 - calls okay ok 2 - it is a code reference 1..2 } ok 6 - prototype { ok 1 - one { ok 1 ok 2 1..2 } ok 2 - two { ok 1 ok 2 1..2 } 1..2 } ok 7 - variadic { ok 1 - unattached { ok 1 - sans wrapper ok 2 - with wrapper ok 3 - sans wrapper ok 4 - with wrapper ok 5 - sans wrapper ok 6 - with wrapper ok 7 - sans wrapper ok 8 - with wrapper ok 9 - sans wrapper ok 10 - with wrapper ok 11 - sans wrapper ok 12 - with wrapper ok 13 - sans wrapper ok 14 - with wrapper 1..14 } ok 2 - attached { ok 1 - sans wrapper ok 2 - with wrapper ok 3 - sans wrapper ok 4 - with wrapper ok 5 - sans wrapper ok 6 - with wrapper ok 7 - sans wrapper ok 8 - with wrapper ok 9 - sans wrapper ok 10 - with wrapper ok 11 - sans wrapper ok 12 - with wrapper ok 13 - sans wrapper ok 14 - with wrapper 1..14 } ok 3 - examples { ok 1 ok 2 ok 3 1..3 } 1..3 } ok 8 - void as arg should fail is arg count > 1 { ok 1 1..1 } ok 9 - single void arg treated as no args { ok 1 1..1 } 1..9 ok t/ffi_platypus_function_wrapper.t ........ ok 1 - built in type { ok 1 - ffi.function(f0, [uint8] => uint8) ok 2 - FFI::Platypus::Function::Wrapper=ARRAY->isa('FFI::Platypus::Function') ok 3 - FFI::Platypus::Function::Wrapper=ARRAY->isa('FFI::Platypus::Function::Wrapper') ok 4 - function.call(22) = 44 ok 5 - function.(22) = 44 ok 6 - baboon(11) = 22 1..6 } ok 2 - sub_ref { ok 1 - calls okay ok 2 - it is a code reference 1..2 } ok 3 - prototype { ok 1 - one { ok 1 ok 2 1..2 } ok 2 - two { ok 1 ok 2 1..2 } 1..2 } 1..3 ok t/ffi_platypus_internal.t ................ ok 1 - basic { # alpha order: ok 1 - FFI_PL_BASE_CLOSURE 0x0400 ok 2 - FFI_PL_BASE_COMPLEX 0x0080 ok 3 - FFI_PL_BASE_FLOAT 0x0040 ok 4 - FFI_PL_BASE_MASK 0x0ff8 ok 5 - FFI_PL_BASE_OPAQUE 0x0100 ok 6 - FFI_PL_BASE_RECORD 0x0800 ok 7 - FFI_PL_BASE_SINT 0x0010 ok 8 - FFI_PL_BASE_STRING 0x0200 ok 9 - FFI_PL_BASE_UINT 0x0020 ok 10 - FFI_PL_BASE_VOID 0x0008 ok 11 - FFI_PL_SHAPE_ARRAY 0x2000 ok 12 - FFI_PL_SHAPE_CUSTOM_MASK 0xf000 ok 13 - FFI_PL_SHAPE_CUSTOM_PERL 0x3000 ok 14 - FFI_PL_SHAPE_OBJECT 0x4000 ok 15 - FFI_PL_SHAPE_POINTER 0x1000 ok 16 - FFI_PL_SHAPE_SCALAR 0x0000 ok 17 - FFI_PL_SIZE_0 0x0000 ok 18 - FFI_PL_SIZE_128 0x0005 ok 19 - FFI_PL_SIZE_16 0x0002 ok 20 - FFI_PL_SIZE_256 0x0006 ok 21 - FFI_PL_SIZE_32 0x0003 ok 22 - FFI_PL_SIZE_512 0x0007 ok 23 - FFI_PL_SIZE_64 0x0004 ok 24 - FFI_PL_SIZE_8 0x0001 ok 25 - FFI_PL_SIZE_MASK 0x0007 ok 26 - FFI_PL_SIZE_PTR 0x0004 ok 27 - FFI_PL_TYPE_CLOSURE 0x0504 ok 28 - FFI_PL_TYPE_COMPLEX_DOUBLE 0x0085 ok 29 - FFI_PL_TYPE_COMPLEX_FLOAT 0x0084 ok 30 - FFI_PL_TYPE_DOUBLE 0x0044 ok 31 - FFI_PL_TYPE_FLOAT 0x0043 ok 32 - FFI_PL_TYPE_LONG_DOUBLE 0x0045 ok 33 - FFI_PL_TYPE_OPAQUE 0x0104 ok 34 - FFI_PL_TYPE_RECORD 0x0904 ok 35 - FFI_PL_TYPE_RECORD_VALUE 0x0800 ok 36 - FFI_PL_TYPE_SINT16 0x0012 ok 37 - FFI_PL_TYPE_SINT32 0x0013 ok 38 - FFI_PL_TYPE_SINT64 0x0014 ok 39 - FFI_PL_TYPE_SINT8 0x0011 ok 40 - FFI_PL_TYPE_STRING 0x0304 ok 41 - FFI_PL_TYPE_UINT16 0x0022 ok 42 - FFI_PL_TYPE_UINT32 0x0023 ok 43 - FFI_PL_TYPE_UINT64 0x0024 ok 44 - FFI_PL_TYPE_UINT8 0x0021 ok 45 - FFI_PL_TYPE_VOID 0x0008 # value order: ok 46 - FFI_PL_SIZE_0 0x0000 ok 47 - FFI_PL_SHAPE_SCALAR 0x0000 ok 48 - FFI_PL_SIZE_8 0x0001 ok 49 - FFI_PL_SIZE_16 0x0002 ok 50 - FFI_PL_SIZE_32 0x0003 ok 51 - FFI_PL_SIZE_PTR 0x0004 ok 52 - FFI_PL_SIZE_64 0x0004 ok 53 - FFI_PL_SIZE_128 0x0005 ok 54 - FFI_PL_SIZE_256 0x0006 ok 55 - FFI_PL_SIZE_512 0x0007 ok 56 - FFI_PL_SIZE_MASK 0x0007 ok 57 - FFI_PL_BASE_VOID 0x0008 ok 58 - FFI_PL_TYPE_VOID 0x0008 ok 59 - FFI_PL_BASE_SINT 0x0010 ok 60 - FFI_PL_TYPE_SINT8 0x0011 ok 61 - FFI_PL_TYPE_SINT16 0x0012 ok 62 - FFI_PL_TYPE_SINT32 0x0013 ok 63 - FFI_PL_TYPE_SINT64 0x0014 ok 64 - FFI_PL_BASE_UINT 0x0020 ok 65 - FFI_PL_TYPE_UINT8 0x0021 ok 66 - FFI_PL_TYPE_UINT16 0x0022 ok 67 - FFI_PL_TYPE_UINT32 0x0023 ok 68 - FFI_PL_TYPE_UINT64 0x0024 ok 69 - FFI_PL_BASE_FLOAT 0x0040 ok 70 - FFI_PL_TYPE_FLOAT 0x0043 ok 71 - FFI_PL_TYPE_DOUBLE 0x0044 ok 72 - FFI_PL_TYPE_LONG_DOUBLE 0x0045 ok 73 - FFI_PL_BASE_COMPLEX 0x0080 ok 74 - FFI_PL_TYPE_COMPLEX_FLOAT 0x0084 ok 75 - FFI_PL_TYPE_COMPLEX_DOUBLE 0x0085 ok 76 - FFI_PL_BASE_OPAQUE 0x0100 ok 77 - FFI_PL_TYPE_OPAQUE 0x0104 ok 78 - FFI_PL_BASE_STRING 0x0200 ok 79 - FFI_PL_TYPE_STRING 0x0304 ok 80 - FFI_PL_BASE_CLOSURE 0x0400 ok 81 - FFI_PL_TYPE_CLOSURE 0x0504 ok 82 - FFI_PL_BASE_RECORD 0x0800 ok 83 - FFI_PL_TYPE_RECORD_VALUE 0x0800 ok 84 - FFI_PL_TYPE_RECORD 0x0904 ok 85 - FFI_PL_BASE_MASK 0x0ff8 ok 86 - FFI_PL_SHAPE_POINTER 0x1000 ok 87 - FFI_PL_SHAPE_ARRAY 0x2000 ok 88 - FFI_PL_SHAPE_CUSTOM_PERL 0x3000 ok 89 - FFI_PL_SHAPE_OBJECT 0x4000 ok 90 - FFI_PL_SHAPE_CUSTOM_MASK 0xf000 1..90 } 1..1 ok t/ffi_platypus_lang.t .................... ok 1 - Foo constructor { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang.t line 12. ok 2 - foo_t is an okay type ok 3 - sint16 is an okay type ok 4 - sizeof foo_t = 2 ok 5 - sizeof foo_t = 4 ok 6 1..6 } ok 2 - Foo attribute { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang.t line 31. ok 2 - foo_t is an okay type ok 3 - sint16 is an okay type ok 4 - sizeof foo_t = 2 ok 5 - sizeof foo_t = 4 ok 6 1..6 } ok 3 - MyLang::Roger { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang.t line 49. ok 2 - sizeof foo_t = 4 1..2 } 1..3 ok t/ffi_platypus_lang_asm.t ................ ok 1 - ASM { ok 1 - int is not an okay type # unknown ffi/platypus type int at t/ffi_platypus_lang_asm.t line 11. ok 2 - foo_t is not an okay type # unknown ffi/platypus type foo_t at t/ffi_platypus_lang_asm.t line 14. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 } 1..1 ok t/ffi_platypus_lang_c.t .................. ok 1 - C { ok 1 - int is an okay type ok 2 - foo_t is not an okay type # unknown ffi/platypus type foo_t at t/ffi_platypus_lang_c.t line 13. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 } 1..1 ok t/ffi_platypus_lang_win32.t .............. # encoding = UTF-32LE # width = 4 ok 1 - native type map diagnostic { # BOOL sint32 # BOOLEAN uint8 # BYTE uint8 # CCHAR sint8 # CHAR sint8 # COLORREF uint32 # DWORD uint32 # DWORD32 uint32 # DWORD64 uint64 # DWORDLONG uint64 # DWORD_PTR uint16 # FLOAT float # HACCEL opaque # HALF_PTR sint16 # HANDLE opaque # HBITMAP opaque # HBRUSH opaque # HCOLORSPACE opaque # HCONV opaque # HCONVLIST opaque # HCURSOR opaque # HDC opaque # HDDEDATA opaque # HDESK opaque # HDROP opaque # HDWP opaque # HENHMETAFILE opaque # HFILE sint32 # HFONT opaque # HGDIOBJ opaque # HGLOBAL opaque # HHOOK opaque # HICON opaque # HINSTANCE opaque # HKEY opaque # HKL opaque # HLOCAL opaque # HMENU opaque # HMETAFILE opaque # HMODULE opaque # HMONITOR opaque # HPALETTE opaque # HPEN opaque # HRESULT sint32 # HRGN opaque # HRSRC opaque # HSZ opaque # HWINSTA opaque # HWND opaque # INT sint32 # INT16 sint16 # INT32 sint32 # INT64 sint64 # INT8 sint8 # INT_PTR sint32 # LANGID uint16 # LCID uint32 # LCTYPE uint32 # LGRPID uint32 # LONG sint32 # LONG32 sint32 # LONG64 sint64 # LONGLONG sint64 # LONG_PTR sint16 # LPCSTR string # LPCVOID opaque # LPVOID opaque # LRESULT sint16 # PSTR string # PVOID opaque # QWORD uint64 # SC_HANDLE opaque # SC_LOCK opaque # SERVICE_STATUS_HANDLE opaque # SHORT sint16 # SIZE_T uint16 # SSIZE_T sint16 # UCHAR uint8 # UHALF_PTR uint16 # UINT uint32 # UINT16 uint16 # UINT32 uint32 # UINT64 uint64 # UINT8 uint8 # UINT_PTR uint32 # ULONG uint32 # ULONG32 uint32 # ULONG64 uint64 # ULONGLONG uint64 # ULONG_PTR uint16 # USHORT uint16 # USN sint64 # VOID void # WORD uint16 # WPARAM uint32 # blkcnt_t sint64 # blksize_t sint64 # bool uint8 # char sint8 # dev_t uint64 # double double # double complex complex_double # enum uint32 # float float # float complex complex_float # gid_t uint32 # ino_t uint64 # int sint32 # int16_t sint16 # int32_t sint32 # int64_t sint64 # int8_t sint8 # intmax_t sint64 # intptr_t sint64 # long sint64 # long double longdouble # long double complex complex_longdouble # long long sint64 # mode_t uint32 # nlink_t uint64 # off_t sint64 # ptrdiff_t sint64 # senum sint32 # short sint16 # signed char sint8 # signed int sint32 # signed long sint64 # signed long long sint64 # signed short sint16 # size_t uint64 # ssize_t sint64 # time_t sint64 # uchar uint8 # uid_t uint32 # uint uint32 # uint16_t uint16 # uint32_t uint32 # uint64_t uint64 # uint8_t uint8 # uintmax_t uint64 # uintptr_t uint64 # ulong uint64 # unsigned char uint8 # unsigned int uint32 # unsigned long uint64 # unsigned long long uint64 # unsigned short uint16 # ushort uint16 # wchar_t sint32 # wint_t uint32 ok 1 - good 1..1 } ok 2 - load { ok 1 1..1 } ok 3 - LPCWSTR { 1..0 # SKIP Test only works on Windows } ok 4 - LPWSTR { 1..0 # SKIP Test only works on Windows } 1..4 ok t/ffi_platypus_legacy.t .................. ok 1 - only load as needed { ok 1 ok 2 1..2 } 1..1 ok t/ffi_platypus_memory.t .................. # lib=undef # lib=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/lib/libplfill.so ok 1 - malloc calloc memset free { ok 1 - malloc returns 94268109380816 ok 2 - calloc returns 94268110318608 ok 3 - string = yyyyxxxx ok 4 - free $ptr1 ok 5 - free $ptr2 1..5 } ok 2 - memcpy { ok 1 - initial data copied ok 2 - copy of copy ok 3 - memcpy returns a pointer ok 4 - free $ptr1 ok 5 - free $ptr2 1..5 } ok 3 - realloc { ok 1 - realloc call ptr = 94268110426672 ok 2 - initial data copied ok 3 - realloc call ptr = 94268110426848 (2) ok 4 - after realloc data there ok 5 - final free 1..5 } ok 4 - strdup { # strdup implementation = libc ok 1 - string = this and ok 2 - free $ptr1 1..2 } ok 5 - strndup { # strndup implementation = libc ok 1 - full string { ok 1 1..1 } ok 2 - partial string { ok 1 1..1 } 1..2 } ok 6 - strcpy { ok 1 - pointer cast back to string matches 1..1 } 1..6 ok t/ffi_platypus_record.t .................. ok 1 - integer accessor { ok 1 - Foo1=SCALAR->isa('Foo1') ok 2 - foo._record_size = 8 ok 3 - foo.first = 1 ok 4 - foo.second = 2 ok 5 - foo.first = 22 ok 6 - foo.second = 42 ok 7 - foo.first = 3 ok 8 - foo.second = 4 # {'class' => 'Foo1','ffi_type' => 'pointer','ref' => 1,'size' => 8,'type' => 'record','type_code' => 2308} # {'ffi_type' => 'pointer','ref' => 0,'size' => 8,'type' => 'record','type_code' => 2308} 1..8 } ok 2 - values match in C { ok 1 - Color=SCALAR->isa('Color') ok 2 - color.get_red = 50 ok 3 - color.get_green = 100 ok 4 - color.get_blue = 150 1..4 } ok 3 - complex alignment { ok 1 - Foo2=SCALAR->isa('Foo2') ok 2 - uint64 = 512 ok 3 - sint64 = -512 ok 4 - uint32 = 1024 ok 5 - sint32 = -1024 ok 6 - uint16 = 2048 ok 7 - sint16 = -2048 ok 8 - uint8 = 48 ok 9 - sint8 = -48 ok 10 - float = 1.5 ok 11 - double = -1.5 ok 12 - get_opaque = 94502449574272 ok 13 - opaque = 94502449574272 ok 14 - get_opaque = undef ok 15 - opaque = undef 1..15 } ok 4 - same name { ok 1 - two members of the same name not allowed # accessor/method foo already exists at t/ffi_platypus_record.t line 186. 1..1 } ok 5 - array alignment { ok 1 - Foo4=SCALAR->isa('Foo4') ok 2 - unsigned 8 integer { ok 1 - uint8 = 1,2,3 ok 2 - get_uint8 = 1,2,3 ok 3 - uint8(1) = 2 ok 4 - uint8 = 1,20,3 1..4 } ok 3 - signed 8 integer { ok 1 - sint8 = -1,2,-3 ok 2 - get_sint8 = -1,2,-3 ok 3 - sint8(2) = -3 ok 4 - sint8 = -1,-20,-3 1..4 } ok 4 - unsigned 16 integer { ok 1 - uint16 = 1,2,3 ok 2 - get_uint16 = 1,2,3 ok 3 - uint16(1) = 2 ok 4 - uint16 = 1,20,3 1..4 } ok 5 - signed 16 integer { ok 1 - sint16 = -1,2,-3 ok 2 - get_sint16 = -1,2,-3 ok 3 - sint16(2) = -3 ok 4 - sint16 = -1,-20,-3 1..4 } ok 6 - unsigned 32 integer { ok 1 - uint32 = 1,2,3 ok 2 - get_uint32 = 1,2,3 ok 3 - uint32(1) = 2 ok 4 - uint32 = 1,20,3 1..4 } ok 7 - signed 32 integer { ok 1 - sint32 = -1,2,-3 ok 2 - get_sint32 = -1,2,-3 ok 3 - sint32(2) = -3 ok 4 - sint32 = -1,-20,-3 1..4 } ok 8 - unsigned 64 integer { ok 1 - uint64 = 1,2,3 ok 2 - get_uint64 = 1,2,3 ok 3 - uint64(1) = 2 ok 4 - uint64 = 1,20,3 1..4 } ok 9 - signed 64 integer { ok 1 - sint64 = -1,2,-3 ok 2 - get_sint64 = -1,2,-3 ok 3 - sint64(2) = -3 ok 4 - sint64 = -1,-20,-3 1..4 } ok 10 - float { ok 1 - float = 1.5,0,-1.5 ok 2 ok 3 ok 4 ok 5 - float = 1.5,20,-1.5 1..5 } ok 11 - double { ok 1 - double = 1.5,0,-1.5 ok 2 ok 3 ok 4 ok 5 - double = 1.5,20,-1.5 1..5 } ok 12 - opaque { ok 1 - opaque = 94502449977632,undef,94502449991312 ok 2 - opaque = 94502449977632,94502449977632,94502449991312 ok 3 - opaque = undef,94502449977632,94502449991312 ok 4 ok 5 ok 6 1..6 } ok 13 - align = 8 ok 14 - align is positive 1..14 } ok 6 - string ro { ok 1 - Foo5=SCALAR->isa('Foo5') ok 2 - foo.value = undef ok 3 - foo.get_value = undef ok 4 - foo.value = my value ok 5 - foo.get_value = my value ok 6 - value is ro # member is read only at t/ffi_platypus_record.t line 340. ok 7 - foo.value = undef ok 8 - foo.get_value = undef 1..8 } ok 7 - fixed string { ok 1 - Foo6=SCALAR->isa('Foo6') ok 2 - foo.value = "\0\0\0\0\0\0\0\0\0\0" ok 3 - foo.get_value = "" ok 4 - foo.value = "one two th" ok 5 - foo.value = 123456789\0 ok 6 - foo.get_value = 123456789 1..6 } ok 8 - string rw { ok 1 - Foo7=SCALAR->isa('Foo7') ok 2 - foo.value = hi there ok 3 - foo.get_value = hi there ok 4 - foo.value = undef ok 5 - foo.get_value = undef ok 6 - foo.value = starscream!!! ok 7 - foo.get_value = starscream!!! 1..7 } ok 9 - record with custom ffi { ok 1 - Foo8=SCALAR->isa('Foo8') ok 2 1..2 } ok 10 - record with ffi args { ok 1 - Foo8=SCALAR->isa('Foo8') ok 2 1..2 } ok 11 - api_1 { ok 1 - no $ffi or args { ok 1 ok 2 1..2 } ok 2 - args { ok 1 ok 2 1..2 } ok 3 - $ffi { ok 1 ok 2 1..2 } 1..3 } 1..11 ok t/ffi_platypus_record_meta.t ............. ok 1 - basic { ok 1 - FFI::Platypus::Record::Meta=SCALAR->isa('FFI::Platypus::Record::Meta') ok 2 - meta->ffi_type = 94306518467168 ok 3 - meta->size ok 4 - meta->alignment ok 5 - meta->element_pointers 1..5 } ok 2 - bogus types { ok 1 ok 2 1..2 } 1..2 ok t/ffi_platypus_record_tiearray.t ......... ok 1 - Foo=SCALAR->isa('Foo') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 ok 33 ok 34 ok 35 ok 36 ok 37 ok 38 ok 39 ok 40 ok 41 ok 42 ok 43 ok 44 ok 45 1..45 ok t/ffi_platypus_shareconfig.t ............. # { # 'abi' => { # 'default_abi' => '2', # 'efi64' => '3', # 'gnuw64' => '4', # 'unix64' => '2', # 'win64' => '3' # }, # 'align' => { # 'double' => '8', # 'double complex' => '8', # 'float' => '4', # 'float complex' => '4', # 'long double' => '16', # 'long double complex' => '16', # 'pointer' => '8', # 'sint16' => '2', # 'sint32' => '4', # 'sint64' => '8', # 'sint8' => '1', # 'uint16' => '2', # 'uint32' => '4', # 'uint64' => '8', # 'uint8' => '1' # }, # 'config_dlext' => [ # 'so' # ], # 'probe' => { # 'abi' => 1, # 'alloca' => 1, # 'bigendian' => 0, # 'bigendian64' => 0, # 'complex' => 1, # 'longdouble' => 1, # 'recordvalue' => 1, # 'strnlen' => 1, # 'variadic' => 1 # }, # 'test-key' => 'test-value', # 'type_map' => { # 'blkcnt_t' => 'sint64', # 'blksize_t' => 'sint64', # 'bool' => 'uint8', # 'char' => 'sint8', # 'dev_t' => 'uint64', # 'double' => 'double', # 'double complex' => 'complex_double', # 'enum' => 'uint32', # 'float' => 'float', # 'float complex' => 'complex_float', # 'gid_t' => 'uint32', # 'ino_t' => 'uint64', # 'int' => 'sint32', # 'int16_t' => 'sint16', # 'int32_t' => 'sint32', # 'int64_t' => 'sint64', # 'int8_t' => 'sint8', # 'intmax_t' => 'sint64', # 'intptr_t' => 'sint64', # 'long' => 'sint64', # 'long double' => 'longdouble', # 'long double complex' => 'complex_longdouble', # 'long long' => 'sint64', # 'mode_t' => 'uint32', # 'nlink_t' => 'uint64', # 'off_t' => 'sint64', # 'ptrdiff_t' => 'sint64', # 'senum' => 'sint32', # 'short' => 'sint16', # 'signed char' => 'sint8', # 'signed int' => 'sint32', # 'signed long' => 'sint64', # 'signed long long' => 'sint64', # 'signed short' => 'sint16', # 'size_t' => 'uint64', # 'ssize_t' => 'sint64', # 'time_t' => 'sint64', # 'uchar' => 'uint8', # 'uid_t' => 'uint32', # 'uint' => 'uint32', # 'uint16_t' => 'uint16', # 'uint32_t' => 'uint32', # 'uint64_t' => 'uint64', # 'uint8_t' => 'uint8', # 'uintmax_t' => 'uint64', # 'uintptr_t' => 'uint64', # 'ulong' => 'uint64', # 'unsigned char' => 'uint8', # 'unsigned int' => 'uint32', # 'unsigned long' => 'uint64', # 'unsigned long long' => 'uint64', # 'unsigned short' => 'uint16', # 'ushort' => 'uint16', # 'wchar_t' => 'sint32', # 'wint_t' => 'uint32' # } # } # ok 1 ok 2 1..2 ok t/ffi_platypus_type.t .................... ok 1 - basic type { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 1, # 'type' => 'scalar', # 'type_code' => 17 # }; 1..8 } ok 2 - fixed string / record (pass by reference) { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'ffi_type' => 'pointer', # 'ref' => 0, # 'size' => 22, # 'type' => 'record', # 'type_code' => 2308 # }; ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 # $VAR1 = { # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'ffi_type' => 'pointer', # 'ref' => 0, # 'size' => 22, # 'sub_type' => 'record', # 'type' => 'custom_perl', # 'type_code' => 14596 # }; 1..16 } ok 3 - record { ok 1 - record class value (pass by value) { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 # $VAR1 = { # 'class' => 'Foo::Bar', # 'ffi_type' => 'struct', # 'ref' => 1, # 'size' => 4, # 'type' => 'record_value', # 'type_code' => 2048 # }; ok 11 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 # $VAR1 = { # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'ffi_type' => 'struct', # 'size' => 4, # 'type' => 'custom_perl', # 'type_code' => 14336 # }; 1..18 } ok 2 - record class (pass by reference) { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'class' => 'Foo::Bar', # 'ffi_type' => 'pointer', # 'ref' => 1, # 'size' => 4, # 'type' => 'record', # 'type_code' => 2308 # }; ok 10 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 # $VAR1 = { # 'class' => 'Foo::Bar', # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'ffi_type' => 'pointer', # 'ref' => 1, # 'size' => 4, # 'sub_type' => 'record', # 'type' => 'custom_perl', # 'type_code' => 14596 # }; 1..17 } 1..2 } ok 4 - string rw { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'access' => 'rw', # 'element_size' => 8, # 'ffi_type' => 'pointer', # 'size' => 8, # 'type' => 'string', # 'type_code' => 772 # }; 1..9 } ok 5 - string ro { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'access' => 'ro', # 'element_size' => 8, # 'ffi_type' => 'pointer', # 'size' => 8, # 'type' => 'string', # 'type_code' => 772 # }; 1..9 } ok 6 - fixed array { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 # $VAR1 = { # 'element_count' => 10, # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 10, # 'type' => 'array', # 'type_code' => 8209 # }; 1..9 } ok 7 - var array { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'element_count' => 0, # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 0, # 'type' => 'array', # 'type_code' => 8209 # }; 1..8 } ok 8 - pointer { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'element_size' => 1, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 8, # 'type' => 'pointer', # 'type_code' => 4113 # }; 1..8 } ok 9 - custom type { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 # $VAR1 = { # 'custom_native_to_p' => \sub { "DUMMY" }, # 'custom_perl_to_nat' => \sub { "DUMMY" }, # 'custom_perl_to_native_p' => \sub { "DUMMY" }, # 'element_type' => 'int', # 'ffi_type' => 'sint8', # 'sign' => 1, # 'size' => 1, # 'type' => 'custom_perl', # 'type_code' => 12305 # }; 1..8 } 1..9 ok t/ffi_platypus_type_pointersizebuffer.t .. ok 1 ok 2 ok 3 ok 4 ok 5 1..5 ok t/ffi_platypus_type_stringarray.t ........ ok 1 - fixed length input { ok 1 - with default { ok 1 - a1(0) = foo ok 2 - a1(0) = bar ok 3 - a1(0) = baz ok 4 - a1(0) = hey ok 5 - a1(0) = five ok 6 - a1(0) = undef 1..6 } ok 2 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five ok 6 - a2(0) = undef 1..6 } 1..2 } ok 2 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 3 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle ok 4 - returns with NULL/undef in the middle with default 1..4 } ok 4 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } 1..4 ok t/ffi_platypus_type_stringpointer.t ...... ok 1 - arg pass in { ok 1 - not null ok 2 - \undef is null ok 3 - undef is null 1..3 } ok 2 - arg pass out { ok 1 - not null string = hi there ok 2 - not null string = and another 1..2 } ok 3 - return value { ok 1 - not null string = once more onto ok 2 - \null ok 3 - null 1..3 } 1..3 ok t/ffi_platypus_type_widestring.t ......... # encoding = UTF-32LE # width = 4 ok 1 - wcschr { ok 1 ok 2 ok 3 1..3 } ok 2 - wide string as argument (in) { ok 1 - trivial ok 2 - simple ok 3 - fancy ok 4 - complex ok 5 - NULL 1..5 } ok 3 - wide string as argument (out) { ok 1 - trivial default buffer size ok 2 - trivial with just enough buffer ok 3 - simple default buffer size ok 4 - simple with just enough buffer ok 5 - fancy default buffer size ok 6 - fancy with just enough buffer ok 7 - complex default buffer size ok 8 - complex with just enough buffer ok 9 - NULL 1..9 } ok 4 - wide string as a return value { ok 1 - trivial ok 2 - simple ok 3 - fancy ok 4 - complex ok 5 - NULL 1..5 } ok 5 - wide string as in-out argument { ok 1 - trivial default buffer size ok 2 - trivial with just enough buffer ok 3 - simple default buffer size ok 4 - simple with just enough buffer ok 5 - fancy default buffer size ok 6 - fancy with just enough buffer ok 7 - complex default buffer size ok 8 - complex with just enough buffer 1..8 } 1..5 ok t/ffi_platypus_typeparser.t .............. ok 1 - basic { ok 1 - FFI::Platypus::TypeParser=HASH->isa('FFI::Platypus::TypeParser') 1..1 } ok 2 - pick the right one { ok 1 - FFI::Platypus::TypeParser::Version0=HASH->isa('FFI::Platypus::TypeParser::Version0') ok 2 - FFI::Platypus::TypeParser::Version1=HASH->isa('FFI::Platypus::TypeParser::Version1') 1..2 } 1..2 ok t/ffi_platypus_typeparser_version0.t ..... ok 1 - basic { ok 1 - basic basic ok 2 - longdouble { ok 1 - longdouble 1..1 } ok 3 - complex { ok 1 - complex float ok 2 - complex double 1..2 } 1..3 } ok 2 - record { ok 1 - fixed string ok 2 - unclassed record ok 3 - classed record 1..3 } ok 3 - string { ok 1 - default string ok 2 - explicit ro string ok 3 - explicit ro string with underscore ok 4 - explicit rw string ok 5 - explicit rw string with underscore 1..5 } ok 4 - array { ok 1 - fixed array ok 2 - variable array ok 3 - longdouble { ok 1 - variable array 1..1 } ok 4 - complex { ok 1 - variable array ok 2 - variable array 1..2 } 1..4 } ok 5 - pointer { ok 1 - pointer ok 2 - longdouble { ok 1 - longdouble pointer 1..1 } ok 3 - complex { ok 1 - complex float pointer ok 2 - complex double pointer 1..2 } 1..3 } 1..5 ok t/ffi_platypus_typeparser_version1.t ..... ok 1 - bad types { ok 1 ok 2 1..2 } ok 2 - basic types { ok 1 - void { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 1..4 } ok 2 - non-void { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 3 - string { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 } ok 4 - bogus { ok 1 1..1 } 1..4 } ok 3 - type map { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 1..23 } ok 4 - fixed record / fixed string { ok 1 - zero bad { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 2 - ten good { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 6 ok 7 ok 8 ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 14 ok 15 ok 16 ok 17 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 18 ok 19 ok 20 ok 21 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 22 ok 23 ok 24 1..24 } ok 3 - ten pass-by-value { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } 1..3 } ok 5 - record class { ok 1 - good with size { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..2 } ok 2 - bad without size { ok 1 ok 2 1..2 } ok 3 - pass-by-value { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..1 } ok 4 - alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } 1..4 } ok 6 - check alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 1..8 } ok 7 - use alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 1..10 } ok 8 - object { ok 1 ok 2 ok 3 1..3 } 1..8 ok t/ffi_platypus_typeparser_version2.t ..... ok 1 - bad types { ok 1 ok 2 1..2 } ok 2 - basic types { ok 1 - void { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 1..4 } ok 2 - non-void { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 3 - string { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 } ok 4 - bogus { ok 1 1..1 } 1..4 } ok 3 - type map { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 1..23 } ok 4 - fixed record / fixed string { ok 1 - zero bad { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } ok 2 - ten good { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 6 ok 7 ok 8 ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 14 ok 15 ok 16 ok 17 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 18 ok 19 ok 20 ok 21 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 22 ok 23 ok 24 1..24 } ok 3 - ten pass-by-value { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 ok 3 ok 4 ok 5 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 6 ok 7 ok 8 ok 9 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 10 ok 11 ok 12 ok 13 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 14 ok 15 ok 16 ok 17 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 18 ok 19 ok 20 1..20 } ok 4 - ten record pass-by-value { ok 1 1..1 } 1..4 } ok 5 - record class { ok 1 - good with size { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') ok 2 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..2 } ok 2 - bad without size { ok 1 ok 2 1..2 } ok 3 - pass-by-value { ok 1 - FFI::Platypus::Type=SCALAR->isa('FFI::Platypus::Type') 1..1 } ok 4 - alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 } 1..4 } ok 6 - check alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 1..8 } ok 7 - use alias { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 1..10 } ok 8 - object { ok 1 ok 2 ok 3 1..3 } 1..8 ok t/ffi_probe.t ............................ ok 1 - check_header { ok 1 - FFI::Probe=HASH->isa('FFI::Probe') # PR header."stdio.h"=1 # PR header."bogus/does/not/exist.h"=0 ok 2 ok 3 # ==probe.log== # code: #include # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/ffi_build_KS0IUJ.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/_build/ffi_build_KS0IUJ.c.o # header."stdio.h"=1 # code: #include # code: #include # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/ffi_build_zQc6Ni.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/_build/ffi_build_zQc6Ni.c.o # /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/ffi_build_zQc6Ni.c:2:10: fatal error: bogus/does/not/exist.h: No such file or directory # 2 | #include # | ^~~~~~~~~~~~~~~~~~~~~~~~ # compilation terminated. # header."bogus/does/not/exist.h"=0 # ==probe.pl== # do { my $x = { # 'header' => { # 'bogus/does/not/exist.h' => 0, # 'stdio.h' => 1 # } # }; # $x;} ok 4 ok 5 # ok 6 ok 7 # ==probe2.log== # # ==probe.pl== # do { my $x = { # 'header' => { # 'bogus/does/not/exist.h' => 0, # 'stdio.h' => 1 # } # }; # $x;} 1..7 } ok 2 - check_eval { # PR foo.bar.baz=3 ok 1 - foo.bar.baz ok 2 # PR foo.bar.string=hello world 7 ok 3 - foo.bar.string ok 4 # PR header."stddef.h"=1 # PR type.unsigned char.align=1 # PR type.unsigned char.sign=unsigned # PR type.unsigned char.size=1 ok 5 ok 6 ok 7 ok 8 # PR type.float.align=4 # PR type.float.size=4 ok 9 ok 10 ok 11 # PR type.pointer.align=8 # PR type.pointer.size=8 ok 12 ok 13 ok 14 # ==probe.log== # code: #include # code: # code: # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", 1+2); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_8awD0v.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_8awD0v.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_8awD0v.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval1.so # [stdout] # eval1=<<<3>>> # [stderr] # # rv = 0 # foo.bar.baz=3 # code: #include # code: # code: char buffer[256]; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: sprintf(buffer, "hello world %d", 3+4); # code: # code: printf("eval1=<<<%s>>>\n", buffer); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_j_jS1L.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_j_jS1L.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_j_jS1L.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval2.so # [stdout] # eval1=<<>> # [stderr] # # rv = 0 # foo.bar.string=hello world 7 # code: #include # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_NA6ORd.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_NA6ORd.c.o # header."stddef.h"=1 # code: #include # code: #include # code: # code: #define signed(type) (((type)-1) < 0) ? "signed" : "unsigned" # code: struct align { char a; unsigned char b; }; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", (int)offsetof(struct align, b)); # code: printf("eval2=<<<%s>>>\n", signed(unsigned char)); # code: printf("eval3=<<<%d>>>\n", (int)sizeof(unsigned char)); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_MNR53J.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_MNR53J.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_MNR53J.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval4.so # [stdout] # eval1=<<<1>>> # eval2=<<>> # eval3=<<<1>>> # [stderr] # # rv = 0 # type.unsigned char.align=1 # type.unsigned char.sign=unsigned # type.unsigned char.size=1 # code: #include # code: #include # code: # code: struct align { char a; float b; }; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", (int)offsetof(struct align, b)); # code: printf("eval2=<<<%d>>>\n", (int)sizeof(float)); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build__qRlVn.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build__qRlVn.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build__qRlVn.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval5.so # [stdout] # eval1=<<<4>>> # eval2=<<<4>>> # [stderr] # # rv = 0 # type.float.align=4 # type.float.size=4 # code: #include # code: #include # code: # code: struct align { char a; void* b; }; # code: # code: # code: int # code: dlmain(int argc, char *argv[]) # code: { # code: # code: # code: printf("eval1=<<<%d>>>\n", (int)offsetof(struct align, b)); # code: printf("eval2=<<<%d>>>\n", (int)sizeof(void *)); # code: # code: return 0; # code: } # [build] # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_ON2pAC.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_ON2pAC.c.o # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_ON2pAC.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval6.so # [stdout] # eval1=<<<8>>> # eval2=<<<8>>> # [stderr] # # rv = 0 # type.pointer.align=8 # type.pointer.size=8 # ==probe.pl== # do { my $x = { # 'foo' => { # 'bar' => { # 'baz' => '3', # 'string' => 'hello world 7' # } # }, # 'header' => { # 'stddef.h' => 1 # }, # 'type' => { # 'float' => { # 'align' => '4', # 'size' => '4' # }, # 'pointer' => { # 'align' => '8', # 'size' => '8' # }, # 'unsigned char' => { # 'align' => '1', # 'sign' => 'unsigned', # 'size' => '1' # } # } # }; # $x;} 1..14 } 1..2 ok t/ffi_probe_runner.t ..................... ok 1 - basic { # exe=blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun ok 1 - FFI::Probe::Runner=HASH->isa('FFI::Probe::Runner') ok 2 ok 3 1..3 } ok 2 - run not pass { # CC corpus/ffi_probe_runner/foo.c # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-X8ZLgY/libfrooble1.so # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-X8ZLgY/libfrooble1.so ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 1..9 } ok 3 - run pass { # CC corpus/ffi_probe_runner/bar.c # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-6vUKYC/libfrooble2.so # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-6vUKYC/libfrooble2.so ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 1..9 } 1..3 ok t/ffi_probe_runner_builder.t ............. # dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ # libs=-ldl # libs= # libs=-lm # libs=-lpthread # libs=-lc # libs=-lcrypt ok 1 - FFI::Probe::Runner::Builder=HASH->isa('FFI::Probe::Runner::Builder') # +x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/src/dlrun.o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/src/dlrun.c # +x86_64-linux-gnu-gcc -fstack-protector-strong -L/usr/local/lib -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/src/dlrun.o -ldl # +/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun verify self # dlrun verify self ok ok 2 - no error ok 3 - executable exists # exe = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun # + /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun verify self # dlrun verify self ok ok 4 - verify ok # + ldd /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun # linux-vdso.so.1 (0x00007fc18a9c2000) # libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc18a7be000) # /lib64/ld-linux-x86-64.so.2 (0x00007fc18a9c4000) 1..4 ok t/ffi_probe_runner_result.t .............. ok 1 - FFI::Probe::Runner::Result=HASH->isa('FFI::Probe::Runner::Result') ok 2 ok 3 - FFI::Probe::Runner::Result=HASH->isa('FFI::Probe::Runner::Result') ok 4 ok 5 ok 6 - FFI::Probe::Runner::Result=HASH->isa('FFI::Probe::Runner::Result') ok 7 ok 8 1..8 ok t/ffi_temp.t ............................. ok 1 # dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/8vDZ5So3hy # file = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/Fdu3aSbPp6 1..1 ok t/forks.t ................................ skipped: Test requires forks t/gh117.t ................................ # value64 = 1099511627775 ok 1 1..1 ok t/gh129.t ................................ ok 1 - attached function { ok 1 1..1 } ok 2 - dynamic function { ok 1 1..1 } ok 3 - type wrapper argument { ok 1 1..1 } ok 4 - type wrapper argument post { ok 1 1..1 } ok 5 - type wrapper return type { ok 1 1..1 } 1..5 ok t/gh323.t ................................ ok 1 - api => 0 { # double = 3.140000 # float = 3.140000 ok 1 # my_float = 3.140000 ok 2 1..2 } ok 2 - api => 1 { # double = 3.140000 # float = 3.140000 ok 1 # my_float = 3.140000 ok 2 1..2 } ok 3 - api => 2 { # double = 3.140000 # float = 3.140000 ok 1 # my_float = 3.140000 ok 2 1..2 } 1..3 ok t/memory.t ............................... skipped: tested only in CI t/threads.t .............................. ok 1 ok 2 - works in a thread ok 3 - works in main thread 1..3 ok t/type_complex_double.t .................. ok 1 - api = 0 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 2 - api = 1 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 3 - api = 2 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { ok 1 1..1 } ok 8 - complex array ret { ok 1 1..1 } 1..8 } 1..3 ok t/type_complex_float.t ................... ok 1 - api = 0 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 2 - api = 1 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { 1..0 # SKIP for api >= 2 only } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { 1..0 # SKIP for api >= 2 only } ok 8 - complex array ret { ok 1 1..1 } 1..8 } ok 3 - api = 2 { ok 1 - standard argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal(10.5) = 10.5 ok 2 - cimag(10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal([10.5,20.5]) = 10.5 ok 2 - cimag([10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal($c) = 10.5 ok 2 - cimag($c) = 20.5 1..2 } 1..3 } ok 2 - pointer argument { ok 1 - with a real number { # to_string(10.5) = 10.5 + 0 * i ok 1 - creal_ptr(\10.5) = 10.5 ok 2 - cimag_ptr(\10.5) = 0.0 1..2 } ok 2 - with an array ref { # to_string([10.5,20.5]) = 10.5 + 20.5 * i ok 1 - creal_ptr(\[10.5,20.5]) = 10.5 ok 2 - cimag_ptr(\[10.5,20.5]) = 20.5 1..2 } ok 3 - with Math::Complex { # to_string($c) = 10.5 + 20.5 * i ok 1 - creal_ptr(\10.5+20.5i) = 10.5 ok 2 - cimag_ptr(\10.5+20.5i) = 20.5 1..2 } ok 4 - values set on out (array) { ok 1 1..1 } ok 5 - values set on out (object) { ok 1 1..1 } ok 6 - values set on out (other) { ok 1 1..1 } 1..6 } ok 3 - return value { ok 1 - standard ok 2 - pointer ok 3 - null 1..3 } ok 4 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 5 - complex array arg { ok 1 ok 2 ok 3 1..3 } ok 6 - complex array arg set { ok 1 1..1 } ok 7 - complex array arg set { ok 1 1..1 } ok 8 - complex array ret { ok 1 1..1 } 1..8 } 1..3 ok t/type_custom.t .......................... ok 1 - legal custom types { ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 } ok 2 - illegal types { # alias = foo_sint8_32_ ok 1 # alias = foo_sint8_ ok 2 1..2 } ok 3 - records { ok 1 - pointer { ok 1 ok 2 ok 3 ok 4 ok 5 1..5 } ok 2 - by-value { ok 1 ok 2 ok 3 ok 4 - return-value { ok 1 1..1 } 1..4 } 1..2 } 1..3 ok t/type_double.t .......................... ok 1 - api = 0 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 16 - null2() == undef ok 17 - call_closure(2.5) = 4.75 ok 18 - call_closure(2.5) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } 1..3 ok t/type_float.t ........................... ok 1 - api = 0 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 14 - null2() == undef ok 15 - call_closure(2.5) = 4.75 ok 16 - call_closure(2.5) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(1.5,2.5) = 4 ok 2 - add() = 0.0 ok 3 - inc(\$i,4.25) = \7.75 ok 4 - i=3.5+4.25 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5] ok 16 - null2() == undef ok 17 - call_closure(2.5) = 4.75 ok 18 - call_closure(2.5) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } 1..3 ok t/type_longdouble.t ...................... ok 1 - Math::LongDouble is loaded when needed for return type { ok 1 - not pre-loaded ok 2 ok 3 1..3 } ok 2 - api = 0 { ok 1 - with Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } ok 2 - without Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } 1..2 } ok 3 - api = 1 { ok 1 - with Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } ok 2 - without Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } 1..2 } ok 4 - api = 2 { ok 1 - with Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } ok 2 - without Math::LongDouble { 1..0 # SKIP test requires Math::LongDouble } 1..2 } 1..4 ok t/type_longdouble__array.t ............... ok 1 - Math::LongDouble is loaded when needed for return type { ok 1 - not pre-loaded ok 2 ok 3 1..3 } 1..1 ok t/type_longdouble__hide.t ................ skipped: test requires Devel::Hide 0.0010 t/type_longdouble__ptr.t ................. ok 1 - Math::LongDouble is loaded when needed for return type { ok 1 - not pre-loaded ok 2 ok 3 1..3 } 1..1 ok t/type_opaque.t .......................... ok 1 - api = 0 { ok 1 - null = ()/undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(94816651963472); getp() = 94816651963472 ok 6 - get($tmp); tmp = 94816651963472 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_null_in([undef,undef,undef]) ok 10 - aa_out() ok 11 - aa_null_out() ok 12 - ra_out() ok 13 - ra_out_nt() ok 14 - ra_null_out ok 15 - pp2p(\undef) = undef ok 16 - pp2p(\94816652305296) = 94816652305296 ok 17 - p2pp(undef) = \undef ok 18 - pp2p(94816647977056) = \94816647977056 ok 19 - call_closure(undef) = undef ok 20 - save = undef ok 21 - call_closure(\94816652261728) = 94816652261728 ok 22 - save = 94816652261728 ok 23 - custom type input { ok 1 ok 2 1..2 } ok 24 - custom type output { ok 1 ok 2 1..2 } 1..24 } ok 2 - api = 1 { ok 1 - null = ()/undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(94816652225856); getp() = 94816652225856 ok 6 - get($tmp); tmp = 94816652225856 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_null_in([undef,undef,undef]) ok 10 - aa_out() ok 11 - aa_null_out() ok 12 - ra_out() ok 13 - ra_out_nt() ok 14 - ra_null_out ok 15 - pp2p(\undef) = undef ok 16 - pp2p(\94816652286560) = 94816652286560 ok 17 - p2pp(undef) = \undef ok 18 - pp2p(94816652268864) = \94816652268864 ok 19 - call_closure(undef) = undef ok 20 - save = undef ok 21 - call_closure(\94816652294416) = 94816652294416 ok 22 - save = 94816652294416 ok 23 - custom type input { ok 1 ok 2 1..2 } ok 24 - custom type output { ok 1 ok 2 1..2 } 1..24 } ok 3 - api = 2 { ok 1 - null = ()/undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(94816651900944); getp() = 94816651900944 ok 6 - get($tmp); tmp = 94816651900944 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_in([one two three]) ok 10 - aa_null_in([undef,undef,undef]) ok 11 - aa_out() ok 12 - aa_out() ok 13 - aa_null_out() ok 14 - ra_out() ok 15 - ra_out_nt() ok 16 - ra_null_out ok 17 - pp2p(\undef) = undef ok 18 - pp2p(\94816652426640) = 94816652426640 ok 19 - p2pp(undef) = \undef ok 20 - pp2p(94816652437552) = \94816652437552 ok 21 - call_closure(undef) = undef ok 22 - save = undef ok 23 - call_closure(\94816652405936) = 94816652405936 ok 24 - save = 94816652405936 ok 25 - custom type input { ok 1 ok 2 1..2 } ok 26 - custom type output { ok 1 ok 2 1..2 } 1..26 } ok 4 - object { ok 1 - argument { ok 1 ok 2 1..2 } ok 2 - return value { ok 1 ok 2 - Roger=SCALAR->isa('Roger') ok 3 ok 4 - Roger=SCALAR->isa('Roger') ok 5 1..5 } ok 3 1..3 } ok 5 - object { ok 1 - argument { ok 1 ok 2 1..2 } ok 2 - return value { ok 1 ok 2 - Roger=SCALAR->isa('Roger') ok 3 ok 4 - Roger=SCALAR->isa('Roger') ok 5 1..5 } ok 3 1..3 } 1..5 ok t/type_record.t .......................... # record size = 20 ok 1 - not a reference { ok 1 - in { # packed size = 20 ok 1 - get_value($packed) = 42 ok 2 - get_name($packed) = hi there ok 3 - is_null(undef) 1..3 } ok 2 - out { # packed size = 20 ok 1 - get_value($packed) = 47 ok 2 - get_value($packed) = platypus ok 3 - null() = undef 1..3 } 1..2 } ok 2 - return null { ok 1 ok 2 1..2 } ok 3 - is a reference { ok 1 - in { # packed size = 20 ok 1 - get_value(\$packed) = 42 ok 2 - get_name(\$packed) = hi there ok 3 - is_null(\undef) 1..3 } ok 2 - out { # packed size = 36 ok 1 - My::FooRecord=SCALAR->isa('My::FooRecord') ok 2 - packed.my_method = starscream ok 3 - get_value($packed) = 47 ok 4 - get_value($packed) = platypus ok 5 - null() = \undef 1..5 } 1..2 } ok 4 - closure { ok 1 - allow record type as arg ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 # error = record is read-only at t/type_record.t line 135. ok 8 ok 9 ok 10 ok 11 # error = record is read-only at t/type_record.t line 144. ok 12 ok 13 # error = record is read-only at t/type_record.t line 151. ok 14 ok 15 ok 16 # error = record is read-only at t/type_record.t line 160. ok 17 ok 18 ok 19 # error = record is read-only at t/type_record.t line 169. ok 20 ok 21 # error = record is read-only at t/type_record.t line 176. ok 22 ok 23 # error = record is read-only at t/type_record.t line 184. ok 24 ok 25 ok 26 # error = record is read-only at t/type_record.t line 193. ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 1..32 } ok 5 - api = 1 fixed string { ok 1 ok 2 ok 3 1..3 } 1..5 ok t/type_record_value.t .................... ok 1 - is a reference { ok 1 - argument { ok 1 - bad { ok 1 ok 2 ok 3 1..3 } ok 2 - good { ok 1 ok 2 1..2 } 1..2 } ok 2 - return value { ok 1 - function object { ok 1 ok 2 1..2 } ok 2 - xsub_ref { ok 1 ok 2 1..2 } ok 3 - attach { ok 1 ok 2 1..2 } 1..3 } 1..2 } ok 2 - closure { ok 1 - do allow record type as arg ok 2 - do not allow record type with pointer strings as ret type ok 3 # first closure ok 4 - Closure::Record::RW=SCALAR->isa('Closure::Record::RW') ok 5 ok 6 ok 7 ok 8 ok 9 # error = record is read-only at t/type_record_value.t line 156. ok 10 ok 11 ok 12 ok 13 # error = record is read-only at t/type_record_value.t line 165. ok 14 ok 15 # error = record is read-only at t/type_record_value.t line 172. ok 16 ok 17 ok 18 # error = record is read-only at t/type_record_value.t line 181. ok 19 ok 20 ok 21 # error = record is read-only at t/type_record_value.t line 190. ok 22 ok 23 # error = record is read-only at t/type_record_value.t line 197. ok 24 ok 25 # error = record is read-only at t/type_record_value.t line 205. ok 26 ok 27 ok 28 # error = record is read-only at t/type_record_value.t line 214. ok 29 ok 30 ok 31 1..31 } ok 3 - closure ret { ok 1 ok 2 ok 3 - good { ok 1 - Closure::Record::Simple=SCALAR->isa('Closure::Record::Simple') ok 2 ok 3 ok 4 1..4 } ok 4 - bad { # Return record from closure is wrong type! at t/type_record_value.t line 286. ok 1 - Closure::Record::Simple=SCALAR->isa('Closure::Record::Simple') ok 2 ok 3 ok 4 1..4 } ok 5 - short { # Return record from closure is wrong size! at t/type_record_value.t line 307. ok 1 - Closure::Record::Simple=SCALAR->isa('Closure::Record::Simple') ok 2 ok 3 ok 4 1..4 } 1..5 } 1..3 ok t/type_sint16.t .......................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_sint32.t .......................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_sint64.t .......................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_sint8.t ........................... ok 1 - api = 0 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 2 - api = 1 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 14 - null2() == undef ok 15 - call_closure(-2) = -4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 19 - closure_pointer_is_null() = 1 1..19 } ok 3 - api = 2 { ok 1 - add(-1,2) = 1 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \1 ok 4 - i=1 ok 5 - inc(\-3,4) = \1 ok 6 - sum([-5..4]) = -5 ok 7 - sum([-5..4],10) = -5 ok 8 - sum([-5..4]) = -5 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [-1,2,-3,4,-5,6,-7,8,-9,10] ok 16 - null2() == undef ok 17 - call_closure(-2) = -4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 } ok 21 - closure_pointer_is_null() = 1 1..21 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_string.t .......................... ok 1 - api = 0 { ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 - fixed length input { ok 1 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five 1..5 } 1..1 } ok 27 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 28 - variable length input { 1..0 # SKIP test requires api >=2 } ok 29 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle 1..3 } ok 30 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } ok 31 - argument update { ok 1 1..1 } ok 32 - write to string { ok 1 1..1 } ok 33 1..33 } ok 2 - api = 1 { ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 - fixed length input { ok 1 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five 1..5 } 1..1 } ok 27 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 28 - variable length input { 1..0 # SKIP test requires api >=2 } ok 29 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle 1..3 } ok 30 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } ok 31 - argument update { ok 1 1..1 } ok 32 - write to string { ok 1 1..1 } ok 33 1..33 } ok 3 - api = 2 { ok 1 - string_matches_foobarbaz(foobarbaz) = true ok 2 - string_matches_foobarbaz(foobarbaz) = false ok 3 - string_return_foobarbaz() = foobarbaz ok 4 - null() = undef ok 5 - is_null(undef) = 1 ok 6 - is_null() = 1 ok 7 - is_null("foo") = 0 ok 8 - $save = hey there ok 9 - $save = undef ok 10 - fixed_input_test(foobarbaz\0) ok 11 - fixed_input_is_null(undef) ok 12 - string_fixed_text(0) = zero ok 13 - string_fixed_text(1) = one ok 14 - string_fixed_text(2) = two ok 15 - string_fixed_text(3) = three ok 16 - fixed_output_null() ok 17 - save=zero ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 - fixed length input { ok 1 - with default { ok 1 - a2(0) = foo ok 2 - a2(0) = bar ok 3 - a2(0) = baz ok 4 - a2(0) = undef ok 5 - a2(0) = five 1..5 } 1..1 } ok 27 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 28 - variable length input { ok 1 - get_string_from_array(@list, 0) = foo ok 2 - get_string_from_array(@list, 1) = bar ok 3 - get_string_from_array(@list, 2) = baz ok 4 - get_string_from_array(@list, 3) = undef 1..4 } ok 29 - fixed length return { ok 1 - returns null ok 2 - returns with just strings ok 3 - returns with NULL/undef in the middle 1..3 } ok 30 - null terminated return { ok 1 - returns null ok 2 ok 3 ok 4 1..4 } ok 31 - argument update { ok 1 1..1 } ok 32 - write to string { ok 1 1..1 } ok 33 1..33 } 1..3 ok t/type_uint16.t .......................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_uint32.t .......................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_uint64.t .......................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok t/type_uint8.t ........................... ok 1 - api = 0 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 2 - api = 1 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - array increment ok 9 - null() == undef ok 10 - is_null(undef) == 1 ok 11 - is_null() == 1 ok 12 - is_null(22) == 0 ok 13 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 14 - null2() == undef ok 15 - call_closure(2) = 4 ok 16 - call_closure(2) = 0 ok 17 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 18 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 19 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 20 - closure_pointer_is_null() = 1 1..20 } ok 3 - api = 2 { ok 1 - add(1,2) = 3 ok 2 - add() = 0 ok 3 - inc(\$i,4) = \7 ok 4 - i=3+4 ok 5 - inc(\3,4) = \7 ok 6 - sum([1..10]) = 55 ok 7 - sum2([1..10],10) = 55 ok 8 - sum([1..10]) = 55 (passed as pointer) ok 9 - array increment ok 10 - array increment ok 11 - null() == undef ok 12 - is_null(undef) == 1 ok 13 - is_null() == 1 ok 14 - is_null(22) == 0 ok 15 - static_array = [1,4,6,8,10,12,14,16,18,20] ok 16 - null2() == undef ok 17 - call_closure(2) = 4 ok 18 - call_closure(2) = 0 ok 19 - custom type input { ok 1 ok 2 - custom_add(2,1) = 5 1..2 } ok 20 - custom type output { ok 1 ok 2 - custom_add2(1,1) = 4 1..2 } ok 21 - custom type post { ok 1 ok 2 - custom_add3(1,2) = 3 1..2 } ok 22 - closure_pointer_is_null() = 1 1..22 } ok 4 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } ok 5 - object { ok 1 - argument { ok 1 1..1 } ok 2 - return value { ok 1 - Roger=SCALAR->isa('Roger') ok 2 1..2 } 1..2 } 1..5 ok All tests successful. Files=72, Tests=320, 17 wallclock secs ( 0.42 usr 0.08 sys + 10.24 cusr 2.19 csys = 12.93 CPU) Result: PASS make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' create-stamp debian/debhelper-build-stamp dh_prep debian/rules override_dh_auto_install make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_install make -j42 install DESTDIR=/build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl AM_UPDATE_INFO_DIR=no PREFIX=/usr make[2]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 Manifying 33 pod documents Manifying 10 pod documents Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Platypus.so Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Memory/Memory.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Constant/Constant.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Record/Meta/Meta.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Temp.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/typemap Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/ShareConfig.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/DL.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Internal.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Function.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Constant.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Buffer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/API.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Legacy.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Bundle.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Memory.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Closure.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version0.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version1.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version2.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/PointerSizeBuffer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/StringArray.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/StringPointer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/WideString.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/C.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/ASM.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/Win32.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/Meta.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/TieArray.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner/Builder.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner/Result.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/PluginData.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/Plugin.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/MM.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/Platform.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/CXX.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Base.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Object.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/C.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Library.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/config.pl Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/include/ffi_platypus_config.h Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/include/ffi_platypus_bundle.h Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/lib/libplfill.so Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/probe.pl Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/src/dlrun.c Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/bin/dlrun Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Library.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringArray.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::CXX.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version0.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Object.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Result.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Platform.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Function.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::WideString.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Memory.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Bundle.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::C.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version1.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Closure.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::API.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::DL.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringPointer.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::ASM.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Constant.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Buffer.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::PluginData.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record::Meta.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Legacy.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::C.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record::TieArray.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::Win32.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Temp.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version2.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Plugin.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::PointerSizeBuffer.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Builder.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Internal.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::MM.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Base.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe.3pm make[2]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' # contentless manpage rm -f -v /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm removed '/build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm' make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_installdocs dh_installchangelogs debian/rules override_dh_installexamples make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_installexamples sed -i '1s|^#!perl|#!/usr/bin/perl|' /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/doc/libffi-platypus-perl/examples/*.pl sed -i '1s|^#!/usr/bin/env perl|#!/usr/bin/perl|' /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/doc/libffi-platypus-perl/examples/*.pl make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_installman dh_perl dh_link dh_strip_nondeterminism dh_compress dh_fixperms dh_missing dh_dwz -a dh_strip -a dh_makeshlibs -a dh_shlibdeps -a dpkg-shlibdeps: warning: diversions involved - output may be incorrect diversion by libc6 from: /lib64/ld-linux-x86-64.so.2 dpkg-shlibdeps: warning: diversions involved - output may be incorrect diversion by libc6 to: /lib64/ld-linux-x86-64.so.2.usr-is-merged dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'libffi-platypus-perl' in '../libffi-platypus-perl_2.09-1_amd64.deb'. dpkg-deb: building package 'libffi-platypus-perl-dbgsym' in '../libffi-platypus-perl-dbgsym_2.09-1_amd64.deb'. dpkg-genbuildinfo --build=binary -O../libffi-platypus-perl_2.09-1_amd64.buildinfo dpkg-genchanges --build=binary -O../libffi-platypus-perl_2.09-1_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . 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/1959285/tmp/hooks/B01_cleanup starting I: user script /srv/workspace/pbuilder/1959285/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/1959285 and its subdirectories I: Current time: Thu Dec 25 02:15:50 +14 2025 I: pbuilder-time-stamp: 1766578550 + false + set +x Wed Dec 24 12:15:50 UTC 2025 I: Signing ./b2/libffi-platypus-perl_2.09-1_amd64.buildinfo as libffi-platypus-perl_2.09-1_amd64.buildinfo.asc Wed Dec 24 12:15:50 UTC 2025 I: Signed ./b2/libffi-platypus-perl_2.09-1_amd64.buildinfo as ./b2/libffi-platypus-perl_2.09-1_amd64.buildinfo.asc Wed Dec 24 12:15:50 UTC 2025 - build #2 for libffi-platypus-perl/trixie/amd64 on ionos15-amd64 done. Starting cleanup. All cleanup done. Wed Dec 24 12:15:50 UTC 2025 - reproducible_build.sh stopped running as /tmp/jenkins-script-Tk7b8KMI, removing. /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg: total 272 drwxr-xr-x 2 jenkins jenkins 4096 Nov 21 05:50 b1 drwxr-xr-x 2 jenkins jenkins 4096 Nov 21 05:52 b2 -rw-r--r-- 1 jenkins jenkins 2684 Aug 29 09:47 libffi-platypus-perl_2.09-1.dsc -rw------- 1 jenkins jenkins 260479 Nov 21 05:50 rbuildlog.bVYM105 /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b1: total 1260 -rw-r--r-- 1 jenkins jenkins 256319 Nov 21 05:50 build.log -rw-r--r-- 1 jenkins jenkins 219984 Nov 21 05:50 libffi-platypus-perl-dbgsym_2.09-1_amd64.deb -rw-r--r-- 1 jenkins jenkins 4856 Nov 21 05:50 libffi-platypus-perl_2.09-1.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2684 Nov 21 05:50 libffi-platypus-perl_2.09-1.dsc -rw-r--r-- 1 jenkins jenkins 5348 Nov 21 05:50 libffi-platypus-perl_2.09-1_amd64.buildinfo -rw-r--r-- 1 jenkins jenkins 6230 Nov 21 05:50 libffi-platypus-perl_2.09-1_amd64.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1644 Nov 21 05:50 libffi-platypus-perl_2.09-1_amd64.changes -rw-r--r-- 1 jenkins jenkins 330836 Nov 21 05:50 libffi-platypus-perl_2.09-1_amd64.deb -rw-r--r-- 1 jenkins jenkins 1740 Nov 21 05:50 libffi-platypus-perl_2.09-1_source.changes -rw-r--r-- 1 jenkins jenkins 422835 Nov 21 05:50 libffi-platypus-perl_2.09.orig.tar.gz /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b2: total 1248 -rw-r--r-- 1 jenkins jenkins 258377 Nov 21 05:52 build.log -rw-r--r-- 1 jenkins jenkins 219984 Nov 21 05:52 libffi-platypus-perl-dbgsym_2.09-1_amd64.deb -rw-r--r-- 1 jenkins jenkins 4856 Nov 21 05:52 libffi-platypus-perl_2.09-1.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2684 Nov 21 05:52 libffi-platypus-perl_2.09-1.dsc -rw-r--r-- 1 jenkins jenkins 5357 Nov 21 05:52 libffi-platypus-perl_2.09-1_amd64.buildinfo -rw-r--r-- 1 jenkins jenkins 6239 Nov 21 05:52 libffi-platypus-perl_2.09-1_amd64.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1644 Nov 21 05:52 libffi-platypus-perl_2.09-1_amd64.changes -rw-r--r-- 1 jenkins jenkins 330836 Nov 21 05:52 libffi-platypus-perl_2.09-1_amd64.deb -rw-r--r-- 1 jenkins jenkins 1740 Nov 21 05:52 libffi-platypus-perl_2.09-1_source.changes -rw-r--r-- 1 jenkins jenkins 422835 Nov 21 05:52 libffi-platypus-perl_2.09.orig.tar.gz Thu Nov 21 05:52:51 UTC 2024 I: Deleting $TMPDIR on ionos15-amd64.debian.net. Thu Nov 21 05:52:51 UTC 2024 I: libffi-platypus-perl_2.09-1_amd64.changes: Format: 1.8 Date: Thu, 29 Aug 2024 11:33:41 +0200 Source: libffi-platypus-perl Binary: libffi-platypus-perl libffi-platypus-perl-dbgsym Architecture: amd64 Version: 2.09-1 Distribution: unstable Urgency: medium Maintainer: Debian Perl Group Changed-By: gregor herrmann Description: libffi-platypus-perl - module to create Perl bindings to non-Perl libraries with FFI Changes: libffi-platypus-perl (2.09-1) unstable; urgency=medium . * Import upstream version 2.09. * Update years of packaging copyright. * Declare compliance with Debian Policy 4.7.0. * Drop unneeded version constraints from (build) dependencies. Checksums-Sha1: 272591498e749a9398d1cbd7b56f1dff255e62a2 219984 libffi-platypus-perl-dbgsym_2.09-1_amd64.deb 114642b38a4a69a97ddd430f36d737d3682890ac 5348 libffi-platypus-perl_2.09-1_amd64.buildinfo 2fc86f721ba8334f43fa6653d1896ee5b2f5397a 330836 libffi-platypus-perl_2.09-1_amd64.deb Checksums-Sha256: 965796530ef4fee1a5f9995fda7466bb3cf07e4ad353e8451bda3422034e521c 219984 libffi-platypus-perl-dbgsym_2.09-1_amd64.deb f49249270955e2bdb5ba7da6cd12747ee8b8b8e1eb035ad48b3694e4da796892 5348 libffi-platypus-perl_2.09-1_amd64.buildinfo 40c90059340ed8a17c074d7ad96d18ed2edd3b702161343aa413d4b4ede63d7d 330836 libffi-platypus-perl_2.09-1_amd64.deb Files: 12f1a305f30e9b70d6c13d23fb027405 219984 debug optional libffi-platypus-perl-dbgsym_2.09-1_amd64.deb 294bd47034fedee177228fdd2200282e 5348 perl optional libffi-platypus-perl_2.09-1_amd64.buildinfo e57aee4b7d1bd9adae3f4ba59c5fcc07 330836 perl optional libffi-platypus-perl_2.09-1_amd64.deb removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/trixie/amd64/libffi-platypus-perl_2.09-1.rbuild.log' removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/trixie/amd64/libffi-platypus-perl_2.09-1.rbuild.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/trixie/amd64/libffi-platypus-perl_2.09-1.build1.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/trixie/amd64/libffi-platypus-perl_2.09-1.build2.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/buildinfo/trixie/amd64/libffi-platypus-perl_2.09-1_amd64.buildinfo' removed '/var/lib/jenkins/userContent/reproducible/debian/logdiffs/trixie/amd64/libffi-platypus-perl_2.09-1.diff.gz' Diff of the two buildlogs: -- --- b1/build.log 2024-11-21 05:50:13.063578841 +0000 +++ b2/build.log 2024-11-21 05:52:51.288409297 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed Nov 20 17:47:37 -12 2024 -I: pbuilder-time-stamp: 1732168057 +I: Current time: Thu Dec 25 02:13:14 +14 2025 +I: pbuilder-time-stamp: 1766578394 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -25,52 +25,84 @@ dpkg-source: info: unpacking libffi-platypus-perl_2.09-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/3063139/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/D01_modify_environment starting +debug: Running on ionos15-amd64. +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 +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Dec 24 12:13 /bin/sh -> /bin/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/1959285/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="32" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.32(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='f707cf4ef42140d78707e7d3d753f7ad' - 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='3063139' - PS1='# ' - PS2='> ' + INVOCATION_ID=09c1ff7987104d4db23b1a3aa2b194a6 + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + 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=1959285 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/r-b-build.hxADhKAg/pbuilderrc_vXw1 --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b1 --logfile b1/build.log libffi-platypus-perl_2.09-1.dsc' - SUDO_GID='111' - SUDO_UID='106' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://46.16.76.132:3128' + 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/r-b-build.hxADhKAg/pbuilderrc_UdkH --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b2 --logfile b2/build.log libffi-platypus-perl_2.09-1.dsc' + SUDO_GID=111 + SUDO_UID=106 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://213.165.73.152:3128 I: uname -a - Linux ionos11-amd64 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.11.5+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11.5-1~bpo12+1 (2024-11-11) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 4 21:30 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/3063139/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 4 2024 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -159,7 +191,7 @@ Get: 36 http://deb.debian.org/debian trixie/main amd64 libtest2-suite-perl all 0.000163-1 [383 kB] Get: 37 http://deb.debian.org/debian trixie/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB] Get: 38 http://deb.debian.org/debian trixie/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB] -Fetched 21.5 MB in 2s (8818 kB/s) +Fetched 21.5 MB in 6s (3594 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package sensible-utils. (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 ... 19969 files and directories currently installed.) @@ -326,7 +358,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/libffi-platypus-perl-2.09/ && 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 > ../libffi-platypus-perl_2.09-1_source.changes +I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/1959285/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/libffi-platypus-perl-2.09/ && 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 > ../libffi-platypus-perl_2.09-1_source.changes dpkg-buildpackage: info: source package libffi-platypus-perl dpkg-buildpackage: info: source version 2.09-1 dpkg-buildpackage: info: source distribution unstable @@ -351,56 +387,56 @@ debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_build -- V=1 - make -j20 V=1 + make -j42 V=1 make[2]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' Running Mkbootstrap for lib/FFI/Platypus () "/usr/bin/perl" "/usr/share/perl/5.40/ExtUtils/xsubpp" -typemap '/usr/share/perl/5.40/ExtUtils/typemap' lib/FFI/Platypus.xs > lib/FFI/Platypus.xsc chmod 644 "lib/FFI/Platypus.bs" -cp lib/FFI/Build/File/Base.pm blib/lib/FFI/Build/File/Base.pm -cp lib/FFI/Build/Plugin.pm blib/lib/FFI/Build/Plugin.pm -cp lib/FFI/Platypus/Lang/Win32.pm blib/lib/FFI/Platypus/Lang/Win32.pm -cp lib/FFI/Build/Platform.pm blib/lib/FFI/Build/Platform.pm +"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 cp lib/FFI/Platypus.pm blib/lib/FFI/Platypus.pm +cp lib/FFI/Platypus/Lang/ASM.pm blib/lib/FFI/Platypus/Lang/ASM.pm +cp lib/FFI/Platypus/Function.pm blib/lib/FFI/Platypus/Function.pm cp lib/FFI/Platypus/Type.pm blib/lib/FFI/Platypus/Type.pm -cp lib/FFI/Platypus/Legacy.pm blib/lib/FFI/Platypus/Legacy.pm -cp lib/FFI/Build/File/CXX.pm blib/lib/FFI/Build/File/CXX.pm -cp lib/FFI/Build/File/Library.pm blib/lib/FFI/Build/File/Library.pm cp lib/FFI/Platypus/Constant.pm blib/lib/FFI/Platypus/Constant.pm -cp lib/FFI/Platypus/Lang/ASM.pm blib/lib/FFI/Platypus/Lang/ASM.pm -cp lib/FFI/Platypus/Bundle.pm blib/lib/FFI/Platypus/Bundle.pm -cp lib/FFI/Platypus/Type/StringPointer.pm blib/lib/FFI/Platypus/Type/StringPointer.pm -cp lib/FFI/Platypus/Record.pm blib/lib/FFI/Platypus/Record.pm -cp lib/FFI/Build.pm blib/lib/FFI/Build.pm -cp lib/FFI/Platypus/TypeParser/Version2.pm blib/lib/FFI/Platypus/TypeParser/Version2.pm +cp lib/FFI/Platypus/TypeParser/Version0.pm blib/lib/FFI/Platypus/TypeParser/Version0.pm cp lib/FFI/Platypus/DL.pm blib/lib/FFI/Platypus/DL.pm +cp lib/FFI/Platypus/Type/StringArray.pm blib/lib/FFI/Platypus/Type/StringArray.pm +cp lib/FFI/Platypus/Legacy.pm blib/lib/FFI/Platypus/Legacy.pm +cp lib/FFI/Platypus/Record.pm blib/lib/FFI/Platypus/Record.pm cp lib/FFI/Platypus/TypeParser/Version1.pm blib/lib/FFI/Platypus/TypeParser/Version1.pm +cp lib/FFI/Build/File/C.pm blib/lib/FFI/Build/File/C.pm +cp lib/FFI/Build/Plugin.pm blib/lib/FFI/Build/Plugin.pm +cp lib/FFI/Build.pm blib/lib/FFI/Build.pm +cp lib/FFI/Build/File/CXX.pm blib/lib/FFI/Build/File/CXX.pm +cp lib/FFI/Platypus/Type/StringPointer.pm blib/lib/FFI/Platypus/Type/StringPointer.pm +cp lib/FFI/Platypus/ShareConfig.pm blib/lib/FFI/Platypus/ShareConfig.pm +cp lib/FFI/Build/Platform.pm blib/lib/FFI/Build/Platform.pm +cp lib/FFI/Platypus/Buffer.pm blib/lib/FFI/Platypus/Buffer.pm +cp lib/FFI/Platypus/Record/TieArray.pm blib/lib/FFI/Platypus/Record/TieArray.pm +cp lib/FFI/Platypus/API.pm blib/lib/FFI/Platypus/API.pm +cp lib/FFI/Platypus/Memory.pm blib/lib/FFI/Platypus/Memory.pm +cp lib/FFI/Platypus/Lang.pm blib/lib/FFI/Platypus/Lang.pm +cp lib/FFI/Platypus/Lang/C.pm blib/lib/FFI/Platypus/Lang/C.pm cp lib/FFI/Build/PluginData.pm blib/lib/FFI/Build/PluginData.pm +cp lib/FFI/Platypus/Type/WideString.pm blib/lib/FFI/Platypus/Type/WideString.pm +cp lib/FFI/Build/File/Base.pm blib/lib/FFI/Build/File/Base.pm +cp lib/FFI/Build/File/Library.pm blib/lib/FFI/Build/File/Library.pm +cp lib/FFI/Platypus/Type/PointerSizeBuffer.pm blib/lib/FFI/Platypus/Type/PointerSizeBuffer.pm cp lib/FFI/Build/MM.pm blib/lib/FFI/Build/MM.pm -cp lib/FFI/Build/File/Object.pm blib/lib/FFI/Build/File/Object.pm -cp lib/FFI/Platypus/Record/TieArray.pm blib/lib/FFI/Platypus/Record/TieArray.pm cp lib/FFI/Platypus/Internal.pm blib/lib/FFI/Platypus/Internal.pm -cp lib/FFI/Platypus/Buffer.pm blib/lib/FFI/Platypus/Buffer.pm -cp lib/FFI/Platypus/Type/PointerSizeBuffer.pm blib/lib/FFI/Platypus/Type/PointerSizeBuffer.pm +cp lib/FFI/Platypus/Bundle.pm blib/lib/FFI/Platypus/Bundle.pm cp lib/FFI/Platypus/TypeParser.pm blib/lib/FFI/Platypus/TypeParser.pm -cp lib/FFI/Platypus/Memory.pm blib/lib/FFI/Platypus/Memory.pm -cp lib/FFI/Platypus/Type/StringArray.pm blib/lib/FFI/Platypus/Type/StringArray.pm -cp lib/FFI/Platypus/API.pm blib/lib/FFI/Platypus/API.pm +cp lib/FFI/Build/File/Object.pm blib/lib/FFI/Build/File/Object.pm +cp lib/FFI/Platypus/Lang/Win32.pm blib/lib/FFI/Platypus/Lang/Win32.pm +cp lib/FFI/Platypus/TypeParser/Version2.pm blib/lib/FFI/Platypus/TypeParser/Version2.pm cp lib/FFI/Platypus/Record/Meta.pm blib/lib/FFI/Platypus/Record/Meta.pm -cp lib/FFI/Platypus/ShareConfig.pm blib/lib/FFI/Platypus/ShareConfig.pm -cp lib/FFI/Platypus/TypeParser/Version0.pm blib/lib/FFI/Platypus/TypeParser/Version0.pm cp lib/FFI/Platypus/Closure.pm blib/lib/FFI/Platypus/Closure.pm -cp lib/FFI/Platypus/Function.pm blib/lib/FFI/Platypus/Function.pm -cp lib/FFI/Platypus/Type/WideString.pm blib/lib/FFI/Platypus/Type/WideString.pm -cp lib/FFI/Platypus/Lang.pm blib/lib/FFI/Platypus/Lang.pm -cp lib/FFI/Build/File/C.pm blib/lib/FFI/Build/File/C.pm -cp lib/FFI/Platypus/Lang/C.pm blib/lib/FFI/Platypus/Lang/C.pm -"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 -cp lib/FFI/Temp.pm blib/lib/FFI/Temp.pm +cp lib/FFI/Probe/Runner/Result.pm blib/lib/FFI/Probe/Runner/Result.pm +cp lib/FFI/Probe/Runner/Builder.pm blib/lib/FFI/Probe/Runner/Builder.pm cp lib/FFI/typemap blib/lib/FFI/typemap cp lib/FFI/Probe.pm blib/lib/FFI/Probe.pm -cp lib/FFI/Probe/Runner/Builder.pm blib/lib/FFI/Probe/Runner/Builder.pm -cp lib/FFI/Probe/Runner/Result.pm blib/lib/FFI/Probe/Runner/Result.pm cp lib/FFI/Probe/Runner.pm blib/lib/FFI/Probe/Runner.pm +cp lib/FFI/Temp.pm blib/lib/FFI/Temp.pm mv lib/FFI/Platypus.xsc lib/FFI/Platypus.c +x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -c -o blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.o blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.c +x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libffi-platypus-perl-2.09=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now -fstack-protector-strong -L/usr/local/lib -o blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun blib/lib/auto/share/dist/FFI-Platypus/probe/src/dlrun.o -ldl @@ -628,7 +664,7 @@ make[2]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_test - make -j20 test TEST_VERBOSE=1 + make -j42 test TEST_VERBOSE=1 make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 CC t/ffi/align.c @@ -749,21 +785,21 @@ # # # Probes: -# complex 1 +# bigendian 0 # variadic 1 -# strnlen 1 +# abi 1 +# longdouble 1 +# complex 1 # recordvalue 1 +# strnlen 1 # bigendian64 0 -# bigendian 0 -# longdouble 1 # alloca 1 -# abi 1 # # # # CPU Info: -# model name : AMD Opteron 62xx class CPU -# flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm cmp_legacy svm abm sse4a misalignsse 3dnowprefetch osvw ssbd ibpb vmmcall virt_ssbd arat npt nrip_save +# model name : Intel Core Processor (Haswell) +# flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveopt arat vnmi md_clear # address sizes : 40 bits physical, 48 bits virtual # # @@ -804,8 +840,8 @@ # class = FFI::Build::File::CXX # class = FFI::Build::File::Library # class = FFI::Build::File::Object - # class = FFI::Build::File::Foo2 # class = FFI::Build::File::Foo1 + # class = FFI::Build::File::Foo2 1..1 } ok 3 - build { @@ -813,9 +849,9 @@ # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo1.c.o - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo2.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168173/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/jzPbZBauNc/libfoo.so + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo1.c.o + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo2.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/oMVzku7xs5/libfoo.so ok 2 ok 3 1..3 @@ -824,7 +860,7 @@ # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/_build/foo1.c.o corpus/ffi_build/project1/_build/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/DpQFkBz3fi/libfoo.so + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/_build/foo1.c.o corpus/ffi_build/project1/_build/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/nVfBuZduqU/libfoo.so ok 2 ok 3 1..3 @@ -833,9 +869,9 @@ # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo1.c.o - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo2.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.3080076.1732168174/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/bx1rGUxD5E/libfoo.so + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo1.c.o + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo2.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.1969527.1766578525/foo2.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/vD5TN7S1nq/libfoo.so ok 2 ok 3 1..3 @@ -846,9 +882,9 @@ # corpus/ffi_build/project-cxx/foo1.cxx # corpus/ffi_build/project-cxx/foo2.cpp ok 1 - no error - # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo1.cxx -o corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo1.o - # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo2.cpp -o corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo2.o - # +x86_64-linux-gnu-g++ -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo1.o corpus/ffi_build/project-cxx/tmpbuild.3080076.1732168174/foo2.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/tmpbuild._j3jVq/libfoo.so + # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo1.cxx -o corpus/ffi_build/project-cxx/tmpbuild.1969527.1766578526/foo1.o + # +x86_64-linux-gnu-g++ -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c corpus/ffi_build/project-cxx/foo2.cpp -o corpus/ffi_build/project-cxx/tmpbuild.1969527.1766578526/foo2.o + # +x86_64-linux-gnu-g++ -shared -L/usr/local/lib -fstack-protector-strong corpus/ffi_build/project-cxx/tmpbuild.1969527.1766578526/foo1.o corpus/ffi_build/project-cxx/tmpbuild.1969527.1766578526/foo2.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/tmpbuild.buNUkB/libfoo.so ok 2 - foo1 found ok 3 - foo2 found ok 4 @@ -895,7 +931,7 @@ ok 3 - has the correct extension ok 4 - is_temp ok 5 - # path: /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_LnxLku.foo + # path: /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_52iZIB.foo ok 6 - No forward slashes! ok 7 - file exists ok 8 - file is removed after destroy @@ -1156,35 +1192,35 @@ } ok 2 - abi { ok 1 - has a default ABI - ok 2 - gnuw64 { + ok 2 - efi64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } - ok 3 - default_abi { + ok 3 - unix64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } - ok 4 - unix64 { + ok 4 - win64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } - ok 5 - win64 { + ok 5 - gnuw64 { ok 1 - string ok 2 - type parser ok 3 - integer ok 4 - type parser 1..4 } - ok 6 - efi64 { + ok 6 - default_abi { ok 1 - string ok 2 - type parser ok 3 - integer @@ -1445,16 +1481,16 @@ } ok 5 - find lib { ok 1 - find_lib { - ok 1 - found f0 = 139699138683760 + ok 1 - found f0 = 140684102787952 1..1 } ok 2 - external { - ok 1 - ffi.find_symbol(f0) = 139699138683760 + ok 1 - ffi.find_symbol(f0) = 140684102787952 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } ok 3 - internal { - ok 1 - ffi.find_symbol(printf) = 139699140243904 + ok 1 - ffi.find_symbol(printf) = 140684104139200 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } @@ -1462,12 +1498,12 @@ } ok 6 - find symbol { ok 1 - external { - ok 1 - ffi.find_symbol(f0) = 139699138683760 + ok 1 - ffi.find_symbol(f0) = 140684102787952 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } ok 2 - internal { - ok 1 - ffi.find_symbol(printf) = 139699140243904 + ok 1 - ffi.find_symbol(printf) = 140684104139200 ok 2 - ffi.find_symbol(bogus) = undef 1..2 } @@ -2468,14 +2504,14 @@ ok t/ffi_platypus_buffer.t .................. ok 1 - simple { - ok 1 - ptr = 94893479131952 + ok 1 - ptr = 94432494359152 ok 2 - scalar to pointer matches ok 3 - size = 16 ok 4 - scalar = me grimlock king 1..4 } ok 2 - unicode { - ok 1 - ptr = 94893479176352 + ok 1 - ptr = 94432505409872 ok 2 - size = 12 ok 3 - scalar = привет 1..3 @@ -2598,7 +2634,7 @@ ok t/ffi_platypus_bundle.t .................. ok 1 - from installed { - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/L18AcSD9FR/lib/Foo/Bar1.pm] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/jI4qfruS0k/lib/Foo/Bar1.pm] # package Foo::Bar1; # use strict; # use warnings; @@ -2608,9 +2644,9 @@ # $ffi->attach("bar1" => [] => 'sint32'); # 1; # spew(end) - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_cLpREL.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_cLpREL.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_cLpREL.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/L18AcSD9FR/lib/auto/share/dist/Foo-Bar1/libbar1.so - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/L18AcSD9FR/lib/auto/Foo/Bar1/Bar1.txt] + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_tHwBzy.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_tHwBzy.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_tHwBzy.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/jI4qfruS0k/lib/auto/share/dist/Foo-Bar1/libbar1.so + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/jI4qfruS0k/lib/auto/Foo/Bar1/Bar1.txt] # FFI::Build@auto/share/dist/Foo-Bar1/libbar1.so # spew(end) ok 1 @@ -2620,7 +2656,7 @@ 1..4 } ok 2 - from blib { - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/4WeehX3sUq/lib/Foo/Bar2.pm] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/mfSvf5zCDS/lib/Foo/Bar2.pm] # package Foo::Bar2; # use strict; # use warnings; @@ -2630,9 +2666,9 @@ # $ffi->attach("bar2" => [] => 'sint32'); # 1; # spew(end) - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_U4eWLk.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_U4eWLk.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_U4eWLk.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/4WeehX3sUq/lib/auto/share/dist/Foo-Bar2/libbar2.so - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/4WeehX3sUq/arch/auto/Foo/Bar2/Bar2.txt] + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_hqXAra.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_hqXAra.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_hqXAra.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/mfSvf5zCDS/lib/auto/share/dist/Foo-Bar2/libbar2.so + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/mfSvf5zCDS/arch/auto/Foo/Bar2/Bar2.txt] # FFI::Build@auto/share/dist/Foo-Bar2/libbar2.so # spew(end) ok 1 @@ -2640,21 +2676,21 @@ 1..2 } ok 3 - not loaded yet { - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/BSJACpA2VS/lib/Foo/Bar3.pm] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/yHCZt02tck/lib/Foo/Bar3.pm] # package Foo::Bar3; # die; # 1; # spew(end) - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_fNgjXH.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fNgjXH.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fNgjXH.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/BSJACpA2VS/lib/auto/share/dist/Foo-Bar3/libbar3.so - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/BSJACpA2VS/lib/auto/Foo/Bar3/Bar3.txt] + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi_build_fQ2CYA.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fQ2CYA.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/_build/ffi_build_fQ2CYA.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/yHCZt02tck/lib/auto/share/dist/Foo-Bar3/libbar3.so + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/yHCZt02tck/lib/auto/Foo/Bar3/Bar3.txt] # FFI::Build@auto/share/dist/Foo-Bar3/libbar3.so # spew(end) ok 1 1..1 } ok 4 - with a ffi dir { - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/r83yJJkm8t/lib/Foo/Bar4.pm] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/iR4gz5vjN9/lib/Foo/Bar4.pm] # package Foo::Bar4; # use strict; # use warnings; @@ -2664,10 +2700,10 @@ # $ffi->attach("bar4" => [] => 'sint32'); # 1; # spew(end) - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/r83yJJkm8t/ffi/foo.c] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/iR4gz5vjN9/ffi/foo.c] # int bar4(void) { return 45; } # spew(end) - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/r83yJJkm8t/ffi/foo.fbx] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/iR4gz5vjN9/ffi/foo.fbx] # use strict; # use warnings; # our $DIR; @@ -2678,7 +2714,7 @@ 1..2 } ok 5 - entry points { - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/pwX7Gw7kh0/lib/Foo/Bar5.pm] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/wyLf6wgoa0/lib/Foo/Bar5.pm] # package Foo::Bar5; # use strict; # use warnings; @@ -2687,7 +2723,7 @@ # $ffi->bundle([$ffi->cast('(string)->void' => 'opaque', $main::log_closure)]); # 1; # spew(end) - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/pwX7Gw7kh0/ffi/foo.c] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/wyLf6wgoa0/ffi/foo.c] # #include # #include # @@ -2723,7 +2759,7 @@ # } # # spew(end) - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/pwX7Gw7kh0/ffi/foo.fbx] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/wyLf6wgoa0/ffi/foo.fbx] # use strict; # use warnings; # our $DIR; @@ -2733,7 +2769,7 @@ # log:ffi_pl_bundle_init (enter) # log:package = Foo::Bar5 # log:c = 1 - # log:args[0] = 1042026512 + # log:args[0] = 1659494416 # log:ffi_pl_bundle_init (leave) ok 2 ok 3 @@ -2815,7 +2851,7 @@ 1..2 } ok 2 - create constants { - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/KcZKsMeGu1/lib/Foo/Bar1.pm] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/vMiA9QKufR/lib/Foo/Bar1.pm] # package Foo::Bar1; # use strict; # use warnings; @@ -2824,7 +2860,7 @@ # $ffi->bundle; # 1; # spew(end) - # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/KcZKsMeGu1/ffi/bar1.c] + # spew(start)[/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/vMiA9QKufR/ffi/bar1.c] # #include # void ffi_pl_bundle_constant(const char *package, ffi_platypus_constant_t *b) # { @@ -2868,7 +2904,7 @@ } ok 2 - good library { ok 1 - Returns handle on good - # h = 94723883937744 + # h = 94124268964320 1..1 } 1..2 @@ -2876,7 +2912,7 @@ ok 3 - dlsym { ok 1 - good symbol { ok 1 - returns an address - # address = 139688871879536 + # address = 140496125907824 1..1 } ok 2 - bad symbol { @@ -3081,8 +3117,8 @@ ok 48 - FFI_PL_SIZE_8 0x0001 ok 49 - FFI_PL_SIZE_16 0x0002 ok 50 - FFI_PL_SIZE_32 0x0003 - ok 51 - FFI_PL_SIZE_64 0x0004 - ok 52 - FFI_PL_SIZE_PTR 0x0004 + ok 51 - FFI_PL_SIZE_PTR 0x0004 + ok 52 - FFI_PL_SIZE_64 0x0004 ok 53 - FFI_PL_SIZE_128 0x0005 ok 54 - FFI_PL_SIZE_256 0x0006 ok 55 - FFI_PL_SIZE_512 0x0007 @@ -3112,8 +3148,8 @@ ok 79 - FFI_PL_TYPE_STRING 0x0304 ok 80 - FFI_PL_BASE_CLOSURE 0x0400 ok 81 - FFI_PL_TYPE_CLOSURE 0x0504 - ok 82 - FFI_PL_TYPE_RECORD_VALUE 0x0800 - ok 83 - FFI_PL_BASE_RECORD 0x0800 + ok 82 - FFI_PL_BASE_RECORD 0x0800 + ok 83 - FFI_PL_TYPE_RECORD_VALUE 0x0800 ok 84 - FFI_PL_TYPE_RECORD 0x0904 ok 85 - FFI_PL_BASE_MASK 0x0ff8 ok 86 - FFI_PL_SHAPE_POINTER 0x1000 @@ -3358,8 +3394,8 @@ # lib=undef # lib=/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/lib/libplfill.so ok 1 - malloc calloc memset free { - ok 1 - malloc returns 94547154123552 - ok 2 - calloc returns 94547153775408 + ok 1 - malloc returns 94268109380816 + ok 2 - calloc returns 94268110318608 ok 3 - string = yyyyxxxx ok 4 - free $ptr1 ok 5 - free $ptr2 @@ -3374,9 +3410,9 @@ 1..5 } ok 3 - realloc { - ok 1 - realloc call ptr = 94547154254752 + ok 1 - realloc call ptr = 94268110426672 ok 2 - initial data copied - ok 3 - realloc call ptr = 94547154254896 (2) + ok 3 - realloc call ptr = 94268110426848 (2) ok 4 - after realloc data there ok 5 - final free 1..5 @@ -3438,8 +3474,8 @@ ok 9 - sint8 = -48 ok 10 - float = 1.5 ok 11 - double = -1.5 - ok 12 - get_opaque = 94533076321200 - ok 13 - opaque = 94533076321200 + ok 12 - get_opaque = 94502449574272 + ok 13 - opaque = 94502449574272 ok 14 - get_opaque = undef ok 15 - opaque = undef 1..15 @@ -3524,9 +3560,9 @@ 1..5 } ok 12 - opaque { - ok 1 - opaque = 94533076485600,undef,94533076507504 - ok 2 - opaque = 94533076485600,94533076485600,94533076507504 - ok 3 - opaque = undef,94533076485600,94533076507504 + ok 1 - opaque = 94502449977632,undef,94502449991312 + ok 2 - opaque = 94502449977632,94502449977632,94502449991312 + ok 3 - opaque = undef,94502449977632,94502449991312 ok 4 ok 5 ok 6 @@ -3600,7 +3636,7 @@ t/ffi_platypus_record_meta.t ............. ok 1 - basic { ok 1 - FFI::Platypus::Record::Meta=SCALAR->isa('FFI::Platypus::Record::Meta') - ok 2 - meta->ffi_type = 94739977708896 + ok 2 - meta->ffi_type = 94306518467168 ok 3 - meta->size ok 4 - meta->alignment ok 5 - meta->element_pointers @@ -4600,12 +4636,12 @@ ok 3 # ==probe.log== # code: #include - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/ffi_build_ITpqja.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/_build/ffi_build_ITpqja.c.o + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/ffi_build_KS0IUJ.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/_build/ffi_build_KS0IUJ.c.o # header."stdio.h"=1 # code: #include # code: #include - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/ffi_build_wdz7iz.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/_build/ffi_build_wdz7iz.c.o - # /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-IKQy8s/ffi_build_wdz7iz.c:2:10: fatal error: bogus/does/not/exist.h: No such file or directory + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/ffi_build_zQc6Ni.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/_build/ffi_build_zQc6Ni.c.o + # /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-oLitwJ/ffi_build_zQc6Ni.c:2:10: fatal error: bogus/does/not/exist.h: No such file or directory # 2 | #include # | ^~~~~~~~~~~~~~~~~~~~~~~~ # compilation terminated. @@ -4676,8 +4712,8 @@ # code: return 0; # code: } # [build] - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_IaDEwg.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_IaDEwg.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_IaDEwg.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval1.so + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_8awD0v.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_8awD0v.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_8awD0v.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval1.so # [stdout] # eval1=<<<3>>> # [stderr] @@ -4699,8 +4735,8 @@ # code: return 0; # code: } # [build] - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build__oyXxz.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build__oyXxz.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build__oyXxz.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval2.so + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_j_jS1L.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_j_jS1L.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_j_jS1L.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval2.so # [stdout] # eval1=<<>> # [stderr] @@ -4708,7 +4744,7 @@ # rv = 0 # foo.bar.string=hello world 7 # code: #include - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_7SKIk9.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_7SKIk9.c.o + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_NA6ORd.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_NA6ORd.c.o # header."stddef.h"=1 # code: #include # code: #include @@ -4729,8 +4765,8 @@ # code: return 0; # code: } # [build] - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_DcYKcZ.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_DcYKcZ.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_DcYKcZ.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval4.so + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_MNR53J.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_MNR53J.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_MNR53J.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval4.so # [stdout] # eval1=<<<1>>> # eval2=<<>> @@ -4758,8 +4794,8 @@ # code: return 0; # code: } # [build] - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_M_G5aY.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_M_G5aY.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_M_G5aY.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval5.so + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build__qRlVn.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build__qRlVn.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build__qRlVn.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval5.so # [stdout] # eval1=<<<4>>> # eval2=<<<4>>> @@ -4785,8 +4821,8 @@ # code: return 0; # code: } # [build] - # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/ffi_build_qo30uE.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_qo30uE.c.o - # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/_build/ffi_build_qo30uE.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-lMSSWU/libeval6.so + # +x86_64-linux-gnu-gcc -fPIC -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -I/build/reproducible-path/libffi-platypus-perl-2.09/blib/lib/auto/share/dist/FFI-Platypus/include -c /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/ffi_build_ON2pAC.c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_ON2pAC.c.o + # +x86_64-linux-gnu-gcc -shared -L/usr/local/lib -fstack-protector-strong /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/_build/ffi_build_ON2pAC.c.o -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/ffi-probe-0S3udB/libeval6.so # [stdout] # eval1=<<<8>>> # eval2=<<<8>>> @@ -4837,8 +4873,8 @@ } ok 2 - run not pass { # CC corpus/ffi_probe_runner/foo.c - # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-D9snX7/libfrooble1.so - # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-D9snX7/libfrooble1.so + # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-X8ZLgY/libfrooble1.so + # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-X8ZLgY/libfrooble1.so ok 1 ok 2 ok 3 @@ -4852,8 +4888,8 @@ } ok 3 - run pass { # CC corpus/ffi_probe_runner/bar.c - # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-fnzQ5w/libfrooble2.so - # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-fnzQ5w/libfrooble2.so + # LD /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-6vUKYC/libfrooble2.so + # lib=/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-6vUKYC/libfrooble2.so ok 1 ok 2 ok 3 @@ -4868,7 +4904,7 @@ 1..3 ok t/ffi_probe_runner_builder.t ............. -# dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh +# dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ # libs=-ldl # libs= # libs=-lm @@ -4876,20 +4912,20 @@ # libs=-lc # libs=-lcrypt ok 1 - FFI::Probe::Runner::Builder=HASH->isa('FFI::Probe::Runner::Builder') -# +x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/src/dlrun.o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/src/dlrun.c -# +x86_64-linux-gnu-gcc -fstack-protector-strong -L/usr/local/lib -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/src/dlrun.o -ldl -# +/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun verify self +# +x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -c -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/src/dlrun.o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/src/dlrun.c +# +x86_64-linux-gnu-gcc -fstack-protector-strong -L/usr/local/lib -o /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/src/dlrun.o -ldl +# +/build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun verify self # dlrun verify self ok ok 2 - no error ok 3 - executable exists -# exe = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun -# + /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun verify self +# exe = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun +# + /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun verify self # dlrun verify self ok ok 4 - verify ok -# + ldd /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-yKGibh/bin/dlrun -# linux-vdso.so.1 (0x00007ffd2dfee000) -# libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe36e20a000) -# /lib64/ld-linux-x86-64.so.2 (0x00007fe36e412000) +# + ldd /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/test-probe-NrpQRJ/bin/dlrun +# linux-vdso.so.1 (0x00007fc18a9c2000) +# libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc18a7be000) +# /lib64/ld-linux-x86-64.so.2 (0x00007fc18a9c4000) 1..4 ok t/ffi_probe_runner_result.t .............. @@ -4905,8 +4941,8 @@ ok t/ffi_temp.t ............................. ok 1 -# dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/MmKETEDLQr -# file = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/bwpDrbFa2x +# dir = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/8vDZ5So3hy +# file = /build/reproducible-path/libffi-platypus-perl-2.09/.tmp/Fdu3aSbPp6 1..1 ok t/forks.t ................................ skipped: Test requires forks @@ -5780,8 +5816,8 @@ ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 - ok 5 - setp(94313971916336); getp() = 94313971916336 - ok 6 - get($tmp); tmp = 94313971916336 + ok 5 - setp(94816651963472); getp() = 94816651963472 + ok 6 - get($tmp); tmp = 94816651963472 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_null_in([undef,undef,undef]) @@ -5791,13 +5827,13 @@ ok 13 - ra_out_nt() ok 14 - ra_null_out ok 15 - pp2p(\undef) = undef - ok 16 - pp2p(\94313971875232) = 94313971875232 + ok 16 - pp2p(\94816652305296) = 94816652305296 ok 17 - p2pp(undef) = \undef - ok 18 - pp2p(94313967701424) = \94313967701424 + ok 18 - pp2p(94816647977056) = \94816647977056 ok 19 - call_closure(undef) = undef ok 20 - save = undef - ok 21 - call_closure(\94313972009680) = 94313972009680 - ok 22 - save = 94313972009680 + ok 21 - call_closure(\94816652261728) = 94816652261728 + ok 22 - save = 94816652261728 ok 23 - custom type input { ok 1 ok 2 @@ -5815,8 +5851,8 @@ ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 - ok 5 - setp(94313972015344); getp() = 94313972015344 - ok 6 - get($tmp); tmp = 94313972015344 + ok 5 - setp(94816652225856); getp() = 94816652225856 + ok 6 - get($tmp); tmp = 94816652225856 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_null_in([undef,undef,undef]) @@ -5826,13 +5862,13 @@ ok 13 - ra_out_nt() ok 14 - ra_null_out ok 15 - pp2p(\undef) = undef - ok 16 - pp2p(\94313958710272) = 94313958710272 + ok 16 - pp2p(\94816652286560) = 94816652286560 ok 17 - p2pp(undef) = \undef - ok 18 - pp2p(94313972044544) = \94313972044544 + ok 18 - pp2p(94816652268864) = \94816652268864 ok 19 - call_closure(undef) = undef ok 20 - save = undef - ok 21 - call_closure(\94313972039648) = 94313972039648 - ok 22 - save = 94313972039648 + ok 21 - call_closure(\94816652294416) = 94816652294416 + ok 22 - save = 94816652294416 ok 23 - custom type input { ok 1 ok 2 @@ -5850,8 +5886,8 @@ ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 - ok 5 - setp(94313972008064); getp() = 94313972008064 - ok 6 - get($tmp); tmp = 94313972008064 + ok 5 - setp(94816651900944); getp() = 94816651900944 + ok 6 - get($tmp); tmp = 94816651900944 ok 7 - get(\$tmp); \$tmp = undef ok 8 - aa_in([one two three]) ok 9 - aa_in([one two three]) @@ -5863,13 +5899,13 @@ ok 15 - ra_out_nt() ok 16 - ra_null_out ok 17 - pp2p(\undef) = undef - ok 18 - pp2p(\94313972170864) = 94313972170864 + ok 18 - pp2p(\94816652426640) = 94816652426640 ok 19 - p2pp(undef) = \undef - ok 20 - pp2p(94313971876576) = \94313971876576 + ok 20 - pp2p(94816652437552) = \94816652437552 ok 21 - call_closure(undef) = undef ok 22 - save = undef - ok 23 - call_closure(\94313972034992) = 94313972034992 - ok 24 - save = 94313972034992 + ok 23 - call_closure(\94816652405936) = 94816652405936 + ok 24 - save = 94816652405936 ok 25 - custom type input { ok 1 ok 2 @@ -7354,7 +7390,7 @@ 1..5 ok All tests successful. -Files=72, Tests=320, 26 wallclock secs ( 0.58 usr 0.18 sys + 17.95 cusr 3.92 csys = 22.63 CPU) +Files=72, Tests=320, 17 wallclock secs ( 0.42 usr 0.08 sys + 10.24 cusr 2.19 csys = 12.93 CPU) Result: PASS make[1]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' create-stamp debian/debhelper-build-stamp @@ -7362,110 +7398,110 @@ debian/rules override_dh_auto_install make[1]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' dh_auto_install - make -j20 install DESTDIR=/build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl AM_UPDATE_INFO_DIR=no PREFIX=/usr + make -j42 install DESTDIR=/build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl AM_UPDATE_INFO_DIR=no PREFIX=/usr make[2]: Entering directory '/build/reproducible-path/libffi-platypus-perl-2.09' "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 Manifying 33 pod documents Manifying 10 pod documents Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Platypus.so -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Record/Meta/Meta.txt -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Constant/Constant.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Memory/Memory.txt -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Constant/Constant.txt +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/FFI/Platypus/Record/Meta/Meta.txt Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/typemap -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Temp.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Bundle.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Closure.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Memory.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/typemap +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/ShareConfig.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/DL.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Internal.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Buffer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Function.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Constant.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Buffer.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/API.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Legacy.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Bundle.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/DL.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/ShareConfig.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version2.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Memory.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Closure.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version0.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version1.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/TieArray.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/Meta.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/C.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/Win32.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/ASM.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/WideString.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/StringPointer.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/TypeParser/Version2.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/PointerSizeBuffer.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/StringArray.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/StringPointer.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Type/WideString.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/C.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/ASM.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Lang/Win32.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/Meta.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Platypus/Record/TieArray.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner/Builder.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Probe/Runner/Result.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/PluginData.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/Plugin.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/MM.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/Platform.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/Plugin.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/PluginData.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/C.pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Object.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/CXX.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Base.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Object.pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/C.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/FFI/Build/File/Library.pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/config.pl -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/include/ffi_platypus_bundle.h Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/include/ffi_platypus_config.h +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/include/ffi_platypus_bundle.h Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/lib/libplfill.so Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/probe.pl Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/src/dlrun.c Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/lib/x86_64-linux-gnu/perl5/5.40/auto/share/dist/FFI-Platypus/probe/bin/dlrun -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Function.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::PluginData.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Result.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Library.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringArray.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version2.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::DL.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Bundle.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::MM.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::CXX.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Closure.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version0.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Object.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Result.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Platform.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Function.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::WideString.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Memory.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Bundle.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringArray.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Legacy.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Internal.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::C.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version1.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Closure.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::API.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::C.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::DL.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringPointer.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::ASM.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Constant.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::C.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::PointerSizeBuffer.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Library.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::StringPointer.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Builder.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Memory.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Temp.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::CXX.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Plugin.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version0.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record::TieArray.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Buffer.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::PluginData.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record::Meta.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Legacy.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::C.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Record::TieArray.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Lang::Win32.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Object.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Temp.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::TypeParser::Version2.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Plugin.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::PointerSizeBuffer.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe::Runner::Builder.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Internal.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::MM.3pm Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::File::Base.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::Type::WideString.3pm -Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Build::Platform.3pm +Installing /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Probe.3pm make[2]: Leaving directory '/build/reproducible-path/libffi-platypus-perl-2.09' # contentless manpage rm -f -v /build/reproducible-path/libffi-platypus-perl-2.09/debian/libffi-platypus-perl/usr/share/man/man3/FFI::Platypus::ShareConfig.3pm @@ -7498,8 +7534,8 @@ dh_gencontrol dh_md5sums dh_builddeb -dpkg-deb: building package 'libffi-platypus-perl-dbgsym' in '../libffi-platypus-perl-dbgsym_2.09-1_amd64.deb'. dpkg-deb: building package 'libffi-platypus-perl' in '../libffi-platypus-perl_2.09-1_amd64.deb'. +dpkg-deb: building package 'libffi-platypus-perl-dbgsym' in '../libffi-platypus-perl-dbgsym_2.09-1_amd64.deb'. dpkg-genbuildinfo --build=binary -O../libffi-platypus-perl_2.09-1_amd64.buildinfo dpkg-genchanges --build=binary -O../libffi-platypus-perl_2.09-1_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) @@ -7507,12 +7543,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/1959285/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/1959285/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/3063139 and its subdirectories -I: Current time: Wed Nov 20 17:50:12 -12 2024 -I: pbuilder-time-stamp: 1732168212 +I: removing directory /srv/workspace/pbuilder/1959285 and its subdirectories +I: Current time: Thu Dec 25 02:15:50 +14 2025 +I: pbuilder-time-stamp: 1766578550 Compressing the 2nd log... /var/lib/jenkins/userContent/reproducible/debian/logdiffs/trixie/amd64/libffi-platypus-perl_2.09-1.diff: 86.0% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/logdiffs/trixie/amd64/libffi-platypus-perl_2.09-1.diff.gz b2/build.log: 87.4% -- replaced with stdout Compressing the 1st log... b1/build.log: 87.6% -- replaced with stdout Thu Nov 21 05:52:53 UTC 2024 I: diffoscope 283 will be used to compare the two builds: ++ date -u +%s + DIFFOSCOPE_STAMP=/var/log/reproducible-builds/diffoscope_stamp_libffi-platypus-perl_trixie_amd64_1732168373 + touch /var/log/reproducible-builds/diffoscope_stamp_libffi-platypus-perl_trixie_amd64_1732168373 + RESULT=0 + systemd-run '--description=diffoscope on libffi-platypus-perl/2.09-1 in trixie/amd64' --slice=rb-build-diffoscope.slice -u rb-diffoscope-amd64_15-38898 '--property=SuccessExitStatus=1 124' --user --send-sighup --pipe --wait -E TMPDIR timeout 155m nice schroot --directory /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg --run-session -c jenkins-reproducible-trixie-diffoscope-4102e0d8-2195-4b94-b085-dde5cda2e647 -- sh -c 'export TMPDIR=/srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/dbd-tmp-MvaG7M0 ; timeout 150m diffoscope --timeout 7200 --html /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/libffi-platypus-perl_2.09-1.diffoscope.html --text /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/libffi-platypus-perl_2.09-1.diffoscope.txt --json /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/libffi-platypus-perl_2.09-1.diffoscope.json --profile=- /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b1/libffi-platypus-perl_2.09-1_amd64.changes /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b2/libffi-platypus-perl_2.09-1_amd64.changes' + false + set +x Running as unit: rb-diffoscope-amd64_15-38898.service # Profiling output for: /usr/bin/diffoscope --timeout 7200 --html /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/libffi-platypus-perl_2.09-1.diffoscope.html --text /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/libffi-platypus-perl_2.09-1.diffoscope.txt --json /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/libffi-platypus-perl_2.09-1.diffoscope.json --profile=- /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b1/libffi-platypus-perl_2.09-1_amd64.changes /srv/reproducible-results/rbuild-debian/r-b-build.hxADhKAg/b2/libffi-platypus-perl_2.09-1_amd64.changes ## command (total time: 0.000s) 0.000s 1 call cmp (internal) ## has_same_content_as (total time: 0.000s) 0.000s 1 call abc.DotChangesFile ## main (total time: 0.358s) 0.358s 2 calls outputs 0.000s 1 call cleanup ## recognizes (total time: 0.020s) 0.020s 12 calls diffoscope.comparators.binary.FilesystemFile ## specialize (total time: 0.000s) 0.000s 1 call specialize Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 694ms CPU time consumed: 691ms _ _ _ __ __ _ _ _ | (_) |__ / _|/ _(_) _ __ | | __ _| |_ _ _ _ __ _ _ ___ _ __ | | | '_ \| |_| |_| |_____| '_ \| |/ _` | __| | | | '_ \| | | / __|_____| '_ \ | | | |_) | _| _| |_____| |_) | | (_| | |_| |_| | |_) | |_| \__ \_____| |_) | |_|_|_.__/|_| |_| |_| | .__/|_|\__,_|\__|\__, | .__/ \__,_|___/ | .__/ |_| |___/|_| |_| _ ___ _ __| | / _ \ '__| | | __/ | | | \___|_| |_| Thu Nov 21 05:52:54 UTC 2024 I: diffoscope 283 found no differences in the changes files, and a .buildinfo file also exists. Thu Nov 21 05:52:54 UTC 2024 I: libffi-platypus-perl from trixie built successfully and reproducibly on amd64. INSERT 0 1 INSERT 0 1 DELETE 1 [2024-11-21 05:52:54] INFO: Starting at 2024-11-21 05:52:54.768275 [2024-11-21 05:52:54] INFO: Generating the pages of 1 package(s) [2024-11-21 05:52:55] CRITICAL: https://tests.reproducible-builds.org/debian/trixie/amd64/libffi-platypus-perl didn't produce a buildlog, even though it has been built. [2024-11-21 05:52:55] INFO: Finished at 2024-11-21 05:52:55.318102, took: 0:00:00.549835 Thu Nov 21 05:52:55 UTC 2024 - successfully updated the database and updated https://tests.reproducible-builds.org/debian/rb-pkg/trixie/amd64/libffi-platypus-perl.html Thu Nov 21 05:52:55 UTC 2024 I: Submitting .buildinfo files to external archives: Thu Nov 21 05:52:55 UTC 2024 I: Submitting 8.0K b1/libffi-platypus-perl_2.09-1_amd64.buildinfo.asc https://buildinfo.debian.net/114642b38a4a69a97ddd430f36d737d3682890ac/libffi-platypus-perl_2.09-1_amd64 Thu Nov 21 05:52:56 UTC 2024 I: Submitting 8.0K b2/libffi-platypus-perl_2.09-1_amd64.buildinfo.asc https://buildinfo.debian.net/a64fb591eea9dcb2281675cc6058f3595b69c5b5/libffi-platypus-perl_2.09-1_amd64 Thu Nov 21 05:52:57 UTC 2024 I: Done submitting .buildinfo files to http://buildinfo.debian.net/api/submit. Thu Nov 21 05:52:57 UTC 2024 I: Done submitting .buildinfo files. Thu Nov 21 05:52:57 UTC 2024 I: Removing signed libffi-platypus-perl_2.09-1_amd64.buildinfo.asc files: removed './b1/libffi-platypus-perl_2.09-1_amd64.buildinfo.asc' removed './b2/libffi-platypus-perl_2.09-1_amd64.buildinfo.asc' 1732168377 amd64 trixie libffi-platypus-perl Starting cleanup. /var/lib/jenkins/userContent/reproducible/debian/rbuild/trixie/amd64/libffi-platypus-perl_2.09-1.rbuild.log: 86.7% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/rbuild/trixie/amd64/libffi-platypus-perl_2.09-1.rbuild.log.gz [2024-11-21 05:52:57] INFO: Starting at 2024-11-21 05:52:57.600043 [2024-11-21 05:52:57] INFO: Generating the pages of 1 package(s) [2024-11-21 05:52:58] INFO: Finished at 2024-11-21 05:52:58.187550, took: 0:00:00.587515 All cleanup done. Thu Nov 21 05:52:58 UTC 2024 - total duration: 0h 5m 34s. Thu Nov 21 05:52:58 UTC 2024 - reproducible_build.sh stopped running as /tmp/jenkins-script-MbJs4YoP, removing. Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 5min 38.317s CPU time consumed: 7.573s