git: e287976630a6 - main - finance/ledger: fix build with boost-1.86
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 20 Nov 2024 10:05:49 UTC
The branch main has been updated by fluffy: URL: https://cgit.FreeBSD.org/ports/commit/?id=e287976630a64690f9cd0fddfde199b322da52fe commit e287976630a64690f9cd0fddfde199b322da52fe Author: Dima Panov <fluffy@FreeBSD.org> AuthorDate: 2024-11-20 09:52:46 +0000 Commit: Dima Panov <fluffy@FreeBSD.org> CommitDate: 2024-11-20 10:05:22 +0000 finance/ledger: fix build with boost-1.86 Sponsored by: Future Crew, LLC --- finance/ledger/Makefile | 2 +- finance/ledger/files/patch-src_filters.cc | 48 ++++++++++++++++++ .../{patch-system.hh.in => patch-src_system.hh.in} | 0 finance/ledger/files/patch-src_utils.h | 57 ++++++++++++++++++++++ 4 files changed, 106 insertions(+), 1 deletion(-) diff --git a/finance/ledger/Makefile b/finance/ledger/Makefile index 999091db2bb7..cc37dd26b187 100644 --- a/finance/ledger/Makefile +++ b/finance/ledger/Makefile @@ -1,7 +1,7 @@ PORTNAME= ledger DISTVERSIONPREFIX= v DISTVERSION= 3.3.2 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= finance MAINTAINER= woodycarey@hotmail.com diff --git a/finance/ledger/files/patch-src_filters.cc b/finance/ledger/files/patch-src_filters.cc new file mode 100644 index 000000000000..56310c98dd19 --- /dev/null +++ b/finance/ledger/files/patch-src_filters.cc @@ -0,0 +1,48 @@ +--- src/filters.cc.orig 2023-03-30 07:40:48 UTC ++++ src/filters.cc +@@ -237,8 +237,6 @@ void anonymize_posts::operator()(post_t& post) + + 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& d + foreach (pending_posts_list::iterator& i, posts_to_erase) + pending_posts.erase(i); + } +- ++ + if (pending_posts.size() == 0) + return; + diff --git a/finance/ledger/files/patch-system.hh.in b/finance/ledger/files/patch-src_system.hh.in similarity index 100% rename from finance/ledger/files/patch-system.hh.in rename to finance/ledger/files/patch-src_system.hh.in diff --git a/finance/ledger/files/patch-src_utils.h b/finance/ledger/files/patch-src_utils.h new file mode 100644 index 000000000000..33e41412a62b --- /dev/null +++ b/finance/ledger/files/patch-src_utils.h @@ -0,0 +1,57 @@ +--- src/utils.h.orig 2023-03-30 07:40:48 UTC ++++ 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; ++ buf.setf(std::ios_base::hex, std::ios_base::basefield); ++ buf.fill('0'); + +- 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 ++ // 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;