Update to 1.1.1j, rewrite spec, move to optdir

This commit is contained in:
Sergey Zhemoitel 2021-03-04 14:22:11 +03:00
parent 1b9f823aae
commit 793d810148
3 changed files with 156 additions and 103 deletions

View file

@ -1,2 +1,3 @@
sources:
openssl-1.1.1g.tar.gz: b213a293f2127ec3e323fb3cfc0c9807664fd997
openssl-1.1.1j.tar.gz: 04c340b086828eecff9df06dceff196790bb9268

View file

@ -2,3 +2,5 @@
addFilter("W: manpage-not-compressed.*.html")
# for rpm5 platforms
addFilter("E: description-line-too-long")
addFilter("E: dir-or-file-in-opt")
addFilter("E: compressed-symlink-with-wrong-ext")

View file

@ -1,3 +1,4 @@
%define oname openssl
%define major 1.1
%define engines_name %mklibname openssl-engines %{major}
%define libcrypto %mklibname crypto %{major}
@ -5,6 +6,9 @@
%define openssl_engines_dir %{_libdir}/engines-%{major}
%define _optdir /opt
%define _docs %{expand:
%doc AUTHORS \
%doc CHANGES \
@ -16,14 +20,15 @@
}
Summary: OpenSSL 1.1 for platforms with OpenSSL 1.0 as the main version of OpenSSL
Name: openssl1.1
Version: 1.1.1g
Name: %{oname}%{major}
Version: 1.1.1j
Release: 1
License: OpenSSL
Group: System/Libraries
Url: https://www.openssl.org
Source0: ftp://ftp.openssl.org/source/openssl-%{version}.tar.gz
Source1: %{name}.rpmlintrc
URL: https://www.openssl.org
Source0: https://ftp.openssl.org/source/%{oname}-%{version}.tar.gz
Source1: fixsimlink.sh
Source1000: %{name}.rpmlintrc
Source4: openssl-thread-test.c
Patch1: openssl-alt-e2k-makecontext.patch
BuildRequires: bc
@ -60,54 +65,85 @@ This is OpenSSL 1.1 for platforms with OpenSSL 1.0 as the main version of OpenSS
%files
%_docs
%attr(0755,root,root) %{_bindir}/%{name}
%{_mandir}/man[157]/%{name}_*
%{_mandir}/man1/%{name}.1*
%{_defaultdocdir}/openssl/html/man[157]
#attr(0755,root,root) %{_bindir}/%{name}
#{_mandir}/man[157]/%{name}_*
#{_mandir}/man1/%{name}.1*
#{_defaultdocdir}/openssl/html/man[157]
%{_bindir}/%{name}
%{_optdir}/%{name}/bin
%{_optdir}/%{name}/lib/*.so.*
%{_optdir}/%{name}/lib/engines-%{major}/*
%{_optdir}/%{name}/ssl/*
#----------------------------------------------------------------------------
%package -n %{engines_name}
Summary: Engines for %{name}
Group: System/Libraries
Provides: %{name}-engines = %{EVRD}
%package devel
Summary: Development files for openssl1.1
%description -n %{engines_name}
This package provides engines for openssl.
%description devel
Development files for openssl1.1
%files -n %{engines_name}
%files devel
%_docs
%attr(0755,root,root) %dir %{openssl_engines_dir}/
%attr(0755,root,root) %{openssl_engines_dir}/*.so
%{_optdir}/%{name}/include
%{_optdir}/%{name}/lib/*.so
%{_optdir}/%{name}/lib/pkgconfig/*.pc
#----------------------------------------------------------------------------
%package -n %{libcrypto}
Summary: Secure Sockets Layer communications libs
Group: System/Libraries
Requires: %{libssl} = %{EVRD}
%package docs
Summary: Documentation for openssl1.1
%description -n %{libcrypto}
The libraries files are needed for various cryptographic algorithms
and protocols, including DES, RC4, RSA and SSL.
%description docs
Documentation for openssl1.1
%files -n %{libcrypto}
%_docs
%{_libdir}/libcrypto.so.%{major}*
%files docs
%{_optdir}/%{name}/share/doc/*
%{_optdir}/%{name}/share/man/*
#----------------------------------------------------------------------------
%package -n %{libssl}
Summary: Secure Sockets Layer communications libs
Group: System/Libraries
#%package -n %{engines_name}
#Summary: Engines for %{name}
#Group: System/Libraries
#Provides: %{name}-engines = %{EVRD}
%description -n %{libssl}
The libraries files are needed for various cryptographic algorithms
and protocols, including DES, RC4, RSA and SSL.
#description -n %{engines_name}
#This package provides engines for openssl.
%files -n %{libssl}
%_docs
%{_libdir}/libssl.so.%{major}*
#files -n %{engines_name}
#_docs
#attr(0755,root,root) %dir %{openssl_engines_dir}/
#attr(0755,root,root) %{openssl_engines_dir}/*.so
#----------------------------------------------------------------------------
#package -n %{libcrypto}
#Summary: Secure Sockets Layer communications libs
#Group: System/Libraries
#Requires: %{libssl} = %{EVRD}
#description -n %{libcrypto}
#The libraries files are needed for various cryptographic algorithms
#and protocols, including DES, RC4, RSA and SSL.
#files -n %{libcrypto}
#_docs
#{_libdir}/libcrypto.so.%{major}*
#----------------------------------------------------------------------------
#package -n %{libssl}
#Summary: Secure Sockets Layer communications libs
#Group: System/Libraries
#description -n %{libssl}
#The libraries files are needed for various cryptographic algorithms
#and protocols, including DES, RC4, RSA and SSL.
#files -n %{libssl}
#_docs
#{_libdir}/libssl.so.%{major}*
#----------------------------------------------------------------------------
@ -116,6 +152,8 @@ and protocols, including DES, RC4, RSA and SSL.
cp %{SOURCE4} openssl-thread-test.c
chmod +x %{SOURCE1}
%build
# In rosa2016.1: /usr/bin/ld: crypto/bio/bio_cb.o: relocation R_X86_64_PC32 against undefined symbol
@ -152,9 +190,7 @@ sslarch=linux-generic64
# usable on all platforms. The Configure script already knows to use -fPIC and
# RPM_OPT_FLAGS, so we can skip specifiying them here.
./Configure \
--prefix=%{_prefix} \
--libdir=%{_libdir} \
--openssldir=%{_openssldir} \
--prefix=%{_optdir}/%{name} \
${sslflags} \
enable-camellia \
enable-cms \
@ -172,6 +208,10 @@ sslarch=linux-generic64
shared \
${sslarch}
# --libdir=%{_libdir} \
# --openssldir=%{_openssldir} \
%make all
%check
@ -199,73 +239,83 @@ make test
%install
%makeinstall_std
( cd %{buildroot}%{_bindir}
mv openssl openssl%{major}
)
#( cd %{buildroot}%{_bindir}
# mv openssl openssl%{major}
#)
# Based on libressl, rename mans xxx.N to openssl1.1_xxx.N
for i in $(seq 1 8)
do
man_dir="%{buildroot}%{_mandir}/man${i}"
if [ ! -d "$man_dir" ]; then continue; fi
( cd "$man_dir"
grep -Irl '/etc/ssl' . | xargs sed -i 's,/etc/ssl,%{_openssldir},g' || :
if find . -name '%{name}_*' | grep -q '.' ; then
echo 'Rewrite spec because upstream %{name}_* manpages appeared!'
exit 1
fi
# Make all man pages with potentially the same names as in OpenSSL
# be avaialble in standard man directories, but prevent conflicts with OpenSSL
for openssl_manpage in $(ls -1v | grep -vE '^OPENSSL_|^openssl\.') ; do
openssl_LibreSSL_manpage="%{name}_${openssl_manpage}"
mv -v "$openssl_manpage" "$openssl_LibreSSL_manpage"
done
for openssl_manpage in $(ls -1v | grep '^openssl\.') ; do
openssl_LibreSSL_manpage="$(echo "$openssl_manpage" | sed -e 's,openssl,%{name},g')"
mv -v "$openssl_manpage" "$openssl_LibreSSL_manpage"
done
#for i in $(seq 1 8)
#do
# man_dir="%{buildroot}%{_mandir}/man${i}"
# if [ ! -d "$man_dir" ]; then continue; fi
# ( cd "$man_dir"
# grep -Irl '/etc/ssl' . | xargs sed -i 's,/etc/ssl,%{_openssldir},g' || :
# if find . -name '%{name}_*' | grep -q '.' ; then
# echo 'Rewrite spec because upstream %{name}_* manpages appeared!'
# exit 1
# fi
# # Make all man pages with potentially the same names as in OpenSSL
# # be avaialble in standard man directories, but prevent conflicts with OpenSSL
# for openssl_manpage in $(ls -1v | grep -vE '^OPENSSL_|^openssl\.') ; do
# openssl_LibreSSL_manpage="%{name}_${openssl_manpage}"
# mv -v "$openssl_manpage" "$openssl_LibreSSL_manpage"
# done
# for openssl_manpage in $(ls -1v | grep '^openssl\.') ; do
# openssl_LibreSSL_manpage="$(echo "$openssl_manpage" | sed -e 's,openssl,%{name},g')"
# mv -v "$openssl_manpage" "$openssl_LibreSSL_manpage"
# done
# relink symlinks
error=0
for i in *
do
if [ ! -L "$i" ]; then continue; fi
realpath="$(realpath "$i")"
if [ ! -e "$realpath"; then
if echo "$realpath" | grep -q '/openssl_'
then new_dest="$(echo "$realpath" | sed -e 's,/openssl_,/%{name}_,g')"
else new_dest="%{name}_$(echo "$realpath" | awk -F '/' '{print $NF}')"
fi
if [ ! -e "$new_dest" ]; then
list_not_e="${list_not_e}\n${new_dest}"
error=1
fi
rm -fv "$i"
ln -s "$new_dest" "$i"
fi
done
if [ "$error" != 0 ]; then
echo "Not existing destinations: ${list_not_e}"
exit 1
fi
)
done
# # relink symlinks
# error=0
# for i in *
# do
# if [ ! -L "$i" ]; then continue; fi
# realpath="$(realpath "$i")"
# if [ ! -e "$realpath"; then
# if echo "$realpath" | grep -q '/openssl_'
# then new_dest="$(echo "$realpath" | sed -e 's,/openssl_,/%{name}_,g')"
# else new_dest="%{name}_$(echo "$realpath" | awk -F '/' '{print $NF}')"
# fi
# if [ ! -e "$new_dest" ]; then
# list_not_e="${list_not_e}\n${new_dest}"
# error=1
# fi
# rm -fv "$i"
# ln -s "$new_dest" "$i"
# fi
# done
# if [ "$error" != 0 ]; then
# echo "Not existing destinations: ${list_not_e}"
# exit 1
# fi
# )
#done
# strip cannot touch these unless 755
chmod 755 %{buildroot}%{openssl_engines_dir}/*.so*
chmod 755 %{buildroot}%{_libdir}/*.so*
chmod 755 %{buildroot}%{_bindir}/*
#chmod 755 %{buildroot}%{openssl_engines_dir}/*.so*
#chmod 755 %{buildroot}%{_libdir}/*.so*
#chmod 755 %{buildroot}%{_bindir}/*
# Remove devel parts (openssl 1.0 is devel)
( cd %{buildroot}
rm -fvr \
./%{_bindir}/c_rehash \
./%{_libdir}/*.so \
./%{_libdir}/*.a \
./%{_includedir} \
./%{_openssldir} \
./%{_libdir}/pkgconfig \
./%{_mandir}/man3 \
./%{_defaultdocdir}/openssl/html/man3
)
#( cd %{buildroot}
# rm -fvr \
# ./%{_bindir}/c_rehash \
# ./%{_libdir}/*.so \
# ./%{_libdir}/*.a \
# ./%{_includedir} \
# ./%{_openssldir} \
# ./%{_libdir}/pkgconfig \
# ./%{_mandir}/man3 \
# ./%{_defaultdocdir}/openssl/html/man3
#)
install -d %{buildroot}%{_bindir}
ln -sf %{_optdir}/%{name}/bin/%{oname} %{buildroot}%{_bindir}/%{name}
# clean .a
rm -f %{buildroot}%{_optdir}/%{name}/lib/*.a
# mans compress
find %{buildroot}%{_optdir}/%{name}/share/man -type f -name "*.*" -exec xz -z {} \;
find %{buildroot}%{_optdir}/%{name}/share/man -type l -name "*.*" -exec %{SOURCE1} {} \;
find %{buildroot}%{_optdir}/%{name}/share/man -type l -name "*.*" -exec mv -f {} {}.xz \;