diff options
author | Erik Mackdanz <stasibear@gentoo.org> | 2024-11-03 13:27:46 -0600 |
---|---|---|
committer | Erik Mackdanz <stasibear@gentoo.org> | 2024-11-03 14:11:30 -0600 |
commit | ac67334aa9cbd0e41b9e11921cd38a92f7a135c6 (patch) | |
tree | d20273756828b3a1974ff304b2bb88c132e6b95c /app-office/ledger | |
parent | app-office/ledger: drop 3.3.2 (diff) | |
download | gentoo-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/ledger')
-rw-r--r-- | app-office/ledger/files/sha1sum.patch | 110 | ||||
-rw-r--r-- | app-office/ledger/ledger-3.3.2-r2.ebuild | 117 |
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 |