>From 8172227afc651ddfcdfa0da77c7c7bf72f59fcf8 Mon Sep 17 00:00:00 2001 From: Amar Singh Date: Wed, 1 May 2019 08:02:28 +0530 Subject: [PATCH 04/10] Golang-Import: Add package-sexp; go-name->inputs. (formatting) * guix/import/golang.scm (package-sexp; go-name->inputs): New variable. Signed-off-by: Amar Singh --- guix/import/golang.scm | 92 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 75 insertions(+), 17 deletions(-) diff --git a/guix/import/golang.scm b/guix/import/golang.scm index e11d1c2230..e6ef62a3b4 100644 --- a/guix/import/golang.scm +++ b/guix/import/golang.scm @@ -22,6 +22,7 @@ (guix download) ;; download-to-store ((guix import utils) #:prefix utils:) ;; hash (guix packages) ;; packages + (guix build-system) ;; build-system printer (guix build-system go) ;; go-build-system (guix store) ;; with-store (gnu packages golang) ;; inherit (simple) go package @@ -86,9 +87,23 @@ ;;; go list -f '{{ join .Imports "\n" }}' ,non recursive (define (go-name->inputs go-name) (let ((tmp (tmpnam))) - (and (zero? (system (string-append "go list -f '{{ join .Deps \"\\n\" }}'" " " - go-name " > " tmp))) - (call-with-input-file tmp get-string-all)))) + (and (zero? (system (string-append + "go list -f '{{ join .Deps \"\\n\" }}'" + " " go-name " > " tmp))) + (string-split (string-trim-both (call-with-input-file tmp get-string-all)) + (string->char-set "\n"))))) + +;;; For inputs +(define (alist-sexp alist) + (let ((magic (lambda (x) + (list x + (string->symbol (string-append x)))))) + (if (and (list? alist) (not (equal? '() alist))) + (map magic + (if (list? (car alist)) + (map car alist) + alist)) + '()))) (define-public (make-go-package go-name) ;; Do the expensive operations only once; query network for latest version @@ -96,26 +111,67 @@ (sha256 (go-name->sha256 go-name version)) (readme-string (go-name->readme-string go-name))) (package (inherit go-github-com-alsm-ioprogress) - (name (string-append "go-" - (go-name->name go-name))) + (name + (string-append "go-" go-name)) (version version) - (source (origin (method url-fetch) - (uri (go-name->tarball go-name - version)) + (source + (origin (method url-fetch) + (uri (go-name->tarball go-name version)) (sha256 (base32 sha256)))) - (home-page (go-name->url go-name)) - (build-system go-build-system) + (home-page + (go-name->url go-name)) + (build-system + go-build-system) (arguments `(#:import-path ,go-name)) - ;; TODO: inputs + ;; TODO: make inputs into (unquote ..) form + (inputs + (alist-sexp (go-name->inputs go-name))) (synopsis - (go-name->synopsis go-name - readme-string)) - (description (go-name->description go-name - readme-string)) + (go-name->synopsis go-name readme-string)) + (description + (go-name->description go-name readme-string)) ;; TODO: license ))) +(define (filter-newlines string) + (string-filter (lambda (x) (not (equal? #\ x))) string)) + +;;; Ask the upstream to export variable? +(define bv->nix-base32 (@@ (guix packages) + bytevector->nix-base32-string)) + +(define (origin-sexp origin) + `(origin + (method url-fetch) + (uri ,(origin-uri origin)) + (sha256 (base32 ,(bv->nix-base32 (origin-sha256 origin)))) + (file-name ,(origin-file-name origin)) + (patches ,(origin-patches origin)) + (snippet ,(origin-snippet origin)) + (patch-flags ,(origin-patch-flags origin)) + (patch-inputs ,(origin-patch-inputs origin)) + (modules ,(origin-modules origin)) + (patch-guile ,(origin-patch-guile origin)))) + +(define (build-system-sexp build-system) + (symbol-append (build-system-name build-system) '-build-system)) + +(define-public (package-sexp package) + `(package + (name ,(package-name package)) + (version ,(package-version package)) + (source ,(origin-sexp (package-source package))) + (home-page ,(package-home-page package)) + (build-system ,(build-system-sexp (package-build-system package))) + (arguments ,(package-arguments package)) + (synopsis ,(filter-newlines (package-synopsis package))) + (description ,(filter-newlines (package-description package))) + (inputs ,(alist-sexp (package-inputs package))) + (native-inputs ,(alist-sexp (package-native-inputs package))) + (propagated-inputs ,(alist-sexp (package-propagated-inputs package))))) + + ;;; STATUS ;;; 1. latest-release DONE ;;; 1.b latest-commit PENDING/STALLED @@ -127,7 +183,9 @@ ;;; 7. go-name->description DONE ;;; 6-7.b try to extract sentences. TODO ;;; 8. go-name->license TODO -;;; 9. go-name->inputs TODO -;;; 10. package-print TODO +;;; 9. go-name->inputs DONE +;;; 9.b. inputs alist TODO +;;; 10. package-sexp DONE +;;; 10.a origin-sexp DONE ;;; golang.scm ends here -- 2.21.0