summaryrefslogtreecommitdiff
blob: db2b6f77ada050436cf83a9f24c4a7c127cc0937 (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
132
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6
PYTHON_COMPAT=( python2_7 )
PYTHON_REQ_USE="sqlite"

inherit distutils-r1

MY_PN="ReviewBoard"
DESCRIPTION="A web-based code review tool that offers developers a way to handle code reviews"
HOMEPAGE="https://www.reviewboard.org/"
SRC_URI="https://downloads.reviewboard.org/releases/${MY_PN}/3.0/${MY_PN}-${PV}.tar.gz"
KEYWORDS="~amd64"
IUSE="codebase doc manual ldap rnotes test"

LICENSE="MIT"
SLOT="0"
S=${WORKDIR}/${MY_PN}-${PV}

RDEPEND=">=dev-python/django-1.6.11.1[${PYTHON_USEDEP},sqlite]
	<dev-python/django-1.7[${PYTHON_USEDEP},sqlite]
	>=dev-python/django-cors-headers-1.1.0[${PYTHON_USEDEP}]
	<dev-python/django-cors-headers-1.2[${PYTHON_USEDEP}]
	>=dev-python/django-evolution-0.7.7[${PYTHON_USEDEP}]
	<dev-python/django-evolution-0.8[${PYTHON_USEDEP}]
	=dev-python/django-haystack-2.4*[${PYTHON_USEDEP}]
	dev-python/django-multiselectfield[${PYTHON_USEDEP}]
	=dev-python/django-oauth-toolkit-0.9*[${PYTHON_USEDEP}]
	=dev-python/Djblets-1.0*[${PYTHON_USEDEP}]
	>=dev-python/Djblets-1.0.11[${PYTHON_USEDEP}]
	>=dev-python/cryptography-1.8.1[${PYTHON_USEDEP}]
	>=dev-python/pygments-2.1[${PYTHON_USEDEP}]
	dev-python/docutils[${PYTHON_USEDEP}]
	>=dev-python/markdown-2.6.8[${PYTHON_USEDEP}]
	<dev-python/markdown-2.7[${PYTHON_USEDEP}]
	>=dev-python/mimeparse-0.1.3[${PYTHON_USEDEP}]
	>=dev-python/paramiko-1.12[${PYTHON_USEDEP}]
	>=dev-python/pymdown-extensions-3.4[${PYTHON_USEDEP}]
	=dev-python/pymdown-extensions-3*[${PYTHON_USEDEP}]
	>=dev-python/python-dateutil-1.5[${PYTHON_USEDEP}]
	dev-python/python-memcached[${PYTHON_USEDEP}]
	>=dev-python/pytz-2015.2[${PYTHON_USEDEP}]
	>=dev-python/whoosh-2.6[${PYTHON_USEDEP}]
	ldap? ( >=dev-python/python-ldap-2.4.21[${PYTHON_USEDEP}] )"
DEPEND="${RDEPEND}
	net-libs/nodejs
	dev-python/setuptools[${PYTHON_USEDEP}]
	test? ( dev-python/nose[${PYTHON_USEDEP}] )
	doc? ( dev-python/sphinx[${PYTHON_USEDEP}] )"
PDEPEND="	>=dev-python/rbintegrations-1.0[${PYTHON_USEDEP}]"

REQUIRED_USE="doc? ( || ( codebase manual rnotes ) )"
# Tests mostly access the inet and when run mostly fail
RESTRICT=test

src_unpack() {
	default

	cd "${S}"
	npm install less@3.9.0 less-plugin-autoprefix@2.0.0 uglify-js@2.4.10 babel-cli@6.5.1 babel-preset-es2015@6.5.0 babel-plugin-dedent@2.0.0 || die
}

python_prepare_all() {
	# Running uglify is a problem right now, so skip this step. Rather
	# have newer versions than compacted javascript.
	sed -e "s/'pipeline.compressors.uglifyjs.UglifyJSCompressor'/None/" -i reviewboard/settings.py || die

	distutils-r1_python_prepare_all
}

python_compile_all() {
	# See https://code.google.com/p/reviewboard/issues/ #3009
	# until build of manual can find and use ROOT_URLCONF, only possible build path for manual
	# requires sacrificing the resources section, all of which call on ROOT_URLCONF
	local msg="Generating docs for"
	if use doc; then
		if use manual; then
			rm -rf docs/manual/webapi//2.0/resources/ || die
			einfo;einfo "$msg manual"
			DJANGO_SETTINGS_MODULE="django.conf" emake -C docs/manual html
		fi

		if use codebase; then
			pushd docs/codebase &> /dev/null
			ln -sf ../../contrib/internal/conf/settings_local.py .
			popd &> /dev/null
			einfo;einfo "$msg codebase"
			emake -C docs/codebase html
		fi

		if use rnotes; then
			einfo;einfo "$msg release notes"
			emake -C docs/releasenotes html
		fi
	fi
}

python_test() {
	pushd ${PN} > /dev/null
	ln -sf contrib/internal/conf/settings_local.py .
	"${PYTHON}" manage.py test || die
}

python_install_all() {
	if use doc; then
		if use manual; then
			insinto /usr/share/doc/${PF}/manual
			doins -r docs/manual/_build/html/
		fi
		if use codebase; then
			insinto /usr/share/doc/${PF}/codebase
			doins -r docs/codebase/_build/html/
		fi
		if use rnotes; then
			insinto /usr/share/doc/${PF}/release_notes
			doins -r docs/releasenotes/_build/html/
		fi
	fi
	distutils-r1_python_install_all
}

pkg_postinst() {
	elog "You must install any VCS tool you wish ${PN} to support."
	elog "dev-util/cvs, dev-vcs/git, dev-vcs/mercurial or dev-util/subversion."
	elog
	elog "Install dev-python/mysql-python for mysql support."
	elog "Install dev-python/psycopg for postgres support."
	elog
	elog "For speed and responsiveness, consider installing net-misc/memcached"
	elog "and dev-python/python-memcached"
}