Skip to content

Commit 1a62356

Browse files
author
Branan Riley
authored
Merge pull request #82 from caseywilliams/PA-1941/openssl-1.1.0
(PA-1941) Add OpenSSL 1.1.0
2 parents 52aec41 + 5ce6df8 commit 1a62356

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+1007
-227
lines changed

configs/components/_base-ruby-selinux.rb

-5
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,6 @@
2929
end
3030

3131
pkg.build_requires "ruby-#{ruby_version}"
32-
pkg.build_requires "swig"
33-
pkg.build_requires "libsepol"
34-
pkg.build_requires "libsepol-devel"
35-
pkg.build_requires "libselinux-devel"
36-
3732
cc = "/opt/pl-build-tools/bin/gcc"
3833
system_include = "-I/usr/include"
3934
ruby = "#{ruby_bindir}/ruby -rrbconfig"

configs/components/_base-ruby.rb

+21-31
Original file line numberDiff line numberDiff line change
@@ -58,41 +58,17 @@
5858
# BUILD REQUIREMENTS
5959
####################
6060

61-
if settings[:system_openssl]
62-
pkg.build_requires 'openssl-devel'
63-
else
64-
pkg.build_requires 'openssl'
61+
unless settings[:system_openssl]
62+
pkg.build_requires "openssl-#{settings[:openssl_version]}"
6563
end
6664

6765
if platform.is_aix?
6866
pkg.build_requires "runtime-#{settings[:runtime_project]}"
69-
pkg.build_requires 'libedit'
7067
elsif platform.is_solaris?
7168
pkg.build_requires "runtime-#{settings[:runtime_project]}"
72-
pkg.build_requires 'libedit'
73-
if platform.architecture == 'sparc'
74-
if platform.os_version == '11'
75-
pkg.build_requires 'pl-ruby'
76-
end
77-
end
69+
pkg.build_requires "libedit" if platform.name =~ /^solaris-10-sparc/
7870
elsif platform.is_cross_compiled_linux?
7971
pkg.build_requires "runtime-#{settings[:runtime_project]}"
80-
pkg.build_requires 'pl-ruby'
81-
elsif platform.is_windows?
82-
pkg.build_requires "pl-gdbm-#{platform.architecture}"
83-
pkg.build_requires "pl-iconv-#{platform.architecture}"
84-
pkg.build_requires "pl-libffi-#{platform.architecture}"
85-
pkg.build_requires "pl-pdcurses-#{platform.architecture}"
86-
end
87-
88-
if platform.is_aix?
89-
# Do nothing here, all package requirements in the platform file
90-
elsif platform.is_deb?
91-
pkg.build_requires 'zlib1g-dev'
92-
elsif platform.is_rpm?
93-
pkg.build_requires 'zlib-devel'
94-
elsif platform.is_windows?
95-
pkg.build_requires "pl-zlib-#{platform.architecture}"
9672
end
9773

9874
#######
@@ -138,13 +114,27 @@
138114
# https://tickets.puppetlabs.com/browse/RE-7593 for details on why this causes
139115
# failures and why these copies fix that.
140116
# -Sean P. McDonald 07/01/2016
141-
lib_type = platform.architecture == "x64" ? "seh" : "sjlj"
117+
if platform.architecture == "x64"
118+
gcc_postfix = 'seh'
119+
ssl_postfix = '-x64'
120+
else
121+
gcc_postfix = 'sjlj'
122+
ssl_postfix = ''
123+
end
124+
125+
if Gem::Version.new(settings[:openssl_version]) >= Gem::Version.new('1.1.0')
126+
ssl_lib = "libssl-1_1#{ssl_postfix}.dll"
127+
crypto_lib = "libcrypto-1_1#{ssl_postfix}.dll"
128+
else
129+
ssl_lib = "ssleay32.dll"
130+
crypto_lib = "libeay32.dll"
131+
end
142132

143133
pkg.install do
144134
[
145-
"cp #{settings[:bindir]}/libgcc_s_#{lib_type}-1.dll #{ruby_bindir}",
146-
"cp #{settings[:bindir]}/ssleay32.dll #{ruby_bindir}",
147-
"cp #{settings[:bindir]}/libeay32.dll #{ruby_bindir}",
135+
"cp #{settings[:bindir]}/libgcc_s_#{gcc_postfix}-1.dll #{ruby_bindir}",
136+
"cp #{settings[:bindir]}/#{ssl_lib} #{ruby_bindir}",
137+
"cp #{settings[:bindir]}/#{crypto_lib} #{ruby_bindir}",
148138
]
149139
end
150140

configs/components/augeas.rb

-12
Original file line numberDiff line numberDiff line change
@@ -50,30 +50,19 @@
5050
end
5151

5252
if platform.is_rpm? && !platform.is_aix?
53-
pkg.build_requires 'readline-devel'
54-
pkg.build_requires 'pkgconfig'
55-
56-
if platform.is_cisco_wrlinux?
57-
pkg.requires 'libreadline6'
58-
else
59-
pkg.requires 'readline'
60-
end
61-
6253
if platform.architecture =~ /aarch64|ppc64le|s390x/
6354
pkg.build_requires "runtime-#{settings[:runtime_project]}"
6455
pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}"
6556
pkg.environment "CFLAGS", settings[:cflags]
6657
pkg.environment "LDFLAGS", settings[:ldflags]
6758
end
6859
elsif platform.is_deb?
69-
pkg.build_requires 'libreadline-dev'
7060
if platform.name =~ /debian-9/
7161
pkg.requires 'libreadline7'
7262
else
7363
pkg.requires 'libreadline6'
7464
end
7565

76-
pkg.build_requires 'pkg-config'
7766
if platform.is_cross_compiled_linux?
7867
pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}"
7968
pkg.environment "CFLAGS", settings[:cflags]
@@ -90,7 +79,6 @@
9079
pkg.environment "PKG_CONFIG_PATH", "/opt/csw/lib/pkgconfig"
9180
pkg.environment "PKG_CONFIG", "/opt/csw/bin/pkg-config"
9281
else
93-
pkg.build_requires 'pl-pkg-config'
9482
pkg.environment "PKG_CONFIG_PATH", "/usr/lib/pkgconfig"
9583
pkg.environment "PKG_CONFIG", "/opt/pl-build-tools/bin/pkg-config"
9684
end

configs/components/boost.rb

-30
Original file line numberDiff line numberDiff line change
@@ -28,36 +28,6 @@
2828
pkg.apply_patch 'resources/patches/boost/windows-thread-declare-do_try_join_until-as-inline.patch'
2929
end
3030

31-
# Package Dependency Metadata
32-
33-
# Build Requirements
34-
if platform.is_cross_compiled_linux?
35-
pkg.build_requires "pl-binutils-#{platform.architecture}"
36-
pkg.build_requires "pl-gcc-#{platform.architecture}"
37-
elsif platform.is_aix?
38-
#
39-
elsif platform.is_solaris?
40-
#
41-
elsif platform.is_windows?
42-
#
43-
elsif platform.is_macos?
44-
#
45-
else
46-
pkg.build_requires "pl-gcc"
47-
# Various Linux platforms
48-
case platform.name
49-
when /el|fedora/
50-
pkg.build_requires 'bzip2-devel'
51-
pkg.build_requires 'zlib-devel'
52-
when /sles-(11|12)/
53-
pkg.build_requires 'libbz2-devel'
54-
pkg.build_requires 'zlib-devel'
55-
when /debian|ubuntu|Cumulus/i
56-
pkg.build_requires 'libbz2-dev'
57-
pkg.build_requires 'zlib1g-dev'
58-
end
59-
end
60-
6131
# Build-time Configuration
6232

6333
boost_libs = settings[:boost_libs] || ['atomic', 'chrono', 'container', 'date_time', 'exception', 'filesystem',

configs/components/curl.rb

+2-4
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99
pkg.apply_patch 'resources/patches/curl/curl-7.55.1-aix-poll.patch'
1010
end
1111

12-
if settings[:system_openssl]
13-
pkg.build_requires 'openssl-devel'
14-
else
15-
pkg.build_requires 'openssl'
12+
unless settings[:system_openssl]
13+
pkg.build_requires "openssl-#{settings[:openssl_version]}"
1614
end
1715

1816
pkg.build_requires "puppet-ca-bundle"

configs/components/libxml2.rb

-7
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,12 @@
2222
pkg.environment "LDFLAGS", settings[:ldflags]
2323
pkg.environment "CFLAGS", settings[:cflags]
2424
else
25-
pkg.build_requires "make"
2625
pkg.environment "LDFLAGS" => settings[:ldflags]
2726
pkg.environment "CFLAGS" => settings[:cflags]
2827
end
2928

3029
pkg.build_requires "runtime-#{settings[:runtime_project]}"
3130

32-
# The system pkg-config has been found to pass incorrect build flags on
33-
# some (but not all) cross-compiled debian-based platforms:
34-
if platform.is_cross_compiled? && platform.is_deb?
35-
pkg.build_requires "pl-pkg-config" unless platform.name =~ /ubuntu-16\.04-ppc64el/
36-
end
37-
3831
pkg.configure do
3932
["./configure --prefix=#{settings[:prefix]} --without-python #{settings[:host]}"]
4033
end

configs/components/libxslt.rb

-5
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,10 @@
3131
pkg.environment "LDFLAGS", settings[:ldflags]
3232
pkg.environment "CFLAGS", settings[:cflags]
3333
else
34-
pkg.build_requires "make"
3534
pkg.environment "LDFLAGS" => settings[:ldflags]
3635
pkg.environment "CFLAGS" => settings[:cflags]
3736
end
3837

39-
if platform.is_cross_compiled_linux? || platform.name =~ /solaris-11/
40-
pkg.build_requires "pl-gcc-#{platform.architecture}"
41-
end
42-
4338
pkg.configure do
4439
["./configure --prefix=#{settings[:prefix]} --docdir=/tmp --with-libxml-prefix=#{settings[:prefix]} #{settings[:host]} #{disable_crypto} #{build}"]
4540
end

configs/components/openssl.rb renamed to configs/components/openssl-1.0.2.rb

-19
Original file line numberDiff line numberDiff line change
@@ -69,25 +69,6 @@
6969
####################
7070

7171
pkg.build_requires "runtime-#{settings[:runtime_project]}"
72-
if platform.is_cross_compiled_linux?
73-
# These are needed for the makedepend command
74-
pkg.build_requires 'imake' if platform.name =~ /^el/
75-
pkg.build_requires 'xorg-x11-util-devel' if platform.name =~ /^sles/
76-
pkg.build_requires 'xutils-dev' if platform.is_deb?
77-
elsif platform.is_aix?
78-
# Do nothing, aix requirements are included in platform file
79-
elsif platform.is_macos?
80-
pkg.build_requires 'makedepend'
81-
elsif platform.is_cross_compiled_linux?
82-
pkg.build_requires "pl-binutils-#{platform.architecture}"
83-
pkg.build_requires "pl-gcc-#{platform.architecture}"
84-
85-
if platform.name =~ /debian-8-arm/
86-
pkg.build_requires 'xutils-dev'
87-
end
88-
elsif platform.is_linux?
89-
pkg.build_requires 'pl-gcc'
90-
end
9172

9273
#########
9374
# PATCHES

configs/components/openssl-1.1.0.rb

+151
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
component 'openssl' do |pkg, settings, platform|
2+
pkg.version '1.1.0h'
3+
pkg.md5sum '5271477e4d93f4ea032b665ef095ff24'
4+
pkg.url "https://openssl.org/source/openssl-#{pkg.get_version}.tar.gz"
5+
pkg.mirror "#{settings[:buildsources_url]}/openssl-#{pkg.get_version}.tar.gz"
6+
7+
#############################
8+
# ENVIRONMENT, FLAGS, TARGETS
9+
#############################
10+
11+
target = cflags = ldflags = sslflags = ''
12+
13+
if platform.is_windows?
14+
pkg.environment 'PATH', "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)"
15+
pkg.environment 'CYGWIN', settings[:cygwin]
16+
pkg.environment 'CC', settings[:cc]
17+
pkg.environment 'CXX', settings[:cxx]
18+
pkg.environment 'MAKE', platform[:make]
19+
20+
target = platform.architecture == 'x64' ? 'mingw64' : 'mingw'
21+
cflags = settings[:cflags]
22+
ldflags = settings[:ldflags]
23+
elsif platform.is_cross_compiled_linux?
24+
pkg.environment 'PATH', "/opt/pl-build-tools/bin:$$PATH"
25+
pkg.environment 'CC', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc"
26+
27+
cflags = "#{settings[:cflags]} -fPIC"
28+
ldflags = "-Wl,-rpath=/opt/pl-build-tools/#{settings[:platform_triple]}/lib -Wl,-rpath=#{settings[:libdir]} -L/opt/pl-build-tools/#{settings[:platform_triple]}/lib"
29+
target = if platform.architecture == 'aarch64'
30+
'linux-aarch64'
31+
elsif platform.name =~ /debian-8-arm/
32+
'linux-armv4'
33+
elsif platform.architecture =~ /ppc64/
34+
'linux-ppc64le'
35+
elsif platform.architecture == 's390x'
36+
'linux64-s390x'
37+
end
38+
elsif platform.is_aix?
39+
pkg.environment 'CC', '/opt/pl-build-tools/bin/gcc'
40+
41+
cflags = '$${CFLAGS} -static-libgcc'
42+
target = 'aix-gcc'
43+
elsif platform.is_solaris?
44+
pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin'
45+
pkg.environment 'CC', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc"
46+
47+
cflags = "#{settings[:cflags]} -fPIC"
48+
ldflags = "-R/opt/pl-build-tools/#{settings[:platform_triple]}/lib -Wl,-rpath=#{settings[:libdir]} -L/opt/pl-build-tools/#{settings[:platform_triple]}/lib"
49+
target = platform.architecture =~ /86/ ? 'solaris-x86-gcc' : 'solaris-sparcv9-gcc'
50+
elsif platform.is_macos?
51+
pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin'
52+
53+
cflags = settings[:cflags]
54+
target = 'darwin64-x86_64-cc'
55+
elsif platform.is_linux?
56+
pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin'
57+
58+
cflags = settings[:cflags]
59+
ldflags = "#{settings[:ldflags]} -Wl,-z,relro"
60+
if platform.architecture =~ /86$/
61+
target = 'linux-elf'
62+
sslflags = '386'
63+
elsif platform.architecture =~ /64$/
64+
target = 'linux-x86_64'
65+
end
66+
end
67+
68+
####################
69+
# BUILD REQUIREMENTS
70+
####################
71+
72+
pkg.build_requires "runtime-#{settings[:runtime_project]}"
73+
74+
###########
75+
# CONFIGURE
76+
###########
77+
78+
# OpenSSL fails to work on aarch unless we turn down the compiler optimization.
79+
# See PA-2135 for details
80+
if platform.architecture =~ /aarch/
81+
pkg.apply_patch 'resources/patches/openssl/turn-down-optimization-on-aarch.patch'
82+
end
83+
84+
# OpenSSL Configure doesn't honor CFLAGS or LDFLAGS as environment variables.
85+
# Instead, those should be passed to Configure at the end of its options, as
86+
# any unrecognized options are passed straight through to ${CC}. Defining
87+
# --libdir ensures that we avoid the multilib (lib/ vs. lib64/) problem,
88+
# since configure uses the existence of a lib64 directory to determine
89+
# if it should install its own libs into a multilib dir. Yay OpenSSL!
90+
configure_flags = [
91+
"--prefix=#{settings[:prefix]}",
92+
'--libdir=lib',
93+
"--openssldir=#{settings[:prefix]}/ssl",
94+
'shared',
95+
'no-asm',
96+
target,
97+
sslflags,
98+
'no-camellia',
99+
'no-ec2m',
100+
'no-md2',
101+
'no-ssl3',
102+
]
103+
104+
# Individual projects may provide their own openssl configure flags:
105+
project_flags = settings[:openssl_extra_configure_flags] || []
106+
perl_exec = ''
107+
if platform.is_aix?
108+
perl_exec = '/opt/freeware/bin/perl'
109+
elsif platform.is_solaris? && platform.os_version == '10'
110+
perl_exec = '/opt/csw/bin/perl'
111+
end
112+
configure_flags << project_flags << cflags << ldflags
113+
114+
pkg.configure do
115+
["#{perl_exec} ./Configure #{configure_flags.join(' ')}"]
116+
end
117+
118+
#######
119+
# BUILD
120+
#######
121+
122+
pkg.build do
123+
[
124+
"#{platform[:make]} depend",
125+
"#{platform[:make]}"
126+
]
127+
end
128+
129+
#########
130+
# INSTALL
131+
#########
132+
133+
install_prefix = platform.is_windows? ? '' : 'INSTALL_PREFIX=/'
134+
install_commands = []
135+
136+
if platform.is_aix?
137+
install_commands << "slibclean"
138+
end
139+
140+
install_commands << "#{platform[:make]} #{install_prefix} install"
141+
142+
if settings[:runtime_project] == 'pdk'
143+
install_commands << "rm -f #{settings[:prefix]}/bin/{openssl,c_rehash}"
144+
end
145+
146+
pkg.install do
147+
install_commands
148+
end
149+
150+
pkg.install_file 'LICENSE', "#{settings[:prefix]}/share/doc/openssl-#{pkg.get_version}/LICENSE"
151+
end

0 commit comments

Comments
 (0)