git.spec 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. ##
  2. ## git.spec -- OpenPKG RPM Package Specification
  3. ## Copyright (c) 2000-2010 OpenPKG Foundation e.V. <http://openpkg.net/>
  4. ##
  5. ## Permission to use, copy, modify, and distribute this software for
  6. ## any purpose with or without fee is hereby granted, provided that
  7. ## the above copyright notice and this permission notice appear in all
  8. ## copies.
  9. ##
  10. ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  11. ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  12. ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  13. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
  14. ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  15. ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  16. ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  17. ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  18. ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  19. ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  20. ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  21. ## SUCH DAMAGE.
  22. ##
  23. # package version
  24. %define V_git 1.7.2
  25. %define V_cogito 0.18.2
  26. %define V_stgit 0.14.3
  27. %define V_guilt 0.33
  28. %define V_tig 0.16
  29. %define V_gcutils 0.2.3
  30. # package information
  31. Name: git
  32. Summary: Distributed Version Control System
  33. URL: http://git-scm.com/
  34. Vendor: Linus Torvalds, Junio C Hamano
  35. Packager: OpenPKG Foundation e.V.
  36. Distribution: OpenPKG Community
  37. Class: EVAL
  38. Group: SCM
  39. License: GPL
  40. Version: %{V_git}
  41. Release: 20100722
  42. # package options
  43. %option with_doc no
  44. %option with_cogito no
  45. %option with_stgit no
  46. %option with_guilt no
  47. %option with_tig no
  48. %option with_gcutils no
  49. # list of sources
  50. Source0: http://www.kernel.org/pub/software/scm/git/git-%{V_git}.tar.gz
  51. Source1: http://www.kernel.org/pub/software/scm/cogito/cogito-%{V_cogito}.tar.gz
  52. Source2: http://homepage.ntlworld.com/cmarinas/stgit/stgit-%{V_stgit}.tar.gz
  53. Source3: http://www.kernel.org/pub/linux/kernel/people/jsipek/guilt/guilt-%{V_guilt}.tar.gz
  54. Source4: http://jonas.nitro.dk/tig/releases/tig-%{V_tig}.tar.gz
  55. Source5: http://switch.dl.sourceforge.net/gcutils/gcutils-v%{V_gcutils}.tar.gz
  56. Source6: rc.git
  57. Patch0: git.patch
  58. # build information
  59. BuildPreReq: OpenPKG, openpkg >= 20100101
  60. PreReq: OpenPKG, openpkg >= 20100101
  61. BuildPreReq: gcc, make, perl-openpkg
  62. %if "%{with_doc}" == "yes"
  63. BuildPreReq: asciidoc, xmlto
  64. %endif
  65. BuildPreReq: bash, perl, diffutils
  66. PreReq: bash, perl, diffutils
  67. BuildPreReq: zlib, openssl, curl, expat, libiconv
  68. PreReq: zlib, openssl, curl, expat, libiconv
  69. BuildPreReq: python
  70. PreReq: python
  71. %if "%{with_tig}" == "yes"
  72. BuildPreReq: ncurses
  73. PreReq: ncurses
  74. %endif
  75. %if "%{with_gcutils}" == "yes"
  76. BuildPreReq: gzip
  77. %endif
  78. %description
  79. GIT is a "directory content manager" designed to handle absolutely
  80. massive projects with speed and efficiency. GIT falls in the
  81. category of distributed source code management tools. Every GIT
  82. working directory is a full-fledged repository with full revision
  83. tracking capabilities, not dependent on network access to a central
  84. server.
  85. This package contains both the low-level GIT core components and
  86. optionally the high-level GIT frontends Cogito, StGIT and Guilt.
  87. %track
  88. prog git:git = {
  89. version = %{V_git}
  90. url = http://www.kernel.org/pub/software/scm/git/
  91. regex = git-(\d+(\.\d+)+)\.tar\.gz
  92. }
  93. prog git:cogito = {
  94. version = %{V_cogito}
  95. url = http://www.kernel.org/pub/software/scm/cogito/
  96. regex = cogito-(__VER__)\.tar\.gz
  97. }
  98. prog git:stgit = {
  99. version = %{V_stgit}
  100. url = http://homepage.ntlworld.com/cmarinas/stgit/
  101. regex = stgit-(__VER__)\.tar\.gz
  102. }
  103. prog git:guilt = {
  104. version = %{V_guilt}
  105. url = http://www.kernel.org/pub/linux/kernel/people/jsipek/guilt/
  106. regex = guilt-(__VER__)\.tar\.gz
  107. }
  108. prog git:tig = {
  109. version = %{V_tig}
  110. url = http://jonas.nitro.dk/tig/releases/
  111. regex = tig-(__VER__)\.tar\.gz
  112. }
  113. prog git:gcutils = {
  114. version = %{V_gcutils}
  115. url = http://sourceforge.net/projects/gcutils/files/
  116. regex = gcutils-v(__VER__)\.tar\.gz
  117. }
  118. %prep
  119. %setup -q -c
  120. %setup -q -T -D -a 1
  121. %setup -q -T -D -a 2
  122. %setup -q -T -D -a 3
  123. %setup -q -T -D -a 4
  124. %setup -q -T -D -a 5
  125. %patch -p0
  126. %build
  127. # build GIT core
  128. ( cd git-%{V_git}
  129. find . -name "*.[ch]" -print |\
  130. xargs %{l_shtool} subst \
  131. -e 's;struct option;struct git_option;g'
  132. ( echo "GITWEB_CONFIG = %{l_prefix}/etc/git/gitweb.config.pl"
  133. echo "GITWEB_BASE_URL = /openpkg-cgi/gitweb.d"
  134. echo "GITWEB_CSS = /openpkg-cgi/gitweb.d/static/gitweb.css"
  135. echo "GITWEB_JS = /openpkg-cgi/gitweb.d/static/gitweb.js"
  136. echo "GITWEB_LOGO = /openpkg-cgi/gitweb.d/static/git-logo.png"
  137. echo "GITWEB_FAVICON = /openpkg-cgi/gitweb.d/static/git-favicon.png"
  138. echo "GITWEB_PROJECTROOT = %{l_prefix}/var/git"
  139. echo "PYTHON_PATH = %{l_prefix}/bin/python"
  140. echo "NEEDS_CRYPTO_WITH_SSL = YesPlease"
  141. ) >config.mak
  142. CC="%{l_cc}" \
  143. CFLAGS="%{l_cflags -O}" \
  144. CPPFLAGS="%{l_cppflags}" \
  145. LDFLAGS="%{l_ldflags}" \
  146. ./configure \
  147. --prefix=%{l_prefix} \
  148. --mandir=%{l_prefix}/man \
  149. --with-openssl=%{l_prefix} \
  150. --with-curl=%{l_prefix} \
  151. --with-expat=%{l_prefix} \
  152. --with-iconv=%{l_prefix} \
  153. --with-zlib=%{l_prefix} \
  154. --with-bash=%{l_prefix}/bin/bash \
  155. --with-perl=%{l_prefix}/bin/perl \
  156. --without-tcltk \
  157. --disable-pthreads
  158. %{l_make} %{l_mflags}
  159. %if "%{with_doc}" == "yes"
  160. ( cd Documentation
  161. %{l_make} %{l_mflags} man
  162. ) || exit $?
  163. %endif
  164. ) || exit $?
  165. # build Cogito frontend
  166. %if "%{with_cogito}" == "yes"
  167. ( cd cogito-%{V_cogito}
  168. %{l_make} %{l_mflags} \
  169. prefix=%{l_prefix}
  170. ) || exit $?
  171. %endif
  172. # build Guilt add-on
  173. %if "%{with_guilt}" == "yes"
  174. ( cd guilt-%{V_guilt}
  175. %{l_shtool} subst \
  176. -e 's;/bin/sh;%{l_prefix}/bin/bash;g' \
  177. guilt*
  178. ) || exit $?
  179. %endif
  180. # build Tig add-on
  181. %if "%{with_tig}" == "yes"
  182. ( cd tig-%{V_tig}
  183. CC="%{l_cc}" \
  184. CFLAGS="%{l_cflags -O}" \
  185. CPPFLAGS="%{l_cppflags ncurses .}" \
  186. LDFLAGS="%{l_ldflags}" \
  187. ./configure \
  188. --prefix=%{l_prefix} \
  189. --mandir=%{l_prefix}/man \
  190. --with-libiconv=%{l_prefix}
  191. %{l_make} %{l_mflags}
  192. ) || exit $?
  193. %endif
  194. # build GC-Utils add-on
  195. %if "%{with_gcutils}" == "yes"
  196. ( cd gc-utils
  197. %{l_make} %{l_mflags} \
  198. prefix=%{l_prefix} \
  199. mandir=%{l_prefix}/man
  200. ) || exit $?
  201. %endif
  202. %install
  203. # install GIT core
  204. ( cd git-%{V_git}
  205. %{l_make} %{l_mflags} install \
  206. DESTDIR=$RPM_BUILD_ROOT
  207. %if "%{with_doc}" == "yes"
  208. ( cd Documentation
  209. %{l_shtool} mkdir -f -p -m 755 \
  210. $RPM_BUILD_ROOT%{l_prefix}/man/man1 \
  211. $RPM_BUILD_ROOT%{l_prefix}/man/man5 \
  212. $RPM_BUILD_ROOT%{l_prefix}/man/man7
  213. %{l_shtool} install -c -m 644 \
  214. *.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/
  215. %{l_shtool} install -c -m 644 \
  216. *.5 $RPM_BUILD_ROOT%{l_prefix}/man/man5/
  217. %{l_shtool} install -c -m 644 \
  218. *.7 $RPM_BUILD_ROOT%{l_prefix}/man/man7/
  219. ) || exit $?
  220. %endif
  221. ) || exit $?
  222. # install GIT web interface
  223. %{l_shtool} mkdir -f -p -m 755 \
  224. $RPM_BUILD_ROOT%{l_prefix}/cgi/gitweb.d/static \
  225. $RPM_BUILD_ROOT%{l_prefix}/etc/git
  226. %{l_shtool} install -c -m 755 \
  227. git-%{V_git}/gitweb/gitweb.cgi $RPM_BUILD_ROOT%{l_prefix}/cgi/
  228. %{l_shtool} install -c -m 644 \
  229. git-%{V_git}/gitweb/static/* \
  230. $RPM_BUILD_ROOT%{l_prefix}/cgi/gitweb.d/static/
  231. ( echo "##"
  232. echo "## gitweb.config.pl -- gitweb Perl configuration "
  233. echo "##"
  234. echo ""
  235. echo "1;"
  236. ) >gitweb.config.pl
  237. %{l_shtool} install -c -m 755 \
  238. gitweb.config.pl $RPM_BUILD_ROOT%{l_prefix}/etc/git/
  239. # install GIT bash programmable completion
  240. %{l_shtool} install -c -m 644 \
  241. git-%{V_git}/contrib/completion/git-completion.bash \
  242. $RPM_BUILD_ROOT%{l_prefix}/etc/git/git.bashrc
  243. # install Cogito frontend
  244. %if "%{with_cogito}" == "yes"
  245. ( cd cogito-%{V_cogito}
  246. %{l_make} %{l_mflags} install \
  247. INSTALL="%{l_shtool} install" \
  248. DESTDIR=$RPM_BUILD_ROOT \
  249. prefix=%{l_prefix}
  250. ) || exit $?
  251. %endif
  252. # install StGIT add-on
  253. %if "%{with_stgit}" == "yes"
  254. ( cd stgit-%{V_stgit}
  255. PATH="`pwd`/../git-%{V_git}:$PATH"
  256. %{l_prefix}/bin/python setup.py install \
  257. --root=$RPM_BUILD_ROOT \
  258. --prefix=%{l_prefix} \
  259. --install-lib=%{l_prefix}/lib/git
  260. ) || exit $?
  261. %endif
  262. # install Guilt add-on
  263. %if "%{with_guilt}" == "yes"
  264. ( cd guilt-%{V_guilt}
  265. %{l_make} %{l_mflags} install \
  266. PREFIX=$RPM_BUILD_ROOT%{l_prefix}
  267. ) || exit $?
  268. %endif
  269. # install Tig add-on
  270. %if "%{with_tig}" == "yes"
  271. ( cd tig-%{V_tig}
  272. %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
  273. ) || exit $?
  274. %endif
  275. # install GC-Utils add-on
  276. %if "%{with_gcutils}" == "yes"
  277. ( cd gc-utils
  278. %{l_make} %{l_mflags} \
  279. prefix=$RPM_BUILD_ROOT%{l_prefix} \
  280. mandir=$RPM_BUILD_ROOT%{l_prefix}/man \
  281. install
  282. ) || exit $?
  283. %endif
  284. # install run-command script
  285. %{l_shtool} mkdir -f -p -m 755 \
  286. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
  287. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  288. %{SOURCE rc.git} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  289. # strip down installation
  290. strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
  291. strip $RPM_BUILD_ROOT%{l_prefix}/libexec/git-core/* >/dev/null 2>&1 || true
  292. rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/doc
  293. # create additional directories
  294. %{l_shtool} mkdir -f -p -m 755 \
  295. $RPM_BUILD_ROOT%{l_prefix}/var/git/run \
  296. $RPM_BUILD_ROOT%{l_prefix}/var/git/db
  297. # determine installation files
  298. %{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate cleanup
  299. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
  300. %{l_files_std} `cat perl-openpkg-files` \
  301. '%config %{l_prefix}/etc/git/*' \
  302. '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/git/*'
  303. %files -f files
  304. %clean