source: spec/trunk/SPECS/openssl.spec@ 302

Last change on this file since 302 was 283, checked in by Yuri Dario, 14 years ago

spec: nspr, nss, openssl, ncurses, readline, rebuild with libc 0.6.4 runtime.

File size: 10.6 KB
Line 
1# For the curious:
2# 0.9.5a soversion = 0
3# 0.9.6 soversion = 1
4# 0.9.6a soversion = 2
5# 0.9.6c soversion = 3
6# 0.9.7a soversion = 4
7# 0.9.7ef soversion = 5
8# 0.9.8ab soversion = 6
9# 0.9.8g soversion = 7
10# 0.9.8jk + EAP-FAST soversion = 8
11# 1.0.0 soversion = 10
12%define soversion 10
13
14# Number of threads to spawn when testing some threading fixes.
15%define thread_test_threads %{?threads:%{threads}}%{!?threads:1}
16
17# Arches on which we need to prevent arch conflicts on opensslconf.h, must
18# also be handled in opensslconf-new.h.
19%define multilib_arches %{ix86} ia64 ppc ppc64 s390 s390x sparcv9 sparc64 x86_64
20
21Summary: A general purpose cryptography library with TLS implementation
22Name: openssl
23Version: 1.0.0a
24Release: 4%{?dist}
25
26Source: openssl-%{version}.tar.gz
27
28# Build changes
29Patch0: openssl-os2.diff
30
31License: OpenSSL
32Group: System Environment/Libraries
33URL: http://www.openssl.org/
34BuildRoot: %{_tmppath}/%{name}-%{version}-root
35
36#BuildRequires: mktemp, krb5-devel, perl, sed, zlib-devel, /usr/bin/cmp
37BuildRequires: zlib-devel
38#BuildRequires: /usr/bin/rename
39#Requires: mktemp, ca-certificates >= 2008-5
40
41%description
42The OpenSSL toolkit provides support for secure communications between
43machines. OpenSSL includes a certificate management tool and shared
44libraries which provide various cryptographic algorithms and
45protocols.
46
47%package devel
48Summary: Files for development of applications which will use OpenSSL
49Group: Development/Libraries
50Requires: %{name} = %{version}-%{release}, zlib-devel
51Requires: pkgconfig
52
53%description devel
54OpenSSL is a toolkit for supporting cryptography. The openssl-devel
55package contains include files needed to develop applications which
56support various cryptographic algorithms and protocols.
57
58%package static
59Summary: Libraries for static linking of applications which will use OpenSSL
60Group: Development/Libraries
61Requires: %{name}-devel = %{version}-%{release}
62
63%description static
64OpenSSL is a toolkit for supporting cryptography. The openssl-static
65package contains static libraries needed for static linking of
66applications which support various cryptographic algorithms and
67protocols.
68
69%package perl
70Summary: Perl scripts provided with OpenSSL
71Group: Applications/Internet
72Requires: perl
73Requires: %{name} = %{version}-%{release}
74
75%description perl
76OpenSSL is a toolkit for supporting cryptography. The openssl-perl
77package provides Perl scripts for converting certificates and keys
78from other formats to the formats used by the OpenSSL toolkit.
79
80%prep
81%setup -q -n %{name}-%{version}
82%patch0 -p1 -b .os2~
83
84# Modify the various perl scripts to reference perl in the right location.
85perl util/perlpath.pl `dirname %{__perl}`
86
87# Generate a table with the compile settings for my perusal.
88touch Makefile
89make TABLE PERL=%{__perl}
90
91%build
92# Figure out which flags we want to use.
93# default
94sslarch=OS2-KNIX
95
96# Configure the build tree. Override OpenSSL defaults with known-good defaults
97# usable on all platforms. The Configure script already knows to use -fPIC and
98# RPM_OPT_FLAGS, so we can skip specifiying them here.
99export CONFIG_SHELL="/@unixroot/usr/bin/sh.exe"
100export MAKESHELL="/@unixroot/usr/bin/sh.exe"
101export CFLAGS="${CFLAGS:-%optflags}" ; \
102./Configure \
103 --prefix=%{_usr} --openssldir=%{_sysconfdir}/pki/tls ${sslflags} \
104 zlib enable-camellia enable-seed enable-tlsext enable-rfc3779 \
105 enable-cms no-idea no-mdc2 no-rc5 no-ec no-ecdh no-ecdsa \
106 no-krb5 \
107 ${sslarch} shared
108
109# Add -Wa,--noexecstack here so that libcrypto's assembler modules will be
110# marked as not requiring an executable stack.
111#RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wa,--noexecstack"
112make depend
113# YD smp build not supported
114make all
115
116# Generate hashes for the included certs.
117make rehash
118
119# Overwrite FIPS README
120#cp -f %{SOURCE11} .
121
122%check
123# Verify that what was compiled actually works.
124
125# We must revert patch33 before tests otherwise they will fail
126#patch -p1 -R < %{PATCH33}
127
128#LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
129#export LD_LIBRARY_PATH
130#make -C test apps tests
131#%{__cc} -o openssl-thread-test \
132# `krb5-config --cflags` \
133# -I./include \
134# $RPM_OPT_FLAGS \
135# %{SOURCE8} \
136# -L. \
137# -lssl -lcrypto \
138# `krb5-config --libs` \
139# -lpthread -lz -ldl
140#./openssl-thread-test --threads %{thread_test_threads}
141
142# Add generation of HMAC checksum of the final stripped library
143#%define __spec_install_post \
144# %{?__debug_package:%{__debug_install_post}} \
145# %{__arch_install_post} \
146# %{__os_install_post} \
147# crypto/fips/fips_standalone_sha1 $RPM_BUILD_ROOT/%{_lib}/libcrypto.so.%{version} >$RPM_BUILD_ROOT/%{_lib}/.libcrypto.so.%{version}.hmac \
148# ln -sf .libcrypto.so.%{version}.hmac $RPM_BUILD_ROOT/%{_lib}/.libcrypto.so.%{soversion}.hmac \
149# crypto/fips/fips_standalone_sha1 $RPM_BUILD_ROOT%{_libdir}/libssl.so.%{version} >$RPM_BUILD_ROOT%{_libdir}/.libssl.so.%{version}.hmac \
150# ln -sf .libssl.so.%{version}.hmac $RPM_BUILD_ROOT%{_libdir}/.libssl.so.%{soversion}.hmac \
151#%{nil}
152
153%install
154[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
155
156export MAKESHELL="/@unixroot/usr/bin/sh.exe"
157
158# Install OpenSSL.
159install -d $RPM_BUILD_ROOT%{_bindir}
160install -d $RPM_BUILD_ROOT%{_includedir}
161install -d $RPM_BUILD_ROOT%{_libdir}
162install -d $RPM_BUILD_ROOT%{_mandir}
163install -d $RPM_BUILD_ROOT%{_libdir}/openssl
164make INSTALL_PREFIX=$RPM_BUILD_ROOT install
165make INSTALL_PREFIX=$RPM_BUILD_ROOT install_docs
166
167cp ssl_s.a $RPM_BUILD_ROOT%{_libdir}
168cp ssl%{soversion}.dll $RPM_BUILD_ROOT%{_libdir}
169cp crypto_s.a $RPM_BUILD_ROOT%{_libdir}
170cp crypto%{soversion}.dll $RPM_BUILD_ROOT%{_libdir}
171
172mv $RPM_BUILD_ROOT%{_libdir}/engines $RPM_BUILD_ROOT%{_libdir}/openssl
173mv $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/man/* $RPM_BUILD_ROOT%{_mandir}/
174rmdir $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/man
175
176#rename so.%{soversion} so.%{version} $RPM_BUILD_ROOT%{_libdir}/*.so.%{soversion}
177#mkdir $RPM_BUILD_ROOT/%{_lib}
178#mv $RPM_BUILD_ROOT%{_libdir}/libcrypto.so.%{version} $RPM_BUILD_ROOT/%{_lib}
179#for lib in $RPM_BUILD_ROOT%{_libdir}/*.so.%{version} ; do
180# chmod 755 ${lib}
181# ln -s -f `basename ${lib}` $RPM_BUILD_ROOT%{_libdir}/`basename ${lib} .%{version}`
182# ln -s -f `basename ${lib}` $RPM_BUILD_ROOT%{_libdir}/`basename ${lib} .%{version}`.%{soversion}
183#done
184#for lib in $RPM_BUILD_ROOT/%{_lib}/*.so.%{version} ; do
185# chmod 755 ${lib}
186# ln -s -f ../../%{_lib}/`basename ${lib}` $RPM_BUILD_ROOT%{_libdir}/`basename ${lib} .%{version}`
187# ln -s -f `basename ${lib}` $RPM_BUILD_ROOT/%{_lib}/`basename ${lib} .%{version}`.%{soversion}
188#done
189
190# Install a makefile for generating keys and self-signed certs, and a script
191# for generating them on the fly.
192mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/certs
193#install -m644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/certs/Makefile
194#install -m755 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/certs/make-dummy-cert
195
196# Make sure we actually include the headers we built against.
197for header in $RPM_BUILD_ROOT%{_includedir}/openssl/* ; do
198 if [ -f ${header} -a -f include/openssl/$(basename ${header}) ] ; then
199 install -m644 include/openssl/`basename ${header}` ${header}
200 fi
201done
202
203# Rename man pages so that they don't conflict with other system man pages.
204#pushd $RPM_BUILD_ROOT%{_mandir}
205for manpage in $RPM_BUILD_ROOT%{_mandir}/man*/* ; do
206 if [ -L ${manpage} ]; then
207 TARGET=`ls -l ${manpage} | awk '{ print $NF }'`
208 ln -snf ${TARGET}ssl ${manpage}ssl
209 rm -f ${manpage}
210 else
211 mv ${manpage} ${manpage}ssl
212 fi
213done
214#for conflict in passwd rand ; do
215# rename ${conflict} ssl${conflict} man*/${conflict}*
216#done
217#popd
218
219# Pick a CA script.
220#pushd $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/misc
221mv $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/misc/CA.sh $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/misc/CA
222#popd
223
224mkdir -m755 $RPM_BUILD_ROOT%{_sysconfdir}/pki/CA
225mkdir -m700 $RPM_BUILD_ROOT%{_sysconfdir}/pki/CA/private
226mkdir -m755 $RPM_BUILD_ROOT%{_sysconfdir}/pki/CA/certs
227mkdir -m755 $RPM_BUILD_ROOT%{_sysconfdir}/pki/CA/crl
228mkdir -m755 $RPM_BUILD_ROOT%{_sysconfdir}/pki/CA/newcerts
229
230# Ensure the openssl.cnf timestamp is identical across builds to avoid
231# mulitlib conflicts and unnecessary renames on upgrade
232#touch -r %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/openssl.cnf
233
234# Determine which arch opensslconf.h is going to try to #include.
235#basearch=i386
236#%ifarch %{multilib_arches}
237# Do an opensslconf.h switcheroo to avoid file conflicts on systems where you
238# can have both a 32- and 64-bit version of the library, and they each need
239# their own correct-but-different versions of opensslconf.h to be usable.
240#install -m644 %{SOURCE10} \
241# $RPM_BUILD_ROOT/%{_prefix}/include/openssl/opensslconf-${basearch}.h
242#cat $RPM_BUILD_ROOT/%{_prefix}/include/openssl/opensslconf.h >> \
243# $RPM_BUILD_ROOT/%{_prefix}/include/openssl/opensslconf-${basearch}.h
244#install -m644 %{SOURCE9} \
245# $RPM_BUILD_ROOT/%{_prefix}/include/openssl/opensslconf.h
246#%endif
247
248# Remove unused files from upstream fips support
249rm -rf $RPM_BUILD_ROOT/%{_bindir}/openssl_fips_fingerprint
250rm -rf $RPM_BUILD_ROOT/%{_libdir}/fips_premain.*
251rm -rf $RPM_BUILD_ROOT/%{_libdir}/fipscanister.*
252
253%clean
254[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
255
256%files
257%defattr(-,root,root)
258%doc FAQ LICENSE CHANGES NEWS INSTALL README
259%doc doc/c-indentation.el doc/openssl.txt
260%doc doc/openssl_button.html doc/openssl_button.gif
261%doc doc/ssleay.txt
262#%doc README.FIPS
263%dir %{_sysconfdir}/pki/tls
264%dir %{_sysconfdir}/pki/tls/certs
265#%{_sysconfdir}/pki/tls/certs/make-dummy-cert
266#%{_sysconfdir}/pki/tls/certs/Makefile
267%dir %{_sysconfdir}/pki/tls/misc
268%{_sysconfdir}/pki/tls/misc/CA
269%dir %{_sysconfdir}/pki/CA
270%dir %{_sysconfdir}/pki/CA/private
271%dir %{_sysconfdir}/pki/CA/certs
272%dir %{_sysconfdir}/pki/CA/crl
273%dir %{_sysconfdir}/pki/CA/newcerts
274%{_sysconfdir}/pki/tls/misc/c_*
275%{_sysconfdir}/pki/tls/private
276
277%config(noreplace) %{_sysconfdir}/pki/tls/openssl.cnf
278
279%attr(0755,root,root) %{_bindir}/openssl.exe
280%attr(0755,root,root) %{_libdir}/crypto%{soversion}.dll
281%attr(0755,root,root) %{_libdir}/ssl%{soversion}.dll
282#%attr(0644,root,root) /%{_lib}/.libcrypto.so.*.hmac
283#%attr(0644,root,root) %{_libdir}/.libssl.so.*.hmac
284%attr(0755,root,root) %{_libdir}/openssl
285%attr(0644,root,root) %{_mandir}/man1*/[ABD-Zabcd-z]*
286%attr(0644,root,root) %{_mandir}/man5*/*
287%attr(0644,root,root) %{_mandir}/man7*/*
288
289%files devel
290%defattr(-,root,root)
291%{_prefix}/include/openssl
292%attr(0755,root,root) %{_libdir}/*%{soversion}.dll
293%attr(0755,root,root) %{_libdir}/lib*.a
294%attr(0644,root,root) %{_mandir}/man3*/*
295%attr(0644,root,root) %{_libdir}/pkgconfig/*.pc
296
297%files static
298%defattr(-,root,root)
299%attr(0644,root,root) %{_libdir}/*_s.a
300
301%files perl
302%defattr(-,root,root)
303%attr(0755,root,root) %{_bindir}/c_rehash
304%attr(0644,root,root) %{_mandir}/man1*/*.pl*
305%{_sysconfdir}/pki/tls/misc/*.pl
306%{_sysconfdir}/pki/tls/misc/tsget
307
308#%post -p /sbin/ldconfig
309
310#%postun -p /sbin/ldconfig
311
312%changelog
313* Mon Jan 16 2012 yd
314- rebuild with libc 0.6.4 runtime.
Note: See TracBrowser for help on using the repository browser.