Armhf snap builds for raspberry pi

Got the 'ol ssh up and have been doing a bit of hacking on it today.

  CXX(target) Release/obj.target/sharp/src/common.o
In file included from ../vendor/lib/glib-2.0/include/glibconfig.h:9:0,
                 from ../vendor/include/glib-2.0/glib/gtypes.h:32,
                 from ../vendor/include/glib-2.0/glib/galloca.h:32,
                 from ../vendor/include/glib-2.0/glib.h:30,
                 from ../vendor/include/glib-2.0/gobject/gbinding.h:28,
                 from ../vendor/include/glib-2.0/glib-object.h:23,
                 from ../vendor/include/vips/vips8:35,
                 from ../src/common.cc:25:
../vendor/include/glib-2.0/glib/gtypes.h: In function ‘gboolean _GLIB_CHECKED_ADD_U64(guint64*, guint64, guint64)’:
../vendor/include/glib-2.0/glib/gmacros.h:145:29: error: size of array ‘_GStaticAssertCompileTimeAssertion_0’ is negative
   __attribute__((__unused__))
                             ^
../vendor/include/glib-2.0/glib/gmacros.h:241:120: note: in expansion of macro ‘G_GNUC_UNUSED’
 #define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
                                                                                                                        ^
../vendor/include/glib-2.0/glib/gtypes.h:423:3: note: in expansion of macro ‘G_STATIC_ASSERT’
   G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
   ^
sharp.target.mk:118: recipe for target 'Release/obj.target/sharp/src/common.o' failed
make: *** [Release/obj.target/sharp/src/common.o] Error 1

Is unfortunately where I error out. Which of course is from the sharp package that’s giving people issues :frowning:

I think one issue might be that the sharp (as well as the grpc) package in the downloaded RocketChat Release
(“curl -SLf “https://releases.rocket.chat/#{RC_VERSION}/download/” -o rocket.chat.tgz”) are only build for x64?

swap #{RC_VERSION} for 0.65.2

I’d recommend trying from this branch: https://github.com/rocketchat/rocket.chat/tree/snap-node-prepare-script

This is where i’m currently trying from. Of course still need to swap #{RC_VERSION} for 0.65.2 so it’ll download the right bundle.

But the bundles aren’t for amd64 only. All of the arch specific stuff is installed with npm install after you download the bundle. One reason we don’t bundle with all dependencies installed

Yeah i swaped the version in the url already.
What i meant is that e.g. in “\programs\server\npm\node_modules\grpc\src\node\extension_binary” only x64 stuff is included and by the npm install later on i will not be installed for arm (same for sharp)?

Ok just irgnore my previous post.
The npm install failed because of a missing phantomjs (what would be the right way so resolve this dependency here? I just downloaded a precompiled one and placed it somewhere in the path?).

Right now i think you’ll have to replace the libs in \programs\server\npm\node_modules\sharp\vendor\lib (which are included in the bundle) with libs compiled for arm because they are used to compile sharp (removing the vendor dir might work as well?)

My hack at the moment is to actually remove the package that needs phantomjs. Because phantomjs is for sure not needed for the execution of Rocket.Chat.

#!/bin/bash

curl -SLf "https://releases.rocket.chat/0.65.2/download/" -o rocket.chat.tgz

tar xvf rocket.chat.tgz --strip 1

cd programs/server
rm -rf npm/node_modules/meteor/emojione_emojione/node_modules/grunt-contrib-qunit

Added this last line. Basically the emojione_emojione package depends on grunt-contrib-qunit in its dev dependencies, which is actually shipped in bundle. Then grunt-contrib-qunit depends on phantomjs in its direct dependencies.

I think this may be an indicator that upstream we need to be building and omitting dev Dependencies.

Looks like meteor build is blindly including dev dependencies in the build bundle when it shouldn’t be.

AH! Success building locally! Finally!

Now pushing changes and sending to launchpad and seeing if it will produce workable snap for arm also :slight_smile:

Well… launchpad is still failing… But I went ahead and pushed up my locally build snap.

Revision 1278 is in the stable channel.

Please let me know how it goes.

I build buid a arm version locally too that worked. But the one you uploaded to the stable channe works fine too.
What was your solution? Deleting the vendor dir in the sharp dir as suggested?

Though still hacking away…

Launchpad uses arm64 and convincing node/npm to install the emulated armhf seems to be harder then one would expect.

Hey so how is it going with this?

The prior version of Rocket.Chat should be available. I haven’t gotten to building the latest.

But building from the CI apparently is out of the question because of all of the issues mentioned above. :slight_smile:

will there be some new snap builds for the raspberry?

Yes, we are preparing for a snap build that will support the latest Rocket.Chat version including the upcoming 1.0

It is working already and we are testing. If you can test, please join our enthusiast channel here:

https://open.rocket.chat/channel/raspberrypi

Hello all!
Sorry for bumping this thread but I just noticed that the armhf snap build or Rocket.chat is 1.0.3 (stable), while it is 3.1.1 on my amd64 server. I wondered:

  • Are the two versions developped in parallel, or is the 1.0.3 an old version?
  • If it’s an old version, any idea if the features of the 3.1.1 are much different from the 1.0.3?
  • Is there a way to install the 3.1.1 on a Raspberry Pi 3 (or for if needed)?
    Thank you for these newbie questions.
    Take care!

EDIT: I found this post where it says that no newer version will be released anymore on armhf architecture due to mongodb incompatibility. I just have to find how to install a arm64 debian on my pi then, glups ^^.

Yup unfortunately armhf is stuck because of mongo :frowning:

Yup :frowning:. But I could succeed (quite easily I have to admit) to install a Debian arm64 on my Pi. Just the Rocket.Chat backup solution didn’t succeed in restoring the config. I followed this tuto. I Succeeded to restore it once on my test server, but after, when I tried to restore it on my main Pi board, no way… First is starts correctly, but after 5 min it tries to connect to the login page indefinitely. I checked the logs and the server seems to be alive. Anyway, no problem I made a new config. An now I am bakcuping the entire Debian system just in case :stuck_out_tongue:.

I’m running rocket.chat on my Raspberry 4 (32-bit, Arch Linux).

Has anyone else gotten this message recently? It’s only appeared in the last week or so.

MongoDB Deprecated
MongoDB version 3.2.15 is deprecated, please upgrade your installation.

Obviously, I can’t upgrade my installation, but I’m unsure why the message is occurring now, since presumably rocket.chat is also stuck on an old version (1.3.2). I would have thought the old rocket.chat version wouldn’t check for this. (And snap can’t tell me when the last update was.)

Have you found some solution? It seems liek if the arm architecture is in snap abandoned…

If you are running 32 bit - there will be no solution. The restriction is due to MongoDB as stated earlier by @aaron.ogle.

If you are on Raspberry Pi 4 - you can EASILY run 64 bit Raspbian and have access to later releases.

On Pi - you can generally ignore the MongoDB deprecation messages.