summaryrefslogtreecommitdiff
blob: 04e3c2dd062eea58a1cfc943db10130b7310f012 (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
133
134
135
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5

PYTHON_COMPAT=( python2_7 )

inherit check-reqs cmake-utils elisp-common python-single-r1

DESCRIPTION="A double-entry accounting system with a command-line reporting interface"
HOMEPAGE="http://ledger-cli.org/"
SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="BSD"
KEYWORDS="amd64 x86"
SLOT="0"
IUSE="doc emacs python"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"

SITEFILE=50${PN}-gentoo-${PV}.el

CHECKREQS_MEMORY=8G

RDEPEND="
	dev-libs/boost:=[python?]
	dev-libs/gmp:0=
	dev-libs/mpfr:0=
	emacs? ( virtual/emacs )
	python? (
		dev-libs/boost:=[${PYTHON_USEDEP}]
		dev-python/cheetah
		${PYTHON_DEPS}
	)
"
DEPEND="
	${RDEPEND}
	dev-libs/utfcpp
	doc? (
		sys-apps/texinfo
		|| (
			>=dev-texlive/texlive-plainextra-2013
			dev-texlive/texlive-texinfo
		)
		dev-texlive/texlive-fontsrecommended
	)
"

# Building with python integration seems to fail without 8G available
# RAM(!)  Since the memory check in check-reqs doesn't count swap, it
# may be unfair to fail the build entirely on the memory test alone.
# Therefore check-reqs_pkg_pretend is deliberately omitted so that we
# ewarn but not eerror.
pkg_pretend() {
	:
}

pkg_setup() {
	if use python; then
		check-reqs_pkg_setup
		python-single-r1_pkg_setup
	fi
}

src_prepare() {
	cmake-utils_src_prepare

	# Want to type "info ledger" not "info ledger3"
	sed -i -e 's/ledger3/ledger/g' \
		doc/ledger3.texi \
		doc/CMakeLists.txt \
		test/CheckTexinfo.py \
		tools/cleanup.sh \
		tools/gendocs.sh \
		tools/prepare-commit-msg \
		tools/spellcheck.sh \
		|| die "Failed to update info file name in file contents"

	mv doc/ledger{3,}.texi || die "Failed to rename info file name"
}

src_configure() {
	local mycmakeargs=(
		$(cmake-utils_use_build emacs EMACSLISP)
		$(cmake-utils_use_build doc DOCS)
		$(cmake-utils_use_build doc WEB_DOCS)
		$(cmake-utils_use_use python PYTHON)
		-DCMAKE_INSTALL_DOCDIR=/usr/share/doc/${PF}
	)

	cmake-utils_src_configure
}

src_compile() {
	cmake-utils_src_compile

	use doc && cmake-utils_src_make doc
}

src_install() {
	# Prevent installing ledger.so into python site-packages.  It's an
	# unnecessary copy of libledger.so and generates security warnings.
	sed -i -e '/python/d' ../${P}_build/src/cmake_install.cmake \
		|| die "Failed to disable installation of ledger.so"

	cmake-utils_src_install

	# This source dir appears to include some helper code for serving
	# reports to a browser ("ledger server").  I can't quite get it to
	# work and the docs say it's a work-in-progress.  It's a little
	# interesting, though, so I'll leave these installed as a preview of
	# features to come.
	if use python; then
		mv python ${PN} || die "Couldn't rename python module static files dir"
		python_domodule ${PN}
	fi

	use emacs && elisp-site-file-install "${FILESDIR}/${SITEFILE}"
}

pkg_postinst() {
	use emacs && elisp-site-regen

	einfo
	einfo "Since version 3, vim support is released separately."
	einfo "See https://github.com/ledger/vim-ledger"
	einfo
}

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

# rainy day TODO:
# - IUSE test
# - EAPI=6