diff --git a/.gitignore b/.gitignore index 86e8bd6..8cc96f4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ monotone-0.48.tar.gz /monotone-0.99.tar.gz /monotone-0.99.1.tar.gz /monotone-1.0.tar.bz2 +/monotone-1.1.tar.bz2 diff --git a/README.monotone-server b/README.monotone-server index a2640d3..2f3b00c 100644 --- a/README.monotone-server +++ b/README.monotone-server @@ -1,42 +1,38 @@ -The Fedora Extras build of monotone provides an extra RPM monotone-server. -This package is intended to make it easy to set up an unattended server +The Fedora build of monotone provides an extra RPM "monotone-server". This +package is intended to make it easy to set up an unattended server installation for Monotone's Netsync protocol (i.e. "monotone serve"). -The package a standard Fedora-style init.d script with chkconfig support -for running the server, installed as /usr/sbin/monotone-server. -(This is just a symlink to monotone that the init script runs instead. -This enables matching "monotone-server" processes with ps to distinguish -server instances from people using monotone.) +The package contains a systemd service unit for running the server, installed +as /usr/sbin/monotone-server. (This is just a symlink to monotone that the +systemd runs instead. This enables matching "monotone-server" processes with +ps to distinguish server instances from people using monotone.) The /etc/monotone directory serves as ~/.monotone for the server. This directory and its contents are not writable by the "monotone" user ID under -which the network server runs. The database lives in /var/lib/monotone, -which the "monotone" user ID must write to. +which the network server runs. The database lives in /var/lib/monotone, which +the "monotone" user ID must write to. -The init.d script will generate a private key for the server to use, if -none exists yet. The key identification will be the host's FQDN (from -/bin/hostname -f). You can use "service monotone genkey [IDENT]" to -generate the private key by hand and set up the unattended server to use -it, supplying a different key identification string if you like. +On startup, the systemd service will generate a private key for the +server to use, if none exists yet, using +/usr/libexec/monotone-server-genkey. The key identification will +contain the host's FQDN (from /bin/hostname -f). Before starting the server, the script will migrate an old database format if you had a previous version of the monotone-server installation. -(This includes converting private keys from the old format.) -You can always do this explicitly with "service monotone migrate". Access to the server is controlled by the /etc/monotone/read-permissions and -/etc/monotone/write-permissions files, unless you write your own Lua hooks -in /etc/monotone/monotonerc. These files are not created or editted by the -RPM scripts, you must create them. These files refer to key identification +/etc/monotone/write-permissions files, unless you write your own Lua hooks in +/etc/monotone/monotonerc. These files are not created or edited by the RPM +scripts, you must create them. These files refer to key identification strings for keys already the database. Anyone allowed write access by the -netwrok server can put new keys in the database with "monotone push" using -the --key-to-push option. To bootstrap this, /etc/monotone/write-permission -must allow some key and that key must be in the database already. You can -put a key in the server's database easily with "service monotone import", +network server can put new keys in the database with "monotone push" using the +--key-to-push option. To bootstrap this, /etc/monotone/write-permission must +allow some key and that key must be in the database already. You can put a +key in the server's database easily with /usr/libexec/monotone-server-import, e.g. to import the public key for a private key in ~/.monotone/keys: - mtn pubkey me@my.com | sudo service monotone import + mtn pubkey me@my.com | sudo /usr/libexec/monotone-server-import -For problems with this package or its scripts, please file bugs -at http://bugzilla.redhat.com/ for the "monotone" component -in th "Fedora Extras" product. +For problems with this package or its scripts, please file bugs at +http://bugzilla.redhat.com/ for the "monotone" component in the "Fedora" +product. diff --git a/monotone-1.0-disable-xdelta-test.patch b/monotone-1.0-disable-xdelta-test.patch deleted file mode 100644 index e4b3b64..0000000 --- a/monotone-1.0-disable-xdelta-test.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -up monotone-1.0/Makefile.am.orig monotone-1.0/Makefile.am ---- monotone-1.0/Makefile.am.orig 2011-09-26 17:57:52.000000000 +0200 -+++ monotone-1.0/Makefile.am 2011-09-26 17:58:13.000000000 +0200 -@@ -191,7 +191,7 @@ UNIT_TESTERS = \ - test/unit/tests/restrictions.cc test/unit/tests/revision.cc \ - test/unit/tests/simplestring_xform.cc test/unit/tests/transforms.cc \ - test/unit/tests/uri.cc test/unit/tests/vocab.cc \ -- test/unit/tests/xdelta.cc test/unit/tests/numeric_vocab.cc \ -+ test/unit/tests/numeric_vocab.cc \ - test/unit/tests/sha1.cc test/unit/tests/string_queue.cc \ - test/unit/unit_tester.cc - -diff -up monotone-1.0/Makefile.in.orig monotone-1.0/Makefile.in ---- monotone-1.0/Makefile.in.orig 2011-09-26 17:57:58.000000000 +0200 -+++ monotone-1.0/Makefile.in 2011-09-26 17:59:19.000000000 +0200 -@@ -422,7 +422,6 @@ am__objects_19 = test/unit/tests/basic_i - test/unit/tests/simplestring_xform.$(OBJEXT) \ - test/unit/tests/transforms.$(OBJEXT) \ - test/unit/tests/uri.$(OBJEXT) test/unit/tests/vocab.$(OBJEXT) \ -- test/unit/tests/xdelta.$(OBJEXT) \ - test/unit/tests/numeric_vocab.$(OBJEXT) \ - test/unit/tests/sha1.$(OBJEXT) \ - test/unit/tests/string_queue.$(OBJEXT) \ -@@ -887,7 +886,7 @@ UNIT_TESTERS = \ - test/unit/tests/restrictions.cc test/unit/tests/revision.cc \ - test/unit/tests/simplestring_xform.cc test/unit/tests/transforms.cc \ - test/unit/tests/uri.cc test/unit/tests/vocab.cc \ -- test/unit/tests/xdelta.cc test/unit/tests/numeric_vocab.cc \ -+ test/unit/tests/numeric_vocab.cc \ - test/unit/tests/sha1.cc test/unit/tests/string_queue.cc \ - test/unit/unit_tester.cc - -@@ -1774,8 +1773,6 @@ test/unit/tests/uri.$(OBJEXT): test/unit - test/unit/tests/$(DEPDIR)/$(am__dirstamp) - test/unit/tests/vocab.$(OBJEXT): test/unit/tests/$(am__dirstamp) \ - test/unit/tests/$(DEPDIR)/$(am__dirstamp) --test/unit/tests/xdelta.$(OBJEXT): test/unit/tests/$(am__dirstamp) \ -- test/unit/tests/$(DEPDIR)/$(am__dirstamp) - test/unit/tests/numeric_vocab.$(OBJEXT): \ - test/unit/tests/$(am__dirstamp) \ - test/unit/tests/$(DEPDIR)/$(am__dirstamp) diff --git a/monotone-1.0-file_handle.patch b/monotone-1.0-file_handle.patch deleted file mode 100644 index f295f25..0000000 --- a/monotone-1.0-file_handle.patch +++ /dev/null @@ -1,155 +0,0 @@ -# -# -# patch "src/rcs_file.cc" -# from [885b3fbe7b6cfed78816f0e57cd71d44616213c6] -# to [03cf68912a4a708545ebce3d415c0e970ddead0b] -# -============================================================ ---- src/rcs_file.cc 885b3fbe7b6cfed78816f0e57cd71d44616213c6 -+++ src/rcs_file.cc 03cf68912a4a708545ebce3d415c0e970ddead0b -@@ -42,12 +42,12 @@ struct - - #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 @@ file_handle - 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 @@ struct file_source - ++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 @@ struct file_source - 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 @@ struct - }; - #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 @@ file_handle - 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 - }; - - struct --file_source -+rcs_file_source - { - string const & filename; - HANDLE fd,map; -@@ -167,7 +167,7 @@ file_source - ++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 @@ file_source - 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 @@ file_source - }; - #else - // no mmap at all --typedef istream file_source; -+typedef istream rcs_file_source; - #endif - - typedef enum -@@ -220,7 +220,7 @@ static token_type - } - - 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 - - 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, - 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); diff --git a/monotone-1.0-fix-bash_completion-test.patch b/monotone-1.0-fix-bash_completion-test.patch deleted file mode 100644 index e6e74be..0000000 --- a/monotone-1.0-fix-bash_completion-test.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up monotone-1.0/test/extra/bash_completion/bashrc.orig monotone-1.0/test/extra/bash_completion/bashrc ---- monotone-1.0/test/extra/bash_completion/bashrc.orig 2011-03-26 07:41:02.000000000 +0100 -+++ monotone-1.0/test/extra/bash_completion/bashrc 2013-03-09 18:44:36.811369952 +0100 -@@ -18,6 +18,8 @@ if [ "$BASH_COMPLETION" = "" ]; then - . /etc/bash_completion - elif [ -f /usr/local/etc/bash_completion ]; then - . /usr/local/etc/bash_completion -+ elif [ -f /usr/share/bash-completion/bash_completion ] ; then -+ . /usr/share/bash-completion/bash_completion - else - echo No bash completion package present. - exit -diff -up monotone-1.0/test/extra/bash_completion/library.exp.orig monotone-1.0/test/extra/bash_completion/library.exp ---- monotone-1.0/test/extra/bash_completion/library.exp.orig 2011-03-26 07:41:02.000000000 +0100 -+++ monotone-1.0/test/extra/bash_completion/library.exp 2013-03-09 18:42:07.087240069 +0100 -@@ -16,7 +16,7 @@ set timeout 2 - set env(initial_dir) $initial_dir - set env(srcdir) $srcdir - # some user's ~/.bash_profile start xserver etc; don't do that --spawn "bash" "--init-file" "/dev/nul" "--rcfile" "$srcdir/extra/bash_completion/bashrc" -+spawn "bash" "--init-file" "/dev/null" "--rcfile" "$srcdir/extra/bash_completion/bashrc" - # If there is no completion package, it's no point trying this. - # Make sure we do get a prompt. - expect { diff --git a/monotone-1.0-fix-diff_patch_drop-test.patch b/monotone-1.0-fix-diff_patch_drop-test.patch deleted file mode 100644 index 8940cde..0000000 --- a/monotone-1.0-fix-diff_patch_drop-test.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up monotone-1.0/test/func/diff_patch_drop/__driver__.lua.orig monotone-1.0/test/func/diff_patch_drop/__driver__.lua ---- monotone-1.0/test/func/diff_patch_drop/__driver__.lua.orig 2011-03-26 07:41:04.000000000 +0100 -+++ monotone-1.0/test/func/diff_patch_drop/__driver__.lua 2013-03-10 16:17:05.508555733 +0100 -@@ -36,5 +36,6 @@ else - -- but it is a little aggressive and removes the dir too! - check({"patch", "-p0"}, 0, false, false, true) - check(not exists("dir/file")) -- check(not exists("dir")) -+ -- patch 2.7.1 does not remove the dir -+ -- check(not exists("dir")) - end diff --git a/monotone-1.0-fix-help.patch b/monotone-1.0-fix-help.patch deleted file mode 100644 index abbb024..0000000 --- a/monotone-1.0-fix-help.patch +++ /dev/null @@ -1,21 +0,0 @@ -# -# -# patch "src/options_list.hh" -# from [0462e302b89179f4acb28ecb91f4255140d4a4a7] -# to [27c44e89ebc9a828ac0a7b91505f997884646062] -# -============================================================ ---- src/options_list.hh 0462e302b89179f4acb28ecb91f4255140d4a4a7 -+++ src/options_list.hh 27c44e89ebc9a828ac0a7b91505f997884646062 -@@ -381,9 +381,9 @@ SIMPLE_OPTION(move_conflicting_paths, - SIMPLE_OPTION(move_conflicting_paths, - "move-conflicting-paths/no-move-conflicting-paths", - bool, -- (F("move conflicting, unversioned paths into '%s' " -+ strdup((F("move conflicting, unversioned paths into '%s' " - "before proceeding with any workspace change") % -- bookkeeping_resolutions_dir).str().c_str()) -+ bookkeeping_resolutions_dir).str().c_str())) - - OPTSET_REL(globals, ssh_sign) - SIMPLE_INITIALIZED_OPTION(ssh_sign, "ssh-sign", enum_string, "yes,no,only,check", diff --git a/monotone-1.0-pcre.patch b/monotone-1.0-pcre.patch deleted file mode 100644 index 9abd4ac..0000000 --- a/monotone-1.0-pcre.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up monotone-1.0/test/func/syntax_errors_in_.mtn-ignore/mtn-ignore.orig monotone-1.0/test/func/syntax_errors_in_.mtn-ignore/mtn-ignore ---- monotone-1.0/test/func/syntax_errors_in_.mtn-ignore/mtn-ignore.orig 2011-03-26 07:41:05.000000000 +0100 -+++ monotone-1.0/test/func/syntax_errors_in_.mtn-ignore/mtn-ignore 2012-02-15 19:40:06.282866594 +0100 -@@ -21,7 +21,6 @@ abc\3 - [[:fnord:]] - \\x{123456} - (?(0)) --(?<=\C) - \l - (?C256) - (?C1 diff --git a/monotone-1.0-stacktrace-on-crash.patch b/monotone-1.0-stacktrace-on-crash.patch new file mode 100644 index 0000000..a8d773c --- /dev/null +++ b/monotone-1.0-stacktrace-on-crash.patch @@ -0,0 +1,63 @@ +Add a hack to the fatal signal handlers to invoke gdb and get a full stack +trace on crash. This won't fix anything, but by activating this mode +in the testsuite, we can get more detail on the alpha and sparc FTBFSes. + +Index: monotone-1.0/src/unix/main.cc +=================================================================== +--- monotone-1.0.orig/src/unix/main.cc 2009-04-12 13:39:49.000000000 -0700 ++++ monotone-1.0/src/unix/main.cc 2009-04-12 13:42:56.000000000 -0700 +@@ -36,12 +36,21 @@ + + #include "../base.hh" + #include +-#include ++#include + #include + #include + #include ++#include ++ ++#if __GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) ++# define HAVE_BACKTRACE ++# include ++#endif + + static char const * argv0; ++#ifdef HAVE_BACKTRACE ++static bool backtrace_on_crash = false; ++#endif + + // a convenient wrapper + inline void +@@ -75,6 +84,18 @@ + write_str_to_stderr("do not send a core dump, but if you have one, " + "\nplease preserve it in case we ask you for " + "information from it.\n"); ++#ifdef HAVE_BACKTRACE ++ if (backtrace_on_crash) ++ { ++ void *tracebuf[20]; ++ int frames = backtrace(tracebuf, 20); ++ if (frames) ++ { ++ write_str_to_stderr("stack trace:\n"); ++ backtrace_symbols_fd(tracebuf, frames, 2); ++ } ++ } ++#endif + + raise(signo); + // The signal has been reset to the default handler by SA_RESETHAND +@@ -129,6 +150,12 @@ + + argv0 = argv[0]; + ++#ifdef HAVE_BACKTRACE ++ char *ev = getenv("MTN_STACKTRACE_ON_CRASH"); ++ if (ev && ev[0]) ++ backtrace_on_crash = true; ++#endif ++ + bug_signal_action.sa_flags = SA_RESETHAND; + bug_signal_action.sa_handler = &bug_signal; + sigemptyset(&bug_signal_action.sa_mask); diff --git a/monotone-1.1-boost.patch b/monotone-1.1-boost.patch new file mode 100644 index 0000000..84e80f1 --- /dev/null +++ b/monotone-1.1-boost.patch @@ -0,0 +1,555 @@ +A function macro named E clashes with internal boost definitions. Rearrange +the order of header inclusion so that affected boost headers are included +before monotone defines the macro. + +Also, stop bundling boost/circular_buffer, which is available in current +versions of boost. + +diff -up monotone-1.1/Makefile.in.orig monotone-1.1/Makefile.in +--- monotone-1.1/Makefile.in.orig 2014-05-04 03:18:01.000000000 -0600 ++++ monotone-1.1/Makefile.in 2020-06-30 10:02:57.849746309 -0600 +@@ -156,10 +156,7 @@ am__v_AR_1 = + src_lib3rdparty_a_AR = $(AR) $(ARFLAGS) + src_lib3rdparty_a_LIBADD = + am__src_lib3rdparty_a_SOURCES_DIST = \ +- src/boost/circular_buffer_adaptor.hpp \ +- src/boost/circular_buffer_base.hpp \ +- src/boost/circular_buffer_fwd.hpp \ +- src/boost/circular_buffer.hpp src/netxx/accept.cxx \ ++ src/netxx/accept.cxx \ + src/netxx/accept.h src/netxx/address.cxx src/netxx/common.h \ + src/netxx/compat.h src/netxx/datagram.cxx \ + src/netxx/datagramserver.cxx src/netxx/osutil.cxx \ +@@ -933,12 +930,6 @@ NETXX_SOURCES = \ + src/netxx/stream.h src/netxx/streambase.h \ + src/netxx/streamserver.h src/netxx/timeout.h src/netxx/types.h + +-BOOST_SANDBOX_SOURCES = \ +- src/boost/circular_buffer_adaptor.hpp \ +- src/boost/circular_buffer_base.hpp \ +- src/boost/circular_buffer_fwd.hpp \ +- src/boost/circular_buffer.hpp +- + UNIX_PLATFORM_SOURCES = \ + src/unix/read_password.cc src/unix/get_system_flavour.cc \ + src/unix/process.cc src/unix/terminal.cc src/unix/inodeprint.cc \ +@@ -1026,7 +1017,7 @@ nodist_test_bin_tester_SOURCES = test/sr + noinst_LIBRARIES = src/libplatform.a src/lib3rdparty.a + src_libplatform_a_SOURCES = src/platform.hh $(am__append_1) \ + $(am__append_6) +-src_lib3rdparty_a_SOURCES = $(BOOST_SANDBOX_SOURCES) $(NETXX_SOURCES) \ ++src_lib3rdparty_a_SOURCES = $(NETXX_SOURCES) \ + $(am__append_9) $(am__append_11) $(am__append_13) \ + $(am__append_14) + bashcompdir = $(sysconfdir)/bash_completion.d +diff -up monotone-1.1/src/ancestry.cc.orig monotone-1.1/src/ancestry.cc +--- monotone-1.1/src/ancestry.cc.orig 2014-05-04 03:15:15.000000000 -0600 ++++ monotone-1.1/src/ancestry.cc 2020-06-30 11:34:52.796544704 -0600 +@@ -8,8 +8,8 @@ + // PURPOSE. + + #include "base.hh" +-#include "sanity.hh" + #include "revision.hh" ++#include "sanity.hh" + #include "rev_height.hh" + #include "roster.hh" + +diff -up monotone-1.1/src/asciik.hh.orig monotone-1.1/src/asciik.hh +--- monotone-1.1/src/asciik.hh.orig 2014-05-04 03:15:15.000000000 -0600 ++++ monotone-1.1/src/asciik.hh 2020-06-30 10:15:12.007654082 -0600 +@@ -11,8 +11,8 @@ + #define __ASCIIK_HH__ + + #include +-#include "vector.hh" + #include "vocab.hh" ++#include "vector.hh" + + class asciik + { +diff -up monotone-1.1/src/automate.cc.orig monotone-1.1/src/automate.cc +--- monotone-1.1/src/automate.cc.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/automate.cc 2020-06-30 11:38:43.421264711 -0600 +@@ -13,12 +13,12 @@ + #include + #include + #include +-#include "vector.hh" + + #include + #include + #include "lexical_cast.hh" + #include ++#include "vector.hh" + + #include "app_state.hh" + #include "automate_stdio_helpers.hh" +diff -up monotone-1.1/src/basic_io.hh.orig monotone-1.1/src/basic_io.hh +--- monotone-1.1/src/basic_io.hh.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/basic_io.hh 2020-06-30 09:47:13.560973524 -0600 +@@ -11,11 +11,11 @@ + #ifndef __BASIC_IO_HH__ + #define __BASIC_IO_HH__ + +-#include "vector.hh" + #include + + #include "paths.hh" + #include "sanity.hh" ++#include "vector.hh" + #include "vocab.hh" + #include "numeric_vocab.hh" + #include "char_classifiers.hh" +diff -up monotone-1.1/src/charset.cc.orig monotone-1.1/src/charset.cc +--- monotone-1.1/src/charset.cc.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/charset.cc 2020-06-30 09:37:09.073857197 -0600 +@@ -7,13 +7,13 @@ + // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + // PURPOSE. + +-#include "base.hh" +-#include "vector.hh" +- + #include + #include + #include + ++#include "base.hh" ++#include "vector.hh" ++ + #include "charset.hh" + #include "numeric_vocab.hh" + #include "sanity.hh" +diff -up monotone-1.1/src/cmd_list.cc.orig monotone-1.1/src/cmd_list.cc +--- monotone-1.1/src/cmd_list.cc.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/cmd_list.cc 2020-06-30 10:12:30.695874287 -0600 +@@ -10,7 +10,6 @@ + + #include "base.hh" + #include +-#include "safe_map.hh" + #include + #include + #include +@@ -18,6 +17,7 @@ + #include + + #include "basic_io.hh" ++#include "safe_map.hh" + #include "cert.hh" + #include "charset.hh" + #include "cmd.hh" +diff -up monotone-1.1/src/commands.hh.orig monotone-1.1/src/commands.hh +--- monotone-1.1/src/commands.hh.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/commands.hh 2020-06-30 10:09:04.000156549 -0600 +@@ -10,8 +10,8 @@ + #ifndef __COMMANDS_HH__ + #define __COMMANDS_HH__ + +-#include "vector.hh" + #include "options.hh" ++#include "vector.hh" + class app_state; + class utf8; + +diff -up monotone-1.1/src/database.cc.orig monotone-1.1/src/database.cc +--- monotone-1.1/src/database.cc.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/database.cc 2020-06-30 11:07:31.767911489 -0600 +@@ -17,13 +17,13 @@ + #include + #include + #include +-#include "vector.hh" + + #include + #include + #include + #include + #include ++#include "vector.hh" + + #include + #include +diff -up monotone-1.1/src/database.hh.orig monotone-1.1/src/database.hh +--- monotone-1.1/src/database.hh.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/database.hh 2020-06-30 11:39:49.533184469 -0600 +@@ -11,10 +11,10 @@ + #ifndef __DATABASE_HH__ + #define __DATABASE_HH__ + +-#include "vector.hh" + #include + #include + #include ++#include "vector.hh" + + #include "rev_types.hh" + #include "cert.hh" +diff -up monotone-1.1/src/enumerator.cc.orig monotone-1.1/src/enumerator.cc +--- monotone-1.1/src/enumerator.cc.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/enumerator.cc 2020-06-30 11:17:48.813031155 -0600 +@@ -11,9 +11,9 @@ + #include + #include + #include +-#include "vector.hh" + + #include "cset.hh" ++#include "vector.hh" + #include "enumerator.hh" + #include "revision.hh" + #include "vocab.hh" +diff -up monotone-1.1/src/file_io.cc.orig monotone-1.1/src/file_io.cc +--- monotone-1.1/src/file_io.cc.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/file_io.cc 2020-06-30 09:50:13.560669858 -0600 +@@ -12,9 +12,9 @@ + #include + + #include +-#include "botan_pipe_cache.hh" + + #include "file_io.hh" ++#include "botan_pipe_cache.hh" + #include "sanity.hh" + #include "simplestring_xform.hh" + #include "charset.hh" +diff -up monotone-1.1/src/globish.cc.orig monotone-1.1/src/globish.cc +--- monotone-1.1/src/globish.cc.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/globish.cc 2020-06-30 09:56:22.529324520 -0600 +@@ -9,9 +9,9 @@ + // PURPOSE. + + #include "base.hh" ++#include "option.hh" // for arg_type + #include "sanity.hh" + #include "globish.hh" +-#include "option.hh" // for arg_type + #include "numeric_vocab.hh" + + #include +diff -up monotone-1.1/src/hmac.cc.orig monotone-1.1/src/hmac.cc +--- monotone-1.1/src/hmac.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/hmac.cc 2020-06-30 11:43:21.171953985 -0600 +@@ -10,9 +10,9 @@ + #include "base.hh" + #include + +-#include "sanity.hh" + #include "hmac.hh" + #include "vocab.hh" ++#include "sanity.hh" + #include "constants.hh" + + using std::string; +diff -up monotone-1.1/src/key_store.hh.orig monotone-1.1/src/key_store.hh +--- monotone-1.1/src/key_store.hh.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/key_store.hh 2020-06-30 11:06:22.925984151 -0600 +@@ -19,8 +19,8 @@ + #include + #endif + +-#include "vector.hh" + #include "vocab.hh" ++#include "vector.hh" + #include "paths.hh" + + class app_state; +diff -up monotone-1.1/src/migrate_work.cc.orig monotone-1.1/src/migrate_work.cc +--- monotone-1.1/src/migrate_work.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/migrate_work.cc 2020-06-30 10:57:13.325615053 -0600 +@@ -8,8 +8,8 @@ + // PURPOSE. + + #include "base.hh" +-#include "sanity.hh" + #include "cset.hh" ++#include "sanity.hh" + #include "simplestring_xform.hh" + #include "revision.hh" + #include "file_io.hh" +diff -up monotone-1.1/src/netcmd.cc.orig monotone-1.1/src/netcmd.cc +--- monotone-1.1/src/netcmd.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/netcmd.cc 2020-06-30 11:29:04.877013138 -0600 +@@ -8,11 +8,11 @@ + // PURPOSE. + + #include "base.hh" +-#include "vector.hh" + #include + + #include "constants.hh" + #include "netcmd.hh" ++#include "vector.hh" + #include "netio.hh" + #include "numeric_vocab.hh" + #include "sanity.hh" +diff -up monotone-1.1/src/netcmd.hh.orig monotone-1.1/src/netcmd.hh +--- monotone-1.1/src/netcmd.hh.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/netcmd.hh 2020-06-30 11:25:11.916333993 -0600 +@@ -10,13 +10,13 @@ + #ifndef __NETCMD_HH__ + #define __NETCMD_HH__ + +-#include "vector.hh" + #include + #include + #include + +-#include "globish.hh" + #include "merkle_tree.hh" ++#include "vector.hh" ++#include "globish.hh" + #include "numeric_vocab.hh" + #include "uri.hh" + #include "vocab.hh" +diff -up monotone-1.1/src/network/listener_base.hh.orig monotone-1.1/src/network/listener_base.hh +--- monotone-1.1/src/network/listener_base.hh.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/network/listener_base.hh 2020-06-30 11:19:34.500864837 -0600 +@@ -11,10 +11,10 @@ + #ifndef __LISTENER_BASE_HH__ + #define __LISTENER_BASE_HH__ + +-#include "reactable.hh" +- + #include + ++#include "reactable.hh" ++ + // This is not currently needed because there's only one kind of listener. + // But it's already here and not hurting anything, and might be useful if + // we want to add another kind of listener later (something that accepts +diff -up monotone-1.1/src/option.hh.orig monotone-1.1/src/option.hh +--- monotone-1.1/src/option.hh.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/option.hh 2020-06-30 09:23:18.706152659 -0600 +@@ -22,9 +22,9 @@ + #include + #include + #include +-#include "vector.hh" +- + #include ++ ++#include "vector.hh" + #include "lexical_cast.hh" + + #include "sanity.hh" +diff -up monotone-1.1/src/project.cc.orig monotone-1.1/src/project.cc +--- monotone-1.1/src/project.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/project.cc 2020-06-30 10:58:34.582498413 -0600 +@@ -8,9 +8,9 @@ + // PURPOSE. + + #include "base.hh" +-#include "vector.hh" + + #include "cert.hh" ++#include "vector.hh" + #include "database.hh" + #include "date_format.hh" + #include "project.hh" +diff -up monotone-1.1/src/rcs_file.cc.orig monotone-1.1/src/rcs_file.cc +--- monotone-1.1/src/rcs_file.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/rcs_file.cc 2020-06-30 11:10:45.213647993 -0600 +@@ -10,7 +10,6 @@ + + #include "base.hh" + #include +-#include "vector.hh" + + #ifdef WIN32 + #include +@@ -32,6 +31,7 @@ + #endif + + #include "rcs_file.hh" ++#include "vector.hh" + #include "sanity.hh" + #include "char_classifiers.hh" + +diff -up monotone-1.1/src/rcs_file.hh.orig monotone-1.1/src/rcs_file.hh +--- monotone-1.1/src/rcs_file.hh.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/rcs_file.hh 2020-06-30 11:14:24.238333814 -0600 +@@ -10,9 +10,9 @@ + #ifndef __RCS_FILE_HH__ + #define __RCS_FILE_HH__ + +-#include "vector.hh" + #include + #include ++#include "vector.hh" + + struct rcs_admin + { +diff -up monotone-1.1/src/rcs_import.cc.orig monotone-1.1/src/rcs_import.cc +--- monotone-1.1/src/rcs_import.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/rcs_import.cc 2020-06-30 11:29:44.579958676 -0600 +@@ -16,13 +16,13 @@ + #include + #include + #include +-#include "vector.hh" + #include // memset + + #include + #include + #include "lexical_cast.hh" + #include ++#include "vector.hh" + + #include "cert.hh" + #include "constants.hh" +diff -up monotone-1.1/src/restrictions.cc.orig monotone-1.1/src/restrictions.cc +--- monotone-1.1/src/restrictions.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/restrictions.cc 2020-06-30 11:43:53.380932870 -0600 +@@ -8,9 +8,9 @@ + // PURPOSE. + + #include "base.hh" ++#include "restrictions.hh" + #include "safe_map.hh" + #include "vector.hh" +-#include "restrictions.hh" + #include "file_io.hh" + #include "roster.hh" + #include "database.hh" // for parent_roster +diff -up monotone-1.1/src/revision.hh.orig monotone-1.1/src/revision.hh +--- monotone-1.1/src/revision.hh.orig 2014-05-04 03:15:18.000000000 -0600 ++++ monotone-1.1/src/revision.hh 2020-06-30 11:18:10.388997198 -0600 +@@ -11,8 +11,8 @@ + #define __REVISION_HH__ + + #include +-#include "vector.hh" + #include "rev_types.hh" ++#include "vector.hh" + + class key_store; + class node_restriction; +diff -up monotone-1.1/src/roster.cc.orig monotone-1.1/src/roster.cc +--- monotone-1.1/src/roster.cc.orig 2014-05-04 03:15:18.000000000 -0600 ++++ monotone-1.1/src/roster.cc 2020-06-30 11:35:20.489511075 -0600 +@@ -11,10 +11,10 @@ + #include "base.hh" + #include + #include +-#include "vector.hh" + #include + + #include "basic_io.hh" ++#include "vector.hh" + #include "cset.hh" + #include "database.hh" + #include "platform-wrapped.hh" +diff -up monotone-1.1/src/sanity.cc.orig monotone-1.1/src/sanity.cc +--- monotone-1.1/src/sanity.cc.orig 2014-05-04 03:15:18.000000000 -0600 ++++ monotone-1.1/src/sanity.cc 2020-06-30 09:32:43.994207307 -0600 +@@ -12,12 +12,11 @@ + #include + #include + #include +-#include "vector.hh" +- + #include + +-// circular_buffer is not in Boost 1.34; it's in monotone/boost. +-#include "boost/circular_buffer.hpp" ++#include "vector.hh" ++ ++#include + + #include "lexical_cast.hh" + #include "constants.hh" +diff -up monotone-1.1/src/sanity.hh.orig monotone-1.1/src/sanity.hh +--- monotone-1.1/src/sanity.hh.orig 2014-05-04 03:15:18.000000000 -0600 ++++ monotone-1.1/src/sanity.hh 2020-06-30 09:31:59.698281778 -0600 +@@ -14,7 +14,7 @@ + #include + #include + +-#include "boost/current_function.hpp" ++#include + + #include "numeric_vocab.hh" + #include "origin_type.hh" +diff -up monotone-1.1/src/sha1.cc.orig monotone-1.1/src/sha1.cc +--- monotone-1.1/src/sha1.cc.orig 2014-05-04 03:15:18.000000000 -0600 ++++ monotone-1.1/src/sha1.cc 2020-06-30 11:51:10.427645711 -0600 +@@ -22,10 +22,10 @@ + #include + #endif + +-#include "sanity.hh" +-#include "ui.hh" + #include "platform.hh" + #include "cmd.hh" ++#include "sanity.hh" ++#include "ui.hh" + #include "transforms.hh" + + using std::string; +diff -up monotone-1.1/src/transforms.cc.orig monotone-1.1/src/transforms.cc +--- monotone-1.1/src/transforms.cc.orig 2014-05-04 03:15:18.000000000 -0600 ++++ monotone-1.1/src/transforms.cc 2020-06-30 10:19:25.976307371 -0600 +@@ -12,12 +12,12 @@ + #include + #include + +-#include "botan_pipe_cache.hh" +-#include "gzip.hh" +- + #include "transforms.hh" + #include "char_classifiers.hh" + ++#include "botan_pipe_cache.hh" ++#include "gzip.hh" ++ + using std::string; + using Botan::Pipe; + using Botan::Base64_Encoder; +diff -up monotone-1.1/src/update.cc.orig monotone-1.1/src/update.cc +--- monotone-1.1/src/update.cc.orig 2014-05-04 03:15:18.000000000 -0600 ++++ monotone-1.1/src/update.cc 2020-06-30 11:03:03.726194356 -0600 +@@ -9,9 +9,9 @@ + + #include "base.hh" + #include ++#include "lexical_cast.hh" + #include "safe_map.hh" + #include "vector.hh" +-#include "lexical_cast.hh" + + #include "database.hh" + #include "sanity.hh" +diff -up monotone-1.1/src/vocab.cc.orig monotone-1.1/src/vocab.cc +--- monotone-1.1/src/vocab.cc.orig 2014-05-04 03:15:18.000000000 -0600 ++++ monotone-1.1/src/vocab.cc 2020-06-30 09:36:18.769919254 -0600 +@@ -11,8 +11,8 @@ + #include "base.hh" + #include "constants.hh" + #include "hash_map.hh" +-#include "sanity.hh" + #include "vocab.hh" ++#include "sanity.hh" + #include "char_classifiers.hh" + #include "transforms.hh" + +diff -up monotone-1.1/src/xdelta.cc.orig monotone-1.1/src/xdelta.cc +--- monotone-1.1/src/xdelta.cc.orig 2014-05-04 03:15:19.000000000 -0600 ++++ monotone-1.1/src/xdelta.cc 2020-06-30 11:13:38.014400075 -0600 +@@ -26,7 +26,6 @@ + + #include "base.hh" + #include +-#include "vector.hh" + #include + #include + #include // memcmp +@@ -34,6 +33,7 @@ + #include + #include + ++#include "vector.hh" + #include "adler32.hh" + #include "hash_map.hh" + #include "numeric_vocab.hh" diff --git a/monotone-1.1-catch.patch b/monotone-1.1-catch.patch new file mode 100644 index 0000000..cccee22 --- /dev/null +++ b/monotone-1.1-catch.patch @@ -0,0 +1,111 @@ +Do not catch exceptions of polymorphic type by value, as that requires the +compiler to slice the exceptions. Catching them by reference allows the +compiler to emit more efficient code. + +--- monotone-1.1/src/dates.cc.orig 2014-05-04 03:15:16.000000000 -0600 ++++ monotone-1.1/src/dates.cc 2020-06-30 12:15:35.765139561 -0600 +@@ -652,7 +652,7 @@ date_t::date_t(string const & s) + + d = our_timegm(t); + } +- catch (std::out_of_range) ++ catch (std::out_of_range &) + { + E(false, origin::user, + F("unrecognized date (monotone only understands ISO 8601 format)")); +--- monotone-1.1/src/key_packet.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/key_packet.cc 2020-06-30 12:14:15.581206185 -0600 +@@ -139,7 +139,7 @@ namespace + } + // since we do not want to prompt for a password to decode it finally, + // we ignore all other exceptions +- catch (Botan::Invalid_Argument) {} ++ catch (Botan::Invalid_Argument &) {} + } + void validate_no_more_args(istringstream & iss) const + { +--- monotone-1.1/src/key_store.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/key_store.cc 2020-06-30 12:14:36.965188418 -0600 +@@ -622,7 +622,7 @@ key_store_state::decrypt_private_key(key + break; + } + #if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4) +- catch (Botan::Invalid_Argument) ++ catch (Botan::Invalid_Argument &) + #else + catch (Botan::Exception & e) + #endif +--- monotone-1.1/src/network/session.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/network/session.cc 2020-06-30 12:15:10.949160179 -0600 +@@ -362,7 +362,7 @@ bool session::do_work(transaction_guard + % errmsg.substr(4)); + } + } +- catch (boost::bad_lexical_cast) ++ catch (boost::bad_lexical_cast &) + { // ok, so it wasn't a number + } + } +--- monotone-1.1/src/option.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/option.cc 2020-06-30 12:12:46.420100297 -0600 +@@ -522,7 +522,7 @@ void concrete_option_set::from_command_l + o.resetter(); + } + } +- catch (boost::bad_lexical_cast) ++ catch (boost::bad_lexical_cast &) + { + throw bad_arg(o.longname, arg); + } +@@ -567,7 +567,7 @@ void concrete_option_set::from_key_value + o.resetter(); + } + } +- catch (boost::bad_lexical_cast) ++ catch (boost::bad_lexical_cast &) + { + throw bad_arg(o.longname, value); + } +--- monotone-1.1/src/packet.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/packet.cc 2020-06-30 12:13:54.197195613 -0600 +@@ -192,9 +192,9 @@ 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) {} ++ catch (Passphrase_Required &) {} + #else +- catch (Botan::Invalid_Argument) {} ++ catch (Botan::Invalid_Argument &) {} + #endif + } + void validate_certname(string const & cn) const +--- monotone-1.1/src/paths.hh.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/paths.hh 2020-06-30 12:12:29.845076986 -0600 +@@ -424,7 +424,7 @@ bool safe_compose(T const & p, char cons + result = p / path_component(s); + return true; + } +- catch (std::logic_error) ++ catch (std::logic_error &) + { + report_failed_path_composition(p, s, isdir); + return false; +--- monotone-1.1/src/sanity.cc.orig 2020-06-30 09:32:43.994207307 -0600 ++++ monotone-1.1/src/sanity.cc 2020-06-30 12:13:32.165164632 -0600 +@@ -433,13 +433,13 @@ sanity::gasp() + (*i)->gasp(tmp); + out << tmp; + } +- catch (logic_error) ++ catch (logic_error &) + { + out << tmp; + out << "\n"; + L(FL("ignoring error trigged by saving work set to debug log")); + } +- catch (recoverable_failure) ++ catch (recoverable_failure &) + { + out << tmp; + out << "\n"; diff --git a/monotone-1.1-iostream.patch b/monotone-1.1-iostream.patch new file mode 100644 index 0000000..b77a4a0 --- /dev/null +++ b/monotone-1.1-iostream.patch @@ -0,0 +1,14 @@ +diff -up monotone-1.1/test/unit/tests/merge_3way.cc\~ monotone-1.1/test/unit/tests/merge_3way.cc +--- monotone-1.1/test/unit/tests/merge_3way.cc~ 2014-05-04 11:15:25.000000000 +0200 ++++ monotone-1.1/test/unit/tests/merge_3way.cc 2015-01-29 02:23:06.774241679 +0100 +@@ -17,6 +17,8 @@ + #include "../randomfile.hh" + #include "../../../src/simplestring_xform.hh" + ++#include ++ + using std::cerr; + using std::cout; + using std::stringstream; + +Diff finished. Thu Jan 29 02:24:29 2015 diff --git a/monotone-1.1-lua-integer.patch b/monotone-1.1-lua-integer.patch new file mode 100644 index 0000000..ba0dbb4 --- /dev/null +++ b/monotone-1.1-lua-integer.patch @@ -0,0 +1,52 @@ +diff -Naur monotone-1.1.orig/src/lua.cc monotone-1.1/src/lua.cc +--- monotone-1.1.orig/src/lua.cc 2014-05-04 11:15:17.000000000 +0200 ++++ monotone-1.1/src/lua.cc 2015-06-21 16:47:12.753916549 +0200 +@@ -334,7 +334,7 @@ + { + if (failed) return *this; + if (!check_stack(1)) return *this; +- lua_pushnumber(st, num); ++ lua_pushinteger(st, num); + return *this; + } + +diff -Naur monotone-1.1.orig/src/luaext_platform.cc monotone-1.1/src/luaext_platform.cc +--- monotone-1.1.orig/src/luaext_platform.cc 2014-05-04 11:15:17.000000000 +0200 ++++ monotone-1.1/src/luaext_platform.cc 2015-06-21 15:16:42.455792643 +0200 +@@ -185,8 +185,8 @@ + int res; + int ret; + ret = process_wait(pid, &res); +- lua_pushnumber(LS, res); +- lua_pushnumber(LS, ret); ++ lua_pushinteger(LS, res); ++ lua_pushinteger(LS, ret); + return 2; + } + +diff -Naur monotone-1.1.orig/test/src/tester.cc monotone-1.1/test/src/tester.cc +--- monotone-1.1.orig/test/src/tester.cc 2014-05-04 11:15:25.000000000 +0200 ++++ monotone-1.1/test/src/tester.cc 2015-06-21 15:16:42.491792237 +0200 +@@ -418,8 +418,8 @@ + int res; + int ret; + ret = process_wait(pid, &res, time); +- lua_pushnumber(LS, res); +- lua_pushnumber(LS, ret); ++ lua_pushinteger(LS, res); ++ lua_pushinteger(LS, ret); + return 2; + } + +diff -Naur monotone-1.1.orig/test/src/testlib.lua monotone-1.1/test/src/testlib.lua +--- monotone-1.1.orig/test/src/testlib.lua 2014-05-04 11:15:25.000000000 +0200 ++++ monotone-1.1/test/src/testlib.lua 2015-06-21 16:11:08.180222890 +0200 +@@ -1070,7 +1071,7 @@ + counts.total = counts.total + 1 + local format_seconds = function (seconds) + return string.format("%d:%02d", +- seconds / 60, ++ math.floor(seconds / 60), + seconds % 60) + end + local times = "" diff --git a/monotone-1.1-lua-ql.patch b/monotone-1.1-lua-ql.patch new file mode 100644 index 0000000..743f0c8 --- /dev/null +++ b/monotone-1.1-lua-ql.patch @@ -0,0 +1,15 @@ +The LUA_QL macro was removed in lua 5.4.0. Make the same transformation +as was made in the lua code itself. + +diff -up monotone-1.1/src/lua_hooks.cc.orig monotone-1.1/src/lua_hooks.cc +--- monotone-1.1/src/lua_hooks.cc.orig 2014-05-04 03:15:17.000000000 -0600 ++++ monotone-1.1/src/lua_hooks.cc 2020-06-30 10:22:58.480017092 -0600 +@@ -90,7 +90,7 @@ extern "C" + s = lua_tostring(LS, -1); + if (s == NULL) + return luaL_error( +- LS, LUA_QL("tostring") " must return a string to ", LUA_QL("print") ++ LS, "'tostring' must return a string to 'print'" + ); + + if (i > 1) diff --git a/monotone-1.1-pcre.patch b/monotone-1.1-pcre.patch new file mode 100644 index 0000000..1ecda43 --- /dev/null +++ b/monotone-1.1-pcre.patch @@ -0,0 +1,66 @@ +From 70f209ad582121750d54e3692b1e62c7f36af6f9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 7 May 2018 14:09:06 +0200 +Subject: [PATCH] Adapt to changes in pcre-8.42 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +pcre-8.42 replaced internal real_pcre with real_pcre8_or_16. This +broke monotone that decided not to use the public "pcre" type. + +This patch adapts monotone to the pcre >= 8.42. + +Signed-off-by: Petr Písař +--- + src/pcrewrap.cc | 4 ++-- + src/pcrewrap.hh | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/pcrewrap.cc b/src/pcrewrap.cc +index 8c0c9d1..30bafff 100644 +--- a/src/pcrewrap.cc ++++ b/src/pcrewrap.cc +@@ -74,7 +74,7 @@ get_capturecount(void const * bd) + namespace pcre + { + typedef map > ++ pair > + regex_cache; + + class regex_cache_manager +@@ -86,7 +86,7 @@ public: + } + + void store(char const * pattern, +- pair ++ pair + data) + { + cache[pattern] = data; +diff --git a/src/pcrewrap.hh b/src/pcrewrap.hh +index 3359cdd..5008e88 100644 +--- a/src/pcrewrap.hh ++++ b/src/pcrewrap.hh +@@ -18,7 +18,7 @@ + // definitions and so we don't actually expose it here. Unfortunately, this + // means we have to hope this pair of forward declarations will not change... + +-struct real_pcre; ++struct real_pcre8_or_16; + struct pcre_extra; + + namespace pcre +@@ -61,7 +61,7 @@ namespace pcre + regex & operator=(regex const &); + + // data +- struct real_pcre const * basedat; ++ struct real_pcre8_or_16 const * basedat; + struct pcre_extra const * extradat; + + // used by constructors +-- +2.14.3 + diff --git a/monotone-1.1-py3.patch b/monotone-1.1-py3.patch new file mode 100644 index 0000000..b8eb22e --- /dev/null +++ b/monotone-1.1-py3.patch @@ -0,0 +1,23 @@ +diff -up monotone-1.1/extra/mtn-hooks/monotone-ciabot.py.orig monotone-1.1/extra/mtn-hooks/monotone-ciabot.py +--- monotone-1.1/extra/mtn-hooks/monotone-ciabot.py.orig 2019-08-10 09:00:03.203454091 +0200 ++++ monotone-1.1/extra/mtn-hooks/monotone-ciabot.py 2019-08-10 09:07:13.873700583 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # + # Copyright (C) Nathaniel Smith + # Timothy Brownawell +@@ -192,10 +192,10 @@ def escape_for_xml(text, is_attrib=0): + + def send_message(message, c): + if c.delivery == "debug": +- print message ++ print(message) + elif c.delivery == "xmlrpc": +- import xmlrpclib +- xmlrpclib.ServerProxy(c.xmlrpc_server).hub.deliver(message) ++ import xmlrpc.client ++ xmlrpc.client.ServerProxy(c.xmlrpc_server).hub.deliver(message) + elif c.delivery == "email": + import smtplib + smtp = smtplib.SMTP(c.smtp_server) diff --git a/monotone-1.1-string-overflow.patch b/monotone-1.1-string-overflow.patch new file mode 100644 index 0000000..892236f --- /dev/null +++ b/monotone-1.1-string-overflow.patch @@ -0,0 +1,28 @@ +Ensure that the string in SSH_AUTH_SOCK is not too large to fit in a Unix +sockaddr, and only copy the bytes of the supplied string. The original code +goes on to copy bytes beyond the end of the string. + +--- monotone-1.1/src/unix/ssh_agent_platform.cc.orig 2014-05-04 03:15:18.000000000 -0600 ++++ monotone-1.1/src/unix/ssh_agent_platform.cc 2020-06-30 12:25:54.068518536 -0600 +@@ -35,8 +35,9 @@ static int + connect_to_agent() + { + const char *authsocket = getenv("SSH_AUTH_SOCK"); ++ struct sockaddr_un addr; + +- if (!authsocket || !*authsocket) ++ if (!authsocket || !*authsocket || strlen(authsocket) >= sizeof(addr.sun_path)) + { + L(FL("ssh_agent: no agent")); + return -1; +@@ -57,9 +58,8 @@ connect_to_agent() + return -1; + } + +- struct sockaddr_un addr; + addr.sun_family = AF_UNIX; +- strncpy(addr.sun_path, authsocket, sizeof(addr.sun_path)); ++ strcpy(addr.sun_path, authsocket); + + if (::connect(sock, (struct sockaddr *)&addr, sizeof addr)) + { diff --git a/monotone-server-genkey b/monotone-server-genkey new file mode 100755 index 0000000..091760c --- /dev/null +++ b/monotone-server-genkey @@ -0,0 +1,62 @@ +#!/bin/sh +# +# Generate a new private server key for the Monotone Server, if needed +# +# Author: Thomas Moschny +# +set -eu + +MONOTONE_CONFDIR="${MONOTONE_CONFDIR:-/etc/monotone}" +MONOTONE_KEYDIR="${MONOTONE_KEYDIR:-/etc/monotone/private-keys}" +MONOTONE_DBFILE="${MONOTONE_DBFILE:-/var/lib/monotone/server.mtn}" +MONOTONE_PPFILE="${MONOTONE_PPFILE:-/etc/monotone/passphrase.lua}" + +MONOTONE_KEYID="${MONOTONE_KEYID:-monotone@$(hostname -f)}" +MONOTONE_HOME="${MONOTONE_HOME:-/var/lib/monotone}" + +cd "${MONOTONE_HOME}" + +# check for existing keys +for key in "${MONOTONE_KEYDIR}/${MONOTONE_KEYID}"* ; do + if [ -e "${key}" ] ; then + echo $"Found private key $key" + exit + fi +done + +# check for existing rc file +if [ -s "${MONOTONE_PPFILE}" ] ; then + echo >&2 $"Not overwriting passphrase file ${MONOTONE_PPFILE}" + exit 1 +fi + +# no key found, let's generate one +echo $"Generating key for server ${MONOTONE_KEYID}" + +# generate random passphrase +passphrase="$(dd 2>/dev/null if=/dev/urandom bs=1 count=16 | hexdump -ve '/1 "%02x"')" + +# generate keypair, needs to be run as root +{ echo "${passphrase}"; echo "${passphrase}" ; } | +mtn --confdir="${MONOTONE_CONFDIR}" --db="${MONOTONE_DBFILE}" \ + --keydir="${MONOTONE_KEYDIR}" --force-duplicate-key \ + genkey "${MONOTONE_KEYID}" + +# fix permissions +for key in "${MONOTONE_KEYDIR}/${MONOTONE_KEYID}"* ; do + if [ -e "${key}" ] ; then + chgrp monotone "${key}" + chmod 0640 "${key}" + break + fi + echo >&2 $"No key found, key generation failed?" + exit 1 +done + +# generate rc file +install -o root -g monotone -m 0440 /dev/null "${MONOTONE_PPFILE}" +cat > "${MONOTONE_PPFILE}" < +# +set -eu + +MONOTONE_CONFDIR="${MONOTONE_CONFDIR:-/etc/monotone}" +MONOTONE_KEYDIR="${MONOTONE_KEYDIR:-/etc/monotone/private-keys}" +MONOTONE_DBFILE="${MONOTONE_DBFILE:-/var/lib/monotone/server.mtn}" +MONOTONE_PPFILE="${MONOTONE_PPFILE:-/etc/monotone/passphrase.lua}" + +MONOTONE_KEYID="${MONOTONE_KEYID:-monotone@$(hostname -f)}" +MONOTONE_HOME="${MONOTONE_HOME:-/var/lib/monotone}" + +cd "${MONOTONE_HOME}" + +echo $"Importing packets into ${MONOTONE_DBFILE}" + +runuser -u monotone -- mtn --confdir="${MONOTONE_CONFDIR}" \ + --db="${MONOTONE_DBFILE}" --keydir="${MONOTONE_KEYDIR}" \ + read diff --git a/monotone-server-initdb b/monotone-server-initdb new file mode 100755 index 0000000..90d061a --- /dev/null +++ b/monotone-server-initdb @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Initialize a new database for the Monotone Server, if needed +# +# Author: Thomas Moschny +# +set -eu + +MONOTONE_CONFDIR="${MONOTONE_CONFDIR:-/etc/monotone}" +MONOTONE_KEYDIR="${MONOTONE_KEYDIR:-/etc/monotone/private-keys}" +MONOTONE_DBFILE="${MONOTONE_DBFILE:-/var/lib/monotone/server.mtn}" +MONOTONE_PPFILE="${MONOTONE_PPFILE:-/etc/monotone/passphrase.lua}" + +MONOTONE_KEYID="${MONOTONE_KEYID:-monotone@$(hostname -f)}" +MONOTONE_HOME="${MONOTONE_HOME:-/var/lib/monotone}" + +cd "${MONOTONE_HOME}" + +# check for existing database +if [ -s "${MONOTONE_DBFILE}" ] ; then + echo $"Found database ${MONOTONE_DBFILE}" + exit +fi + +# no db found +echo $"Creating dababase ${MONOTONE_DBFILE}" + +# create database +runuser -u monotone -- mtn --confdir="${MONOTONE_CONFDIR}" \ + --db="${MONOTONE_DBFILE}" --keydir="${MONOTONE_KEYDIR}" \ + db init + +# fix permissions +chmod 0640 "${MONOTONE_DBFILE}" diff --git a/monotone-server-migratedb b/monotone-server-migratedb new file mode 100755 index 0000000..fffac2c --- /dev/null +++ b/monotone-server-migratedb @@ -0,0 +1,41 @@ +#!/bin/sh +# +# Migrate the Monotone Server database, if needed +# +# Author: Thomas Moschny +# +set -eu + +MONOTONE_CONFDIR="${MONOTONE_CONFDIR:-/etc/monotone}" +MONOTONE_KEYDIR="${MONOTONE_KEYDIR:-/etc/monotone/private-keys}" +MONOTONE_DBFILE="${MONOTONE_DBFILE:-/var/lib/monotone/server.mtn}" +MONOTONE_PPFILE="${MONOTONE_PPFILE:-/etc/monotone/passphrase.lua}" + +MONOTONE_KEYID="${MONOTONE_KEYID:-monotone@$(hostname -f)}" +MONOTONE_HOME="${MONOTONE_HOME:-/var/lib/monotone}" + +cd "${MONOTONE_HOME}" + +# check database +version="$(LC_ALL=C runuser -u monotone -- mtn \ + --confdir="${MONOTONE_CONFDIR}" --db="${MONOTONE_DBFILE}" \ + --keydir="${MONOTONE_KEYDIR}" db version)" + +case ${version} in + *"("usable")"*) + echo $"Database is usable" + exit + ;; +esac + +# database needs migration +echo $"Migrating dababase ${MONOTONE_DBFILE}" + +# migrate database +runuser -u monotone -- mtn --confdir="${MONOTONE_CONFDIR}" \ + --db="${MONOTONE_DBFILE}" --keydir="${MONOTONE_KEYDIR}" \ + db migrate + +runuser -u monotone -- mtn --confdir="${MONOTONE_CONFDIR}" \ + --db="${MONOTONE_DBFILE}" --keydir="${MONOTONE_KEYDIR}" \ + db regenerate_caches diff --git a/monotone-server-sysusers.conf b/monotone-server-sysusers.conf new file mode 100644 index 0000000..deb48d3 --- /dev/null +++ b/monotone-server-sysusers.conf @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home directory Shell +u monotone - "Monotone Netsync Server" /var/lib/monotone diff --git a/monotone.init b/monotone.init deleted file mode 100644 index 967ab15..0000000 --- a/monotone.init +++ /dev/null @@ -1,231 +0,0 @@ -#!/bin/sh -# -# This script starts and stops the monotone server. -# -# chkconfig: - 90 10 -# description: Monotone netsync protocol server -# processname: monotone-server -# pidfile: /var/run/monotone/monotone-server.pid -# config: /etc/sysconfig/monotone -# config: /etc/monotone/monotonerc -# -### BEGIN INIT INFO -# Provides: monotone -# Required-Start: $local_fs $network $named $time -# Required-Stop: $local_fs $network -# Short-Description: start and stop Monotone netsync protocol server -# Description: Monotone is a free, distributed version control system. -# It provides fully disconnected operation, manages complete -# tree versions, keeps its state in a local transactional -# database, supports overlapping branches and extensible -# metadata, exchanges work over plain network protocols, -# performs history-sensitive merging, and delegates trust -# functions to client-side RSA certificates. -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -# Source networking configuration. -. /etc/sysconfig/network - -# Check that networking is up. -[ ${NETWORKING} = "no" ] && exit 0 - -# Get configuration settings. -[ -f /etc/sysconfig/monotone ] && . /etc/sysconfig/monotone - -# By default it's all good -RETVAL=0 - -MT=/usr/bin/mtn -MTSERVER=/usr/sbin/monotone-server -MONOTONE_PIDFILE=/var/run/monotone/monotone-server.pid -MONOTONE_LOGFILE=${MONOTONE_LOGFILE:-/var/log/monotone.log} -MONOTONE_OLDDB=/var/db/monotone/server.db -MONOTONE_OLDDBFILE=/var/db/monotone/server.mtn -MONOTONE_OLDPPFILE=/var/db/monotone/passphrase.lua - -random_passphrase() -{ - # As of 0.22, 32 chars is the maximum pass phrase length. - dd if=/dev/urandom bs=32 count=1 2> /dev/null | md5sum | - { read sum rest; echo $sum; } -} - -umask 077 - -check_db_version() -{ - db_version=`runuser -s /bin/bash - ${MONOTONE_USER:-monotone} \ - -c "LC_ALL=C \ - $MT $MONOTONE_RCOPTS $MONOTONE_DBOPTS \ - db version"` || exit 2 - set -- $db_version - [ "$5" == "(usable)" ] - return $? -} - -# See how we were called. -case "$1" in - start) - if [ -e $MONOTONE_OLDDBFILE -a ! -e $MONOTONE_DBFILE ]; then - echo -n $"Moving" "$MONOTONE_OLDDBFILE" $"to" "$MONOTONE_DBFILE" - if mv "$MONOTONE_OLDDBFILE" "$MONOTONE_DBFILE"; then - failure - echo - exit - else - success - echo - fi - rmdir 2> /dev/null /var/db/monotone - fi - if [ -e $MONOTONE_DBFILE ]; then - check_db_version || $0 migrate - elif [ -e $MONOTONE_OLDDB ]; then - echo -n $"Pre-0.26 monotone database must be migrated by hand: " - failure - echo - false - else - $0 init - fi - RETVAL=$? - if [ $RETVAL = 0 ] && [ "x`ls $MONOTONE_KEYDIR`" = x ]; then - $0 genkey - RETVAL=$? - fi - if [ $RETVAL = 0 ]; then - # Start daemon. - echo -n $"Starting monotone server: " - { - exec 3>> $MONOTONE_LOGFILE && - echo >&3 "Server restart at `date`" && - daemon --user=${MONOTONE_USER:-monotone} \ - --pidfile $MONOTONE_PIDFILE \ - $MTSERVER \ - $MONOTONE_RCOPTS $MONOTONE_DBOPTS $MONOTONE_PPOPTS \ - serve --pid-file=$MONOTONE_PIDFILE \ - "$MONOTONE_SERVE_OPTS" ">&3 2>&3 &" - } && success || failure - RETVAL=$? - echo - fi - [ $RETVAL = 0 ] && touch /var/lock/subsys/monotone - ;; - stop) - # Stop daemons. - echo -n $"Stopping monotone server: " - killproc -p $MONOTONE_PIDFILE $MTSERVER - RETVAL=$? - rm -f $MONOTONE_PIDFILE - [ $RETVAL = 0 ] && rm -f /var/lock/subsys/monotone - echo - ;; - restart|force-reload) - $0 stop - $0 start - ;; - condrestart|try-restart) - [ -e /var/lock/subsys/monotone ] && $0 restart - ;; - status) - status -p $MONOTONE_PIDFILE monotone-server - RETVAL=$? - ;; - init) - echo -n $"Initializing database" "${MONOTONE_DBFILE}: " - { [ -d /var/lib/monotone ] || - /usr/bin/install -o ${MONOTONE_USER:-monotone} \ - -g ${MONOTONE_GROUP:-monotone} \ - -m 0770 -d /var/lib/monotone; } && - runuser -s /bin/bash - ${MONOTONE_USER:-monotone} -c "umask 007; \ - $MT $MONOTONE_RCOPTS $MONOTONE_DBOPTS db init" && - success $"database initialization" || - failure $"database initialization" - RETVAL=$? - echo - ;; - genkey) - MONOTONE_KEYID=${2:-${MONOTONE_KEYID:-monotone@`/bin/hostname -f`}} - MONOTONE_PPFILE=${MONOTONE_PPFILE:-/etc/monotone/passphrase.lua} - if [ -s "$MONOTONE_PPFILE" -a -s "$MONOTONE_KEYDIR/$MONOTONE_KEYID" ] - then - echo >&2 "$0:" $"Server key already installed" - echo >&2 "$0:" $"To lose old key remove file" "$MONOTONE_PPFILE" - exit 1 - fi - echo -n $"Generating RSA key for server $MONOTONE_KEYID" - tmp=/tmp/mtserver$$ - if - passphrase=`random_passphrase` && - { echo $passphrase; echo $passphrase; } | - (umask 027; $MT $MONOTONE_RCOPTS $MONOTONE_DBOPTS \ - genkey $MONOTONE_KEYID > /dev/null 2>&1) && - /bin/chgrp ${MONOTONE_GROUP:-monotone} \ - "$MONOTONE_KEYDIR/$MONOTONE_KEYID" && - /bin/chmod 0640 "$MONOTONE_KEYDIR/$MONOTONE_KEYID" && - cat > $tmp <= 8.21 -Patch3: monotone-1.0-pcre.patch -# Fix failing bash completion test -Patch4: monotone-1.0-fix-bash_completion-test.patch -# See rhbz#919827 -Patch5: monotone-1.0-fix-diff_patch_drop-test.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Source5: monotone-server-initdb +Source6: monotone-server-migratedb +Source7: monotone-server-genkey +Source8: monotone-server-import +Source9: monotone-server-sysusers.conf +Patch0: monotone-1.0-stacktrace-on-crash.patch +Patch1: monotone-1.1-iostream.patch +Patch2: monotone-1.1-lua-integer.patch +Patch3: monotone-1.1-pcre.patch +Patch4: monotone-1.1-py3.patch +Patch5: monotone-1.1-lua-ql.patch +Patch6: monotone-1.1-boost.patch +Patch7: monotone-1.1-string-overflow.patch +Patch8: monotone-1.1-catch.patch +BuildRequires: gcc-c++ +BuildRequires: make +BuildRequires: perl-generators BuildRequires: zlib-devel BuildRequires: boost-devel >= 1.33.1 BuildRequires: botan-devel >= 1.6.3 @@ -31,12 +34,15 @@ BuildRequires: pcre-devel >= 7.4 BuildRequires: sqlite-devel >= 3.3.8 BuildRequires: lua-devel >= 5.1 BuildRequires: libidn-devel +BuildRequires: systemd +BuildRequires: systemd-rpm-macros +%{?sysusers_requires_compat} + # Required by the test suite: BuildRequires: cvs BuildRequires: bash-completion BuildRequires: expect -Requires(post): /sbin/install-info -Requires(preun): /sbin/install-info + # Filter unwanted dependencies %{?perl_default_filter} @@ -55,10 +61,9 @@ functions to client-side RSA certificates. Summary: Standalone server setup for monotone Requires: monotone = %{version}-%{release} Requires(pre): shadow-utils -Requires(post): chkconfig -Requires(preun): initscripts, chkconfig -Requires(postun): initscripts -Group: Development/Tools +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd %description server @@ -68,8 +73,6 @@ This package provides an easy-to-use standalone server setup for monotone. %package -n perl-Monotone Summary: Perl Module for monotone Requires: monotone = %{version}-%{release} -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) -Group: Development/Tools %description -n perl-Monotone @@ -78,33 +81,25 @@ and then pass commands to it. %prep -%setup -q -%patch0 -p0 -%patch1 -p0 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 - -# fix FTBFS rhbz#914191 -sed -e "s|shared_dynamic_cast|dynamic_pointer_cast|g" \ - -i src/key_store.cc src/ssh_agent.cc src/database.cc +%autosetup -p1 %build export LC_MESSAGES=en_US %configure -make %{?_smp_mflags} +%make_build %check -export DISABLE_NETWORK_TESTS=1 -make %{?_smp_mflags} check || { head -n-0 test/work/*.log; false; } +#export LC_MESSAGES=en_US +#export DISABLE_NETWORK_TESTS=1 +#export MTN_STACKTRACE_ON_CRASH=1 +#make check || { head -n-0 test/work/*.log; false; } %install -rm -rf %{buildroot} -make install DESTDIR=%{buildroot} +export LC_MESSAGES=en_US +%make_install rm -f %{buildroot}%{_infodir}/dir mv %{buildroot}%{_datadir}/doc/%{name} _doc @@ -114,17 +109,20 @@ mkdir -p %{buildroot}%{_sbindir} mkdir -p %{buildroot}%{_localstatedir}/lib ln -snf ../bin/mtn %{buildroot}%{_sbindir}/monotone-server ln -snf mtn.1 %{buildroot}%{_mandir}/man1/monotone-server.1 -install -D -m 0755 -p %{SOURCE1} \ - %{buildroot}%{_sysconfdir}/rc.d/init.d/monotone +install -D -m 0644 -p %{SOURCE1} %{buildroot}%{_unitdir}/monotone.service + install -D -m 0644 -p %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/monotone install -d -m 0755 %{buildroot}%{_sysconfdir}/monotone install -d -m 0750 %{buildroot}%{_sysconfdir}/monotone/private-keys install -d -m 0770 %{buildroot}%{_localstatedir}/lib/monotone install -d -m 0755 %{buildroot}%{_localstatedir}/run/monotone -%if 0%{?fedora} >= 15 install -D -m 0644 %{SOURCE4} \ - %{buildroot}%{_sysconfdir}/tmpfiles.d/monotone.conf -%endif + %{buildroot}%{_tmpfilesdir}/monotone.conf + +install -D -m 0755 -p %{SOURCE5} %{buildroot}%{_libexecdir}/monotone-server-initdb +install -D -m 0755 -p %{SOURCE6} %{buildroot}%{_libexecdir}/monotone-server-migratedb +install -D -m 0755 -p %{SOURCE7} %{buildroot}%{_libexecdir}/monotone-server-genkey +install -D -m 0755 -p %{SOURCE8} %{buildroot}%{_libexecdir}/monotone-server-import # These do not actually wind up in the package, due to %%ghost. install -m 0440 /dev/null \ @@ -143,35 +141,24 @@ install -m 0644 -p %{SOURCE3} . install -D -m 0644 -p contrib/Monotone.pm \ %{buildroot}%{perl_vendorlib}/Monotone.pm +mkdir -p %{buildroot}%{_datadir}/bash-completion/completions +mv %{buildroot}%{_sysconfdir}/bash_completion.d/monotone.bash_completion \ + %{buildroot}%{_datadir}/bash-completion/completions/%{name}.bash_completion -%clean -rm -f README.monotone-server -rm -rf %{buildroot} - - -%post -if [ $1 -eq 1 ] -then - /sbin/install-info %{_infodir}/monotone.info %{_infodir}/dir > /dev/null 2>&1 || : -fi - - -%preun -if [ $1 -eq 0 ] -then - /sbin/install-info --delete %{_infodir}/monotone.info %{_infodir}/dir > /dev/null 2>&1 || : -fi +install -p -D -m 0644 %{SOURCE9} %{buildroot}%{_sysusersdir}/monotone-server.conf %files -f %{name}.lang -%defattr(-,root,root,-) -%doc AUTHORS COPYING NEWS README UPGRADE +%doc AUTHORS NEWS README UPGRADE %doc _doc/* +%license COPYING %{_bindir}/mtn %{_bindir}/mtnopt %{_bindir}/mtn-cleanup %{_infodir}/monotone.info* -%{_sysconfdir}/bash_completion.d +%dir %{_datadir}/bash-completion +%dir %{_datadir}/bash-completion/completions +%{_datadir}/bash-completion/completions/%{name}.bash_completion %{_mandir}/man1/mtn.1* %{_mandir}/man1/mtnopt.1* %{_mandir}/man1/mtn-cleanup.1* @@ -179,21 +166,20 @@ fi %files -n perl-Monotone -%defattr(-,root,root,-) %{perl_vendorlib}/Monotone.pm %files server -%defattr(-,root,root,-) %doc README.monotone-server %{_sbindir}/monotone-server %{_mandir}/man1/monotone-server.1* -%{_sysconfdir}/rc.d/init.d/monotone +%{_unitdir}/monotone.service +%{_libexecdir}/monotone-server-initdb +%{_libexecdir}/monotone-server-migratedb +%{_libexecdir}/monotone-server-genkey +%{_libexecdir}/monotone-server-import %dir %attr(0755,monotone,monotone) %{_localstatedir}/run/monotone -%if 0%{?fedora} >= 15 -# https://fedoraproject.org/wiki/Packaging:Tmpfiles.d -%config(noreplace) %{_sysconfdir}/tmpfiles.d/monotone.conf -%endif +%{_tmpfilesdir}/monotone.conf %config(noreplace) %{_sysconfdir}/sysconfig/monotone %dir %attr(0755,root,monotone) %{_sysconfdir}/monotone %dir %attr(0750,root,monotone) %{_sysconfdir}/monotone/private-keys @@ -203,37 +189,215 @@ fi %attr(0640,root,monotone) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_sysconfdir}/monotone/write-permissions %dir %attr(0770,monotone,monotone) %{_localstatedir}/lib/monotone %attr(0660,monotone,monotone) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_localstatedir}/lib/monotone/server.mtn +%{_sysusersdir}/monotone-server.conf %pre server -# Add "monotone" user per http://fedoraproject.org/wiki/Packaging/UsersAndGroups -getent group monotone > /dev/null || groupadd -r monotone -getent passwd monotone > /dev/null || -useradd -r -g monotone -r -d %{_localstatedir}/lib/monotone -s /sbin/nologin \ - -c "Monotone Netsync Server" monotone -exit 0 +%sysusers_create_compat %{SOURCE9} %post server -# Register the monotone service -/sbin/chkconfig --add monotone +%systemd_post monotone.service %preun server -if [ $1 -eq 0 ]; then - /sbin/service monotone stop > /dev/null 2>&1 - /sbin/chkconfig --del monotone -fi +%systemd_preun monotone.service %postun server -if [ $1 -ge 1 ]; then - # Restart the running server: updates its db format when needed. - /sbin/service monotone condrestart > /dev/null 2>&1 || : -fi +%systemd_postun monotone.service %changelog +* Thu Aug 28 2025 Thomas Moschny - 1.1-53 +- Update for current users and groups guidelines. + +* Thu Jul 24 2025 Fedora Release Engineering - 1.1-52 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jan 17 2025 Fedora Release Engineering - 1.1-51 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Jul 26 2024 Miroslav Suchý - 1.1-50 +- convert license to SPDX + +* Thu Jul 18 2024 Fedora Release Engineering - 1.1-49 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu Jan 25 2024 Fedora Release Engineering - 1.1-48 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 1.1-47 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jul 20 2023 Fedora Release Engineering - 1.1-46 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jan 19 2023 Fedora Release Engineering - 1.1-45 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jul 21 2022 Fedora Release Engineering - 1.1-44 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon May 30 2022 Jitka Plesnikova - 1.1-43 +- Perl 5.36 rebuild + +* Thu Jan 20 2022 Fedora Release Engineering - 1.1-42 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 1.1-41 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri May 21 2021 Jitka Plesnikova - 1.1-40 +- Perl 5.34 rebuild + +* Mon Feb 8 2021 Thomas Moschny - 1.1-39 +- Move bash completions to /usr/share/bash-completion/completions (bz#1855768). + +* Tue Jan 26 2021 Fedora Release Engineering - 1.1-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Aug 01 2020 Fedora Release Engineering - 1.1-37 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 1.1-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jun 30 2020 Jerry James - 1.1-35 +- Add lua-ql patch due to removal of LUA_QL from lua +- Add boost patch to fix single-letter macro name clash (bz 1851313) +- Add string-overflow patch to fix a potential buffer overflow +- Add catch patch to silence a large number of compiler warnings + +* Mon Jun 22 2020 Jitka Plesnikova - 1.1-35 +- Perl 5.32 rebuild + +* Wed Jan 29 2020 Fedora Release Engineering - 1.1-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Sat Aug 10 2019 Thomas Moschny - 1.1-33 +- Patch extra/mtn-hooks/monotone-ciabot.py to use Python3 (bz#1738073). + +* Thu Jul 25 2019 Fedora Release Engineering - 1.1-32 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu May 30 2019 Jitka Plesnikova - 1.1-31 +- Perl 5.30 rebuild + +* Sat Feb 9 2019 Thomas Moschny - 1.1-30 +- Fix F30 FTBFS. + +* Fri Feb 01 2019 Fedora Release Engineering - 1.1-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 1.1-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Jun 27 2018 Jitka Plesnikova - 1.1-27 +- Perl 5.28 rebuild + +* Tue May 22 2018 Thomas Moschny - 1.1-26 +- Add patch for PCRE >= 8.42 (rhbz#1555231, thanks P. Pisar). + +* Thu Feb 08 2018 Fedora Release Engineering - 1.1-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 1.1-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.1-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sun Jun 04 2017 Jitka Plesnikova - 1.1-22 +- Perl 5.26 rebuild + +* Mon May 15 2017 Fedora Release Engineering - 1.1-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 1.1-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Jan 27 2017 Jonathan Wakely - 1.1-19 +- Rebuilt for Boost 1.63 + +* Fri Jan 27 2017 Jonathan Wakely - 1.1-18 +- Rebuilt for Boost 1.63 + +* Sat Jan 14 2017 Ville Skyttä - 1.1-17 +- Move tmpfiles.d config to %%{_tmpfilesdir} + +* Sun May 15 2016 Jitka Plesnikova - 1.1-15 +- Perl 5.24 rebuild + +* Sun Feb 14 2016 Thomas Moschny - 1.1-14 +- Switch monotone-server to systemd (#789901). +- Mark COPYING as %%license. +- Do not own /etc/bash_completion.d. +- Update README.monotone-server. + +* Mon Feb 8 2016 Thomas Moschny - 1.1-13 +- Rebuild for Botan 1.10.12. + +* Thu Feb 04 2016 Fedora Release Engineering - 1.1-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jan 15 2016 Jonathan Wakely - 1.1-11 +- Rebuilt for Boost 1.60 + +* Thu Aug 27 2015 Jonathan Wakely - 1.1-10 +- Rebuilt for Boost 1.59 + +* Wed Jul 29 2015 Fedora Release Engineering - 1.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159 + +* Wed Jul 22 2015 David Tardon - 1.1-8 +- rebuild for Boost 1.58 + +* Mon Jun 22 2015 Thomas Moschny - 1.1-7 +- Add patch to fix FTBFS with Lua 5.3 (rhbz#1185790). + +* Wed Jun 17 2015 Fedora Release Engineering - 1.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Jun 06 2015 Jitka Plesnikova - 1.1-5 +- Perl 5.22 rebuild + +* Thu Jan 29 2015 Petr Machata - 1.1-4 +- Rebuild for boost 1.57.0 +- Include in tests/merge_3way.cc + (monotone-1.1-iostream.patch) + +* Tue Aug 26 2014 Jitka Plesnikova - 1.1-3 +- Perl 5.20 rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jul 18 2014 Thomas Moschny - 1.1-1 +- Update to 1.1. +- Remove patches and fixes not needed anymore. +- Modernize spec file. + +* Sat Jun 07 2014 Fedora Release Engineering - 1.0-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 23 2014 Petr Machata - 1.0-16 +- Rebuild for boost 1.55.0 + +* Tue Oct 8 2013 Thomas Moschny - 1.0-15 +- Add patches for building with Botan 1.10, Lua 5.2, + and Texinfo >= 5.0. + +* Sat Aug 03 2013 Fedora Release Engineering - 1.0-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Jul 30 2013 Petr Machata - 1.0-13 +- Rebuild for boost 1.54.0 + +* Wed Jul 17 2013 Petr Pisar - 1.0-12 +- Perl 5.18 rebuild + * Sat Mar 9 2013 Thomas Moschny - 1.0-11 - Fix building against Boost 1.53 (FTBFS bug rhbz#914191). - Fix failing bash completion test. diff --git a/monotone.sysconfig b/monotone.sysconfig index a61496a..8aa8ac9 100644 --- a/monotone.sysconfig +++ b/monotone.sysconfig @@ -1,10 +1,16 @@ -MONOTONE_CONFDIR=/etc/monotone -MONOTONE_KEYDIR=/etc/monotone/private-keys -MONOTONE_DBFILE=/var/lib/monotone/server.mtn -MONOTONE_PPFILE=/etc/monotone/passphrase.lua +# Options for the Monotone DVCS Server +# +# options can be changed here, or (better) within override files in +# /etc/systemd/system/monotone.service.d -MONOTONE_RCOPTS="--confdir=$MONOTONE_CONFDIR" -MONOTONE_DBOPTS="--db=$MONOTONE_DBFILE --keydir=$MONOTONE_KEYDIR" -MONOTONE_PPOPTS="--rcfile=$MONOTONE_PPFILE" +# --confdir: location of the configuration directory +#MONOTONE_CONFDIR=/etc/monotone -MONOTONE_SERVE_OPTS="" +# --keydir: location of the key store +#MONOTONE_KEYDIR=/etc/monotone/private-keys + +# --db: name of the database file +#MONOTONE_DBFILE=/var/lib/monotone/server.mtn + +# --rcfile: used to pass the passphrase of the server's private key +#MONOTONE_PPFILE=/etc/monotone/passphrase.lua diff --git a/sources b/sources index b9eb4ad..b46ef88 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -6a0b5d8560f08d76a950172f9ed0feff monotone-1.0.tar.bz2 +df3f40ca22120aa142ac9becba9e1bf7 monotone-1.1.tar.bz2