@@ -86,6 +86,23 @@ (define-module (gnu packages golang)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
+(define (gnu-triplet->go-architecture target)
+ (letrec-syntax
+ ((matches (syntax-rules (=>)
+ ((_ (target-prefix => architecture) rest ...)
+ (if (string-prefix? target-prefix target)
+ architecture
+ (matches rest ...)))
+ ((_) (error "unsupported target" target)))))
+ (matches ("x86_64" => "amd64")
+ ("i686" => "386")
+ ("aarch64" => "arm64")
+ ("arm" => "arm")
+ ("powerpc64le" => "ppc64le")
+ ("powerpc" => "ppc")
+ ("mips64el" => "mips64le")
+ ("riscv64" => "riscv64"))))
+
;; According to https://golang.org/doc/install/gccgo, gccgo-4.8.2 includes a
;; complete go-1.1.2 implementation, gccgo-4.9 includes a complete go-1.2
;; implementation, and gccgo-5 a complete implementation of go-1.4. Ultimately
@@ -9862,3 +9879,49 @@ (define-public go-github-com-zenhack-go-notmuch
(description "The notmuch package provides a Go language binding to the
notmuch email library.")
(license license:gpl3+)))
+
+(define-public go-github-com-creack-pty
+ (package
+ (name "go-github-com-creack-pty")
+ (version "1.1.18")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/creack/pty")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1qqhcgfym0napz8damj7dhfw28g2qn2f5h3lr93i0sxawq926yzc"))))
+ (build-system go-build-system)
+ (arguments
+ (list #:import-path "github.com/creack/pty"
+ #:modules '((ice-9 popen)
+ (ice-9 textual-ports)
+ (guix build go-build-system)
+ (guix build utils))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'regenerate-types
+ (lambda* (#:key import-path #:allow-other-keys)
+ ;; Generated files are included (ztypes_*). We need to remake
+ ;; them with Cgo.
+ (with-directory-excursion (string-append "src/" import-path)
+ (let* ((go-arch
+ #$(gnu-triplet->go-architecture
+ (or (%current-target-system)
+ (nix-system->gnu-triplet (%current-system)))))
+ (file (string-append "ztypes_" go-arch ".go"))
+ (pipe (open-input-pipe "go tool cgo -godefs types.go"))
+ (text (get-string-all pipe)))
+ (close-pipe pipe)
+ (for-each delete-file
+ (find-files (getcwd) (file-name-predicate
+ "ztypes_[a-zA-Z0-9_]+.go")))
+ (with-output-to-file file
+ (lambda () (display text))))))))))
+ (home-page "https://github.com/creack/pty")
+ (synopsis "Pseudoterminal handling in Go")
+ (description
+ "The pty package provides functions for working with Unix pseudoterminals.")
+ (license license:expat)))
From: "(unmatched-parenthesis" <paren@disroot.org> * gnu/packages/golang.scm (go-github-com-creack-pty): New variable. --- gnu/packages/golang.scm | 63 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+)