summaryrefslogtreecommitdiff
blob: 717e5a757d52794af69ba712da4e7b16109250d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-util/bzr/bzr-1.15.1.ebuild,v 1.4 2009/07/05 15:33:33 maekke Exp $

EAPI=1

NEED_PYTHON=2.4

inherit distutils bash-completion elisp-common eutils versionator

MY_PV=${PV/_rc/rc}
MY_P=${PN}-${MY_PV}
SERIES=$(get_version_component_range 1-2)

DESCRIPTION="Bazaar is a next generation distributed version control system."
HOMEPAGE="http://bazaar-vcs.org/"
#SRC_URI="http://bazaar-vcs.org/releases/src/${MY_P}.tar.gz"
SRC_URI="http://launchpad.net/bzr/${SERIES}/${MY_PV}/+download/${MY_P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ~ia64 ~ppc sparc x86 ~x86-fbsd"
IUSE="curl doc emacs +sftp test"

RDEPEND="|| ( >=dev-lang/python-2.5 dev-python/celementtree )
	curl? ( dev-python/pycurl )
	sftp? ( dev-python/paramiko )"

DEPEND="emacs? ( virtual/emacs )
	test? (
		$RDEPEND
		dev-python/medusa
	)"

S="${WORKDIR}/${MY_P}"
PYTHON_MODNAME="bzrlib"
SITEFILE=71bzr-gentoo.el
DOCS="doc/*.txt"

src_unpack() {
	distutils_src_unpack

	# Don't regenerate .c files from .pyx when pyrex is found.
	epatch "${FILESDIR}/${PN}-1.8-no-pyrex.patch"
	# Don't run lock permission tests when running as root
	epatch "${FILESDIR}/${PN}-0.90-tests-fix_root.patch"
	# Fix permission errors when run under directories with setgid set.
	epatch "${FILESDIR}/${PN}-0.90-tests-sgid.patch"
}

src_compile() {
	distutils_src_compile

	if use emacs; then
		elisp-compile contrib/emacs/bzr-mode.el || die "Emacs modules failed!"
	fi
}

src_install() {
	distutils_src_install --install-data /usr/share

	if use doc; then
		docinto developers
		dodoc doc/developers/* || die "dodoc failed"
		for doc in mini-tutorial tutorials user-{guide,reference}; do
			docinto $doc
			dodoc doc/en/$doc/* || die "dodoc failed"
		done
	fi

	if use emacs; then
		elisp-install ${PN} contrib/emacs/*.el* || die "elisp-install failed"
		elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die "elisp-site-file-install failed"

		# don't add automatically to the load-path, so the sitefile
		# can do a conditional loading
		touch "${D}${SITELISP}/${PN}/.nosearch"
	fi

	insinto /usr/share/zsh/site-functions
	doins contrib/zsh/_bzr
	dobashcompletion contrib/bash/bzr
}

pkg_postinst() {
	distutils_pkg_postinst
	bash-completion_pkg_postinst

	if use emacs; then
		elisp-site-regen
		elog "If you are using a GNU Emacs version greater than 22.1, bzr support"
		elog "is already included.  This ebuild does not automatically activate bzr support"
		elog "in versions below, but prepares it in a way you can load it from your ~/.emacs"
		elog "file by adding"
		elog "       (load \"bzr-mode\")"
	fi
}

pkg_postrm() {
	distutils_pkg_postrm
	use emacs && elisp-site-regen
}

src_test() {
	export LC_ALL=C
	# Define tests which are known to fail below.
	local skip_tests="("
	# https://bugs.launchpad.net/bzr/+bug/306264
	skip_tests+="test_http.SmartHTTPTunnellingTest*|"
	skip_tests+="test_http.TestWallServer.test_http_*|"
	skip_tests+="blackbox.test_too_much.SFTPTestsRelative.test_*|"
	# https://bugs.launchpad.net/bzr/+bug/383920
	skip_tests+="test_transport_implementations.TransportTests.test_get*|"
	# This tests were fixed in trunk. Drop in 1.15.x or 1.16
	skip_tests+="bzrlib.tests.test_http.TestActivity*|"
	#skip_tests+="bzrlib.tests.tree_implementations.test_get_file_mtime*|"
	#skip_tests+="test_source.TestSource.test_no_asserts*|"
	#https://bugs.launchpad.net/bzr/+bug/341648
	skip_tests+="test_osutils.TestWalkDirs.test_walkdirs_os_error"
	skip_tests+=")"
	# Some tests expect the usual pyc compiling behaviour.
	python_enable_pyc
	if [[ -n ${skip_tests} ]]; then
		einfo "Skipping tests known to fail: ${skip_tests}"
		"${python}" bzr --no-plugins selftest -x ${skip_tests} || die "bzr selftest failed"
	else
		"${python}" bzr --no-plugins selftest || die "bzr selftest failed"
	fi
	# Just to make sure we don't hit any errors on later stages.
	python_disable_pyc
}