PATH=/usr/bin:/bin:/Users/fly2400/cpanfly-5.24/var/megalib/bin Start 2019-06-21T02:02:01 ActivePerl-2400 CPAN-2.10 Reading '/Users/fly2400/cpanfly-5.24/var/cpan/Metadata' Database was generated on Thu, 20 Jun 2019 04:55:17 GMT Checksum for /Users/fly2400/cpanfly-5.24/var/cpan/sources/authors/id/P/PL/PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz ok FFI-Platypus-Lang-Rust-0.06 FFI-Platypus-Lang-Rust-0.06/.gitattributes FFI-Platypus-Lang-Rust-0.06/.travis.yml FFI-Platypus-Lang-Rust-0.06/Build.PL FFI-Platypus-Lang-Rust-0.06/CONTRIBUTING FFI-Platypus-Lang-Rust-0.06/Changes FFI-Platypus-Lang-Rust-0.06/INSTALL FFI-Platypus-Lang-Rust-0.06/LICENSE FFI-Platypus-Lang-Rust-0.06/MANIFEST FFI-Platypus-Lang-Rust-0.06/META.json FFI-Platypus-Lang-Rust-0.06/META.yml FFI-Platypus-Lang-Rust-0.06/README FFI-Platypus-Lang-Rust-0.06/SUPPORT FFI-Platypus-Lang-Rust-0.06/examples FFI-Platypus-Lang-Rust-0.06/examples/points.pl FFI-Platypus-Lang-Rust-0.06/examples/points.rs FFI-Platypus-Lang-Rust-0.06/examples/string.pl FFI-Platypus-Lang-Rust-0.06/examples/string.rs FFI-Platypus-Lang-Rust-0.06/inc FFI-Platypus-Lang-Rust-0.06/inc/My FFI-Platypus-Lang-Rust-0.06/inc/My/ModuleBuild.pm FFI-Platypus-Lang-Rust-0.06/inc/run FFI-Platypus-Lang-Rust-0.06/inc/run/readme.pl FFI-Platypus-Lang-Rust-0.06/lib FFI-Platypus-Lang-Rust-0.06/lib/FFI FFI-Platypus-Lang-Rust-0.06/lib/FFI/Platypus FFI-Platypus-Lang-Rust-0.06/lib/FFI/Platypus/Lang FFI-Platypus-Lang-Rust-0.06/lib/FFI/Platypus/Lang/Rust.pm FFI-Platypus-Lang-Rust-0.06/lib/Module FFI-Platypus-Lang-Rust-0.06/lib/Module/Build FFI-Platypus-Lang-Rust-0.06/lib/Module/Build/FFI FFI-Platypus-Lang-Rust-0.06/lib/Module/Build/FFI/Rust.pm FFI-Platypus-Lang-Rust-0.06/maint FFI-Platypus-Lang-Rust-0.06/maint/releaseprep FFI-Platypus-Lang-Rust-0.06/t FFI-Platypus-Lang-Rust-0.06/t/00_diag.t FFI-Platypus-Lang-Rust-0.06/t/00_diag.txt FFI-Platypus-Lang-Rust-0.06/t/02_types.t FFI-Platypus-Lang-Rust-0.06/t/example.t FFI-Platypus-Lang-Rust-0.06/t/ffi_platypus_lang_rust.t FFI-Platypus-Lang-Rust-0.06/t/ffi FFI-Platypus-Lang-Rust-0.06/t/ffi/Cargo.toml FFI-Platypus-Lang-Rust-0.06/t/ffi/src FFI-Platypus-Lang-Rust-0.06/t/ffi/src/lib.rs ---- Unsatisfied dependencies detected during ---- ---- PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz ---- Module::Build::FFI [build_requires] Running test for module 'Module::Build::FFI' Checksum for /Users/fly2400/cpanfly-5.24/var/cpan/sources/authors/id/P/PL/PLICEASE/Module-Build-FFI-0.49.tar.gz ok Module-Build-FFI-0.49/ Module-Build-FFI-0.49/author.yml Module-Build-FFI-0.49/Changes Module-Build-FFI-0.49/dist.ini Module-Build-FFI-0.49/inc/ Module-Build-FFI-0.49/INSTALL Module-Build-FFI-0.49/lib/ Module-Build-FFI-0.49/LICENSE Module-Build-FFI-0.49/maint/ Module-Build-FFI-0.49/Makefile.PL Module-Build-FFI-0.49/MANIFEST Module-Build-FFI-0.49/META.json Module-Build-FFI-0.49/META.yml Module-Build-FFI-0.49/README Module-Build-FFI-0.49/share/ Module-Build-FFI-0.49/t/ Module-Build-FFI-0.49/xt/ Module-Build-FFI-0.49/xt/author/ Module-Build-FFI-0.49/xt/release/ Module-Build-FFI-0.49/xt/release/changes.t Module-Build-FFI-0.49/xt/release/fixme.t Module-Build-FFI-0.49/xt/author/eol.t Module-Build-FFI-0.49/xt/author/no_tabs.t Module-Build-FFI-0.49/xt/author/pod.t Module-Build-FFI-0.49/xt/author/pod_coverage.t Module-Build-FFI-0.49/xt/author/pod_spelling_common.t Module-Build-FFI-0.49/xt/author/pod_spelling_system.t Module-Build-FFI-0.49/xt/author/strict.t Module-Build-FFI-0.49/xt/author/version.t Module-Build-FFI-0.49/t/00_diag.t Module-Build-FFI-0.49/t/01_use.t Module-Build-FFI-0.49/t/module_build_ffi.t Module-Build-FFI-0.49/t/module_build_ffi_pascal.t Module-Build-FFI-0.49/share/include/ Module-Build-FFI-0.49/share/include/ffi_util.h Module-Build-FFI-0.49/maint/cip-install Module-Build-FFI-0.49/lib/Module/ Module-Build-FFI-0.49/lib/Module/Build/ Module-Build-FFI-0.49/lib/Module/Build/FFI/ Module-Build-FFI-0.49/lib/Module/Build/FFI.pm Module-Build-FFI-0.49/lib/Module/Build/FFI/Pascal.pm Module-Build-FFI-0.49/inc/My/ Module-Build-FFI-0.49/inc/My/HeaderVersion.pm Configuring P/PL/PLICEASE/Module-Build-FFI-0.49.tar.gz with Makefile.PL >>> /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL Checking if your kit is complete... Looks good Have /Users/fly2400/cpanfly-5.24/var/megalib Want /Users/fly2400/ap2400-300558/lib Your perl and your Config.pm seem to have different ideas about the architecture they are running on. Perl thinks: [megalib] Config says: [darwin-thread-multi-2level] This may or may not cause problems. Please check your installation of perl if you have problems building this extension. Generating a Unix-style Makefile Writing Makefile for Module::Build::FFI Writing MYMETA.yml and MYMETA.json PLICEASE/Module-Build-FFI-0.49.tar.gz /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL -- OK Running make for P/PL/PLICEASE/Module-Build-FFI-0.49.tar.gz >>> make cp share/include/ffi_util.h blib/lib/auto/share/dist/Module-Build-FFI/include/ffi_util.h cp lib/Module/Build/FFI/Pascal.pm blib/lib/Module/Build/FFI/Pascal.pm cp lib/Module/Build/FFI.pm blib/lib/Module/Build/FFI.pm Manifying 2 pod documents PLICEASE/Module-Build-FFI-0.49.tar.gz make -- OK Running make test >>> make test TEST_VERBOSE=1 Skip blib/lib/auto/share/dist/Module-Build-FFI/include/ffi_util.h (unchanged) PERL_DL_NONLAZY=1 "/Users/fly2400/ap2400-300558/bin/perl-dynamic" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t # # # # ACTIVEPERL_CONFIG_DISABLE=1 # HARNESS_ACTIVE=1 # HARNESS_IS_VERBOSE=1 # HARNESS_VERSION=3.36 # PERL5LIB=/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch:/Users/fly2400/cpanfly-5.24/var/megalib:/Users/fly2400/cpanfly-5.24/var/megalib # PERL5OPT= # PERL5_CPANPLUS_IS_RUNNING=72844 # PERL5_CPAN_IS_RUNNING=72844 # PERL5_CPAN_IS_RUNNING_IN_RECURSION=71944,72844 # PERL_DL_NONLAZY=1 # PERL_MM_USE_DEFAULT=1 # SHELL=/bin/sh # # # # PERL5LIB path # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch # /Users/fly2400/cpanfly-5.24/var/megalib # /Users/fly2400/cpanfly-5.24/var/megalib # # # # perl 5.024000 # ExtUtils::CBuilder 0.280225 # ExtUtils::MakeMaker 7.16 # File::ShareDir::Dist 0.07 # File::ShareDir::Install 0.13 # File::Which 1.23 # File::chdir 0.1010 # Module::Build 0.4229 # Test2::V0 0.000084 # # # t/00_diag.t .................. ok 1 - okay 1..1 ok t/01_use.t ................... ok 1 - require Module::Build::FFI ok 2 - require Module::Build::FFI::Pascal 1..2 ok t/module_build_ffi.t ......... ok 1 - ffi_dlext { ok 1 - true value # ffi_dlext = bundle dylib so 1..1 } ok 2 - share_dir { # inc=/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib # inc=/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch # inc=/Users/fly2400/cpanfly-5.24/var/megalib # inc=/Users/fly2400/cpanfly-5.24/var/megalib # inc=/Users/fly2400/Library/ActivePerl-5.24/lib # inc=/Users/fly2400/ap2400-300558/site/lib # inc=/Users/fly2400/ap2400-300558/lib # inc=. ok 1 - dir exists # dir = /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib/auto/share/dist/Module-Build-FFI ok 2 - ffi_util exists 1..2 } 1..2 ok t/module_build_ffi_pascal.t .. skipped: TODO All tests successful. Files=4, Tests=5, 1 wallclock secs ( 0.02 usr 0.01 sys + 0.75 cusr 0.10 csys = 0.88 CPU) Result: PASS PLICEASE/Module-Build-FFI-0.49.tar.gz make test TEST_VERBOSE=1 -- OK PPD for Module-Build-FFI-0.49 already made PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz Has already been unwrapped into directory /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib to PERL5LIB for 'prepare' Configuring P/PL/PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz with Build.PL >>> /Users/fly2400/ap2400-300558/bin/perl-dynamic Build.PL unable to find cargo in your PATH which you will likely need if you are going to build any extensions with bundled Rust code. Checking prerequisites... requires: ! FFI::Platypus (0.42) is installed, but we need version >= 0.88 ERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the versions of the modules indicated above before proceeding with this installation Created MYMETA.yml and MYMETA.json Creating new 'Build' script for 'FFI-Platypus-Lang-Rust' version '0.06' PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz /Users/fly2400/ap2400-300558/bin/perl-dynamic Build.PL -- OK Running Build for P/PL/PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib to PERL5LIB for 'make' ---- Unsatisfied dependencies detected during ---- ---- PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz ---- FFI::Platypus [requires] Running test for module 'FFI::Platypus' Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib to PERL5LIB for 'get' Checksum for /Users/fly2400/cpanfly-5.24/var/cpan/sources/authors/id/P/PL/PLICEASE/FFI-Platypus-0.88.tar.gz ok FFI-Platypus-0.88 FFI-Platypus-0.88/README FFI-Platypus-0.88/Changes FFI-Platypus-0.88/SUPPORT FFI-Platypus-0.88/LICENSE FFI-Platypus-0.88/INSTALL FFI-Platypus-0.88/dist.ini FFI-Platypus-0.88/xs FFI-Platypus-0.88/xs/DL.xs FFI-Platypus-0.88/META.yml FFI-Platypus-0.88/MANIFEST FFI-Platypus-0.88/t FFI-Platypus-0.88/t/forks.t FFI-Platypus-0.88/t/gh117.t FFI-Platypus-0.88/xs/ABI.xs FFI-Platypus-0.88/xs/meta.c FFI-Platypus-0.88/xs/API.xs FFI-Platypus-0.88/META.json FFI-Platypus-0.88/author.yml FFI-Platypus-0.88/t/01_use.t FFI-Platypus-0.88/xs/windl.c FFI-Platypus-0.88/xs/names.c FFI-Platypus-0.88/xs/Type.xs FFI-Platypus-0.88/t/00_diag.t FFI-Platypus-0.88/t/app_fbx.t FFI-Platypus-0.88/t/threads.t FFI-Platypus-0.88/xs/custom.c FFI-Platypus-0.88/xs/havepm.c FFI-Platypus-0.88/inc FFI-Platypus-0.88/inc/mymm.pl FFI-Platypus-0.88/Makefile.PL FFI-Platypus-0.88/CONTRIBUTING FFI-Platypus-0.88/ffi FFI-Platypus-0.88/ffi/memory.c FFI-Platypus-0.88/t/ffi FFI-Platypus-0.88/t/ffi/meta.c FFI-Platypus-0.88/xs/closure.c FFI-Platypus-0.88/xs/complex.c FFI-Platypus-0.88/xs/Record.xs FFI-Platypus-0.88/t/ffi_probe.t FFI-Platypus-0.88/t/ffi_build.t FFI-Platypus-0.88/t/ffi/sint8.c FFI-Platypus-0.88/t/ffi/color.c FFI-Platypus-0.88/t/ffi/uint8.c FFI-Platypus-0.88/t/ffi/gh117.c FFI-Platypus-0.88/t/ffi/align.c FFI-Platypus-0.88/t/ffi/float.c FFI-Platypus-0.88/t/ffi/basic.c FFI-Platypus-0.88/xs/Closure.xs FFI-Platypus-0.88/t/type_uint8.t FFI-Platypus-0.88/t/type_sint8.t FFI-Platypus-0.88/t/type_float.t FFI-Platypus-0.88/t/ffi/string.c FFI-Platypus-0.88/t/ffi/uint64.c FFI-Platypus-0.88/t/ffi/uint32.c FFI-Platypus-0.88/t/ffi/record.c FFI-Platypus-0.88/t/ffi/sint32.c FFI-Platypus-0.88/t/ffi/uint16.c FFI-Platypus-0.88/t/ffi/sint64.c FFI-Platypus-0.88/t/ffi/sint16.c FFI-Platypus-0.88/t/ffi/double.c FFI-Platypus-0.88/xs/Internal.xs FFI-Platypus-0.88/xs/Function.xs FFI-Platypus-0.88/inc/mm-test.pl FFI-Platypus-0.88/maint FFI-Platypus-0.88/maint/cip-test FFI-Platypus-0.88/lib/FFI FFI-Platypus-0.88/lib/FFI/typemap FFI-Platypus-0.88/t/type_uint64.t FFI-Platypus-0.88/t/type_opaque.t FFI-Platypus-0.88/t/type_string.t FFI-Platypus-0.88/t/type_double.t FFI-Platypus-0.88/t/type_uint16.t FFI-Platypus-0.88/t/type_sint32.t FFI-Platypus-0.88/t/type_sint16.t FFI-Platypus-0.88/t/type_record.t FFI-Platypus-0.88/t/type_sint64.t FFI-Platypus-0.88/t/type_uint32.t FFI-Platypus-0.88/t/ffi/pointer.c FFI-Platypus-0.88/t/ffi/closure.c FFI-Platypus-0.88/t/ffi/memcmp4.c FFI-Platypus-0.88/inc/mm-build.pl FFI-Platypus-0.88/inc/mm-clean.pl FFI-Platypus-0.88/inc/probe FFI-Platypus-0.88/inc/probe/abi.c FFI-Platypus-0.88/xt/author FFI-Platypus-0.88/xt/author/eol.t FFI-Platypus-0.88/xt/author/pod.t FFI-Platypus-0.88/lib/FFI/Build.pm FFI-Platypus-0.88/lib/FFI/Probe.pm FFI-Platypus-0.88/examples FFI-Platypus-0.88/examples/pipe.pl FFI-Platypus-0.88/examples/char.pl FFI-Platypus-0.88/examples/zmq3.pl FFI-Platypus-0.88/examples/uuid.pl FFI-Platypus-0.88/examples/math.pl FFI-Platypus-0.88/examples/time.pl FFI-Platypus-0.88/t/ffi_platypus.t FFI-Platypus-0.88/t/ffi_build_mm.t FFI-Platypus-0.88/inc/mm-config.pl FFI-Platypus-0.88/inc/My FFI-Platypus-0.88/inc/My/Config.pm FFI-Platypus-0.88/include FFI-Platypus-0.88/include/ppport.h FFI-Platypus-0.88/Changes.FFI-Build FFI-Platypus-0.88/examples/bzip2.pl FFI-Platypus-0.88/xs/ClosureData.xs FFI-Platypus-0.88/inc/My/ConfigH.pm FFI-Platypus-0.88/include/libtest.h FFI-Platypus-0.88/examples/getpid.pl FFI-Platypus-0.88/examples/malloc.pl FFI-Platypus-0.88/examples/string.pl FFI-Platypus-0.88/examples/closure.c FFI-Platypus-0.88/examples/notify.pl FFI-Platypus-0.88/t/ffi/longdouble.c FFI-Platypus-0.88/xs/record_opaque.c FFI-Platypus-0.88/xs/record_string.c FFI-Platypus-0.88/xs/record_simple.c FFI-Platypus-0.88/inc/probe/alloca.c FFI-Platypus-0.88/inc/Alien FFI-Platypus-0.88/inc/Alien/psapi.pm FFI-Platypus-0.88/maint/generate-abw FFI-Platypus-0.88/xt/author/strict.t FFI-Platypus-0.88/xt/release FFI-Platypus-0.88/xt/release/fixme.t FFI-Platypus-0.88/lib/FFI/Platypus.pm FFI-Platypus-0.88/lib/FFI/Platypus.xs FFI-Platypus-0.88/lib/FFI/Build FFI-Platypus-0.88/lib/FFI/Build/MM.pm FFI-Platypus-0.88/examples/integer.pl FFI-Platypus-0.88/examples/archive.pl FFI-Platypus-0.88/examples/time_oo.pl FFI-Platypus-0.88/examples/closure.pl FFI-Platypus-0.88/t/type_longdouble.t FFI-Platypus-0.88/t/ffi_platypus_dl.t FFI-Platypus-0.88/t/ffi/align_fixed.c FFI-Platypus-0.88/t/ffi/align_array.c FFI-Platypus-0.88/inc/mm-config-pb.pl FFI-Platypus-0.88/inc/probe/complex.c FFI-Platypus-0.88/maint/cip-test-cpan FFI-Platypus-0.88/xt/author/no_tabs.t FFI-Platypus-0.88/xt/author/version.t FFI-Platypus-0.88/examples/var_array.c FFI-Platypus-0.88/t/ffi_probe_runner.t FFI-Platypus-0.88/t/ffi_build_file_c.t FFI-Platypus-0.88/t/ffi_platypus_api.t FFI-Platypus-0.88/t/ffi/string_array.c FFI-Platypus-0.88/t/ffi/align_string.c FFI-Platypus-0.88/xs/perl_math_int64.c FFI-Platypus-0.88/inc/mm-config-set.pl FFI-Platypus-0.88/maint/tt FFI-Platypus-0.88/maint/tt/accessor.tt FFI-Platypus-0.88/xt/release/changes.t FFI-Platypus-0.88/examples/var_array.pl FFI-Platypus-0.88/t/ffi_platypus_lang.t FFI-Platypus-0.88/t/ffi/complex_float.c FFI-Platypus-0.88/t/lib/Test FFI-Platypus-0.88/t/lib/Test/Cleanup.pm FFI-Platypus-0.88/inc/probe/bigendian.c FFI-Platypus-0.88/inc/My/ShareConfig.pm FFI-Platypus-0.88/maint/generate-readme FFI-Platypus-0.88/lib/FFI/Platypus FFI-Platypus-0.88/lib/FFI/Platypus/DL.pm FFI-Platypus-0.88/examples/win32_beep.pl FFI-Platypus-0.88/examples/get_uptime.pl FFI-Platypus-0.88/t/ffi_build_file_cxx.t FFI-Platypus-0.88/t/ffi_build_platform.t FFI-Platypus-0.88/t/type_complex_float.t FFI-Platypus-0.88/t/ffi/complex_double.c FFI-Platypus-0.88/t/lib/Test/Platypus.pm FFI-Platypus-0.88/inc/probe/longdouble.c FFI-Platypus-0.88/include/ffi_platypus.h FFI-Platypus-0.88/lib/FFI/Platypus/API.pm FFI-Platypus-0.88/lib/FFI/Build/File FFI-Platypus-0.88/lib/FFI/Build/File/C.pm FFI-Platypus-0.88/lib/FFI/Probe FFI-Platypus-0.88/lib/FFI/Probe/Runner.pm FFI-Platypus-0.88/examples/time_record.pl FFI-Platypus-0.88/t/ffi_platypus_buffer.t FFI-Platypus-0.88/t/ffi_platypus_record.t FFI-Platypus-0.88/t/ffi_platypus_lang_c.t FFI-Platypus-0.88/t/ffi_platypus_memory.t FFI-Platypus-0.88/t/type_complex_double.t FFI-Platypus-0.88/t/ffi_build_file_base.t FFI-Platypus-0.88/inc/probe/bigendian64.c FFI-Platypus-0.88/maint/cip-test-examples FFI-Platypus-0.88/lib/FFI/Platypus/Lang.pm FFI-Platypus-0.88/t/ffi_platypus_declare.t FFI-Platypus-0.88/t/ffi_platypus_closure.t FFI-Platypus-0.88/maint/cip-before-install FFI-Platypus-0.88/maint/run-after_build.pl FFI-Platypus-0.88/xt/author/pod_coverage.t FFI-Platypus-0.88/lib/FFI/Platypus/Type.pod FFI-Platypus-0.88/lib/FFI/Build/Platform.pm FFI-Platypus-0.88/lib/FFI/Build/File/CXX.pm FFI-Platypus-0.88/t/ffi_platypus_function.t FFI-Platypus-0.88/t/ffi_build_file_object.t FFI-Platypus-0.88/t/ffi_platypus_internal.t FFI-Platypus-0.88/t/ffi_platypus_lang_asm.t FFI-Platypus-0.88/inc/Alien/Base FFI-Platypus-0.88/inc/Alien/Base/Wrapper.pm FFI-Platypus-0.88/include/perl_math_int64.h FFI-Platypus-0.88/maint/run-before_build.pl FFI-Platypus-0.88/lib/FFI/Platypus/Record.pm FFI-Platypus-0.88/lib/FFI/Platypus/Memory.pm FFI-Platypus-0.88/lib/FFI/Platypus/Buffer.pm FFI-Platypus-0.88/lib/FFI/Platypus/Lang FFI-Platypus-0.88/lib/FFI/Platypus/Lang/C.pm FFI-Platypus-0.88/lib/FFI/Build/File/Base.pm FFI-Platypus-0.88/examples/closure-opaque.pl FFI-Platypus-0.88/t/ffi_build_file_library.t FFI-Platypus-0.88/inc/Alien/FFI FFI-Platypus-0.88/inc/Alien/FFI/pkgconfig.pm FFI-Platypus-0.88/lib/FFI/Platypus/Declare.pm FFI-Platypus-0.88/lib/FFI/Platypus/Closure.pm FFI-Platypus-0.88/t/ffi_probe_runner_result.t FFI-Platypus-0.88/t/ffi_platypus_lang_win32.t FFI-Platypus-0.88/include/ffi_platypus_guts.h FFI-Platypus-0.88/include/ffi_platypus_call.h FFI-Platypus-0.88/lib/FFI/Platypus/Function.pm FFI-Platypus-0.88/lib/FFI/Platypus/Internal.pm FFI-Platypus-0.88/lib/FFI/Platypus/Lang/ASM.pm FFI-Platypus-0.88/lib/FFI/Build/File/Object.pm FFI-Platypus-0.88/t/ffi_platypus_shareconfig.t FFI-Platypus-0.88/t/ffi_probe_runner_builder.t FFI-Platypus-0.88/inc/Alien/FFI/PkgConfigPP.pm FFI-Platypus-0.88/maint/tt/accessor_wrapper.tt FFI-Platypus-0.88/lib/FFI/Build/File/Library.pm FFI-Platypus-0.88/corpus/ffi_probe_runner FFI-Platypus-0.88/corpus/ffi_probe_runner/bar.c FFI-Platypus-0.88/corpus/ffi_probe_runner/foo.c FFI-Platypus-0.88/corpus/ffi_build/source FFI-Platypus-0.88/corpus/ffi_build/source/foo.c FFI-Platypus-0.88/lib/FFI/Platypus/Lang/Win32.pm FFI-Platypus-0.88/lib/FFI/Probe/Runner FFI-Platypus-0.88/lib/FFI/Probe/Runner/Result.pm FFI-Platypus-0.88/examples/list_integer_types.pl FFI-Platypus-0.88/corpus/ffi_build_file_c FFI-Platypus-0.88/corpus/ffi_build_file_c/foo2.c FFI-Platypus-0.88/corpus/ffi_build_file_c/foo1.c FFI-Platypus-0.88/maint/generate-record-accessor FFI-Platypus-0.88/lib/FFI/Platypus/ShareConfig.pm FFI-Platypus-0.88/lib/FFI/Probe/Runner/Builder.pm FFI-Platypus-0.88/examples/attach_from_pointer.pl FFI-Platypus-0.88/examples/win32_getSystemTime.pl FFI-Platypus-0.88/corpus/ffi_build/project2 FFI-Platypus-0.88/corpus/ffi_build/project2/bar.c FFI-Platypus-0.88/corpus/ffi_build_file_c/basic.c FFI-Platypus-0.88/xt/author/pod_spelling_common.t FFI-Platypus-0.88/xt/author/pod_spelling_system.t FFI-Platypus-0.88/t/ffi_platypus_record_tiearray.t FFI-Platypus-0.88/corpus/ffi_build_mm/lb2 FFI-Platypus-0.88/corpus/ffi_build_mm/lb2/hello2.c FFI-Platypus-0.88/corpus/ffi_build_mm/lb2/hello1.c FFI-Platypus-0.88/corpus/ffi_build_mm/lb1 FFI-Platypus-0.88/corpus/ffi_build_mm/lb1/hello2.c FFI-Platypus-0.88/corpus/ffi_build_mm/lb1/hello1.c FFI-Platypus-0.88/corpus/ffi_build/project1 FFI-Platypus-0.88/corpus/ffi_build/project1/foo2.c FFI-Platypus-0.88/corpus/ffi_build/project1/foo1.c FFI-Platypus-0.88/t/ffi_platypus_function_wrapper.t FFI-Platypus-0.88/t/ffi_platypus_type_stringarray.t FFI-Platypus-0.88/corpus/ffi_build_mm/lb1/hello.fbx FFI-Platypus-0.88/corpus/ffi_build_file_cxx FFI-Platypus-0.88/corpus/ffi_build_file_cxx/foo2.cpp FFI-Platypus-0.88/corpus/ffi_build_file_cxx/foo1.cxx FFI-Platypus-0.88/lib/FFI/Platypus/Record FFI-Platypus-0.88/lib/FFI/Platypus/Record/TieArray.pm FFI-Platypus-0.88/t/ffi_platypus_type_stringpointer.t FFI-Platypus-0.88/corpus/ffi_build_file_cxx/basic.cxx FFI-Platypus-0.88/lib/FFI/Platypus/Type FFI-Platypus-0.88/lib/FFI/Platypus/Type/StringArray.pm FFI-Platypus-0.88/corpus/ffi_build_file_base FFI-Platypus-0.88/corpus/ffi_build_file_base/basic.foo FFI-Platypus-0.88/corpus/ffi_build_mm/project1/ffi FFI-Platypus-0.88/corpus/ffi_build_mm/project1/ffi/x.c FFI-Platypus-0.88/corpus/ffi_build_mm/project1/ffi/z.c FFI-Platypus-0.88/corpus/ffi_build_mm/project1/ffi/y.c FFI-Platypus-0.88/Changes.FFI-Platypus-Type-StringArray FFI-Platypus-0.88/corpus/ffi_build/project-cxx FFI-Platypus-0.88/corpus/ffi_build/project-cxx/foo2.cpp FFI-Platypus-0.88/corpus/ffi_build/project-cxx/foo1.cxx FFI-Platypus-0.88/lib/FFI/Platypus/Type/StringPointer.pm FFI-Platypus-0.88/corpus/ffi_build_mm/project1/t/ffi FFI-Platypus-0.88/corpus/ffi_build_mm/project1/t/ffi/c.c FFI-Platypus-0.88/corpus/ffi_build_mm/project1/t/ffi/a.c FFI-Platypus-0.88/corpus/ffi_build_mm/project1/t/ffi/b.c FFI-Platypus-0.88/t/ffi_platypus_type_pointersizebuffer.t FFI-Platypus-0.88/corpus/ffi_build_file_c/include FFI-Platypus-0.88/corpus/ffi_build_file_c/include/myfoo.h FFI-Platypus-0.88/corpus/ffi_build_file_cxx/include FFI-Platypus-0.88/corpus/ffi_build_file_cxx/include/myfoo.h FFI-Platypus-0.88/lib/FFI/Platypus/Type/PointerSizeBuffer.pm Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib to PERL5LIB for 'prepare' Configuring P/PL/PLICEASE/FFI-Platypus-0.88.tar.gz with Makefile.PL >>> /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL using already installed Alien::FFI (version 0.23) Checking if your kit is complete... Looks good Have /Users/fly2400/cpanfly-5.24/var/megalib Want /Users/fly2400/ap2400-300558/lib Your perl and your Config.pm seem to have different ideas about the architecture they are running on. Perl thinks: [megalib] Config says: [darwin-thread-multi-2level] This may or may not cause problems. Please check your installation of perl if you have problems building this extension. Generating a Unix-style Makefile Writing Makefile for FFI::Platypus Writing MYMETA.yml and MYMETA.json PLICEASE/FFI-Platypus-0.88.tar.gz /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL -- OK Running make for P/PL/PLICEASE/FFI-Platypus-0.88.tar.gz Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib to PERL5LIB for 'make' >>> make PR alien.ffi.class=Alien::FFI PR alien.ffi.version=3.2.1 PR alien.ffi.cflags=-I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include PR alien.ffi.libs=-L/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib -lffi PR eumm.cc=['gcc'] PR eumm.inc=['-Iinclude','-I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include'] PR eumm.ccflags=['-fno-common','-DPERL_DARWIN','-no-cpp-precomp','-mmacosx-version-min=10.9','-arch','x86_64','-DUSE_SITECUSTOMIZE','-DPERL_RELOCATABLE_INCPUSH','-fno-strict-aliasing','-pipe','-fstack-protector','-DPERL_USE_SAFE_PUTENV'] PR eumm.cccdlflags=[] PR eumm.optimize=['-O3'] PR eumm.ld=['gcc'] PR eumm.ldflags=['-L/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib','-mmacosx-version-min=10.9','-Wl,-search_paths_first','-arch','x86_64','-fstack-protector'] PR eumm.lddlflags=['-L/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib','-mmacosx-version-min=10.9','-bundle','-undefined','dynamic_lookup','-Wl,-search_paths_first','-arch','x86_64','-fstack-protector'] XX src/dlrun.c XX bin/ CC src/dlrun.c LD src/dlrun.o VV bin/dlrun UN src/dlrun.o 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.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=4 PR type.dev_t.sign=signed PR type.dev_t.size=4 PR type.ino_t.align=8 PR type.ino_t.sign=unsigned PR type.ino_t.size=8 PR type.mode_t.align=2 PR type.mode_t.sign=unsigned PR type.mode_t.size=2 PR type.nlink_t.align=2 PR type.nlink_t.sign=unsigned PR type.nlink_t.size=2 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=4 PR type.blksize_t.sign=signed PR type.blksize_t.size=4 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=signed PR type.wint_t.size=4 PR probe.abi=1 PR probe.alloca=1 PR probe.complex=0 PR probe.longdouble=1 PR abi.sysv=1 PR abi.unix64=2 PR abi.thiscall=3 PR abi.fastcall=4 PR abi.stdcall=5 PR abi.pascal=6 PR abi.register=7 PR abi.default_abi=2 PR abi.unix64=2 cp lib/FFI/Build.pm blib/lib/FFI/Build.pm cp lib/FFI/Platypus/Record/TieArray.pm blib/lib/FFI/Platypus/Record/TieArray.pm cp lib/FFI/Platypus.pm blib/lib/FFI/Platypus.pm cp lib/FFI/Platypus/API.pm blib/lib/FFI/Platypus/API.pm cp lib/FFI/Platypus/Lang.pm blib/lib/FFI/Platypus/Lang.pm cp lib/FFI/Platypus/Declare.pm blib/lib/FFI/Platypus/Declare.pm cp lib/FFI/Probe.pm blib/lib/FFI/Probe.pm cp lib/FFI/Platypus/Buffer.pm blib/lib/FFI/Platypus/Buffer.pm cp lib/FFI/Platypus/Lang/C.pm blib/lib/FFI/Platypus/Lang/C.pm cp lib/FFI/Platypus/DL.pm blib/lib/FFI/Platypus/DL.pm cp lib/FFI/Build/MM.pm blib/lib/FFI/Build/MM.pm cp lib/FFI/Probe/Runner/Result.pm blib/lib/FFI/Probe/Runner/Result.pm cp lib/FFI/Platypus/Type/StringArray.pm blib/lib/FFI/Platypus/Type/StringArray.pm cp lib/FFI/Platypus/ShareConfig.pm blib/lib/FFI/Platypus/ShareConfig.pm cp lib/FFI/Build/File/Object.pm blib/lib/FFI/Build/File/Object.pm cp lib/FFI/Platypus/Record.pm blib/lib/FFI/Platypus/Record.pm cp lib/FFI/Build/File/Library.pm blib/lib/FFI/Build/File/Library.pm cp lib/FFI/Platypus/Function.pm blib/lib/FFI/Platypus/Function.pm cp lib/FFI/Platypus/Lang/Win32.pm blib/lib/FFI/Platypus/Lang/Win32.pm cp lib/FFI/Platypus/Internal.pm blib/lib/FFI/Platypus/Internal.pm cp lib/FFI/Platypus/Type.pod blib/lib/FFI/Platypus/Type.pod cp lib/FFI/Platypus/Lang/ASM.pm blib/lib/FFI/Platypus/Lang/ASM.pm cp lib/FFI/Platypus/Type/StringPointer.pm blib/lib/FFI/Platypus/Type/StringPointer.pm cp lib/FFI/Build/File/CXX.pm blib/lib/FFI/Build/File/CXX.pm cp lib/FFI/Platypus/Closure.pm blib/lib/FFI/Platypus/Closure.pm cp lib/FFI/Build/File/Base.pm blib/lib/FFI/Build/File/Base.pm cp lib/FFI/typemap blib/lib/FFI/typemap cp lib/FFI/Build/Platform.pm blib/lib/FFI/Build/Platform.pm cp lib/FFI/Probe/Runner.pm blib/lib/FFI/Probe/Runner.pm cp lib/FFI/Platypus/Type/PointerSizeBuffer.pm blib/lib/FFI/Platypus/Type/PointerSizeBuffer.pm cp lib/FFI/Build/File/C.pm blib/lib/FFI/Build/File/C.pm cp lib/FFI/Platypus/Memory.pm blib/lib/FFI/Platypus/Memory.pm cp lib/FFI/Probe/Runner/Builder.pm blib/lib/FFI/Probe/Runner/Builder.pm Running Mkbootstrap for lib/FFI/Platypus () chmod 644 "lib/FFI/Platypus.bs" "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -MExtUtils::Command::MM -e 'cp_nonempty' -- lib/FFI/Platypus.bs blib/arch/auto/FFI/Platypus/Platypus.bs 644 "/Users/fly2400/ap2400-300558/bin/perl-dynamic" "/Users/fly2400/cpanfly-5.24/var/megalib/ExtUtils/xsubpp" -typemap '/Users/fly2400/ap2400-300558/lib/ExtUtils/typemap' lib/FFI/Platypus.xs > lib/FFI/Platypus.xsc mv lib/FFI/Platypus.xsc lib/FFI/Platypus.c "/Users/fly2400/ap2400-300558/bin/perl-dynamic" "/Users/fly2400/cpanfly-5.24/var/megalib/ExtUtils/xsubpp" -typemap '/Users/fly2400/ap2400-300558/lib/ExtUtils/typemap' lib/FFI/Platypus.xs > lib/FFI/Platypus.xsc mv lib/FFI/Platypus.xsc lib/FFI/Platypus.c gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include \ -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 \ -DVERSION=\"0.88\" \ -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" lib/FFI/Platypus.c -o lib/FFI/Platypus.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/closure.c -o xs/closure.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/complex.c -o xs/complex.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/custom.c -o xs/custom.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/havepm.c -o xs/havepm.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/meta.c -o xs/meta.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/names.c -o xs/names.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/perl_math_int64.c -o xs/perl_math_int64.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/record_opaque.c -o xs/record_opaque.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/record_simple.c -o xs/record_simple.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/record_string.c -o xs/record_string.o gcc -c -Iinclude -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"0.88\" -DXS_VERSION=\"0.88\" "-I/Users/fly2400/ap2400-300558/lib/CORE" xs/windl.c -o xs/windl.o rm -f blib/arch/auto/FFI/Platypus/Platypus.bundle gcc -L/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib -mmacosx-version-min=10.9 -bundle -undefined dynamic_lookup -Wl,-search_paths_first -arch x86_64 -fstack-protector -o blib/arch/auto/FFI/Platypus/Platypus.bundle lib/FFI/Platypus.o xs/closure.o xs/complex.o xs/custom.o xs/havepm.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 \ -L/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib -lffi \ ld: warning: could not create compact unwind for _ffi_call_unix64: does not use RBP or RSP based frame chmod 755 blib/arch/auto/FFI/Platypus/Platypus.bundle CC ffi/memory.c LD blib/lib/auto/share/dist/FFI-Platypus/lib/libplfill.dylib Manifying 32 pod documents PLICEASE/FFI-Platypus-0.88.tar.gz make -- OK Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib to PERL5LIB for 'test' Running make test >>> make test TEST_VERBOSE=1 "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -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/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 LD t/ffi/libtest.dylib PERL_DL_NONLAZY=1 "/Users/fly2400/ap2400-300558/bin/perl-dynamic" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t # # # # ACTIVEPERL_CONFIG_DISABLE=1 # HARNESS_ACTIVE=1 # HARNESS_IS_VERBOSE=1 # HARNESS_VERSION=3.36 # PERL5LIB=/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.88-kDNced/blib/lib:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.88-kDNced/blib/arch:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib:/Users/fly2400/cpanfly-5.24/var/megalib:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib:/Users/fly2400/cpanfly-5.24/var/megalib # PERL5OPT= # PERL5_CPANPLUS_IS_RUNNING=72844 # PERL5_CPAN_IS_RUNNING=72844 # PERL5_CPAN_IS_RUNNING_IN_RECURSION=71944,72844 # PERL_DL_NONLAZY=1 # PERL_MM_USE_DEFAULT=1 # SHELL=/bin/sh # # # # PERL5LIB path # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.88-kDNced/blib/lib # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.88-kDNced/blib/arch # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib # /Users/fly2400/cpanfly-5.24/var/megalib # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib # /Users/fly2400/cpanfly-5.24/var/megalib # # # # perl 5.024000 # Alien::Base 0.042 # Capture::Tiny 0.48 # ExtUtils::CBuilder 0.280225 # ExtUtils::MakeMaker 7.16 # ExtUtils::ParseXS 3.35 # FFI::CheckLib 0.24 # IPC::Cmd 1.02 # JSON::PP 4.03 # List::Util 1.5 # PkgConfig 0.23026 # Test::More 1.302164 # constant 1.33 # # # # mode : already-installed # Alien::FFI->VERSION = 0.23 # Alien::FFI->install_type = share # Alien::FFI->cflags = -I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include # Alien::FFI->libs = -L/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib -lffi # Alien::FFI->version = 3.2.1 # my_configure = %{configure} --disable-shared --enable-static --disable-builddir LDFLAGS='-arch x86_64' CFLAGS='-arch x86_64' # # # # ffi.platypus.memory.strdup_impl =libc # ffi.platypus.memory.strndup_impl=libc # # # # Types: # double : double, float complex # float : float # longdouble : double complex, long double, long double complex # sint16 : int16_t, short, signed short # sint32 : blksize_t, dev_t, int, int32_t, signed int, wchar_t, wint_t # sint64 : blkcnt_t, int64_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 : mode_t, nlink_t, uint16_t, unsigned short, ushort # uint32 : gid_t, uid_t, uint, uint32_t, unsigned int # uint64 : ino_t, size_t, uint64_t, uintptr_t, ulong, unsigned long, unsigned long long # uint8 : bool, uchar, uint8_t, unsigned char # # # # ABIs: # default_abi 2 # fastcall 4 # pascal 6 # register 7 # stdcall 5 # sysv 1 # thiscall 3 # unix64 2 # # # # Probes: # bigendian 0 # longdouble 1 # alloca 1 # bigendian64 0 # abi 1 # # # # [PLATFORM] # osname : darwin # cc : gcc # cxx : g++ # for : --- # ld : gcc # ccflags : -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 # ldflags : -mmacosx-version-min=10.9 -shared -undefined dynamic_lookup -Wl,-search_paths_first -arch x86_64 -fstack-protector # object suffix : .o # library prefix : lib # library suffix : .dylib,.bundle # cc mm works : -MM # # # t/00_diag.t .............................. 1..1 ok 1 - okay ok t/01_use.t ............................... ok 1 - require FFI::Build; ok 2 - require FFI::Build::File::Base; ok 3 - require FFI::Build::File::C; ok 4 - require FFI::Build::File::CXX; ok 5 - require FFI::Build::File::Library; ok 6 - require FFI::Build::File::Object; ok 7 - require FFI::Build::MM; ok 8 - require FFI::Build::Platform; ok 9 - require FFI::Platypus; ok 10 - require FFI::Platypus::API; ok 11 - require FFI::Platypus::Buffer; ok 12 - require FFI::Platypus::Closure; ok 13 - require FFI::Platypus::DL; ok 14 - require FFI::Platypus::Declare; ok 15 - require FFI::Platypus::Function; ok 16 - require FFI::Platypus::Internal; ok 17 - require FFI::Platypus::Lang; ok 18 - require FFI::Platypus::Lang::ASM; ok 19 - require FFI::Platypus::Lang::C; ok 20 - require FFI::Platypus::Lang::Win32; ok 21 - require FFI::Platypus::Memory; ok 22 - require FFI::Platypus::Record; ok 23 - require FFI::Platypus::Record::TieArray; ok 24 - require FFI::Platypus::ShareConfig; ok 25 - require FFI::Platypus::Type::PointerSizeBuffer; ok 26 - require FFI::Platypus::Type::StringArray; ok 27 - require FFI::Platypus::Type::StringPointer; ok 28 - require FFI::Probe; ok 29 - require FFI::Probe::Runner; ok 30 - require FFI::Probe::Runner::Builder; ok 31 - require FFI::Probe::Runner::Result; ok 32 - test for FFI::Build ok 33 - test for FFI::Build::File::Base ok 34 - test for FFI::Build::File::C ok 35 - test for FFI::Build::File::CXX ok 36 - test for FFI::Build::File::Library ok 37 - test for FFI::Build::File::Object ok 38 - test for FFI::Build::MM ok 39 - test for FFI::Build::Platform ok 40 - test for FFI::Platypus ok 41 - test for FFI::Platypus::API ok 42 - test for FFI::Platypus::Buffer ok 43 - test for FFI::Platypus::Closure ok 44 - test for FFI::Platypus::DL ok 45 - test for FFI::Platypus::Declare ok 46 - test for FFI::Platypus::Function ok 47 - test for FFI::Platypus::Internal ok 48 - test for FFI::Platypus::Lang ok 49 - test for FFI::Platypus::Lang::ASM ok 50 - test for FFI::Platypus::Lang::C ok 51 - test for FFI::Platypus::Lang::Win32 ok 52 - test for FFI::Platypus::Memory ok 53 - test for FFI::Platypus::Record ok 54 - test for FFI::Platypus::Record::TieArray ok 55 - test for FFI::Platypus::ShareConfig ok 56 - test for FFI::Platypus::Type::PointerSizeBuffer ok 57 - test for FFI::Platypus::Type::StringArray ok 58 - test for FFI::Platypus::Type::StringPointer ok 59 - test for FFI::Probe ok 60 - test for FFI::Probe::Runner ok 61 - test for FFI::Probe::Runner::Builder ok 62 - test for FFI::Probe::Runner::Result 1..62 ok t/app_fbx.t .............................. ok 1 1..1 ok t/ffi_build.t ............................ # Subtest: basic ok 1 - An object of class 'FFI::Build' isa 'FFI::Build' ok 2 - foo is somewhere in the native name for the lib # lib.file.path = ./libfoo.dylib ok 3 - dir is a dir ok 4 - An object of class 'FFI::Build::Platform' isa 'FFI::Build::Platform' ok 5 - An object of class 'FFI::Build::File::C' isa 'FFI::Build::File::C' 1..5 ok 1 - basic # Subtest: 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 2 - file classes # Subtest: build # Subtest: name # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +gcc -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.73981.1561107739/foo1.c.o # +gcc -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.73981.1561107739/foo2.c.o # +gcc -mmacosx-version-min=10.9 -shared -undefined dynamic_lookup -Wl,-search_paths_first -arch x86_64 -fstack-protector corpus/ffi_build/project1/tmpbuild.tmpbuild.73981.1561107739/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.73981.1561107739/foo2.c.o -install_name @rpath/corpus/ffi_build/project1/tmpbuild.WsvAv9/libfoo.dylib -o corpus/ffi_build/project1/tmpbuild.WsvAv9/libfoo.dylib ok 2 ok 3 1..3 ok 1 - name # Subtest: object # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +gcc -mmacosx-version-min=10.9 -shared -undefined dynamic_lookup -Wl,-search_paths_first -arch x86_64 -fstack-protector corpus/ffi_build/project1/_build/foo1.c.o corpus/ffi_build/project1/_build/foo2.c.o -install_name @rpath/corpus/ffi_build/project1/tmpbuild.ibqWHI/libfoo.dylib -o corpus/ffi_build/project1/tmpbuild.ibqWHI/libfoo.dylib ok 2 ok 3 1..3 ok 2 - object # Subtest: array # corpus/ffi_build/project1/foo1.c # corpus/ffi_build/project1/foo2.c ok 1 - no error # +gcc -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -c corpus/ffi_build/project1/foo1.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.73981.1561107740/foo1.c.o # +gcc -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -c corpus/ffi_build/project1/foo2.c -o corpus/ffi_build/project1/tmpbuild.tmpbuild.73981.1561107740/foo2.c.o # +gcc -mmacosx-version-min=10.9 -shared -undefined dynamic_lookup -Wl,-search_paths_first -arch x86_64 -fstack-protector corpus/ffi_build/project1/tmpbuild.tmpbuild.73981.1561107740/foo1.c.o corpus/ffi_build/project1/tmpbuild.tmpbuild.73981.1561107740/foo2.c.o -install_name @rpath/corpus/ffi_build/project1/tmpbuild.K5MvIi/libfoo.dylib -o corpus/ffi_build/project1/tmpbuild.K5MvIi/libfoo.dylib ok 2 ok 3 1..3 ok 3 - array 1..3 ok 3 - build # Subtest: build c++ # corpus/ffi_build/project-cxx/foo1.cxx # corpus/ffi_build/project-cxx/foo2.cpp ok 1 - no error # +g++ -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -c corpus/ffi_build/project-cxx/foo1.cxx -o corpus/ffi_build/project-cxx/tmpbuild.73981.1561107740/foo1.o # +g++ -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -c corpus/ffi_build/project-cxx/foo2.cpp -o corpus/ffi_build/project-cxx/tmpbuild.73981.1561107740/foo2.o # +g++ -mmacosx-version-min=10.9 -shared -undefined dynamic_lookup -Wl,-search_paths_first -arch x86_64 -fstack-protector corpus/ffi_build/project-cxx/tmpbuild.73981.1561107740/foo1.o corpus/ffi_build/project-cxx/tmpbuild.73981.1561107740/foo2.o -install_name @rpath/corpus/ffi_build/project-cxx/tmpbuild.cxdt_7/libfoo.dylib -o corpus/ffi_build/project-cxx/tmpbuild.cxdt_7/libfoo.dylib ok 2 - foo1 found ok 3 - foo2 found ok 4 ok 5 1..5 ok 4 - build c++ # Subtest: alien 1..0 # SKIP Test requires Acme::Alien::DontPanic 1.03 ok 5 # skip Test requires Acme::Alien::DontPanic 1.03 1..5 ok t/ffi_build_file_base.t .................. # Subtest: basic # Subtest: basic usage ok 1 # error = content is required at t/ffi_build_file_base.t line 18. 1..1 ok 1 - basic usage # Subtest: array filename ok 1 - An object of class 'FFI::Build::File::Foo' isa 'FFI::Build::File::Base' ok 2 - An object of class 'FFI::Build::File::Foo' 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 2 - array filename # Subtest: string filename ok 1 - An object of class 'FFI::Build::File::Foo' isa 'FFI::Build::File::Base' ok 2 - An object of class 'FFI::Build::File::Foo' isa 'FFI::Build::File::Foo' ok 3 ok 4 - is_temp ok 5 - No forward slashes! 1..5 ok 3 - string filename # Subtest: string ref ok 1 - An object of class 'FFI::Build::File::Foo' isa 'FFI::Build::File::Base' ok 2 - An object of class 'FFI::Build::File::Foo' isa 'FFI::Build::File::Foo' ok 3 - has the correct extension ok 4 - is_temp ok 5 # path: ffi_build_Vbq1PZ.foo ok 6 - No forward slashes! ok 7 - file exists ok 8 - file is removed after destroy 1..8 ok 4 - string ref # Subtest: string ref keep ok 1 ok 2 - file exists ok 3 - No forward slashes! ok 4 - file exists after undef 1..4 ok 5 - string ref keep 1..5 ok 1 - basic 1..1 ok t/ffi_build_file_c.t ..................... # Subtest: basic ok 1 - An object of class 'FFI::Build::File::C' isa 'FFI::Build::File::C' ok 2 - An object of class 'FFI::Build::File::C' isa 'FFI::Build::File::Base' ok 3 ok 4 1..4 ok 1 - basic # Subtest: compile ok 1 - An object of class 'FFI::Build::File::Object' isa 'FFI::Build::File::Object' ok 2 1..2 ok 2 - compile # Subtest: headers ok 1 - no die ok 2 - dep is afile: corpus/ffi_build_file_c/foo2.c ok 3 - dep is afile: corpus/ffi_build_file_c/include/myfoo.h 1..3 ok 3 - headers 1..3 ok t/ffi_build_file_cxx.t ................... # Subtest: basic ok 1 - An object of class 'FFI::Build::File::CXX' isa 'FFI::Build::File::CXX' ok 2 - An object of class 'FFI::Build::File::CXX' isa 'FFI::Build::File::C' ok 3 - An object of class 'FFI::Build::File::CXX' isa 'FFI::Build::File::Base' ok 4 ok 5 1..5 ok 1 - basic # Subtest: compile ok 1 - An object of class 'FFI::Build::File::Object' isa 'FFI::Build::File::Object' ok 2 1..2 ok 2 - compile # Subtest: 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 ok 3 - headers 1..3 ok t/ffi_build_file_library.t ............... # Subtest: basic ok 1 ok 2 # path = corpus/basic.dylib 1..2 ok 1 - basic 1..1 ok t/ffi_build_file_object.t ................ # Subtest: basic ok 1 ok 2 # path = corpus/basic.o 1..2 ok 1 - basic 1..1 ok t/ffi_build_mm.t ......................... # Subtest: basic ok 1 - An object of class 'FFI::Build::MM' isa 'FFI::Build::MM' ok 2 ok 3 ok 4 # Subtest: build with fbx file ok 1 - An object of class 'FFI::Build' isa 'FFI::Build' ok 2 1..2 ok 5 - build with fbx file # Subtest: build with default ok 1 - An object of class 'FFI::Build' isa 'FFI::Build' ok 2 1..2 ok 6 - build with default ok 7 # [postamble] # .PHONY: fbx_build ffi fbx_test ffi-test fbc_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 8 ok 9 1..9 ok 1 - basic # Subtest: with a build! # Subtest: 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 1 - namespace is clean # Subtest: perl Makefile.PL ok 1 1..1 ok 2 - perl Makefile.PL # Subtest: 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 3 - import # Subtest: 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.dylib ok 1 ok 2 ok 3 1..3 ok 4 - make # Subtest: make test # CC t/ffi/a.c # CC t/ffi/b.c # CC t/ffi/c.c # LD t/ffi/_build/libtest.dylib ok 1 1..1 ok 5 - make test # Subtest: make clean ok 1 1..1 ok 6 - make clean 1..6 ok 2 - with a build! # Subtest: alien 1..0 # SKIP todo ok 3 # skip todo 1..3 ok t/ffi_build_platform.t ................... # Subtest: basic ok 1 - An object of class 'FFI::Build::Platform' isa 'FFI::Build::Platform' # osname : darwin # cc : gcc # cxx : g++ # for : --- # ld : gcc # ccflags : -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 # ldflags : -mmacosx-version-min=10.9 -shared -undefined dynamic_lookup -Wl,-search_paths_first -arch x86_64 -fstack-protector # object suffix : .o # library prefix : lib # library suffix : .dylib,.bundle # cc mm works : -MM 1..1 ok 1 - basic # Subtest: cc mm works # CC (checkfor -MM) ok 1 # cc_mm_works = -MM 1..1 ok 2 - cc mm works 1..2 ok t/ffi_platypus.t ......................... # Subtest: constructor # Subtest: basic ok 1 - An object of class 'FFI::Platypus' isa 'FFI::Platypus' 1..1 ok 1 - basic # Subtest: no arguments ok 1 - 'FFI::Platypus.new' isa 'FFI::Platypus' ok 2 - ffi.lib 1..2 ok 2 - no arguments # Subtest: with single lib ok 1 - 'FFI::Platypus.new' isa 'FFI::Platypus' ok 2 - ffi.lib 1..2 ok 3 - with single lib # Subtest: with multiple lib ok 1 - 'FFI::Platypus.new' isa 'FFI::Platypus' ok 2 - ffi.lib 1..2 ok 4 - with multiple lib 1..4 ok 1 - constructor # Subtest: abi ok 1 - has a default ABI # Subtest: stdcall ok 1 - string ok 2 - integer 1..2 ok 2 - stdcall # Subtest: fastcall ok 1 - string ok 2 - integer 1..2 ok 3 - fastcall # Subtest: default_abi ok 1 - string ok 2 - integer 1..2 ok 4 - default_abi # Subtest: unix64 ok 1 - string ok 2 - integer 1..2 ok 5 - unix64 # Subtest: pascal ok 1 - string ok 2 - integer 1..2 ok 6 - pascal # Subtest: sysv ok 1 - string ok 2 - integer 1..2 ok 7 - sysv # Subtest: register ok 1 - string ok 2 - integer 1..2 ok 8 - register # Subtest: thiscall ok 1 - string ok 2 - integer 1..2 ok 9 - thiscall # Subtest: bogus ok 1 - string ok 2 - integer 1..2 ok 10 - bogus 1..10 ok 2 - abi # Subtest: alignof # Subtest: ffi types ok 1 - alignof sint8 = 1 ok 2 - alignof sint8 [2] = 1 ok 3 - alignof sint8 * = 8 ok 4 - alignof custom_sint8 = 1 ok 5 - alignof uint8 = 1 ok 6 - alignof uint8 [2] = 1 ok 7 - alignof uint8 * = 8 ok 8 - alignof custom_uint8 = 1 ok 9 - alignof sint16 = 2 ok 10 - alignof sint16 [2] = 2 ok 11 - alignof sint16 * = 8 ok 12 - alignof custom_sint16 = 2 ok 13 - alignof uint16 = 2 ok 14 - alignof uint16 [2] = 2 ok 15 - alignof uint16 * = 8 ok 16 - alignof custom_uint16 = 2 ok 17 - alignof sint32 = 4 ok 18 - alignof sint32 [2] = 4 ok 19 - alignof sint32 * = 8 ok 20 - alignof custom_sint32 = 4 ok 21 - alignof uint32 = 4 ok 22 - alignof uint32 [2] = 4 ok 23 - alignof uint32 * = 8 ok 24 - alignof custom_uint32 = 4 ok 25 - alignof sint64 = 8 ok 26 - alignof sint64 [2] = 8 ok 27 - alignof sint64 * = 8 ok 28 - alignof custom_sint64 = 8 ok 29 - alignof uint64 = 8 ok 30 - alignof uint64 [2] = 8 ok 31 - alignof uint64 * = 8 ok 32 - alignof custom_uint64 = 8 ok 33 - alignof float = 4 ok 34 - alignof float [2] = 4 ok 35 - alignof float * = 8 ok 36 - alignof custom_float = 4 ok 37 - alignof double = 8 ok 38 - alignof double [2] = 8 ok 39 - alignof double * = 8 ok 40 - alignof custom_double = 8 ok 41 - alignof opaque = 8 ok 42 - alignof opaque [2] = 8 ok 43 - alignof opaque * = 8 ok 44 - alignof custom_opaque = 8 ok 45 - alignof string = 8 1..45 ok 1 - ffi types # Subtest: aliases ok 1 - alignof ushort = 2 ok 2 - alignof foo = 2 1..2 ok 2 - aliases # Subtest: closure ok 1 - sizeof closure_t = 8 1..1 ok 3 - closure # Subtest: record ok 1 # {'ffi_type' => 'pointer','ref' => 0,'size' => 22,'type' => 'record','type_code' => 2308} 1..1 ok 4 - record 1..4 ok 3 - alignof # Subtest: custom type # Subtest: 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' => 16451}} 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' => 16451}} 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' => 16451}} 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' => 16451}} 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' => 16451}} 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' => 16451}} 1..6 ok 1 - float # Subtest: 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' => 16452}} 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' => 16452}} 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' => 16452}} 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' => 16452}} 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' => 16452}} 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' => 16452}} 1..6 ok 2 - double # Subtest: 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' => 16644}} 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' => 16644}} 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' => 16644}} 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' => 16644}} 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' => 16644}} 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' => 16644}} 1..6 ok 3 - opaque # Subtest: 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' => 16417}} 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' => 16417}} 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' => 16417}} 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' => 16417}} 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' => 16417}} 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' => 16417}} 1..6 ok 4 - uint8 # Subtest: 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' => 16401}} 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' => 16401}} 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' => 16401}} 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' => 16401}} 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' => 16401}} 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' => 16401}} 1..6 ok 5 - sint8 # Subtest: 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' => 16418}} 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' => 16418}} 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' => 16418}} 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' => 16418}} 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' => 16418}} 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' => 16418}} 1..6 ok 6 - uint16 # Subtest: 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' => 16402}} 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' => 16402}} 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' => 16402}} 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' => 16402}} 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' => 16402}} 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' => 16402}} 1..6 ok 7 - sint16 # Subtest: 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' => 16419}} 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' => 16419}} 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' => 16419}} 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' => 16419}} 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' => 16419}} 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' => 16419}} 1..6 ok 8 - uint32 # Subtest: 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' => 16403}} 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' => 16403}} 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' => 16403}} 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' => 16403}} 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' => 16403}} 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' => 16403}} 1..6 ok 9 - sint32 # Subtest: 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' => 16420}} 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' => 16420}} 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' => 16420}} 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' => 16420}} 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' => 16420}} 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' => 16420}} 1..6 ok 10 - uint64 # Subtest: 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' => 16404}} 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' => 16404}} 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' => 16404}} 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' => 16404}} 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' => 16404}} 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' => 16404}} 1..6 ok 11 - sint64 1..11 ok 4 - custom type # Subtest: find lib # Subtest: find_lib ok 1 - found f0 = 4420440960 1..1 ok 1 - find_lib # Subtest: external ok 1 - ffi.find_symbol(f0) = 4420440960 ok 2 - ffi.find_symbol(bogus) = undef 1..2 ok 2 - external # Subtest: internal ok 1 - ffi.find_symbol(printf) = 140735541373116 ok 2 - ffi.find_symbol(bogus) = undef 1..2 ok 3 - internal 1..3 ok 5 - find lib # Subtest: find symbol # Subtest: external ok 1 - ffi.find_symbol(f0) = 4420440960 ok 2 - ffi.find_symbol(bogus) = undef 1..2 ok 1 - external # Subtest: internal ok 1 - ffi.find_symbol(printf) = 140735541373116 ok 2 - ffi.find_symbol(bogus) = undef 1..2 ok 2 - internal 1..2 ok 6 - find symbol # Subtest: lib # Subtest: basic ok 1 - exists t/ffi/libtest.dylib ok 2 - ffi.lib (set) ok 3 - ffi.lib (get) 1..3 ok 1 - basic # Subtest: undef # Subtest: baseline ok 1 1..1 ok 1 - baseline # Subtest: lib => [undef] ok 1 1..1 ok 2 - lib => [undef] # Subtest: lib => undef ok 1 1..1 ok 3 - lib => undef 1..3 ok 2 - undef # Subtest: coderef ok 1 - exists t/ffi/libtest.dylib ok 2 - ffi.lib (set) ok 3 - ffi.lib (get) 1..3 ok 3 - coderef 1..3 ok 7 - lib # Subtest: sizeof # Subtest: 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 1 - integers # Subtest: floats ok 1 - sizeof float = 4 ok 2 - sizeof double = 8 1..2 ok 2 - floats # Subtest: 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 3 - pointers # Subtest: 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 4 - arrays # Subtest: 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 ok 5 - custom_type 1..5 ok 8 - sizeof # Subtest: type # Subtest: simple type ok 1 - ffi.type(sint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' 1..2 ok 1 - simple type # Subtest: aliased type ok 1 - ffi.type(sint8 => my_integer_8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 4 - ffi.types returns my_integer_8 1..4 ok 2 - aliased type # Subtest: ffi basic types # Subtest: sint8 ok 1 - ffi.type(sint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 1,'type' => 'scalar','type_code' => 17} # 0 ok 3 - size = 1 1..3 ok 1 - sint8 # Subtest: uint8 ok 1 - ffi.type(uint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 1,'type' => 'scalar','type_code' => 33} # 0 ok 3 - size = 1 1..3 ok 2 - uint8 # Subtest: sint16 ok 1 - ffi.type(sint16) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 2,'type' => 'scalar','type_code' => 18} # 0 ok 3 - size = 2 1..3 ok 3 - sint16 # Subtest: uint16 ok 1 - ffi.type(uint16) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 2,'type' => 'scalar','type_code' => 34} # 0 ok 3 - size = 2 1..3 ok 4 - uint16 # Subtest: sint32 ok 1 - ffi.type(sint32) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 4,'type' => 'scalar','type_code' => 19} # 0 ok 3 - size = 4 1..3 ok 5 - sint32 # Subtest: uint32 ok 1 - ffi.type(uint32) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 4,'type' => 'scalar','type_code' => 35} # 0 ok 3 - size = 4 1..3 ok 6 - uint32 # Subtest: sint64 ok 1 - ffi.type(sint64) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'scalar','type_code' => 20} # 0 ok 3 - size = 8 1..3 ok 7 - sint64 # Subtest: uint64 ok 1 - ffi.type(uint64) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'scalar','type_code' => 36} # 0 ok 3 - size = 8 1..3 ok 8 - uint64 # Subtest: float ok 1 - ffi.type(float) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 4,'type' => 'scalar','type_code' => 67} # 0 ok 3 - size = 4 1..3 ok 9 - float # Subtest: double ok 1 - ffi.type(double) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'scalar','type_code' => 68} # 0 ok 3 - size = 8 1..3 ok 10 - double # Subtest: opaque ok 1 - ffi.type(opaque) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'scalar','type_code' => 260} # 0 ok 3 - size = 8 1..3 ok 11 - opaque # Subtest: string ok 1 - ffi.type(string) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'access' => 'ro','element_size' => 8,'ffi_type' => 'pointer','size' => 8,'type' => 'string','type_code' => 772} # 0 ok 3 - size = 8 1..3 ok 12 - string # Subtest: longdouble ok 1 - ffi.type(longdouble) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 16,'type' => 'scalar','type_code' => 69} # 0 ok 3 - size = 16 1..3 ok 13 - longdouble 1..13 ok 3 - ffi basic types # Subtest: ffi pointer types # Subtest: sint8 * ok 1 - ffi.type(sint8 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4113} # 0 ok 3 - size = 8 1..3 ok 1 - sint8 * # Subtest: uint8 * ok 1 - ffi.type(uint8 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4129} # 0 ok 3 - size = 8 1..3 ok 2 - uint8 * # Subtest: sint16 * ok 1 - ffi.type(sint16 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4114} # 0 ok 3 - size = 8 1..3 ok 3 - sint16 * # Subtest: uint16 * ok 1 - ffi.type(uint16 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4130} # 0 ok 3 - size = 8 1..3 ok 4 - uint16 * # Subtest: sint32 * ok 1 - ffi.type(sint32 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4115} # 0 ok 3 - size = 8 1..3 ok 5 - sint32 * # Subtest: uint32 * ok 1 - ffi.type(uint32 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4131} # 0 ok 3 - size = 8 1..3 ok 6 - uint32 * # Subtest: sint64 * ok 1 - ffi.type(sint64 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 8,'type' => 'pointer','type_code' => 4116} # 0 ok 3 - size = 8 1..3 ok 7 - sint64 * # Subtest: uint64 * ok 1 - ffi.type(uint64 *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 8,'type' => 'pointer','type_code' => 4132} # 0 ok 3 - size = 8 1..3 ok 8 - uint64 * # Subtest: float * ok 1 - ffi.type(float *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 8,'type' => 'pointer','type_code' => 4163} # 0 ok 3 - size = 8 1..3 ok 9 - float * # Subtest: double * ok 1 - ffi.type(double *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 8,'type' => 'pointer','type_code' => 4164} # 0 ok 3 - size = 8 1..3 ok 10 - double * # Subtest: opaque * ok 1 - ffi.type(opaque *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 8,'type' => 'pointer','type_code' => 4356} # 0 ok 3 - size = 8 1..3 ok 11 - opaque * # Subtest: string * 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE POINTER ok 12 # skip ME GRIMLOCK SAY STRING CAN NO BE POINTER # Subtest: longdouble * ok 1 - ffi.type(longdouble *) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 8,'type' => 'pointer','type_code' => 4165} # 0 ok 3 - size = 8 1..3 ok 13 - longdouble * 1..13 ok 4 - ffi pointer types # Subtest: ffi array types # Subtest: sint8 [5] ok 1 - ffi.type(sint8 [5]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 5,'element_size' => 1,'element_type' => 'int','ffi_type' => 'sint8','sign' => 1,'size' => 5,'type' => 'array','type_code' => 8209} # 0 ok 3 - size = 5 ok 4 - size = 5 1..4 ok 1 - sint8 [5] # Subtest: uint8 [7] ok 1 - ffi.type(uint8 [7]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 7,'element_size' => 1,'element_type' => 'int','ffi_type' => 'uint8','sign' => 0,'size' => 7,'type' => 'array','type_code' => 8225} # 0 ok 3 - size = 7 ok 4 - size = 7 1..4 ok 2 - uint8 [7] # Subtest: sint16 [9] ok 1 - ffi.type(sint16 [9]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 9,'element_size' => 2,'element_type' => 'int','ffi_type' => 'sint16','sign' => 1,'size' => 18,'type' => 'array','type_code' => 8210} # 0 ok 3 - size = 18 ok 4 - size = 9 1..4 ok 3 - sint16 [9] # Subtest: uint16 [11] ok 1 - ffi.type(uint16 [11]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 11,'element_size' => 2,'element_type' => 'int','ffi_type' => 'uint16','sign' => 0,'size' => 22,'type' => 'array','type_code' => 8226} # 0 ok 3 - size = 22 ok 4 - size = 11 1..4 ok 4 - uint16 [11] # Subtest: sint32 [13] ok 1 - ffi.type(sint32 [13]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 13,'element_size' => 4,'element_type' => 'int','ffi_type' => 'sint32','sign' => 1,'size' => 52,'type' => 'array','type_code' => 8211} # 0 ok 3 - size = 52 ok 4 - size = 13 1..4 ok 5 - sint32 [13] # Subtest: uint32 [15] ok 1 - ffi.type(uint32 [15]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 15,'element_size' => 4,'element_type' => 'int','ffi_type' => 'uint32','sign' => 0,'size' => 60,'type' => 'array','type_code' => 8227} # 0 ok 3 - size = 60 ok 4 - size = 15 1..4 ok 6 - uint32 [15] # Subtest: sint64 [17] ok 1 - ffi.type(sint64 [17]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 17,'element_size' => 8,'element_type' => 'int','ffi_type' => 'sint64','sign' => 1,'size' => 136,'type' => 'array','type_code' => 8212} # 0 ok 3 - size = 136 ok 4 - size = 17 1..4 ok 7 - sint64 [17] # Subtest: uint64 [19] ok 1 - ffi.type(uint64 [19]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 19,'element_size' => 8,'element_type' => 'int','ffi_type' => 'uint64','sign' => 0,'size' => 152,'type' => 'array','type_code' => 8228} # 0 ok 3 - size = 152 ok 4 - size = 19 1..4 ok 8 - uint64 [19] # Subtest: float [21] ok 1 - ffi.type(float [21]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 21,'element_size' => 4,'element_type' => 'float','ffi_type' => 'float','size' => 84,'type' => 'array','type_code' => 8259} # 0 ok 3 - size = 84 ok 4 - size = 21 1..4 ok 9 - float [21] # Subtest: double [23] ok 1 - ffi.type(double [23]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 23,'element_size' => 8,'element_type' => 'float','ffi_type' => 'double','size' => 184,'type' => 'array','type_code' => 8260} # 0 ok 3 - size = 184 ok 4 - size = 23 1..4 ok 10 - double [23] # Subtest: opaque [25] ok 1 - ffi.type(opaque [25]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 25,'element_size' => 8,'element_type' => 'opaque','ffi_type' => 'pointer','size' => 200,'type' => 'array','type_code' => 8452} # 0 ok 3 - size = 200 ok 4 - size = 25 1..4 ok 11 - opaque [25] # Subtest: string [27] 1..0 # SKIP ME GRIMLOCK SAY STRING CAN NO BE ARRAY ok 12 # skip ME GRIMLOCK SAY STRING CAN NO BE ARRAY # Subtest: longdouble [29] ok 1 - ffi.type(longdouble [29]) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' # {'element_count' => 29,'element_size' => 16,'element_type' => 'float','ffi_type' => 'longdouble','size' => 464,'type' => 'array','type_code' => 8261} # 0 ok 3 - size = 464 ok 4 - size = 29 1..4 ok 13 - longdouble [29] 1..13 ok 5 - ffi array types # Subtest: 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} # 0 ok 2 # 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} # 0 1..6 ok 6 - closure types # Subtest: record # {'ffi_type' => 'pointer','ref' => 0,'size' => 1,'type' => 'record','type_code' => 2308} # 0 # {'ffi_type' => 'pointer','ref' => 0,'size' => 32,'type' => 'record','type_code' => 2308} # 0 ok 1 - sizeof my_record_1 = 1 ok 2 - sizeof my_record_32 = 32 # {'ffi_type' => 'pointer','ref' => 1,'size' => 22,'type' => 'record','type_code' => 2308} # 0 # {'ffi_type' => 'pointer','ref' => 1,'size' => 44,'type' => 'record','type_code' => 2308} # 0 ok 3 - sizeof my_record_22 = 22 ok 4 - sizeof my_record_44 = 44 1..4 ok 7 - record # Subtest: string # Subtest: 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} # 0 1..2 ok 1 - string # Subtest: 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} # 0 1..2 ok 2 - string_rw # Subtest: 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} # 0 1..2 ok 3 - string_ro # Subtest: 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} # 0 1..2 ok 4 - string rw # Subtest: 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} # 0 1..2 ok 5 - string ro # Subtest: 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} # 0 1..2 ok 6 - string (10) # Subtest: 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} # 0 1..2 ok 7 - string(10) 1..7 ok 8 - string # Subtest: private # Subtest: void ok 1 - type = FFI::Platypus::Type->new(void) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = void 1..3 ok 1 - void # Subtest: uint8 ok 1 - type = FFI::Platypus::Type->new(uint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = uint8 1..3 ok 2 - uint8 # Subtest: sint8 ok 1 - type = FFI::Platypus::Type->new(sint8) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = sint8 1..3 ok 3 - sint8 # Subtest: uint16 ok 1 - type = FFI::Platypus::Type->new(uint16) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = uint16 1..3 ok 4 - uint16 # Subtest: sint16 ok 1 - type = FFI::Platypus::Type->new(sint16) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = sint16 1..3 ok 5 - sint16 # Subtest: uint32 ok 1 - type = FFI::Platypus::Type->new(uint32) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = uint32 1..3 ok 6 - uint32 # Subtest: sint32 ok 1 - type = FFI::Platypus::Type->new(sint32) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = sint32 1..3 ok 7 - sint32 # Subtest: uint64 ok 1 - type = FFI::Platypus::Type->new(uint64) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = uint64 1..3 ok 8 - uint64 # Subtest: sint64 ok 1 - type = FFI::Platypus::Type->new(sint64) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = sint64 1..3 ok 9 - sint64 # Subtest: float ok 1 - type = FFI::Platypus::Type->new(float) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = float 1..3 ok 10 - float # Subtest: double ok 1 - type = FFI::Platypus::Type->new(double) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = double 1..3 ok 11 - double # Subtest: longdouble ok 1 - type = FFI::Platypus::Type->new(longdouble) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = longdouble 1..3 ok 12 - longdouble # Subtest: opaque ok 1 - type = FFI::Platypus::Type->new(opaque) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = pointer 1..3 ok 13 - opaque # Subtest: pointer ok 1 - type = FFI::Platypus::Type->new(pointer) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = pointer 1..3 ok 14 - pointer # Subtest: string ok 1 - type = FFI::Platypus::Type->new(string) ok 2 - An object of class 'FFI::Platypus::Type' isa 'FFI::Platypus::Type' ok 3 - type.meta.ffi_type = pointer 1..3 ok 15 - string 1..15 ok 9 - private 1..9 ok 9 - type # Subtest: class or instance method ok 1 - class and instance methods are identical # type: blkcnt_t # type: blksize_t # type: bool # type: char # type: dev_t # type: double # type: double complex # 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: intptr_t # type: long # type: long double # type: long double complex # type: long long # type: longdouble # type: mode_t # type: nlink_t # type: off_t # type: opaque # type: pointer # type: ptrdiff_t # 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: 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 10 - class or instance method # Subtest: cast # Subtest: cast from string to pointer ok 1 - dynamic ok 2 - static 1..2 ok 1 - cast from string to pointer # Subtest: cast from pointer to string ok 1 - dynamic ok 2 - static 1..2 ok 2 - cast from pointer to string # Subtest: cast closure to opaque ok 1 - dynamic ok 2 - dynamic ok 3 - static ok 4 - static 1..4 ok 3 - cast closure to opaque 1..3 ok 11 - cast # Subtest: ignore_not_found # Subtest: 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 622. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 626. 1..4 ok 1 - ignore_not_found=undef # Subtest: 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 642. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 646. 1..4 ok 2 - ignore_not_found=0 # Subtest: 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 660. ok 4 - attach exception # exception=unable to find bogus at t/ffi_platypus.t line 664. 1..4 ok 3 - ignore_not_found=0 (constructor) # Subtest: 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 4 - ignore_not_found=1 # Subtest: 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 5 - ignore_not_found=1 (constructor) # Subtest: 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 ok 6 - ignore_not_found bool context 1..6 ok 12 - ignore_not_found # Subtest: 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 13 - attach basic # Subtest: attach void ok 1 - $i_ptr = 43 after f2(\$i_ptr) ok 2 - $i_ptr = 44 after f2_implicit(\$i_ptr) 1..2 ok 14 - attach void # Subtest: customer mangler ok 1 1..1 ok 15 - customer mangler 1..15 ok t/ffi_platypus_api.t ..................... skipped: TODO t/ffi_platypus_buffer.t .................. # Subtest: simple ok 1 - ptr = 140301964921008 ok 2 - scalar to pointer matches ok 3 - size = 16 ok 4 - scalar = me grimlock king 1..4 ok 1 - simple # Subtest: unicode ok 1 - ptr = 140301964926480 ok 2 - size = 12 ok 3 - scalar = привет 1..3 ok 2 - unicode 1..2 ok t/ffi_platypus_closure.t ................. # Subtest: basic ok 1 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 2 - closure.(1) = 2 ok 3 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 4 - closure.(1) = 3 ok 5 - closure.call(1) = 3 ok 6 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 7 - closure.(1) = 3 ok 8 - closure.call(1) = 3 1..8 ok 1 - basic # Subtest: sticky ok 1 - An object of class 'FFI::Platypus::Closure' 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 2 - sticky # Subtest: private ok 1 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 2 - closure.(1) = 2 1..2 ok 3 - private # Subtest: space ok 1 - good without space ok 2 - good with space 1..2 ok 4 - space # Subtest: die ok 1 ok 2 - does not exit # warning = 'omg i don't want to die! at t/ffi_platypus_closure.t line 72. # ' 1..2 ok 5 - die # Subtest: reuse ok 1 ok 2 1..2 ok 6 - reuse # Subtest: immediate ok 1 1..1 ok 7 - immediate 1..7 ok t/ffi_platypus_declare.t ................. # Subtest: normal ok 1 - f0(22) = 22 ok 2 - f1(22) = 22 ok 3 - f0_wrap(22) = 25 ok 4 - f0_wrap2(22) = 25 1..4 ok 1 - normal # Subtest: prototype ok 1 - no compile error ok 2 - f(22) = 22 1..2 ok 2 - prototype # Subtest: with type aliases ok 1 - atoi("42") = 42 1..1 ok 3 - with type aliases # Subtest: simple closure test ok 1 - An object of class 'FFI::Platypus::Closure' isa 'FFI::Platypus::Closure' ok 2 - closure.(1) = 2 1..2 ok 4 - simple closure test # Subtest: abis ok 1 - has a default ABI # Subtest: sysv ok 1 - string ok 2 - integer 1..2 ok 2 - sysv # Subtest: unix64 ok 1 - string ok 2 - integer 1..2 ok 3 - unix64 # Subtest: thiscall ok 1 - string ok 2 - integer 1..2 ok 4 - thiscall # Subtest: register ok 1 - string ok 2 - integer 1..2 ok 5 - register # Subtest: pascal ok 1 - string ok 2 - integer 1..2 ok 6 - pascal # Subtest: default_abi ok 1 - string ok 2 - integer 1..2 ok 7 - default_abi # Subtest: fastcall ok 1 - string ok 2 - integer 1..2 ok 8 - fastcall # Subtest: stdcall ok 1 - string ok 2 - integer 1..2 ok 9 - stdcall # Subtest: bogus ok 1 - string ok 2 - integer 1..2 ok 10 - bogus 1..10 ok 5 - abis # Subtest: lang # Subtest: C ok 1 - int is an okay type ok 2 - foo_t is not an okay type # unknown type: foo_t at t/ffi_platypus_declare.t line 120. ok 3 - sint16 is an okay type 1..3 ok 1 - C # Subtest: Foo constructor ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_declare.t line 149. 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 1..5 ok 2 - Foo constructor 1..2 ok 6 - lang # Subtest: sizeof ok 1 - sizeof uint32 = 4 ok 2 - sizeof uint32[2] = 8 1..2 ok 7 - sizeof # Subtest: sticky ok 1 - call_closure(2) = 4 1..1 ok 8 - sticky # Subtest: cast # Subtest: cast from string to pointer ok 1 - dynamic ok 2 - static 1..2 ok 1 - cast from string to pointer # Subtest: cast from pointer to string ok 1 - dynamic ok 2 - static 1..2 ok 2 - cast from pointer to string # Subtest: cast closure to opaque ok 1 - dynamic ok 2 - static 1..2 ok 3 - cast closure to opaque 1..3 ok 9 - cast 1..9 ok t/ffi_platypus_dl.t ...................... # Subtest: flags ok 1 - RTLD_PLATYPUS_DEFAULT is defined # RTLD_LAZY 0001 1 # RTLD_PLATYPUS_DEFAULT 0001 1 # RTLD_NOW 0002 2 # RTLD_LOCAL 0004 4 # RTLD_GLOBAL 0008 8 # RTLD_NOLOAD 0010 16 # RTLD_NODELETE 0080 128 1..1 ok 1 - flags # Subtest: dlopen # Subtest: bad library ok 1 - Returns undef on fail # dlerror = dlopen(t/ffi/libbogus.so, 1): image not found 1..1 ok 1 - bad library # Subtest: good library ok 1 - Returns handle on good # h = 140222956467200 1..1 ok 2 - good library 1..2 ok 2 - dlopen # Subtest: dlsym # Subtest: good symbol ok 1 - returns an address # address = 4375032704 1..1 ok 1 - good symbol # Subtest: bad symbol ok 1 - bad symbol returns undef # dlerror = dlsym(0x7f8833828ce0, bogus): symbol not found 1..1 ok 2 - bad symbol 1..2 ok 3 - dlsym 1..3 ok t/ffi_platypus_function.t ................ # Subtest: built in type ok 1 - ffi.function(f0, [uint8] => uint8) ok 2 - An object of class 'FFI::Platypus::Function::Function' isa 'FFI::Platypus::Function' ok 3 - An object of class 'FFI::Platypus::Function::Function' isa 'FFI::Platypus::Function::Function' ok 4 - function.call(22) = 22 ok 5 - function.(22) = 22 1..5 ok 1 - built in type # Subtest: custom type ok 1 - ffi.function(f0, [my_int_8] => my_int_8) ok 2 - An object of class 'FFI::Platypus::Function::Function' isa 'FFI::Platypus::Function' ok 3 - An object of class 'FFI::Platypus::Function::Function' isa 'FFI::Platypus::Function::Function' ok 4 - function.call(22) = 22 ok 5 - function.(22) = 22 1..5 ok 2 - custom type # Subtest: private ok 1 - FFI::Platypus::Function->new ok 2 - An object of class 'FFI::Platypus::Function::Function' isa 'FFI::Platypus::Function' ok 3 - An object of class 'FFI::Platypus::Function::Function' isa 'FFI::Platypus::Function::Function' ok 4 - function.call(22) = 22 ok 5 - fooble(22) = 22 1..5 ok 3 - private # Subtest: meta # Subtest: unattached ok 1 ok 2 1..2 ok 1 - unattached # Subtest: attached ok 1 ok 2 1..2 ok 2 - attached 1..2 ok 4 - meta 1..4 ok t/ffi_platypus_function_wrapper.t ........ # Subtest: built in type ok 1 - ffi.function(f0, [uint8] => uint8) ok 2 - An object of class 'FFI::Platypus::Function::Wrapper' isa 'FFI::Platypus::Function' ok 3 - An object of class 'FFI::Platypus::Function::Wrapper' isa 'FFI::Platypus::Function::Wrapper' ok 4 - function.call(22) = 44 ok 5 - function.(22) = 44 ok 6 - baboon(11) = 22 1..6 ok 1 - built in type 1..1 ok t/ffi_platypus_internal.t ................ # Subtest: 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 0x4000 ok 14 - FFI_PL_SHAPE_POINTER 0x1000 ok 15 - FFI_PL_SHAPE_SCALAR 0x0000 ok 16 - FFI_PL_SIZE_0 0x0000 ok 17 - FFI_PL_SIZE_128 0x0005 ok 18 - FFI_PL_SIZE_16 0x0002 ok 19 - FFI_PL_SIZE_256 0x0006 ok 20 - FFI_PL_SIZE_32 0x0003 ok 21 - FFI_PL_SIZE_512 0x0007 ok 22 - FFI_PL_SIZE_64 0x0004 ok 23 - FFI_PL_SIZE_8 0x0001 ok 24 - FFI_PL_SIZE_MASK 0x0007 ok 25 - FFI_PL_SIZE_PTR 0x0004 ok 26 - FFI_PL_TYPE_CLOSURE 0x0504 ok 27 - FFI_PL_TYPE_COMPLEX_DOUBLE 0x0085 ok 28 - FFI_PL_TYPE_COMPLEX_FLOAT 0x0084 ok 29 - FFI_PL_TYPE_DOUBLE 0x0044 ok 30 - FFI_PL_TYPE_FLOAT 0x0043 ok 31 - FFI_PL_TYPE_LONG_DOUBLE 0x0045 ok 32 - FFI_PL_TYPE_OPAQUE 0x0104 ok 33 - FFI_PL_TYPE_RECORD 0x0904 ok 34 - FFI_PL_TYPE_SINT16 0x0012 ok 35 - FFI_PL_TYPE_SINT32 0x0013 ok 36 - FFI_PL_TYPE_SINT64 0x0014 ok 37 - FFI_PL_TYPE_SINT8 0x0011 ok 38 - FFI_PL_TYPE_STRING 0x0304 ok 39 - FFI_PL_TYPE_UINT16 0x0022 ok 40 - FFI_PL_TYPE_UINT32 0x0023 ok 41 - FFI_PL_TYPE_UINT64 0x0024 ok 42 - FFI_PL_TYPE_UINT8 0x0021 ok 43 - FFI_PL_TYPE_VOID 0x0008 # value order: ok 44 - FFI_PL_SHAPE_SCALAR 0x0000 ok 45 - FFI_PL_SIZE_0 0x0000 ok 46 - FFI_PL_SIZE_8 0x0001 ok 47 - FFI_PL_SIZE_16 0x0002 ok 48 - FFI_PL_SIZE_32 0x0003 ok 49 - FFI_PL_SIZE_64 0x0004 ok 50 - FFI_PL_SIZE_PTR 0x0004 ok 51 - FFI_PL_SIZE_128 0x0005 ok 52 - FFI_PL_SIZE_256 0x0006 ok 53 - FFI_PL_SIZE_MASK 0x0007 ok 54 - FFI_PL_SIZE_512 0x0007 ok 55 - FFI_PL_BASE_VOID 0x0008 ok 56 - FFI_PL_TYPE_VOID 0x0008 ok 57 - FFI_PL_BASE_SINT 0x0010 ok 58 - FFI_PL_TYPE_SINT8 0x0011 ok 59 - FFI_PL_TYPE_SINT16 0x0012 ok 60 - FFI_PL_TYPE_SINT32 0x0013 ok 61 - FFI_PL_TYPE_SINT64 0x0014 ok 62 - FFI_PL_BASE_UINT 0x0020 ok 63 - FFI_PL_TYPE_UINT8 0x0021 ok 64 - FFI_PL_TYPE_UINT16 0x0022 ok 65 - FFI_PL_TYPE_UINT32 0x0023 ok 66 - FFI_PL_TYPE_UINT64 0x0024 ok 67 - FFI_PL_BASE_FLOAT 0x0040 ok 68 - FFI_PL_TYPE_FLOAT 0x0043 ok 69 - FFI_PL_TYPE_DOUBLE 0x0044 ok 70 - FFI_PL_TYPE_LONG_DOUBLE 0x0045 ok 71 - FFI_PL_BASE_COMPLEX 0x0080 ok 72 - FFI_PL_TYPE_COMPLEX_FLOAT 0x0084 ok 73 - FFI_PL_TYPE_COMPLEX_DOUBLE 0x0085 ok 74 - FFI_PL_BASE_OPAQUE 0x0100 ok 75 - FFI_PL_TYPE_OPAQUE 0x0104 ok 76 - FFI_PL_BASE_STRING 0x0200 ok 77 - FFI_PL_TYPE_STRING 0x0304 ok 78 - FFI_PL_BASE_CLOSURE 0x0400 ok 79 - FFI_PL_TYPE_CLOSURE 0x0504 ok 80 - FFI_PL_BASE_RECORD 0x0800 ok 81 - FFI_PL_TYPE_RECORD 0x0904 ok 82 - FFI_PL_BASE_MASK 0x0ff8 ok 83 - FFI_PL_SHAPE_POINTER 0x1000 ok 84 - FFI_PL_SHAPE_ARRAY 0x2000 ok 85 - FFI_PL_SHAPE_CUSTOM_PERL 0x4000 ok 86 - FFI_PL_SHAPE_CUSTOM_MASK 0xf000 1..86 ok 1 - basic 1..1 ok t/ffi_platypus_lang.t .................... # Subtest: Foo constructor ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_lang.t line 14. 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 1 - Foo constructor # Subtest: Foo attribute ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_lang.t line 34. 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 # Subtest: MyLang::Roger ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_lang.t line 53. ok 2 - sizeof foo_t = 4 1..2 ok 3 - MyLang::Roger 1..3 ok t/ffi_platypus_lang_asm.t ................ # Subtest: ASM ok 1 - int is not an okay type # unknown type: int at t/ffi_platypus_lang_asm.t line 13. ok 2 - foo_t is not an okay type # unknown type: foo_t at t/ffi_platypus_lang_asm.t line 16. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 ok 1 - ASM 1..1 ok t/ffi_platypus_lang_c.t .................. # Subtest: C ok 1 - int is an okay type ok 2 - foo_t is not an okay type # unknown type: foo_t at t/ffi_platypus_lang_c.t line 15. ok 3 - sint16 is an okay type ok 4 - unable to find unmangled name 1..4 ok 1 - C 1..1 ok t/ffi_platypus_lang_win32.t .............. # 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 # 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 sint32 # bool uint8 # char sint8 # dev_t sint32 # double double # double complex longdouble # float float # float complex double # gid_t uint32 # ino_t uint64 # int sint32 # int16_t sint16 # int32_t sint32 # int64_t sint64 # int8_t sint8 # intptr_t sint64 # long sint64 # long double longdouble # long double complex longdouble # long long sint64 # mode_t uint16 # nlink_t uint16 # off_t sint64 # ptrdiff_t sint64 # 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 # 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 sint32 ok 1 - good 1..1 ok t/ffi_platypus_memory.t .................. # lib=undef # lib=/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-0.88-kDNced/blib/lib/auto/share/dist/FFI-Platypus/lib/libplfill.dylib # Subtest: malloc calloc memset free ok 1 - malloc returns 140412159837024 ok 2 - calloc returns 140412159798528 ok 3 - string = yyyyxxxx ok 4 - free $ptr1 ok 5 - free $ptr2 1..5 ok 1 - malloc calloc memset free # Subtest: 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 2 - memcpy # Subtest: realloc ok 1 - realloc call ptr = 140412159839776 ok 2 - initial data copied ok 3 - realloc call ptr = 140412168581632 (2) ok 4 - after realloc data there ok 5 - final free 1..5 ok 3 - realloc # Subtest: strdup # strdup implementation = libc ok 1 - string = this and ok 2 - free $ptr1 1..2 ok 4 - strdup # Subtest: strndup # strndup implementation = libc # Subtest: full string ok 1 1..1 ok 1 - full string # Subtest: partial string ok 1 1..1 ok 2 - partial string 1..2 ok 5 - strndup 1..5 ok t/ffi_platypus_record.t .................. # Subtest: integer accessor ok 1 - An object of class 'Foo1' 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 # {'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 1 - integer accessor # Subtest: values match in C ok 1 - An object of class 'Color' isa 'Color' ok 2 - color.get_red = 50 ok 3 - color.get_green = 100 ok 4 - color.get_blue = 150 1..4 ok 2 - values match in C # Subtest: complex alignment ok 1 - An object of class 'Foo2' 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 = 140700889240256 ok 13 - opaque = 140700889240256 ok 14 - get_opaque = undef ok 15 - opaque = undef 1..15 ok 3 - complex alignment # Subtest: same name ok 1 - two members of the same name not allowed # accessor/method foo already exists at t/ffi_platypus_record.t line 187. 1..1 ok 4 - same name # Subtest: array alignment ok 1 - An object of class 'Foo4' isa 'Foo4' # Subtest: 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 2 - unsigned 8 integer # Subtest: 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 3 - signed 8 integer # Subtest: 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 4 - unsigned 16 integer # Subtest: 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 5 - signed 16 integer # Subtest: 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 6 - unsigned 32 integer # Subtest: 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 7 - signed 32 integer # Subtest: 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 8 - unsigned 64 integer # Subtest: 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 9 - signed 64 integer # Subtest: 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 10 - float # Subtest: 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 11 - double # Subtest: opaque ok 1 - opaque = 140700889229616,undef,140700889281168 ok 2 - opaque = 140700889229616,140700889229616,140700889281168 ok 3 - opaque = undef,140700889229616,140700889281168 ok 4 ok 5 ok 6 1..6 ok 12 - opaque ok 13 - align = 8 ok 14 - align is positive 1..14 ok 5 - array alignment # Subtest: string ro ok 1 - An object of class 'Foo5' 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 341. ok 7 - foo.value = undef ok 8 - foo.get_value = undef 1..8 ok 6 - string ro # Subtest: fixed string ok 1 - An object of class 'Foo6' 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 7 - fixed string # Subtest: string rw ok 1 - An object of class 'Foo7' 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 8 - string rw 1..8 ok t/ffi_platypus_record_tiearray.t ......... ok 1 - An object of class 'Foo' 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', # 'fastcall' => '4', # 'pascal' => '6', # 'register' => '7', # 'stdcall' => '5', # 'sysv' => '1', # 'thiscall' => '3', # 'unix64' => '2' # }, # 'alien' => { # 'class' => 'Alien::FFI', # 'mode' => 'already-installed' # }, # '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' # }, # 'ccflags' => '-I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include', # 'config_dlext' => [ # 'bundle', # 'so', # 'dylib' # ], # 'diag' => {}, # 'extra_compiler_flags' => [ # '-I/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib/libffi-3.2.1/include' # ], # 'extra_linker_flags' => [ # '-L/Users/fly2400/cpanfly-5.24/var/megalib/auto/share/dist/Alien-FFI/lib', # '-lffi' # ], # 'probe' => { # 'abi' => 1, # 'alloca' => 1, # 'bigendian' => 0, # 'bigendian64' => 0, # 'longdouble' => 1 # }, # 'test-key' => 'test-value', # 'type_map' => { # 'blkcnt_t' => 'sint64', # 'blksize_t' => 'sint32', # 'bool' => 'uint8', # 'char' => 'sint8', # 'dev_t' => 'sint32', # 'double' => 'double', # 'double complex' => 'longdouble', # 'float' => 'float', # 'float complex' => 'double', # 'gid_t' => 'uint32', # 'ino_t' => 'uint64', # 'int' => 'sint32', # 'int16_t' => 'sint16', # 'int32_t' => 'sint32', # 'int64_t' => 'sint64', # 'int8_t' => 'sint8', # 'intptr_t' => 'sint64', # 'long' => 'sint64', # 'long double' => 'longdouble', # 'long double complex' => 'longdouble', # 'long long' => 'sint64', # 'mode_t' => 'uint16', # 'nlink_t' => 'uint16', # 'off_t' => 'sint64', # 'ptrdiff_t' => 'sint64', # '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', # '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' => 'sint32' # } # } # 0 ok 1 ok 2 1..2 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 ........ # Subtest: fixed length input # Subtest: 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 1 - with default # Subtest: 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 ok 2 - with default 1..2 ok 1 - fixed length input # Subtest: 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 2 - variable length input # Subtest: 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 3 - fixed length return # Subtest: null terminated return ok 1 - returns null ok 2 ok 3 ok 4 1..4 ok 4 - null terminated return 1..4 ok t/ffi_platypus_type_stringpointer.t ...... # Subtest: arg pass in ok 1 - not null ok 2 - \undef is null ok 3 - undef is null 1..3 ok 1 - arg pass in # Subtest: arg pass out ok 1 - not null string = hi there ok 2 - not null string = and another 1..2 ok 2 - arg pass out # Subtest: return value ok 1 - not null string = once more onto ok 2 - \null ok 3 - null 1..3 ok 3 - return value 1..3 ok t/ffi_probe.t ............................ # Subtest: check_header ok 1 - An object of class 'FFI::Probe' isa 'FFI::Probe' # PR header."stdio.h"=1 # PR header."bogus/does/not/exist.h"=0 ok 2 ok 3 # ==probe.log== # code: #include # CC ffi-probe-h28ogA/ffi_build_PFC00X.c # header."stdio.h"=1 # code: #include # code: #include # +gcc -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -c ffi-probe-h28ogA/ffi_build_R77h_5.c -o ffi-probe-h28ogA/_build/ffi_build_R77h_5.c.o # ffi-probe-h28ogA/ffi_build_R77h_5.c:2:10: fatal error: 'bogus/does/not/exist.h' file not found # #include # ^ # 1 error generated. # 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 1 - check_header # Subtest: 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] # CC ffi-probe-9OhvnO/ffi_build_PtHmr7.c # LD ffi-probe-9OhvnO/libeval1.dylib # [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] # CC ffi-probe-9OhvnO/ffi_build_nfoRrb.c # LD ffi-probe-9OhvnO/libeval2.dylib # [stdout] # eval1=<<>> # [stderr] # # rv = 0 # foo.bar.string=hello world 7 # code: #include # CC ffi-probe-9OhvnO/ffi_build_Wa6tyl.c # 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] # CC ffi-probe-9OhvnO/ffi_build_WNgT5U.c # LD ffi-probe-9OhvnO/libeval4.dylib # [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] # CC ffi-probe-9OhvnO/ffi_build_wGO_LH.c # LD ffi-probe-9OhvnO/libeval5.dylib # [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] # CC ffi-probe-9OhvnO/ffi_build_Yelrqy.c # LD ffi-probe-9OhvnO/libeval6.dylib # [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 ok 2 - check_eval 1..2 ok t/ffi_probe_runner.t ..................... # Subtest: basic # exe=blib/lib/auto/share/dist/FFI-Platypus/probe/bin/dlrun ok 1 - An object of class 'FFI::Probe::Runner' isa 'FFI::Probe::Runner' ok 2 ok 3 1..3 ok 1 - basic # Subtest: run not pass # CC corpus/ffi_probe_runner/foo.c # LD test-probe-cYlgdR/libfrooble1.dylib # lib=test-probe-cYlgdR/libfrooble1.dylib ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 1..9 ok 2 - run not pass # Subtest: run pass # CC corpus/ffi_probe_runner/bar.c # LD test-probe-UykWUx/libfrooble2.dylib # lib=test-probe-UykWUx/libfrooble2.dylib ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 1..9 ok 3 - run pass 1..3 ok t/ffi_probe_runner_builder.t ............. # dir = test-probe-tDRnOU # libs=-ldl # libs= # libs=-lpthread # libs=-lm # libs=-lutil # libs=-lc ok 1 - An object of class 'FFI::Probe::Runner::Builder' isa 'FFI::Probe::Runner::Builder' # +gcc -fno-common -DPERL_DARWIN -no-cpp-precomp -mmacosx-version-min=10.9 -arch x86_64 -DUSE_SITECUSTOMIZE -DPERL_RELOCATABLE_INCPUSH -fno-strict-aliasing -pipe -fstack-protector -DPERL_USE_SAFE_PUTENV -O3 -c -o test-probe-tDRnOU/src/dlrun.o test-probe-tDRnOU/src/dlrun.c # +gcc -mmacosx-version-min=10.9 -Wl,-search_paths_first -arch x86_64 -fstack-protector -o test-probe-tDRnOU/bin/dlrun test-probe-tDRnOU/src/dlrun.o -ldl # +test-probe-tDRnOU/bin/dlrun verify self # dlrun verify self ok ok 2 - no error ok 3 - executable exists # exe = test-probe-tDRnOU/bin/dlrun # + test-probe-tDRnOU/bin/dlrun verify self # dlrun verify self ok ok 4 - verify ok 1..4 ok t/ffi_probe_runner_result.t .............. ok 1 - An object of class 'FFI::Probe::Runner::Result' isa 'FFI::Probe::Runner::Result' ok 2 ok 3 - An object of class 'FFI::Probe::Runner::Result' isa 'FFI::Probe::Runner::Result' ok 4 ok 5 ok 6 - An object of class 'FFI::Probe::Runner::Result' isa 'FFI::Probe::Runner::Result' ok 7 ok 8 1..8 ok Can't locate object method "tid" via package "threads" at /Users/fly2400/cpanfly-5.24/var/megalib/Test2/Util.pm line 142. BEGIN failed--compilation aborted at t/forks.t line 4. Undefined subroutine &threads::_END called at (eval 66) line 1. END failed--call queue aborted at t/forks.t line 4. Can't locate object method "tid" via package "threads" at /Users/fly2400/cpanfly-5.24/var/megalib/Test2/Util.pm line 142. END failed--call queue aborted at t/forks.t line 4. t/forks.t ................................ Dubious, test returned 22 (wstat 5632, 0x1600) No subtests run t/gh117.t ................................ # value64 = 1099511627775 ok 1 1..1 ok t/threads.t .............................. ok 1 - works in a thread ok 2 - works in main thread 1..2 ok t/type_complex_double.t .................. skipped: Test requires support for double complex t/type_complex_float.t ................... skipped: Test requires support for float complex t/type_double.t .......................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_float.t ........................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(1.25,2.5) = 4 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 2.25 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_longdouble.t ...................... # Subtest: with Math::LongDouble # Subtest: scalar ok 1 - An object of class 'Math::LongDouble' isa 'Math::LongDouble' ok 2 - add(1.5,2.5) = 4.0 1..2 ok 1 - scalar # Subtest: pointer ok 1 ok 2 ok 3 ok 4 ok 5 - An object of class 'Math::LongDouble' isa 'Math::LongDouble' ok 6 1..6 ok 2 - pointer # Subtest: array fixed ok 1 # [1.0e+00,2.0e+00,3.0e+00] ok 2 ok 3 ok 4 1..4 ok 3 - array fixed # Subtest: array var ok 1 # [1.0e+00,2.0e+00,3.0e+00] ok 2 ok 3 ok 4 1..4 ok 4 - array var # Subtest: array return # [1.0e+00,2.0e+00,3.0e+00] ok 1 ok 2 ok 3 1..3 ok 5 - array return 1..5 ok 1 - with Math::LongDouble # Subtest: without Math::LongDouble # You have Math::LongDouble, but for this test we are going to turn it off # Subtest: scalar ok 1 - add(1.5,2.5) = 4 1..1 ok 1 - scalar # Subtest: pointer ok 1 ok 2 ok 3 ok 4 ok 5 1..5 ok 2 - pointer # Subtest: array fixed ok 1 # [1,2,3] ok 2 ok 3 ok 4 1..4 ok 3 - array fixed # Subtest: array var ok 1 # [1,2,3] ok 2 ok 3 ok 4 1..4 ok 4 - array var # Subtest: array return # [1,2,3] ok 1 ok 2 ok 3 1..3 ok 5 - array return 1..5 ok 2 - without Math::LongDouble 1..2 ok t/type_opaque.t .......................... ok 1 - null = undef ok 2 - is_null(undef) == 1 ok 3 - is_null() == 1 ok 4 - is_null($ptr) = 0 ok 5 - setp(140359174967104); getp() = 140359174967104 ok 6 - get($tmp); tmp = 140359174967104 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(\140359195979360) = 140359195979360 ok 17 - p2pp(undef) = \undef ok 18 - pp2p(140359195981744) = \140359195981744 ok 19 - call_closure(undef) = undef ok 20 - save = undef ok 21 - call_closure(\140359195981248) = 140359195981248 ok 22 - save = 140359195981248 # Subtest: custom type input ok 1 ok 2 1..2 ok 23 - custom type input # Subtest: custom type output ok 1 ok 2 1..2 ok 24 - custom type output 1..24 ok t/type_record.t .......................... # record size = 20 # Subtest: not a reference # Subtest: 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 1 - in # Subtest: out # packed size = 20 ok 1 - get_value($packed) = 47 ok 2 - get_value($packed) = platypus ok 3 - null() = undef 1..3 ok 2 - out 1..2 ok 1 - not a reference # Subtest: is a reference # Subtest: 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 1 - in # Subtest: out # packed size = 36 ok 1 - An object of class 'My::FooRecord' 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 ok 2 - out 1..2 ok 2 - is a reference # Subtest: 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 126. ok 8 ok 9 ok 10 ok 11 # error = record is read-only at t/type_record.t line 135. ok 12 ok 13 # error = record is read-only at t/type_record.t line 142. ok 14 ok 15 ok 16 # error = record is read-only at t/type_record.t line 151. ok 17 ok 18 ok 19 # error = record is read-only at t/type_record.t line 160. ok 20 ok 21 # error = record is read-only at t/type_record.t line 167. ok 22 ok 23 # error = record is read-only at t/type_record.t line 175. ok 24 ok 25 ok 26 # error = record is read-only at t/type_record.t line 184. ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 1..32 ok 3 - closure 1..3 ok t/type_sint16.t .......................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_sint32.t .......................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_sint64.t .......................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_sint8.t ........................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(-2,-1) = -5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(-2,-1) = -6 1..2 ok 18 - custom type output ok 19 - closure_pointer_is_null() = 1 1..19 ok t/type_string.t .......................... 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 # Subtest: fixed length input # Subtest: 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 ok 1 - with default 1..1 ok 26 - fixed length input # Subtest: 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 27 - variable length input # Subtest: 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 28 - fixed length return # Subtest: null terminated return ok 1 - returns null ok 2 ok 3 ok 4 1..4 ok 29 - null terminated return # Subtest: argument update ok 1 1..1 ok 30 - argument update # Subtest: write to string ok 1 1..1 ok 31 - write to string 1..31 ok t/type_uint16.t .......................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(2,1) = 5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 4 1..2 ok 18 - custom type output # Subtest: custom type post ok 1 ok 2 - custom_add3(1,2) = 3 1..2 ok 19 - custom type post ok 20 - closure_pointer_is_null() = 1 1..20 ok t/type_uint32.t .......................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(2,1) = 5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 4 1..2 ok 18 - custom type output # Subtest: custom type post ok 1 ok 2 - custom_add3(1,2) = 3 1..2 ok 19 - custom type post ok 20 - closure_pointer_is_null() = 1 1..20 ok t/type_uint64.t .......................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(2,1) = 5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 4 1..2 ok 18 - custom type output # Subtest: custom type post ok 1 ok 2 - custom_add3(1,2) = 3 1..2 ok 19 - custom type post ok 20 - closure_pointer_is_null() = 1 1..20 ok t/type_uint8.t ........................... 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 # Subtest: custom type input ok 1 ok 2 - custom_add(2,1) = 5 1..2 ok 17 - custom type input # Subtest: custom type output ok 1 ok 2 - custom_add2(1,1) = 4 1..2 ok 18 - custom type output # Subtest: custom type post ok 1 ok 2 - custom_add3(1,2) = 3 1..2 ok 19 - custom type post ok 20 - closure_pointer_is_null() = 1 1..20 ok Test Summary Report ------------------- t/forks.t (Wstat: 5632 Tests: 0 Failed: 0) Non-zero exit status: 22 Parse errors: No plan found in TAP output Files=54, Tests=477, 10 wallclock secs ( 0.33 usr 0.11 sys + 8.41 cusr 1.68 csys = 10.53 CPU) Result: FAIL Failed 1/54 test programs. 0/477 subtests failed. make: *** [test_dynamic] Error 255 PLICEASE/FFI-Platypus-0.88.tar.gz make test TEST_VERBOSE=1 -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports PLICEASE/FFI-Platypus-0.88.tar.gz PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz Has already been unwrapped into directory /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz Has already been prepared Running Build for P/PL/PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib to PERL5LIB for 'make' Warning: Prerequisite 'FFI::Platypus => 0.88' for 'PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz' failed when processing 'PLICEASE/FFI-Platypus-0.88.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited. >>> ./Build Building FFI-Platypus-Lang-Rust PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz ./Build -- OK Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib to PERL5LIB for 'test' Running Build test >>> ./Build test verbose=1 libtest directory is included, but not compiler is available some tests may fail if they depend on libtest # # # # ACTIVEPERL_CONFIG_DISABLE=1 # HARNESS_ACTIVE=1 # HARNESS_IS_VERBOSE=1 # HARNESS_VERSION=3.36 # PERL5LIB=/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B/blib/lib:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B/blib/arch:lib:inc:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib:/Users/fly2400/cpanfly-5.24/var/megalib:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch:/Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib:/Users/fly2400/cpanfly-5.24/var/megalib # PERL5OPT= # PERL5_CPANPLUS_IS_RUNNING=72844 # PERL5_CPAN_IS_RUNNING=72844 # PERL5_CPAN_IS_RUNNING_IN_RECURSION=71944,72844 # PERL_DL_NONLAZY=1 # PERL_MM_USE_DEFAULT=1 # SHELL=/bin/sh # # # # PERL5LIB path # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B/blib/lib # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B/blib/arch # lib # inc # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib # /Users/fly2400/cpanfly-5.24/var/megalib # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/arch # /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Module-Build-FFI-0.49-va9PQv/blib/lib # /Users/fly2400/cpanfly-5.24/var/megalib # # # # perl v5.24.0 # Alien::Base 0.042 # Alien::FFI 0.23 # Config::AutoConf 0.317 # ExtUtils::CBuilder 0.280225 # FFI::CheckLib 0.24 # JSON::PP 4.03 # Module::Build 0.4229 # PkgConfig 0.23026 # Test::More 1.302164 # FFI::Platypus 0.42 # Module::Which 0.05 # # # t/00_diag.t ................. 1..1 ok 1 - okay ok unknown type: ssize_t at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B/blib/lib/FFI/Platypus/Lang/Rust.pm line 123. t/02_types.t ................ Dubious, test returned 255 (wstat 65280, 0xff00) No subtests run t/example.t ................. skipped: Test requirest a rust compiler # Failed test 'i32 is an okay type' # at t/ffi_platypus_lang_rust.t line 31. # got: 'unknown type: ssize_t at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B/blib/lib/FFI/Platypus/Lang/Rust.pm line 123. # ' # expected: '' # Failed test 'sint16 is an okay type' # at t/ffi_platypus_lang_rust.t line 33. # got: 'unknown type: ssize_t at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B/blib/lib/FFI/Platypus/Lang/Rust.pm line 123. # ' # expected: '' # Looks like you failed 2 tests of 3. # Failed test 'types test' # at t/ffi_platypus_lang_rust.t line 38. unknown type: ssize_t at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B/blib/lib/FFI/Platypus/Lang/Rust.pm line 123. # Tests were run but no plan was declared and done_testing() was not seen. # Looks like your test exited with 255 just after 2. t/ffi_platypus_lang_rust.t .. # Subtest: attach 1..0 # SKIP test requires a rust compiler ok 1 # skip test requires a rust compiler # Subtest: types test ok 1 - int is not an okay type # unknown type: ssize_t at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/FFI-Platypus-Lang-Rust-0.06-Yntn9B/blib/lib/FFI/Platypus/Lang/Rust.pm line 123. not ok 2 - i32 is an okay type not ok 3 - sint16 is an okay type 1..3 not ok 2 - types test Dubious, test returned 255 (wstat 65280, 0xff00) Failed 1/2 subtests (less 1 skipped subtest: 0 okay) Test Summary Report ------------------- t/02_types.t (Wstat: 65280 Tests: 0 Failed: 0) Non-zero exit status: 255 Parse errors: No plan found in TAP output t/ffi_platypus_lang_rust.t (Wstat: 65280 Tests: 2 Failed: 1) Failed test: 2 Non-zero exit status: 255 Parse errors: No plan found in TAP output Files=4, Tests=3, 1 wallclock secs ( 0.02 usr 0.01 sys + 0.56 cusr 0.09 csys = 0.68 CPU) Result: FAIL Failed 2/4 test programs. 1/3 subtests failed. PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz ./Build test verbose=1 -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports PLICEASE/FFI-Platypus-Lang-Rust-0.06.tar.gz Finished 2019-06-21T02:02:31