mirror of
https://github.com/balena-io/etcher.git
synced 2025-04-23 14:57:18 +00:00

If we include a platform specific optional dependency in the shrinkwrap file, then npm will insist in installing it even if the platform doesn't match. As a solution, we figured out we can avoid putting this platform specific optional dependencies in the npm-shrinkwrap.json file. In order to do this, we currently have a script called `clean-shrinkwrap.js` that runs *before* any `npm shrinkwrap` file (its a `preshrinkwrap` npm script) that deletes all the platform specific modules we know about using `npm rm`. The problem with this approach is that `npm rm` will remove the module's code from `node_modules`, which means that if we run `npm shrinkwrap`, we will lose certain optional dependencies, that may be needed at a later stage. The solution is to modify the `clean-shrinkwrap.js` script to parse `npm-shrinkwrap.json`, and manually delete the entries that we want to omit. Also, the script needs to be run *after* `npm shrinkwrap`, so we change the npm script name to `postshrinkwrap`. Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
56 lines
1.3 KiB
Bash
Executable File
56 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
###
|
|
# Copyright 2017 resin.io
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
###
|
|
|
|
set -e
|
|
set -u
|
|
|
|
function usage() {
|
|
echo "Usage: $0"
|
|
echo ""
|
|
echo "Options"
|
|
echo ""
|
|
echo " -o <operating system>"
|
|
echo " -r <architecture>"
|
|
exit 1
|
|
}
|
|
|
|
ARGV_OPERATING_SYSTEM=""
|
|
ARGV_ARCHITECTURE=""
|
|
|
|
while getopts ":o:r:" option; do
|
|
case $option in
|
|
o) ARGV_OPERATING_SYSTEM=$OPTARG ;;
|
|
r) ARGV_ARCHITECTURE=$OPTARG ;;
|
|
*) usage ;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$ARGV_OPERATING_SYSTEM" ] || [ -z "$ARGV_ARCHITECTURE" ]; then
|
|
usage
|
|
fi
|
|
|
|
if [ "$ARGV_OPERATING_SYSTEM" == "linux" ]; then
|
|
./scripts/build/docker/run-command.sh \
|
|
-r "$TARGET_ARCH" \
|
|
-s "$(pwd)" \
|
|
-c 'make installers-all'
|
|
else
|
|
./scripts/build/check-dependency.sh make
|
|
make installers-all
|
|
fi
|