Skip to content
This repository was archived by the owner on Jul 1, 2026. It is now read-only.
This repository was archived by the owner on Jul 1, 2026. It is now read-only.

Automated ARM builds #418

Closed
Closed

Description

@coolaj86

I would be happy to build arm6 and arm7 bins for both sqlite3 and sqlcipher.

v0.10 and v1.2 work

v0.11 and <= v1.1 fail

v0.12 I haven't tested.

I have internet-accessible PIs connected to a few routers that I can offer for such a task.

Activity

  1. springmeyer commented on May 4, 2015

    @springmeyer
    Contributor

    We build all binaries on travis (for linux and mac) and appveyor (for windows). What would be very useful is a travis job that used qemu or something like it to build rpi binaries. @bander9289 has been experimenting with this (and I've been meaning to learn but not had time yet): mapnik/mapnik-packaging@master...bander9289:master#diff-7142a27433410bb3f7e3ae34a1674807R16

    @coolaj86 - interested in providing a pull request adding rpi build support to travis.yml?

    /cc @mojodna who may also be interested in this effort.

  2. sethfitz commented on May 5, 2015

    @sethfitz

    Hmm. Interested I am, yet not yet needing it. Thanks.

  3. coolaj86 commented on May 5, 2015

    @coolaj86
    Author

    My work on embedded systems has lead me to believe that emulation is no substitution for compiling on the real deal, so I wait the 15+ minutes out when I need it.

    I'm open to trying something like Qemu, but it would probably be easier for me to set up a Pi as a build server than to learn Qemu and what special compile options I'd need to pass and such.

    What are the advantages of Qemu that make you prefer that solution?

  4. alexellis commented on Feb 10, 2016

    @alexellis

    @coolaj86 does it not come down to automation, automation, automation and repeatability? If I were to take a binary for sqlite3 instead of source, then I'd definitely want it to have been built through the 'trusted' channels - not a third party. Having said that something really needs to be done #597

  5. marvinroger commented on Dec 21, 2016

    @marvinroger

    Scaleway baremetals ARMv7 servers, might help here. Each build, assuming it would last less than 59 minutes, would cost €0.006.

    Moreover, with their CLI, create, start and SSH into a server is as easy as:

    $ scw exec $(scw start --wait $(scw create ubuntu-trusty)) /bin/bash
    [root@noname ~]#

    Note I am not affiliated to them in any way, that's just how I handle my personal Docker builds. 😉

  6. kkaefer commented on Dec 21, 2016

    @kkaefer
    Contributor

    Note that we don't have build on ARMv7; instead we could also cross-compile.

  7. alexellis commented on Dec 21, 2016

    @alexellis

    The build takes a ridiculous amount of time to complete especially on the Pi Zero - that I'd give up on sqllite or use python. Please provide a binary through npm to support continued use.

  8. skl commented on Feb 14, 2017

    @skl

    I've automated an ARM build with Vagrant, Docker (as opposed to chroot in @bander9289's approach) and QEMU which is one option for an overall npm install use case for ARM targets - whilst being able to build on a more powerful machine. I haven't open sourced it yet but this is the general idea that I use for sqlite3 and bcrypt:

    1. Spin up a single-core vagrant box with "debian/jessie64"
    2. Install docker-engine and qemu-user-static in the vm
    3. Spin up a docker container with docker run -it --volume /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static philipz/rpi-raspbian bash
    4. Install build-essential and nodejs in the container
    5. npm install inside the container

    I was not able to get a full QEMU ARM VM running but I did have success with the QEMU User Mode emulation as above. So it runs only the docker process under ARM emulation rather than providing a full virtual machine.

    One major drawback of either QEMU approach is that is only supports a single thread, so for example I could not install Git LFS within the ARM docker container as Go binaries cannot be run through QEMU due to the concurrency aspects of the language. So my advice is do as much as you can within the "host VM" then delegate the ARM portions to the container.

    Maybe some of the above could help for the Travis build? Cross-compilation would be ideal but it didn't seem straight forward to me, that's why I went the QEMU route instead as it also covers other npm modules at the same time.

  9. StefanScherer commented on Feb 14, 2017

    @StefanScherer

    @skl What about using Travis or at least using the steps described here: https://blog.hypriot.com/post/setup-simple-ci-pipeline-for-arm-images/

  10. skl commented on Feb 14, 2017

    @skl

    Thanks for the article, uses the same principal and applies it to Travis. Just in my case I need private builds for work.

  11. springmeyer commented on Jun 23, 2018

    @springmeyer
    Contributor

    Anyone want to try getting qemu running on travis (within docker as a bonus) so we can start building and publishing binaries for ARM/rasp?

  12. thom-nic commented on Jun 25, 2018

    @thom-nic

    Cross-post from #996: this comment looks like it has a workable path for an ARM environment on Travis: travis-ci/travis-ci#3376 (comment) similar to @skl's solution, except it looks like a "docker in docker." Have not tested myself.

  13. rzr commented on Jul 23, 2018

    @rzr
    Contributor

    An other option would be to submit a deb package of node-sqlite3 to debian then use if on raspbian...

    Well I can try to hack to Docker file to build package.

    Edit:

    https://tracker.debian.org/pkg/node-sqlite3

    while not in Raspbian yet ?

    http://archive.raspberrypi.org/debian/pool/main/n/

  14. 30 remaining items

  15. added a commit that references this issue on May 25, 2019
  16. added a commit that references this issue on Jul 8, 2019
  17. xPaw commented on Jul 1, 2020

    @xPaw
    Contributor

    #1147 was merged, is there any blocker on hooking that up to the CI?

  18. added a commit that references this issue on Jul 2, 2020
  19. n1ru4l commented on Jul 22, 2020

    @n1ru4l

    I created #1362 which seems a bit less complicated and also provides alpine binaries. The only thing missing is anyone reviewing it and a repo maintainer setting S3 bucket credentials.

  20. daniellockyer commented on Apr 14, 2022

    @daniellockyer
    Contributor

    This is done, pending release - please see my comment here: #1362 (comment) 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions