From 0e534e74aa68cea63302db19e7e39a72d0280b3d Mon Sep 17 00:00:00 2001 From: John Darrington Date: Fri, 24 Jan 2014 15:01:00 +0100 Subject: gnu: Add Aegis. * 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 (limited to 'gnu/packages') diff --git a/gnu/packages/patches/aegis-constness-error.patch b/gnu/packages/patches/aegis-constness-error.patch new file mode 100644 index 0000000000..2a6c9d2c37 --- /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 0000000000..9068b98a77 --- /dev/null +++ b/gnu/packages/patches/aegis-perl-tempdir1.patch @@ -0,0 +1,14 @@ +This patch removes the hard coded temporary directory (which might not exist on the system) +and replaces it using the Perl preferred 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 0000000000..244a196fe5 --- /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 0000000000..1ed4dad525 --- /dev/null +++ b/gnu/packages/patches/aegis-test-fixup-1.patch @@ -0,0 +1,15 @@ +This test fails because it expects a MIME type "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 0000000000..6ba8691ed3 --- /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 b919900f7c..d58cb94ac9 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -29,9 +29,15 @@ (define-module (gnu packages version-control) #: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 @@ (define-public cssc 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. +(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+))) -- cgit v1.2.3