From: Efraim Flashner <efraim@flashner.co.il>
To: Leo Famulari <leo@famulari.name>
Cc: "Jakub Kądziołka" <kuba@kadziolka.net>, 39021@debbugs.gnu.org
Subject: [bug#39021] [PATCH] Add Keybase
Date: Sun, 31 May 2020 10:09:38 +0300 [thread overview]
Message-ID: <20200531070938.GC7397@E5400> (raw)
In-Reply-To: <20200211173634.GB9442@jasmine.lan>
[-- Attachment #1.1: Type: text/plain, Size: 369 bytes --]
I have a working version of keybase, although I haven't gotten around to
unbundling all the go dependencies yet. I figured I'd post my WIP stuff
here.
--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[-- Attachment #1.2: keybase.scm --]
[-- Type: text/plain, Size: 20625 bytes --]
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is an addendum to GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (dfsg main keybase)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build utils)
#:use-module (guix git-download)
#:use-module (guix download)
#:use-module (guix packages)
#:use-module (guix build-system go)
#:use-module (gnu packages golang)
#:use-module (gnu packages syncthing))
;; TODO: Unbundle all the go dependencies.
(define-public keybase
(package
(name "keybase")
(version "5.5.1")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/keybase/client/releases/download/v"
version "/keybase-v" version ".tar.xz"))
(sha256
(base32
"0x683v50wq8b2rk4nv2gmchav71fxnqvkfglrkzixvwcqqwvy2m7"))
(modules '((guix build utils)))
(snippet
'(begin
(with-directory-excursion "go/vendor"
(delete-file-recursively "bazil.org")
(delete-file-recursively "camlistore.org/pkg/buildinfo")
;(delete-file-recursively "camlistore.org/pkg/images")
(delete-file-recursively "github.com/BurntSushi")
;(delete-file-recursively "github.com/PuerkitoBio/goquery")
;(delete-file-recursively "github.com/RoaringBitmap/roaring")
;(delete-file-recursively "github.com/StackExchange/wmi")
;(delete-file-recursively "github.com/akavel/rsrc")
;(delete-file-recursively "github.com/andybalholm/cascadia")
;(delete-file-recursively "github.com/antchfx/htmlquery")
;(delete-file-recursively "github.com/antchfx/xmlquery")
;(delete-file-recursively "github.com/antchfx/xpath")
;(delete-file-recursively "github.com/araddon/dateparse")
;(delete-file-recursively "github.com/asaskevich/govalidator")
(delete-file-recursively "github.com/blang")
;(delete-file-recursively "github.com/blevesearch/bleve")
;(delete-file-recursively "github.com/blevesearch/go-porterstemmer")
;(delete-file-recursively "github.com/blevesearch/segment")
;(delete-file-recursively "github.com/btcsuite/btcutil")
;(delete-file-recursively "github.com/buger/jsonparser")
;(delete-file-recursively "github.com/coreos/go-systemd")
;(delete-file-recursively "github.com/coreos/pkg")
;(delete-file-recursively "github.com/couchbase/vellum")
;(delete-file-recursively "github.com/davecgh/go-spew")
;(delete-file-recursively "github.com/deckarep/golang-set")
;(delete-file-recursively "github.com/docopt/docopt-go")
;(delete-file-recursively "github.com/dustin/go-humanize")
;(delete-file-recursively "github.com/eapache/channels")
;(delete-file-recursively "github.com/eapache/queue")
;(delete-file-recursively "github.com/edsrzf/mmap-go")
;(delete-file-recursively "github.com/emirpasic/gods")
;(delete-file-recursively "github.com/etcd-io/bbolt")
;(delete-file-recursively "github.com/gammazero/deque")
;(delete-file-recursively "github.com/gammazero/workerpool")
;(delete-file-recursively "github.com/glycerine/go-unsnap-stream")
;(delete-file-recursively "github.com/go-errors/errors")
;(delete-file-recursively "github.com/go-ole/go-ole")
(delete-file-recursively "github.com/gobwas")
;(delete-file-recursively "github.com/gocolly/colly")
(delete-file-recursively "github.com/golang/groupcache/lru")
;(delete-file-recursively "github.com/golang/groupcache")
;(delete-file-recursively "github.com/golang/mock")
(delete-file-recursively "github.com/golang/protobuf")
(delete-file-recursively "github.com/golang/snappy")
;(delete-file-recursively "github.com/hashicorp/golang-lru")
;(delete-file-recursively "github.com/jbenet/go-context")
;(delete-file-recursively "github.com/josephspurrier/goversioninfo")
;(delete-file-recursively "github.com/kennygrant/sanitize")
;(delete-file-recursively "github.com/kevinburke/ssh_config")
;(delete-file-recursively "github.com/keybase/backoff")
;(delete-file-recursively "github.com/keybase/cli")
;(delete-file-recursively "github.com/keybase/clockwork")
;(delete-file-recursively "github.com/keybase/colly")
;(delete-file-recursively "github.com/keybase/go-codec")
;(delete-file-recursively "github.com/keybase/go-crypto")
;(delete-file-recursively "github.com/keybase/go-framed-msgpack-rpc")
;(delete-file-recursively "github.com/keybase/go-jsonw")
;(delete-file-recursively "github.com/keybase/go-kext")
;(delete-file-recursively "github.com/keybase/go-keychain")
;(delete-file-recursively "github.com/keybase/go-logging")
;(delete-file-recursively "github.com/keybase/go-merkle-tree")
;(delete-file-recursively "github.com/keybase/go-porterstemmer")
;(delete-file-recursively "github.com/keybase/go-ps")
;(delete-file-recursively "github.com/keybase/go-triplesec-insecure")
;(delete-file-recursively "github.com/keybase/go-triplesec")
;(delete-file-recursively "github.com/keybase/go-updater")
;(delete-file-recursively "github.com/keybase/go-winio")
;(delete-file-recursively "github.com/keybase/go.dbus")
;(delete-file-recursively "github.com/keybase/golang-ico")
;(delete-file-recursively "github.com/keybase/gomounts")
;(delete-file-recursively "github.com/keybase/keybase-test-vectors")
;(delete-file-recursively "github.com/keybase/msgpackzip")
;(delete-file-recursively "github.com/keybase/pipeliner")
;(delete-file-recursively "github.com/keybase/saltpack")
;(delete-file-recursively "github.com/keybase/stellarnet")
;(delete-file-recursively "github.com/keybase/xurls")
(delete-file-recursively "github.com/kr")
;(delete-file-recursively "github.com/kyokomi/emoji")
(delete-file-recursively "github.com/lib")
;(delete-file-recursively "github.com/manucorporat/sse")
(delete-file-recursively "github.com/mattn")
;(delete-file-recursively "github.com/miekg/dns")
(delete-file-recursively "github.com/mitchellh")
;(delete-file-recursively "github.com/mschoch/smat")
;(delete-file-recursively "github.com/nf/cr2")
;(delete-file-recursively "github.com/nfnt/resize")
;(delete-file-recursively "github.com/pelletier/go-buffruneio")
;(delete-file-recursively "github.com/philhofer/fwd")
(delete-file-recursively "github.com/pkg/errors")
;(delete-file-recursively "github.com/pkg/xattrs")
(delete-file-recursively "github.com/pmezard")
;(delete-file-recursively "github.com/qrtz/nativemessaging")
;(delete-file-recursively "github.com/rcrowley")
;(delete-file-recursively "github.com/rwcarlsen/goexif")
;(delete-file-recursively "github.com/saintfish/chardet")
;(delete-file-recursively "github.com/sergi/go-diff")
(delete-file-recursively "github.com/shirou")
;(delete-file-recursively "github.com/shopspring/decimal")
;(delete-file-recursively "github.com/src-d/gcfg")
(delete-file-recursively "github.com/stathat")
;(delete-file-recursively "github.com/stellar/go-xdr")
;(delete-file-recursively "github.com/stellar/go")
;(delete-file-recursively "github.com/steveyen/gtreap")
;(delete-file-recursively "github.com/stretchr/testify")
;(delete-file-recursively "github.com/syndtr/goleveldb")
;(delete-file-recursively "github.com/temoto/robotstxt")
;(delete-file-recursively "github.com/tinylib/msgp")
(delete-file-recursively "github.com/urfave")
;(delete-file-recursively "github.com/vividcortex/ewma")
(delete-file-recursively "github.com/willf")
;(delete-file-recursively "github.com/xanzy/ssh-agent")
;(delete-file-recursively "go.uber.org/zap/buffer")
;(delete-file-recursively "go.uber.org/zap/internal")
;(delete-file-recursively "go.uber.org/zap/zapcore")
(delete-file-recursively "golang.org/x")
(delete-file-recursively "google.golang.org")
;(delete-file-recursively "gopkg.in/src-d/go-billy.v4")
;(delete-file-recursively "gopkg.in/src-d/go-git.v4")
;(delete-file-recursively "rsc.io/qr/coding")
;(delete-file-recursively "rsc.io/qr/gf256")
;(delete-file-recursively "stathat.com/c/ramcache")
)
;; Lets smallerize the source to audit less code and licenses.
(delete-file-recursively "osx")
(delete-file-recursively "shared/ios")
;; Delete everything for the GUI
(delete-file-recursively "browser")
;; Delete the protocol generator and tester
(delete-file-recursively "protocol")
(delete-file-recursively "pvl-tools")
;; Remove non-free fonts.
(with-directory-excursion "shared/fonts"
(for-each (lambda (file)
(delete-file file))
(find-files "." "keybase.*ttf")))
;; Apparently we don't need any of this
(delete-file-recursively "shared")
(delete-file-recursively "media")
(delete-file-recursively "packaging")
#t))))
(build-system go-build-system)
(arguments
`(#:install-source? #f
#:import-path "github.com/keybase/client/go/keybase"
#:unpack-path "github.com/keybase/client"
#:phases
(modify-phases %standard-phases
(replace 'build
(lambda* (#:key import-path #:allow-other-keys)
(for-each
(lambda (directory)
(invoke "go" "install"
"-tags" "production"
"-v" "-x" "-ldflags=-s -w"
directory))
(list import-path
"github.com/keybase/client/go/kbfs/kbfsfuse"
"github.com/keybase/client/go/kbfs/kbfsgit/git-remote-keybase"
"github.com/keybase/client/go/kbfs/redirector"
"github.com/keybase/client/go/kbnm"))
#t))
(replace 'check
(lambda* (#:key import-path #:allow-other-keys)
(for-each
(lambda (directory)
(invoke "go" "test"
"-v" "-x" "-ldflags=-s -w"
directory))
(list import-path
"github.com/keybase/client/go/kbfs/kbfsfuse"
"github.com/keybase/client/go/kbfs/kbfsgit/git-remote-keybase"
"github.com/keybase/client/go/kbfs/redirector"
"github.com/keybase/client/go/kbnm"))
#t))
(add-after 'install 'install-license
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(install-file "src/github.com/keybase/client/LICENSE"
(string-append out "/share/doc/"
,name "-" ,version "/"))
#t))))))
(inputs
`(("go-bazil-org-fuse" ,go-bazil-org-fuse)
("go-camlistore-org-pkg-buildinfo" ,go-camlistore-org-pkg-buildinfo)
("go-github-com-blang-semver" ,go-github-com-blang-semver)
("go-github-com-burntsushi-toml" ,go-github-com-burntsushi-toml)
("go-github-com-gobwas-glob" ,go-github-com-gobwas-glob)
("go-github-com-golang-groupcache-lru" ,go-github-com-golang-groupcache-lru)
("go-github-com-golang-protobuf-proto" ,go-github-com-golang-protobuf-proto)
("go-github-com-golang-snappy" ,go-github-com-golang-snappy)
("go-github-com-kr-text" ,go-github-com-kr-text)
("go-github-com-lib-pq" ,go-github-com-lib-pq)
("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
("go-github-com-mitchellh-go-homedir" ,go-github-com-mitchellh-go-homedir)
("go-github-com-pkg-errors" ,go-github-com-pkg-errors)
("go-github-com-pmezard-go-difflib" ,go-github-com-pmezard-go-difflib)
;("go-github-com-rcrowley-go-metrics" ,go-github-com-rcrowley-go-metrics)
("go-github-com-shirou-gopsutil" ,go-github-com-shirou-gopsutil)
("go-github-com-stathat-go" ,go-github-com-stathat-go)
;("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
("go-github-com-urfave-cli" ,go-github-com-urfave-cli)
("go-github-com-willf-bitset" ,go-github-com-willf-bitset)
("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
("go-golang-org-x-image" ,go-golang-org-x-image)
("go-golang-org-x-net" ,go-golang-org-x-net)
("go-golang.org-x-sync-errgroup" ,go-golang.org-x-sync-errgroup)
("go-golang.org-x-sync-semaphore" ,go-golang.org-x-sync-semaphore)
("go-golang-org-x-sys" ,go-golang-org-x-sys)
("go-golang-org-x-text" ,go-golang-org-x-text)
("go-golang-org-x-time" ,go-golang-org-x-time)
("go-google-golang-org-appengine" ,go-google-golang-org-appengine)))
(home-page "https://keybase.io")
(synopsis "Secure messaging and file-sharing")
(description "Keybase is a safe, secure, and private app for everything you
do online.")
(license license:bsd-3)))
(define-public go-golang.org-x-sync-semaphore
(package
(inherit go-golang.org-x-sync-errgroup)
(name "go-golang.org-x-sync-semaphore")
(arguments
'(#:import-path "golang.org/x/sync/semaphore"
#:unpack-path "golang.org/x/sync"))))
(define-public go-google-golang-org-appengine
(package
(name "go-google-golang-org-appengine")
(version "1.6.6")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/golang/appengine")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"15c38h6fbv06cnkr6yknygfrpibyms2mya4w0l29kaxf42jn1qi5"))))
(build-system go-build-system)
(arguments
'(#:import-path "google.golang.org/appengine"))
(propagated-inputs
`(("go-github-com-golang-protobuf-proto" ,go-github-com-golang-protobuf-proto)
("go-golang-org-x-net" ,go-golang-org-x-net)))
(home-page "https://google.golang.org/appengine")
(synopsis "Internal support for package appengine")
(description "This package supports the Go runtime on App Engine standard.
It provides APIs for interacting with App Engine services.")
(license license:asl2.0)))
(define-public go-bazil-org-fuse
(let ((commit "5a45981690d8c47319ea10f5f1c1ba6e2cc0147b")
(revision "1"))
(package
(name "go-bazil-org-fuse")
(version (git-version "0.0.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/bazil/fuse")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0didws29ca6xqvyqg3pfy4g1hd4ij9xhhxxc5ngvaxyxk5gd0rcy"))))
(build-system go-build-system)
(arguments
'(#:import-path "bazil.org/fuse"
#:tests? #f)) ; Tests require fusermount and a fuse device.
(propagated-inputs
`(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
(native-inputs
`(("fuse" ,(@ (gnu packages linux) fuse))
("go-golang-org-x-net" ,go-golang-org-x-net)))
(home-page "https://bazil.org/fuse/")
(synopsis "Go library for writing filesystems")
(description "This package is a Go library for writing filesystems. It is
a from-scratch implementation of the kernel-userspace communication protocol,
and does not use the C library from the project called FUSE.")
(license license:bsd-3))))
(define-public go-github-com-tv42-httpunix
(let ((commit "2ba4b9c3382c77e7b9ea89d00746e6111d142a22")
(revision "1"))
(package
(name "go-github-com-tv42-httpunix")
(version (git-version "0.0.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tv42/httpunix")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0xbwpip2hsfhd2kd878jn5ndl8y1i9658lggha4x3xb5m1rsds9w"))))
(build-system go-build-system)
(arguments
'(#:import-path "github.com/tv42/httpunix"))
(home-page "https://github.com/tv42/httpunix")
(synopsis "Go library to talk HTTP over Unix domain sockets")
(description "Go library to talk HTTP over Unix domain sockets/")
(license license:expat))))
(define-public go-camlistore-org-pkg-buildinfo
(let ((commit "c55c8602d3cea4511081630e17bca7ed601abc44")
(revision "1"))
(package
(name "go-camlistore-org-pkg-buildinfo")
(version (git-version "0.9" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/perkeep/perkeep")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1h9f6kj6ifwgx9hymwkn5w0ri291js1951mlc8fa5lagpbhnqd1g"))
(modules '((guix build utils)))
(snippet
'(begin
(delete-file-recursively "vendor")
(delete-file-recursively "website")
(delete-file-recursively "server/camlistored")
(for-each make-file-writable (find-files "."))
#t))))
(build-system go-build-system)
(arguments
'(#:import-path "camlistore.org/pkg/buildinfo"
#:unpack-path "camlistore.org"))
(home-page "https://perkeep.org/pkg/")
(synopsis "Go library for personal storage system")
(description "Camlistore is your personal storage system for life: a way
of storing, syncing, sharing, modelling and backing up content.")
(license license:asl2.0))))
(define-public go-camlistore-org-pkg-images
(package
(inherit go-camlistore-org-pkg-buildinfo)
(name "go-camlistore-org-pkg-images")
(arguments
'(#:import-path "camlistore.org/pkg/images"
#:unpack-path "camlistore.org"))
(propagated-inputs
`(
;("go-github-com-nf-cr2" ,go-github-com-nf-cr2)
;("go-github-com-rwcarlsen-goexif" ,go-github-com-rwcarlsen-goexif)
;("go-go4-org-readerutil" ,go-go4-org-readerutil)
("go-golang-org-x-image" ,go-golang-org-x-image)))
))
[-- Attachment #1.3: keybase.scm --]
[-- Type: text/plain, Size: 1254 bytes --]
;; https://github.com/keybase/client/blob/master/packaging/linux/systemd/keybase.service
(define keybase
(make <service>
#:provides '(keybase)
#:docstring "Provide access to Keybase™"
#:start (make-forkexec-constructor
'("keybase" "service")
#:log-file (string-append (getenv "HOME") "/log/keybase.log"))
#:stop (make-system-destructor "keybase ctl stop")
#:actions
(make-actions
(restart (lambda _ (system* "keybase" "ctl" "restart")))
(reload (lambda _ (system* "keybase" "ctl" "reload"))))
#:directory (string-append "/run/user/"
(number->string (passwd:uid (getpw "efraim")))
"/keybase")
#:respawn? #t))
;; https://github.com/keybase/client/blob/master/packaging/linux/systemd/kbfs.service
(define kbfs
(make <service>
#:provides '(kbfs)
#:depends '(keybase)
#:docstring "Provide access to Keybase™ fuse store"
#:start (make-forkexec-constructor
'("kbfsfuse" "-debug" "-log-to-file")
#:log-file (string-append (getenv "HOME") "/log/kbfs.log"))
#:stop (make-kill-destructor)
#:respawn? #t))
(register-services keybase kbfs)
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2020-05-31 7:11 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-07 20:00 [bug#39021] [PATCH] Add Keybase Jakub Kądziołka
2020-01-24 18:34 ` [bug#39021] go package rebuilds Jakub Kądziołka
2020-01-28 21:54 ` [bug#39021] [PATCH 1/2 v2] build-system/go: Allow providing additional build flags Jakub Kądziołka
2020-02-08 0:20 ` [bug#39021] [PATCH] Add Keybase Leo Famulari
2020-02-11 16:36 ` Jakub Kądziołka
2020-02-11 17:36 ` Leo Famulari
2020-05-31 7:09 ` Efraim Flashner [this message]
2020-05-31 21:47 ` Jakub Kądziołka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200531070938.GC7397@E5400 \
--to=efraim@flashner.co.il \
--cc=39021@debbugs.gnu.org \
--cc=kuba@kadziolka.net \
--cc=leo@famulari.name \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).