From mboxrd@z Thu Jan 1 00:00:00 1970 From: Leo Famulari Subject: Re: [PATCH] Add rdmd. Date: Mon, 22 Feb 2016 14:46:01 -0500 Message-ID: <20160222194601.GA13012@jasmine> References: <87lh6dyogm.fsf@gnu.org> <8760xg290c.fsf@gnu.org> <20160222174618.GA4836@jasmine> <87r3g4po8b.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57973) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aXwQq-0007N7-Te for guix-devel@gnu.org; Mon, 22 Feb 2016 14:46:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aXwQl-00072v-7J for guix-devel@gnu.org; Mon, 22 Feb 2016 14:46:08 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:40597) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aXwQl-00072V-46 for guix-devel@gnu.org; Mon, 22 Feb 2016 14:46:03 -0500 Content-Disposition: inline In-Reply-To: <87r3g4po8b.fsf@gnu.org> 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: Roel Janssen Cc: guix-devel 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? > + (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! > + (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 > >> > >