- converted to UTF-8
[packages/openssl.git] / openssl.spec
CommitLineData
2403ba81
JK
1#
2# Conditional build:
9508bae3 3%bcond_with purify # Compile openssl with \-DPURIFY, useful when one wants to
2403ba81 4 # use valgrind debugger against openssl-linked programs
623d135e 5#
779bb536 6%include /usr/lib/rpm/macros.perl
ce2ff00e 7Summary: OpenSSL Toolkit libraries for the "Secure Sockets Layer" (SSL v2/v3)
30e72515
JR
8Summary(de.UTF-8): Secure Sockets Layer (SSL)-Kommunikationslibrary
9Summary(es.UTF-8): Biblioteca C que suministra algoritmos y protocolos criptográficos
10Summary(fr.UTF-8): Utilitaires de communication SSL (Secure Sockets Layer)
11Summary(pl.UTF-8): Biblioteki OpenSSL (SSL v2/v3)
12Summary(pt_BR.UTF-8): Uma biblioteca C que fornece vários algoritmos e protocolos criptográficos
13Summary(ru.UTF-8): Библиотеки и утилиты для соединений через Secure Sockets Layer
14Summary(uk.UTF-8): Бібліотеки та утиліти для з'єднань через Secure Sockets Layer
56470945 15Name: openssl
e11f5f73 16Version: 0.9.8d
81c6c2dc 17Release: 2
05285465 18License: Apache-style License
56470945 19Group: Libraries
264f738a 20Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz
e11f5f73 21# Source0-md5: 8ed1853538e1d05a1f5ada61ebf8bffa
57805a3f 22Source1: %{name}-ca-bundle.crt
62382817 23Source2: %{name}.1.pl
ea55f735 24Source3: %{name}-ssl-certificate.sh
0d1c50df 25Patch0: %{name}-alpha-ccc.patch
e106ff02
TO
26Patch1: %{name}-optflags.patch
27Patch2: %{name}-globalCA.diff
c0cc4a35 28Patch3: %{name}-include.patch
32c3ac07 29Patch4: %{name}-md5-sparcv9.patch
5d5181f1 30Patch5: %{name}-libvar.patch
598997e9 31Patch6: %{name}-gcc_4_2.patch
bd7f0ef1 32URL: http://www.openssl.org/
9edbb66f 33BuildRequires: perl-devel >= 1:5.6.1
34BuildRequires: rpm-perlprov >= 4.1-13
20bc1dd7 35BuildRequires: rpmbuild(macros) >= 1.213
31b28434 36BuildRequires: sed >= 4.0
04a5ad1f
AF
37Obsoletes: SSLeay
38Obsoletes: SSLeay-devel
39Obsoletes: SSLeay-perl
a280467c 40Obsoletes: libopenssl0
0f86ef4a 41BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
21ac4f86
AF
42
43%description
44The OpenSSL Project is a collaborative effort to develop a robust,
b39fed70 45commercial-grade, full-featured, and Open Source toolkit implementing
46the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS
47v1) protocols with full-strength cryptography world-wide. The project
48is managed by a worldwide community of volunteers that use the
49Internet to communicate, plan, and develop the OpenSSL tookit and its
50related documentation.
56470945 51
b39fed70 52OpenSSL is based on the excellent SSLeay library developed by Eric A.
53Young and Tim J. Hudson. The OpenSSL toolkit is licensed under an
54Apache-style licence, which basically means that you are free to get
55and use it for commercial and non-commercial purposes subject to some
56simple license conditions.
21ac4f86 57
fc19f542 58This package contains shared libraries only, install openssl-tools if
59you want to use openssl cmdline tool.
ce2ff00e 60
30e72515
JR
61%description -l de.UTF-8
62Openssl enthält das OpenSSL Zertifikatsmanagementtool und shared
63libraries, die verschiedene Verschlüsselungs- und
64Entschlüsselungsalgorithmen und -protokolle, wie DES, RC4, RSA und SSL
65zur Verfügung stellen.
453a8bf3 66
30e72515
JR
67%description -l es.UTF-8
68Biblioteca C que suministra algoritmos y protocolos criptográficos.
2fad19b0 69
30e72515 70%description -l fr.UTF-8
56470945 71OpenSSL est un outiil de gestion des certificats et les librairies
72partagees qui fournit plusieurs protocoles et algorithmes de
73codage/decodage, incluant DES, RC4, RSA et SSL.
2fad19b0 74
30e72515
JR
75%description -l pl.UTF-8
76Implementacja protokołów kryptograficznych Secure Socket Layer (SSL)
78b5e413
TP
77v2/v3 oraz Transport Layer Security (TLS v1).
78
30e72515
JR
79%description -l pt_BR.UTF-8
80Uma biblioteca C que fornece vários algoritmos e protocolos
81criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas
82compartilhadas e utilitários.
453a8bf3 83
30e72515
JR
84%description -l ru.UTF-8
85Программа openssl для работы с сертификатами и разделяемые библиотеки,
86которые реализуют множетсво криптографических алгоритмов, включая DES,
87RC4, RSA и SSL.
453a8bf3 88
30e72515
JR
89%description -l uk.UTF-8
90Програма openssl для роботи з сертифікатами та бібліотеки спільного
91користування, що реалізують велику кількість криптографічних
92алгоритмів, включаючи DES, RC4, RSA та SSL.
453a8bf3 93
ce2ff00e 94%package tools
95Summary: OpenSSL command line tool and utilities
30e72515 96Summary(pl.UTF-8): Zestaw narzędzi i skryptów
fc19f542 97Group: Applications/Communications
82859ae1 98Requires: %{name} = %{version}-%{release}
ce2ff00e 99
100%description tools
101The OpenSSL Toolkit cmdline tool openssl and utility scripts.
102
30e72515
JR
103%description tools -l pl.UTF-8
104Zestaw narzędzi i skryptów wywoływanych z linii poleceń.
78b5e413 105
ce2ff00e 106%package tools-perl
107Summary: OpenSSL utilities written in Perl
30e72515 108Summary(pl.UTF-8): Narzędzia OpenSSL napisane w perlu
fc19f542 109Group: Applications/Communications
82859ae1 110Requires: %{name} = %{version}-%{release}
2b2149ff 111
ce2ff00e 112%description tools-perl
d86c2c8b 113OpenSSL Toolkit tools written in Perl.
2b2149ff 114
30e72515
JR
115%description tools-perl -l pl.UTF-8
116Narzędzia OpenSSL napisane w perlu.
78b5e413 117
faddd309 118%package devel
ce2ff00e 119Summary: Development part of OpenSSL Toolkit libraries
30e72515
JR
120Summary(de.UTF-8): Secure Sockets Layer Kommunikationslibrary: statische libraries+header
121Summary(es.UTF-8): Bibliotecas y archivos de inclusión para desarrollo OpenSSL
122Summary(fr.UTF-8): Librairies statiques, headers et utilitaires pour communication SSL
123Summary(pl.UTF-8): Część bibiloteki OpenSSL przeznaczona dla programistów
124Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para desenvolvimento OpenSSL
125Summary(ru.UTF-8): Библиотеки, хедеры и утилиты для Secure Sockets Layer
126Summary(uk.UTF-8): Бібліотеки, хедери та утиліти для Secure Sockets Layer
9c05bcac 127Group: Development/Libraries
82859ae1 128Requires: %{name} = %{version}-%{release}
a280467c 129Obsoletes: libopenssl0-devel
faddd309
AF
130
131%description devel
132Development part of OpenSSL library.
133
30e72515
JR
134%description devel -l es.UTF-8
135Bibliotecas y archivos de inclusión para desarrollo OpenSSL
453a8bf3 136
30e72515
JR
137%description devel -l pl.UTF-8
138Część biblioteki OpenSSL przeznaczona dla programistów.
faddd309 139
30e72515
JR
140%description devel -l pt_BR.UTF-8
141Uma biblioteca C que fornece vários algoritmos e protocolos
142criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas e
143arquivos de inclusão para desenvolvimento.
453a8bf3 144
30e72515
JR
145%description devel -l ru.UTF-8
146Программа openssl для работы с сертификатами и разделяемые библиотеки,
147которые реализуют множетсво криптографических алгоритмов, включая DES,
148RC4, RSA и SSL. Включает библиотеки и хедеры для разработки приложений
149с использованием SSL.
453a8bf3 150
30e72515
JR
151%description devel -l uk.UTF-8
152Програма openssl для роботи з сертифікатами та бібліотеки спільного
153користування, що реалізують велику кількість криптографічних
154алгоритмів, включаючи DES, RC4, RSA та SSL. Містить бібліотеки та
155хедери для розробки програм з використанням SSL.
453a8bf3 156
faddd309 157%package static
ce2ff00e 158Summary: Static OpenSSL libraries
30e72515
JR
159Summary(pl.UTF-8): Statyczne wersje bibliotek z OpenSSL
160Summary(pt_BR.UTF-8): Bibliotecas estáticas para desenvolvimento com openssl
161Summary(ru.UTF-8): Статические библиотеки разработчика для OpenSSL
162Summary(uk.UTF-8): Статичні бібліотеки програміста для OpenSSL
9c05bcac 163Group: Development/Libraries
82859ae1 164Requires: %{name}-devel = %{version}-%{release}
faddd309
AF
165
166%description static
ce2ff00e 167Static OpenSSL Toolkit libraries.
faddd309 168
30e72515 169%description static -l pl.UTF-8
ce2ff00e 170Statyczne wersje bibliotek z OpenSSL.
faddd309 171
30e72515
JR
172%description static -l pt_BR.UTF-8
173Bibliotecas estáticas para desenvolvimento com openssl.
453a8bf3 174
30e72515
JR
175%description static -l ru.UTF-8
176Программа openssl для работы с сертификатами и разделяемые библиотеки,
177которые реализуют множетсво криптографических алгоритмов, включая DES,
178RC4, RSA и SSL. Включает статические библиотеки для разработки
179приложений с использованием OpenSSL.
453a8bf3 180
30e72515
JR
181%description static -l uk.UTF-8
182Програма openssl для роботи з сертифікатами та бібліотеки спільного
183користування, що реалізують велику кількість криптографічних
184алгоритмів, включаючи DES, RC4, RSA та SSL. Містить статичні
185бібліотеки для розробки програм з використанням SSL.
453a8bf3 186
21ac4f86 187%prep
264f738a 188%setup -q
0384baf6 189%patch0 -p1
02c02459 190%patch1 -p1
05285465 191%patch2 -p1
9d16a74d 192%patch3 -p1
32c3ac07 193%patch4 -p1
5d5181f1 194%patch5 -p1
598997e9 195%patch6 -p1
04a32771 196
21ac4f86 197%build
51e76169 198%{__perl} -pi -e 's#%{_prefix}/local/bin/perl#%{__perl}#g' \
229f14e7 199 `grep -l -r "%{_prefix}/local/bin/perl" *`
0d1c50df 200
00466ad3 201touch Makefile.*
04a5ad1f 202
db17f76a 203%{__perl} util/perlpath.pl %{__perl}
04a5ad1f 204
2403ba81 205OPTFLAGS="%{rpmcflags} %{?with_purify:-DPURIFY}"
1ef5b332 206LDFLAGS="%{rpmldflags}"
207export OPTFLAGS LDFLAGS
9fc51b3c
JB
208./Configure \
209 --openssldir=%{_var}/lib/%{name} \
5d5181f1 210 --lib=%{_lib} \
9fc51b3c
JB
211 shared threads \
212 enable-mdc2 enable-rc5 \
51e76169 213%ifarch %{ix86}
04a32771 214%ifarch i386
9fc51b3c 215 386 linux-elf
915551a7 216# ^- allow running on 80386 (default code uses bswapl available on i486+)
51e76169 217%else
9fc51b3c 218 linux-elf
75c27cbe 219%endif
51e76169 220%endif
dfc15f38 221%ifarch alpha
9fc51b3c 222 linux-alpha+bwx-gcc
dfc15f38 223%endif
20bc1dd7 224%ifarch %{x8664}
9fc51b3c 225 linux-x86_64
e08c1652 226%endif
dfc15f38 227%ifarch ia64
9fc51b3c 228 linux-ia64
dfc15f38 229%endif
75c27cbe 230%ifarch ppc
9fc51b3c
JB
231 linux-ppc
232%endif
233%ifarch ppc64
234 linux-ppc64
75c27cbe 235%endif
05285465 236%ifarch sparc
9fc51b3c 237 linux-sparcv8
0384baf6 238%endif
36db42b5 239%ifarch sparcv9
9fc51b3c 240 linux-sparcv9
36db42b5
PS
241%endif
242%ifarch sparc64
9fc51b3c 243 linux64-sparcv9
36db42b5 244%endif
05285465 245
2d10fd74 246%{__make} -j1 \
b84cddc8
PG
247 CC="%{__cc}" \
248 INSTALLTOP=%{_prefix}
249
2d10fd74 250%{__make} -j1 rehash \
b84cddc8
PG
251 CC="%{__cc}" \
252 INSTALLTOP=%{_prefix}
ce2ff00e 253
78b5e413 254# Conv PODs to man pages. "openssl_" prefix is added to each manpage
ce2ff00e 255# to avoid potential conflicts with others packages.
027a4889
TO
256center="OpenSSL 0.9.7"
257rel="OpenSSL 0.9.7"
ce2ff00e 258
78b5e413 259cd doc/apps || exit 1
db17f76a 260%{__perl} -pi -e 's/(\W)((?<!openssl_)\w+)(\(\d\))/$1openssl_$2$3/g; s/openssl_openssl/openssl/g;' *.pod;
ce2ff00e 261
78b5e413
TP
262for pod in *.pod; do
263 if [ $pod != "openssl.pod" ]; then
264 mv -f $pod openssl_$pod;
265 pod=openssl_$pod;
266 fi
267
268 sec=1
269 if [ $pod = "openssl_config.pod" ]; then
270 sec=5
271 fi
272
273 manpage=`basename $pod .pod`.$sec;
274 pod2man --section="$sec" --release="$rel" --center="$center" \
275 $pod > $manpage;
276 echo "$manpage";
ce2ff00e 277done
278cd ..
279
280sec=3
78b5e413 281for dir in ssl crypto; do
ce2ff00e 282 cd $dir || exit 1;
283 if [ $dir = "ssl" ]; then
284 rel="OpenSSL SSL/TLS library"
78b5e413 285 elif [ $dir = "crypto" ]; then
ce2ff00e 286 rel="OpenSSL cryptographic library"
287 fi
78b5e413 288
db17f76a 289 %{__perl} -pi -e 's/(\W)((?<!openssl_)\w+)(\(\d\))/$1openssl_$2$3/g; s/openssl_openssl/openssl/g;' *.pod;
78b5e413
TP
290
291 for pod in *.pod; do
292 sec=`[ "$pod" = "des_modes.pod" ] && echo 7 || echo 3`;
293 mv -f $pod openssl_$pod;
294 pod=openssl_$pod;
295 manpage=`basename $pod .pod`.$sec;
296 pod2man --section="$sec" --release="$rel" --center=" " $pod > $manpage;
297 echo "$manpage";
ce2ff00e 298 done
299 cd ..
300done
301
779bb536 302#cd perl
62d94adc 303#%%{__perl} Makefile.PL \
db17f76a 304# INSTALLDIRS=vendor
4bbd074c 305#%{__make}
21ac4f86
AF
306
307%install
04a5ad1f 308rm -rf $RPM_BUILD_ROOT
ce2ff00e 309install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name},%{_libdir}/%{name}} \
4b251642
JK
310 $RPM_BUILD_ROOT{%{_mandir}/{pl/man1,man{1,3,5,7}},%{_datadir}/ssl} \
311 $RPM_BUILD_ROOT%{_pkgconfigdir}
faddd309 312
fe57b0ac 313%{__make} install \
2cd8efed 314 CC="%{__cc}" \
faddd309 315 INSTALLTOP=%{_prefix} \
027a4889
TO
316 INSTALL_PREFIX=$RPM_BUILD_ROOT \
317 MANDIR=%{_mandir}
04a5ad1f 318
a29936cc 319install %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/ssl/ca-bundle.crt
027a4889 320install libcrypto.a libssl.a $RPM_BUILD_ROOT%{_libdir}
78b5e413 321install lib*.so.*.* $RPM_BUILD_ROOT%{_libdir}
77dadeb8
JR
322ln -sf libcrypto.so.*.* $RPM_BUILD_ROOT%{_libdir}/libcrypto.so
323ln -sf libssl.so.*.* $RPM_BUILD_ROOT%{_libdir}/libssl.so
04a5ad1f 324
fc19f542 325mv -f $RPM_BUILD_ROOT%{_var}/lib/%{name}/openssl.cnf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
c54cc7cc 326ln -s %{_sysconfdir}/%{name}/openssl.cnf \
ce2ff00e 327 $RPM_BUILD_ROOT%{_var}/lib/%{name}/%{name}.cnf
ce2ff00e 328
78b5e413 329mv -f $RPM_BUILD_ROOT%{_var}/lib/%{name}/misc/* $RPM_BUILD_ROOT%{_libdir}/%{name}
ce2ff00e 330rm -rf $RPM_BUILD_ROOT%{_var}/lib/%{name}/misc
04a5ad1f 331
fc19f542 332mv -f $RPM_BUILD_ROOT%{_bindir}/c_rehash $RPM_BUILD_ROOT%{_libdir}/%{name}
04a5ad1f 333
ce2ff00e 334find $RPM_BUILD_ROOT%{_mandir} -type f | xargs rm -f
d86c2c8b 335install doc/apps/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
336install doc/apps/*.5 $RPM_BUILD_ROOT%{_mandir}/man5
337install doc/ssl/*.3 doc/crypto/*.3 $RPM_BUILD_ROOT%{_mandir}/man3
338install doc/crypto/*.7 $RPM_BUILD_ROOT%{_mandir}/man7
62382817 339install %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/pl/man1/openssl.1
ea55f735 340install %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/ssl-certificate
9fc51b3c 341
81c6c2dc
AM
342rm $RPM_BUILD_ROOT%{_mandir}/man5/x509v3_config.5
343echo ".so openssl_x509v3_config.5" > $RPM_BUILD_ROOT%{_mandir}/man5/x509v3_config.5
344rm $RPM_BUILD_ROOT%{_mandir}/man7/Modes_of_DES.7
345echo ".so openssl_des_modes.7" > $RPM_BUILD_ROOT%{_mandir}/man7/Modes_of_DES.7
346
57dc6058
JB
347%clean
348rm -rf $RPM_BUILD_ROOT
61a04a63 349
d86c2c8b 350%post -p /sbin/ldconfig
ce2ff00e 351%postun -p /sbin/ldconfig
04a5ad1f 352
21ac4f86 353%files
04a5ad1f 354%defattr(644,root,root,755)
57dc6058
JB
355%doc CHANGES CHANGES.SSLeay LICENSE NEWS README doc/*.txt
356%doc doc/openssl_button.gif doc/openssl_button.html
623d135e
JB
357%attr(755,root,root) %{_libdir}/libcrypto.so.*.*.*
358%attr(755,root,root) %{_libdir}/libssl.so.*.*.*
9fc51b3c
JB
359%dir %{_libdir}/engines
360%attr(755,root,root) %{_libdir}/engines/*.so
c05bfb9b
TP
361%dir %{_var}/lib/%{name}
362%dir %{_var}/lib/%{name}/certs
363%dir %{_var}/lib/%{name}/private
b87437db 364%dir %{_datadir}/ssl
623d135e 365%config(noreplace) %verify(not md5 mtime size) %{_datadir}/ssl/ca-bundle.crt
ce2ff00e 366
367%files tools
368%defattr(644,root,root,755)
369%dir %{_sysconfdir}/%{name}
5fcc5abe 370
623d135e
JB
371%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/openssl.cnf
372%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/%{name}/openssl.cnf
ce2ff00e 373
374%attr(755,root,root) %{_bindir}/%{name}
ea55f735 375%attr(754,root,root) %{_bindir}/ssl-certificate
17a30265 376
ce2ff00e 377%dir %{_libdir}/%{name}
378%attr(755,root,root) %{_libdir}/%{name}/CA.sh
379%attr(755,root,root) %{_libdir}/%{name}/c_hash
ce2ff00e 380%attr(755,root,root) %{_libdir}/%{name}/c_info
381%attr(755,root,root) %{_libdir}/%{name}/c_issuer
382%attr(755,root,root) %{_libdir}/%{name}/c_name
383
d86c2c8b 384%{_mandir}/man1/openssl.1*
385%{_mandir}/man1/openssl_asn1parse.1*
386%{_mandir}/man1/openssl_ca.1*
387%{_mandir}/man1/openssl_ciphers.1*
388%{_mandir}/man1/openssl_crl.1*
389%{_mandir}/man1/openssl_crl2pkcs7.1*
390%{_mandir}/man1/openssl_dgst.1*
391%{_mandir}/man1/openssl_dhparam.1*
392%{_mandir}/man1/openssl_dsa.1*
393%{_mandir}/man1/openssl_dsaparam.1*
9fc51b3c
JB
394%{_mandir}/man1/openssl_ec.1*
395%{_mandir}/man1/openssl_ecparam.1*
d86c2c8b 396%{_mandir}/man1/openssl_enc.1*
5d088344 397%{_mandir}/man1/openssl_errstr.1*
d86c2c8b 398%{_mandir}/man1/openssl_gendsa.1*
399%{_mandir}/man1/openssl_genrsa.1*
400%{_mandir}/man1/openssl_nseq.1*
027a4889 401%{_mandir}/man1/openssl_ocsp.1*
d86c2c8b 402%{_mandir}/man1/openssl_passwd.1*
403%{_mandir}/man1/openssl_pkcs12.1*
404%{_mandir}/man1/openssl_pkcs7.1*
405%{_mandir}/man1/openssl_pkcs8.1*
406%{_mandir}/man1/openssl_rand.1*
407%{_mandir}/man1/openssl_req.1*
408%{_mandir}/man1/openssl_rsa.1*
57dc6058 409%{_mandir}/man1/openssl_rsautl.1*
d86c2c8b 410%{_mandir}/man1/openssl_s_client.1*
411%{_mandir}/man1/openssl_s_server.1*
c0cc4a35 412%{_mandir}/man1/openssl_s_time.1*
d86c2c8b 413%{_mandir}/man1/openssl_sess_id.1*
414%{_mandir}/man1/openssl_smime.1*
415%{_mandir}/man1/openssl_speed.1*
416%{_mandir}/man1/openssl_spkac.1*
417%{_mandir}/man1/openssl_verify.1*
418%{_mandir}/man1/openssl_version.1*
419%{_mandir}/man1/openssl_x509.1*
9fc51b3c 420%{_mandir}/man1/openssl_x509v3_config.1*
d86c2c8b 421%{_mandir}/man5/*.5*
62382817 422%lang(pl) %{_mandir}/pl/man1/openssl.1*
ce2ff00e 423
424%files tools-perl
425%defattr(644,root,root,755)
426%attr(755,root,root) %{_libdir}/%{name}/CA.pl
77dadeb8 427%attr(755,root,root) %{_libdir}/%{name}/c_rehash
d86c2c8b 428%{_mandir}/man1/openssl_CA.pl.1*
faddd309
AF
429
430%files devel
431%defattr(644,root,root,755)
f4434df9
PS
432%attr(755,root,root) %{_libdir}/libcrypto.so
433%attr(755,root,root) %{_libdir}/libssl.so
ce2ff00e 434%{_includedir}/%{name}
9fc51b3c
JB
435%{_pkgconfigdir}/libcrypto.pc
436%{_pkgconfigdir}/libssl.pc
8c362d23 437%{_pkgconfigdir}/openssl.pc
027a4889 438%{_mandir}/man3/openssl*.3*
57dc6058 439%{_mandir}/man7/*.7*
faddd309
AF
440
441%files static
442%defattr(644,root,root,755)
48e547a4 443%{_libdir}/lib*.a
This page took 0.145346 seconds and 4 git commands to generate.