The patch is at the end of the email. kbfsfuse doesn't compile on
OpenBSD because the golang fuse library is not compatible with OpenBSD
but we can use kbfsfuse without the FUSE support. I just added a little
hack to make the code build. The FUSE part is still broken but we can
use the kbfsfuse daemon to access KBFS.

OK?

----

This part is only for people who is not aware of some keybase features.
Feel free to ignore it.

I was going to write a README for the package but at the end it was more a
manual for the keybase services than a README for our package. If we don't
explain how to use a word processor, we should not explain how to use a web
service.

So, here is a quick howto with some tricks. I assume that you have a keybase
account and your OpenBSD computer is provisioned in keybase. Otherwise, please
read https://keybase.io/docs/command_line/basics .

You need two daemons to use the keybase services. "keybase" and "kbfsfuse". Use
"keybase ctl start" to start the main daemon. "kbfsfuse" requires a keybase
daemon running, so run it always after the main daemon. You can add both to
your crontab or autostart programs if you don't want to run them manually
everytime.

KBFS is a distributed filesystem with journaling support. Don't worry if you
power off your computer in the middle of a transfer. Also, KBFS streams
transparently the files from the keybase servers. If you have a weak connection
(e.g. wifi), run "keybase fs sync enable /keybase/private/youruser" to keep a
local cache of your files.

List your files: keybase fs ls /keybase/private/youruser

Copy a file: keybase fs cp /your/file /keybase/private/youruser/

Stream a video: keybase fs read /keybase/private/youruser/video.webm | mpv -

Recover a deleted file: keybase fs recover /keybase/private/youruser/lostfile
(they save the files for two weeks)

Send a file to someone: keybase fs cp /your/file 
/keybase/private/youruser,otheruser/
(now you have a shared folder with otheruser)

For more options: keybase fs
(run keybase with the options and you will see the arguments)

They are offering 250GB for free, so you can use keybase even for remote
backups.

They also gives 100GB for encrypted git repos. The FS, git repos and
chat are also available for teams.

Migrating your git repos:
- keybase git create ports
- git clone --mirror https://github.com/openbsd/ports.git ports-mirror
- cd ports-mirror
- git push --mirror keybase://private/youruser/ports
- cd .. && rm -rf ports-mirror
- git clone keybase://private/youruser/ports

The git repos are just standard repos but use a helper to upload the blobs
encrypted to KBFS.

For chat with other users: keybase chat read, send, upload, download
(the experience is quite crappy without the electron GUI)

Encrypt and decrypt files: keybase encrypt, decrypt

PGP: keybase pgp

The golang team will release go 1.13 this summer. I tested keybase a few weeks
ago with go 1.13 and it will consume less RAM. Just in case you don't like how
top looks when you're running the daemons :) .

----


Index: Makefile
===================================================================
--- Makefile    (revision 139067)
+++ Makefile    (working copy)
@@ -9,6 +9,7 @@
 
 # XXX: https://github.com/keybase/client/issues/10800
 V =            4.1.0
+REVISION =     0
 GH_ACCOUNT =   keybase
 GH_PROJECT =   client
 GH_TAGNAME =   v${V}
@@ -34,14 +35,30 @@
 
 NO_TEST =              Yes
 
+# Until github.com/bazil/fuse/pull/104 is fixed, we need to use this
+# workaround. Despite of the name, kbfsfuse is a daemon for some keybase
+# services and the FUSE support is optional.
+pre-build:
+       cd ${WRKSRC}/go/vendor/bazil.org/fuse && \
+               for i in *freebsd*.go fs/fstestutil/*freebsd*.go; \
+               do mv -v "$$i" $$(echo "$$i" | sed -e 's,freebsd,openbsd,g'); \
+               done && \
+               sed -i "s/syscall\.EPROTO/syscall\.EIO/g" fuse.go
+       cd ${WRKSRC}/go/kbfs/kbfsfuse && \
+               sed -i "s/defaultMountType = \"\"/defaultMountType = \"none\"/" 
defaults.go && \
+               sed -i "s/defaultMountType = \"force\"/defaultMountType = 
\"none\"/" defaults_production.go
+
 do-build:
        cd ${WRKSRC}/go/keybase && ${MODGO_CMD} build -tags \
                production
        cd ${WRKSRC}/go/kbfs/kbfsgit/git-remote-keybase && \
                ${MODGO_CMD} build -tags production
+       cd ${WRKSRC}/go/kbfs/kbfsfuse && \
+               ${MODGO_CMD} build -tags production
 
 do-install:
        ${INSTALL_PROGRAM} ${WRKSRC}/go/keybase/keybase ${PREFIX}/bin/
        ${INSTALL_PROGRAM} 
${WRKSRC}/go/kbfs/kbfsgit/git-remote-keybase/git-remote-keybase ${PREFIX}/bin/
+       ${INSTALL_PROGRAM} ${WRKSRC}/go/kbfs/kbfsfuse/kbfsfuse ${PREFIX}/bin/
 
 .include <bsd.port.mk>
Index: pkg/PLIST
===================================================================
--- pkg/PLIST   (revision 139067)
+++ pkg/PLIST   (working copy)
@@ -1,3 +1,4 @@
 @comment $OpenBSD: PLIST,v 1.2 2019/06/19 21:07:05 juanfra Exp $
 @bin bin/git-remote-keybase
+@bin bin/kbfsfuse
 @bin bin/keybase

Reply via email to