IO::Compress::Brotli causes build errors
PhilterPaper opened this issue · comments
Somewhere in the build process, HTTP::Message requests that IO::Compress::Brotli be built. This package is apparently no longer maintained, and consistently fails to build on Windows (see RT 125995). While HTTP::Message itself appears to install OK, each time it fails to build IO::Compress::Brotli. Please consider removing the dependency on that package, if possible.
Looks like this was introduced via #172
I wonder if we would have caught this sooner by installing --with-recommends
in the Windows builds?
I wonder if we would have caught this sooner by installing
--with-recommends
in the Windows builds?
I think I didn't do that because Brotli was known not to properly build for Windows. That must have been a conscious decision. I thought it would be fine because it's a recommendation.
I am now wondering if we should downgrade this to suggests
.
@PhilterPaper can you provide log output of the installation failing please? In particular how you're running it. I would like to understand why it installs the recommendations. Thank you.
Here you go. I had HTTP::Message 6.44 installed already, so I edited $VERSION back to 6.40 to cause an upgrade. This is Strawberry Perl 5.26 on Windows 10.
C:\Users\Phil\Desktop>cpan
cpan shell -- CPAN exploration and modules installation (v2.34)
Enter 'h' for help.
cpan> r
Database was generated on Fri, 28 Oct 2022 15:03:11 GMT
Package namespace installed latest in CPAN file
App::Music::ChordPro undef 5.989 JV/App-Music-ChordPro-5.989.tar.gz
DBD::Oracle 1.74 1.83 ZARQUON/DBD-Oracle-1.83.tar.gz
DBD::Pg 3.14.2 3.16.0 TURNSTEP/DBD-Pg-3.16.0.tar.gz
Devel::CheckLib 1.14 1.16 MATTN/Devel-CheckLib-1.16.tar.gz
Email::Date::Format 1.005 1.006 RJBS/Email-Date-Format-1.006.tar.gz
FCGI 0.79 0.82 ETHER/FCGI-0.82.tar.gz
HTTP::Message 6.40 6.44 OALDERS/HTTP-Message-6.44.tar.gz
IO::Socket::SSL 2.066 2.075 SULLR/IO-Socket-SSL-2.075.tar.gz
IPC::Run 0.96 20220807.0 TODDR/IPC-Run-20220807.0.tar.gz
Text::Layout 0.029 0.030 JV/Text-Layout-0.030.tar.gz
B 1.68 1.83 RJBS/perl-5.36.0.tar.gz
841 installed modules have no parsable version number
(use 'o conf show_unparsable_versions 1' to show them)
cpan> i HTTP::Message
Fetching with HTTP::Tiny:
https://cpan.org/authors/id/O/OA/OALDERS/CHECKSUMS
Module id = HTTP::Message
CPAN_USERID OALDERS (Olaf Alders <olaf@wundersolutions.com>)
CPAN_VERSION 6.44
CPAN_FILE O/OA/OALDERS/HTTP-Message-6.44.tar.gz
UPLOAD_DATE 2022-10-26
MANPAGE HTTP::Message - HTTP style message (base class)
INST_FILE C:\Strawberry\perl\site\lib\HTTP\Message.pm
INST_VERSION 6.40
cpan> upgrade HTTP::Message
Package namespace installed latest in CPAN file
HTTP::Message 6.40 6.44 OALDERS/HTTP-Message-6.44.tar.gz
Running install for module 'HTTP::Message'
Checksum for C:\STRAWB~1\cpan\sources\authors\id\O\OA\OALDERS\HTTP-Message-6.44.tar.gz ok
Scanning cache C:\STRAWB~1\cpan\build for sizes
......................................--------------------------------------DONE
DEL(1/16): C:\STRAWB~1\cpan\build\App-Music-ChordPro-5.989-10
DEL(2/16): C:\STRAWB~1\cpan\build\App-Music-ChordPro-5.989-10.yml
DEL(3/16): C:\STRAWB~1\cpan\build\App-Music-ChordPro-5.989-0
DEL(4/16): C:\STRAWB~1\cpan\build\App-Music-ChordPro-5.989-0.yml
DEL(5/16): C:\STRAWB~1\cpan\build\App-Music-ChordPro-5.989-1
DEL(6/16): C:\STRAWB~1\cpan\build\App-Music-ChordPro-5.989-1.yml
DEL(7/16): C:\STRAWB~1\cpan\build\DateTime-1.59-0
DEL(8/16): C:\STRAWB~1\cpan\build\DateTime-1.59-0.yml
DEL(9/16): C:\STRAWB~1\cpan\build\DateTime-Locale-1.37-0
DEL(10/16): C:\STRAWB~1\cpan\build\DateTime-Locale-1.37-0.yml
DEL(11/16): C:\STRAWB~1\cpan\build\Email-Sender-2.600-0
DEL(12/16): C:\STRAWB~1\cpan\build\Email-Sender-2.600-0.yml
DEL(13/16): C:\STRAWB~1\cpan\build\App-Music-ChordPro-5.989-2
DEL(14/16): C:\STRAWB~1\cpan\build\App-Music-ChordPro-5.989-2.yml
DEL(15/16): C:\STRAWB~1\cpan\build\experimental-0.029-0
DEL(16/16): C:\STRAWB~1\cpan\build\experimental-0.029-0.yml
Configuring O/OA/OALDERS/HTTP-Message-6.44.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Generating a gmake-style Makefile
Writing Makefile for HTTP::Message
Writing MYMETA.yml and MYMETA.json
OALDERS/HTTP-Message-6.44.tar.gz
C:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK
Running make for O/OA/OALDERS/HTTP-Message-6.44.tar.gz
---- Unsatisfied dependencies detected during ----
---- OALDERS/HTTP-Message-6.44.tar.gz ----
IO::Compress::Brotli [requires,optional]
IO::Uncompress::Brotli [requires,optional]
cp lib/HTTP/Response.pm blib\lib\HTTP\Response.pm
cp lib/HTTP/Request.pm blib\lib\HTTP\Request.pm
cp lib/HTTP/Headers/Auth.pm blib\lib\HTTP\Headers\Auth.pm
cp lib/HTTP/Headers.pm blib\lib\HTTP\Headers.pm
cp lib/HTTP/Request/Common.pm blib\lib\HTTP\Request\Common.pm
cp lib/HTTP/Status.pm blib\lib\HTTP\Status.pm
cp lib/HTTP/Headers/Util.pm blib\lib\HTTP\Headers\Util.pm
cp lib/HTTP/Config.pm blib\lib\HTTP\Config.pm
cp lib/HTTP/Message.pm blib\lib\HTTP\Message.pm
cp lib/HTTP/Headers/ETag.pm blib\lib\HTTP\Headers\ETag.pm
OALDERS/HTTP-Message-6.44.tar.gz
C:\STRAWB~1\c\bin\gmake.exe -- OK
Running make test for OALDERS/HTTP-Message-6.44.tar.gz
"C:\Strawberry\perl\bin\perl.exe" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib\lib', 'blib\arch')" t/*.t
t/00-report-prereqs.t .......... #
# Versions for all modules listed in MYMETA.json (including optional ones):
#
# === Configure Requires ===
#
# Module Want Have
# ------------------- ---- ----
# ExtUtils::MakeMaker any 7.64
#
# === Configure Suggests ===
#
# Module Want Have
# -------- ------- ----
# JSON::PP 2.27300 4.12
#
# === Build Requires ===
#
# Module Want Have
# ------------------- ---- ----
# ExtUtils::MakeMaker any 7.64
#
# === Test Requires ===
#
# Module Want Have
# ------------------- ---- --------
# ExtUtils::MakeMaker any 7.64
# File::Spec any 3.75
# File::Temp any 0.2311
# PerlIO::encoding any 0.25
# Test::More 0.88 1.302191
# Test::Needs any 0.002009
# Time::Local any 1.30
# Try::Tiny any 0.31
# URI::URL any 5.16
# lib any 0.64
# overload any 1.28
#
# === Test Recommends ===
#
# Module Want Have
# ---------------------- -------- --------
# CPAN::Meta 2.120900 2.150010
# IO::Compress::Brotli 0.004001 missing
# IO::Uncompress::Brotli 0.004001 missing
#
# === Runtime Requires ===
#
# Module Want Have
# -------------------------- ----- -----
# Carp any 1.50
# Clone 0.46 0.46
# Compress::Raw::Bzip2 any 2.201
# Compress::Raw::Zlib 2.062 2.202
# Encode 3.01 3.19
# Encode::Locale 1 1.05
# Exporter 5.57 5.74
# File::Spec any 3.75
# HTTP::Date 6 6.05
# IO::Compress::Bzip2 2.021 2.201
# IO::Compress::Deflate any 2.201
# IO::Compress::Gzip any 2.201
# IO::HTML any 1.004
# IO::Uncompress::Inflate any 2.201
# IO::Uncompress::RawInflate any 2.201
# LWP::MediaTypes 6 6.04
# MIME::Base64 2.1 3.16
# MIME::QuotedPrint any 3.16
# URI 1.10 5.16
# parent any 0.238
# strict any 1.11
# warnings any 1.37
#
# === Runtime Recommends ===
#
# Module Want Have
# ---------------------- -------- -------
# IO::Compress::Brotli 0.004001 missing
# IO::Uncompress::Brotli 0.004001 missing
#
t/00-report-prereqs.t .......... ok
t/common-req.t ................. ok
t/headers-auth.t ............... ok
t/headers-etag.t ............... ok
t/headers-util.t ............... ok
t/headers.t .................... ok
t/http-config.t ................ ok
t/message-brotli.t ............. skipped: Need IO::Compress::Brotli, IO::Uncompress::Brotli
t/message-charset.t ............ ok
t/message-decode-brotlibomb.t .. skipped: Need IO::Compress::Brotli, IO::Uncompress::Brotli
t/message-decode-bzipbomb.t .... ok
t/message-decode-xml.t ......... ok
t/message-decode-zipbomb.t ..... ok
t/message-old.t ................ ok
t/message-parts.t .............. ok
t/message.t .................... ok
t/request.t .................... ok
t/request_type_with_data.t ..... ok
t/response.t ................... ok
t/status-old.t ................. ok
t/status.t ..................... ok
All tests successful.
Files=21, Tests=836, 10 wallclock secs ( 0.19 usr + 0.12 sys = 0.31 CPU)
Result: PASS
Lockfile removed.
OALDERS/HTTP-Message-6.44.tar.gz
C:\STRAWB~1\c\bin\gmake.exe test -- OK
Running make install for OALDERS/HTTP-Message-6.44.tar.gz
Installing C:\STRAWB~1\perl\site\lib\HTTP\Message.pm
Appending installation info to C:\STRAWB~1\perl\lib/perllocal.pod
OALDERS/HTTP-Message-6.44.tar.gz
C:\STRAWB~1\c\bin\gmake.exe install UNINST=1 -- OK
Running install for module 'IO::Uncompress::Brotli'
Checksum for C:\STRAWB~1\cpan\sources\authors\id\M\MG\MGV\IO-Compress-Brotli-0.004001.tar.gz ok
Configuring M/MG/MGV/IO-Compress-Brotli-0.004001.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Generating a gmake-style Makefile
Writing Makefile for IO::Compress::Brotli
Writing MYMETA.yml and MYMETA.json
MGV/IO-Compress-Brotli-0.004001.tar.gz
C:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK
Running make for M/MG/MGV/IO-Compress-Brotli-0.004001.tar.gz
cp Brotli/c/common/platform.h blib\lib\IO\Compress\Brotli\c\common\platform.h
cp Brotli/c/common/transform.c blib\lib\IO\Compress\Brotli\c\common\transform.c
cp Brotli/bootstrap blib\lib\IO\Compress\Brotli\bootstrap
cp Brotli/c/common/version.h blib\lib\IO\Compress\Brotli\c\common\version.h
cp Brotli/c/common/dictionary.h blib\lib\IO\Compress\Brotli\c\common\dictionary.h
cp Brotli/c/common/dictionary.c blib\lib\IO\Compress\Brotli\c\common\dictionary.c
cp Brotli/c/dec/bit_reader.c blib\lib\IO\Compress\Brotli\c\dec\bit_reader.c
cp Brotli/c/common/transform.h blib\lib\IO\Compress\Brotli\c\common\transform.h
cp Brotli/LICENSE blib\lib\IO\Compress\Brotli\LICENSE
cp Brotli/c/common/dictionary.bin blib\lib\IO\Compress\Brotli\c\common\dictionary.bin
cp Brotli/Makefile blib\lib\IO\Compress\Brotli\Makefile
cp Brotli/README.md blib\lib\IO\Compress\Brotli\README.md
cp Brotli/Makefile.am blib\lib\IO\Compress\Brotli\Makefile.am
cp Brotli/c/common/context.h blib\lib\IO\Compress\Brotli\c\common\context.h
cp Brotli/c/common/dictionary.bin.br blib\lib\IO\Compress\Brotli\c\common\dictionary.bin.br
cp Brotli/README blib\lib\IO\Compress\Brotli\README
cp Brotli/c/common/constants.h blib\lib\IO\Compress\Brotli\c\common\constants.h
cp Brotli/c/dec/prefix.h blib\lib\IO\Compress\Brotli\c\dec\prefix.h
cp Brotli/c/dec/bit_reader.h blib\lib\IO\Compress\Brotli\c\dec\bit_reader.h
cp Brotli/c/enc/bit_cost.h blib\lib\IO\Compress\Brotli\c\enc\bit_cost.h
cp Brotli/c/enc/bit_cost.c blib\lib\IO\Compress\Brotli\c\enc\bit_cost.c
cp Brotli/c/dec/huffman.h blib\lib\IO\Compress\Brotli\c\dec\huffman.h
cp Brotli/c/dec/decode.c blib\lib\IO\Compress\Brotli\c\dec\decode.c
cp Brotli/c/dec/huffman.c blib\lib\IO\Compress\Brotli\c\dec\huffman.c
cp Brotli/c/enc/backward_references.c blib\lib\IO\Compress\Brotli\c\enc\backward_references.c
cp Brotli/c/enc/backward_references_inc.h blib\lib\IO\Compress\Brotli\c\enc\backward_references_inc.h
cp Brotli/c/enc/backward_references_hq.c blib\lib\IO\Compress\Brotli\c\enc\backward_references_hq.c
cp Brotli/c/enc/bit_cost_inc.h blib\lib\IO\Compress\Brotli\c\enc\bit_cost_inc.h
cp Brotli/c/enc/backward_references_hq.h blib\lib\IO\Compress\Brotli\c\enc\backward_references_hq.h
cp Brotli/c/enc/backward_references.h blib\lib\IO\Compress\Brotli\c\enc\backward_references.h
cp Brotli/c/dec/state.c blib\lib\IO\Compress\Brotli\c\dec\state.c
cp Brotli/c/dec/state.h blib\lib\IO\Compress\Brotli\c\dec\state.h
cp Brotli/c/enc/compress_fragment.h blib\lib\IO\Compress\Brotli\c\enc\compress_fragment.h
cp Brotli/c/enc/block_splitter.h blib\lib\IO\Compress\Brotli\c\enc\block_splitter.h
cp Brotli/c/enc/block_encoder_inc.h blib\lib\IO\Compress\Brotli\c\enc\block_encoder_inc.h
cp Brotli/c/enc/block_splitter.c blib\lib\IO\Compress\Brotli\c\enc\block_splitter.c
cp Brotli/c/enc/cluster.h blib\lib\IO\Compress\Brotli\c\enc\cluster.h
cp Brotli/c/enc/compress_fragment.c blib\lib\IO\Compress\Brotli\c\enc\compress_fragment.c
cp Brotli/c/enc/block_splitter_inc.h blib\lib\IO\Compress\Brotli\c\enc\block_splitter_inc.h
cp Brotli/c/enc/cluster.c blib\lib\IO\Compress\Brotli\c\enc\cluster.c
cp Brotli/c/enc/brotli_bit_stream.h blib\lib\IO\Compress\Brotli\c\enc\brotli_bit_stream.h
cp Brotli/c/enc/compress_fragment_two_pass.h blib\lib\IO\Compress\Brotli\c\enc\compress_fragment_two_pass.h
cp Brotli/c/enc/command.h blib\lib\IO\Compress\Brotli\c\enc\command.h
cp Brotli/c/enc/cluster_inc.h blib\lib\IO\Compress\Brotli\c\enc\cluster_inc.h
cp Brotli/c/enc/compress_fragment_two_pass.c blib\lib\IO\Compress\Brotli\c\enc\compress_fragment_two_pass.c
cp Brotli/c/enc/brotli_bit_stream.c blib\lib\IO\Compress\Brotli\c\enc\brotli_bit_stream.c
cp Brotli/c/enc/hash_longest_match_inc.h blib\lib\IO\Compress\Brotli\c\enc\hash_longest_match_inc.h
cp Brotli/c/enc/encoder_dict.h blib\lib\IO\Compress\Brotli\c\enc\encoder_dict.h
cp Brotli/c/enc/entropy_encode_static.h blib\lib\IO\Compress\Brotli\c\enc\entropy_encode_static.h
cp Brotli/c/enc/encoder_dict.c blib\lib\IO\Compress\Brotli\c\enc\encoder_dict.c
cp Brotli/c/enc/hash_forgetful_chain_inc.h blib\lib\IO\Compress\Brotli\c\enc\hash_forgetful_chain_inc.h
cp Brotli/c/enc/hash_longest_match64_inc.h blib\lib\IO\Compress\Brotli\c\enc\hash_longest_match64_inc.h
cp Brotli/c/enc/encode.c blib\lib\IO\Compress\Brotli\c\enc\encode.c
cp Brotli/c/enc/fast_log.h blib\lib\IO\Compress\Brotli\c\enc\fast_log.h
cp Brotli/c/enc/hash.h blib\lib\IO\Compress\Brotli\c\enc\hash.h
cp Brotli/c/enc/find_match_length.h blib\lib\IO\Compress\Brotli\c\enc\find_match_length.h
cp Brotli/c/enc/entropy_encode.c blib\lib\IO\Compress\Brotli\c\enc\entropy_encode.c
cp Brotli/c/enc/entropy_encode.h blib\lib\IO\Compress\Brotli\c\enc\entropy_encode.h
cp Brotli/c/enc/dictionary_hash.h blib\lib\IO\Compress\Brotli\c\enc\dictionary_hash.h
cp Brotli/c/enc/dictionary_hash.c blib\lib\IO\Compress\Brotli\c\enc\dictionary_hash.c
cp Brotli/c/enc/params.h blib\lib\IO\Compress\Brotli\c\enc\params.h
cp Brotli/c/enc/ringbuffer.h blib\lib\IO\Compress\Brotli\c\enc\ringbuffer.h
cp Brotli/c/enc/literal_cost.c blib\lib\IO\Compress\Brotli\c\enc\literal_cost.c
cp Brotli/c/enc/prefix.h blib\lib\IO\Compress\Brotli\c\enc\prefix.h
cp Brotli/c/enc/literal_cost.h blib\lib\IO\Compress\Brotli\c\enc\literal_cost.h
cp Brotli/c/enc/quality.h blib\lib\IO\Compress\Brotli\c\enc\quality.h
cp Brotli/c/enc/histogram_inc.h blib\lib\IO\Compress\Brotli\c\enc\histogram_inc.h
cp Brotli/c/enc/metablock.h blib\lib\IO\Compress\Brotli\c\enc\metablock.h
cp Brotli/c/enc/histogram.h blib\lib\IO\Compress\Brotli\c\enc\histogram.h
cp Brotli/c/enc/histogram.c blib\lib\IO\Compress\Brotli\c\enc\histogram.c
cp Brotli/c/enc/metablock_inc.h blib\lib\IO\Compress\Brotli\c\enc\metablock_inc.h
cp Brotli/c/enc/hash_longest_match_quickly_inc.h blib\lib\IO\Compress\Brotli\c\enc\hash_longest_match_quickly_inc.h
cp Brotli/c/enc/metablock.c blib\lib\IO\Compress\Brotli\c\enc\metablock.c
cp Brotli/c/enc/hash_to_binary_tree_inc.h blib\lib\IO\Compress\Brotli\c\enc\hash_to_binary_tree_inc.h
cp Brotli/c/enc/memory.h blib\lib\IO\Compress\Brotli\c\enc\memory.h
cp Brotli/c/enc/memory.c blib\lib\IO\Compress\Brotli\c\enc\memory.c
cp Brotli/c/enc/utf8_util.h blib\lib\IO\Compress\Brotli\c\enc\utf8_util.h
cp Brotli/c/include/brotli/encode.h blib\lib\IO\Compress\Brotli\c\include\brotli\encode.h
cp Brotli/c/enc/static_dict.h blib\lib\IO\Compress\Brotli\c\enc\static_dict.h
cp Brotli/configure.ac blib\lib\IO\Compress\Brotli\configure.ac
cp Brotli/c/include/brotli/decode.h blib\lib\IO\Compress\Brotli\c\include\brotli\decode.h
cp Brotli/c/enc/utf8_util.c blib\lib\IO\Compress\Brotli\c\enc\utf8_util.c
cp Brotli/c/include/brotli/port.h blib\lib\IO\Compress\Brotli\c\include\brotli\port.h
cp Brotli/fetch-spec/shared-brotli-fetch-spec.txt blib\lib\IO\Compress\Brotli\fetch-spec\shared-brotli-fetch-spec.txt
cp Brotli/c/enc/static_dict_lut.h blib\lib\IO\Compress\Brotli\c\enc\static_dict_lut.h
cp Brotli/tests/compatibility_test.sh blib\lib\IO\Compress\Brotli\tests\compatibility_test.sh
cp Brotli/tests/roundtrip_test.sh blib\lib\IO\Compress\Brotli\tests\roundtrip_test.sh
cp Brotli/c/enc/static_dict.c blib\lib\IO\Compress\Brotli\c\enc\static_dict.c
cp Brotli/configure blib\lib\IO\Compress\Brotli\configure
cp Brotli/c/enc/write_bits.h blib\lib\IO\Compress\Brotli\c\enc\write_bits.h
cp Brotli/c/include/brotli/types.h blib\lib\IO\Compress\Brotli\c\include\brotli\types.h
cp Brotli/tests/testdata/10x10y.compressed blib\lib\IO\Compress\Brotli\tests\testdata\10x10y.compressed
cp Brotli/tests/testdata/alice29.txt blib\lib\IO\Compress\Brotli\tests\testdata\alice29.txt
cp Brotli/tests/testdata/backward65536 blib\lib\IO\Compress\Brotli\tests\testdata\backward65536
cp Brotli/tests/testdata/64x.compressed blib\lib\IO\Compress\Brotli\tests\testdata\64x.compressed
cp Brotli/tests/run-compatibility-test.cmake blib\lib\IO\Compress\Brotli\tests\run-compatibility-test.cmake
cp Brotli/tests/testdata/asyoulik.txt blib\lib\IO\Compress\Brotli\tests\testdata\asyoulik.txt
cp Brotli/tests/testdata/alice29.txt.compressed blib\lib\IO\Compress\Brotli\tests\testdata\alice29.txt.compressed
cp Brotli/tests/testdata/64x blib\lib\IO\Compress\Brotli\tests\testdata\64x
cp Brotli/tests/testdata/backward65536.compressed blib\lib\IO\Compress\Brotli\tests\testdata\backward65536.compressed
cp Brotli/tests/testdata/10x10y blib\lib\IO\Compress\Brotli\tests\testdata\10x10y
cp Brotli/tests/testdata/asyoulik.txt.compressed blib\lib\IO\Compress\Brotli\tests\testdata\asyoulik.txt.compressed
cp Brotli/tests/run-roundtrip-test.cmake blib\lib\IO\Compress\Brotli\tests\run-roundtrip-test.cmake
cp Brotli/tests/testdata/empty blib\lib\IO\Compress\Brotli\tests\testdata\empty
cp Brotli/tests/testdata/compressed_repeated blib\lib\IO\Compress\Brotli\tests\testdata\compressed_repeated
cp Brotli/tests/testdata/compressed_repeated.compressed blib\lib\IO\Compress\Brotli\tests\testdata\compressed_repeated.compressed
cp Brotli/tests/testdata/empty.compressed.03 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.03
cp Brotli/tests/testdata/compressed_file blib\lib\IO\Compress\Brotli\tests\testdata\compressed_file
cp Brotli/tests/testdata/empty.compressed.00 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.00
cp Brotli/tests/testdata/empty.compressed.04 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.04
cp Brotli/tests/testdata/empty.compressed.01 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.01
cp Brotli/tests/testdata/bb.binast blib\lib\IO\Compress\Brotli\tests\testdata\bb.binast
cp Brotli/tests/testdata/compressed_file.compressed blib\lib\IO\Compress\Brotli\tests\testdata\compressed_file.compressed
cp Brotli/tests/testdata/empty.compressed blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed
cp Brotli/tests/testdata/empty.compressed.02 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.02
cp Brotli/tests/testdata/empty.compressed.06 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.06
cp Brotli/tests/testdata/empty.compressed.08 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.08
cp Brotli/tests/testdata/empty.compressed.11 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.11
cp Brotli/tests/testdata/empty.compressed.13 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.13
cp Brotli/tests/testdata/empty.compressed.07 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.07
cp Brotli/tests/testdata/empty.compressed.12 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.12
cp Brotli/tests/testdata/empty.compressed.14 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.14
cp Brotli/tests/testdata/empty.compressed.09 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.09
cp Brotli/tests/testdata/empty.compressed.10 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.10
cp Brotli/tests/testdata/empty.compressed.05 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.05
cp Brotli/tests/testdata/empty.compressed.15 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.15
cp Brotli/tests/testdata/lcet10.txt blib\lib\IO\Compress\Brotli\tests\testdata\lcet10.txt
cp Brotli/tests/testdata/plrabn12.txt blib\lib\IO\Compress\Brotli\tests\testdata\plrabn12.txt
cp Brotli/tests/testdata/quickfox blib\lib\IO\Compress\Brotli\tests\testdata\quickfox
cp Brotli/tests/testdata/lcet10.txt.compressed blib\lib\IO\Compress\Brotli\tests\testdata\lcet10.txt.compressed
cp Brotli/tests/testdata/monkey.compressed blib\lib\IO\Compress\Brotli\tests\testdata\monkey.compressed
cp Brotli/tests/testdata/mapsdatazrh.compressed blib\lib\IO\Compress\Brotli\tests\testdata\mapsdatazrh.compressed
cp Brotli/tests/testdata/empty.compressed.18 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.18
cp Brotli/tests/testdata/empty.compressed.17 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.17
cp Brotli/tests/testdata/monkey blib\lib\IO\Compress\Brotli\tests\testdata\monkey
cp Brotli/tests/testdata/mapsdatazrh blib\lib\IO\Compress\Brotli\tests\testdata\mapsdatazrh
cp Brotli/tests/testdata/plrabn12.txt.compressed blib\lib\IO\Compress\Brotli\tests\testdata\plrabn12.txt.compressed
cp Brotli/tests/testdata/empty.compressed.16 blib\lib\IO\Compress\Brotli\tests\testdata\empty.compressed.16
cp Brotli/tests/testdata/x blib\lib\IO\Compress\Brotli\tests\testdata\x
cp Brotli/tests/testdata/x.compressed blib\lib\IO\Compress\Brotli\tests\testdata\x.compressed
cp Brotli/tests/testdata/quickfox_repeated.compressed blib\lib\IO\Compress\Brotli\tests\testdata\quickfox_repeated.compressed
cp Brotli/tests/testdata/x.compressed.00 blib\lib\IO\Compress\Brotli\tests\testdata\x.compressed.00
cp Brotli/tests/testdata/ukkonooa.compressed blib\lib\IO\Compress\Brotli\tests\testdata\ukkonooa.compressed
cp Brotli/tests/testdata/random_org_10k.bin blib\lib\IO\Compress\Brotli\tests\testdata\random_org_10k.bin
cp Brotli/tests/testdata/ukkonooa blib\lib\IO\Compress\Brotli\tests\testdata\ukkonooa
cp Brotli/tests/testdata/x.compressed.01 blib\lib\IO\Compress\Brotli\tests\testdata\x.compressed.01
cp Brotli/tests/testdata/quickfox_repeated blib\lib\IO\Compress\Brotli\tests\testdata\quickfox_repeated
cp Brotli/tests/testdata/random_org_10k.bin.compressed blib\lib\IO\Compress\Brotli\tests\testdata\random_org_10k.bin.compressed
cp Brotli/tests/testdata/random_chunks blib\lib\IO\Compress\Brotli\tests\testdata\random_chunks
cp Brotli/tests/testdata/quickfox.compressed blib\lib\IO\Compress\Brotli\tests\testdata\quickfox.compressed
cp lib/IO/Compress/Brotli.pm blib\lib\IO\Compress\Brotli.pm
cp lib/IO/Uncompress/Brotli.pm blib\lib\IO\Uncompress\Brotli.pm
cp Brotli/tests/testdata/x.compressed.02 blib\lib\IO\Compress\Brotli\tests\testdata\x.compressed.02
cp Brotli/tests/testdata/zeros blib\lib\IO\Compress\Brotli\tests\testdata\zeros
cp Brotli/tests/testdata/zeros.compressed blib\lib\IO\Compress\Brotli\tests\testdata\zeros.compressed
cp Brotli/tests/testdata/xyzzy blib\lib\IO\Compress\Brotli\tests\testdata\xyzzy
cp Brotli/tests/testdata/xyzzy.compressed blib\lib\IO\Compress\Brotli\tests\testdata\xyzzy.compressed
cp Brotli/tests/testdata/x.compressed.03 blib\lib\IO\Compress\Brotli\tests\testdata\x.compressed.03
cd brotli && CFLAGS=-fPIC `which gmake || echo gmake` lib
'CFLAGS' is not recognized as an internal or external command,
operable program or batch file.
gmake` lib
Running Mkbootstrap for Brotli ()
"C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "Brotli.bs"
"C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- Brotli.bs blib\arch\auto\IO\Compress\Brotli\Brotli.bs 644
"C:\Strawberry\perl\bin\perl.exe" "C:\Strawberry\perl\site\lib\ExtUtils/xsubpp" -typemap C:\STRAWB~1\perl\lib\ExtUtils\typemap -typemap C:\STRAWB~1\cpan\build\IO-Compress-Brotli-0.004001-1\typemap Brotli.xs > Brotli.xsc
"C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e mv -- Brotli.xsc Brotli.c
gcc -c -Ibrotli/c/include -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -D__USE_MINGW_ANSI_STDIO -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fwrapv -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0.004001\" -DXS_VERSION=\"0.004001\" "-IC:\STRAWB~1\perl\lib\CORE" Brotli.c
"C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \
-e "Mksymlists('NAME'=>\"IO::Compress::Brotli\", 'DLBASE' => 'Brotli', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);"
g++ Brotli.def -o blib\arch\auto\IO\Compress\Brotli\Brotli.xs.dll -mdll -s -L"C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib" Brotli.o brotli/libbrotli.a "C:\STRAWB~1\perl\lib\CORE\libperl526.a" -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -Wl,--enable-auto-image-base
g++: error: brotli/libbrotli.a: No such file or directory
gmake: *** [Makefile:639: blib\arch\auto\IO\Compress\Brotli\Brotli.xs.dll] Error 1
MGV/IO-Compress-Brotli-0.004001.tar.gz
C:\STRAWB~1\c\bin\gmake.exe -- NOT OK
Running install for module 'IO::Compress::Brotli'
MGV/IO-Compress-Brotli-0.004001.tar.gz
Has already been unwrapped into directory C:\STRAWB~1\cpan\build\IO-Compress-Brotli-0.004001-1
MGV/IO-Compress-Brotli-0.004001.tar.gz
Has already been prepared
MGV/IO-Compress-Brotli-0.004001.tar.gz
Could not make: Unknown error
Failed during this command:
(optional) MGV/IO-Compress-Brotli-0.004001.tar.gz: make NO
cpan> i HTTP::Message
Module id = HTTP::Message
CPAN_USERID OALDERS (Olaf Alders <olaf@wundersolutions.com>)
CPAN_VERSION 6.44
CPAN_FILE O/OA/OALDERS/HTTP-Message-6.44.tar.gz
UPLOAD_DATE 2022-10-26
MANPAGE HTTP::Message - HTTP style message (base class)
INST_FILE C:\Strawberry\perl\site\lib\HTTP\Message.pm
INST_VERSION 6.44
cpan> q
Lockfile removed.
C:\Users\Phil\Desktop>
Note that HTTP::Message itself does install. IO::Compress::Brotli (corequisite?) blows up during installation due to no libbrotli.a and a possible syntax error (thinks CFLAGS is a command). It's mostly a nuisance that Brotli fails to install, but if it ever was needed, that could cause HTTP::Message to fail.
Note that I do not normally manually install like this. I have a Perl script that loops through Perl 5.24, 5.26, and 5.32, invokes cpan, does an 'r', filters out known problem versions that either won't work on this Perl level (such as 'B') or have already been tried (and failed). Then the survivors get an upgrade done for them.
My understanding is that, with CPAN, even if you list something as optional, it will still try to install it. If it fails, the install still passes (so long as mandatory/required items install successfully). I think that's happening here. It's a nuisance to wade through the messages to see that a "failed" install doesn't really matter, so I'm asking you to consider whether to support Brotli at all. Maybe you can check if the installation is on Windows, and build the Makefile not to request Brotli? You would probably want a dummy stub for Brotli, so that users are told why there are failures if using Brotli compression.