mattermost-community / focalboard

Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.
https://www.focalboard.com
Other
21.63k stars 1.93k forks source link

Bug: Build failing on armv7l (Raspberry Pi) #2151

Open johnnyasantoss opened 2 years ago

johnnyasantoss commented 2 years ago

Steps to reproduce the behavior

  1. Clone the repo at tag v0.12.1
  2. Make the following changes
    Changes
diff --git a/Makefile b/Makefile
index 0db63694..a5e661cf 100644
--- a/Makefile
+++ b/Makefile
@@ -40,6 +40,11 @@ server-linux: ## Build server for Linux.
        $(eval LDFLAGS += -X "github.com/mattermost/focalboard/server/model.Edition=linux")
        cd server; env GOOS=linux GOARCH=amd64 go build -ldflags '$(LDFLAGS)' -o ../bin/linux/focalboard-server ./main

+server-linux-rpi: ## Build server for Linux.
+       mkdir -p bin/linux
+       $(eval LDFLAGS += -X "github.com/mattermost/focalboard/server/model.Edition=linux")
+       cd server; go build -ldflags '$(LDFLAGS)' -o ../bin/linux/focalboard-server ./main
+
diff --git a/docker/Dockerfile b/docker/Dockerfile
index c6b177ab..2d4c3510 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,5 +1,5 @@
 ### Webapp build
-FROM node:16.3.0 as nodebuild
+FROM node:16.3 as nodebuild

 WORKDIR /webapp
 ADD webapp/ /webapp
@@ -13,7 +13,7 @@ FROM golang:1.16.5 as gobuild
 WORKDIR /go/src/focalboard
 ADD . /go/src/focalboard

-RUN  make server-linux
+RUN make server-linux-rpi
 RUN mkdir /data

 ## Final image

  1. Try to build a docker image with docker build -f Dockerfile.build --no-cache -t focalboard-build:dirty .
  2. See the error with the cypress dep
    Error
Sending build context to Docker daemon  26.49MB
Step 1/13 : FROM node:16.3 AS frontend
 ---> 5e641a58861c
Step 2/13 : WORKDIR /webapp
 ---> Running in 6a1f04b7c6ef
Removing intermediate container 6a1f04b7c6ef
 ---> 59655324d0fc
Step 3/13 : COPY webapp .
 ---> 33486512468a
Step 4/13 : RUN npm install --no-optional
 ---> Running in 8543b717f95b
npm WARN deprecated natives@1.1.6: This module relies on Node.js's internals and will break at some point. Do not use it, and update to graceful-fs@4.x.
npm WARN deprecated xmldom@0.3.0: Deprecated due to CVE-2021-21366 resolved in 0.5.0
npm WARN deprecated xmldom@0.1.31: Deprecated due to CVE-2021-21366 resolved in 0.5.0
npm notice
npm notice New major version of npm available! 7.15.1 -> 8.3.1
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v8.3.1>
npm notice Run `npm install -g npm@8.3.1` to update!
npm notice
npm ERR! code 1
npm ERR! path /webapp/node_modules/cypress
npm ERR! command failed
npm ERR! command sh -c node index.js --exec install
npm ERR! Installing Cypress (version: 6.9.1)
npm ERR!
npm ERR! [12:38:21]  Downloading Cypress     [started]
npm ERR! [12:38:27]  Downloading Cypress     [failed]
npm ERR! [12:38:27] → The Cypress App could not be downloaded.
npm ERR!
npm ERR! Does your workplace require a proxy to be used to access the Internet? If so, you must configure the HTTP_PROXY environment variable before downloading Cypress. Read more: https://on.cypress.io/proxy-configuration
npm ERR!
npm ERR! Otherwise, please check network connectivity and try again:
npm ERR!
npm ERR! ----------
npm ERR!
npm ERR! URL: https://download.cypress.io/desktop/6.9.1?platform=linux&arch=ia32
npm ERR! Error: Failed downloading the Cypress binary.
npm ERR! Response code: 404
npm ERR! Response message: Not Found
npm ERR!
npm ERR! ----------
npm ERR!
npm ERR! Platform: linux (Debian - 10.10)
npm ERR! Cypress Version: 6.9.1
npm ERR! The Cypress App could not be downloaded.
npm ERR!
npm ERR! Does your workplace require a proxy to be used to access the Internet? If so, you must configure the HTTP_PROXY environment variable before downloading Cypress. Read more: https://on.cypress.io/proxy-configuration
npm ERR!
npm ERR! Otherwise, please check network connectivity and try again:
npm ERR!
npm ERR! ----------
npm ERR!
npm ERR! URL: https://download.cypress.io/desktop/6.9.1?platform=linux&arch=ia32
npm ERR! Error: Failed downloading the Cypress binary.
npm ERR! Response code: 404
npm ERR! Response message: Not Found
npm ERR!
npm ERR! ----------
npm ERR!
npm ERR! Platform: linux (Debian - 10.10)
npm ERR! Cypress Version: 6.9.1

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2022-01-20T12_38_51_730Z-debug.log
The command '/bin/sh -c npm install --no-optional' returned a non-zero code: 1

Expected behavior

To build normally

Edition and Platform

Additional context

  1. How can I get this to build? It used to work fine with the version v0.11.0
  2. Is this dependency really needed to build the "final" version?
johnnyasantoss commented 2 years ago

Probably related to #2115 & #1700

johnnyasantoss commented 2 years ago

I think it was added in #1826

chenilim commented 2 years ago

Hmmm... not sure why npm install --no-optional is trying to install Cypress, which is under optionalDependencies. Looks like Cypress doesn't have a 32-bit Linux build. Maybe try hacking Cypress out of package.json and package-lock.json to see if that makes a difference?

Cypress is the E2E test framework, which should not be needed for the base build.

johnnyasantoss commented 2 years ago

Oh, I made a wrong ref its not #1826 but #1940 (see package.json) removing @testing-library/cypress from devDependencies makes the error go away