]> git.pld-linux.org Git - packages/tomcat.git/blame - tomcat.spec
- R: java-mail, and symlink it into tomcat's lib directory.
[packages/tomcat.git] / tomcat.spec
CommitLineData
3ba87888 1
eca62e60 2# Conditional build:
ac632beb 3%bcond_without javadoc # skip building javadocs
1d6ec01d 4%bcond_without webservices # skip building webservices
1d6ec01d 5
6%define jspapiver 2.1
7%define servletapiver 2.5
8
3ba87888 9%include /usr/lib/rpm/macros.java
868907c0 10Summary: Web server and Servlet/JSP Engine, RI for Servlet %{servletapiver}/JSP %{jspapiver} API
f02af67f 11Summary(pl.UTF-8): Serwer www i silnik Servlet/JSP będący wzorcową implementacją API Servlet %{servletapiver}/JSP %{jspapiver}
14a619da 12Name: tomcat
d4e41cd7 13Version: 6.0.26
d35d9f28 14Release: 7
c1934721 15License: Apache v2.0
16Group: Networking/Daemons/Java
1d6ec01d 17Source0: http://www.apache.org/dist/tomcat/tomcat-6/v%{version}/src/apache-%{name}-%{version}-src.tar.gz
d4e41cd7 18# Source0-md5: 83b46d9346bcbc517dbf6f1cac9ef8b1
14a619da 19Source1: apache-%{name}.init
20Source2: apache-%{name}.sysconfig
1d6ec01d 21Source3: %{name}-build.properties
22Source10: %{name}-context-ROOT.xml
23Source11: %{name}-context-docs.xml
24Source12: %{name}-context-manager.xml
25Source13: %{name}-context-host-manager.xml
26Source14: %{name}-context-examples.xml
27Patch0: %{name}-build.xml.patch
28Patch1: %{name}-extras.xml.patch
aef723ef 29URL: http://tomcat.apache.org/
498e9275 30BuildRequires: ant >= 1.5.3
7ea1b4e7 31BuildRequires: ant-trax
1d6ec01d 32BuildRequires: eclipse-jdt >= 3.2
5d4d27d1 33BuildRequires: java-commons-daemon >= 1.0
1d6ec01d 34BuildRequires: java-commons-dbcp-tomcat5 >= 0:1.1
ffe85d25 35BuildRequires: java-commons-pool-tomcat5
1d6ec01d 36%if %{with webservices}
1d6ec01d 37BuildRequires: java(JSR109)
3ba87888 38BuildRequires: java-geronimo-spec-jaxrpc
1d6ec01d 39%endif
e5a85283 40BuildRequires: java-jdbc-mysql
25b4b7d9 41BuildRequires: jdk
7ea1b4e7 42BuildRequires: jpackage-utils
a18fb636 43BuildRequires: rpm-javaprov
7ea1b4e7 44BuildRequires: rpmbuild(macros) >= 1.300
8129909e
ER
45Requires(post,preun): /sbin/chkconfig
46Requires(postun): /usr/sbin/groupdel
47Requires(postun): /usr/sbin/userdel
48Requires(pre): /bin/id
49Requires(pre): /usr/bin/getgid
50Requires(pre): /usr/sbin/groupadd
51Requires(pre): /usr/sbin/useradd
d5057aa4 52Requires: java(jaxp_parser_impl)
53Requires: java(jndi) >= 1.2.1
2d7d7c63 54Requires: java-%{name}-catalina = %{epoch}:%{version}-%{release}
55Requires: java-%{name}-coyote = %{epoch}:%{version}-%{release}
d0340044 56Requires: java-%{name}-jasper = %{epoch}:%{version}-%{release}
ffe85d25 57Requires: java-commons-dbcp-tomcat5 >= 0:1.1
ffe85d25 58Requires: java-commons-pool-tomcat5
da4f9769 59Requires: java-jdbc-mysql
b6c309e6 60Requires: java-mail
da4f9769 61Requires: java-servletapi = %{epoch}:%{version}-%{release}
06f3c8c2 62Requires: jpackage-utils
3352e747 63Requires: jre >= 1.2
06f3c8c2 64Requires: jsvc
eca62e60 65Requires: rc-scripts
da4f9769 66Suggests: tomcat-native
fa20abb1 67Provides: group(servlet)
201f6baa 68Provides: group(tomcat)
69Provides: user(tomcat)
26763826 70Obsoletes: apache-tomcat
51bcbcd2 71Obsoletes: jakarta-tomcat
623f0978 72BuildArch: noarch
73BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
74
a97a4eb2 75%define _tomcatdir %{_datadir}/tomcat
623f0978 76%define _logdir %{_var}/log
a0446376 77%define _vardir %{_var}/lib/tomcat
a97a4eb2 78%define _sysconfdir /etc/tomcat
623f0978 79
1d6ec01d 80%define find_jar() %{expand:%%define jarfile {%(jar=$(find-jar %1); echo ${jar:-%%nil})}}%{?jarfile}%{!?jarfile:%{error:find-jar %1 failed}}%{nil}
81
623f0978 82%description
eca62e60
ER
83Tomcat is the servlet container that is used in the official Reference
84Implementation for the Java Servlet and JavaServer Pages technologies.
85The Java Servlet and JavaServer Pages specifications are developed by
86Sun under the Java Community Process.
623f0978 87
eca62e60
ER
88Tomcat is developed in an open and participatory environment and
89released under the Apache Software License. Tomcat is intended to be a
90collaboration of the best-of-breed developers from around the world.
91We invite you to participate in this open development project.
92
f045ab88
JB
93%description -l pl.UTF-8
94Tomcat to kontener serwletowy używany przez oficjalną implementację
95wzorcową technologii Java Servlet i JavaServer Pages. Specyfikacje
51bcbcd2
ER
96Java Servlet i JavaServer Pages są rozwijane przez Suna zgodnie z Java
97Community Process.
623f0978 98
1d6ec01d 99%package webapp-docs
51bcbcd2 100Summary: The Apache Tomcat Servlet/JSP Container documentation
152e6062 101Summary(pl.UTF-8): Dokumentacja do Tomcata - kontenera Servlet/JSP
c1934721 102Group: Documentation
26763826 103Obsoletes: apache-tomcat-doc
51bcbcd2 104Obsoletes: jakarta-tomcat-doc
1d6ec01d 105Obsoletes: tomcat-doc
623f0978 106
1d6ec01d 107%description webapp-docs
e1f70dd8
JB
108The Tomcat Servlet/JSP Container documentation.
109
1d6ec01d 110%description webapp-docs -l pl.UTF-8
152e6062 111Dokumentacja do Tomcata - kontenera Servlet/JSP.
623f0978 112
1d6ec01d 113%package webapp-manager
114Summary: The Apache Tomcat Servlet/JSP application manager
115Summary(pl.UTF-8): Zarządca aplikacji w Tomcacie
116Group: Networking/Daemons/Java/Servlets
8917be8d 117Requires: %{name} = %{epoch}:%{version}-%{release}
1d6ec01d 118
119%description webapp-manager
120The Apache Tomcat Servlet/JSP application manager.
121
122%description webapp-manager -l pl.UTF-8
123Zarządca aplikacji w Tomcacie.
124
125%package webapp-host-manager
126Summary: The Apache Tomcat Servlet/JSP virtual hosts manager
127Summary(pl.UTF-8): Zarządca wirtualnych hostów w Tomcacie
c1934721 128Group: Networking/Daemons/Java/Servlets
8917be8d 129Requires: %{name} = %{epoch}:%{version}-%{release}
1d6ec01d 130Obsoletes: tomcat-admin
804609f8 131
1d6ec01d 132%description webapp-host-manager
133The Apache Tomcat Servlet/JSP virtual hosts manager.
804609f8 134
1d6ec01d 135%description webapp-host-manager -l pl.UTF-8
136Zarządca wirtualnych hostów w Tomcacie.
137
138%package webapp-examples
139Summary: The Apache Tomcat Servlet/JSP example applications
140Summary(pl.UTF-8): Przykładowe aplikacje dla Tomcata
141Group: Networking/Daemons/Java/Servlets
8917be8d 142Requires: %{name} = %{epoch}:%{version}-%{release}
1d6ec01d 143
144%description webapp-examples
145The Apache Tomcat Servlet/JSP example applications.
146
147%description webapp-examples -l pl.UTF-8
148Przykładowe aplikacje dla Tomcata.
149
150%package webservices
151Summary: Web Services support (JSR 109)
152Group: Libraries/Java
da4f9769 153Requires: %{name} = %{epoch}:%{version}-%{release}
1d6ec01d 154Requires: java(JSR109)
3ba87888 155Requires: java-geronimo-spec-jaxrpc
1d6ec01d 156
157%description webservices
158Factories for JSR 109 which may be used to resolve web services
159references.
804609f8 160
df85b7fd 161%package -n java-tomcat-catalina
f02af67f 162Summary: Tomcat's servlet container
163Group: Libraries/Java
164Requires: jpackage-utils
165
df85b7fd 166%description -n java-tomcat-catalina
f02af67f 167Catalina is Tomcat's servlet container. Catalina implements Sun
168Microsystems' specifications for servlet and JavaServer Pages (JSP).
169
df85b7fd 170%package -n java-tomcat-coyote
f02af67f 171Summary: Tomcat HTTP connector
172Group: Libraries/Java
173Requires: jpackage-utils
174
df85b7fd 175%description -n java-tomcat-coyote
f02af67f 176Coyote is Tomcat's HTTP Connector component that supports the HTTP 1.1
177protocol for the web server or application container. Coyote listens
178for incoming connections on a specific TCP port on the server and
179forwards the request to the Tomcat Engine to process the request and
180send back a response to the requesting client.
181
d0340044 182%package -n java-tomcat-jasper
55a9c77b 183Summary: JSP compiler
184Summary(pl.UTF-8): Kompilator JSP
d4ae229e 185Group: Libraries/Java
2ab6ab5f 186Requires: eclipse-jdt >= 3.2
da4f9769 187Requires: jpackage-utils
26763826 188Obsoletes: apache-tomcat-jasper
d0340044 189Obsoletes: tomcat-jasper
d4ae229e 190
d0340044 191%description -n java-tomcat-jasper
55a9c77b 192Jasper is Java ServerPages compiler used by Apache Tomcat servlet
193container.
194
d0340044 195%description -n java-tomcat-jasper -l pl.UTF-8
55a9c77b 196Jasper jest kompilatorem Java ServerPages używanym przez kontener
197servletów Apache Tomcat.
d4ae229e 198
1d6ec01d 199%package -n java-servletapi
200Summary: Java servlet and JSP implementation classes
201Summary(pl.UTF-8): Klasy z implementacją Java Servlet i JSP
202Group: Libraries/Java
d5057aa4 203Provides: java(jsp) = %{jspapiver}
204Provides: java(servlet) = %{servletapiver}
1d6ec01d 205Obsoletes: java-servletapi5
206
207%description -n java-servletapi
208Implementation classes of the Java Servlet and JSP APIs (packages
209javax.servlet, javax.servlet.http, javax.servlet.jsp, and
210javax.servlet.jsp.tagext).
211
212%description -n java-servletapi -l pl.UTF-8
213Implementacje klas API Java Servlet i JSP (pakiety javax.servlet,
214javax.servlet.http, javax.servlet.jsp i java.servlet.jsp.tagext).
215
623f0978 216%prep
14a619da 217%setup -q -n apache-%{name}-%{version}-src
3bd96a5e 218
1d6ec01d 219%patch0 -p0
220%patch1 -p0
e2f6574d 221
1d6ec01d 222# we don't need those scripts
223rm bin/*.bat
224rm bin/{startup,shutdown}.sh
eca62e60 225
1d6ec01d 226cp %{SOURCE3} build.properties
623f0978 227
228%build
eca62e60
ER
229TOPDIR=$(pwd)
230
1d6ec01d 231%ant -Drpm.javadir=%{_javadir} -Drpm.libdir=%{_libdir}
232
233%if %{with javadoc}
234%ant -f dist.xml dist-javadoc
235%endif
236
237%if %{with webservices}
238mkdir -p output/extras/webservices
239
240ln -s %{_javadir}/geronimo-spec-jaxrpc.jar output/extras/webservices/jaxrpc.jar
241ln -s %{_javadir}/jsr109.jar output/extras/webservices/wsdl4j.jar
242
243%ant -f extras.xml webservices
244%endif
3bd96a5e 245
eca62e60 246
623f0978 247%install
248rm -rf $RPM_BUILD_ROOT
1d6ec01d 249cd output/build
250
a97a4eb2
ER
251TOMCATDIR=$RPM_BUILD_ROOT%{_tomcatdir}
252CATALINADIR=$RPM_BUILD_ROOT/var/lib/tomcat
623f0978 253
1d6ec01d 254install -d $TOMCATDIR \
255 $CATALINADIR/temp \
98133f85 256 $RPM_BUILD_ROOT%{_vardir}/webapps \
a0446376 257 $RPM_BUILD_ROOT%{_vardir}/work \
98133f85 258 $RPM_BUILD_ROOT%{_vardir}/conf \
1d6ec01d 259 $RPM_BUILD_ROOT%{_logdir}/tomcat \
125df118 260 $RPM_BUILD_ROOT/etc/sysconfig \
a0446376 261 $RPM_BUILD_ROOT/etc/rc.d/init.d
389e46b9 262
a97a4eb2 263install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/tomcat
f93b3a59 264install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/tomcat
623f0978 265
3bd96a5e 266cp -a conf/* $CATALINADIR/conf
1d6ec01d 267install -d $CATALINADIR/conf/Catalina/localhost
3e2cdbf3 268install %{SOURCE10} $CATALINADIR/conf/Catalina/localhost/ROOT.xml
1d6ec01d 269install %{SOURCE11} $CATALINADIR/conf/Catalina/localhost/docs.xml
270install %{SOURCE12} $CATALINADIR/conf/Catalina/localhost/manager.xml
271install %{SOURCE13} $CATALINADIR/conf/Catalina/localhost/host-manager.xml
272install %{SOURCE14} $CATALINADIR/conf/Catalina/localhost/examples.xml
273
274cp -a bin lib webapps $TOMCATDIR
3bd96a5e 275cp -a temp $CATALINADIR
a97a4eb2 276
98133f85 277ln -sf %{_logdir}/tomcat $CATALINADIR/logs
093ffc1c 278ln -sf %{_logdir}/tomcat $TOMCATDIR/logs
4f9f35cf 279ln -sf %{_vardir}/work $TOMCATDIR/work
98133f85 280ln -sf %{_vardir}/conf $TOMCATDIR/conf
281ln -sf %{_vardir}/conf $RPM_BUILD_ROOT%{_sysconfdir}
a97a4eb2
ER
282
283# symlinks instead of copies
1fe35e78 284jars="commons-daemon commons-logging-api"
fddf8ded
ER
285for jar in $jars; do
286 jar=$(find-jar $jar)
287 ln -sf $jar $TOMCATDIR/bin
288done
289
b6c309e6 290jars="commons-pool-tomcat5 commons-dbcp-tomcat5 mysql-connector-java org.eclipse.jdt.core mail"
1fe35e78 291for jar in $jars; do
292 jar=$(find-jar $jar)
293 ln -sf $jar $TOMCATDIR/lib
294done
295
1d6ec01d 296install -d $RPM_BUILD_ROOT%{_javadir}
297mv $TOMCATDIR/lib/jasper*.jar $RPM_BUILD_ROOT%{_javadir}
298mv $TOMCATDIR/lib/jsp-api.jar $RPM_BUILD_ROOT%{_javadir}/jsp-api-%{jspapiver}.jar
299mv $TOMCATDIR/lib/servlet-api.jar $RPM_BUILD_ROOT%{_javadir}/servlet-api-%{servletapiver}.jar
f02af67f 300mv $TOMCATDIR/lib/catalina.jar $RPM_BUILD_ROOT%{_javadir}/tomcat6-catalina.jar
301mv $TOMCATDIR/lib/tomcat-coyote.jar $RPM_BUILD_ROOT%{_javadir}/tomcat6-coyote.jar
3bd96a5e 302
1d6ec01d 303ln -s jsp-api-%{jspapiver}.jar $RPM_BUILD_ROOT%{_javadir}/jsp-api.jar
304ln -s servlet-api-%{servletapiver}.jar $RPM_BUILD_ROOT%{_javadir}/servlet-api.jar
3bd96a5e 305
1d6ec01d 306# XXX add softlinks jasper-compiler.jar and jasper-runtime for compatibility with tomcat 5.5?
1d6ec01d 307ln -sf %{_javadir}/jasper-el.jar $TOMCATDIR/lib
308ln -sf %{_javadir}/jasper.jar $TOMCATDIR/lib
6378940b 309
2b6adad9 310ln -sf %{_javadir}/jsp-api-%{jspapiver}.jar $TOMCATDIR/lib/jsp-api.jar
311ln -sf %{_javadir}/servlet-api-%{servletapiver}.jar $TOMCATDIR/lib/servlet-api.jar
a0446376 312
f02af67f 313ln -sf %{_javadir}/tomcat6-catalina.jar $TOMCATDIR/lib/catalina.jar
314ln -sf %{_javadir}/tomcat6-coyote.jar $TOMCATDIR/lib/tomcat-coyote.jar
315
1d6ec01d 316%if %{with webservices}
317install ../extras/catalina-ws.jar $TOMCATDIR/lib/catalina-ws.jar
318
319ln -s %{_javadir}/geronimo-spec-jaxrpc.jar $TOMCATDIR/lib/jaxrpc.jar
320ln -s %{_javadir}/jsr109.jar $TOMCATDIR/lib/jsr109.jar
321%endif
d4ae229e 322
623f0978 323%clean
324rm -rf $RPM_BUILD_ROOT
325
2b56d949 326%pre
bc75997d 327%groupadd -g 234 -r -f tomcat
fa20abb1 328%groupadd -g 237 -r -f servlet
329%useradd -u 234 -r -d /var/lib/tomcat -s /bin/false -c "Tomcat User" -g tomcat -G servlet tomcat
2b56d949 330
331%post
332/sbin/chkconfig --add tomcat
6c0937ca 333%service tomcat restart
2b56d949 334
335%preun
336if [ "$1" = "0" ]; then
6c0937ca 337 %service tomcat stop
2b56d949 338 /sbin/chkconfig --del tomcat
339fi
340
341%postun
342if [ "$1" = "0" ]; then
201f6baa 343 %userremove tomcat
344 %groupremove tomcat
fa20abb1 345 %groupremove servlet
2b56d949 346fi
347
623f0978 348%files
349%defattr(644,root,root,755)
1d6ec01d 350%doc KEYS RELEASE-NOTES RELEASE-PLAN-6.0.txt RUNNING.txt
a97a4eb2 351%attr(754,root,root) /etc/rc.d/init.d/tomcat
ab574f59 352%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/tomcat
98133f85 353%{_sysconfdir}
a0446376 354%dir %{_tomcatdir}
98133f85 355%dir %{_tomcatdir}/conf
a0446376 356%dir %{_tomcatdir}/bin
a97a4eb2 357%{_tomcatdir}/bin/catalina-tasks.xml
389e46b9 358%attr(755,root,root) %{_tomcatdir}/bin/*.sh
389e46b9 359%{_tomcatdir}/bin/*.jar
1d6ec01d 360%dir %{_tomcatdir}/lib
361%{_tomcatdir}/lib/annotations-api.jar
d97bb7aa 362%{_tomcatdir}/lib/catalina-ant.jar
363%{_tomcatdir}/lib/catalina-ha.jar
1d6ec01d 364%{_tomcatdir}/lib/catalina.jar
d97bb7aa 365%{_tomcatdir}/lib/catalina-tribes.jar
1d6ec01d 366%{_tomcatdir}/lib/commons-dbcp-tomcat5.jar
3a73cb68 367%{_tomcatdir}/lib/commons-pool-tomcat5.jar
1d6ec01d 368%{_tomcatdir}/lib/el-api.jar
34a6b0e4 369%{_tomcatdir}/lib/jasper-el.jar
370%{_tomcatdir}/lib/jasper.jar
2ab9f95e 371%{_tomcatdir}/lib/jsp-api.jar
d97bb7aa 372%{_tomcatdir}/lib/mysql-connector-java.jar
34a6b0e4 373%{_tomcatdir}/lib/org.eclipse.jdt.core.jar
2ab9f95e 374%{_tomcatdir}/lib/servlet-api.jar
1d6ec01d 375%{_tomcatdir}/lib/tomcat-coyote.jar
d97bb7aa 376%{_tomcatdir}/lib/tomcat-i18n-es.jar
377%{_tomcatdir}/lib/tomcat-i18n-fr.jar
1d6ec01d 378%{_tomcatdir}/lib/tomcat-i18n-ja.jar
3bf2e196
ER
379
380%dir %{_tomcatdir}/webapps
381
382%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/ROOT.xml
383%{_tomcatdir}/webapps/ROOT
384
50aa3a1c 385%{_tomcatdir}/logs
a0446376 386%{_tomcatdir}/work
efc565cf 387%dir %attr(770,root,tomcat) %{_vardir}
1d6ec01d 388# these directory has to be writeable because /admin need to modify config
389# files and create temporary files
efc565cf 390%dir %attr(770,root,tomcat) %{_vardir}/conf
391%dir %attr(770,root,tomcat) %{_vardir}/conf/Catalina
49a8ad15 392%dir %{_vardir}/conf/Catalina/localhost
3bf2e196 393# tomcat config has to be writeable because of tomcat-users.xml file and Catalina dir
8ffc4ec0 394%config(noreplace) %attr(660,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/catalina.policy
395%config(noreplace) %attr(660,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/*.properties*
396%config(noreplace) %attr(660,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/*.xml
efc565cf 397%dir %attr(770,root,tomcat) %{_vardir}/work
398%dir %attr(770,root,tomcat) %{_vardir}/webapps
399%dir %attr(770,root,tomcat) %{_vardir}/temp
400%dir %attr(770,root,tomcat) %{_logdir}/tomcat
9e1e98ce 401%{_vardir}/logs
623f0978 402
1d6ec01d 403%files webapp-docs
ff740076 404%defattr(644,root,root,755)
1d6ec01d 405%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/docs.xml
406%{_tomcatdir}/webapps/docs
d4ae229e 407
1d6ec01d 408%files webapp-manager
804609f8 409%defattr(644,root,root,755)
1d6ec01d 410%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/manager.xml
411%{_tomcatdir}/webapps/manager
412
413%files webapp-host-manager
414%defattr(644,root,root,755)
415%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/host-manager.xml
416%{_tomcatdir}/webapps/host-manager
417
418%files webapp-examples
419%defattr(644,root,root,755)
420%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/examples.xml
421%{_tomcatdir}/webapps/examples
422
423%if %{with webservices}
424%files webservices
425%defattr(644,root,root,755)
d97bb7aa 426%{_tomcatdir}/lib/catalina-ws.jar
1d6ec01d 427%{_tomcatdir}/lib/jsr109.jar
428%{_tomcatdir}/lib/jaxrpc.jar
1d6ec01d 429%endif
804609f8 430
d0340044 431%files -n java-tomcat-jasper
7e500426 432%defattr(644,root,root,755)
1d6ec01d 433%{_javadir}/jasper-el.jar
434%{_javadir}/jasper.jar
435
df85b7fd 436%files -n java-tomcat-catalina
f02af67f 437%defattr(644,root,root,755)
438%{_javadir}/tomcat6-catalina.jar
439
df85b7fd 440%files -n java-tomcat-coyote
f02af67f 441%defattr(644,root,root,755)
442%{_javadir}/tomcat6-coyote.jar
443
1d6ec01d 444%files -n java-servletapi
445%defattr(644,root,root,755)
446%{_javadir}/jsp-api*.jar
447%{_javadir}/servlet-api*.jar
This page took 0.178095 seconds and 4 git commands to generate.