forked from pool/openssl-1_1
02427a3414
* All the minor versions of the 1.1.x openssl branch have the same sonum and keep ABI compatibility - Remove bit obsolete syntax - Use %license macro - Don't disable afalgeng on aarch64 - Add support for s390x CPACF enhancements (fate#321518) patches taken from https://github.com/openssl/openssl/pull/2859: * 0002-crypto-modes-asm-ghash-s390x.pl-fix-gcm_gmult_4bit-K.patch * 0004-s390x-assembly-pack-add-OPENSSL_s390xcap-environment.patch * 0005-s390x-assembly-pack-add-OPENSSL_s390xcap-man-page.patch * 0006-s390x-assembly-pack-extended-s390x-capability-vector.patch * 0007-crypto-evp-e_aes.c-add-foundations-for-extended-s390.patch * 0008-s390x-assembly-pack-extended-s390x-capability-vector.patch * 0009-crypto-aes-asm-aes-s390x.pl-add-KMA-code-path.patch * 0010-doc-man3-OPENSSL_s390xcap.pod-update-KMA.patch * 0011-crypto-aes-asm-aes-s390x.pl-add-CFI-annotations-KMA-.patch * 0012-s390x-assembly-pack-add-KMA-code-path-for-aes-gcm.patch * 0013-crypto-aes-asm-aes-s390x.pl-add-CFI-annotations-KMA-.patch - Do not filter pkgconfig() provides/requires. - Obsolete openssl-1_0_0 by openssl-1_1_0: this is required for a clean upgrade path as an aid to zypp (boo#1070003). - Update to 1.1.0g OpenSSL Security Advisory [02 Nov 2017] OBS-URL: https://build.opensuse.org/package/show/security:tls/openssl-1_1?expand=0&rev=2
196 lines
8.6 KiB
Diff
196 lines
8.6 KiB
Diff
From 186a31e510d1326063cfeca17e58fadec236ad2a Mon Sep 17 00:00:00 2001
|
|
From: Richard Levitte <levitte@openssl.org>
|
|
Date: Wed, 9 Nov 2016 20:01:51 +0100
|
|
Subject: [PATCH] Building: make it possible to force linking with static
|
|
OpenSSL libs
|
|
|
|
Very simply, support having the .a extension to denote depending on
|
|
static libraries. Note that this is not supported on native Windows
|
|
when building shared libraries, as there is not static library then,
|
|
just an import library with the same name.
|
|
|
|
Reviewed-by: Rich Salz <rsalz@openssl.org>
|
|
(Merged from https://github.com/openssl/openssl/pull/1889)
|
|
---
|
|
Configurations/common.tmpl | 14 +++++++++++---
|
|
Configurations/descrip.mms.tmpl | 23 ++++++++++++++---------
|
|
Configurations/unix-Makefile.tmpl | 19 ++++++++++++-------
|
|
Configurations/windows-makefile.tmpl | 4 +++-
|
|
Configure | 7 +++++++
|
|
5 files changed, 47 insertions(+), 20 deletions(-)
|
|
|
|
Index: openssl-1.1.0e/Configurations/common.tmpl
|
|
===================================================================
|
|
--- openssl-1.1.0e.orig/Configurations/common.tmpl
|
|
+++ openssl-1.1.0e/Configurations/common.tmpl
|
|
@@ -9,15 +9,22 @@
|
|
# there are no duplicate dependencies and that they are in the
|
|
# right order. This is especially used to sort the list of
|
|
# libraries that a build depends on.
|
|
+ sub extensionlesslib {
|
|
+ my @result = map { $_ =~ /(\.a)?$/; $` } @_;
|
|
+ return @result if wantarray;
|
|
+ return $result[0];
|
|
+ }
|
|
sub resolvedepends {
|
|
my $thing = shift;
|
|
+ my $extensionlessthing = extensionlesslib($thing);
|
|
my @listsofar = @_; # to check if we're looping
|
|
- my @list = @{$unified_info{depends}->{$thing}};
|
|
+ my @list = @{$unified_info{depends}->{$extensionlessthing}};
|
|
my @newlist = ();
|
|
if (scalar @list) {
|
|
foreach my $item (@list) {
|
|
+ my $extensionlessitem = extensionlesslib($item);
|
|
# It's time to break off when the dependency list starts looping
|
|
- next if grep { $_ eq $item } @listsofar;
|
|
+ next if grep { extensionlesslib($_) eq $extensionlessitem } @listsofar;
|
|
push @newlist, $item, resolvedepends($item, @listsofar, $item);
|
|
}
|
|
}
|
|
@@ -28,8 +35,9 @@
|
|
my @newlist = ();
|
|
while (@list) {
|
|
my $item = shift @list;
|
|
+ my $extensionlessitem = extensionlesslib($item);
|
|
push @newlist, $item
|
|
- unless grep { $item eq $_ } @list;
|
|
+ unless grep { $extensionlessitem eq extensionlesslib($_) } @list;
|
|
}
|
|
@newlist;
|
|
}
|
|
Index: openssl-1.1.0e/Configurations/descrip.mms.tmpl
|
|
===================================================================
|
|
--- openssl-1.1.0e.orig/Configurations/descrip.mms.tmpl
|
|
+++ openssl-1.1.0e/Configurations/descrip.mms.tmpl
|
|
@@ -524,6 +524,17 @@ configdata.pm : $(SRCDIR)Configure $(SRC
|
|
use File::Basename;
|
|
use File::Spec::Functions qw/abs2rel rel2abs catfile catdir/;
|
|
|
|
+ # Helper function to figure out dependencies on libraries
|
|
+ # It takes a list of library names and outputs a list of dependencies
|
|
+ sub compute_lib_depends {
|
|
+ if ($disabled{shared}) {
|
|
+ return map { $_ =~ /\.a$/ ? $`.".OLB" : $_.".OLB" } @_;
|
|
+ }
|
|
+ return map { $_ =~ /\.a$/
|
|
+ ? $`.".OLB"
|
|
+ : $unified_info{sharednames}->{$_}.".EXE" } @_;
|
|
+ }
|
|
+
|
|
sub generatesrc {
|
|
my %args = @_;
|
|
my $generator = join(" ", @{$args{generator}});
|
|
@@ -619,9 +630,7 @@ EOF
|
|
my $libd = dirname($lib);
|
|
my $libn = basename($lib);
|
|
(my $mkdef_key = $libn) =~ s/^${osslprefix_q}lib([^0-9]*)\d*/$1/i;
|
|
- my @deps = map {
|
|
- $disabled{shared} ? $_.".OLB"
|
|
- : $unified_info{sharednames}->{$_}.".EXE"; } @{$args{deps}};
|
|
+ my @deps = compute_lib_depends(@{$args{deps}});
|
|
my $deps = join(", -\n\t\t", @deps);
|
|
my $shlib_target = $disabled{shared} ? "" : $target{shared_target};
|
|
my $ordinalsfile = defined($args{ordinals}) ? $args{ordinals}->[1] : "";
|
|
@@ -667,9 +676,7 @@ EOF
|
|
my $libn = basename($lib);
|
|
(my $libn_nolib = $libn) =~ s/^lib//;
|
|
my @objs = map { "$_.OBJ" } @{$args{objs}};
|
|
- my @deps = map {
|
|
- $disabled{shared} ? $_.".OLB"
|
|
- : $unified_info{sharednames}->{$_}.".EXE"; } @{$args{deps}};
|
|
+ my @deps = compute_lib_depends(@{$args{deps}});
|
|
my $deps = join(", -\n\t\t", @objs, @deps);
|
|
my $shlib_target = $disabled{shared} ? "" : $target{shared_target};
|
|
my $engine_opt = abs2rel(rel2abs(catfile($config{sourcedir},
|
|
@@ -719,9 +726,7 @@ EOF
|
|
my $bind = dirname($bin);
|
|
my $binn = basename($bin);
|
|
my @objs = map { "$_.OBJ" } @{$args{objs}};
|
|
- my @deps = map {
|
|
- $disabled{shared} ? $_.".OLB"
|
|
- : $unified_info{sharednames}->{$_}.".EXE"; } @{$args{deps}};
|
|
+ my @deps = compute_lib_depends(@{$args{deps}});
|
|
my $deps = join(", -\n\t\t", @objs, @deps);
|
|
# The "[]" hack is because in .OPT files, each line inherits the
|
|
# previous line's file spec as default, so if no directory spec
|
|
Index: openssl-1.1.0e/Configurations/unix-Makefile.tmpl
|
|
===================================================================
|
|
--- openssl-1.1.0e.orig/Configurations/unix-Makefile.tmpl
|
|
+++ openssl-1.1.0e/Configurations/unix-Makefile.tmpl
|
|
@@ -837,13 +837,13 @@ configdata.pm: $(SRCDIR)/Configure $(SRC
|
|
# It takes a list of library names and outputs a list of dependencies
|
|
sub compute_lib_depends {
|
|
if ($disabled{shared}) {
|
|
- return map { $_.$libext } @_;
|
|
+ return map { $_ =~ /\.a$/ ? $`.$libext : $_.$libext } @_;
|
|
}
|
|
|
|
# Depending on shared libraries:
|
|
# On Windows POSIX layers, we depend on {libname}.dll.a
|
|
# On Unix platforms, we depend on {shlibname}.so
|
|
- return map { shlib_simple($_) } @_;
|
|
+ return map { $_ =~ /\.a$/ ? $`.$libext : shlib_simple($_) } @_;
|
|
}
|
|
|
|
sub generatesrc {
|
|
@@ -1056,11 +1056,16 @@ EOF
|
|
my $binn = basename($bin);
|
|
my $objs = join(" ", map { $_.$objext } @{$args{objs}});
|
|
my $deps = join(" ",compute_lib_depends(@{$args{deps}}));
|
|
- my $linklibs = join("", map { my $d = dirname($_);
|
|
- my $f = basename($_);
|
|
- $d = "." if $d eq $f;
|
|
- (my $l = $f) =~ s/^lib//;
|
|
- " -L$d -l$l" } @{$args{deps}});
|
|
+ my $linklibs = join("", map { if ($_ =~ /\.a$/) {
|
|
+ " $_";
|
|
+ } else {
|
|
+ my $d = dirname($_);
|
|
+ my $f = basename($_);
|
|
+ $d = "." if $d eq $f;
|
|
+ (my $l = $f) =~ s/^lib//;
|
|
+ " -L$d -l$l"
|
|
+ }
|
|
+ } @{$args{deps}});
|
|
my $shlib_target = $disabled{shared} ? "" : $target{shared_target};
|
|
return <<"EOF";
|
|
$bin$exeext: $objs $deps
|
|
Index: openssl-1.1.0e/Configurations/windows-makefile.tmpl
|
|
===================================================================
|
|
--- openssl-1.1.0e.orig/Configurations/windows-makefile.tmpl
|
|
+++ openssl-1.1.0e/Configurations/windows-makefile.tmpl
|
|
@@ -342,8 +342,10 @@ configdata.pm: "$(SRCDIR)\Configure" {-
|
|
# It takes a list of library names and outputs a list of dependencies
|
|
sub compute_lib_depends {
|
|
if ($disabled{shared}) {
|
|
- return map { $_.$libext } @_;
|
|
+ return map { $_ =~ /\.a$/ ? $`.$libext : $_.$libext } @_;
|
|
}
|
|
+ die "Linking with static OpenSSL libraries is not supported in this configuration\n"
|
|
+ if grep /\.a$/, @_;
|
|
return map { shlib_import($_) } @_;
|
|
}
|
|
|
|
Index: openssl-1.1.0e/Configure
|
|
===================================================================
|
|
--- openssl-1.1.0e.orig/Configure
|
|
+++ openssl-1.1.0e/Configure
|
|
@@ -1838,9 +1838,16 @@ EOF
|
|
$d = cleanfile($buildd, $_, $blddir);
|
|
}
|
|
# Take note if the file to depend on is being renamed
|
|
+ # Take extra care with files ending with .a, they should
|
|
+ # be treated without that extension, and the extension
|
|
+ # should be added back after treatment.
|
|
+ $d =~ /(\.a)?$/;
|
|
+ my $e = $1 // "";
|
|
+ $d = $`;
|
|
if ($unified_info{rename}->{$d}) {
|
|
$d = $unified_info{rename}->{$d};
|
|
}
|
|
+ $d .= $e;
|
|
$unified_info{depends}->{$ddest}->{$d} = 1;
|
|
# If we depend on a header file or a perl module, let's make
|
|
# sure it can get included
|