>Number: 189368 >Category: ports >Synopsis: [MAINTAINER] devel/monotone: update to 1.1 >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Mon May 05 11:20:00 UTC 2014 >Closed-Date: >Last-Modified: >Originator: Lapo Luchini >Release: FreeBSD 10.0-RELEASE-p1 amd64 >Organization: >Environment: System: FreeBSD lapo.andxor.it 10.0-RELEASE-p1 FreeBSD 10.0-RELEASE-p1 #0: Tue Apr 8 06:45:06 UTC >Description: Update to 1.1, which contains most of the patches we were using. Generated with FreeBSD Port Tools 1.00.2014.02.18 (mode: update, diff: ports) >How-To-Repeat: >Fix: --- monotone-1.1.patch begins here --- diff -ruN /usr/ports/devel/monotone/Makefile ./Makefile --- /usr/ports/devel/monotone/Makefile 2014-02-21 14:36:12.000000000 +0100 +++ ./Makefile 2014-05-05 12:06:24.604668101 +0200 @@ -1,9 +1,8 @@ # Created by: Mark A. Wicks -# $FreeBSD: head/devel/monotone/Makefile 345404 2014-02-21 13:36:12Z ehaupt $ +# $FreeBSD: head/devel/monotone/Makefile 343634 2014-02-10 13:54:26Z ehaupt $ PORTNAME= monotone -PORTVERSION= 1.0 -PORTREVISION= 3 +PORTVERSION= 1.1 CATEGORIES= devel MASTER_SITES= http://www.monotone.ca/downloads/${PORTVERSION}/ diff -ruN /usr/ports/devel/monotone/distinfo ./distinfo --- /usr/ports/devel/monotone/distinfo 2014-01-22 16:30:13.000000000 +0100 +++ ./distinfo 2014-05-05 12:06:50.227665120 +0200 @@ -1,2 +1,2 @@ -SHA256 (monotone-1.0.tar.bz2) = 5c530bc4652b2c08b5291659f0c130618a14780f075f981e947952dcaefc31dc -SIZE (monotone-1.0.tar.bz2) = 3588074 +SHA256 (monotone-1.1.tar.bz2) = f95cf60a22d4e461bec9d0e72f5d3609c9a4576fb1cc45f553d0202ce2e38c88 +SIZE (monotone-1.1.tar.bz2) = 3428699 diff -ruN /usr/ports/devel/monotone/files/patch-boost.diff ./files/patch-boost.diff --- /usr/ports/devel/monotone/files/patch-boost.diff 2014-02-14 15:47:58.000000000 +0100 +++ ./files/patch-boost.diff 1970-01-01 01:00:00.000000000 +0100 @@ -1,95 +0,0 @@ -# Add support for Boost 1.53+. -# Upstream commit: dfe4b51c8db852b7281a125aac6f3ddee34906f6 -============================================================ ---- src/database.cc 87efeeff2d3263ba98af684a4022f1897434ed2d -+++ src/database.cc 39ab2644b936e09a536b99ebd28b93f6e0d7c162 -@@ -92,7 +92,7 @@ using boost::shared_ptr; - using std::accumulate; - - using boost::shared_ptr; --using boost::shared_dynamic_cast; -+using boost::dynamic_pointer_cast; - using boost::lexical_cast; - using boost::get; - using boost::tuple; -@@ -3430,7 +3430,7 @@ database::encrypt_rsa(key_id const & pub - - shared_ptr x509_key(Botan::X509::load_key(pub_block)); - shared_ptr pub_key -- = shared_dynamic_cast(x509_key); -+ = dynamic_pointer_cast(x509_key); - if (!pub_key) - throw recoverable_failure(origin::system, - "Failed to get RSA encrypting key"); -@@ -3481,7 +3481,7 @@ database::check_signature(key_id const & - L(FL("building verifier for %d-byte pub key") % pub_block.size()); - shared_ptr x509_key(Botan::X509::load_key(pub_block)); - shared_ptr pub_key -- = boost::shared_dynamic_cast(x509_key); -+ = boost::dynamic_pointer_cast(x509_key); - - E(pub_key, id.inner().made_from, - F("failed to get RSA verifying key for %s") % id); -============================================================ ---- src/key_store.cc b7859345f7c665914d16357409bdff24a48b7996 -+++ src/key_store.cc 1ca13b7ee527bc2872d9fc325cf5ef327ca053c2 -@@ -43,7 +43,7 @@ using boost::shared_ptr; - - using boost::scoped_ptr; - using boost::shared_ptr; --using boost::shared_dynamic_cast; -+using boost::dynamic_pointer_cast; - - using Botan::RSA_PrivateKey; - using Botan::RSA_PublicKey; -@@ -641,7 +641,7 @@ key_store_state::decrypt_private_key(key - I(pkcs8_key); - - shared_ptr priv_key; -- priv_key = shared_dynamic_cast(pkcs8_key); -+ priv_key = dynamic_pointer_cast(pkcs8_key); - E(priv_key, origin::no_fault, - F("failed to extract RSA private key from PKCS#8 keypair")); - -@@ -879,7 +879,8 @@ key_store::make_signature(database & db, - L(FL("make_signature: building %d-byte pub key") % pub_block.size()); - shared_ptr x509_key = - shared_ptr(Botan::X509::load_key(pub_block)); -- shared_ptr pub_key = shared_dynamic_cast(x509_key); -+ shared_ptr pub_key = -+ dynamic_pointer_cast(x509_key); - - if (!pub_key) - throw recoverable_failure(origin::system, -@@ -1092,7 +1093,7 @@ key_store_state::migrate_old_key_pair - continue; - } - -- priv_key = shared_dynamic_cast(pkcs8_key); -+ priv_key = dynamic_pointer_cast(pkcs8_key); - I(priv_key); - - // now we can write out the new key -============================================================ ---- src/ssh_agent.cc 4a0dcab873559e934e41c5f220b5434d35600d9b -+++ src/ssh_agent.cc 6313ee3cdfca4112ba3957dc4a5f318472289dfa -@@ -32,7 +32,7 @@ using boost::shared_ptr; - using std::vector; - - using boost::shared_ptr; --using boost::shared_dynamic_cast; -+using boost::dynamic_pointer_cast; - - using Botan::RSA_PublicKey; - using Botan::RSA_PrivateKey; -@@ -391,7 +391,8 @@ ssh_agent::has_key(const keypair & key) - L(FL("has_key: building %d-byte pub key") % pub_block.size()); - shared_ptr x509_key = - shared_ptr(Botan::X509::load_key(pub_block)); -- shared_ptr pub_key = shared_dynamic_cast(x509_key); -+ shared_ptr pub_key = -+ dynamic_pointer_cast(x509_key); - - if (!pub_key) - throw recoverable_failure(origin::system, - diff -ruN /usr/ports/devel/monotone/files/patch-botan.diff ./files/patch-botan.diff --- /usr/ports/devel/monotone/files/patch-botan.diff 2013-05-22 20:09:24.000000000 +0200 +++ ./files/patch-botan.diff 1970-01-01 01:00:00.000000000 +0100 @@ -1,631 +0,0 @@ -============================================================ ---- src/database.cc 4c259f963c440fc95564dfec99b2f832f0bad643 -+++ src/database.cc 87efeeff2d3263ba98af684a4022f1897434ed2d -@@ -3425,9 +3425,8 @@ database::encrypt_rsa(key_id const & pub - rsa_pub_key pub; - get_key(pub_id, pub); - -- SecureVector pub_block; -- pub_block.set(reinterpret_cast(pub().data()), -- pub().size()); -+ SecureVector pub_block -+ (reinterpret_cast(pub().data()), pub().size()); - - shared_ptr x509_key(Botan::X509::load_key(pub_block)); - shared_ptr pub_key -@@ -3471,14 +3470,13 @@ database::check_signature(key_id const & - else - { - rsa_pub_key pub; -- SecureVector pub_block; - - if (!public_key_exists(id)) - return cert_unknown; - - get_key(id, pub); -- pub_block.set(reinterpret_cast(pub().data()), -- pub().size()); -+ SecureVector pub_block -+ (reinterpret_cast(pub().data()), pub().size()); - - L(FL("building verifier for %d-byte pub key") % pub_block.size()); - shared_ptr x509_key(Botan::X509::load_key(pub_block)); -============================================================ ---- src/gzip.cc e7c19bee910e3d421fd073933810ec52092b1d9b -+++ src/gzip.cc 9da41f6820cdf39707b22c716e3682e0fa0fd745 -@@ -110,7 +110,7 @@ Gzip_Compression::Gzip_Compression(u32bi - if(deflateInit2(&(zlib->stream), level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY) != Z_OK) - { - delete zlib; zlib = 0; -- throw Exception("Gzip_Compression: Memory allocation error"); -+ throw Memory_Exhaustion(); - } - } - -@@ -137,7 +137,7 @@ void Gzip_Compression::start_msg() - /************************************************* - * Compress Input with Gzip * - *************************************************/ --void Gzip_Compression::write(const byte input[], u32bit length) -+void Gzip_Compression::write(const byte input[], filter_length_t length) - { - - count += length; -@@ -152,7 +152,7 @@ void Gzip_Compression::write(const byte - zlib->stream.avail_out = buffer.size(); - int rc = deflate(&(zlib->stream), Z_NO_FLUSH); - if (rc != Z_OK && rc != Z_STREAM_END) -- throw Exception("Internal error in Gzip_Compression deflate."); -+ throw Invalid_State("Internal error in Gzip_Compression deflate."); - send(buffer.begin(), buffer.size() - zlib->stream.avail_out); - } - } -@@ -172,7 +172,7 @@ void Gzip_Compression::end_msg() - zlib->stream.avail_out = buffer.size(); - rc = deflate(&(zlib->stream), Z_FINISH); - if (rc != Z_OK && rc != Z_STREAM_END) -- throw Exception("Internal error in Gzip_Compression finishing deflate."); -+ throw Invalid_State("Internal error in Gzip_Compression finishing deflate."); - send(buffer.begin(), buffer.size() - zlib->stream.avail_out); - } - -@@ -228,7 +228,7 @@ Gzip_Decompression::Gzip_Decompression() - no_writes(true), pipe(new Hash_Filter("CRC32")), footer(0) - { - if (DEFAULT_BUFFERSIZE < sizeof(GZIP::GZIP_HEADER)) -- throw Exception("DEFAULT_BUFFERSIZE is too small"); -+ throw Decoding_Error("DEFAULT_BUFFERSIZE is too small"); - - zlib = new Zlib_Stream; - -@@ -237,7 +237,7 @@ Gzip_Decompression::Gzip_Decompression() - if(inflateInit2(&(zlib->stream), -15) != Z_OK) - { - delete zlib; zlib = 0; -- throw Exception("Gzip_Decompression: Memory allocation error"); -+ throw Memory_Exhaustion(); - } - } - -@@ -256,7 +256,7 @@ void Gzip_Decompression::start_msg() - void Gzip_Decompression::start_msg() - { - if (!no_writes) -- throw Exception("Gzip_Decompression: start_msg after already writing"); -+ throw Decoding_Error("Gzip_Decompression: start_msg after already writing"); - - pipe.start_msg(); - datacount = 0; -@@ -267,7 +267,7 @@ void Gzip_Decompression::start_msg() - /************************************************* - * Decompress Input with Gzip * - *************************************************/ --void Gzip_Decompression::write(const byte input[], u32bit length) -+void Gzip_Decompression::write(const byte input[], filter_length_t length) - { - if(length) no_writes = false; - -@@ -277,15 +277,16 @@ void Gzip_Decompression::write(const byt - u32bit eat_len = eat_footer(input, length); - input += eat_len; - length -= eat_len; -- if (length == 0) -- return; - } - -+ if (length == 0) -+ return; -+ - // Check the gzip header - if (pos < sizeof(GZIP::GZIP_HEADER)) - { -- u32bit len = std::min((u32bit)sizeof(GZIP::GZIP_HEADER)-pos, length); -- u32bit cmplen = len; -+ filter_length_t len = std::min((filter_length_t)sizeof(GZIP::GZIP_HEADER)-pos, length); -+ filter_length_t cmplen = len; - // The last byte is the OS flag - we don't care about that - if (pos + len - 1 >= GZIP::HEADER_POS_OS) - cmplen--; -@@ -317,8 +318,8 @@ void Gzip_Decompression::write(const byt - if(rc == Z_NEED_DICT) - throw Decoding_Error("Gzip_Decompression: Need preset dictionary"); - if(rc == Z_MEM_ERROR) -- throw Exception("Gzip_Decompression: Memory allocation error"); -- throw Exception("Gzip_Decompression: Unknown decompress error"); -+ throw Memory_Exhaustion(); -+ throw Decoding_Error("Gzip_Decompression: Unknown decompress error"); - } - send(buffer.begin(), buffer.size() - zlib->stream.avail_out); - pipe.write(buffer.begin(), buffer.size() - zlib->stream.avail_out); -@@ -346,8 +347,14 @@ u32bit Gzip_Decompression::eat_footer(co - if (footer.size() >= GZIP::FOOTER_LENGTH) - throw Decoding_Error("Gzip_Decompression: Data integrity error in footer"); - -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+ size_t eat_len = std::min(GZIP::FOOTER_LENGTH-footer.size(), -+ static_cast(length)); -+ footer += std::make_pair(input, eat_len); -+#else - u32bit eat_len = std::min(GZIP::FOOTER_LENGTH-footer.size(), length); - footer.append(input, eat_len); -+#endif - - if (footer.size() == GZIP::FOOTER_LENGTH) - { -@@ -364,7 +371,7 @@ void Gzip_Decompression::check_footer() - void Gzip_Decompression::check_footer() - { - if (footer.size() != GZIP::FOOTER_LENGTH) -- throw Exception("Gzip_Decompression: Error finalizing decompression"); -+ throw Decoding_Error("Gzip_Decompression: Error finalizing decompression"); - - pipe.end_msg(); - -@@ -377,7 +384,12 @@ void Gzip_Decompression::check_footer() - for (int i = 0; i < 4; i++) - buf[3-i] = tmpbuf[i]; - -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+ tmpbuf.resize(4); -+ tmpbuf.copy(footer.begin(), 4); -+#else - tmpbuf.set(footer.begin(), 4); -+#endif - if (buf != tmpbuf) - throw Decoding_Error("Gzip_Decompression: Data integrity error - CRC32 error"); - -@@ -400,7 +412,7 @@ void Gzip_Decompression::end_msg() - // read, clear() will reset no_writes - if(no_writes) return; - -- throw Exception("Gzip_Decompression: didn't find footer"); -+ throw Decoding_Error("Gzip_Decompression: didn't find footer"); - - } - -@@ -412,7 +424,11 @@ void Gzip_Decompression::clear() - no_writes = true; - inflateReset(&(zlib->stream)); - -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+ footer.clear(); -+#else - footer.destroy(); -+#endif - pos = 0; - datacount = 0; - } -============================================================ ---- src/gzip.hh 649dfc0b250954f39c0f73870f8bec3f32f7fa43 -+++ src/gzip.hh aff9da63bb22366bccf69c2d75ee7790406d2455 -@@ -7,11 +7,18 @@ - #ifndef BOTAN_EXT_GZIP_H__ - #define BOTAN_EXT_GZIP_H__ - -+#include - #include - #include - - namespace Botan { - -+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,4) -+// Only 1.9.4 and newer export the Memory_Exception. Give this gzip -+// implementation something compatible to work with. -+typedef std::bad_alloc Memory_Exhaustion; -+#endif -+ - namespace GZIP { - - /* A basic header - we only need to set the IDs and compression method */ -@@ -30,13 +37,19 @@ namespace GZIP { - - } - -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+typedef size_t filter_length_t; -+#else -+typedef u32bit filter_length_t; -+#endif -+ - /************************************************* - * Gzip Compression Filter * - *************************************************/ - class Gzip_Compression : public Filter - { - public: -- void write(const byte input[], u32bit length); -+ void write(const byte input[], filter_length_t length); - void start_msg(); - void end_msg(); - std::string name() const { return "Gzip_Compression"; } -@@ -60,7 +73,7 @@ class Gzip_Decompression : public Filter - class Gzip_Decompression : public Filter - { - public: -- void write(const byte input[], u32bit length); -+ void write(const byte input[], filter_length_t length); - void start_msg(); - void end_msg(); - std::string name() const { return "Gzip_Decompression"; } -============================================================ ---- src/key_packet.cc d1306df89dd684badac02c03744cd446381c07d3 -+++ src/key_packet.cc c97262d161b23c9640972188979669b3e95afe7b -@@ -106,8 +106,8 @@ namespace - void validate_public_key_data(string const & name, string const & keydata) const - { - string decoded = decode_base64_as(keydata, origin::user); -- Botan::SecureVector key_block; -- key_block.set(reinterpret_cast(decoded.c_str()), decoded.size()); -+ Botan::SecureVector key_block -+ (reinterpret_cast(decoded.c_str()), decoded.size()); - try - { - Botan::X509::load_key(key_block); -============================================================ ---- src/key_store.cc 64c4c4bed1fadc26b51207b9f61343f9dd7d3c6e -+++ src/key_store.cc b7859345f7c665914d16357409bdff24a48b7996 -@@ -572,13 +572,21 @@ key_store_state::decrypt_private_key(key - try // with empty passphrase - { - Botan::DataSource_Memory ds(kp.priv()); --#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+ pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), Dummy_UI())); -+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) - pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), "")); - #else - pkcs8_key.reset(Botan::PKCS8::load_key(ds, "")); - #endif - } -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+ catch (Passphrase_Required & e) -+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4) -+ catch (Botan::Invalid_Argument & e) -+#else - catch (Botan::Exception & e) -+#endif - { - L(FL("failed to load key with no passphrase: %s") % e.what()); - -@@ -605,13 +613,18 @@ key_store_state::decrypt_private_key(key - { - Botan::DataSource_Memory ds(kp.priv()); - #if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) -- pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), phrase())); -+ pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), -+ phrase())); - #else - pkcs8_key.reset(Botan::PKCS8::load_key(ds, phrase())); - #endif - break; - } -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4) -+ catch (Botan::Invalid_Argument) -+#else - catch (Botan::Exception & e) -+#endif - { - cycles++; - L(FL("decrypt_private_key: failure %d to load encrypted key: %s") -@@ -822,10 +835,14 @@ key_store::decrypt_rsa(key_id const & id - plaintext = string(reinterpret_cast(plain.begin()), - plain.size()); - } -- catch (Botan::Exception & ex) -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4) -+ catch (std::exception & e) -+#else -+ catch (Botan::Exception & e) -+#endif - { - E(false, ciphertext.made_from, -- F("Botan error decrypting data: '%s'") % ex.what()); -+ F("Botan error decrypting data: '%s'") % e.what()); - } - } - -@@ -856,9 +873,9 @@ key_store::make_signature(database & db, - { - if (agent.connected()) { - //grab the monotone public key as an RSA_PublicKey -- SecureVector pub_block; -- pub_block.set(reinterpret_cast(key.pub().data()), -- key.pub().size()); -+ SecureVector pub_block -+ (reinterpret_cast(key.pub().data()), -+ key.pub().size()); - L(FL("make_signature: building %d-byte pub key") % pub_block.size()); - shared_ptr x509_key = - shared_ptr(Botan::X509::load_key(pub_block)); -@@ -1031,8 +1048,14 @@ key_store_state::migrate_old_key_pair - for (;;) - try - { -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+ arc4_key.resize(phrase().size()); -+ arc4_key.copy(reinterpret_cast(phrase().data()), -+ phrase().size()); -+#else - arc4_key.set(reinterpret_cast(phrase().data()), - phrase().size()); -+#endif - - Pipe arc4_decryptor(get_cipher("ARC4", arc4_key, Botan::DECRYPTION)); - -@@ -1051,7 +1074,11 @@ key_store_state::migrate_old_key_pair - #endif - break; - } -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4) -+ catch (Botan::Invalid_Argument & e) -+#else - catch (Botan::Exception & e) -+#endif - { - L(FL("migrate_old_key_pair: failure %d to load old private key: %s") - % cycles % e.what()); -============================================================ ---- src/monotone.cc a25ecdd170a601db798b63a60add7681609a34c4 -+++ src/monotone.cc 764bc9ca406b41d21efd552a0d810bc2849e0588 -@@ -156,27 +156,53 @@ cpp_main(int argc, char ** argv) - E(linked_botan_version != BOTAN_VERSION_CODE_FOR(1,7,14), origin::system, - F("monotone does not support Botan 1.7.14")); - --#if BOTAN_VERSION_CODE <= BOTAN_VERSION_CODE_FOR(1,7,6) -+ // In Botan 1.9.9, the DataSink_Stream cannot be instantiated per -+ // se. As 1.10.1 is already out, let's simply disable support for -+ // that specific (testing) version of botan. -+ E(linked_botan_version != BOTAN_VERSION_CODE_FOR(1,9,9), origin::system, -+ F("monotone does not support Botan 1.9.9")); -+ -+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,7,7) -+ // motonote binary compiled against botan younger than 1.7.7 - E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,6,3), origin::system, - F("this monotone binary requires Botan 1.6.3 or newer")); -- E(linked_botan_version <= BOTAN_VERSION_CODE_FOR(1,7,6), origin::system, -- F("this monotone binary does not work with Botan newer than 1.7.6")); --#elif BOTAN_VERSION_CODE <= BOTAN_VERSION_CODE_FOR(1,7,22) -- E(linked_botan_version > BOTAN_VERSION_CODE_FOR(1,7,6), origin::system, -+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,7,7), origin::system, -+ F("this monotone binary does not work with Botan 1.7.7 or newer")); -+ -+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,7,22) -+ // motonote binary compiled against botan 1.7.7 - 1.7.21 -+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,7,7), origin::system, - F("this monotone binary requires Botan 1.7.7 or newer")); -- // While compiling against 1.7.22 or newer is recommended, because -- // it enables new features of Botan, the monotone binary compiled -- // against Botan 1.7.21 and before should still work with newer Botan -- // versions, including all of the stable branch 1.8.x. -- E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,0), origin::system, -- F("this monotone binary does not work with Botan 1.9.x")); --#else -- E(linked_botan_version > BOTAN_VERSION_CODE_FOR(1,7,22), origin::system, -+ // While compiling against 1.7.22 or newer is recommended, because it -+ // enables new features of Botan, the monotone binary compiled against -+ // Botan 1.7.21 and before should still work with newer Botan version, -+ // including all of the stable branch 1.8.x, up to and including -+ // 1.9.3. -+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,4), origin::system, -+ F("this monotone binary does not work with Botan 1.9.4 or newer")); -+ -+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,4) -+ // motonote binary compiled against botan 1.7.22 - 1.9.3 -+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,7,22), origin::system, - F("this monotone binary requires Botan 1.7.22 or newer")); -- E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,0), origin::system, -- F("this monotone binary does not work with Botan 1.9.x")); -+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,4), origin::system, -+ F("this monotone binary does not work with Botan 1.9.4 or newer")); -+ -+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,11) -+ // motonote binary compiled against botan 1.9.4 - 1.9.10 -+#pragma message ( "The resulting monotone binary won't be able to run with any stable release of botan." ) -+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,9,4), origin::system, -+ F("this monotone binary requires Botan 1.9.4 or newer")); -+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,11), origin::system, -+ F("this monotone binary does not work with Botan 1.9.11 or newer")); -+ -+#else -+ // motonote binary compiled against botan 1.9.11 and newer -+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,9,11), origin::system, -+ F("this monotone binary requires Botan 1.9.11 or newer")); - #endif - -+ - app_state app; - try - { -============================================================ ---- src/packet.cc f61360ed2524fdf53411bd24d022a2a3c9e6e9c7 -+++ src/packet.cc 571ff6eae1d269a146da74f2730b70376957d3bb -@@ -156,8 +156,8 @@ namespace - void validate_public_key_data(string const & name, string const & keydata) const - { - string decoded = decode_base64_as(keydata, origin::user); -- Botan::SecureVector key_block; -- key_block.set(reinterpret_cast(decoded.c_str()), decoded.size()); -+ Botan::SecureVector key_block -+ (reinterpret_cast(decoded.c_str()), decoded.size()); - try - { - Botan::X509::load_key(key_block); -@@ -175,7 +175,9 @@ namespace - Botan::DataSource_Memory ds(decoded); - try - { --#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+ Botan::PKCS8::load_key(ds, lazy_rng::get(), Dummy_UI()); -+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) - Botan::PKCS8::load_key(ds, lazy_rng::get(), string()); - #else - Botan::PKCS8::load_key(ds, string()); -@@ -189,7 +191,11 @@ namespace - } - // since we do not want to prompt for a password to decode it finally, - // we ignore all other exceptions -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+ catch (Passphrase_Required) {} -+#else - catch (Botan::Invalid_Argument) {} -+#endif - } - void validate_certname(string const & cn) const - { -@@ -460,8 +466,16 @@ read_packets(istream & in, packet_consum - return count; - } - -+// Dummy User_Interface implementation for Botan -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+std::string -+Dummy_UI::get_passphrase(const std::string &, const std::string &, -+ Botan::User_Interface::UI_Result&) const -+{ -+ throw Passphrase_Required("Passphrase required"); -+} -+#endif - -- - // Local Variables: - // mode: C++ - // fill-column: 76 -============================================================ ---- src/packet.hh 0a224e6e92f244e2c3e9a5cdb935eb8613d7e85b -+++ src/packet.hh 9c43d30145f0292d6ceda5e717e366fdead5a4d6 -@@ -10,6 +10,10 @@ - #ifndef __PACKET_HH__ - #define __PACKET_HH__ - -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+#include -+#endif -+ - #include "vocab.hh" - - struct cert; -@@ -84,8 +88,23 @@ size_t read_packets(std::istream & in, p - - size_t read_packets(std::istream & in, packet_consumer & cons); - -+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) -+// A helper class implementing Botan::User_Interface - which doesn't really -+// interface with the user, but provides the necessary plumbing for Botan. -+// -+// See Botan commit 2d09d7d0cd4bd0e7155d001dd65a4f29103b158c -+typedef std::runtime_error Passphrase_Required; -+ -+class Dummy_UI : public Botan::User_Interface -+{ -+public: -+ virtual std::string get_passphrase(const std::string &, const std::string &, -+ Botan::User_Interface::UI_Result &) const; -+}; - #endif - -+#endif -+ - // Local Variables: - // mode: C++ - // fill-column: 76 -============================================================ ---- src/sha1.cc 5e1aa972d7c7d66e06320b039989652b830dcd75 -+++ src/sha1.cc 42e48b22fd88b25e0d38d4f91e1f13f8a83c7120 -@@ -50,9 +50,12 @@ CMD_HIDDEN(benchmark_sha1, "benchmark_sh - Botan::Default_Benchmark_Timer timer; - std::map results = - Botan::algorithm_benchmark("SHA-1", milliseconds, timer, rng, af); -+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,11) -+ std::map results = -+ Botan::algorithm_benchmark("SHA-1", milliseconds, rng, af); - #else - std::map results = -- Botan::algorithm_benchmark("SHA-1", milliseconds, rng, af); -+ Botan::algorithm_benchmark("SHA-1", af, rng, milliseconds, 16); - #endif - - for(std::map::const_iterator i = results.begin(); -============================================================ ---- src/ssh_agent.cc 6d188e7012a0b82f782563b09bbd7adf3f70cf75 -+++ src/ssh_agent.cc 4a0dcab873559e934e41c5f220b5434d35600d9b -@@ -385,9 +385,9 @@ ssh_agent::has_key(const keypair & key) - ssh_agent::has_key(const keypair & key) - { - //grab the monotone public key as an RSA_PublicKey -- SecureVector pub_block; -- pub_block.set(reinterpret_cast((key.pub)().data()), -- (key.pub)().size()); -+ SecureVector pub_block -+ (reinterpret_cast((key.pub)().data()), -+ (key.pub)().size()); - L(FL("has_key: building %d-byte pub key") % pub_block.size()); - shared_ptr x509_key = - shared_ptr(Botan::X509::load_key(pub_block)); -============================================================ ---- src/transforms.cc cdfb6854ef4992faba21074145f3c8269b845b11 -+++ src/transforms.cc b99278ffe95c0081bf4986bc74d3699c37a52948 -@@ -53,15 +53,16 @@ using Botan::Hash_Filter; - // paradigm "must" be used. this program is intended for source code - // control and I make no bones about it. - --NORETURN(static inline void error_in_transform(Botan::Exception & e)); -+NORETURN(static inline void error_in_transform(std::exception & e)); - - static inline void --error_in_transform(Botan::Exception & e, origin::type caused_by) -+error_in_transform(std::exception & e, origin::type caused_by) - { - // these classes can all indicate data corruption - if (typeid(e) == typeid(Botan::Encoding_Error) - || typeid(e) == typeid(Botan::Decoding_Error) - || typeid(e) == typeid(Botan::Stream_IO_Error) -+ || typeid(e) == typeid(Botan::Invalid_Argument) - || typeid(e) == typeid(Botan::Integrity_Failure)) - { - // clean up the what() string a little: throw away the -@@ -107,7 +108,7 @@ error_in_transform(Botan::Exception & e, - pipe->process_msg(in); \ - out = pipe->read_all_as_string(Pipe::LAST_MESSAGE); \ - } \ -- catch (Botan::Exception & e) \ -+ catch (std::exception & e) \ - { \ - pipe.reset(new Pipe(new T(carg))); \ - error_in_transform(e, made_from); \ -@@ -173,7 +174,7 @@ template<> string xform - tmp = pipe->read_all_as_string(Pipe::LAST_MESSAGE); - out = base64< gzip >(tmp, in.made_from); - } -- catch (Botan::Exception & e) -+ catch (std::exception & e) - { - pipe.reset(new Pipe(new Gzip_Compression, - new Base64_Encoder)); -@@ -237,7 +238,7 @@ void unpack(base64< gzip > const & in - pipe->process_msg(in()); - out = T(pipe->read_all_as_string(Pipe::LAST_MESSAGE), in.made_from); - } -- catch (Botan::Exception & e) -+ catch (std::exception & e) - { - pipe.reset(new Pipe(new Base64_Decoder, - new Gzip_Decompression)); -@@ -264,7 +265,7 @@ calculate_ident(data const & dat, - p->process_msg(dat()); - ident = id(p->read_all_as_string(Pipe::LAST_MESSAGE), dat.made_from); - } -- catch (Botan::Exception & e) -+ catch (std::exception & e) - { - p.reset(new Pipe(new Hash_Filter("SHA-160"))); - error_in_transform(e, dat.made_from); diff -ruN /usr/ports/devel/monotone/files/patch-configure ./files/patch-configure --- /usr/ports/devel/monotone/files/patch-configure 2014-01-25 19:06:08.000000000 +0100 +++ ./files/patch-configure 1970-01-01 01:00:00.000000000 +0100 @@ -1,13 +0,0 @@ ---- configure.orig 2014-01-22 00:48:12.855108408 +0100 -+++ configure 2014-01-22 00:48:54.244105202 +0100 -@@ -4594,9 +4594,7 @@ fi - - # The dummy "pkg-config" package is guaranteed to exist. - if test -n "$PKG_CONFIG"; then -- mtn__full_pkg_config_path=`$PKG_CONFIG --debug pkg-config 2>&1 | -- sed -ne "/^Scanning directory '/{; s///; s/'$//; p;}" | -- tr "$as_nl" ':' | sed 's/:$//'` -+ mtn__full_pkg_config_path=`$PKG_CONFIG --variable=pc_path pkg-config 2>&1 | sed 's/:.*$//'` - #AC_MSG_NOTICE([detected pkg-config path: $mtn__full_pkg_config_path]) - fi - diff -ruN /usr/ports/devel/monotone/files/patch-src_automate_reader.hh ./files/patch-src_automate_reader.hh --- /usr/ports/devel/monotone/files/patch-src_automate_reader.hh 2014-01-25 19:06:08.000000000 +0100 +++ ./files/patch-src_automate_reader.hh 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +0,0 @@ ---- src/automate_reader.hh.orig 2014-01-22 01:04:27.675051506 +0100 -+++ src/automate_reader.hh 2014-01-22 01:04:41.682040341 +0100 -@@ -13,6 +13,7 @@ - #define __AUTOMATE_READER_HH__ - - #include -+#include - - class automate_reader - { --- monotone-1.1.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted: _______________________________________________ freebsd-ports-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports-bugs To unsubscribe, send any mail to "freebsd-ports-bugs-unsubscribe@freebsd.org"