summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Mackdanz <stasibear@gentoo.org>2024-11-03 13:27:46 -0600
committerErik Mackdanz <stasibear@gentoo.org>2024-11-03 14:11:30 -0600
commitac67334aa9cbd0e41b9e11921cd38a92f7a135c6 (patch)
treed20273756828b3a1974ff304b2bb88c132e6b95c /app-office
parentapp-office/ledger: drop 3.3.2 (diff)
downloadgentoo-ac67334aa9cbd0e41b9e11921cd38a92f7a135c6.tar.gz
gentoo-ac67334aa9cbd0e41b9e11921cd38a92f7a135c6.tar.bz2
gentoo-ac67334aa9cbd0e41b9e11921cd38a92f7a135c6.zip
app-office/ledger: bump to -r2
Fix compilation against boost 1.86 by applying patch from https://github.com/ledger/ledger/pull/2381/files Closes: https://bugs.gentoo.org/942763 Signed-off-by: Erik Mackdanz <stasibear@gentoo.org>
Diffstat (limited to 'app-office')
-rw-r--r--app-office/ledger/files/sha1sum.patch110
-rw-r--r--app-office/ledger/ledger-3.3.2-r2.ebuild117
2 files changed, 227 insertions, 0 deletions
diff --git a/app-office/ledger/files/sha1sum.patch b/app-office/ledger/files/sha1sum.patch
new file mode 100644
index 000000000000..2de66a672e68
--- /dev/null
+++ b/app-office/ledger/files/sha1sum.patch
@@ -0,0 +1,110 @@
+diff --git a/src/filters.cc b/src/filters.cc
+index f725c247..030a5fb4 100644
+--- a/src/filters.cc
++++ b/src/filters.cc
+@@ -237,8 +237,6 @@ void anonymize_posts::render_commodity(amount_t& amt)
+
+ void anonymize_posts::operator()(post_t& post)
+ {
+- boost::uuids::detail::sha1 sha;
+- unsigned int message_digest[5];
+ bool copy_xact_details = false;
+
+ if (last_xact != post.xact) {
+@@ -255,12 +253,7 @@ void anonymize_posts::operator()(post_t& post)
+ std::ostringstream buf;
+ buf << reinterpret_cast<boost::uintmax_t>(post.xact->payee.c_str())
+ << integer_gen() << post.xact->payee.c_str();
+-
+- sha.reset();
+- sha.process_bytes(buf.str().c_str(), buf.str().length());
+- sha.get_digest(message_digest);
+-
+- xact.payee = to_hex(message_digest);
++ xact.payee = sha1sum(buf.str(), 8);
+ xact.note = none;
+ } else {
+ xact.journal = post.xact->journal;
+@@ -273,12 +266,7 @@ void anonymize_posts::operator()(post_t& post)
+ acct = acct->parent) {
+ std::ostringstream buf;
+ buf << integer_gen() << acct << acct->fullname();
+-
+- sha.reset();
+- sha.process_bytes(buf.str().c_str(), buf.str().length());
+- sha.get_digest(message_digest);
+-
+- account_names.push_front(to_hex(message_digest));
++ account_names.push_front(sha1sum(buf.str(), 8));
+ }
+
+ account_t * new_account =
+@@ -1268,7 +1256,7 @@ void budget_posts::report_budget_items(const date_t& date)
+ foreach (pending_posts_list::iterator& i, posts_to_erase)
+ pending_posts.erase(i);
+ }
+-
++
+ if (pending_posts.size() == 0)
+ return;
+
+diff --git a/src/utils.h b/src/utils.h
+index b09377b8..510686fd 100644
+--- a/src/utils.h
++++ b/src/utils.h
+@@ -607,29 +607,39 @@ inline int peek_next_nonws(std::istream& in) {
+ *_p = '\0'; \
+ }
+
+-inline string to_hex(unsigned int * message_digest, const int len = 1)
+-{
++inline string digest_to_hex(
++ const boost::uuids::detail::sha1::digest_type& message_digest,
++ size_t len = sizeof(boost::uuids::detail::sha1::digest_type) * 2
++) {
+ std::ostringstream buf;
+-
+- for(int i = 0; i < 5 ; i++) {
+- buf.width(8);
+- buf.fill('0');
+- buf << std::hex << message_digest[i];
+- if (i + 1 >= len)
+- break; // only output the first LEN dwords
++ buf.setf(std::ios_base::hex, std::ios_base::basefield);
++ buf.fill('0');
++
++ // sha1::digest_type is an array type and may change between Boost versions
++ const size_t count = std::min(
++ sizeof(message_digest) / sizeof(message_digest[0]),
++ (len - 1) / (sizeof(message_digest[0]) * 2) + 1
++ );
++ for(size_t i = 0; i < count; i++) {
++ buf.width(sizeof(message_digest[i]) * 2);
++ buf << (unsigned int)message_digest[i];
+ }
+- return buf.str();
++ string hex = buf.str();
++ hex.resize(len, '0'); // in case a partial element is requested
++ return hex;
+ }
+
+-inline string sha1sum(const string& str)
+-{
+- boost::uuids::detail::sha1 sha;
++inline string sha1sum(
++ const string& str,
++ size_t len = sizeof(boost::uuids::detail::sha1::digest_type) * 2
++) {
++ static boost::uuids::detail::sha1 sha;
++ boost::uuids::detail::sha1::digest_type message_digest;
+
++ sha.reset();
+ sha.process_bytes(str.c_str(), str.length());
+-
+- unsigned int message_digest[5];
+ sha.get_digest(message_digest);
+- return to_hex(message_digest, 5);
++ return digest_to_hex(message_digest, len);
+ }
+
+ extern const string version;
diff --git a/app-office/ledger/ledger-3.3.2-r2.ebuild b/app-office/ledger/ledger-3.3.2-r2.ebuild
new file mode 100644
index 000000000000..c69d99cb1265
--- /dev/null
+++ b/app-office/ledger/ledger-3.3.2-r2.ebuild
@@ -0,0 +1,117 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10,11,12,13} )
+CMAKE_REMOVE_MODULES_LIST=( FindPython Support )
+inherit bash-completion-r1 check-reqs cmake python-single-r1
+
+DESCRIPTION="Double-entry accounting system with a command-line reporting interface"
+HOMEPAGE="https://www.ledger-cli.org/"
+SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="debug doc python"
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+RESTRICT="test"
+
+CHECKREQS_MEMORY=8G
+
+RDEPEND="
+ dev-libs/boost:=[python?]
+ dev-libs/gmp:0=
+ dev-libs/mpfr:0=
+ python? (
+ $(python_gen_cond_dep '
+ dev-libs/boost:=[${PYTHON_USEDEP}]
+ dev-python/cheetah3:=[${PYTHON_USEDEP}]
+ ')
+ ${PYTHON_DEPS}
+ )
+"
+DEPEND="${RDEPEND}
+ dev-libs/utfcpp
+ doc? (
+ app-text/texlive[extra]
+ sys-apps/texinfo
+ virtual/texi2dvi
+ )
+"
+
+pkg_pretend() {
+ if use python; then
+ check-reqs_pkg_pretend
+ fi
+}
+
+pkg_setup() {
+ if use python; then
+ check-reqs_pkg_setup
+ python-single-r1_pkg_setup
+ fi
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ # Want to type "info ledger" not "info ledger3"
+ sed -i -e 's/ledger3/ledger/g' \
+ doc/{CMakeLists.txt,ledger3.texi} test/CheckTexinfo.py \
+ tools/{cleanup.sh,gendocs.sh,prepare-commit-msg,spellcheck.sh} \
+ || die "Failed to update info file name in file contents"
+
+ mv doc/ledger{3,}.texi || die "Failed to rename info file name"
+
+ rm -r lib/utfcpp || die
+
+ eapply "${FILESDIR}/convenience.patch"
+ eapply "${FILESDIR}/sha1sum.patch"
+ eapply_user
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_DOCS="$(usex doc)"
+ -DBUILD_WEB_DOCS="$(usex doc)"
+ -DUSE_PYTHON="$(usex python)"
+ -DCMAKE_INSTALL_DOCDIR="/usr/share/doc/${PF}"
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON
+ -DBUILD_DEBUG="$(usex debug)"
+ -DUTFCPP_PATH="${ESYSROOT}/usr/include/utf8cpp"
+ )
+ if use python; then
+ mycmakeargs+=(
+ -DPython_EXECUTABLE="${PYTHON}"
+ -DPython_INCLUDE_DIR="$(python_get_includedir)"
+ )
+ fi
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake_src_compile
+
+ use doc && cmake_src_compile doc
+}
+
+src_install() {
+ cmake_src_install
+
+ newbashcomp contrib/${PN}-completion.bash ${PN}
+}
+
+pkg_postinst() {
+ elog
+ elog "Since version 3, vim support is released separately."
+ elog "See https://github.com/ledger/vim-ledger"
+ elog
+ elog "For Emacs mode, emerge app-emacs/ledger-mode"
+}
+
+# rainy day TODO:
+# - IUSE test