diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b182531 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/rcs-5.9.0.tar.xz diff --git a/.rcs.metadata b/.rcs.metadata new file mode 100644 index 0000000..9939701 --- /dev/null +++ b/.rcs.metadata @@ -0,0 +1 @@ +c7d7d5d91eeccbad405f5c617b34a2e99212f4bb SOURCES/rcs-5.9.0.tar.xz diff --git a/SOURCES/rcs-5.8-build-tweaks.patch b/SOURCES/rcs-5.8-build-tweaks.patch new file mode 100644 index 0000000..d2f16bc --- /dev/null +++ b/SOURCES/rcs-5.8-build-tweaks.patch @@ -0,0 +1,15 @@ +diff -up ./man/Makefile.in.build-tweaks ./man/Makefile.in +--- ./man/Makefile.in.build-tweaks 2013-05-06 09:28:45.000000000 +0200 ++++ ./man/Makefile.in 2013-05-10 23:03:36.975917262 +0200 +@@ -1237,9 +1237,9 @@ top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + dist_man_MANS = ci.1 co.1 ident.1 merge.1 rcs.1 rcsclean.1 \ +- rcsdiff.1 rcsfile.5 rcsmerge.1 rlog.1 ++ rcsdiff.1 rcsfile.5 rcsmerge.1 rlog.1 rcsfreeze.1 + +-dist_noinst_MANS = rcsfreeze.1 ++#dist_noinst_MANS = rcsfreeze.1 + BUILT_SOURCES = REL $(dist_noinst_MANS) + bits = b-base \ + b-emptylogmessage \ diff --git a/SOURCES/rcs-5.9-coperf.patch b/SOURCES/rcs-5.9-coperf.patch new file mode 100644 index 0000000..e1ef3c7 --- /dev/null +++ b/SOURCES/rcs-5.9-coperf.patch @@ -0,0 +1,177 @@ +There seems to be a performance regression in 5.8+ versions of RCS. + +RCS consults env var ‘RCS_MEM_LIMIT’ to determine whether or not to fall +back to (slow) stdio mode (which uses temporary files) from the default +in-memory (mmap et al) mode. The default value is "256" (kilobytes), which +is probably too low these days on most workstations. + +RHBZ#1036527 +Upstream: https://savannah.gnu.org/bugs/index.php?40200 + +diff -U0 rcs-5.9.0/ChangeLog.coperf rcs-5.9.0/ChangeLog +--- rcs-5.9.0/ChangeLog.coperf 2013-12-03 13:33:59.544075057 +0100 ++++ rcs-5.9.0/ChangeLog 2013-12-03 13:38:42.814534824 +0100 +@@ -0,0 +1,7 @@ ++2013-10-20 Thien-Thi Nguyen ++ ++ Relax RCS_MEM_LIMIT default; fall back if unspecified. ++ ++ * doc/rcs.texi (Environment): Update ‘RCS_MEM_LIMIT’ description; ++ add a willful ignorance hint and speculation on its removal. ++ +diff -up rcs-5.9.0/doc/rcs.texi.coperf rcs-5.9.0/doc/rcs.texi +--- rcs-5.9.0/doc/rcs.texi.coperf 2013-05-06 10:29:41.000000000 +0200 ++++ rcs-5.9.0/doc/rcs.texi 2013-12-03 13:33:59.545075058 +0100 +@@ -1002,12 +1002,20 @@ the rest of the command-line. The effec + @cindex memory limit + Normally, for speed, commands either memory map or copy into memory + the @repo{} if its size is less than the @dfn{memory limit}, currently +-defaulting to 256 kilobytes. Otherwise the commands fall back to using ++defaulting to ``unlimited''. ++Otherwise (or if the initially-tried speedy ways fail), ++the commands fall back to using + standard i/o routines. + + You can adjust the memory limit by setting the @samp{RCS_MEM_LIMIT} + environment variable to a numeric value (measured in kilobytes). + An empty value is silently ignored. ++ ++As a side effect, specifying the memory limit inhibits ++fall-back to slower routines. ++(This env var is mostly intended for testing RCS; ++normally, you can leave it unset. Probably it will be ++removed in a future release.) + @end defvr + + @defvr {Environment Variable} TMPDIR +diff -up rcs-5.9.0/src/base.h.coperf rcs-5.9.0/src/base.h +--- rcs-5.9.0/src/base.h.coperf 2013-05-03 10:25:05.000000000 +0200 ++++ rcs-5.9.0/src/base.h 2013-12-03 13:33:59.548075060 +0100 +@@ -522,6 +522,7 @@ struct behavior + (if mmap(2)), or operate on a copy of it in core (if no mmap(2)). + Otherwise, use standard i/o routines as the fallback. + Set by env var ‘RCS_MEM_LIMIT’. ++ See also ‘MEMORY_UNLIMITED’. + -- gnurcs_init */ + + struct sff *sff; +@@ -861,6 +862,8 @@ int getRCSINIT (int argc, char **argv, c + + /* Idioms. */ + ++#define MEMORY_UNLIMITED -1 ++ + #define BOG_DIFF (TYAG_TEMPUNLINK | TYAG_DIFF) + #define BOG_ZONK (TYAG_DIRTMPUNLINK | TYAG_TEMPUNLINK) + #define BOG_FULL (TYAG_ORCSERROR | BOG_ZONK) +diff -up rcs-5.9.0/src/b-fro.c.coperf rcs-5.9.0/src/b-fro.c +--- rcs-5.9.0/src/b-fro.c.coperf 2013-04-30 17:52:07.000000000 +0200 ++++ rcs-5.9.0/src/b-fro.c 2013-12-03 13:37:07.237305286 +0100 +@@ -61,6 +61,7 @@ fro_open (char const *name, char const * + | (strchr (type, 'b') ? OPEN_O_BINARY : 0) + #endif + )); ++ bool unlimited = MEMORY_UNLIMITED == BE (mem_limit); + + if (PROB (fd)) + return NULL; +@@ -81,12 +82,25 @@ fro_open (char const *name, char const * + f->end = s; + + /* Determine the read method. */ +- f->rm = status->st_size < 1024 * BE (mem_limit) ++ f->rm = (unlimited ++ || status->st_size < 1024 * BE (mem_limit)) + ? (MMAP_SIGNAL && status->st_size + ? RM_MMAP + : RM_MEM) + : RM_STDIO; + ++#define STUBBORNLY_RETRY_MAYBE(METHOD) do \ ++ { \ ++ if (unlimited) \ ++ { \ ++ f->rm = METHOD; \ ++ goto retry; \ ++ } \ ++ fatal_sys (name); \ ++ } \ ++ while (0) ++ ++ retry: + switch (f->rm) + { + case RM_MMAP: +@@ -98,7 +112,7 @@ fro_open (char const *name, char const * + ISR_DO (CATCHMMAPINTS); + f->base = mmap (NULL, s, PROT_READ, MAP_SHARED, fd, 0); + if (f->base == MAP_FAILED) +- fatal_sys (name); ++ STUBBORNLY_RETRY_MAYBE (RM_MEM); + /* On many hosts, the superuser can mmap an NFS file + it can't read. So access the first page now, and + print a nice message if a bus error occurs. */ +@@ -131,7 +145,7 @@ fro_open (char const *name, char const * + do + { + if (PROB (r = read (fd, bufptr, bufsiz))) +- fatal_sys (name); ++ STUBBORNLY_RETRY_MAYBE (RM_STDIO); + + if (!r) + { +@@ -147,7 +161,7 @@ fro_open (char const *name, char const * + } + while (bufsiz); + if (PROB (lseek (fd, 0, SEEK_SET))) +- fatal_sys (name); ++ STUBBORNLY_RETRY_MAYBE (RM_STDIO); + } + f->ptr = f->base; + f->lim = f->base + s; +@@ -162,6 +176,8 @@ fro_open (char const *name, char const * + + f->fd = fd; + return f; ++ ++#undef STUBBORNLY_RETRY_MAYBE + } + + void +diff -U0 rcs-5.9.0/src/ChangeLog.coperf rcs-5.9.0/src/ChangeLog +--- rcs-5.9.0/src/ChangeLog.coperf 2013-12-03 13:33:59.547075059 +0100 ++++ rcs-5.9.0/src/ChangeLog 2013-12-03 13:38:52.305555851 +0100 +@@ -0,0 +1,12 @@ ++2013-10-20 Thien-Thi Nguyen ++ ++ Relax RCS_MEM_LIMIT default; fall back if unspecified. ++ ++ * base.h (MEMORY_UNLIMITED): New #define. ++ * rcsutil.c (gnurcs_init): If unspecified, ++ default ‘BE (mem_limit)’ to ‘MEMORY_UNLIMITED’. ++ * b-fro.c (fro_open): Notice ‘MEMORY_UNLIMITED’ mem limit; ++ in that case, don't check file size, and on ‘RM_MMAP’ or ++ ‘RM_MEM’ failure, retry w/ the "next" method: ‘RM_MEM’ or ++ ‘RM_STDIO’, respectively. ++ +diff -up rcs-5.9.0/src/rcsutil.c.coperf rcs-5.9.0/src/rcsutil.c +--- rcs-5.9.0/src/rcsutil.c.coperf 2013-05-03 13:52:56.000000000 +0200 ++++ rcs-5.9.0/src/rcsutil.c 2013-12-03 13:33:59.548075060 +0100 +@@ -103,7 +103,7 @@ gnurcs_init (struct program const *progr + ? 0 + : lim) + /* Default value. */ +- : 256; ++ : MEMORY_UNLIMITED; + } + } + +diff -up rcs-5.9.0/THANKS.coperf rcs-5.9.0/THANKS +--- rcs-5.9.0/THANKS.coperf 2013-12-03 13:33:59.544075057 +0100 ++++ rcs-5.9.0/THANKS 2013-12-03 13:34:57.565111763 +0100 +@@ -47,4 +47,5 @@ and reporting bugs (sometimes with fixes + Jiri Moskovcak + James Olin Oden + Derek McEachern ++ Andrew J. Schorr + (and others who prefer anonymity) diff --git a/SOURCES/rcs-5.9-rlog_fix_locks.patch b/SOURCES/rcs-5.9-rlog_fix_locks.patch new file mode 100644 index 0000000..0423532 --- /dev/null +++ b/SOURCES/rcs-5.9-rlog_fix_locks.patch @@ -0,0 +1,20 @@ +diff -up rcs-5.9.0/src/rlog.c.fix_locks rcs-5.9.0/src/rlog.c +--- rcs-5.9.0/src/rlog.c.fix_locks 2019-04-24 18:24:50.631189377 +0200 ++++ rcs-5.9.0/src/rlog.c 2019-04-24 18:25:03.060364074 +0200 +@@ -894,7 +894,6 @@ rlog_main (const char *cmd, int argc, ch + repo_filename = REPO (filename); + tip = REPO (tip); + defbr = GROK (branch); +- locks = GROK (locks); + strictly_locking = BE (strictly_locking); + kws = BE (kws); + +@@ -902,6 +901,8 @@ rlog_main (const char *cmd, int argc, ch + if (lockflag) + trunclocks (&criteria); + ++ locks = GROK (locks); ++ + /* Do nothing if ‘-L’ is given and there are no locks. */ + if (onlylockflag && !locks) + continue; diff --git a/SPECS/rcs.spec b/SPECS/rcs.spec new file mode 100644 index 0000000..da9507d --- /dev/null +++ b/SPECS/rcs.spec @@ -0,0 +1,231 @@ +Summary: Revision Control System (RCS) file version management tools +Name: rcs +Version: 5.9.0 +Release: 7%{?dist} +License: GPLv3+ +Group: Development/Tools +URL: http://www.gnu.org/software/rcs/ +Source: ftp://ftp.gnu.org/gnu/rcs/%{name}-%{version}.tar.xz +Patch0: rcs-5.8-build-tweaks.patch +Patch1: rcs-5.9-coperf.patch +Patch2: rcs-5.9-rlog_fix_locks.patch +Provides: bundled(gnulib) +BuildRequires: autoconf +BuildRequires: groff +BuildRequires: ghostscript +BuildRequires: ed +BuildRequires: texinfo +Requires: diffutils +Requires(post): /sbin/install-info +Requires(postun): /sbin/install-info + +%description +The Revision Control System (RCS) is a system for managing multiple +versions of files. RCS automates the storage, retrieval, logging, +identification and merging of file revisions. RCS is useful for text +files that are revised frequently (for example, programs, +documentation, graphics, papers and form letters). + +The rcs package should be installed if you need a system for managing +different versions of files. + +%prep +%setup -q +%patch0 -p1 -b .build-tweaks +%patch1 -p1 -b .coperf +%patch2 -p1 -b .rlog_fix_locks +autoconf + +%build +%configure --with-diffutils +make %{?_smp_mflags} + +%install +make DESTDIR=$RPM_BUILD_ROOT install + +install -m 755 src/rcsfreeze $RPM_BUILD_ROOT%{_bindir} + +rm -f $RPM_BUILD_ROOT/%{_infodir}/dir + +%check +make check + +%post +/sbin/install-info %{_infodir}/%{name}.info.gz %{_infodir}/dir 2>/dev/null || : + + +%postun +if [ $1 -eq 0 ]; then + /sbin/install-info --delete %{_infodir}/%{name}.info.gz %{_infodir}/dir 2>/dev/null || : +fi + +%files +%doc ChangeLog COPYING THANKS NEWS README +%{_bindir}/* +%{_mandir}/man[15]/* +%{_infodir}/* + +%changelog +* Tue Jul 23 2019 Matej Mužila - 5.9.0-7 +- Rebuild against current buildroot +- Resolves: #1696716 + +* Tue Jul 23 2019 Matej Mužila - 5.9.0-6 +- Fix the -l option of rlog + Resolves: #1696716 + +* Fri Jan 24 2014 Daniel Mach - 5.9.0-5 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 5.9.0-4 +- Mass rebuild 2013-12-27 + +* Tue Dec 3 2013 Honza Horak - 5.9.0-3 +- Fix performance issues + Resolves: #1036527 + +* Fri May 10 2013 Honza Horak - 5.9.0-1 +- Update to upstream 5.9.0 + +* Thu Apr 4 2013 Honza Horak - 5.8.2-1 +- Update to upstream 5.8.2 +- Fix some man page vs. help incompatibilities + +* Thu Jan 24 2013 Honza Horak - 5.8.1-5 +- Remove sendmail from build requirements, it's not configured to be used + Related: #903368 + +* Fri Nov 23 2012 Honza Horak - 5.8.1-4 +- Use make DESTDIR=... install instead of %%make_install + +* Sat Jul 21 2012 Fedora Release Engineering - 5.8.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jun 07 2012 Honza Horak - 5.8.1-2 +- Provides: bundled(gnulib) added, as per #821786 +- minor spec file clean up +- install-info run in postin/postun + +* Wed Jun 06 2012 Honza Horak - 5.8.1-1 +- Update to upstream 5.8.1 + +* Sat Jan 14 2012 Fedora Release Engineering - 5.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Sep 08 2011 Honza Horak - 5.8-1 +- Update to upstream 5.8 +- Dropped patches -security, -DESTDIR and -option that are not needed + anymore +- Run tests in %%check + +* Wed Feb 09 2011 Fedora Release Engineering - 5.7-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Jan 11 2010 Ville Skyttä - 5.7-36 +- Add dependency on diffutils. +- Apply build tweaks patch from Debian (incl installing rcsfreeze). +- BuildRequire autoconf instead of automake. +- Actually configure instead of shipping a pregenerated conf.h (#226356). +- Ship docs as PDF rather than troff source. +- Run test suite during build. +- Include COPYING. + +* Sun Jul 26 2009 Fedora Release Engineering - 5.7-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 5.7-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Sep 3 2008 Tom "spot" Callaway - 5.7-33 +- fix license tag + +* Tue Feb 19 2008 Fedora Release Engineering - 5.7-32 +- Autorebuild for GCC 4.3 + +* Tue Jul 17 2007 Jiri Moskovcak - 5.7-31 +- Addded support for new svn syntax. +- Resolves: #247998 + +* Wed Jul 12 2006 Jesse Keating - 5.7-30.1 +- rebuild + +* Mon Jun 12 2006 Jesse Keating - 5.7-30 +- Add missing BR automake + +* Fri Feb 10 2006 Jesse Keating - 5.7-29.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 5.7-29.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Oct 10 2005 Phil Knirsch 5.7-29 +- Fixed bug with obsolete and changed -u option for diff (#165071) + +* Wed Mar 02 2005 Phil Knirsch 5.7-28 +- bump release and rebuild with gcc 4 + +* Sun Feb 13 2005 Florian La Roche 5.7-27 +- add spec change from #144485 + +* Tue Sep 21 2004 Phil Knirsch 5.7-26 +- rebuilt + +* Tue Jun 15 2004 Elliot Lee 5.7-25 +- rebuilt + +* Fri Feb 13 2004 Elliot Lee 5.7-24 +- rebuilt + +* Wed Feb 04 2004 Phil Knirsch 5.7-23 +- Switched copyright to license. :-) + +* Fri Oct 31 2003 Phil Knirsch 5.7-22 +- Included sameuserlocks patch from James Olin Oden (#107947). + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Wed Dec 11 2002 Tim Powers 5.7-19 +- rebuild on all arches + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Sun Jun 24 2001 Elliot Lee +- Bump release + rebuild. + +* Fri Jan 05 2001 Preston Brown +- tmpfile security patch from Olaf Kirch + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Thu Jun 15 2000 Jeff Johnson +- FHS packaging. + +* Mon Feb 7 2000 Jeff Johnson +- compress man pages. + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 10) + +* Tue May 05 1998 Prospector System +- translations modified for de, fr, tr + +* Tue Oct 21 1997 Cristian Gafton +- fixed the spec file; added BuildRoot + +* Fri Jul 18 1997 Erik Troan +-built against glibc