From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roel Janssen Subject: Re: [PATCH] Add rdmd. Date: Mon, 22 Feb 2016 22:01:39 +0100 Message-ID: <87povopih8.fsf@gnu.org> References: <87lh6dyogm.fsf@gnu.org> <8760xg290c.fsf@gnu.org> <20160222174618.GA4836@jasmine> <87r3g4po8b.fsf@gnu.org> <20160222194601.GA13012@jasmine> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:56714) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aXxc6-0004Hi-DG for guix-devel@gnu.org; Mon, 22 Feb 2016 16:01:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aXxc3-0003Ly-2B for guix-devel@gnu.org; Mon, 22 Feb 2016 16:01:50 -0500 In-reply-to: <20160222194601.GA13012@jasmine> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Leo Famulari Cc: guix-devel --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-gnu-Add-rdmd-v4.patch >From d6a457ed3dfceb65e1333ef943ed09d88b8385d2 Mon Sep 17 00:00:00 2001 From: Roel Janssen Date: Mon, 22 Feb 2016 21:51:43 +0100 Subject: [PATCH] gnu: Add rdmd. * gnu/packages/ldc.scm (rdmd): New variable. --- gnu/packages/ldc.scm | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm index 1981bc1..379bb8d 100644 --- a/gnu/packages/ldc.scm +++ b/gnu/packages/ldc.scm @@ -21,6 +21,8 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (gnu packages) #:use-module (gnu packages base) @@ -29,6 +31,47 @@ #:use-module (gnu packages textutils) #:use-module (gnu packages zip)) +(define-public rdmd + (let ((commit "da0a2e0a379b08294015eec9d531f1e5dd4226f0")) + (package + (name "rdmd") + (version (string-append "v2.070.0-" (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/D-Programming-Language/tools.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1pcx5lyqzrip86f4vv60x292rpvnwsq2hvl1znm9x9rn68f34m45")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'check) ; There is no Makefile, so there's no 'make check'. + (replace + 'build + (lambda _ + (zero? (system* "ldc2" "rdmd.d")))) + (replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (install-file "rdmd" bin))))))) + (native-inputs + `(("ldc" ,ldc))) + (home-page "https://github.com/D-Programming-Language/tools/") + (synopsis "Specialized equivalent to 'make' for the D language") + (description + "rdmd is a companion to the dmd compiler that simplifies the typical +edit-compile-link-run or edit-make-run cycle to a rapid edit-run cycle. Like +make and other tools, rdmd uses the relative dates of the files involved to +minimize the amount of work necessary. Unlike make, rdmd tracks dependencies +and freshness without requiring additional information from the user.") + (license license:boost1.0)))) + (define-public ldc (package (name "ldc") -- 2.5.0 --=-=-= Content-Type: text/plain Leo Famulari writes: > On Mon, Feb 22, 2016 at 07:57:24PM +0100, Roel Janssen wrote: >> From beec39d6bdc2489fb4b0eb17e59e44d848178436 Mon Sep 17 00:00:00 2001 >> From: Roel Janssen >> Date: Mon, 22 Feb 2016 19:49:24 +0100 >> Subject: [PATCH] gnu: Add rdmd. >> >> * gnu/packages/ldc.scm (rdmd): New variable. >> --- >> gnu/packages/ldc.scm | 43 +++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 43 insertions(+) >> >> diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm >> index 1981bc1..55dc0e9 100644 >> --- a/gnu/packages/ldc.scm >> +++ b/gnu/packages/ldc.scm >> @@ -21,6 +21,8 @@ >> #:use-module ((guix licenses) #:prefix license:) >> #:use-module (guix packages) >> #:use-module (guix download) >> + #:use-module (guix git-download) >> + #:use-module (guix build-system gnu) >> #:use-module (guix build-system cmake) >> #:use-module (gnu packages) >> #:use-module (gnu packages base) >> @@ -29,6 +31,47 @@ >> #:use-module (gnu packages textutils) >> #:use-module (gnu packages zip)) >> >> +(define-public rdmd >> + (let ((commit "4dba6877c481c1a911a7d50714da8fbd80022f0e")) >> + (package >> + (name "rdmd") >> + (version "20160217") > > How about this: > (version (string-append "0.0.0-1." (string-take commit 7))) > > "0.0.0" indicates no upstream release, and "1" indicates the first > revision of the Guix package. This is what's specified in the manual, > section 7.6.3. > > Although, I notice that upstream *has* released, so instead of "0.0.0", > we should use whatever version the desired commit is building on. > > Does that make sense? Well, when running 'rdmd --version', it outputs: rdmd build 20160222 The latest git tag says version says 'v2.070.0'. So I've made it: (version (string-append "v2.070.0-" (string-take commit 7))) ... (file-name (string-append name "-" version "-checkout")) >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/D-Programming-Language/tools.git") >> + (commit commit))) >> + (file-name (string-append name "-" (string-take commit 7))) > > And then: > (file-name (string-append name "-" version "-checkout")) > > Looks good with this change! I adopted this change. Thanks :) >> + (sha256 >> + (base32 >> + "1pcx5lyqzrip86f4vv60x292rpvnwsq2hvl1znm9x9rn68f34m45")))) >> + (build-system gnu-build-system) >> + (arguments >> + '(#:phases >> + (modify-phases %standard-phases >> + (delete 'configure) >> + (delete 'check) ; There is no Makefile, so there's no 'make check'. >> + (replace >> + 'build >> + (lambda _ >> + (zero? (system* "ldc2" "rdmd.d")))) >> + (replace >> + 'install >> + (lambda* (#:key outputs #:allow-other-keys) >> + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) >> + (install-file "rdmd" bin))))))) >> + (native-inputs >> + `(("ldc" ,ldc))) >> + (home-page "https://github.com/D-Programming-Language/tools/") >> + (synopsis "Specialized equivalent to 'make' for the D language") >> + (description >> + "rdmd is a companion to the dmd compiler that simplifies the typical >> +edit-compile-link-run or edit-make-run cycle to a rapid edit-run cycle. Like >> +make and other tools, rdmd uses the relative dates of the files involved to >> +minimize the amount of work necessary. Unlike make, rdmd tracks dependencies >> +and freshness without requiring additional information from the user.") >> + (license license:boost1.0)))) >> + >> (define-public ldc >> (package >> (name "ldc") >> -- >> 2.5.0 >> > >> >> Thank you for your quick review. I've learnt a couple of things again >> from this. :) >> >> I attached a new version of the patch addressing your comments. >> >> Leo Famulari writes: >> >> > On Mon, Feb 22, 2016 at 02:02:27PM +0100, Roel Janssen wrote: >> >> From 67222c11f6bb8d07b798b1f50eae6e23d8e77b2b Mon Sep 17 00:00:00 2001 >> >> From: Roel Janssen >> >> Date: Mon, 22 Feb 2016 14:00:53 +0100 >> >> Subject: [PATCH] gnu: Add rdmd. >> >> >> >> * gnu/packages/ldc.scm (rdmd): New variable. >> > >> > Thanks for the patch! >> > >> >> --- >> >> gnu/packages/ldc.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++ >> >> 1 file changed, 44 insertions(+) >> >> >> >> diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm >> >> index 1981bc1..c00e0dc 100644 >> >> --- a/gnu/packages/ldc.scm >> >> +++ b/gnu/packages/ldc.scm >> >> @@ -21,6 +21,8 @@ >> >> #:use-module ((guix licenses) #:prefix license:) >> >> #:use-module (guix packages) >> >> #:use-module (guix download) >> >> + #:use-module (guix git-download) >> >> + #:use-module (guix build-system gnu) >> >> #:use-module (guix build-system cmake) >> >> #:use-module (gnu packages) >> >> #:use-module (gnu packages base) >> >> @@ -29,6 +31,48 @@ >> >> #:use-module (gnu packages textutils) >> >> #:use-module (gnu packages zip)) >> >> >> >> +(define-public rdmd >> >> + (let ((commit "4dba6877c")) >> > >> > Please use the full hash here. >> > >> > You can see commit 423eef362b for an example of how to construct a >> > pleasant version string, and section 7.6.3 of the current manual (in >> > git) for the specification of that version string. >> > >> > If desired, you can generate an HTML version of the manual with >> > `make doc/guix.html`. >> >> Things like this make submitting packages rewarding. You learn new >> Scheme functions too. >> >> >> + (package >> >> + (name "rdmd") >> >> + (version "20160217") >> >> + (source (origin >> >> + (method git-fetch) >> >> + (uri (git-reference >> >> + (url "https://github.com/D-Programming-Language/tools.git") >> >> + (commit commit))) >> >> + (file-name (string-append name "-" commit)) >> >> + (sha256 >> >> + (base32 >> >> + "1pcx5lyqzrip86f4vv60x292rpvnwsq2hvl1znm9x9rn68f34m45")))) >> >> + (build-system gnu-build-system) >> >> + (arguments >> >> + '(#:phases >> >> + (modify-phases %standard-phases >> >> + (delete 'configure) >> >> + (delete 'check) ; There is no Makefile, so there's no 'make check'. >> > >> > Is there a test suite that is meant to be invoked some other way? >> >> Not that I'm aware of. >> >> >> + (replace >> >> + 'build >> >> + (lambda _ >> >> + (zero? (system* "ldc2" "rdmd.d")))) >> >> + (replace >> >> + 'install >> >> + (lambda* (#:key outputs #:allow-other-keys) >> >> + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) >> >> + (mkdir-p bin) >> >> + (copy-file "rdmd" (string-append bin "/rdmd")))))))) >> > >> > mkdir-p and copy-file can be shortened into install-file :) >> >> That's cool. I hope I've correctly modified it. >> >> >> + (native-inputs >> >> + `(("ldc" ,ldc))) >> >> + (home-page "https://github.com/D-Programming-Language/tools/") >> >> + (synopsis "Tool for the D language which is used for compiling") >> > >> > This makes it sounds like a compiler, but it sounds more like a dmd >> > version of Make? Is that correct? >> > >> > Looks good with these changes and a clarified synopsis. >> >> It's more a 'make' with dependency handling. I changed the synopsis. :) >> >> >> + (description >> >> + "rdmd is a companion to the dmd compiler that simplifies the typical >> >> +edit-compile-link-run or edit-make-run cycle to a rapid edit-run cycle. Like >> >> +make and other tools, rdmd uses the relative dates of the files involved to >> >> +minimize the amount of work necessary. Unlike make, rdmd tracks dependencies >> >> +and freshness without requiring additional information from the user.") >> >> + (license license:boost1.0)))) >> >> + >> >> (define-public ldc >> >> (package >> >> (name "ldc") >> >> -- >> >> 2.5.0 >> >> >> > --=-=-=--