gugod / App-perlbrew

Manage perl installations in your $HOME
https://perlbrew.pl
Other
719 stars 216 forks source link

Preventing Compress::Raw::Zlib From Installing "private" Version of Zlib #791

Closed jlpoolen closed 1 year ago

jlpoolen commented 1 year ago

I successfully installed perlbrew version 0.980 and have logged bug #914503 in Gentoo to "version bump" 0.980.0 into Gentoo's portage build system. The package has been added to portage. Below is my system showing my local version of the package which was a copy of the 0.970.0 with just the version changed.

jlpoole@GenPi64 ~ $ eix -I perlbrew
[I] dev-perl/App-perlbrew
     Available versions:  (*)0.920.0-r1^t (*)0.970.0^t (*)0.980.0^t{gpkg}[1] {test}
     Installed versions:  0.980.0{gpkg}[1](12:16:26 PM 09/18/2023)(test)
     Homepage:            https://metacpan.org/release/App-perlbrew
     Description:         Manage perl installations in your $HOME

[1] "local" /var/db/repos/local
jlpoole@GenPi64 ~ $

With perlbrew, I'm trying to install perl-5.20.3 on a Gentoo Linux system for the Raspberry Pi 4B/Zero 2 W using the GenPi64 project image.

I getting some failures on the build, specifically relating to Compress::Raw::Zlib. See build.perl-5.20.3.log_20230922_1650.log starting at line 8498.

    #   Failed test 'ZLIB_VERSION (1.2.8) matches Compress::Raw::Zlib::zlib_version'
    #   at t/01version.t line 34.
    #          got: '1.2.8'
    #     expected: '1.2.13'
    # 
    # The version of zlib.h does not match the version of libz
    #  
    # You have zlib.h version 1.2.8
    #      and libz   version 1.2.13
    # 

What is happening is that Compress::Raw::Zlib is installing it's own version of zlib, v. 1.2.8 and that conflicts with my system's version of 1.2.13. The README for Compress::Raw::Zlib has a section "Controlling the version of zlib used by Compress-Raw-Zlib" to modify one of its files. Option 3 looks like the option I should use. Unfortunately, since perlbrew is automatically bringing in the package, I cannot modify the file the package owner recommends.

Question: Is there a way to patch files in perlbrew?

I studied the code for Compress::Raw::Zlib and concluded I might be able to "game" his build system by simply having the environmental variable BUILD_ZLIB set, so I tried exporting: export BUILD_ZLIB="False" and when that did not accomplish my goal, I studied the code more carefully and noticed the author use "0" as false, so I tried: export BUILD_ZLIB=0 but neither worked. I had hoped since the package is able to locate my installed libraries that it would be sufficient to try and pass an environmental variable BUILD_ZLIB with a value of 0 to trigger a no build so that my existing 1.2.13 libraries are used and no discrepancy is found.

What can be done to overcome this problem. I have not studied any further problems reported out in the log (lines 10,445+), but earlier saw that the compression failure was showing up in other tests, too, so I have focused on fixing this problem.

jlpoolen commented 1 year ago

I decided that the errors are a result of the tests and probably will not affect my ability to use compression as I have the library installed on the main system.

Works for me, I read further and performed:

 cd /home/jlpoole/perl5/perlbrew/build/perl-5.20.3/perl-5.20.3
 make install

The only other error had to do with a Gnu database manager which I doubt I'll every use in the context of an older release such as 5.20.3.