Keybase on Arm

Does anyone know how to get keybase running on arm devices?

Seems there’s a PKGBUILD on the AUR, so you can try following that to build it.

That doesn’t seem to work on Manjaro arm

Neofetch output
OS: Manjaro ARM Linux aarch64
Host: Raspberry Pi 3 Model B Rev 1.2
Kernel: 4.19.108-1-MANJARO-ARM
Uptime: 23 mins
Packages: 667 (pacman)
Shell: bash 5.0.16
Resolution: 1920x1080
DE: Xfce
WM: Xfwm4
WM Theme: Default

Error message
yay -S keybase-git-arm
 -> could not open file /var/lib/pacman/local/linux-firmware-20200224.efcfa03-1/desc: No such file or directory
:: There are 2 providers available for gconf:
:: Repository AUR
    1) gconf 2) gconf-gtk2 

Enter a number (default=1): 1
:: Checking for conflicts...
:: Checking for inner conflicts...
[Aur: 2]  gconf-3.2.6+11+g07808097-6  keybase-git-arm-3.0.0+29116.3552b8044a-1

  2 gconf                                    (Build Files Exist)
  1 keybase-git-arm                          (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> A
:: Deleting (1/2): /home/roboteventsbot/.cache/yay/gconf
:: Deleting (2/2): /home/roboteventsbot/.cache/yay/keybase-git-arm
:: Downloaded PKGBUILD (1/2): keybase-git-arm
:: Downloaded PKGBUILD (2/2): gconf
  2 gconf                                    (Build Files Exist)
  1 keybase-git-arm                          (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> A
diff --git /home/roboteventsbot/.cache/yay/gconf/01_xml-gettext-domain.patch /home/roboteventsbot/.cache/yay/gconf/01_xml-gettext-domain.patch
new file mode 100644
index 0000000..d1323f6
--- /dev/null
+++ /home/roboteventsbot/.cache/yay/gconf/01_xml-gettext-domain.patch
@@ -0,0 +1,362 @@
+# Description: Support calling gettext at runtime and putting the gettext domain into the .schemas file instead of replicating translations in /usr/share/gconf/schemas/*.schemas *and* /var/lib/gconf/defaults/%gconf-tree-$LANG.xml. This saves in the order of 90 MB uncompressed/10 MB compressed on hard disks.
+# Ubuntu: https://bugs.launchpad.net/bugs/123025
+# Upstream: http://bugzilla.gnome.org/show_bug.cgi?id=568845
+--- GConf-2.26.0/backends/markup-tree.c.gettext        2009-04-26 23:33:05.258484987 -0400
++++ GConf-2.26.0/backends/markup-tree.c        2009-04-26 23:34:25.026700526 -0400
+@@ -52,6 +52,7 @@ struct _MarkupEntry
+   char       *schema_name;
+   char       *mod_user;
+   GTime       mod_time;
++  const char *gettext_domain;
+ };
diff --git /home/roboteventsbot/.cache/yay/keybase-git-arm/PKGBUILD /home/roboteventsbot/.cache/yay/keybase-git-arm/PKGBUILD
new file mode 100644
index 0000000..ecaf344
--- /dev/null
+++ /home/roboteventsbot/.cache/yay/keybase-git-arm/PKGBUILD
@@ -0,0 +1,69 @@
+# Maintainer: Brian Picciano <mediocregopher@gmail.com>
+# Maintainer: Jack O'Connor <oconnor663@gmail.com>
+
+pkgname=keybase-git-arm
+pkgdesc='the Keybase Go client, filesystem, and GUI (built for arm)'
+license=('BSD')
+url='https://keybase.io'
+pkgver=3.0.0+29116.3552b8044a
+pkgver() {
+  "$srcdir/client/packaging/linux/arch/keybase_git_version.sh"
+}
+pkgrel=1
+arch=('armv7h' 'aarch64')
+depends=(fuse gconf libxss gtk2) # don't change this without changing the SRCINFO template too
+makedepends=(go yarn npm git rsync patch)
1
==> Proceed with install? [Y/n] y
Aborting due to user
[roboteventsbot@roboteventsbotserver ~]$ yay -S keybase-git-arm
 -> could not open file /var/lib/pacman/local/linux-firmware-20200224.efcfa03-1/desc: No such file or directory
:: There are 2 providers available for gconf:
:: Repository AUR
    1) gconf 2) gconf-gtk2 

Enter a number (default=1): 1
:: Checking for conflicts...
:: Checking for inner conflicts...
[Aur: 2]  gconf-3.2.6+11+g07808097-6  keybase-git-arm-3.0.0+29116.3552b8044a-1

  2 gconf                                    (Build Files Exist)
  1 keybase-git-arm                          (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> A
:: Deleting (1/2): /home/roboteventsbot/.cache/yay/gconf
:: Deleting (2/2): /home/roboteventsbot/.cache/yay/keybase-git-arm
:: Downloaded PKGBUILD (1/2): gconf
:: Downloaded PKGBUILD (2/2): keybase-git-arm
  2 gconf                                    (Build Files Exist)
  1 keybase-git-arm                          (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> A
diff --git /home/roboteventsbot/.cache/yay/gconf/01_xml-gettext-domain.patch /home/roboteventsbot/.cache/yay/gconf/01_xml-gettext-domain.patch
new file mode 100644
index 0000000..d1323f6
--- /dev/null
+++ /home/roboteventsbot/.cache/yay/gconf/01_xml-gettext-domain.patch
@@ -0,0 +1,362 @@
+# Description: Support calling gettext at runtime and putting the gettext domain into the .schemas file instead of replicating translations in /usr/share/gconf/schemas/*.schemas *and* /var/lib/gconf/defaults/%gconf-tree-$LANG.xml. This saves in the order of 90 MB uncompressed/10 MB compressed on hard disks.
+# Ubuntu: https://bugs.launchpad.net/bugs/123025
+# Upstream: http://bugzilla.gnome.org/show_bug.cgi?id=568845
+--- GConf-2.26.0/backends/markup-tree.c.gettext        2009-04-26 23:33:05.258484987 -0400
++++ GConf-2.26.0/backends/markup-tree.c        2009-04-26 23:34:25.026700526 -0400
+@@ -52,6 +52,7 @@ struct _MarkupEntry
+   char       *schema_name;
+   char       *mod_user;
+   GTime       mod_time;
++  const char *gettext_domain;
+ };
diff --git /home/roboteventsbot/.cache/yay/keybase-git-arm/PKGBUILD /home/roboteventsbot/.cache/yay/keybase-git-arm/PKGBUILD
new file mode 100644
index 0000000..ecaf344
--- /dev/null
+++ /home/roboteventsbot/.cache/yay/keybase-git-arm/PKGBUILD
@@ -0,0 +1,69 @@
+# Maintainer: Brian Picciano <mediocregopher@gmail.com>
+# Maintainer: Jack O'Connor <oconnor663@gmail.com>
+
+pkgname=keybase-git-arm
+pkgdesc='the Keybase Go client, filesystem, and GUI (built for arm)'
+license=('BSD')
+url='https://keybase.io'
+pkgver=3.0.0+29116.3552b8044a
+pkgver() {
+  "$srcdir/client/packaging/linux/arch/keybase_git_version.sh"
+}
+pkgrel=1
+arch=('armv7h' 'aarch64')
+depends=(fuse gconf libxss gtk2) # don't change this without changing the SRCINFO template too
+makedepends=(go yarn npm git rsync patch)

==> Proceed with install? [Y/n] y
:: Parsing SRCINFO (1/2): gconf
:: Parsing SRCINFO (2/2): keybase-git-arm

==> The following packages are not compatible with your architecture:  gconf
==> Try to build them anyway? [Y/n] y
==> ERROR: Cannot find the strip binary required for object file stripping.
Error downloading sources: gconf

You need to get gconf first.

So you need to edit the gconf PKGBUILD, where it says arch=(x86_64) to say arch=('aarch64') instead. Then build and install that.

After that, the peybase one should also work.

I might have a bad install I’m getting a lot of 404 errors when updating

In that case, you need to update to the latest mirrorlist:
https://forum.manjaro.org/t/another-mirror-transition-manual-intervention-required/132302

I can’t seem to find gconf in the package lists. The two aur packages don’t install either.
They both say The following packages are not compatible with your architecture.

Thats why I said you have to edit the PKGBUILD to enable the aarch64 architecture.

I tried to download the PKGBUILD file along with the other files from the AUR and build them with makepkg. I don’t know what it means by fakeroot binary.

git clone https://aur.archlinux.org/gconf.git
cd gconf/
nano PKGBUILD
makepkg -si

Errors:

==> ERROR: Cannot find the fakeroot binary.
==> ERROR: Cannot find the strip binary required for object file stripping.

Do you have base-devel package group installed?

That is needed to build any package on Arch/Manjaro.

1 Like

Alright, got the base-devel package installed and that let me build gconf. After that I tried to build keybase-git-arm. using this install command yay -S keybase-git-arm. I also tried to edit the PKGBUILD file to only build for aarch64 with no luck.

Error:

patching file packaging/linux/build_binaries.sh
Hunk #1 FAILED at 170.
1 out of 1 hunk FAILED -- saving rejects to file packaging/linux/build_binaries.sh.rej
==> ERROR: A failure occurred in build().
    Aborting...
Full Terminal output
==> Making package: keybase-git-arm 5.4.0+35508.d1d08b845c-1 (Fri 03 Apr 2020 05:34:38 PM EDT)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Updating client git repo...
Fetching origin
remote: Enumerating objects: 51, done.
remote: Counting objects: 100% (51/51), done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 51 (delta 30), reused 21 (delta 17), pack-reused 0
Unpacking objects: 100% (51/51), 32.87 KiB | 339.00 KiB/s, done.
From https://github.com/keybase/client
   d1d08b845c..479e6f23d7  master                 -> master
 * [new branch]            nojima/HOTPOT-nav-race -> nojima/HOTPOT-nav-race
 * [new branch]            zapu/fix-cacheUserServiceSummary -> zapu/fix-cacheUserServiceSummary
 + 4b5450e59d...77b72ca75b refs/pull/23298/merge  -> refs/pull/23298/merge  (forced update)
 + 2da63fcd40...7e670fadbe refs/pull/23472/merge  -> refs/pull/23472/merge  (forced update)
 + 87e9ae955c...84c30ee702 refs/pull/23474/merge  -> refs/pull/23474/merge  (forced update)
 + 03e332f2c9...ba52d788cf refs/pull/23486/merge  -> refs/pull/23486/merge  (forced update)
 * [new ref]               refs/pull/23487/head   -> refs/pull/23487/head
 * [new ref]               refs/pull/23487/merge  -> refs/pull/23487/merge
 * [new ref]               refs/pull/23488/head   -> refs/pull/23488/head
 * [new ref]               refs/pull/23488/merge  -> refs/pull/23488/merge
  -> Updating kbfs git repo...
Fetching origin
==> Validating source files with md5sums...
    client ... Skipped
    kbfs ... Skipped
==> Extracting sources...
  -> Creating working copy of client git repo...
From /home/roboteventsbot/build/keybase-git-arm/client
   d1d08b845c..479e6f23d7  master                 -> origin/master
 * [new branch]            nojima/HOTPOT-nav-race -> origin/nojima/HOTPOT-nav-race
 * [new branch]            zapu/fix-cacheUserServiceSummary -> origin/zapu/fix-cacheUserServiceSummary
Switched to a new branch 'makepkg'
  -> Creating working copy of kbfs git repo...
Switched to a new branch 'makepkg'
==> Starting pkgver()...
+ mode=production
+ [[ production = \p\r\o\d\u\c\t\i\o\n ]]
+ echo production
==> Updated version: keybase-git-arm 5.4.0+35509.479e6f23d7-1
==> Removing existing $pkgdir/ directory...
==> Starting build()...
patching file packaging/linux/build_binaries.sh
Hunk #1 FAILED at 170.
1 out of 1 hunk FAILED -- saving rejects to file packaging/linux/build_binaries.sh.rej
==> ERROR: A failure occurred in build().
    Aborting...

Looks like you have a source already in the build folder, which makes the patch fail (since it’s already been applied once). So remove your build folder (I have no idea where yay keep those). And try again.

Neither deleting the yay cache in ~/.cache or cloning the repo from the aur and build it using makepkg worked. Would that get around yay caching build files?

I have keybase on my Pinebook Pro. Did not have use the AUR. Just use pacman -Ss keybase keybase-gui kbfs. or in my case I use yay for my installer.

3 Likes

Thanks @axiomjoyride that worked. I had gotten it in my head that I had to build it because when I looked at what I thought was the package list for Manjaro and Arch there wasn’t a package for keybase on arm. @Strit is there a website for Manjaro’s packages like Debian’s?

Too be honest, i am not sure. Being on the Pinebook Pro has really sunk me into Manjaro. Before, I only checked it out in passing. I will see what I can find out.

UPDATE: Here is what I found … unfortunately is does not break it down by architecture, but is a start:

https://discover.manjaro.org/applications/
https://discover.manjaro.org/packages/

1 Like

Not exactly.
You can always simply browse a mirror to see what packages is in the repository. Or you can search using Pamac or pacman on the device.

But most packages we get from Arch Linux ARM which have a package search page.

1 Like