From: Richard Levitte Date: Fri, 22 Jan 2016 11:37:31 +0000 (+0100) Subject: Refactor file writing - arrange for use of bundled Perl modules as fallback X-Git-Tag: OpenSSL_1_1_0-pre3~449 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=35c3a562c74aba6e3ac3d577a356b314a151740e;p=openssl Refactor file writing - arrange for use of bundled Perl modules as fallback For our own convenience, we need a mechanism to be able to fall back on bundled Perl modules. It's a minimal package that's called like this: use with_fallback qw(Module1 Module2 ...); For each module, it will try to require them from the system installation, and failing that, it will temporarly add external/perl and try to require transfer::{ModuleName}. It requires that each bundled Perl modules is accompanied by a small transfer module (external/perl/transfer/ModuleName.pm in our example) that knows exactly what to load. Reviewed-by: Rich Salz --- diff --git a/util/with_fallback.pm b/util/with_fallback.pm new file mode 100644 index 0000000000..014f355156 --- /dev/null +++ b/util/with_fallback.pm @@ -0,0 +1,19 @@ +#! /usr/bin/perl + +package with_fallback; + +sub import { + use File::Basename; + use File::Spec::Functions; + foreach (@_) { + eval "require $_"; + if ($@) { + unshift @INC, catdir(dirname(__FILE__), "..", "external", "perl"); + my $transfer = "transfer::$_"; + eval "require $transfer"; + shift @INC; + warn $@ if $@; + } + } +} +1;