PerlAlien / Alien-Build

Build external dependencies for use in CPAN
16 stars 25 forks source link

Failed test 'AB::MB sys install' : Not able to install Alien::Build on Windows 11, WSL #302

Closed hakonhagland closed 2 years ago

hakonhagland commented 2 years ago

I am on Windows 11, using WSL with Ubuntu 20.04:

$ perl --version | head -1
This is perl 5, version 30, subversion 0 (v5.30.0) built for x86_64-linux-gnu-thread-multi

$ which perl
/usr/bin/perl

$ cpanm -v Alien::Build
cpanm (App::cpanminus) 1.7045 on perl 5.030000 built for x86_64-linux-gnu-thread-multi
Work directory is /home/hakon/.cpanm/work/1648884664.14702
You have make /usr/bin/make
You have /usr/bin/wget
You have /usr/bin/tar: tar (GNU tar) 1.30
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
You have /usr/bin/unzip
Searching Alien::Build () on cpanmetadb ...
--> Working on Alien::Build
Fetching http://www.cpan.org/authors/id/P/PL/PLICEASE/Alien-Build-2.48.tar.gz
-> OK
Unpacking Alien-Build-2.48.tar.gz
Entering Alien-Build-2.48
Checking configure dependencies from META.json
Checking if you have ExtUtils::ParseXS 3.30 ... Yes (3.40)
Checking if you have ExtUtils::MakeMaker 6.64 ... Yes (7.34)
Checking if you have ExtUtils::CBuilder 0 ... Yes (0.280231)
Checking if you have File::Which 0 ... Yes (1.27)
Configuring Alien-Build-2.48
Running Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Alien::Build
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have ExtUtils::CBuilder 0 ... Yes (0.280231)
Checking if you have File::Which 1.10 ... Yes (1.27)
Checking if you have Test2::API 1.302096 ... Yes (1.302190)
Checking if you have Path::Tiny 0.077 ... Yes (0.122)
Checking if you have Test2::V0 0.000121 ... Yes (0.000145)
Checking if you have Digest::SHA 0 ... Yes (6.02)
Checking if you have ExtUtils::MakeMaker 6.64 ... Yes (7.34)
Checking if you have parent 0 ... Yes (0.237)
Checking if you have Capture::Tiny 0.17 ... Yes (0.48)
Checking if you have List::Util 1.33 ... Yes (1.50)
Checking if you have JSON::PP 0 ... Yes (4.02)
Checking if you have FFI::CheckLib 0.11 ... Yes (0.28)
Checking if you have ExtUtils::ParseXS 3.30 ... Yes (3.40)
Checking if you have Text::ParseWords 3.26 ... Yes (3.30)
Checking if you have File::chdir 0 ... Yes (0.1010)
Building and testing Alien-Build-2.48
cp lib/Alien/Build/Plugin/Build/SearchDep.pm blib/lib/Alien/Build/Plugin/Build/SearchDep.pm
[...]
cp lib/Test/Alien/Build.pm blib/lib/Test/Alien/Build.pm
Manifying 30 pod documents
Manifying 26 pod documents
Manifying 29 pod documents
Manifying 1 pod document
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
# 
# 
# 
# HARNESS_ACTIVE=1
# HARNESS_VERSION=3.42
# LANG=C.UTF-8
# PERL5LIB=/home/hakon/.cpanm/work/1648884664.14702/Alien-Build-2.48/blib/lib:/home/hakon/.cpanm/work/1648884664.14702/Alien-Build-2.48/blib/arch:/home/hakon/perl5/lib/perl5/5.30.0/x86_64-linux-gnu-thread-multi:/home/hakon/perl5/lib/perl5/5.30.0:/home/hakon/perl5/lib/perl5/x86_64-linux-gnu-thread-multi:/home/hakon/perl5/lib/perl5:/home/hakon/perl5/lib/perl5
# PERL_DL_NONLAZY=1
# PERL_LOCAL_LIB_ROOT=/home/hakon/perl5
# PERL_MB_OPT=--install_base "/home/hakon/perl5"
# PERL_MM_OPT=INSTALL_BASE=/home/hakon/perl5
# PERL_MM_USE_DEFAULT=1
# PERL_USE_UNSAFE_INC=1
# SHELL=/bin/bash
# 
# 
# 
# PERL5LIB path
# /home/hakon/.cpanm/work/1648884664.14702/Alien-Build-2.48/blib/lib
# /home/hakon/.cpanm/work/1648884664.14702/Alien-Build-2.48/blib/arch
# /home/hakon/perl5/lib/perl5/5.30.0/x86_64-linux-gnu-thread-multi
# /home/hakon/perl5/lib/perl5/5.30.0
# /home/hakon/perl5/lib/perl5/x86_64-linux-gnu-thread-multi
# /home/hakon/perl5/lib/perl5
# /home/hakon/perl5/lib/perl5
# 
# 
# 
# perl                     5.030000 linux x86_64-linux-gnu-thread-multi
# Acme::Alien::DontPanic   -
# Alien::Base::ModuleBuild -
# Alien::Libbz2            -
# Alien::cmake3            -
# Alien::gzip              -
# Alien::xz                -
# Archive::Tar             2.32
# Archive::Zip             -
# Capture::Tiny            0.48
# Devel::Hide              -
# Digest::SHA              6.02
# Env::ShellWords          -
# ExtUtils::CBuilder       0.280231
# ExtUtils::MakeMaker      7.34
# ExtUtils::ParseXS        3.40
# FFI::CheckLib            0.28
# FFI::Platypus            -
# File::Listing            -
# File::Listing::Ftpcopy   -
# File::Which              1.27
# File::chdir              0.1010
# HTML::Parser             -
# HTTP::Tiny               0.076
# IO::Compress::Bzip2      2.084
# IO::Socket::SSL          -
# IO::Uncompress::Bunzip2  2.084
# IO::Zlib                 1.10
# JSON::PP                 4.02
# LWP                      -
# LWP::Protocol::https     -
# List::Util               1.5
# Mojo::DOM58              -
# Mojolicious              -
# Net::FTP                 3.11
# Net::SSLeay              -
# Path::Tiny               0.122
# PkgConfig                -
# PkgConfig::LibPkgConf    -
# Plack                    -
# Readonly                 -
# Sort::Versions           -
# Test2::API               1.302190
# Test2::V0                0.000145
# Text::ParseWords         3.30
# URI                      -
# YAML                     -
# parent                   0.237
# 
# 
# 
# $VAR1 = {
#           'cmake_generator' => 'Unix Makefiles',
#           'compiler_type' => 'unix',
#           'pkg-config' => {
#                             'pkg-config' => '/mnt/c/Strawberry/perl/bin/pkg-config',
#                             'pkgconf' => undef
#                           },
#           'system_type' => 'unix'
#         };
# pkg-config negotiate pick = PkgConfig::CommandLine
# 
# 
# [config.site]
# # file automatically generated by /home/hakon/.cpanm/work/1648884664.14702/Alien-Build-2.48/blib/lib/Alien/Build/Plugin/Build/Autoconf.pm
# libdir='${prefix}/lib'
# 
# 
# 
t/00_diag.t .......................................... ok
t/01_use.t ........................................... ok

# Failed test 'AB::MB sys install'
# at t/alien_base.t line 72.
# Caught exception in subtest: Can't locate PkgConfig.pm in @INC (you may need to install the PkgConfig module) (@INC contains: corpus/lib /home/hakon/.cpanm/work/1648884664.14702/Alien-Build-2.48/blib/lib /home/hakon/.cpanm/work/1648884664.14702/Alien-Build-2.48/blib/arch /home/hakon/perl5/lib/perl5/5.30.0/x86_64-linux-gnu-thread-multi /home/hakon/perl5/lib/perl5/5.30.0 /home/hakon/perl5/lib/perl5/x86_64-linux-gnu-thread-multi /home/hakon/perl5/lib/perl5 /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /home/hakon/.cpanm/work/1648884664.14702/Alien-Build-2.48/blib/lib/Alien/Base/PkgConfig.pm line 135.
t/alien_base.t ....................................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/8 subtests 
t/alien_base__system_installed.t ..................... skipped: test requires Alien::Base::ModuleBuild
t/alien_base_pkgconfig.t ............................. ok
t/alien_base_wrapper.t ............................... ok
t/alien_build.t ...................................... ok
t/alien_build_commandsequence.t ...................... ok
t/alien_build_commandsequence__cd.t .................. ok
t/alien_build_interpolate.t .......................... ok
t/alien_build_interpolate_default.t .................. ok
t/alien_build_log.t .................................. ok
t/alien_build_log_abbreviate.t ....................... ok
t/alien_build_log_default.t .......................... ok
t/alien_build_meta.t ................................. ok
t/alien_build_mm.t ................................... ok
t/alien_build_plugin.t ............................... ok
t/alien_build_plugin_build_autoconf.t ................ ok
t/alien_build_plugin_build_cmake.t ................... skipped: test requires Alien::cmake3
t/alien_build_plugin_build_copy.t .................... ok
t/alien_build_plugin_build_make.t .................... ok
t/alien_build_plugin_build_msys.t .................... ok
t/alien_build_plugin_build_searchdep.t ............... skipped: test requires Env::ShellWords
t/alien_build_plugin_core_cleaninstall.t ............. ok
t/alien_build_plugin_core_download.t ................. ok
t/alien_build_plugin_core_ffi.t ...................... ok
t/alien_build_plugin_core_gather.t ................... ok
t/alien_build_plugin_core_legacy.t ................... ok
t/alien_build_plugin_core_override.t ................. ok
t/alien_build_plugin_core_setup.t .................... ok
t/alien_build_plugin_core_tail.t ..................... ok
t/alien_build_plugin_decode_dirlisting.t ............. ok
t/alien_build_plugin_decode_dirlistingftpcopy.t ...... ok
t/alien_build_plugin_decode_html.t ................... ok
t/alien_build_plugin_decode_mojo.t ................... ok
t/alien_build_plugin_download_negotiate.t ............ ok
t/alien_build_plugin_extract_archivetar.t ............ ok
t/alien_build_plugin_extract_archivezip.t ............ ok
t/alien_build_plugin_extract_commandline.t ........... ok
t/alien_build_plugin_extract_commandline__tar_can.t .. skipped: test requires Readonly 1.60
t/alien_build_plugin_extract_directory.t ............. ok
t/alien_build_plugin_extract_negotiate.t ............. ok
t/alien_build_plugin_fetch_curlcommand.t ............. ok
t/alien_build_plugin_fetch_httptiny.t ................ ok
t/alien_build_plugin_fetch_local.t ................... ok
t/alien_build_plugin_fetch_localdir.t ................ ok
t/alien_build_plugin_fetch_lwp.t ..................... ok
t/alien_build_plugin_fetch_netftp.t .................. ok
t/alien_build_plugin_fetch_wget.t .................... ok
t/alien_build_plugin_gather_isolatedynamic.t ......... ok
t/alien_build_plugin_meta.t .......................... ok
            # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 131.
            # +-------+----+--------+
            # | GOT   | OP | CHECK  |
            # +-------+----+--------+
            # | share | eq | system |
            # +-------+----+--------+
        # Failed test 'old name good (exact)'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 132.
            # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 144.
            # +-------+----+--------+
            # | GOT   | OP | CHECK  |
            # +-------+----+--------+
            # | share | eq | system |
            # +-------+----+--------+
        # Failed test 'old name good (much older)'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 145.
            # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 170.
            # +-------+----+--------+
            # | GOT   | OP | CHECK  |
            # +-------+----+--------+
            # | share | eq | system |
            # +-------+----+--------+
        # Failed test 'atleast_version good (exact)'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 171.
            # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 183.
            # +-------+----+--------+
            # | GOT   | OP | CHECK  |
            # +-------+----+--------+
            # | share | eq | system |
            # +-------+----+--------+
        # Failed test 'atleast_version good (older)'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 184.
    # Failed test 'atleast_version or minimum_version'
    # at t/alien_build_plugin_pkgconfig_commandline.t line 185.
            # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 213.
            # +-------+----+--------+
            # | GOT   | OP | CHECK  |
            # +-------+----+--------+
            # | share | eq | system |
            # +-------+----+--------+
        # Failed test 'exact version (exact)'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 215.
    # Failed test 'exact'
    # at t/alien_build_plugin_pkgconfig_commandline.t line 231.
            # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 273.
            # +-------+----+--------+
            # | GOT   | OP | CHECK  |
            # +-------+----+--------+
            # | share | eq | system |
            # +-------+----+--------+
        # Failed test 'max version (exact)'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 275.
            # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 287.
            # +-------+----+--------+
            # | GOT   | OP | CHECK  |
            # +-------+----+--------+
            # | share | eq | system |
            # +-------+----+--------+
        # Failed test 'max version (more)'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 289.
            # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 301.
            # +-------+----+--------+
            # | GOT   | OP | CHECK  |
            # +-------+----+--------+
            # | share | eq | system |
            # +-------+----+--------+
        # Failed test 'max version (lots more)'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 303.
    # Failed test 'max_version'
    # at t/alien_build_plugin_pkgconfig_commandline.t line 305.

# Failed test 'version requirements'
# at t/alien_build_plugin_pkgconfig_commandline.t line 306.
    # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 318.
    # +-------+----+--------+
    # | GOT   | OP | CHECK  |
    # +-------+----+--------+
    # | share | eq | system |
    # +-------+----+--------+

# Failed test 'system available, okay'
# at t/alien_build_plugin_pkgconfig_commandline.t line 354.
    # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 376.
    # +-------+----+--------+
    # | GOT   | OP | CHECK  |
    # +-------+----+--------+
    # | share | eq | system |
    # +-------+----+--------+
    # Failed test at t/alien_build_plugin_pkgconfig_commandline.t line 377.
    # +---------+-------+
    # | GOT     | CHECK |
    # +---------+-------+
    # | <UNDEF> | 1.2.3 |
    # +---------+-------+

# Failed test 'hook prop'
# at t/alien_build_plugin_pkgconfig_commandline.t line 379.
        # Failed test 'alien install type is system'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 394.
        # expected install type of system, but got share
        # Failed test 'alien builds okay'
        # at t/alien_build_plugin_pkgconfig_commandline.t line 396.
        # 
        # build threw exception: No hooks registered for fetch at /home/hakon/.cpanm/work/1648884664.14702/Alien-Build-2.48/blib/lib/Alien/Build.pm line 408.
    # Failed test 'all found in system'
    # at t/alien_build_plugin_pkgconfig_commandline.t line 431.
    # Caught exception in subtest: Can't call method "runtime_prop" on an undefined value at t/alien_build_plugin_pkgconfig_commandline.t line 399.

# Failed test 'system multiple'
# at t/alien_build_plugin_pkgconfig_commandline.t line 433.
Use of uninitialized value in pattern match (m//) at t/alien_build_plugin_pkgconfig_commandline.t line 495.
Use of uninitialized value in pattern match (m//) at t/alien_build_plugin_pkgconfig_commandline.t line 512.
    # Failed test 'test from stage'
    # at t/alien_build_plugin_pkgconfig_commandline.t line 506.
    # Caught exception in subtest: Path::Tiny paths require defined, positive-length parts at t/alien_build_plugin_pkgconfig_commandline.t line 495.
    # Failed test 'test from alien'
    # at t/alien_build_plugin_pkgconfig_commandline.t line 523.
    # Caught exception in subtest: Path::Tiny paths require defined, positive-length parts at t/alien_build_plugin_pkgconfig_commandline.t line 512.

# Failed test 'system rewrite'
# at t/alien_build_plugin_pkgconfig_commandline.t line 525.
t/alien_build_plugin_pkgconfig_commandline.t ......... 
Dubious, test returned 5 (wstat 1280, 0x500)
Failed 5/10 subtests 
t/alien_build_plugin_pkgconfig_libpkgconf.t .......... skipped: Test requires PkgConfig::LibPkgConf
t/alien_build_plugin_pkgconfig_makestatic.t .......... skipped: test requires PkgConfig.pm
t/alien_build_plugin_pkgconfig_negotiate.t ........... ok
t/alien_build_plugin_pkgconfig_negotiate__pick.t ..... ok
t/alien_build_plugin_pkgconfig_pp.t .................. skipped: test requires PkgConfig 0.14026
t/alien_build_plugin_prefer_badversion.t ............. skipped: test requires Sort::Versions
t/alien_build_plugin_prefer_goodversion.t ............ skipped: test requires Sort::Versions
t/alien_build_plugin_prefer_sortversions.t ........... ok
t/alien_build_plugin_probe_cbuilder.t ................ ok
t/alien_build_plugin_probe_cbuilder__live.t .......... skipped: CI only
t/alien_build_plugin_probe_commandline.t ............. ok
t/alien_build_plugin_probe_vcpkg.t ................... skipped: Test requires Win32::Vcpkg 0.02
t/alien_build_plugin_test_mock.t ..................... ok
t/alien_build_rc.t ................................... ok
t/alien_build_temp.t ................................. ok
t/alien_build_tempdir.t .............................. ok
t/alien_build_util.t ................................. ok
t/alien_build_version_basic.t ........................ ok
t/alien_role.t ....................................... ok
t/alien_util.t ....................................... ok
t/alienfile.t ........................................ ok
t/test_alien.t ....................................... ok
t/test_alien_build.t ................................. ok
t/test_alien_cancompile.t ............................ ok
t/test_alien_canplatypus.t ........................... ok
t/test_alien_diag.t .................................. ok
t/test_alien_run.t ................................... ok
t/test_alien_synthetic.t ............................. ok

Test Summary Report
-------------------
t/alien_base.t                                     (Wstat: 256 Tests: 8 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
t/alien_build_plugin_pkgconfig_commandline.t       (Wstat: 1280 Tests: 10 Failed: 5)
  Failed tests:  4-8
  Non-zero exit status: 5
Files=80, Tests=399, 18 wallclock secs ( 0.23 usr  0.06 sys + 10.47 cusr  2.83 csys = 13.59 CPU)
Result: FAIL
Failed 2/80 test programs. 6/399 subtests failed.
make: *** [Makefile:1207: test_dynamic] Error 255
-> FAIL Installing Alien::Build failed. See /home/hakon/.cpanm/work/1648884664.14702/build.log for details. Retry with --force to force install it.

Here is the complete log file.

plicease commented 2 years ago

Looks like pkg-config is being picked up from Strawberry Perl (/mnt/c/Strawberry/perl/bin/pkg-config) which will not work with AB (or anything else in Linux). This could be either because you do not have pkg-config installed or because strawberry Perl is before linux pkg-config in your PATH. You can either:

  1. Install pkg-config or pkgconf via your linux package manager (recommended)
  2. Adjust your PATH so that the pkg-config that comes with Strawberry Perl comes after linux pkg-config (if pkg-config is installed)
  3. Remove the Strawberry Perl pkg-config from your PATH (in which case AB will use PkgConfig.pm instead).
hakonhagland commented 2 years ago

@plicease Yes! I did not realize that WSL Ubuntu came without basic packages like make, gcc, and pkg-config preinstalled. The following worked for me:

sudo apt-get install pkg-config
cpanm Alien::Build