unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: aegis: New variable.
@ 2014-07-16 13:47 John Darrington
  2014-07-17 15:00 ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: John Darrington @ 2014-07-16 13:47 UTC (permalink / raw)
  To: guix-devel; +Cc: John Darrington

* gnu/packages/version-control.scm (aegis): New variable.
* gnu/packages/patches/aegis-constness-error.patch: New file.
* gnu/packages/patches/aegis-perl-tempdir1.patch: New file.
* gnu/packages/patches/aegis-perl-tempdir2.patch: New file.
* gnu/packages/patches/aegis-test-fixup-1.patch: New file.
* gnu/packages/patches/aegis-test-fixup-2.patch: New file.
---
 gnu/packages/patches/aegis-constness-error.patch |   12 +++
 gnu/packages/patches/aegis-perl-tempdir1.patch   |   14 ++++
 gnu/packages/patches/aegis-perl-tempdir2.patch   |   18 +++++
 gnu/packages/patches/aegis-test-fixup-1.patch    |   15 ++++
 gnu/packages/patches/aegis-test-fixup-2.patch    |   24 ++++++
 gnu/packages/version-control.scm                 |   92 ++++++++++++++++++++++
 6 files changed, 175 insertions(+)
 create mode 100644 gnu/packages/patches/aegis-constness-error.patch
 create mode 100644 gnu/packages/patches/aegis-perl-tempdir1.patch
 create mode 100644 gnu/packages/patches/aegis-perl-tempdir2.patch
 create mode 100644 gnu/packages/patches/aegis-test-fixup-1.patch
 create mode 100644 gnu/packages/patches/aegis-test-fixup-2.patch

diff --git a/gnu/packages/patches/aegis-constness-error.patch b/gnu/packages/patches/aegis-constness-error.patch
new file mode 100644
index 0000000..c92e28d
--- /dev/null
+++ b/gnu/packages/patches/aegis-constness-error.patch
@@ -0,0 +1,12 @@
+Fixes a fatal constness error with g++ 4.8.2
+--- aegis-4.24/common/ac/string/memmem.cc	2008-03-14 07:19:27.000000000 +0100
++++ aegis-4.24/common/ac/string/memmem.cc	2014-01-26 11:17:58.000000000 +0100
+@@ -182,7 +182,7 @@
+ 
+     // Use optimizations in memchr when possible.
+     if (needle_len == 1)
+-        return memchr(haystack, *needle, haystack_len);
++        return (void *) memchr(haystack, *needle, haystack_len);
+ 
+     // Minimizing the worst-case complexity:
+     // Let n = haystack_len, m = needle_len.
diff --git a/gnu/packages/patches/aegis-perl-tempdir1.patch b/gnu/packages/patches/aegis-perl-tempdir1.patch
new file mode 100644
index 0000000..5611bb2
--- /dev/null
+++ b/gnu/packages/patches/aegis-perl-tempdir1.patch
@@ -0,0 +1,14 @@
+This patch removes the hard coded tmp dir (which might not exist on the system)
+and replaces it using the perl prefered method
+--- aegis-4.24/script/aebisect.in	2008-03-14 07:19:27.000000000 +0100
++++ aegis-4.24/script/aebisect.in	2014-01-26 11:03:31.000000000 +0100
+@@ -34,7 +34,8 @@
+ # @configure_input@
+ #
+ # Configure additions?
+-my $TmpDir   = "/var/tmp";
++use File::Temp qw/ tempdir /;
++my $TmpDir   = tempdir();
+ my $ProgramName = "aebisect";
+ 
+ require 5.004;
diff --git a/gnu/packages/patches/aegis-perl-tempdir2.patch b/gnu/packages/patches/aegis-perl-tempdir2.patch
new file mode 100644
index 0000000..244a196
--- /dev/null
+++ b/gnu/packages/patches/aegis-perl-tempdir2.patch
@@ -0,0 +1,18 @@
+--- aegis-4.24/script/aeintegratq.in	2008-03-14 07:19:27.000000000 +0100
++++ aegis-4.24/script/aeintegratq.in	2014-01-26 16:08:22.000000000 +0100
+@@ -49,13 +49,14 @@
+ #
+ # @configure_input@
+ #
++use File::Temp qw/ tempdir /; 
+ # Grab useful locations from configure
+ $BinDir  = "@bindir@";
+  # configure does not expand @comdir@ directly so use sharedstatedir
+ $ComDir  = "@sharedstatedir@";
+ 
+ # Configure additions?
+-$TmpDir   = "/var/tmp";
++$TmpDir   = tempdir();
+   # base mail program that takes all info (to: subj: etc) on stdin
+ $SendMail = "/usr/lib/sendmail";
+   # Define the preferred integration host
diff --git a/gnu/packages/patches/aegis-test-fixup-1.patch b/gnu/packages/patches/aegis-test-fixup-1.patch
new file mode 100644
index 0000000..76e207e
--- /dev/null
+++ b/gnu/packages/patches/aegis-test-fixup-1.patch
@@ -0,0 +1,15 @@
+This test fails because it expects a mimetype "Content-Type: image/gif"
+whereas that provided by libmagic is "Content-Type: image/gif; charset=binary"
+Presumably the test was written against a different version.
+--- aegis-4.24/test/02/t0228a-matt.sh	2008-03-14 07:19:27.000000000 +0100
++++ aegis-4.24/test/02/t0228a-matt.sh	2014-01-27 09:43:44.000000000 +0100
+@@ -147,7 +147,8 @@
+ SCRIPT_NAME=/cgi-bin/aeget \
+ PATH_INFO=icon/rss.gif \
+ QUERY_STRING= \
+-$bin/aeget > rss.served.gif 2>&1
++$bin/aeget \
++| sed -e 's%^Content-Type: image/gif; charset=binary%Content-Type: image/gif%' > rss.served.gif 2>&1
+ if test $? -ne 0 ; then fail; fi
+ 
+ # Compare the expected and the actual received file.
diff --git a/gnu/packages/patches/aegis-test-fixup-2.patch b/gnu/packages/patches/aegis-test-fixup-2.patch
new file mode 100644
index 0000000..6ba8691
--- /dev/null
+++ b/gnu/packages/patches/aegis-test-fixup-2.patch
@@ -0,0 +1,24 @@
+This test was failing with subversion 1.7.8 because the svn repository structure
+was not as the test expected.  Presumably the test relies on different version.
+--- aegis-4.24/test/02/t0222a-pmil.sh	2008-03-14 07:19:27.000000000 +0100
++++ aegis-4.24/test/02/t0222a-pmil.sh	2014-01-27 19:48:30.000000000 +0100
+@@ -268,7 +268,8 @@
+     -c 10 > log 2>&1
+ if test $? -ne 0 ; then cat log; fail; fi
+ 
+-test -f $work/svnroot/db/revs/2 || fail
++activity="check svn db 271"
++test -f $work/svnroot/db/revs/0/2 || test -f $work/svnroot/db/revs/2 || fail
+ 
+ # --------------------------------------------------------------------------
+ 
+@@ -364,7 +365,8 @@
+     -c 3 > log 2>&1
+ if test $? -ne 0 ; then cat log; fail; fi
+ 
+-test -f $work/svnroot/db/revs/3 || fail
++activity="check svn db 368"
++test -f $work/svnroot/db/revs/0/3 || test -f $work/svnroot/db/revs/3 || fail
+ 
+ #
+ # Only definite negatives are possible.
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index b919900..e97bc35 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -29,9 +29,15 @@
   #:use-module (guix build-system python)
   #:use-module (guix build utils)
   #:use-module (gnu packages apr)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages cook)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages ed)
+  #:use-module (gnu packages file)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages groff)
+  #:use-module (gnu packages linux)
 ;;   #:use-module (gnu packages gnutls)
   #:use-module (gnu packages nano)
   #:use-module (gnu packages openssl)
@@ -478,3 +484,89 @@ large, complex patch files.")
 code control system SCCS.  This allows old code still under that system to be
 accessed and migrated on modern systems.")
     (license gpl3+)))
+
+;; This package can unfortunately work only in -TEST mode, since aegis ;;
+;; requires that it is installed setuid root, which is not currently possible
+;; in Guix (hopefully in forthcoming versions this will change).
+(define-public aegis
+  (package
+    (name "aegis")
+    (version "4.24")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/aegis/aegis-" version ".tar.gz"))
+              (sha256
+               (base32
+                "18s86ssarfmc4l17gbpzybca29m5wa37cbaimdji8czlcry3mcjl"))
+            (patches (list (search-patch "aegis-perl-tempdir1.patch")
+                           (search-patch "aegis-perl-tempdir2.patch")
+                           (search-patch "aegis-test-fixup-1.patch")
+                           (search-patch "aegis-test-fixup-2.patch")
+                           (search-patch "aegis-constness-error.patch")))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("e2fsprogs" ,e2fsprogs)
+       ("curl" ,curl)
+       ("file" ,file)
+       ("libxml2" ,libxml2)
+       ("zlib" ,zlib)
+       ("gettext" ,gnu-gettext)))
+    (native-inputs
+     `(("bison" ,bison)
+       ("groff" ,groff)
+       ("perl" ,perl)
+       ;; Various tests require the following:
+       ("cvs" ,cvs) 
+       ("flex" ,flex)
+       ("cook" ,cook)
+       ("subversion" ,subversion)
+       ("rcs" ,rcs)
+       ("ed" ,ed)))
+    (arguments
+     `(#:configure-flags (list "--with-no-aegis-configured" 
+                               "--sharedstatedir=/var/com/aegis")
+       #:parallel-build? #f ; There are some nasty racy rules in the Makefile.
+       #:phases 
+        (alist-cons-before
+         'configure 'pre-conf
+         (lambda _
+             (substitute* (append '("configure"
+                                    "etc/check-tar-gz.sh"
+                                    "etc/patches.sh"
+                                    "etc/test.sh"
+                                    "script/aexver.in"
+                                    "script/aebisect.in"
+                                    "script/aeintegratq.in"
+                                    "script/tkaegis.in"
+                                    "script/test_funcs.in"
+                                    "web/eg_oss_templ.sh"
+                                    "web/webiface.html"
+                                    "libaegis/getpw_cache.cc")
+                                  (find-files "test" "\\.sh"))
+               (("/bin/sh") (which "sh")))
+             (setenv "SH" (which "sh")))
+         (alist-replace
+          'check
+          (lambda _
+            (let ((home (string-append (getcwd) "/my-new-home")))
+              ;; Some tests need to write to $HOME.
+              (mkdir home)
+              (setenv "HOME" home)
+
+              ;; This test assumes that  flex has been symlinked to "lex".
+              (substitute* "test/00/t0011a.sh"
+                (("type lex")  "type flex"))
+
+              ;; The author decided to call the check rule "sure".
+              (zero? (system* "make" "sure"))))
+         %standard-phases))))
+    (home-page "http://aegis.sourceforge.net")
+    (synopsis "Project change supervisor")
+    (description "Aegis is a project change supervisor, and performs some of
+the Software Configuration Management needed in a CASE environment. Aegis
+provides a framework within which a team of developers may work on many
+changes to a program independently, and Aegis coordinates integrating these
+changes back into the master source of the program, with as little disruption
+as possible. Resolution of contention for source files, a major headache for
+any project with more than one developer, is one of Aegis's major functions.")
+    (license gpl3+)))
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-07-20 19:22 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-16 13:47 [PATCH] gnu: aegis: New variable John Darrington
2014-07-17 15:00 ` Ludovic Courtès
2014-07-17 15:54   ` John Darrington
2014-07-17 23:12     ` Ludovic Courtès
2014-07-17 16:05   ` John Darrington
2014-07-17 23:15     ` Ludovic Courtès
2014-07-18  4:35       ` John Darrington
2014-07-18 12:42         ` Ludovic Courtès
2014-07-20  7:18           ` John Darrington
2014-07-20 13:50             ` Ludovic Courtès
2014-07-20 19:22               ` John Darrington

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).