diff options
author | Robin Gloster <mail@glob.in> | 2017-03-19 15:54:54 +0100 |
---|---|---|
committer | Robin Gloster <mail@glob.in> | 2017-03-19 15:55:19 +0100 |
commit | 9c7b771a6e2cd72e2285d8402a7c15fd21a94347 (patch) | |
tree | c9575562f48d9f36075d5b494e2e00eeacf39867 /pkgs/applications/version-management/rapidsvn | |
parent | b51093a75e979990c5869030c738a1afba49ae72 (diff) |
rapidsvn: fix build
Diffstat (limited to 'pkgs/applications/version-management/rapidsvn')
-rw-r--r-- | pkgs/applications/version-management/rapidsvn/default.nix | 15 | ||||
-rw-r--r-- | pkgs/applications/version-management/rapidsvn/fix-build.patch | 122 |
2 files changed, 132 insertions, 5 deletions
diff --git a/pkgs/applications/version-management/rapidsvn/default.nix b/pkgs/applications/version-management/rapidsvn/default.nix index 9397aa8a1e19..7b3c7aafa44e 100644 --- a/pkgs/applications/version-management/rapidsvn/default.nix +++ b/pkgs/applications/version-management/rapidsvn/default.nix @@ -1,11 +1,12 @@ -{stdenv, fetchurl, wxGTK, subversion, apr, aprutil, python}: +{ stdenv, fetchurl, fetchpatch, wxGTK, subversion, apr, aprutil, python }: -stdenv.mkDerivation { - name = "rapidsvn-0.12.0-1"; +stdenv.mkDerivation rec { + name = "rapidsvn-${version}"; + version = "0.12.1"; src = fetchurl { - url = http://www.rapidsvn.org/download/release/0.12/rapidsvn-0.12.0-1.tar.gz; - sha256 = "1i3afjmx99ljw1bj54q47fs0g1q9dmxxvr4ciq7ncp5s52shszgg"; + url = "http://www.rapidsvn.org/download/release/${version}/${name}.tar.gz"; + sha256 = "1bmcqjc12k5w0z40k7fkk8iysqv4fw33i80gvcmbakby3d4d4i4p"; }; buildInputs = [ wxGTK subversion apr aprutil python ]; @@ -13,6 +14,10 @@ stdenv.mkDerivation { configureFlags = [ "--with-svn-include=${subversion.dev}/include" "--with-svn-lib=${subversion.out}/lib" ]; + patches = [ + ./fix-build.patch + ]; + meta = { description = "Multi-platform GUI front-end for the Subversion revision system"; homepage = http://rapidsvn.tigris.org/; diff --git a/pkgs/applications/version-management/rapidsvn/fix-build.patch b/pkgs/applications/version-management/rapidsvn/fix-build.patch new file mode 100644 index 000000000000..ca4bc394c2c6 --- /dev/null +++ b/pkgs/applications/version-management/rapidsvn/fix-build.patch @@ -0,0 +1,122 @@ +--- a/src/svncpp/client_ls.cpp ++++ b/src/svncpp/client_ls.cpp +@@ -25,6 +25,7 @@ + #include "svn_client.h" + #include "svn_path.h" + #include "svn_sorts.h" ++#include "svn_version.h" + //#include "svn_utf.h" + + // svncpp +@@ -35,6 +36,7 @@ + #include "m_is_empty.hpp" + + ++#if SVN_VER_MAJOR == 1 && SVN_VER_MINOR < 8 + static int + compare_items_as_paths(const svn_sort__item_t *a, const svn_sort__item_t *b) + { +@@ -84,6 +86,72 @@ namespace svn + } + } + ++#else ++ ++#include <algorithm> ++ ++static svn_error_t* store_entry( ++ void *baton, ++ const char *path, ++ const svn_dirent_t *dirent, ++ const svn_lock_t *, ++ const char *abs_path, ++ const char *, ++ const char *, ++ apr_pool_t *scratch_pool) ++{ ++ svn::DirEntries *entries = reinterpret_cast<svn::DirEntries*>(baton); ++ if (path[0] == '\0') { ++ if (dirent->kind == svn_node_file) { ++ // for compatibility with svn_client_ls behaviour, listing a file ++ // stores that file name ++ entries->push_back(svn::DirEntry(svn_path_basename(abs_path, scratch_pool), dirent)); ++ } ++ } else { ++ entries->push_back(svn::DirEntry(path, dirent)); ++ } ++ return SVN_NO_ERROR; ++} ++ ++static bool sort_by_path(svn::DirEntry const& a, svn::DirEntry const& b) ++{ ++ return svn_path_compare_paths(a.name(), b.name()) < 0; ++} ++ ++namespace svn ++{ ++ DirEntries ++ Client::list(const char * pathOrUrl, ++ svn_opt_revision_t * revision, ++ bool recurse) throw(ClientException) ++ { ++ Pool pool; ++ DirEntries entries; ++ ++ svn_error_t * error = ++ svn_client_list3(pathOrUrl, ++ revision, ++ revision, ++ SVN_DEPTH_INFINITY_OR_IMMEDIATES(recurse), ++ SVN_DIRENT_ALL, ++ FALSE, // fetch locks ++ FALSE, // include externals ++ &store_entry, ++ &entries, ++ *m_context, ++ pool); ++ ++ if (error != SVN_NO_ERROR) ++ throw ClientException(error); ++ ++ std::sort(entries.begin(), entries.end(), &sort_by_path); ++ ++ return entries; ++ } ++} ++ ++#endif ++ + /* ----------------------------------------------------------------- + * local variables: + * eval: (load-file "../../rapidsvn-dev.el") +--- a/src/svncpp/dirent.cpp 2017-03-19 15:48:58.956827337 +0100 ++++ b/src/svncpp/dirent.cpp 2017-03-19 15:50:19.111527279 +0100 +@@ -47,7 +47,7 @@ + { + } + +- Data(const char * _name, svn_dirent_t * dirEntry) ++ Data(const char * _name, const svn_dirent_t * dirEntry) + : name(_name), kind(dirEntry->kind), size(dirEntry->size), + hasProps(dirEntry->has_props != 0), + createdRev(dirEntry->created_rev), time(dirEntry->time) +@@ -78,7 +78,7 @@ + { + } + +- DirEntry::DirEntry(const char * name, svn_dirent_t * DirEntry) ++ DirEntry::DirEntry(const char * name, const svn_dirent_t * DirEntry) + : m(new Data(name, DirEntry)) + { + } +--- a/include/svncpp/dirent.hpp 2017-03-19 15:50:54.860506116 +0100 ++++ b/include/svncpp/dirent.hpp 2017-03-19 15:50:58.314407598 +0100 +@@ -41,7 +41,7 @@ + /** + * constructor for existing @a svn_dirent_t entries + */ +- DirEntry(const char * name, svn_dirent_t * dirEntry); ++ DirEntry(const char * name, const svn_dirent_t * dirEntry); + + /** + * copy constructor |