Am Sa 12. Mär 2016, 21:33:43, ETHER schrieb:
Show quoted text> Digest::SHA is in core and should be used preferentially over Digest::SHA1.
+1
This would be really great and only two lines have to be changed:
in Makefile.PL line 14: Change 'Digest::SHA1' in 'Digest::SHA'
and do the same in the File lib/Cache/FileBackend.pm in line 15.
I know Cache::Cache is no longer actively developed. But this is really such a minimal change at has such a huge effect. You then wouldn't need a compiler any more (which is important e.g. in some CGI/Web context). An advantage also compared to CHI!!!
In the meantime I saw that Cache also seems not to need a compiler.
For easier implementation you find the two files attached. Thanks a lot for all your great work!!!
Message body is not shown because it is too large.
use strict;
use ExtUtils::MakeMaker;
##
# Constants
##
my $NAME = 'Cache::Cache';
my $VERSION_FROM = 'lib/Cache/Cache.pm';
my $COMPRESS = 'gzip';
my $SUFFIX = '.gz';
my $DEFAULT_PREREQ_PM = {
'Digest::SHA' => '0',
'File::Spec' => '0.82',
'Storable' => '1.014',
'IPC::ShareLite' => '0.09',
'Error' => '0.15'
};
my @NON_IPC_TESTS = ( 't/1_test_cache_interface.t',
't/2_test_memory_cache.t',
't/3_test_file_cache.t',
't/5_test_size_aware_file_cache.t',
't/6_test_size_aware_memory_cache.t' );
##
# Main
##
Main( );
##
# Subroutines
##
sub Main
{
my %options;
$options{NAME} = $NAME;
$options{VERSION_FROM} = $VERSION_FROM;
$options{dist} = { COMPRESS => $COMPRESS, SUFFIX => $SUFFIX };
$options{PREREQ_PM} = $DEFAULT_PREREQ_PM;
if ( not Has_Module( 'IPC::ShareLite' ) )
{
Print_ShareLite_Missing_Message( );
$options{test} = { TESTS => join( ' ', @NON_IPC_TESTS ) };
delete $options{PREREQ_PM}->{'IPC::ShareLite'};
}
WriteMakefile( %options );
Print_Make_Test_Message( );
}
sub Has_Module
{
my ( $module ) = @_;
print "Checking for $module... ";
my $has_module = ( eval "require $module" && ! $@ );
print ( $has_module ? "found\n" : "not found\n" );
return $has_module;
}
sub Print_ShareLite_Missing_Message
{
print <<END
NOTE: Your system does not seem to have IPC::ShareLite installed.
This module is a prerequisite for the SharedMemoryCache
implementations. However, since it is not available on all
platforms, the Cache::Cache module does not list it as an explicit
dependency. If you are able to build IPC::ShareLite (available on
CPAN), please install it now and re run this Makefile.PL.
Automatically disabling the tests for the SharedMemoryCache.
END
}
sub Print_Make_Test_Message
{
print <<END
------------------------------------------------------------------
Please be patient while running "make test" as the full test suite
takes roughly two minutes to complete.
------------------------------------------------------------------
END
}