summaryrefslogtreecommitdiff
path: root/app-office/gnucash
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2019-01-12 16:58:08 +0000
committerV3n3RiX <venerix@redcorelinux.org>2019-01-12 16:58:08 +0000
commitc8a77dfe4d3d307c1d5dd2650b7297447d8b609d (patch)
tree9ea78393bc3ecd6ab4de449383d4e97e5f3648ae /app-office/gnucash
parent2891d29af8907ce881662f4a02844926d7a293c7 (diff)
gentoo resync : 12.01.2019
Diffstat (limited to 'app-office/gnucash')
-rw-r--r--app-office/gnucash/Manifest4
-rw-r--r--app-office/gnucash/files/gnucash-3.4-test-stress-options.scm315
-rw-r--r--app-office/gnucash/files/gnucash-3.4-test-transaction.patch25
-rw-r--r--app-office/gnucash/gnucash-3.4.ebuild178
4 files changed, 522 insertions, 0 deletions
diff --git a/app-office/gnucash/Manifest b/app-office/gnucash/Manifest
index c1171190ae79..8b97b3417de9 100644
--- a/app-office/gnucash/Manifest
+++ b/app-office/gnucash/Manifest
@@ -1,8 +1,12 @@
AUX gnucash-3.2-no-gui.patch 440 BLAKE2B 223d9527e0f290e73774b39ee25dae2c1740d4ed8b340d5d8cdfde74734ae30ebc391ca4ef8df6b162dd53cfd1b5ae3c7d5cd64446978a86969bb5fcc9ea6440 SHA512 628d38969abd7475f88ed9013d99691768abd11a751205092e04b92183551e0dce2e32f1212f66fde47e83730e1d26addbc47d990478e8a8968f9c9f0bc041bd
+AUX gnucash-3.4-test-stress-options.scm 14743 BLAKE2B f294001a1e888f72ca1fed616d62bd013d7b281ab1143e61ec61a595c2f0e51cfdfc1481a8a9992254fc430155e542138dfab284696ed7a6e0084bb3c81454f9 SHA512 3c8bc5c489c3de49ad940fb6dc99676d60fa0028f1014d2aaa519e8c6a76ceb7c91e2e97edc8e5e9b5c2f7d8a984f463f78ad3a10f49c4eb844e5d9e657b4030
+AUX gnucash-3.4-test-transaction.patch 1157 BLAKE2B 41e516e6cf6f29ea3c41b7dc464c38204b088575d7a9c66a355cf7e3eaaed0cfbfe8b7f30c816795ab84e4102e44475266119564c722ebd8f9401a6d462bec9f SHA512 fb4c578a35d85b12ecdf1a9b818225f410792e84f866573b7de97ce94890ddb22dcbf283baf1d0649a3f68ee83db9fb3aa0784ba9c4cec6b65d133d7e12793bf
DIST gnucash-3.2.tar.bz2 13383942 BLAKE2B ce4beb9eab290bbc85c4b3bf68b205a8ebb274056bf10ef1721bce48ec18e4df4b488ce885dc767b4f1e951dabcdc2ba702cb5fe239f249ec50c8d2d1d12a434 SHA512 ef74cbf396096a71316e14500a5b4e57670f9e9c0c5d46f3afe051ccbae2e46a5f14edd8dd805dfb61276b934db286d48ae044160699df82689e2718ed2f7573
DIST gnucash-3.3.tar.bz2 13440713 BLAKE2B a308af90d8a8e50eb732d29c7eadac1fb75b63006da5bbaa9044039c43c1c17976c6b6fdb1706a08a527b75b1300df3a8ed469151370097b0308a173a170e41b SHA512 4bf0369ca9b3c91c98a0d916f0befc7e5675a246559a6a72dba6592b64f56f3cbd1885b0711e44e8d9cca290be742812763691ae2f639ea31ec534e52e17b3f9
+DIST gnucash-3.4.tar.bz2 13564432 BLAKE2B 478d8e2e4acbd0725ceaf997a1e62ba3875e9d4a003e8a3e69111a9d29118447fb2da8ef3e5dd5274d83a3adef1ee9f4a153cdfd17cabe69864b53bab8c7e813 SHA512 4cebef0ba70e59a82d3b2b7b0b138ddb22e8866dc761e156ff1f15920145d12923719effef21ad4c65ccd62fbd14a1529cf0bfcaab70c5b33d103761d08062e0
DIST gtest-1.8.0.tar.gz 1281617 BLAKE2B ac052b4d0eb0d8ded03a8c7dff05177818627b8a51f2dbc2c162b2ee2a5d1323539e7d0d02236d9ebb799995e018f0171c2fdaeb4de3bb339548265e50de79e6 SHA512 1dbece324473e53a83a60601b02c92c089f5d314761351974e097b2cf4d24af4296f9eb8653b6b03b1e363d9c5f793897acae1f0c7ac40149216035c4d395d9d
EBUILD gnucash-3.2-r2.ebuild 3959 BLAKE2B 37cdc89d7db8903b4b89332d7f9b47cef47fb29588a443b979a49d43bad5e883158a939898368afc02cae89402b25a7498a5a373c51cb8fb9c5265c7d05c15ae SHA512 97da97ae88ed1aa564ec605d5e8d24852869745521457d98e76adbb4b72a2a28025bcddad413e2f85a2d3f6c4116c40a889438428c9c5197a873e1834077235b
EBUILD gnucash-3.3-r1.ebuild 4018 BLAKE2B 17e75c78e4c6c9f45a36297765a512f4972670048358f745cad46a320004487621f145d8b9279ad8629a533e72f1259a39f4a42bfed501fc039b3a6e68ccbbac SHA512 66660f2357731b28a130de0c01cad1d30ea1a36aff30f02a144aa4d2e60945ba12f3847e0827d1548a9477f1f53b1293fefe28004db3e0875cce8495081b5767
EBUILD gnucash-3.3.ebuild 3960 BLAKE2B fb2ce5241798a3aa3f7c1c69608c5707f44bcb847d73d64efc690478a1958ceb01f36d749377dc13502cc6e160875f62bbae40f79e4299aefb5b2f8c5d5e9d3c SHA512 a6bdc6f366cbcf8cec17f3772c45d8ed081d926326870ab966653eba405d693f20677a1dfb4db44f077fc673b42d96689ee71ee4bd7f47a7a78ad5c93edcd22d
+EBUILD gnucash-3.4.ebuild 4282 BLAKE2B b105ee7ff529866108c47933850d0207198ac81ca5c84ab0ca4c55bef0992d52f6d34ad4a6a07c015df374cca7a06a1d6c72b2265f048319995e270d6b0dd8fc SHA512 3710292c480f22a77aca55ab5c33860a550cae133abf81bef4b006e23003eced962425c469c963e941c6e4876d90e49ca8a7e6f3c91ce1f8a016bcade4a12558
MISC metadata.xml 877 BLAKE2B 0fcba4a83ba82aa6634bc2e3d71da766f2890340e827ba478157fae994456daaecd12722991626069e04086d670a77f156e378a5b0d7b8ee35717561ca944a03 SHA512 1654790fbffc4ec76fc9520221877ad7eaa8fc774f4a05e9e250e44c0fb989081bafcacb018c8d2f6a4787d1794672a87e09c1687919b544a8f1fb36bb449bdc
diff --git a/app-office/gnucash/files/gnucash-3.4-test-stress-options.scm b/app-office/gnucash/files/gnucash-3.4-test-stress-options.scm
new file mode 100644
index 000000000000..e85cd61a8efe
--- /dev/null
+++ b/app-office/gnucash/files/gnucash-3.4-test-stress-options.scm
@@ -0,0 +1,315 @@
+(use-modules (ice-9 textual-ports))
+(use-modules (ice-9 popen))
+(use-modules (gnucash utilities))
+(use-modules (gnucash gnc-module))
+(gnc:module-begin-syntax (gnc:module-load "gnucash/app-utils" 0))
+(use-modules (gnucash engine test test-extras))
+(use-modules (gnucash report standard-reports))
+(use-modules (gnucash report business-reports))
+(use-modules (gnucash report view-column))
+(use-modules (gnucash report stylesheets))
+(use-modules (gnucash report taxinvoice))
+(use-modules (gnucash report report-system))
+(use-modules (gnucash report report-system test test-extras))
+(use-modules (srfi srfi-64))
+(use-modules (srfi srfi-98))
+(use-modules (gnucash engine test srfi64-extras))
+(use-modules (sxml simple))
+(use-modules (sxml xpath))
+
+;; NOTE
+;; ----
+;; SIMPLE stress tests by default
+;;
+;; PAIRWISE COMBINATORICS are enabled by setting environment variable COMBINATORICS
+;; to the fullpath for the compiled jenny from http://burtleburtle.net/bob/math/jenny.html
+;;
+;; e.g. COMBINATORICS=/home/user/jenny/jenny ninja check
+
+(define optionslist '())
+
+(define (generate-optionslist)
+ (gnc:report-templates-for-each
+ (lambda (report-id template)
+ (let* ((options-generator (gnc:report-template-options-generator template))
+ (name (gnc:report-template-name template))
+ (options (options-generator)))
+ (set! optionslist
+ (cons (list (cons 'report-id report-id)
+ (cons 'report-name (gnc:report-template-name template))
+ (cons 'options (let ((report-options-tested '()))
+ (gnc:options-for-each
+ (lambda (option)
+ (when (memq (gnc:option-type option)
+ '(multichoice boolean))
+ (set! report-options-tested
+ (cons (vector
+ (gnc:option-section option)
+ (gnc:option-name option)
+ (gnc:option-type option)
+ (case (gnc:option-type option)
+ ((multichoice) (map (lambda (d) (vector-ref d 0))
+ (gnc:option-data option)))
+ ((boolean) (list #t #f))))
+ report-options-tested))))
+ options)
+ report-options-tested)))
+ optionslist))))))
+
+;; Explicitly set locale to make the report output predictable
+(setlocale LC_ALL "C")
+
+(define (run-test)
+ (test-runner-factory gnc:test-runner)
+ (test-begin "stress options")
+ (generate-optionslist)
+ (tests)
+ (test-end "stress options"))
+
+(define jennypath
+ (get-environment-variable "COMBINATORICS"))
+
+(define jenny-exists?
+ ;; this is a simple test for presence of jenny - will check
+ ;; COMBINATORICS env exists, and running it produces exit-code of
+ ;; zero, and tests the first few letters of its output.
+ (and (string? jennypath)
+ (zero? (system jennypath))
+ (string=? (string-take (get-string-all (open-input-pipe jennypath)) 6)
+ "jenny:")))
+
+(define (set-option! options section name value)
+ (let ((option (gnc:lookup-option options section name)))
+ (if option
+ (gnc:option-set-value option value))))
+
+(define (mnemonic->commodity sym)
+ (gnc-commodity-table-lookup
+ (gnc-commodity-table-get-table (gnc-get-current-book))
+ (gnc-commodity-get-namespace (gnc-default-report-currency))
+ sym))
+
+(define structure
+ (list "Root" (list (cons 'type ACCT-TYPE-ASSET))
+ (list "Asset"
+ (list "Bank")
+ (list "GBP Bank" (list (cons 'commodity (mnemonic->commodity "GBP"))))
+ (list "Wallet"))
+ (list "Income" (list (cons 'type ACCT-TYPE-INCOME)))
+ (list "Income-GBP" (list (cons 'type ACCT-TYPE-INCOME)
+ (cons 'commodity (mnemonic->commodity "GBP"))))
+ (list "Expenses" (list (cons 'type ACCT-TYPE-EXPENSE)))
+ (list "Liabilities" (list (cons 'type ACCT-TYPE-LIABILITY)))
+ (list "Equity" (list (cons 'type ACCT-TYPE-EQUITY)))
+ ))
+
+(define (simple-stress-test report-name uuid report-options)
+ (let ((options (gnc:make-report-options uuid)))
+ (test-assert (format #f "basic test ~a" report-name)
+ (gnc:options->render uuid options (string-append "stress-" report-name) "test"))
+ (format #t "Testing SIMPLE combinations for:\n~a" report-name)
+ (for-each
+ (lambda (option)
+ (format #t ",~a/~a"
+ (vector-ref option 0)
+ (vector-ref option 1)))
+ report-options)
+ (newline)
+ (for-each
+ (lambda (idx)
+ (display report-name)
+ (for-each
+ (lambda (option)
+ (let* ((section (vector-ref option 0))
+ (name (vector-ref option 1))
+ (value (list-ref (vector-ref option 3)
+ (modulo idx (length (vector-ref option 3))))))
+ (set-option! options section name value)
+ (format #t ",~a"
+ (cond
+ ((boolean? value) (if value 't 'f))
+ (else value)))))
+ report-options)
+ (catch #t
+ (lambda ()
+ (gnc:options->render uuid options "stress-test" "test")
+ (display "[pass]\n"))
+ (lambda (k . args)
+ (format #t "[fail]... error: (~s . ~s) options-list are:\n~a"
+ k args
+ (gnc:html-render-options-changed options #t))
+ (test-assert "logging test failure as above..."
+ #f))))
+ (iota
+ (apply max
+ (map (lambda (opt) (length (vector-ref opt 3)))
+ report-options)))
+ )))
+
+(define (combinatorial-stress-test report-name uuid report-options)
+ (let* ((options (gnc:make-report-options uuid))
+ (render #f))
+ (test-assert (format #f "basic test ~a" report-name)
+ (set! render
+ (gnc:options->render
+ uuid options (string-append "stress-" report-name) "test")))
+ (if render
+ (begin
+ (format #t "Testing n-tuple combinatorics for:\n~a" report-name)
+ (for-each
+ (lambda (option)
+ (format #t ",~a/~a"
+ (vector-ref option 0)
+ (vector-ref option 1)))
+ report-options)
+ (newline)
+ ;; generate combinatorics
+ (let* ((option-lengths (map (lambda (report-option)
+ (length (vector-ref report-option 3)))
+ report-options))
+ (jennyargs (string-join (map number->string option-lengths) " "))
+ (n-tuple (min
+ ;; the following is the n-tuple
+ 2
+ (length report-options)))
+ (cmdline (format #f "~a -n~a ~a"
+ jennypath n-tuple jennyargs))
+ (jennyout (get-string-all (open-input-pipe cmdline)))
+ (test-cases (string-split jennyout #\newline)))
+ (for-each
+ (lambda (case)
+ (unless (string-null? case)
+ (let* ((choices-str (string-filter char-alphabetic? case))
+ (choices-alpha (map char->integer (string->list choices-str)))
+ (choices (map (lambda (n)
+ (- n (if (> n 96) 97 39))) ; a-z -> 0-25, and A-Z -> 26-51
+ choices-alpha)))
+ (let loop ((option-idx (1- (length report-options)))
+ (option-summary '()))
+ (if (negative? option-idx)
+ (catch #t
+ (lambda ()
+ (gnc:options->render uuid options "stress-test" "test")
+ (format #t "[pass] ~a:~a \n"
+ report-name
+ (string-join option-summary ",")))
+ (lambda (k . args)
+ (format #t "[fail]... error (~s . ~s) options-list are:\n~a"
+ k args
+ (gnc:html-render-options-changed options #t))
+ (test-assert "logging test failure as above..."
+ #f)))
+ (let* ((option (list-ref report-options option-idx))
+ (section (vector-ref option 0))
+ (name (vector-ref option 1))
+ (value (list-ref (vector-ref option 3)
+ (list-ref choices option-idx))))
+ (set-option! options section name value)
+ (loop (1- option-idx)
+ (cons (format #f "~a"
+ (cond
+ ((boolean? value) (if value 't 'f))
+ (else value)))
+ option-summary))))))))
+ test-cases)))
+ (display "...aborted due to basic test failure"))))
+
+(define test
+ ;; what strategy are we using here? simple stress test (ie tests as
+ ;; many times as the maximum number of options) or combinatorial
+ ;; tests (using jenny)
+ (if jenny-exists?
+ combinatorial-stress-test
+ simple-stress-test))
+
+(define (create-test-data)
+ (let* ((env (create-test-env))
+ (account-alist (env-create-account-structure-alist env structure))
+ (bank (cdr (assoc "Bank" account-alist)))
+ (gbp-bank (cdr (assoc "GBP Bank" account-alist)))
+ (wallet (cdr (assoc "Wallet" account-alist)))
+ (income (cdr (assoc "Income" account-alist)))
+ (gbp-income (cdr (assoc "Income-GBP" account-alist)))
+ (expense (cdr (assoc "Expenses" account-alist)))
+ (liability (cdr (assoc "Liabilities" account-alist)))
+ (equity (cdr (assoc "Equity" account-alist))))
+ ;; populate datafile with old transactions
+ (env-transfer env 01 01 1970 bank expense 5 #:description "desc-1" #:num "trn1" #:memo "memo-3")
+ (env-transfer env 31 12 1969 income bank 10 #:description "desc-2" #:num "trn2" #:void-reason "void" #:notes "notes3")
+ (env-transfer env 31 12 1969 income bank 29 #:description "desc-3" #:num "trn3"
+ #:reconcile (cons #\c (gnc-dmy2time64 01 03 1970)))
+ (env-transfer env 01 02 1970 bank expense 15 #:description "desc-4" #:num "trn4" #:notes "notes2" #:memo "memo-1")
+ (env-transfer env 10 01 1970 liability expense 10 #:description "desc-5" #:num "trn5" #:void-reason "any")
+ (env-transfer env 10 01 1970 liability expense 11 #:description "desc-6" #:num "trn6" #:notes "notes1")
+ (env-transfer env 10 02 1970 bank liability 8 #:description "desc-7" #:num "trn7" #:notes "notes1" #:memo "memo-2"
+ #:reconcile (cons #\y (gnc-dmy2time64 01 03 1970)))
+ (let ((txn (xaccMallocTransaction (gnc-get-current-book)))
+ (split-1 (xaccMallocSplit (gnc-get-current-book)))
+ (split-2 (xaccMallocSplit (gnc-get-current-book)))
+ (split-3 (xaccMallocSplit (gnc-get-current-book))))
+ (xaccTransBeginEdit txn)
+ (xaccTransSetDescription txn "$100bank -> $80expenses + $20wallet")
+ (xaccTransSetCurrency txn (xaccAccountGetCommodity bank))
+ (xaccTransSetDate txn 14 02 1971)
+ (xaccSplitSetParent split-1 txn)
+ (xaccSplitSetParent split-2 txn)
+ (xaccSplitSetParent split-3 txn)
+ (xaccSplitSetAccount split-1 bank)
+ (xaccSplitSetAccount split-2 expense)
+ (xaccSplitSetAccount split-3 wallet)
+ (xaccSplitSetValue split-1 -100)
+ (xaccSplitSetValue split-2 80)
+ (xaccSplitSetValue split-3 20)
+ (xaccSplitSetAmount split-1 -100)
+ (xaccSplitSetAmount split-2 80)
+ (xaccSplitSetAmount split-3 20)
+ (xaccTransSetNotes txn "multisplit")
+ (xaccTransCommitEdit txn))
+ (let ((closing-txn (env-transfer env 31 12 1977 expense equity 111 #:description "Closing")))
+ (xaccTransSetIsClosingTxn closing-txn #t))
+ (env-transfer-foreign env 15 01 2000 gbp-bank bank 10 14 #:description "GBP 10 to USD 14")
+ (env-transfer-foreign env 15 02 2000 bank gbp-bank 9 6 #:description "USD 9 to GBP 6")
+ (for-each (lambda (m)
+ (env-transfer env 08 (1+ m) 1978 gbp-income gbp-bank 51 #:description "#51 income")
+ (env-transfer env 03 (1+ m) 1978 income bank 103 #:description "$103 income")
+ (env-transfer env 15 (1+ m) 1978 bank expense 22 #:description "$22 expense")
+ (env-transfer env 09 (1+ m) 1978 income bank 109 #:description "$109 income"))
+ (iota 12))
+ (let ((mid (floor (/ (+ (gnc-accounting-period-fiscal-start)
+ (gnc-accounting-period-fiscal-end)) 2))))
+ (env-create-transaction env mid bank income 200))))
+
+(define (run-tests prefix)
+ (for-each
+ (lambda (option-set)
+ (let ((report-name (assq-ref option-set 'report-name))
+ (report-guid (assq-ref option-set 'report-id))
+ (report-options (assq-ref option-set 'options)))
+ (if (member report-name
+ ;; these reports seem to cause problems when running...
+ '(
+ ;; eguile-based reports
+ "Tax Invoice"
+ "Receipt"
+ "Australian Tax Invoice"
+ "Balance Sheet (eguile)"
+
+ ;; tax-schedule - locale-dependent?
+ "Tax Schedule Report/TXF Export"
+
+ ;; unusual reports
+ "Welcome to GnuCash"
+ "Hello, World"
+ "Multicolumn View"
+ "General Journal"
+ ))
+ (format #t "\nSkipping ~a ~a...\n" report-name prefix)
+ (begin
+ (format #t "\nTesting ~a ~a...\n" report-name prefix)
+ (test report-name report-guid report-options)))))
+ optionslist))
+
+(define (tests)
+ (run-tests "with empty book")
+ (create-test-data)
+ (run-tests "on a populated book"))
diff --git a/app-office/gnucash/files/gnucash-3.4-test-transaction.patch b/app-office/gnucash/files/gnucash-3.4-test-transaction.patch
new file mode 100644
index 000000000000..bf7180e664fd
--- /dev/null
+++ b/app-office/gnucash/files/gnucash-3.4-test-transaction.patch
@@ -0,0 +1,25 @@
+From 95bee405cf5568f5899287ba62058cf894361676 Mon Sep 17 00:00:00 2001
+From: Christopher Lam <christopher.lck@gmail.com>
+Date: Wed, 2 Jan 2019 00:00:56 +0800
+Subject: [PATCH] [test-transaction] fix a test which was hardcoded to 2018.
+
+This test was hard-coded to pass in 2018. Fix.
+---
+ gnucash/report/standard-reports/test/test-transaction.scm | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gnucash/report/standard-reports/test/test-transaction.scm b/gnucash/report/standard-reports/test/test-transaction.scm
+index 755aba2983..2f428e24e9 100644
+--- a/gnucash/report/standard-reports/test/test-transaction.scm
++++ b/gnucash/report/standard-reports/test/test-transaction.scm
+@@ -652,8 +652,8 @@
+ (list "Grand Total" "$2,280.00" "$2,280.00")
+ (get-row-col sxml -1 #f))
+ (test-equal "dual amount column, first transaction correct"
+- (list "01/03/18" "$103 income" "Root.Asset.Bank" "$103.00" "$103.00")
+- (get-row-col sxml 1 #f)))
++ (list "$103 income" "Root.Asset.Bank" "$103.00" "$103.00")
++ (cdr (get-row-col sxml 1 #f))))
+ )
+
+ (test-end "display options")
diff --git a/app-office/gnucash/gnucash-3.4.ebuild b/app-office/gnucash/gnucash-3.4.ebuild
new file mode 100644
index 000000000000..970c9bf9bf22
--- /dev/null
+++ b/app-office/gnucash/gnucash-3.4.ebuild
@@ -0,0 +1,178 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+# google{test,mock} version
+GV="1.8.0"
+PYTHON_COMPAT=( python3_{4,5,6} )
+
+inherit cmake-utils gnome2-utils python-single-r1 xdg-utils
+
+DESCRIPTION="A personal finance manager"
+HOMEPAGE="http://www.gnucash.org/"
+SRC_URI="https://github.com/Gnucash/${PN}/releases/download/${PV}/${P}.tar.bz2
+ https://github.com/google/googletest/archive/release-${GV}.tar.gz -> gtest-${GV}.tar.gz"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
+
+IUSE="aqbanking chipcard debug doc examples gnome-keyring +gui mysql nls ofx
+ postgres python quotes -register2 sqlite"
+
+REQUIRED_USE="
+ chipcard? ( aqbanking )
+ python? ( ${PYTHON_REQUIRED_USE} )"
+
+# libdbi version requirement for sqlite taken from bug #455134
+#
+# dev-libs/boost must always be built with nls enabled.
+# guile[deprecated] because of SCM_LIST*() use
+RDEPEND="
+ >=dev-libs/glib-2.46.0:2
+ >=dev-libs/libxml2-2.7.0:2
+ >=sys-libs/zlib-1.1.4
+ >=dev-scheme/guile-2.2.0:12=[deprecated,regex]
+ dev-libs/boost:=[icu,nls]
+ dev-libs/icu:=
+ dev-libs/libxslt
+ aqbanking? (
+ >=net-libs/aqbanking-5[gtk,ofx?]
+ sys-libs/gwenhywfar[gtk]
+ chipcard? ( sys-libs/libchipcard )
+ )
+ gnome-keyring? ( >=app-crypt/libsecret-0.18 )
+ gui? (
+ gnome-base/dconf
+ net-libs/webkit-gtk:4=
+ >=x11-libs/gtk+-3.14.0:3
+ )
+ mysql? (
+ dev-db/libdbi
+ dev-db/libdbi-drivers[mysql]
+ )
+ ofx? ( >=dev-libs/libofx-0.9.1 )
+ postgres? (
+ dev-db/libdbi
+ dev-db/libdbi-drivers[postgres]
+ )
+ python? ( ${PYTHON_DEPS} )
+ quotes? (
+ >=dev-perl/Finance-Quote-1.11
+ dev-perl/Date-Manip
+ dev-perl/HTML-TableExtract
+ )
+ sqlite? (
+ >=dev-db/libdbi-0.9.0
+ >=dev-db/libdbi-drivers-0.9.0[sqlite]
+ )
+"
+
+DEPEND="${RDEPEND}
+ ~dev-cpp/gtest-${GV}
+ >=sys-devel/gettext-0.19.6
+ dev-lang/perl
+ dev-perl/XML-Parser
+ sys-devel/libtool
+ virtual/pkgconfig
+"
+
+PDEPEND="doc? (
+ ~app-doc/gnucash-docs-${PV}
+ gnome-extra/yelp
+)"
+
+PATCHES=( "${FILESDIR}"/${PN}-3.2-no-gui.patch
+ # Fixed in 3.5
+ "${FILESDIR}"/${PN}-3.4-test-transaction.patch )
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+ xdg_environment_reset
+}
+
+src_unpack() {
+ default
+ cp "${FILESDIR}"/gnucash-3.4-test-stress-options.scm \
+ ${PN}-${PV}/${PN}/report/standard-reports/test/test-stress-options.scm \
+ || die "Failed copying scm"
+}
+
+src_configure() {
+ local sql_on_off="OFF"
+ if use mysql || use postgres || use sqlite ; then
+ sql_on_off="ON"
+ fi
+
+ local mycmakeargs=(
+ -DGMOCK_ROOT="${WORKDIR}"/googletest-release-${GV}/googlemock
+ -DGTEST_ROOT="${WORKDIR}"/googletest-release-${GV}/googletest
+ # Disable fallback to guile-2.0
+ -DCMAKE_DISABLE_FIND_PACKAGE_GUILE2=ON
+ -DCOMPILE_GSCHEMAS=OFF
+ -DDISABLE_NLS=$(usex !nls)
+ -DENABLE_REGISTER2=$(usex register2)
+ -DWITH_AQBANKING=$(usex aqbanking)
+ -DWITH_OFX=$(usex ofx)
+ -DWITH_PYTHON=$(usex python)
+ -DWITH_SQL=${sql_on_off}
+ -DWITH_GNUCASH=$(usex gui)
+ )
+
+ cmake-utils_src_configure
+}
+
+src_test() {
+ if use python ; then
+ cp common/test-core/unittest_support.py \
+ "${BUILD_DIR}"/common/test-core/ || die
+ fi
+
+ cd "${BUILD_DIR}" || die
+ XDG_DATA_HOME="${T}/$(whoami)" emake check
+}
+
+src_install() {
+ cmake-utils_src_install
+
+ rm "${ED%/}"/usr/share/doc/${PF}/README.dependencies || die
+
+ if use examples ; then
+ mv "${ED%/}"/usr/share/doc/gnucash \
+ "${ED%/}"/usr/share/doc/${PF}/examples || die
+ pushd "${ED%/}"/usr/share/doc/${PF}/examples/ > /dev/null || die
+ rm AUTHORS DOCUMENTERS LICENSE NEWS projects.html ChangeLog* \
+ *win32-bin.txt || die
+ popd > /dev/null || die
+ docompress -x /usr/share/doc/${PF}/examples/
+ else
+ rm -r "${ED%/}"/usr/share/doc/gnucash || die
+ fi
+
+ use aqbanking && dodoc doc/README.HBCI
+ use ofx && dodoc doc/README.OFX
+}
+
+pkg_postinst() {
+ if use gui ; then
+ gnome2_icon_cache_update
+ gnome2_schemas_update
+ fi
+ xdg_desktop_database_update
+ xdg_mimeinfo_database_update
+
+ ewarn "Backup all financial files or databases before using GnuCash >=2.7.0!"
+ ewarn
+ ewarn "GnuCash 2.7.0 introduced large changes in its file format and database"
+ ewarn "schema that WILL prevent you from reverting back to GnuCash 2.6."
+}
+
+pkg_postrm() {
+ if use gui ; then
+ gnome2_icon_cache_update
+ gnome2_schemas_update
+ fi
+ xdg_desktop_database_update
+ xdg_mimeinfo_database_update
+}