Gentoo Archives: gentoo-commits

From: "Robin H. Johnson (robbat2)" <robbat2@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in dev-vcs/git: git-1.7.12.ebuild git-1.7.12-r1.ebuild ChangeLog
Date: Wed, 22 Aug 2012 04:44:33
Message-Id: 20120822044408.428B4202E1@flycatcher.gentoo.org
1 robbat2 12/08/22 04:44:08
2
3 Modified: ChangeLog
4 Added: git-1.7.12.ebuild git-1.7.12-r1.ebuild
5 Log:
6 Finally, a Git that works with SVN 1.7, per bug #418431! 1.7.12-r1 contains backported ms/git-svn-1.7 branch that will be merged into Git 1.7.13. 1.7.12-r0 excludes that backport but is otherwise identical. Thanks to Michael Schwern for the development work!
7
8 (Portage version: 2.2.0_alpha121/cvs/Linux x86_64)
9
10 Revision Changes Path
11 1.148 dev-vcs/git/ChangeLog
12
13 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-vcs/git/ChangeLog?rev=1.148&view=markup
14 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-vcs/git/ChangeLog?rev=1.148&content-type=text/plain
15 diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-vcs/git/ChangeLog?r1=1.147&r2=1.148
16
17 Index: ChangeLog
18 ===================================================================
19 RCS file: /var/cvsroot/gentoo-x86/dev-vcs/git/ChangeLog,v
20 retrieving revision 1.147
21 retrieving revision 1.148
22 diff -p -w -b -B -u -u -r1.147 -r1.148
23 --- ChangeLog 19 Aug 2012 16:58:25 -0000 1.147
24 +++ ChangeLog 22 Aug 2012 04:44:08 -0000 1.148
25 @@ -1,6 +1,18 @@
26 # ChangeLog for dev-vcs/git
27 # Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
28 -# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/ChangeLog,v 1.147 2012/08/19 16:58:25 armin76 Exp $
29 +# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/ChangeLog,v 1.148 2012/08/22 04:44:08 robbat2 Exp $
30 +
31 +*git-1.7.12-r1 (22 Aug 2012)
32 +*git-1.7.12 (22 Aug 2012)
33 +
34 + 22 Aug 2012; Robin H. Johnson <robbat2@g.o>
35 + +files/git-1.7.12-git-svn-backport.patch,
36 + +files/git-1.7.12-optional-cvs.patch, +git-1.7.12-r1.ebuild,
37 + +git-1.7.12.ebuild:
38 + Finally, a Git that works with SVN 1.7, per bug #418431! 1.7.12-r1 contains
39 + backported ms/git-svn-1.7 branch that will be merged into Git 1.7.13.
40 + 1.7.12-r0 excludes that backport but is otherwise identical. Thanks to Michael
41 + Schwern for the development work!
42
43 19 Aug 2012; Raúl Porcel <armin76@g.o> git-1.7.8.6.ebuild:
44 alpha/s390/sh/sparc stable wrt #418381
45
46
47
48 1.1 dev-vcs/git/git-1.7.12.ebuild
49
50 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-vcs/git/git-1.7.12.ebuild?rev=1.1&view=markup
51 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-vcs/git/git-1.7.12.ebuild?rev=1.1&content-type=text/plain
52
53 Index: git-1.7.12.ebuild
54 ===================================================================
55 # Copyright 1999-2012 Gentoo Foundation
56 # Distributed under the terms of the GNU General Public License v2
57 # $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.7.12.ebuild,v 1.1 2012/08/22 04:44:08 robbat2 Exp $
58
59 EAPI=4
60
61 GENTOO_DEPEND_ON_PERL=no
62
63 # bug #329479: git-remote-testgit is not multiple-version aware
64 PYTHON_DEPEND="python? 2"
65 [[ ${PV} == *9999 ]] && SCM="git-2"
66 EGIT_REPO_URI="git://git.kernel.org/pub/scm/git/git.git"
67
68 inherit toolchain-funcs eutils elisp-common perl-module bash-completion-r1 python ${SCM}
69
70 MY_PV="${PV/_rc/.rc}"
71 MY_P="${PN}-${MY_PV}"
72
73 DOC_VER=${MY_PV}
74
75 DESCRIPTION="GIT - the stupid content tracker, the revision control system heavily used by the Linux kernel team"
76 HOMEPAGE="http://www.git-scm.com/"
77 if [[ ${PV} != *9999 ]]; then
78 SRC_URI_SUFFIX="gz"
79 SRC_URI_GOOG="http://git-core.googlecode.com/files"
80 SRC_URI_KORG="mirror://kernel/software/scm/git"
81 SRC_URI="${SRC_URI_GOOG}/${MY_P}.tar.${SRC_URI_SUFFIX}
82 ${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
83 ${SRC_URI_GOOG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
84 ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
85 doc? (
86 ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
87 ${SRC_URI_GOOG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
88 )"
89 KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~sparc-fbsd ~x86-fbsd ~x64-freebsd ~x86-freebsd ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
90 else
91 SRC_URI=""
92 KEYWORDS=""
93 fi
94
95 LICENSE="GPL-2"
96 SLOT="0"
97 IUSE="+blksha1 +curl cgi doc emacs +gpg gtk +iconv +nls +pcre +perl +python ppcsha1 tk +threads +webdav xinetd cvs subversion test"
98
99 # Common to both DEPEND and RDEPEND
100 CDEPEND="
101 !blksha1? ( dev-libs/openssl )
102 sys-libs/zlib
103 pcre? ( dev-libs/libpcre )
104 perl? ( dev-lang/perl[-build] )
105 tk? ( dev-lang/tk )
106 curl? (
107 net-misc/curl
108 webdav? ( dev-libs/expat )
109 )
110 emacs? ( virtual/emacs )"
111
112 RDEPEND="${CDEPEND}
113 gpg? ( app-crypt/gnupg )
114 perl? ( dev-perl/Error
115 dev-perl/Net-SMTP-SSL
116 dev-perl/Authen-SASL
117 cgi? ( virtual/perl-CGI app-text/highlight )
118 cvs? ( >=dev-vcs/cvsps-2.1 dev-perl/DBI dev-perl/DBD-SQLite )
119 subversion? ( dev-vcs/subversion[-dso,perl] dev-perl/libwww-perl dev-perl/TermReadKey )
120 )
121 python? ( gtk?
122 (
123 >=dev-python/pygtk-2.8
124 dev-python/pygtksourceview:2
125 ) )"
126
127 # This is how info docs are created with Git:
128 # .txt/asciidoc --(asciidoc)---------> .xml/docbook
129 # .xml/docbook --(docbook2texi.pl)--> .texi
130 # .texi --(makeinfo)---------> .info
131 DEPEND="${CDEPEND}
132 app-arch/cpio
133 doc? (
134 app-text/asciidoc
135 app-text/docbook2X
136 sys-apps/texinfo
137 )
138 test? (
139 app-crypt/gnupg
140 )"
141
142 # Live ebuild builds man pages and HTML docs, additionally
143 if [[ ${PV} == *9999 ]]; then
144 DEPEND="${DEPEND}
145 app-text/asciidoc
146 app-text/xmlto"
147 fi
148
149 SITEFILE=50${PN}-gentoo.el
150 S="${WORKDIR}/${MY_P}"
151
152 REQUIRED_USE="
153 cgi? ( perl )
154 cvs? ( perl )
155 subversion? ( perl )
156 webdav? ( curl )
157 "
158
159 pkg_setup() {
160 if use subversion && has_version dev-vcs/subversion && built_with_use --missing false dev-vcs/subversion dso ; then
161 ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
162 ewarn "with USE=dso, there may be weird crashes in git-svn. You"
163 ewarn "have been warned."
164 fi
165 if use python ; then
166 python_set_active_version 2
167 python_pkg_setup
168 fi
169 }
170
171 # This is needed because for some obscure reasons future calls to make don't
172 # pick up these exports if we export them in src_unpack()
173 exportmakeopts() {
174 local myopts
175
176 if use blksha1 ; then
177 myopts="${myopts} BLK_SHA1=YesPlease"
178 elif use ppcsha1 ; then
179 myopts="${myopts} PPC_SHA1=YesPlease"
180 fi
181
182 if use curl ; then
183 use webdav || myopts="${myopts} NO_EXPAT=YesPlease"
184 else
185 myopts="${myopts} NO_CURL=YesPlease"
186 fi
187
188 # broken assumptions, because of broken build system ...
189 myopts="${myopts} NO_FINK=YesPlease NO_DARWIN_PORTS=YesPlease"
190 myopts="${myopts} INSTALL=install TAR=tar"
191 myopts="${myopts} SHELL_PATH=${EPREFIX}/bin/sh"
192 myopts="${myopts} SANE_TOOL_PATH="
193 myopts="${myopts} OLD_ICONV="
194 myopts="${myopts} NO_EXTERNAL_GREP="
195
196 # can't define this to null, since the entire makefile depends on it
197 sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile
198
199 use iconv \
200 || myopts="${myopts} NO_ICONV=YesPlease"
201 use nls \
202 || myopts="${myopts} NO_GETTEXT=YesPlease"
203 use tk \
204 || myopts="${myopts} NO_TCLTK=YesPlease"
205 use pcre \
206 && myopts="${myopts} USE_LIBPCRE=yes"
207 use perl \
208 && myopts="${myopts} INSTALLDIRS=vendor" \
209 || myopts="${myopts} NO_PERL=YesPlease"
210 use python \
211 || myopts="${myopts} NO_PYTHON=YesPlease"
212 use subversion \
213 || myopts="${myopts} NO_SVN_TESTS=YesPlease"
214 use threads \
215 && myopts="${myopts} THREADED_DELTA_SEARCH=YesPlease"
216 use cvs \
217 || myopts="${myopts} NO_CVS=YesPlease"
218 # Disabled until ~m68k-mint can be keyworded again
219 # if [[ ${CHOST} == *-mint* ]] ; then
220 # myopts="${myopts} NO_MMAP=YesPlease"
221 # myopts="${myopts} NO_IPV6=YesPlease"
222 # myopts="${myopts} NO_STRLCPY=YesPlease"
223 # myopts="${myopts} NO_MEMMEM=YesPlease"
224 # myopts="${myopts} NO_MKDTEMP=YesPlease"
225 # myopts="${myopts} NO_MKSTEMPS=YesPlease"
226 # fi
227 if [[ ${CHOST} == ia64-*-hpux* ]]; then
228 myopts="${myopts} NO_NSEC=YesPlease"
229 fi
230 if [[ ${CHOST} == *-*-aix* ]]; then
231 myopts="${myopts} NO_FNMATCH_CASEFOLD=YesPlease"
232 fi
233
234 has_version '>=app-text/asciidoc-8.0' \
235 && myopts="${myopts} ASCIIDOC8=YesPlease"
236 myopts="${myopts} ASCIIDOC_NO_ROFF=YesPlease"
237
238 # Bug 290465:
239 # builtin-fetch-pack.c:816: error: 'struct stat' has no member named 'st_mtim'
240 [[ "${CHOST}" == *-uclibc* ]] && \
241 myopts="${myopts} NO_NSEC=YesPlease"
242
243 export MY_MAKEOPTS="${myopts}"
244 }
245
246 src_unpack() {
247 if [[ ${PV} != *9999 ]]; then
248 unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
249 cd "${S}"
250 unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
251 use doc && \
252 cd "${S}"/Documentation && \
253 unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
254 cd "${S}"
255 else
256 git-2_src_unpack
257 cd "${S}"
258 #cp "${FILESDIR}"/GIT-VERSION-GEN .
259 fi
260
261 }
262
263 src_prepare() {
264 # bug #418431 - stated for upstream 1.7.13. Developed by Michael Schwern,
265 # funded as a bounty by the Gentoo Foundation.
266 #epatch "${FILESDIR}"/git-1.7.12-git-svn-backport.patch
267
268 # bug #350330 - automagic CVS when we don't want it is bad.
269 epatch "${FILESDIR}"/git-1.7.12-optional-cvs.patch
270
271 sed -i \
272 -e 's:^\(CFLAGS =\).*$:\1 $(OPTCFLAGS) -Wall:' \
273 -e 's:^\(LDFLAGS =\).*$:\1 $(OPTLDFLAGS):' \
274 -e 's:^\(CC = \).*$:\1$(OPTCC):' \
275 -e 's:^\(AR = \).*$:\1$(OPTAR):' \
276 -e "s:\(PYTHON_PATH = \)\(.*\)$:\1${EPREFIX}\2:" \
277 -e "s:\(PERL_PATH = \)\(.*\)$:\1${EPREFIX}\2:" \
278 Makefile || die "sed failed"
279
280 # Never install the private copy of Error.pm (bug #296310)
281 sed -i \
282 -e '/private-Error.pm/s,^,#,' \
283 perl/Makefile.PL
284
285 # Fix docbook2texi command
286 sed -i 's/DOCBOOK2X_TEXI=docbook2x-texi/DOCBOOK2X_TEXI=docbook2texi.pl/' \
287 Documentation/Makefile || die "sed failed"
288 }
289
290 git_emake() {
291 # bug #326625: PERL_PATH, PERL_MM_OPT
292 # bug #320647: PYTHON_PATH
293 PYTHON_PATH=""
294 use python && PYTHON_PATH="$(PYTHON -a)"
295 emake ${MY_MAKEOPTS} \
296 DESTDIR="${D}" \
297 OPTCFLAGS="${CFLAGS}" \
298 OPTLDFLAGS="${LDFLAGS}" \
299 OPTCC="$(tc-getCC)" \
300 OPTAR="$(tc-getAR)" \
301 prefix="${EPREFIX}"/usr \
302 htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
303 sysconfdir="${EPREFIX}"/etc \
304 PYTHON_PATH="${PYTHON_PATH}" \
305 PERL_MM_OPT="" \
306 GIT_TEST_OPTS="--no-color" \
307 "$@"
308 # This is the fix for bug #326625, but it also causes breakage, see bug
309 # #352693.
310 # PERL_PATH="${EPREFIX}/usr/bin/env perl" \
311 }
312
313 src_configure() {
314 exportmakeopts
315 }
316
317 src_compile() {
318 git_emake perl/PM.stamp || die "emake perl/PM.stamp failed"
319 git_emake perl/perl.mak || die "emake perl/perl.mak failed"
320 git_emake || die "emake failed"
321
322 if use emacs ; then
323 elisp-compile contrib/emacs/git{,-blame}.el \
324 || die "emacs modules failed"
325 fi
326
327 if use perl && use cgi ; then
328 git_emake \
329 gitweb/gitweb.cgi \
330 || die "emake gitweb/gitweb.cgi failed"
331 fi
332
333 cd "${S}"/Documentation
334 if [[ ${PV} == *9999 ]] ; then
335 git_emake man \
336 || die "emake man failed"
337 if use doc ; then
338 git_emake info html \
339 || die "emake info html failed"
340 fi
341 else
342 if use doc ; then
343 git_emake info \
344 || die "emake info html failed"
345 fi
346 fi
347 }
348
349 src_install() {
350 git_emake \
351 install || \
352 die "make install failed"
353
354 # Depending on the tarball and manual rebuild of the documentation, the
355 # manpages may exist in either OR both of these directories.
356 find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
357 find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
358
359 dodoc README Documentation/{SubmittingPatches,CodingGuidelines}
360 use doc && dodir /usr/share/doc/${PF}/html
361 for d in / /howto/ /technical/ ; do
362 docinto ${d}
363 dodoc Documentation${d}*.txt
364 use doc && dohtml -p ${d} Documentation${d}*.html
365 done
366 docinto /
367 # Upstream does not ship this pre-built :-(
368 use doc && doinfo Documentation/{git,gitman}.info
369
370 newbashcomp contrib/completion/git-completion.bash ${PN}
371
372 if use emacs ; then
373 elisp-install ${PN} contrib/emacs/git.{el,elc} || die
374 elisp-install ${PN} contrib/emacs/git-blame.{el,elc} || die
375 #elisp-install ${PN}/compat contrib/emacs/vc-git.{el,elc} || die
376 # don't add automatically to the load-path, so the sitefile
377 # can do a conditional loading
378 touch "${ED}${SITELISP}/${PN}/compat/.nosearch"
379 elisp-site-file-install "${FILESDIR}"/${SITEFILE} || die
380 fi
381
382 if use python && use gtk ; then
383 dobin "${S}"/contrib/gitview/gitview
384 python_convert_shebangs ${PYTHON_ABI} "${ED}"/usr/bin/gitview
385 dodoc "${S}"/contrib/gitview/gitview.txt
386 fi
387
388 #dobin contrib/fast-import/git-p4 # Moved upstream
389 #dodoc contrib/fast-import/git-p4.txt # Moved upstream
390 newbin contrib/fast-import/import-tars.perl import-tars
391 newbin contrib/git-resurrect.sh git-resurrect
392
393 dodir /usr/share/${PN}/contrib
394 # The following are excluded:
395 # completion - installed above
396 # emacs - installed above
397 # examples - these are stuff that is not used in Git anymore actually
398 # gitview - installed above
399 # p4import - excluded because fast-import has a better one
400 # patches - stuff the Git guys made to go upstream to other places
401 # svnimport - use git-svn
402 # thunderbird-patch-inline - fixes thunderbird
403 for i in \
404 blameview buildsystems ciabot continuous convert-objects fast-import \
405 hg-to-git hooks remotes2config.sh remotes2config.sh rerere-train.sh \
406 stats svn-fe vim workdir \
407 ; do
408 cp -rf \
409 "${S}"/contrib/${i} \
410 "${ED}"/usr/share/${PN}/contrib \
411 || die "Failed contrib ${i}"
412 done
413
414 if use perl && use cgi ; then
415 # We used to install in /usr/share/${PN}/gitweb
416 # but upstream installs in /usr/share/gitweb
417 # so we will install a symlink and use their location for compat with other
418 # distros
419 dosym /usr/share/gitweb /usr/share/${PN}/gitweb
420
421 # INSTALL discusses configuration issues, not just installation
422 docinto /
423 newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
424 newdoc "${S}"/gitweb/README README.gitweb
425
426 find "${ED}"/usr/lib64/perl5/ \
427 -name .packlist \
428 -exec rm \{\} \;
429 else
430 rm -rf "${ED}"/usr/share/gitweb
431 fi
432
433 if ! use subversion ; then
434 rm -f "${ED}"/usr/libexec/git-core/git-svn \
435 "${ED}"/usr/share/man/man1/git-svn.1*
436 fi
437
438 if use xinetd ; then
439 insinto /etc/xinetd.d
440 newins "${FILESDIR}"/git-daemon.xinetd git-daemon
441 fi
442
443 newinitd "${FILESDIR}"/git-daemon.initd git-daemon
444 newconfd "${FILESDIR}"/git-daemon.confd git-daemon
445
446 fixlocalpod
447 }
448
449 src_test() {
450 local disabled=""
451 local tests_cvs="t9200-git-cvsexportcommit.sh \
452 t9400-git-cvsserver-server.sh \
453 t9401-git-cvsserver-crlf.sh \
454 t9600-cvsimport.sh \
455 t9601-cvsimport-vendor-branch.sh \
456 t9602-cvsimport-branches-tags.sh \
457 t9603-cvsimport-patchsets.sh"
458 local tests_perl="t5502-quickfetch.sh \
459 t5512-ls-remote.sh \
460 t5520-pull.sh"
461 # Bug #225601 - t0004 is not suitable for root perm
462 # Bug #219839 - t1004 is not suitable for root perm
463 # t0001-init.sh - check for init notices EPERM* fails
464 local tests_nonroot="t0001-init.sh \
465 t0004-unwritable.sh \
466 t0070-fundamental.sh \
467 t1004-read-tree-m-u-wf.sh \
468 t3700-add.sh \
469 t7300-clean.sh"
470 # t9100 still fails with symlinks in SVN 1.7
471 local test_svn="t9100-git-svn-basic.sh"
472
473 # Unzip is used only for the testcase code, not by any normal parts of Git.
474 if ! has_version app-arch/unzip ; then
475 einfo "Disabling tar-tree tests"
476 disabled="${disabled} t5000-tar-tree.sh"
477 fi
478
479 cvs=0
480 use cvs && let cvs=$cvs+1
481 if [[ ${EUID} -eq 0 ]]; then
482 if [[ $cvs -eq 1 ]]; then
483 ewarn "Skipping CVS tests because CVS does not work as root!"
484 ewarn "You should retest with FEATURES=userpriv!"
485 disabled="${disabled} ${tests_cvs}"
486 fi
487 einfo "Skipping other tests that require being non-root"
488 disabled="${disabled} ${tests_nonroot}"
489 else
490 [[ $cvs -gt 0 ]] && \
491 has_version dev-vcs/cvs && \
492 let cvs=$cvs+1
493 [[ $cvs -gt 1 ]] && \
494 built_with_use dev-vcs/cvs server && \
495 let cvs=$cvs+1
496 if [[ $cvs -lt 3 ]]; then
497 einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
498 disabled="${disabled} ${tests_cvs}"
499 fi
500 fi
501
502 if ! use perl ; then
503 einfo "Disabling tests that need Perl"
504 disabled="${disabled} ${tests_perl}"
505 fi
506
507 einfo "Disabling tests that fail with SVN 1.7"
508 disabled="${disabled} ${test_svn}"
509
510 # Reset all previously disabled tests
511 cd "${S}/t"
512 for i in *.sh.DISABLED ; do
513 [[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
514 done
515 einfo "Disabled tests:"
516 for i in ${disabled} ; do
517 [[ -f "${i}" ]] && mv -f "${i}" "${i}.DISABLED" && einfo "Disabled $i"
518 done
519
520 # Avoid the test system removing the results because we want them ourselves
521 sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' \
522 -i "${S}"/t/Makefile
523
524 # Clean old results first, must always run
525 cd "${S}/t"
526 nonfatal git_emake clean
527
528 # Now run the tests, keep going if we hit an error, and don't terminate on
529 # failure
530 cd "${S}"
531 einfo "Start test run"
532 #MAKEOPTS=-j1
533 nonfatal git_emake --keep-going test
534 rc=$?
535
536 # Display nice results, now print the results
537 cd "${S}/t"
538 nonfatal git_emake aggregate-results
539
540 # And bail if there was a problem
541 [ $rc -eq 0 ] || die "tests failed. Please file a bug."
542 }
543
544 showpkgdeps() {
545 local pkg=$1
546 shift
547 elog " $(printf "%-17s:" ${pkg}) ${@}"
548 }
549
550 pkg_postinst() {
551 use emacs && elisp-site-regen
552 use python && python_mod_optimize git_remote_helpers
553 einfo "Please read /usr/share/bash-completion/git for Git bash completion"
554 elog "These additional scripts need some dependencies:"
555 echo
556 showpkgdeps git-quiltimport "dev-util/quilt"
557 showpkgdeps git-instaweb \
558 "|| ( www-servers/lighttpd www-servers/apache )"
559 echo
560 }
561
562 pkg_postrm() {
563 use emacs && elisp-site-regen
564 use python && python_mod_cleanup git_remote_helpers
565 }
566
567
568
569 1.1 dev-vcs/git/git-1.7.12-r1.ebuild
570
571 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-vcs/git/git-1.7.12-r1.ebuild?rev=1.1&view=markup
572 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-vcs/git/git-1.7.12-r1.ebuild?rev=1.1&content-type=text/plain
573
574 Index: git-1.7.12-r1.ebuild
575 ===================================================================
576 # Copyright 1999-2012 Gentoo Foundation
577 # Distributed under the terms of the GNU General Public License v2
578 # $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.7.12-r1.ebuild,v 1.1 2012/08/22 04:44:08 robbat2 Exp $
579
580 EAPI=4
581
582 GENTOO_DEPEND_ON_PERL=no
583
584 # bug #329479: git-remote-testgit is not multiple-version aware
585 PYTHON_DEPEND="python? 2"
586 [[ ${PV} == *9999 ]] && SCM="git-2"
587 EGIT_REPO_URI="git://git.kernel.org/pub/scm/git/git.git"
588
589 inherit toolchain-funcs eutils elisp-common perl-module bash-completion-r1 python ${SCM}
590
591 MY_PV="${PV/_rc/.rc}"
592 MY_P="${PN}-${MY_PV}"
593
594 DOC_VER=${MY_PV}
595
596 DESCRIPTION="GIT - the stupid content tracker, the revision control system heavily used by the Linux kernel team"
597 HOMEPAGE="http://www.git-scm.com/"
598 if [[ ${PV} != *9999 ]]; then
599 SRC_URI_SUFFIX="gz"
600 SRC_URI_GOOG="http://git-core.googlecode.com/files"
601 SRC_URI_KORG="mirror://kernel/software/scm/git"
602 SRC_URI="${SRC_URI_GOOG}/${MY_P}.tar.${SRC_URI_SUFFIX}
603 ${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
604 ${SRC_URI_GOOG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
605 ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
606 doc? (
607 ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
608 ${SRC_URI_GOOG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
609 )"
610 KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~sparc-fbsd ~x86-fbsd ~x64-freebsd ~x86-freebsd ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
611 else
612 SRC_URI=""
613 KEYWORDS=""
614 fi
615
616 LICENSE="GPL-2"
617 SLOT="0"
618 IUSE="+blksha1 +curl cgi doc emacs +gpg gtk +iconv +nls +pcre +perl +python ppcsha1 tk +threads +webdav xinetd cvs subversion test"
619
620 # Common to both DEPEND and RDEPEND
621 CDEPEND="
622 !blksha1? ( dev-libs/openssl )
623 sys-libs/zlib
624 pcre? ( dev-libs/libpcre )
625 perl? ( dev-lang/perl[-build] )
626 tk? ( dev-lang/tk )
627 curl? (
628 net-misc/curl
629 webdav? ( dev-libs/expat )
630 )
631 emacs? ( virtual/emacs )"
632
633 RDEPEND="${CDEPEND}
634 gpg? ( app-crypt/gnupg )
635 perl? ( dev-perl/Error
636 dev-perl/Net-SMTP-SSL
637 dev-perl/Authen-SASL
638 cgi? ( virtual/perl-CGI app-text/highlight )
639 cvs? ( >=dev-vcs/cvsps-2.1 dev-perl/DBI dev-perl/DBD-SQLite )
640 subversion? ( dev-vcs/subversion[-dso,perl] dev-perl/libwww-perl dev-perl/TermReadKey )
641 )
642 python? ( gtk?
643 (
644 >=dev-python/pygtk-2.8
645 dev-python/pygtksourceview:2
646 ) )"
647
648 # This is how info docs are created with Git:
649 # .txt/asciidoc --(asciidoc)---------> .xml/docbook
650 # .xml/docbook --(docbook2texi.pl)--> .texi
651 # .texi --(makeinfo)---------> .info
652 DEPEND="${CDEPEND}
653 app-arch/cpio
654 doc? (
655 app-text/asciidoc
656 app-text/docbook2X
657 sys-apps/texinfo
658 )
659 test? (
660 app-crypt/gnupg
661 )"
662
663 # Live ebuild builds man pages and HTML docs, additionally
664 if [[ ${PV} == *9999 ]]; then
665 DEPEND="${DEPEND}
666 app-text/asciidoc
667 app-text/xmlto"
668 fi
669
670 SITEFILE=50${PN}-gentoo.el
671 S="${WORKDIR}/${MY_P}"
672
673 REQUIRED_USE="
674 cgi? ( perl )
675 cvs? ( perl )
676 subversion? ( perl )
677 webdav? ( curl )
678 "
679
680 pkg_setup() {
681 if use subversion && has_version dev-vcs/subversion && built_with_use --missing false dev-vcs/subversion dso ; then
682 ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
683 ewarn "with USE=dso, there may be weird crashes in git-svn. You"
684 ewarn "have been warned."
685 fi
686 if use python ; then
687 python_set_active_version 2
688 python_pkg_setup
689 fi
690 }
691
692 # This is needed because for some obscure reasons future calls to make don't
693 # pick up these exports if we export them in src_unpack()
694 exportmakeopts() {
695 local myopts
696
697 if use blksha1 ; then
698 myopts="${myopts} BLK_SHA1=YesPlease"
699 elif use ppcsha1 ; then
700 myopts="${myopts} PPC_SHA1=YesPlease"
701 fi
702
703 if use curl ; then
704 use webdav || myopts="${myopts} NO_EXPAT=YesPlease"
705 else
706 myopts="${myopts} NO_CURL=YesPlease"
707 fi
708
709 # broken assumptions, because of broken build system ...
710 myopts="${myopts} NO_FINK=YesPlease NO_DARWIN_PORTS=YesPlease"
711 myopts="${myopts} INSTALL=install TAR=tar"
712 myopts="${myopts} SHELL_PATH=${EPREFIX}/bin/sh"
713 myopts="${myopts} SANE_TOOL_PATH="
714 myopts="${myopts} OLD_ICONV="
715 myopts="${myopts} NO_EXTERNAL_GREP="
716
717 # can't define this to null, since the entire makefile depends on it
718 sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile
719
720 use iconv \
721 || myopts="${myopts} NO_ICONV=YesPlease"
722 use nls \
723 || myopts="${myopts} NO_GETTEXT=YesPlease"
724 use tk \
725 || myopts="${myopts} NO_TCLTK=YesPlease"
726 use pcre \
727 && myopts="${myopts} USE_LIBPCRE=yes"
728 use perl \
729 && myopts="${myopts} INSTALLDIRS=vendor" \
730 || myopts="${myopts} NO_PERL=YesPlease"
731 use python \
732 || myopts="${myopts} NO_PYTHON=YesPlease"
733 use subversion \
734 || myopts="${myopts} NO_SVN_TESTS=YesPlease"
735 use threads \
736 && myopts="${myopts} THREADED_DELTA_SEARCH=YesPlease"
737 use cvs \
738 || myopts="${myopts} NO_CVS=YesPlease"
739 # Disabled until ~m68k-mint can be keyworded again
740 # if [[ ${CHOST} == *-mint* ]] ; then
741 # myopts="${myopts} NO_MMAP=YesPlease"
742 # myopts="${myopts} NO_IPV6=YesPlease"
743 # myopts="${myopts} NO_STRLCPY=YesPlease"
744 # myopts="${myopts} NO_MEMMEM=YesPlease"
745 # myopts="${myopts} NO_MKDTEMP=YesPlease"
746 # myopts="${myopts} NO_MKSTEMPS=YesPlease"
747 # fi
748 if [[ ${CHOST} == ia64-*-hpux* ]]; then
749 myopts="${myopts} NO_NSEC=YesPlease"
750 fi
751 if [[ ${CHOST} == *-*-aix* ]]; then
752 myopts="${myopts} NO_FNMATCH_CASEFOLD=YesPlease"
753 fi
754
755 has_version '>=app-text/asciidoc-8.0' \
756 && myopts="${myopts} ASCIIDOC8=YesPlease"
757 myopts="${myopts} ASCIIDOC_NO_ROFF=YesPlease"
758
759 # Bug 290465:
760 # builtin-fetch-pack.c:816: error: 'struct stat' has no member named 'st_mtim'
761 [[ "${CHOST}" == *-uclibc* ]] && \
762 myopts="${myopts} NO_NSEC=YesPlease"
763
764 export MY_MAKEOPTS="${myopts}"
765 }
766
767 src_unpack() {
768 if [[ ${PV} != *9999 ]]; then
769 unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
770 cd "${S}"
771 unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
772 use doc && \
773 cd "${S}"/Documentation && \
774 unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
775 cd "${S}"
776 else
777 git-2_src_unpack
778 cd "${S}"
779 #cp "${FILESDIR}"/GIT-VERSION-GEN .
780 fi
781
782 }
783
784 src_prepare() {
785 # bug #418431 - stated for upstream 1.7.13. Developed by Michael Schwern,
786 # funded as a bounty by the Gentoo Foundation.
787 epatch "${FILESDIR}"/git-1.7.12-git-svn-backport.patch
788
789 # bug #350330 - automagic CVS when we don't want it is bad.
790 epatch "${FILESDIR}"/git-1.7.12-optional-cvs.patch
791
792 sed -i \
793 -e 's:^\(CFLAGS =\).*$:\1 $(OPTCFLAGS) -Wall:' \
794 -e 's:^\(LDFLAGS =\).*$:\1 $(OPTLDFLAGS):' \
795 -e 's:^\(CC = \).*$:\1$(OPTCC):' \
796 -e 's:^\(AR = \).*$:\1$(OPTAR):' \
797 -e "s:\(PYTHON_PATH = \)\(.*\)$:\1${EPREFIX}\2:" \
798 -e "s:\(PERL_PATH = \)\(.*\)$:\1${EPREFIX}\2:" \
799 Makefile || die "sed failed"
800
801 # Never install the private copy of Error.pm (bug #296310)
802 sed -i \
803 -e '/private-Error.pm/s,^,#,' \
804 perl/Makefile.PL
805
806 # Fix docbook2texi command
807 sed -i 's/DOCBOOK2X_TEXI=docbook2x-texi/DOCBOOK2X_TEXI=docbook2texi.pl/' \
808 Documentation/Makefile || die "sed failed"
809 }
810
811 git_emake() {
812 # bug #326625: PERL_PATH, PERL_MM_OPT
813 # bug #320647: PYTHON_PATH
814 PYTHON_PATH=""
815 use python && PYTHON_PATH="$(PYTHON -a)"
816 emake ${MY_MAKEOPTS} \
817 DESTDIR="${D}" \
818 OPTCFLAGS="${CFLAGS}" \
819 OPTLDFLAGS="${LDFLAGS}" \
820 OPTCC="$(tc-getCC)" \
821 OPTAR="$(tc-getAR)" \
822 prefix="${EPREFIX}"/usr \
823 htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
824 sysconfdir="${EPREFIX}"/etc \
825 PYTHON_PATH="${PYTHON_PATH}" \
826 PERL_MM_OPT="" \
827 GIT_TEST_OPTS="--no-color" \
828 "$@"
829 # This is the fix for bug #326625, but it also causes breakage, see bug
830 # #352693.
831 # PERL_PATH="${EPREFIX}/usr/bin/env perl" \
832 }
833
834 src_configure() {
835 exportmakeopts
836 }
837
838 src_compile() {
839 git_emake perl/PM.stamp || die "emake perl/PM.stamp failed"
840 git_emake perl/perl.mak || die "emake perl/perl.mak failed"
841 git_emake || die "emake failed"
842
843 if use emacs ; then
844 elisp-compile contrib/emacs/git{,-blame}.el \
845 || die "emacs modules failed"
846 fi
847
848 if use perl && use cgi ; then
849 git_emake \
850 gitweb/gitweb.cgi \
851 || die "emake gitweb/gitweb.cgi failed"
852 fi
853
854 cd "${S}"/Documentation
855 if [[ ${PV} == *9999 ]] ; then
856 git_emake man \
857 || die "emake man failed"
858 if use doc ; then
859 git_emake info html \
860 || die "emake info html failed"
861 fi
862 else
863 if use doc ; then
864 git_emake info \
865 || die "emake info html failed"
866 fi
867 fi
868 }
869
870 src_install() {
871 git_emake \
872 install || \
873 die "make install failed"
874
875 # Depending on the tarball and manual rebuild of the documentation, the
876 # manpages may exist in either OR both of these directories.
877 find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
878 find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
879
880 dodoc README Documentation/{SubmittingPatches,CodingGuidelines}
881 use doc && dodir /usr/share/doc/${PF}/html
882 for d in / /howto/ /technical/ ; do
883 docinto ${d}
884 dodoc Documentation${d}*.txt
885 use doc && dohtml -p ${d} Documentation${d}*.html
886 done
887 docinto /
888 # Upstream does not ship this pre-built :-(
889 use doc && doinfo Documentation/{git,gitman}.info
890
891 newbashcomp contrib/completion/git-completion.bash ${PN}
892
893 if use emacs ; then
894 elisp-install ${PN} contrib/emacs/git.{el,elc} || die
895 elisp-install ${PN} contrib/emacs/git-blame.{el,elc} || die
896 #elisp-install ${PN}/compat contrib/emacs/vc-git.{el,elc} || die
897 # don't add automatically to the load-path, so the sitefile
898 # can do a conditional loading
899 touch "${ED}${SITELISP}/${PN}/compat/.nosearch"
900 elisp-site-file-install "${FILESDIR}"/${SITEFILE} || die
901 fi
902
903 if use python && use gtk ; then
904 dobin "${S}"/contrib/gitview/gitview
905 python_convert_shebangs ${PYTHON_ABI} "${ED}"/usr/bin/gitview
906 dodoc "${S}"/contrib/gitview/gitview.txt
907 fi
908
909 #dobin contrib/fast-import/git-p4 # Moved upstream
910 #dodoc contrib/fast-import/git-p4.txt # Moved upstream
911 newbin contrib/fast-import/import-tars.perl import-tars
912 newbin contrib/git-resurrect.sh git-resurrect
913
914 dodir /usr/share/${PN}/contrib
915 # The following are excluded:
916 # completion - installed above
917 # emacs - installed above
918 # examples - these are stuff that is not used in Git anymore actually
919 # gitview - installed above
920 # p4import - excluded because fast-import has a better one
921 # patches - stuff the Git guys made to go upstream to other places
922 # svnimport - use git-svn
923 # thunderbird-patch-inline - fixes thunderbird
924 for i in \
925 blameview buildsystems ciabot continuous convert-objects fast-import \
926 hg-to-git hooks remotes2config.sh remotes2config.sh rerere-train.sh \
927 stats svn-fe vim workdir \
928 ; do
929 cp -rf \
930 "${S}"/contrib/${i} \
931 "${ED}"/usr/share/${PN}/contrib \
932 || die "Failed contrib ${i}"
933 done
934
935 if use perl && use cgi ; then
936 # We used to install in /usr/share/${PN}/gitweb
937 # but upstream installs in /usr/share/gitweb
938 # so we will install a symlink and use their location for compat with other
939 # distros
940 dosym /usr/share/gitweb /usr/share/${PN}/gitweb
941
942 # INSTALL discusses configuration issues, not just installation
943 docinto /
944 newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
945 newdoc "${S}"/gitweb/README README.gitweb
946
947 find "${ED}"/usr/lib64/perl5/ \
948 -name .packlist \
949 -exec rm \{\} \;
950 else
951 rm -rf "${ED}"/usr/share/gitweb
952 fi
953
954 if ! use subversion ; then
955 rm -f "${ED}"/usr/libexec/git-core/git-svn \
956 "${ED}"/usr/share/man/man1/git-svn.1*
957 fi
958
959 if use xinetd ; then
960 insinto /etc/xinetd.d
961 newins "${FILESDIR}"/git-daemon.xinetd git-daemon
962 fi
963
964 newinitd "${FILESDIR}"/git-daemon.initd git-daemon
965 newconfd "${FILESDIR}"/git-daemon.confd git-daemon
966
967 fixlocalpod
968 }
969
970 src_test() {
971 local disabled=""
972 local tests_cvs="t9200-git-cvsexportcommit.sh \
973 t9400-git-cvsserver-server.sh \
974 t9401-git-cvsserver-crlf.sh \
975 t9600-cvsimport.sh \
976 t9601-cvsimport-vendor-branch.sh \
977 t9602-cvsimport-branches-tags.sh \
978 t9603-cvsimport-patchsets.sh"
979 local tests_perl="t5502-quickfetch.sh \
980 t5512-ls-remote.sh \
981 t5520-pull.sh"
982 # Bug #225601 - t0004 is not suitable for root perm
983 # Bug #219839 - t1004 is not suitable for root perm
984 # t0001-init.sh - check for init notices EPERM* fails
985 local tests_nonroot="t0001-init.sh \
986 t0004-unwritable.sh \
987 t0070-fundamental.sh \
988 t1004-read-tree-m-u-wf.sh \
989 t3700-add.sh \
990 t7300-clean.sh"
991 # t9100 still fails with symlinks in SVN 1.7
992 local test_svn="t9100-git-svn-basic.sh"
993
994 # Unzip is used only for the testcase code, not by any normal parts of Git.
995 if ! has_version app-arch/unzip ; then
996 einfo "Disabling tar-tree tests"
997 disabled="${disabled} t5000-tar-tree.sh"
998 fi
999
1000 cvs=0
1001 use cvs && let cvs=$cvs+1
1002 if [[ ${EUID} -eq 0 ]]; then
1003 if [[ $cvs -eq 1 ]]; then
1004 ewarn "Skipping CVS tests because CVS does not work as root!"
1005 ewarn "You should retest with FEATURES=userpriv!"
1006 disabled="${disabled} ${tests_cvs}"
1007 fi
1008 einfo "Skipping other tests that require being non-root"
1009 disabled="${disabled} ${tests_nonroot}"
1010 else
1011 [[ $cvs -gt 0 ]] && \
1012 has_version dev-vcs/cvs && \
1013 let cvs=$cvs+1
1014 [[ $cvs -gt 1 ]] && \
1015 built_with_use dev-vcs/cvs server && \
1016 let cvs=$cvs+1
1017 if [[ $cvs -lt 3 ]]; then
1018 einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
1019 disabled="${disabled} ${tests_cvs}"
1020 fi
1021 fi
1022
1023 if ! use perl ; then
1024 einfo "Disabling tests that need Perl"
1025 disabled="${disabled} ${tests_perl}"
1026 fi
1027
1028 einfo "Disabling tests that fail with SVN 1.7"
1029 disabled="${disabled} ${test_svn}"
1030
1031 # Reset all previously disabled tests
1032 cd "${S}/t"
1033 for i in *.sh.DISABLED ; do
1034 [[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
1035 done
1036 einfo "Disabled tests:"
1037 for i in ${disabled} ; do
1038 [[ -f "${i}" ]] && mv -f "${i}" "${i}.DISABLED" && einfo "Disabled $i"
1039 done
1040
1041 # Avoid the test system removing the results because we want them ourselves
1042 sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' \
1043 -i "${S}"/t/Makefile
1044
1045 # Clean old results first, must always run
1046 cd "${S}/t"
1047 nonfatal git_emake clean
1048
1049 # Now run the tests, keep going if we hit an error, and don't terminate on
1050 # failure
1051 cd "${S}"
1052 einfo "Start test run"
1053 #MAKEOPTS=-j1
1054 nonfatal git_emake --keep-going test
1055 rc=$?
1056
1057 # Display nice results, now print the results
1058 cd "${S}/t"
1059 nonfatal git_emake aggregate-results
1060
1061 # And bail if there was a problem
1062 [ $rc -eq 0 ] || die "tests failed. Please file a bug."
1063 }
1064
1065 showpkgdeps() {
1066 local pkg=$1
1067 shift
1068 elog " $(printf "%-17s:" ${pkg}) ${@}"
1069 }
1070
1071 pkg_postinst() {
1072 use emacs && elisp-site-regen
1073 use python && python_mod_optimize git_remote_helpers
1074 einfo "Please read /usr/share/bash-completion/git for Git bash completion"
1075 elog "These additional scripts need some dependencies:"
1076 echo
1077 showpkgdeps git-quiltimport "dev-util/quilt"
1078 showpkgdeps git-instaweb \
1079 "|| ( www-servers/lighttpd www-servers/apache )"
1080 echo
1081 }
1082
1083 pkg_postrm() {
1084 use emacs && elisp-site-regen
1085 use python && python_mod_cleanup git_remote_helpers
1086 }