]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/commitdiff
rcs: New package.
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 2 Mar 2012 19:21:14 +0000 (20:21 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 2 Mar 2012 19:21:14 +0000 (20:21 +0100)
Required to build ca-certificates.

rcs/patches/rcs-5.8-build-tweaks.patch [new file with mode: 0644]
rcs/patches/rcs-5.8-newsvnsyntax.patch [new file with mode: 0644]
rcs/patches/rcs-5.8-sameuserlocks.patch [new file with mode: 0644]
rcs/rcs.nm [new file with mode: 0644]

diff --git a/rcs/patches/rcs-5.8-build-tweaks.patch b/rcs/patches/rcs-5.8-build-tweaks.patch
new file mode 100644 (file)
index 0000000..130d452
--- /dev/null
@@ -0,0 +1,15 @@
+diff -up rcs-5.8/man/Makefile.in.build-tweaks rcs-5.8/man/Makefile.in
+--- rcs-5.8/man/Makefile.in.build-tweaks       2011-08-28 13:14:24.000000000 +0200
++++ rcs-5.8/man/Makefile.in    2011-09-07 15:48:30.485492906 +0200
+@@ -876,9 +876,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 rcsintro.1 rcsmerge.1 rlog.1
++  rcsdiff.1 rcsfile.5 rcsintro.1 rcsmerge.1 rlog.1 rcsfreeze.1
+-dist_noinst_MANS = rcsfreeze.1
++#dist_noinst_MANS = 
+ BUILT_SOURCES = REL $(dist_noinst_MANS)
+ bits = b-base \
+   b-emptylogmessage \
diff --git a/rcs/patches/rcs-5.8-newsvnsyntax.patch b/rcs/patches/rcs-5.8-newsvnsyntax.patch
new file mode 100644 (file)
index 0000000..c63f884
--- /dev/null
@@ -0,0 +1,42 @@
+diff -up rcs-5.8/src/ident.c.newsvnsyntax rcs-5.8/src/ident.c
+--- rcs-5.8/src/ident.c.newsvnsyntax   2011-01-07 13:27:18.000000000 +0100
++++ rcs-5.8/src/ident.c        2011-09-08 10:53:34.064837699 +0200
+@@ -41,14 +41,20 @@ match (register FILE *fp)
+   char line[BUFSIZ];
+   register int c;
+   register char *tp;
++  int COLON_C = 0;
++  int MAX_COLON = 1;
+   tp = line;
+-  while ((c = getc (fp)) != VDELIM)
++  while ((c = getc (fp)) && (COLON_C < MAX_COLON))
+     {
+       if (c == EOF && feof (fp) | ferror (fp))
+         return c;
+       switch (ctab[c])
+         {
++        case COLON:
++          *tp++ = c;
++          COLON_C++;
++          break;
+         case LETTER:
+         case Letter:
+           *tp++ = c;
+@@ -62,7 +68,15 @@ match (register FILE *fp)
+     }
+   if (tp == line)
+     return c;
+-  *tp++ = c;
++  if (c == ' ')
++    {
++      ungetc(c,fp);
++    }
++  else
++    {
++      *tp++ = c;
++    }
++
+   if ((c = getc (fp)) != ' ')
+     return c ? c : '\n';
+   *tp++ = c;
diff --git a/rcs/patches/rcs-5.8-sameuserlocks.patch b/rcs/patches/rcs-5.8-sameuserlocks.patch
new file mode 100644 (file)
index 0000000..d5696be
--- /dev/null
@@ -0,0 +1,198 @@
+diff -up rcs-5.8/man/co.1in.sameuserlocks rcs-5.8/man/co.1in
+--- rcs-5.8/man/co.1in.sameuserlocks   2011-01-07 13:27:18.000000000 +0100
++++ rcs-5.8/man/co.1in 2011-09-08 11:41:09.545810466 +0200
+@@ -318,6 +318,10 @@ Use this option with care; it can confus
+ retrieves the latest revision on the selected branch whose state is set to
+ .IR state .
+ .TP
++.BI \-S
++Turns on same user locks.  When this is enabled the user cannot check out
++the same file twice.
++.TP
+ .B \-T
+ Preserve the modification time on the \*o
+ even if the \*o changes because a lock is added or removed.
+diff -up rcs-5.8/src/b-excwho.c.sameuserlocks rcs-5.8/src/b-excwho.c
+--- rcs-5.8/src/b-excwho.c.sameuserlocks       2011-01-07 13:27:18.000000000 +0100
++++ rcs-5.8/src/b-excwho.c     2011-09-08 11:41:09.546810466 +0200
+@@ -205,9 +205,9 @@ getcaller (void)
+ }
+ bool
+-caller_login_p (char const *login)
++caller_login_p (char const *login, int sameuserlocks)
+ {
+-  return STR_SAME (getcaller (), login);
++  return STR_SAME (getcaller (), login) && !sameuserlocks;
+ }
+ struct link *
+@@ -255,7 +255,7 @@ lock_drop (struct link *box, struct link
+ }
+ int
+-addlock (struct delta *delta, bool verbose)
++addlock (struct delta *delta, bool verbose, int sameuserlocks)
+ /* Add a lock held by caller to ‘delta’ and return 1 if successful.
+    Print an error message if ‘verbose’ and return -1 if no lock is
+    added because ‘delta’ is locked by somebody other than caller.
+@@ -266,7 +266,7 @@ addlock (struct delta *delta, bool verbo
+   if (was)
+     {
+-      if (caller_login_p (was->login))
++      if (caller_login_p (was->login, sameuserlocks))
+         return 0;
+       if (verbose)
+         RERR ("Revision %s is already locked by %s.", delta->num, was->login);
+diff -up rcs-5.8/src/b-excwho.h.sameuserlocks rcs-5.8/src/b-excwho.h
+--- rcs-5.8/src/b-excwho.h.sameuserlocks       2011-01-07 13:27:18.000000000 +0100
++++ rcs-5.8/src/b-excwho.h     2011-09-08 11:43:06.424809351 +0200
+@@ -27,11 +27,11 @@ extern void seteid (void);
+ extern void setrid (void);
+ extern char const *getusername (bool suspicious);
+ extern char const *getcaller (void);
+-extern bool caller_login_p (char const *login);
++extern bool caller_login_p (char const *login, int sameuserlocks);
+ extern struct link *lock_memq (struct link *ls, bool loginp, void const *x);
+ extern struct rcslock const *lock_on (struct delta const *delta);
+ extern void lock_drop (struct link *box, struct link *tp);
+-extern int addlock (struct delta *delta, bool verbose);
++extern int addlock (struct delta *delta, bool verbose, int sameuserlocks);
+ /* Idioms.  */
+diff -up rcs-5.8/src/ci.c.sameuserlocks rcs-5.8/src/ci.c
+--- rcs-5.8/src/ci.c.sameuserlocks     2011-08-08 14:00:25.000000000 +0200
++++ rcs-5.8/src/ci.c   2011-09-08 11:41:09.585810465 +0200
+@@ -153,7 +153,7 @@ removelock (struct delta *delta)
+       return -1;
+     }
+   rl = tp->next->entry;
+-  if (! caller_login_p (rl->login))
++  if (! caller_login_p (rl->login, false))
+     {
+       RERR ("revision %s locked by %s", num, rl->login);
+       return -1;
+@@ -260,7 +260,7 @@ addbranch (struct delta *branchpoint, st
+   newbranch.entry = &newdelta;
+   newdelta.ilk = NULL;
+   if (branchpoint->lockedby)
+-    if (caller_login_p (branchpoint->lockedby))
++    if (caller_login_p (branchpoint->lockedby, false))
+       return removelock (branchpoint);  /* This returns 1.  */
+   return removedlock;
+ }
+@@ -1006,7 +1006,7 @@ main (int argc, char **argv)
+             continue;
+           }
+-        if (lockflag && addlock (&newdelta, true) < 0)
++        if (lockflag && addlock (&newdelta, true, false) < 0)
+           continue;
+         if (keepflag && (pv = PREV (name)))
+diff -up rcs-5.8/src/co.c.sameuserlocks rcs-5.8/src/co.c
+--- rcs-5.8/src/co.c.sameuserlocks     2011-08-08 14:00:25.000000000 +0200
++++ rcs-5.8/src/co.c   2011-09-08 11:41:09.587810465 +0200
+@@ -135,7 +135,7 @@ rmlock (struct delta const *delta)
+     /* No lock on ‘delta’.  */
+     return 0;
+   rl = tp->next->entry;
+-  if (!caller_login_p (rl->login))
++  if (!caller_login_p (rl->login, false))
+     /* Found a lock on ‘delta’ by someone else.  */
+     {
+       RERR ("revision %s locked by %s; use co -r or rcs -u",
+@@ -441,6 +441,7 @@ main (int argc, char **argv)
+   int changelock;
+   int expmode, r, workstatstat;
+   bool tostdout, Ttimeflag;
++  int sameuserlocks;
+   char finaldate[datesize];
+ #if OPEN_O_BINARY
+   int stdout_mode = 0;
+@@ -464,6 +465,7 @@ main (int argc, char **argv)
+   BE (pe) = X_DEFAULT;
+   tostdout = false;
+   Ttimeflag = false;
++  sameuserlocks = false;
+   argc = getRCSINIT (argc, argv, &newargv);
+   argv = newargv;
+@@ -543,6 +545,14 @@ main (int argc, char **argv)
+             }
+           break;
++        case 'S':
++          /* 
++           *  Enable strict locks (i.e. even the same user cannot
++           *  re-check out a file with a lock that he owns.
++           */
++          sameuserlocks = true;
++          break;
++
+         case 'T':
+           if (*a)
+             goto unknown;
+@@ -699,7 +709,7 @@ main (int argc, char **argv)
+             /* Check reservations.  */
+             changelock = lockflag < 0
+               ? rmlock (targetdelta)
+-              : lockflag == 0 ? 0 : addlock (targetdelta, true);
++              : lockflag == 0 ? 0 : addlock (targetdelta, true, sameuserlocks);
+             if (changelock < 0
+                 || (changelock && !checkaccesslist ())
+diff -up rcs-5.8/src/rcsclean.c.sameuserlocks rcs-5.8/src/rcsclean.c
+--- rcs-5.8/src/rcsclean.c.sameuserlocks       2011-08-08 14:00:25.000000000 +0200
++++ rcs-5.8/src/rcsclean.c     2011-09-08 11:41:09.588810465 +0200
+@@ -66,7 +66,7 @@ unlock (struct delta *delta)
+   struct link box, *tp;
+   if (delta && delta->lockedby
+-      && caller_login_p (delta->lockedby)
++      && caller_login_p (delta->lockedby, false)
+       && (box.next = GROK (locks))
+       && (tp = lock_delta_memq (&box, delta)))
+     {
+diff -up rcs-5.8/src/rcs.c.sameuserlocks rcs-5.8/src/rcs.c
+--- rcs-5.8/src/rcs.c.sameuserlocks    2011-08-08 13:58:59.000000000 +0200
++++ rcs-5.8/src/rcs.c  2011-09-08 11:41:09.590810465 +0200
+@@ -495,7 +495,7 @@ breaklock (struct delta const *delta)
+     }
+   rl = tp->next->entry;
+   before = rl->login;
+-  if (!caller_login_p (before)
++  if (!caller_login_p (before, false)
+       && !sendmail (num, before))
+     {
+       RERR ("revision %s still locked by %s", num, before);
+@@ -794,8 +794,8 @@ setlock (char const *rev, struct wlink *
+             RERR ("can't lock nonexisting revision %s", numrev.string);
+           else
+             {
+-              if ((r = addlock (target, false)) < 0 && breaklock (target))
+-                r = addlock (target, true);
++              if ((r = addlock (target, false, false)) < 0 && breaklock (target))
++                r = addlock (target, true, false);
+               if (0 <= r)
+                 {
+                   if (r)
+diff -up rcs-5.8/src/rcsedit.c.sameuserlocks rcs-5.8/src/rcsedit.c
+--- rcs-5.8/src/rcsedit.c.sameuserlocks        2011-08-08 14:00:25.000000000 +0200
++++ rcs-5.8/src/rcsedit.c      2011-09-08 11:41:09.591810465 +0200
+@@ -1086,11 +1086,11 @@ checkaccesslist (void)
+ {
+   struct link *ls = GROK (access);
+-  if (!ls || stat_mine_p (&REPO (stat)) || caller_login_p ("root"))
++  if (!ls || stat_mine_p (&REPO (stat)) || caller_login_p ("root", false))
+     return true;
+   for (; ls; ls = ls->next)
+-    if (caller_login_p (ls->entry))
++    if (caller_login_p (ls->entry, false))
+       return true;
+   RERR ("user %s not on the access list", getcaller ());
diff --git a/rcs/rcs.nm b/rcs/rcs.nm
new file mode 100644 (file)
index 0000000..85b9e00
--- /dev/null
@@ -0,0 +1,63 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = rcs
+version    = 5.8
+release    = 1
+
+groups     = Development/Tools
+url        = http://www.gnu.org/software/rcs/
+license    = GPLv3+
+summary    = Revision Control System (RCS) file version management tools.
+
+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.
+end
+
+source_dl  = ftp://ftp.gnu.org/gnu/rcs/
+
+build
+       requires
+               autoconf
+               ed
+               ghostscript
+               groff
+       end
+
+       prepare_cmds
+               autoconf
+       end
+
+       configure_options += \
+               --with-diffutils
+
+       #test
+       #       make check
+       #end
+
+       install_cmds
+               # Install the rcsfreeze command.
+               install -m 755 src/rcsfreeze %{BUILDROOT}%{bindir}
+       end
+end
+
+packages
+       package %{name}
+               requires
+                       diffutils
+               end
+       end
+
+       package %{name}-debuginfo
+               template DEBUGINFO
+       end
+end