Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=38682e38f4a1ab047fe5acfdb606520fb8e68ac0

commit 38682e38f4a1ab047fe5acfdb606520fb8e68ac0
Author: Pingax <pin...@frugalware.fr>
Date:   Wed Nov 16 16:43:18 2011 +0100

monotone-1.0-2-i686
* Rebuilt with botan-1.10.1
* Added patches to fix build with botan-1.10.1

diff --git a/source/devel-extra/monotone/FrugalBuild 
b/source/devel-extra/monotone/FrugalBuild
index f607f11..813ddb5 100644
--- a/source/devel-extra/monotone/FrugalBuild
+++ b/source/devel-extra/monotone/FrugalBuild
@@ -4,16 +4,21 @@

pkgname=monotone
pkgver=1.0
-pkgrel=1
+pkgrel=2
pkgdesc="Another distributed version (revision) control system"
url="http://monotone.ca";
-depends=('libstdc++' 'libboost>=1.46.1' 'lua' 'botan')
+depends=('libstdc++' 'libboost>=1.46.1' 'lua' 'botan>=1.10.1')
makedepends=('boost' 'cvs')
groups=('devel-extra')
archs=('i686' 'x86_64')
up2date="lynx -dump $url|grep 'Latest'|sed 's/.* \([0-9\.].\)/\1/'"
-source=($url/downloads/$pkgver/$pkgname-$pkgver.tar.bz2)
-sha1sums=('aac556bb26d92910b74b65450a0be6c5045e2052')
+source=($url/downloads/$pkgver/$pkgname-$pkgver.tar.bz2 \
+       botan-1.10.1-build.patch fix-runtime.patch \
+       rcs_file.patch)
+sha1sums=('aac556bb26d92910b74b65450a0be6c5045e2052' \
+          '98347521d6da7f66f20d3d051b9dc59397843250' \
+          'acba8edf4822fe806701ea2ff71f9232f013235c' \
+          '1d9ba3a1fd39f5feb144eefb3e327778206abc04')

build()
{
diff --git a/source/devel-extra/monotone/botan-1.10.1-build.patch 
b/source/devel-extra/monotone/botan-1.10.1-build.patch
new file mode 100644
index 0000000..56fdebc
--- /dev/null
+++ b/source/devel-extra/monotone/botan-1.10.1-build.patch
@@ -0,0 +1,272 @@
+#
+# old_revision [7cbb20501714be7f25f30734da82d41c7ac427ca]
+#
+# patch "src/database.cc"
+#  from [4c259f963c440fc95564dfec99b2f832f0bad643]
+#    to [87efeeff2d3263ba98af684a4022f1897434ed2d]
+#
+# patch "src/gzip.cc"
+#  from [e7c19bee910e3d421fd073933810ec52092b1d9b]
+#    to [bab290412cff6031b2d3bf9d1439a08499d39640]
+#
+# patch "src/gzip.hh"
+#  from [649dfc0b250954f39c0f73870f8bec3f32f7fa43]
+#    to [f462dfc1df71ae1e9a8203606fd29d9e0eda9b2a]
+#
+# patch "src/key_packet.cc"
+#  from [d1306df89dd684badac02c03744cd446381c07d3]
+#    to [c97262d161b23c9640972188979669b3e95afe7b]
+#
+# patch "src/key_store.cc"
+#  from [64c4c4bed1fadc26b51207b9f61343f9dd7d3c6e]
+#    to [6f2f1e0a60f5ee7d322539ca7a3c0acdc69617d7]
+#
+# patch "src/packet.cc"
+#  from [f61360ed2524fdf53411bd24d022a2a3c9e6e9c7]
+#    to [58e2b3070821fb540fc8fe8db92564579a25ce88]
+#
+# patch "src/sha1.cc"
+#  from [5e1aa972d7c7d66e06320b039989652b830dcd75]
+#    to [42e48b22fd88b25e0d38d4f91e1f13f8a83c7120]
+#
+# patch "src/ssh_agent.cc"
+#  from [6d188e7012a0b82f782563b09bbd7adf3f70cf75]
+#    to [4a0dcab873559e934e41c5f220b5434d35600d9b]
+#
+============================================================
+--- 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<Botan::byte> pub_block;
+-  pub_block.set(reinterpret_cast<Botan::byte const *>(pub().data()),
+-                pub().size());
++  SecureVector<Botan::byte> pub_block
++    (reinterpret_cast<Botan::byte const *>(pub().data()), pub().size());
+
+   shared_ptr<X509_PublicKey> x509_key(Botan::X509::load_key(pub_block));
+   shared_ptr<RSA_PublicKey> pub_key
+@@ -3471,14 +3470,13 @@ database::check_signature(key_id const &
+   else
+     {
+       rsa_pub_key pub;
+-      SecureVector<Botan::byte> pub_block;
+
+       if (!public_key_exists(id))
+         return cert_unknown;
+
+       get_key(id, pub);
+-      pub_block.set(reinterpret_cast<Botan::byte const *>(pub().data()),
+-                    pub().size());
++      SecureVector<Botan::byte> pub_block
++        (reinterpret_cast<Botan::byte const *>(pub().data()), pub().size());
+
+       L(FL("building verifier for %d-byte pub key") % pub_block.size());
+       shared_ptr<X509_PublicKey> x509_key(Botan::X509::load_key(pub_block));
+============================================================
+--- src/packet.cc      f61360ed2524fdf53411bd24d022a2a3c9e6e9c7
++++ src/packet.cc      58e2b3070821fb540fc8fe8db92564579a25ce88
+@@ -156,8 +156,8 @@ namespace
+     void validate_public_key_data(string const & name, string const & 
keydata) const
+     {
+       string decoded = decode_base64_as<string>(keydata, origin::user);
+-      Botan::SecureVector<Botan::byte> key_block;
+-      key_block.set(reinterpret_cast<Botan::byte const *>(decoded.c_str()), 
decoded.size());
++      Botan::SecureVector<Botan::byte> key_block
++        (reinterpret_cast<Botan::byte const *>(decoded.c_str()), 
decoded.size());
+       try
+         {
+           Botan::X509::load_key(key_block);
+============================================================
+--- src/key_store.cc   64c4c4bed1fadc26b51207b9f61343f9dd7d3c6e
++++ src/key_store.cc   6f2f1e0a60f5ee7d322539ca7a3c0acdc69617d7
+@@ -856,9 +856,9 @@ key_store::make_signature(database & db,
+     {
+       if (agent.connected()) {
+         //grab the monotone public key as an RSA_PublicKey
+-        SecureVector<Botan::byte> pub_block;
+-        pub_block.set(reinterpret_cast<Botan::byte const *>(key.pub().data()),
+-                      key.pub().size());
++        SecureVector<Botan::byte> pub_block
++          (reinterpret_cast<Botan::byte const *>(key.pub().data()),
++           key.pub().size());
+         L(FL("make_signature: building %d-byte pub key") % pub_block.size());
+         shared_ptr<X509_PublicKey> x509_key =
+           shared_ptr<X509_PublicKey>(Botan::X509::load_key(pub_block));
+@@ -1031,8 +1031,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<Botan::byte const *>(phrase().data()),
++                      phrase().size());
++#else
+         arc4_key.set(reinterpret_cast<Botan::byte const *>(phrase().data()),
+                      phrase().size());
++#endif
+
+         Pipe arc4_decryptor(get_cipher("ARC4", arc4_key, Botan::DECRYPTION));
+
+============================================================
+--- 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<std::string, double> results =
+     Botan::algorithm_benchmark("SHA-1",  milliseconds, timer, rng, af);
++#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,11)
++  std::map<std::string, double> results =
++    Botan::algorithm_benchmark("SHA-1",  milliseconds, rng, af);
+ #else
+   std::map<std::string, double> results =
+-    Botan::algorithm_benchmark("SHA-1",  milliseconds, rng, af);
++    Botan::algorithm_benchmark("SHA-1",  af, rng, milliseconds, 16);
+ #endif
+
+   for(std::map<std::string, double>::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<Botan::byte> pub_block;
+-  pub_block.set(reinterpret_cast<Botan::byte const *>((key.pub)().data()),
+-                (key.pub)().size());
++  SecureVector<Botan::byte> pub_block
++    (reinterpret_cast<Botan::byte const *>((key.pub)().data()),
++     (key.pub)().size());
+   L(FL("has_key: building %d-byte pub key") % pub_block.size());
+   shared_ptr<X509_PublicKey> x509_key =
+     shared_ptr<X509_PublicKey>(Botan::X509::load_key(pub_block));
+============================================================
+--- src/gzip.cc        e7c19bee910e3d421fd073933810ec52092b1d9b
++++ src/gzip.cc        bab290412cff6031b2d3bf9d1439a08499d39640
+@@ -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;
+@@ -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;
+
+@@ -284,8 +284,8 @@ void Gzip_Decompression::write(const byt
+    // 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--;
+@@ -346,8 +346,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<size_t>(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)
+          {
+@@ -377,7 +383,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");
+
+@@ -412,7 +423,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        f462dfc1df71ae1e9a8203606fd29d9e0eda9b2a
+@@ -7,6 +7,7 @@
+ #ifndef BOTAN_EXT_GZIP_H__
+ #define BOTAN_EXT_GZIP_H__
+
++#include <botan/version.h>
+ #include <botan/filter.h>
+ #include <botan/pipe.h>
+
+@@ -30,13 +31,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 +67,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<string>(keydata, origin::user);
+-      Botan::SecureVector<Botan::byte> key_block;
+-      key_block.set(reinterpret_cast<Botan::byte const *>(decoded.c_str()), 
decoded.size());
++      Botan::SecureVector<Botan::byte> key_block
++        (reinterpret_cast<Botan::byte const *>(decoded.c_str()), 
decoded.size());
+       try
+         {
+           Botan::X509::load_key(key_block);
diff --git a/source/devel-extra/monotone/fix-runtime.patch 
b/source/devel-extra/monotone/fix-runtime.patch
new file mode 100644
index 0000000..a98a6a9
--- /dev/null
+++ b/source/devel-extra/monotone/fix-runtime.patch
@@ -0,0 +1,21 @@
+============================================================
+--- src/monotone.cc    a25ecdd170a601db798b63a60add7681609a34c4
++++ src/monotone.cc    2c5f57762bc687a90f75e732f39d2181fc50bd6d
+@@ -170,11 +170,16 @@ cpp_main(int argc, char ** argv)
+       // 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
++#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,11)
+       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"));
++#else
++      E(linked_botan_version > BOTAN_VERSION_CODE_FOR(1,9,11), origin::system,
++        F("this monotone binary requires Botan 1.9.11 or newer"));
++      E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,11,0), origin::system,
++        F("this monotone binary does not work with Botan 1.11.x"));
+ #endif
+
+       app_state app;
diff --git a/source/devel-extra/monotone/rcs_file.patch 
b/source/devel-extra/monotone/rcs_file.patch
new file mode 100644
index 0000000..0acb31c
--- /dev/null
+++ b/source/devel-extra/monotone/rcs_file.patch
@@ -0,0 +1,148 @@
+--- src/rcs_file.cc.orig       2011-03-26 07:41:01.000000000 +0100
++++ src/rcs_file.cc    2011-11-16 16:36:26.006488378 +0100
+@@ -42,12 +42,12 @@
+
+ #ifdef HAVE_MMAP
+ struct
+-file_handle
++rcs_file_handle
+ {
+   string const & filename;
+   off_t length;
+   int fd;
+-  file_handle(string const & fn) :
++  rcs_file_handle(string const & fn) :
+     filename(fn),
+     length(0),
+     fd(-1)
+@@ -60,13 +60,13 @@
+       if (fd == -1)
+         throw oops("open of " + filename + " failed");
+     }
+-  ~file_handle()
++  ~rcs_file_handle()
+     {
+       if (close(fd) == -1)
+         throw oops("close of " + filename + " failed");
+     }
+ };
+-struct file_source
++struct rcs_file_source
+ {
+   string const & filename;
+   int fd;
+@@ -91,7 +91,7 @@
+       ++pos;
+     return good();
+   }
+-  file_source(string const & fn,
++  rcs_file_source(string const & fn,
+               int f,
+               off_t len) :
+     filename(fn),
+@@ -104,7 +104,7 @@
+     if (mapping == MAP_FAILED)
+       throw oops("mmap of " + filename + " failed");
+   }
+-  ~file_source()
++  ~rcs_file_source()
+   {
+     if (munmap(mapping, length) == -1)
+       throw oops("munmapping " + filename + " failed, after reading RCS 
file");
+@@ -112,12 +112,12 @@
+ };
+ #elif defined(WIN32)
+ struct
+-file_handle
++rcs_file_handle
+ {
+   string const & filename;
+   off_t length;
+   HANDLE fd;
+-  file_handle(string const & fn) :
++  rcs_file_handle(string const & fn) :
+     filename(fn),
+     length(0),
+     fd(NULL)
+@@ -134,7 +134,7 @@
+       if (fd == NULL)
+         throw oops("open of " + filename + " failed");
+     }
+-  ~file_handle()
++  ~rcs_file_handle()
+     {
+       if (CloseHandle(fd)==0)
+         throw oops("close of " + filename + " failed");
+@@ -142,7 +142,7 @@
+ };
+
+ struct
+-file_source
++rcs_file_source
+ {
+   string const & filename;
+   HANDLE fd,map;
+@@ -167,7 +167,7 @@
+       ++pos;
+     return good();
+   }
+-  file_source(string const & fn,
++  rcs_file_source(string const & fn,
+               HANDLE f,
+               off_t len) :
+     filename(fn),
+@@ -183,7 +183,7 @@
+     if (mapping==NULL)
+       throw oops("MapViewOfFile of " + filename + " failed");
+   }
+-  ~file_source()
++  ~rcs_file_source()
+   {
+     if (UnmapViewOfFile(mapping)==0)
+       throw oops("UnmapViewOfFile of " + filename + " failed");
+@@ -193,7 +193,7 @@
+ };
+ #else
+ // no mmap at all
+-typedef istream file_source;
++typedef istream rcs_file_source;
+ #endif
+
+ typedef enum
+@@ -220,7 +220,7 @@
+ }
+
+ static token_type
+-get_token(file_source & ist,
++get_token(rcs_file_source & ist,
+           string & str,
+           size_t & line,
+           size_t & col)
+@@ -303,14 +303,14 @@
+
+ struct parser
+ {
+-  file_source & ist;
++  rcs_file_source & ist;
+   rcs_file & r;
+   string token;
+   token_type ttype;
+
+   size_t line, col;
+
+-  parser(file_source & s,
++  parser(rcs_file_source & s,
+          rcs_file & r)
+     : ist(s), r(r), line(1), col(1)
+   {}
+@@ -489,8 +489,8 @@
+ parse_rcs_file(string const & filename, rcs_file & r)
+ {
+ #if defined(HAVE_MMAP) || defined(WIN32)
+-      file_handle handle(filename);
+-      file_source ifs(filename, handle.fd, handle.length);
++      rcs_file_handle handle(filename);
++      rcs_file_source ifs(filename, handle.fd, handle.length);
+ #else
+       ifstream ifs(filename.c_str());
+       ifs.unsetf(ios_base::skipws);
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to