Subject: Re: [PATCH] gnu: genie: Add genie.

From: "J. Sims" <[email-masked]>
Date: Tue, 04 Oct 2022 19:37:05 +0000

On Monday, October 3rd, 2022 at 01:45, Liliana Marie Prikler <[email-masked]> wrote:

> Am Samstag, dem 01.10.2022 um 22:15 +0000 schrieb J. Sims:
> 
> > Hello,
> > 
> > This is a patch to add the GENie project generator to Guix. It's a
> > fork of Premake 4.4 that some other projects, notably the Scopes
> > programming language, use.
> > 
> > I'm submitting it independently instead of as part of a patch series
> > with Scopes because I've already packaged it then accidentally
> > deleted that package twice before. Scopes has some rough edges around
> > packaging in a Guix-friendly way and I don't suspect I will have its
> > package ready very soon. All of this together means I'd like to avoid
> > repeating my previous mistakes and go ahead and get it into Guix.
> > 
> > Thanks,
> > Juli
> > 
> > --------------------------BEGIN-PATCH------------------------------
> > 
> > * gnu/packages/build-tools.scm (genie): Add genie.
> > ---
> 
> Usually, adding comments after this line is preferred.
> 
> > gnu/packages/build-tools.scm | 44
> > ++++++++++++++++++++++++++++++++++++
> > 1 file changed, 44 insertions(+)
> > 
> > diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-
> > tools.scm
> > index 84a62d0fd6..55bec5f817 100644
> > --- a/gnu/packages/build-tools.scm
> > +++ b/gnu/packages/build-tools.scm
> > @@ -14,6 +14,7 @@
> > ;;; Copyright © 2020 Efraim Flashner [email-masked]
> > ;;; Copyright © 2021 qblade [email-masked]
> > ;;; Copyright © 2021 Maxim Cournoyer [email-masked]
> > +;;; Copyright © 2022 Juliana Sims [email-masked]
> > ;;;
> > ;;; This file is part of GNU Guix.
> > ;;;
> > @@ -763,3 +764,46 @@ (define-public build
> > @item Extensible language/compiler framework.
> > @end itemize")
> > (license license:gpl2+)))
> > +
> > +(define-public genie
> > + (let ((commit "b139103697bbb62db895e4cc7bfe202bcff4ff25")
> > + (ver "1167"))
> > + (package
> > + (name "genie")
> > + (version ver)
> 
> Use git-version.
> 
> > + (home-page "https://github.com/bkaradzic/genie")
> > + (source
> > + (origin
> > + (method git-fetch)
> > + (uri (git-reference
> > + (url home-page)
> > + (commit commit)))
> > + (file-name (git-file-name name version))
> > + (sha256
> > + (base32
> > "16plshzkyjjzpfcxnwjskrs7i4gg0qn92h2k0rbfl4a79fgmwvwv"))))
> > + (build-system gnu-build-system)
> > + (arguments
> > + `(#:phases
> 
> Prefer lists of G-Expressions.
> 
> > + (modify-phases %standard-phases
> > + (delete 'configure)
> > + (replace 'install
> > + (lambda* (#:key outputs #:allow-other-keys)
> > + (let ((out (assoc-ref outputs "out")))
> > + (install-file "bin/linux/genie"
> > + (string-append out "/bin"))))))
> > + #:parallel-build? #t
> 
> I don't think this one's needed. If however it is necessary, look
> towards webkit for how to hack in -j2.
> 
> > + #:tests? #f)) ;; tests have not been updated since Premake
> > fork
> 
> That sounds bad. Do they all fail or are some of them salvagable?
> 
> > + (synopsis "Project generator tool")
> > + (description "GENie (pronounced as Jenny) is project generator
> > tool. It
> 
> I think we can do without pronunciation guides.
> 
> > +automagically generates project from Lua script, making applying the
> > same
> > +settings for multiple projects easy.
> > +
> > +Supported project generators:
> > +@itemize
> > +@item GNU Makefile
> > +@item JSON Compilation Database
> > +@item Ninja (experimental)
> > +@item Visual Studio 2010, 2012, 2013, 2015, 2017, 2019
> > +@item XCode
> > +@end itemize")
> 
> Make sure your description consists of complete sentences.
> 
> > + (license license:bsd-3))))
> > 
> > base-commit: 461b1e490935e720999e78dc29656ae3c9ea2ea3
> 
> 
> Cheers

Thanks for the feedback (and the kick in the pants I needed to finally get my hands dirty with gexps)! I've incorporated all of your comments. I'd like to note, though, that the tests are apparently entirely manual. I asked the developer how tests should be run and the response was essentially, "compile the project and use it." For what it's worth, I have indeed compiled and used this project in the past, so it should work fine.

-Juli

From fffb22d1a7c7551fd3d7d843663bac0e61bf72fa Mon Sep 17 00:00:00 2001
From: jts <[email-masked]>
Date: Sat, 1 Oct 2022 16:30:06 -0500
Subject: [PATCH] gnu: genie: Add genie.

* gnu/packages/build-tools.scm (genie): Add genie.
---
 gnu/packages/build-tools.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 84a62d0fd6..28418c236a 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2020 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2021 qblade <[email-masked]>
 ;;; Copyright © 2021 Maxim Cournoyer <[email-masked]>
+;;; Copyright © 2022 Juliana Sims <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -763,3 +764,38 @@ (define-public build
 @item Extensible language/compiler framework.
 @end itemize")
     (license license:gpl2+)))
+
+(define-public genie
+  (let ((commit "b139103697bbb62db895e4cc7bfe202bcff4ff25")
+        (version "1167")
+        (revision "0"))
+    (package
+      (name "genie")
+      (version (git-version version revision commit))
+      (home-page "https://github.com/bkaradzic/genie")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "16plshzkyjjzpfcxnwjskrs7i4gg0qn92h2k0rbfl4a79fgmwvwv"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list #:phases #~(modify-phases %standard-phases
+                          (delete 'configure)
+                          (replace 'install
+                            (lambda _
+                              (install-file "bin/linux/genie"
+                                            (string-append #$output "/bin")))))
+             #:tests? #f)) ;only manual tests
+      (synopsis "Project generator tool")
+      (description
+       "GENie is project generator tool. It generates projects from
+Lua scripts, making applying the same settings for multiple projects easy. It
+supports generating projects using GNU Makefiles; JSON Compilation Database;
+Visual Studio 2010, 2012, 2013, 2015, 2017, and 2019; XCode; and experimentally
+supports Ninja.")
+      (license license:bsd-3))))

base-commit: a96ebe47b0686b5dd7ebe5fc133073abce559f4d
-- 
2.37.3