http://qs321.pair.com?node_id=1208723

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Dear monks

I am trying to install on a strawberry perl 5.22.3_64 the module Win32::Unicode Anyone an idea what is wrong? Which alternative do I have to this module?

Running install for module 'Win32::Unicode' CPAN: Digest::SHA loaded ok (v5.96) CPAN: Compress::Zlib loaded ok (v2.07) Checksum for C:\berrybrew\5.22.3_64\cpan\sources\authors\id\X\XA\XAICR +ON\Win32-Unicode-0.38.tar.gz ok CPAN: Archive::Tar loaded ok (v2.24) CPAN: YAML::XS loaded ok (v0.63) CPAN: CPAN::Meta::Requirements loaded ok (v2.140) CPAN: Parse::CPAN::Meta loaded ok (v2.150010) CPAN: CPAN::Meta loaded ok (v2.150010) CPAN: Module::CoreList loaded ok (v5.20170114_22) Configuring X/XA/XAICRON/Win32-Unicode-0.38.tar.gz with Makefile.PL Writing ppport.h Checking if your kit is complete... Looks good Generating a dmake-style Makefile Writing Makefile for Win32::Unicode Writing MYMETA.yml and MYMETA.json XAICRON/Win32-Unicode-0.38.tar.gz C:\berrybrew\5.22.3_64\perl\bin\perl.exe Makefile.PL -- OK Running make for X/XA/XAICRON/Win32-Unicode-0.38.tar.gz cp lib/Win32/Unicode/Process.pm blib\lib\Win32\Unicode\Process.pm cp lib/Win32/Unicode/XS.pm blib\lib\Win32\Unicode\XS.pm cp lib/Win32/Unicode/Util.pm blib\lib\Win32\Unicode\Util.pm cp lib/Win32/Unicode/Console.pm blib\lib\Win32\Unicode\Console.pm cp lib/Win32/Unicode/Dir.pm blib\lib\Win32\Unicode\Dir.pm cp lib/Win32/Unicode/Error.pm blib\lib\Win32\Unicode\Error.pm cp lib/Win32/Unicode.pm blib\lib\Win32\Unicode.pm cp lib/Win32/Unicode/Native.pm blib\lib\Win32\Unicode\Native.pm cp lib/Win32/Unicode/Constant.pm blib\lib\Win32\Unicode\Constant.pm cp lib/Win32/Unicode/File.pm blib\lib\Win32\Unicode\File.pm Running Mkbootstrap for Unicode () "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e chmod -- 644 "Unicode.bs" "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command +::MM -e cp_nonempty -- Unicode.bs blib\arch\auto\Win32\Unicode\Unicod +e.bs 644 "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" "C:\berrybrew\5.22. +3_64\perl\lib\ExtUtils\xsubpp" -typemap C:\berrybrew\5.22.3_64\perl\ +lib\ExtUtils\typemap xs\Console.xs > xs\Console.xsc "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e mv -- xs\Console.xsc xs\Console.c gcc -c "-I." "-I." -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_ +TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv +-fno-strict-aliasing -mms-bitfields -Wall -W -Wno-comment -s -O2 + -DVERSION=\"0.38\" -DXS_VERSION=\"0.38\" -o xs\Console.o "-IC:\ +berrybrew\5.22.3_64\perl\lib\CORE" -DUSE_PPPORT xs\Console.c "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" "C:\berrybrew\5.22. +3_64\perl\lib\ExtUtils\xsubpp" -typemap C:\berrybrew\5.22.3_64\perl\ +lib\ExtUtils\typemap xs\Dir.xs > xs\Dir.xsc "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e mv -- xs\Dir.xsc xs\Dir.c gcc -c "-I." "-I." -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_ +TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv +-fno-strict-aliasing -mms-bitfields -Wall -W -Wno-comment -s -O2 + -DVERSION=\"0.38\" -DXS_VERSION=\"0.38\" -o xs\Dir.o "-IC:\berr +ybrew\5.22.3_64\perl\lib\CORE" -DUSE_PPPORT xs\Dir.c In file included from C:\berrybrew\5.22.3_64\perl\lib\CORE/perl.h:2690 +:0, from xs\\Dir.xs:3: xs\\Dir.xs: In function 'XS_Win32__Unicode__Dir_find_first_file': xs\\Dir.xs:52:41: warning: cast from pointer to integer of different s +ize [-Wpointer-to-int-cast] hv_stores(hv, "handle", newSVuv((DWORD)handle)); ^ C:\berrybrew\5.22.3_64\perl\lib\CORE/handy.h:409:43: note: in definiti +on of macro 'hv_stores' (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), 0)) ^ xs\\Dir.xs:52:33: note: in expansion of macro 'newSVuv' hv_stores(hv, "handle", newSVuv((DWORD)handle)); ^ xs\\Dir.xs:53:41: warning: passing argument 2 of 'Perl_newSVpvn' from +incompatible pointer type hv_stores(hv, "first", newSVpvn(info.cFileName, wcslen(info.c +FileName) * sizeof(WCHAR))); ^ C:\berrybrew\5.22.3_64\perl\lib\CORE/handy.h:409:43: note: in definiti +on of macro 'hv_stores' (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), 0)) ^ xs\\Dir.xs:53:32: note: in expansion of macro 'newSVpvn' hv_stores(hv, "first", newSVpvn(info.cFileName, wcslen(info.c +FileName) * sizeof(WCHAR))); ^ In file included from C:\berrybrew\5.22.3_64\perl\lib\CORE/perl.h:5515 +:0, from xs\\Dir.xs:3: C:\berrybrew\5.22.3_64\perl\lib\CORE/proto.h:3086:19: note: expected ' +const char * const' but argument is of type 'WCHAR *' PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char *const s, const STRL +EN len) ^ "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" "C:\berrybrew\5.22. +3_64\perl\lib\ExtUtils\xsubpp" -typemap C:\berrybrew\5.22.3_64\perl\ +lib\ExtUtils\typemap xs\Error.xs > xs\Error.xsc "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e mv -- xs\Error.xsc xs\Error.c gcc -c "-I." "-I." -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_ +TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv +-fno-strict-aliasing -mms-bitfields -Wall -W -Wno-comment -s -O2 + -DVERSION=\"0.38\" -DXS_VERSION=\"0.38\" -o xs\Error.o "-IC:\be +rrybrew\5.22.3_64\perl\lib\CORE" -DUSE_PPPORT xs\Error.c In file included from C:\berrybrew\5.22.3_64\perl\lib\CORE/perl.h:5550 +:0, from xs\\Error.xs:3: xs\\Error.xs: In function 'XS_Win32__Unicode__Error_foramt_message': xs\\Error.xs:45:27: warning: passing argument 2 of 'Perl_newSVpvn' fro +m incompatible pointer type RETVAL = newSVpvn(buff, wcslen(buff) * sizeof(WCHAR)); ^ C:\berrybrew\5.22.3_64\perl\lib\CORE/embed.h:405:44: note: in definiti +on of macro 'newSVpvn' #define newSVpvn(a,b) Perl_newSVpvn(aTHX_ a,b) ^ In file included from C:\berrybrew\5.22.3_64\perl\lib\CORE/perl.h:5515 +:0, from xs\\Error.xs:3: C:\berrybrew\5.22.3_64\perl\lib\CORE/proto.h:3086:19: note: expected ' +const char * const' but argument is of type 'WCHAR *' PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char *const s, const STRL +EN len) ^ "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" "C:\berrybrew\5.22. +3_64\perl\lib\ExtUtils\xsubpp" -typemap C:\berrybrew\5.22.3_64\perl\ +lib\ExtUtils\typemap xs\File.xs > xs\File.xsc "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e mv -- xs\File.xsc xs\File.c gcc -c "-I." "-I." -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_ +TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv +-fno-strict-aliasing -mms-bitfields -Wall -W -Wno-comment -s -O2 + -DVERSION=\"0.38\" -DXS_VERSION=\"0.38\" -o xs\File.o "-IC:\ber +rybrew\5.22.3_64\perl\lib\CORE" -DUSE_PPPORT xs\File.c "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" "C:\berrybrew\5.22. +3_64\perl\lib\ExtUtils\xsubpp" -typemap C:\berrybrew\5.22.3_64\perl\ +lib\ExtUtils\typemap xs\Native.xs > xs\Native.xsc "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e mv -- xs\Native.xsc xs\Native.c gcc -c "-I." "-I." -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_ +TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv +-fno-strict-aliasing -mms-bitfields -Wall -W -Wno-comment -s -O2 + -DVERSION=\"0.38\" -DXS_VERSION=\"0.38\" -o xs\Native.o "-IC:\b +errybrew\5.22.3_64\perl\lib\CORE" -DUSE_PPPORT xs\Native.c "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" "C:\berrybrew\5.22. +3_64\perl\lib\ExtUtils\xsubpp" -typemap C:\berrybrew\5.22.3_64\perl\ +lib\ExtUtils\typemap xs\Process.xs > xs\Process.xsc "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e mv -- xs\Process.xsc xs\Process.c gcc -c "-I." "-I." -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_ +TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv +-fno-strict-aliasing -mms-bitfields -Wall -W -Wno-comment -s -O2 + -DVERSION=\"0.38\" -DXS_VERSION=\"0.38\" -o xs\Process.o "-IC:\ +berrybrew\5.22.3_64\perl\lib\CORE" -DUSE_PPPORT xs\Process.c In file included from C:\berrybrew\5.22.3_64\perl\lib\CORE/perl.h:2690 +:0, from xs\\Process.xs:3: xs\\Process.xs: In function 'XS_Win32__Unicode__Process_create_process +': xs\\Process.xs:54:48: warning: cast from pointer to integer of differe +nt size [-Wpointer-to-int-cast] hv_stores(hv, "thread_handle", newSViv((long)pi.hThread)); ^ C:\berrybrew\5.22.3_64\perl\lib\CORE/handy.h:409:43: note: in definiti +on of macro 'hv_stores' (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), 0)) ^ xs\\Process.xs:54:40: note: in expansion of macro 'newSViv' hv_stores(hv, "thread_handle", newSViv((long)pi.hThread)); ^ xs\\Process.xs:55:49: warning: cast from pointer to integer of differe +nt size [-Wpointer-to-int-cast] hv_stores(hv, "process_handle", newSViv((long)pi.hProcess)); ^ C:\berrybrew\5.22.3_64\perl\lib\CORE/handy.h:409:43: note: in definiti +on of macro 'hv_stores' (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), 0)) ^ xs\\Process.xs:55:41: note: in expansion of macro 'newSViv' hv_stores(hv, "process_handle", newSViv((long)pi.hProcess)); ^ "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" "C:\berrybrew\5.22. +3_64\perl\lib\ExtUtils\xsubpp" -typemap C:\berrybrew\5.22.3_64\perl\ +lib\ExtUtils\typemap xs\Util.xs > xs\Util.xsc "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e mv -- xs\Util.xsc xs\Util.c gcc -c "-I." "-I." -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_ +TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv +-fno-strict-aliasing -mms-bitfields -Wall -W -Wno-comment -s -O2 + -DVERSION=\"0.38\" -DXS_VERSION=\"0.38\" -o xs\Util.o "-IC:\ber +rybrew\5.22.3_64\perl\lib\CORE" -DUSE_PPPORT xs\Util.c "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" "C:\berrybrew\5.22. +3_64\perl\lib\ExtUtils\xsubpp" -typemap C:\berrybrew\5.22.3_64\perl\ +lib\ExtUtils\typemap xs\XS.xs > xs\XS.xsc Please specify prototyping behavior for XS.xs (see perlxs manual) "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e mv -- xs\XS.xsc xs\XS.c gcc -c "-I." "-I." -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_ +TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv +-fno-strict-aliasing -mms-bitfields -Wall -W -Wno-comment -s -O2 + -DVERSION=\"0.38\" -DXS_VERSION=\"0.38\" -o xs\XS.o "-IC:\berry +brew\5.22.3_64\perl\lib\CORE" -DUSE_PPPORT xs\XS.c "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Mksymli +sts \ -e "Mksymlists('NAME'=>\"Win32::Unicode\", 'DLBASE' => 'Unicode', + 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' = +> []);" g++.exe Unicode.def -o blib\arch\auto\Win32\Unicode\Unicode.xs.dll -md +ll -s -L"C:\berrybrew\5.22.3_64\perl\lib\CORE" -L"C:\berrybrew\5.22.3 +_64\c\lib" xs/Console.o xs/Dir.o xs/Error.o xs/File. +o xs/Native.o xs/Process.o xs/Util.o xs/XS.o "C: +\berrybrew\5.22.3_64\perl\lib\CORE\libperl522.a" -lmoldname -lkernel3 +2 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 + -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc +32 -lodbccp32 -lcomctl32 -Wl,--enable-auto-image-base "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command + -e chmod -- 755 blib\arch\auto\Win32\Unicode\Unicode.xs.dll XAICRON/Win32-Unicode-0.38.tar.gz C:\berrybrew\5.22.3_64\c\bin\dmake.exe -- OK Running make test "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command +::MM -e cp_nonempty -- Unicode.bs blib\arch\auto\Win32\Unicode\Unicod +e.bs 644 "C:\berrybrew\5.22.3_64\perl\bin\perl.exe" "-MExtUtils::Command::MM" " +-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0 +, 'inc', 'blib\lib', 'blib\arch')" t/*.t t/00_compile.t ........... ok t/01_load.t .............. ok t/02_export.t ............ ok t/03_encode.t ............ ok t/04_print.t ............. t/04_print.t ............. 1/? # Failed test at t/04_print.t line 14 +. # STDOUT is: # I ├ó┬Ö┬Ñ Perl # not: # I ÔÖÑ Perl # as expected # Failed test at t/04_print.t line 15. # STDOUT is: # [ I ├ó┬Ö┬Ñ Perl] # not: # [ I ÔÖÑ Perl] # as expected # Failed test at t/04_print.t line 16. # STDOUT is: # I ├ó┬Ö┬Ñ Perl # # not: # I ÔÖÑ Perl # # as expected # Looks like you failed 3 tests of 13. t/04_print.t ............. Dubious, test returned 3 (wstat 768, 0x300) Failed 3/13 subtests t/05_write.t ............. ok t/06_dir_functions.t ..... ok t/06_dir_methods.t ....... ok t/06_dir_tree.t .......... ok t/07_file.t .............. ok t/08_error.t ............. ok t/09_normalize.t ......... ok t/10_read.t .............. ok t/10_read_with_offset.t .. ok t/11_write.t ............. ok t/12_syswrite.t .......... ok t/13_system.t ............ ok t/15_flock.t ............. ok t/15_flock_win32.t ....... ok t/16_io_handle_like.t .... ok t/17_slurp.t ............. ok t/30_native.t ............ ok t/31_native_import.t ..... ok t/32_native_file.t ....... ok t/33_native_dir.t ........ ok t/34_args.t .............. ok t/50_util.t .............. ok Test Summary Report ------------------- t/04_print.t (Wstat: 768 Tests: 13 Failed: 3) Failed tests: 1-3 Non-zero exit status: 3 Files=27, Tests=284, 27 wallclock secs ( 0.27 usr + 0.11 sys = 0.37 +CPU) Result: FAIL Failed 1/27 test programs. 3/284 subtests failed. dmake.exe: Error code 255, while making 'test_dynamic' XAICRON/Win32-Unicode-0.38.tar.gz C:\berrybrew\5.22.3_64\c\bin\dmake.exe test -- NOT OK //hint// to see the cpan-testers results for installing this module, t +ry: reports XAICRON/Win32-Unicode-0.38.tar.gz Stopping: 'install' failed for 'Win32::Unicode'.

Replies are listed 'Best First'.
Re: Failing installing Win32::Unicode
by stevieb (Canon) on Feb 08, 2018 at 17:23 UTC

    This appears to be a long-standing bug in the distribution.

    CPAN Tester results, an open bug ticket, and an example of the same (plus more) tests failing.

    The same failures appear to be happening across all versions of Perl on Windows platform.

      Stevieb, you give me a very sad info. I fell in love with this module to handle path and co in unicode using it on ActiveState Perl 5.16. But now I want o migrate to Strawberry Perl, and yes, no matter which Perl version I try it continues to fail. I could cry.

        Dont cry. Simply go ahead and install win32 unicode despite the failing test.
Re: Failing installing Win32::Unicode
by dasgar (Priest) on Feb 08, 2018 at 19:07 UTC

    As an alternative, I'd recommend checking out Win32::LongPath. It won't be a drop in replacement (i.e. existing code that uses Win32::Unicode will need more modifications than just changing use Win32::Unicode; to use Win32::LongPath;), but it should be able to provide similar functionality. Also, the author does give credit to Win32::Unicode's author.

      Thank you. This seems a very good alternative. I already changed almost all parts of my code that used Win32::Unicode, modification was quite easy, and at the moment I do not see any problem arising. Very happy.