From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34145) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dRU9G-0006fg-GR for guix-patches@gnu.org; Sat, 01 Jul 2017 21:58:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dRU9D-0006r7-1Z for guix-patches@gnu.org; Sat, 01 Jul 2017 21:58:06 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:45392) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dRU9C-0006qy-TP for guix-patches@gnu.org; Sat, 01 Jul 2017 21:58:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dRU9C-0001n7-JL for guix-patches@gnu.org; Sat, 01 Jul 2017 21:58:02 -0400 Subject: [bug#27554] Add dirvish and dependencies Resent-Message-ID: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34096) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dRU8g-0006eD-A2 for guix-patches@gnu.org; Sat, 01 Jul 2017 21:57:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dRU8c-0006hy-Tr for guix-patches@gnu.org; Sat, 01 Jul 2017 21:57:30 -0400 Received: from dustycloud.org ([50.116.34.160]:42020) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dRU8c-0006hD-L4 for guix-patches@gnu.org; Sat, 01 Jul 2017 21:57:26 -0400 Received: from oolong (localhost [127.0.0.1]) by dustycloud.org (Postfix) with ESMTPS id BA36726632 for ; Sat, 1 Jul 2017 21:57:23 -0400 (EDT) From: Christopher Allan Webber Date: Sat, 01 Jul 2017 20:57:22 -0500 Message-ID: <8737afvbwd.fsf@dustycloud.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 27554@debbugs.gnu.org --=-=-= Content-Type: text/plain This adds dirvish (a backup program) along with dependencies of perl-libtime-parsedate and perl-libtime-period. --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-gnu-Add-perl-libtime-parsedate.patch Content-Transfer-Encoding: quoted-printable >From 60a448f1daf37927155577dabaf1c090f9404bee Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Sat, 1 Jul 2017 20:45:04 -0500 Subject: [PATCH 1/3] gnu: Add perl-libtime-parsedate. * gnu/packages/perl.scm (perl-libtime-parsedate): New variable. --- gnu/packages/perl.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 6da4bb13f..6906bc2bb 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -16,6 +16,7 @@ ;;; Copyright =C2=A9 2017 Marius Bakke ;;; Copyright =C2=A9 2017 Adriano Peluso ;;; Copyright =C2=A9 2017 Tobias Geerinckx-Rice +;;; Copyright =C2=A9 2017 Christopher Allan Webber ;;; ;;; This file is part of GNU Guix. ;;; @@ -8248,3 +8249,41 @@ interface to File::Find::Object.") (description "Test::TrailingSpace tests for trailing spaces in Perl source files.") (license x11))) + +(define-public perl-libtime-parsedate + (package + (name "perl-libtime-parsedate") + (version "2015.103") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/M/MU/MUIR/modules/Time-ParseDate-= " + version ".tar.gz")) + (sha256 + (base32 "1lgfr87j4qwqnln0hyyzgik5ixqslzdaksn9m8y824gqbcihc6ic"))= )) + (build-system perl-build-system) + (arguments + ;; Output when running tests: + ;; t/metdate.t ... skipped: It seems localtime() does not honor + ;; $ENV{TZ} when set in the test script. + ;; Seemingly related: + ;; https://stackoverflow.com/questions/19956693/timeparsedate-ins= tall-fail + ;; https://rt.cpan.org/Public/Bug/Display.html?id=3D90367 + `(#:tests? #f)) + (native-inputs + `(("perl-module-build" ,perl-module-build))) + (home-page + "https://metacpan.org/release/Time-ParseDate") + (synopsis + "Collection of Perl modules for time/date manipulation") + (description "Provides several perl modules for date/time manipulati= on: +Time::CTime.pm, Time::JulianDay.pm, Time::ParseDate.pm, Time::Timezone.p= m, +and Time::DaysInMonth.pm.") + ;; License text: + ;; "License hereby granted for anyone to use, modify or redistribu= te this + ;; module at their own risk. Please feed useful changes back to + ;; cpan@dave.sharnoff.org." + (license (non-copyleft "http://metadata.ftp-master.debian.org/\ +changelogs/main/libt/libtime-parsedate-perl/\ +libtime-parsedate-perl_2015.103-2_copyright")))) --=20 2.13.1 --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0002-gnu-Add-perl-libtime-period.patch >From f475a133812a4d62e32a90caa26f41bb242f8a37 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Sat, 1 Jul 2017 20:46:00 -0500 Subject: [PATCH 2/3] gnu: Add perl-libtime-period. * gnu/packages/perl.scm (perl-libtime-period): New variable. --- gnu/packages/perl.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 6906bc2bb..93b74df8e 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -8287,3 +8287,32 @@ and Time::DaysInMonth.pm.") (license (non-copyleft "http://metadata.ftp-master.debian.org/\ changelogs/main/libt/libtime-parsedate-perl/\ libtime-parsedate-perl_2015.103-2_copyright")))) + +(define-public perl-libtime-period + (package + (name "perl-libtime-period") + (version "1.20") + (source + (origin + (method url-fetch) + (uri (string-append + "http://http.debian.net/debian/pool/main/libt/" + "libtime-period-perl/libtime-period-perl_" + version ".orig.tar.gz")) + (sha256 + (base32 "0c0yd999h0ikj88c9j95wa087m87i0qh7vja3715y2kd7vixkci2")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build" ,perl-module-build))) + ;; Unless some other homepage is out there... + (home-page + "https://packages.debian.org/stretch/libtime-period-perl") + (synopsis + "Perl library for testing if a time() is in a specific period") + (description "This Perl library provides a function which tells whether a +specific time falls within a specified time period. Its syntax for specifying +time periods allows you to test for conditions like \"Monday to Friday, 9am +till 5pm\" and \"on the second Tuesday of the month\" and \"between 4pm and +4:15pm\" and \"in the first half of each minute\" and \"in January of +1998\".") + (license (package-license perl)))) -- 2.13.1 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0003-gnu-Add-dirvish.patch Content-Transfer-Encoding: quoted-printable >From 01b0c93222658f74d5049f1666d383efacf4a724 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Sun, 20 Nov 2016 10:36:46 -0600 Subject: [PATCH 3/3] gnu: Add dirvish. * gnu/packages/backup.scm (dirvish): New variable. --- gnu/packages/backup.scm | 108 ++++++++++++++++++++++++++++++++++++++++++= ++++++ 1 file changed, 108 insertions(+) diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 74e49e46d..9285d1213 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -6,6 +6,7 @@ ;;; Copyright =C2=A9 2017 Thomas Danckaert ;;; Copyright =C2=A9 2017 Arun Isaac ;;; Copyright =C2=A9 2017 Kei Kebreau +;;; Copyright =C2=A9 2017 Christopher Allan Webber ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,6 +45,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages mcrypt) #:use-module (gnu packages nettle) + #:use-module (gnu packages perl) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -685,3 +687,109 @@ using GnuPG. Backups can be stored on local hard d= isks, or online via the SSH SFTP protocol. The backup server, if used, does not require any special software, on top of SSH.") (license license:gpl3+))) + +(define-public dirvish + (package + (name "dirvish") + (version "1.2.1") + (build-system gnu-build-system) + (source (origin + (method url-fetch) + (uri (string-append + "http://dirvish.org/dirvish-" version ".tgz")) + (sha256 + (base32 + "1kbxa1irszp2zw8hd5qzqnrrzb4vxfivs1vn64yxnj0lak1jjzvb"))= )) + (arguments + `(#:modules ((ice-9 match) (ice-9 rdelim) + ,@%gnu-build-system-modules) + #:phases + ;; This mostly mirrors the steps taken in the install.sh that shi= ps + ;; with dirvish, but simplified because we aren't prompting inter= actively + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (delete 'check) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; These are mostly the same steps the install.sh that come= s with + ;; dirvish does + (let* (;; Files we'll be copying + (executables + '("dirvish" "dirvish-runall" + "dirvish-expire" "dirvish-locate")) + (man-pages + '(("dirvish" "8") ("dirvish-runall" "8") + ("dirvish-expire" "8") ("dirvish-locate" "8") + ("dirvish.conf" "5"))) + + (output-dir + (assoc-ref outputs "out")) + + ;; Just a default... not so useful on guixsd though + ;; You probably want to a service with file(s) to po= int to. + (confdir "/etc/dirvish") + + (perl (string-append (assoc-ref %build-inputs "perl"= ) + "/bin/perl")) + (loadconfig.pl (call-with-input-file "loadconfig.pl" + read-string))) + + + (define (write-pl filename) + (define pl-header + (string-append "#!" perl "\n\n" + "$CONFDIR =3D \"" confdir "\";\n\n")) + (define input-file-location + (string-append filename ".pl")) + (define target-file-location + (string-append output-dir "/bin/" filename ".pl")) + (define text-to-write + (string-append pl-header + (call-with-input-file input-file-locat= ion + read-string) + "\n" loadconfig.pl)) + (with-output-to-file target-file-location + (lambda () + (display text-to-write))) + (chmod target-file-location #o755) + (wrap-program target-file-location + `("PERL5LIB" ":" prefix + ,(map (lambda (l) (string-append (assoc-ref %build-= inputs l) + "/lib/perl5/site_p= erl")) + '("perl-libtime-period" + "perl-libtime-parsedate"))))) + + (define write-man + (match-lambda + ((file-base man-num) + (let* ((filename + (string-append file-base "." man-num)) + (output-path + (string-append output-dir + "/share/man/man" man-num + "/" filename))) + (copy-file filename output-path))))) + + ;; Make directories + (mkdir-p (string-append output-dir "/bin/")) + (mkdir-p (string-append output-dir "/share/man/man8/")) + (mkdir-p (string-append output-dir "/share/man/man5/")) + + ;; Write out executables + (for-each write-pl executables) + ;; Write out man pages + (for-each write-man man-pages) + #t)))))) + (inputs + `(("perl" ,perl) + ("rsync" ,rsync) + ("perl-libtime-period" ,perl-libtime-period) + ("perl-libtime-parsedate" ,perl-libtime-parsedate))) + (synopsis "Fast, disk based, rotating network backup system") + (description + "With dirvish you can maintain a set of complete images of your +filesystems with unattended creation and expiration. A dirvish backup v= ault is +like a time machine for your data. ") + (home-page "http://dirvish.org/") + (license (license:fsf-free "file://COPYING")))) ; Open Software Lice= nse 2.0 --=20 2.13.1 --=-=-=--