From 9afc2b92fe6725336f9c7d917deb5ca8c5e4011b Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Tue, 23 Oct 2018 15:42:46 +0200 Subject: [PATCH] Rework building: adapt some scripts The platform module collection is made in such a way that any Perl script that wants to take part of the available information can use them just as well as the build system. This change adapts test/recipes/90-test_shlibload.t, util/mkdef.pl, and util/shlib_wrap.sh.in Reviewed-by: Tim Hudson Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/7473) --- test/recipes/90-test_shlibload.t | 25 +++++-------------------- util/mkdef.pl | 6 +++++- util/shlib_wrap.sh.in | 20 ++++---------------- 3 files changed, 14 insertions(+), 37 deletions(-) diff --git a/test/recipes/90-test_shlibload.t b/test/recipes/90-test_shlibload.t index ea8aeeb7d5..1f097edaf6 100644 --- a/test/recipes/90-test_shlibload.t +++ b/test/recipes/90-test_shlibload.t @@ -6,7 +6,7 @@ # in the file LICENSE in the source distribution or at # https://www.openssl.org/source/license.html -use OpenSSL::Test qw/:DEFAULT bldtop_dir bldtop_file/; +use OpenSSL::Test qw/:DEFAULT srctop_dir bldtop_dir/; use OpenSSL::Test::Utils; use File::Temp qw(tempfile); @@ -15,21 +15,17 @@ use File::Temp qw(tempfile); BEGIN { setup("test_shlibload"); } +use lib srctop_dir('Configurations'); use lib bldtop_dir('.'); -use configdata; +use platform; plan skip_all => "Test only supported in a shared build" if disabled("shared"); plan skip_all => "Test is disabled on AIX" if config('target') =~ m|^aix|; plan tests => 10; -# When libssl and libcrypto are compiled on Linux with "-rpath", but not -# "--enable-new-dtags", the RPATH takes precedence over LD_LIBRARY_PATH, -# and we end up running with the wrong libraries. This is resolved by -# using paths to the shared objects, not just the names. - -my $libcrypto = bldtop_file(shlib('libcrypto')); -my $libssl = bldtop_file(shlib('libssl')); +my $libcrypto = platform->sharedlib('libcrypto'); +my $libssl = platform->sharedlib('libssl'); (my $fh, my $filename) = tempfile(); ok(run(test(["shlibloadtest", "-crypto_first", $libcrypto, $libssl, $filename])), @@ -57,17 +53,6 @@ ok(run(test(["shlibloadtest", "-no_atexit", $libcrypto, $libssl, $filename])), ok(!check_atexit($fh)); unlink $filename; -sub shlib { - my $lib = shift; - $lib = $unified_info{rename}->{$lib} - if defined $unified_info{rename}->{$lib}; - $lib = $unified_info{sharednames}->{$lib} - . ($target{shlib_variant} || "") - . ($target{shared_extension} || ".so"); - $lib =~ s|\.\$\(SHLIB_VERSION_NUMBER\)|.$config{shlib_version}|; - return $lib; -} - sub check_atexit { my $fh = shift; my $data = <$fh>; diff --git a/util/mkdef.pl b/util/mkdef.pl index 8f37fbe3ff..83c9d7996d 100755 --- a/util/mkdef.pl +++ b/util/mkdef.pl @@ -21,6 +21,10 @@ use OpenSSL::Ordinals; use lib '.'; use configdata; +use File::Spec::Functions; +use lib catdir($config{sourcedir}, 'Configurations'); +use platform; + my $name = undef; # internal library/module name my $ordinals_file = undef; # the ordinals file to use my $version = undef; # the version to use for the library @@ -100,7 +104,7 @@ my $apiv = undef; $apiv = sprintf "%x%02x%02x", split(/\./, $config{api}) if $config{api}; -my $libname = $unified_info{sharednames}->{$name} // $name; +my $libname = platform->sharedname($name); my %OS_data = ( solaris => { writer => \&writer_linux, diff --git a/util/shlib_wrap.sh.in b/util/shlib_wrap.sh.in index fc0687d75e..7024cafbd3 100755 --- a/util/shlib_wrap.sh.in +++ b/util/shlib_wrap.sh.in @@ -2,20 +2,8 @@ {- use lib '.'; use configdata; - - sub shlib { - my $lib = shift; - return "" if $disabled{shared}; - $lib = $unified_info{rename}->{$lib} - if defined $unified_info{rename}->{$lib}; - $lib = $unified_info{sharednames}->{$lib} - . ($target{shlib_variant} || "") - . ($target{shared_extension} || ".so"); - $lib =~ s|\.\$\(SHLIB_VERSION_NUMBER\) - |.$config{shlib_version}|x; - return $lib; - } - ""; # Make sure no left over string sneaks its way into the script + use lib catdir($config{sourcedir}, 'Configurations'); + use platform; -} # To test this OpenSSL version's applications against another version's # shared libraries, simply set @@ -42,8 +30,8 @@ fi THERE="`echo $0 | sed -e 's|[^/]*$||' 2>/dev/null`.." [ -d "${THERE}" ] || exec "$@" # should never happen... -LIBCRYPTOSO="${THERE}/{- shlib('libcrypto') -}" -LIBSSLSO="${THERE}/{- shlib('libssl') -}" +LIBCRYPTOSO="${THERE}/{- platform->sharedlib('libcrypto') -}" +LIBSSLSO="${THERE}/{- platform->sharedlib('libssl') -}" SYSNAME=`(uname -s) 2>/dev/null`; case "$SYSNAME" in