| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| package Apache::Test5005compat; |
| |
| use strict; |
| use Symbol (); |
| use File::Basename; |
| use File::Path; |
| |
| $Apache::Test5005compat::VERSION = '0.01'; |
| |
| my %compat_files = ( |
| 'lib/warnings.pm' => \&warnings_pm, |
| ); |
| |
| sub import { |
| if ($] >= 5.006) { |
| #make sure old compat stubs dont wipe out installed versions |
| unlink for keys %compat_files; |
| return; |
| } |
| |
| eval { require File::Spec::Functions; } or |
| die "this is only Perl $], you need to install File-Spec from CPAN"; |
| |
| my $min_version = 0.82; |
| unless ($File::Spec::VERSION >= $min_version) { |
| die "you need to install File-Spec-$min_version or higher from CPAN"; |
| } |
| |
| while (my($file, $sub) = each %compat_files) { |
| $sub->($file); |
| } |
| } |
| |
| sub open_file { |
| my $file = shift; |
| |
| unless (-d 'lib') { |
| $file = "Apache-Test/$file"; |
| } |
| |
| my $dir = dirname $file; |
| |
| unless (-d $dir) { |
| mkpath([$dir], 0, 0755); |
| } |
| |
| my $fh = Symbol::gensym(); |
| print "creating $file\n"; |
| open $fh, ">$file" or die "open $file: $!"; |
| |
| return $fh; |
| } |
| |
| sub warnings_pm { |
| return if eval { require warnings }; |
| |
| my $fh = open_file(shift); |
| |
| print $fh <<'EOF'; |
| package warnings; |
| |
| sub import {} |
| |
| 1; |
| EOF |
| |
| close $fh; |
| } |
| |
| 1; |