build.sh uses bashisms, but shebangs /bin/sh
1.37.0 fails to build in my build environment (Ubuntu 18.04 in LXC) with this error:
ubuntu@mattermost-mobile:~/mattermost-mobile$ npm run build:android
> mattermost-mobile@1.37.0 build:android /home/ubuntu/mattermost-mobile
> ./scripts/build.sh apk
./scripts/build.sh: 3: ./scripts/build.sh: Syntax error: "(" unexpected
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! mattermost-mobile@1.37.0 build:android: `./scripts/build.sh apk`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the mattermost-mobile@1.37.0 build:android script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/ubuntu/.npm/_logs/2020-11-14T11_47_00_288Z-debug.log
The top of that file, build.sh
, refers to /bin/sh
, but on Ubuntu and Debian, /bin/sh
has been Dash for quite a while, whereas build.sh
seems to written for Bash (where function is a valid keyword):
ubuntu@mattermost-mobile:~/mattermost-mobile$ head scripts/build.sh
#!/bin/sh
function execute() {
cd fastlane && NODE_ENV=production bundle exec fastlane $1 $2
}
I suggest switching the shebang to #/bin/bash
, or better yet, #!/usr/bin/env bash
(for path-agnosticity). In my environment, using either one fixes the build.