mirror of
https://github.com/balena-io/etcher.git
synced 2025-04-24 07:17:18 +00:00
chore: make use of pkg to package the Etcher CLI (#1547)
This commit replaces our home-grown CLI packaging mechanism based on browserify + node-static-entry-point with pkg, an open source tool to package Node.js applications for distribution. Some highlights: - Removing browserify got rid of a lot of dependencies from npm-shrinkwrap.json - pkg currently has an issue where macOS binaries can't be code-signed (https://github.com/zeit/pkg/issues/128), therefore this commit comments-out the binary signing section for that operating system - pkg currently has an issue where Windows binaries can't be branded (https://github.com/zeit/pkg/issues/149), therefore this commit comments-out the branding section for that operating system See: https://github.com/zeit/pkg Fixes: https://github.com/resin-io/etcher/issues/1531 Fixes: https://github.com/resin-io/etcher/issues/1450 Change-Type: patch Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
This commit is contained in:
parent
3ade1ea59b
commit
6ffba92dc8
@ -13,6 +13,7 @@ cache:
|
||||
- $HOME/.cache/electron
|
||||
- $HOME/.cache/electron-builder
|
||||
- $HOME/.npm/_prebuilds
|
||||
- node_modules
|
||||
|
||||
services:
|
||||
- docker
|
||||
|
111
Makefile
111
Makefile
@ -14,7 +14,6 @@ $(error $(BUILD_DIRECTORY_PARENT) does not exist)
|
||||
endif
|
||||
|
||||
BUILD_TEMPORARY_DIRECTORY = $(BUILD_DIRECTORY)/.tmp
|
||||
BUILD_OUTPUT_DIRECTORY = $(BUILD_DIRECTORY)/out
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Application configuration
|
||||
@ -179,15 +178,18 @@ TARGET_ARCH_DEBIAN = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET
|
||||
TARGET_ARCH_REDHAT = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t redhat)
|
||||
TARGET_ARCH_APPIMAGE = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t appimage)
|
||||
TARGET_ARCH_ELECTRON_BUILDER = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t electron-builder)
|
||||
TARGET_PLATFORM_PKG = $(shell ./scripts/build/target-convert.sh -r $(TARGET_PLATFORM) -t pkg)
|
||||
ENTRY_POINT_CLI = lib/cli/etcher.js
|
||||
ETCHER_CLI_BINARY = $(APPLICATION_NAME_LOWERCASE)
|
||||
ifeq ($(TARGET_PLATFORM),win32)
|
||||
ETCHER_CLI_BINARY = $(APPLICATION_NAME_LOWERCASE).exe
|
||||
endif
|
||||
|
||||
PRODUCT_NAME = etcher
|
||||
APPLICATION_NAME_LOWERCASE = $(shell echo $(APPLICATION_NAME) | tr A-Z a-z)
|
||||
APPLICATION_VERSION_DEBIAN = $(shell echo $(APPLICATION_VERSION) | tr "-" "~")
|
||||
APPLICATION_VERSION_REDHAT = $(shell echo $(APPLICATION_VERSION) | tr "-" "~")
|
||||
|
||||
# Fix hard link Appveyor issues
|
||||
CPRF = cp -RLf
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Rules
|
||||
# ---------------------------------------------------------------------
|
||||
@ -208,16 +210,14 @@ $(BUILD_DIRECTORY):
|
||||
$(BUILD_TEMPORARY_DIRECTORY): | $(BUILD_DIRECTORY)
|
||||
mkdir $@
|
||||
|
||||
$(BUILD_OUTPUT_DIRECTORY): | $(BUILD_DIRECTORY)
|
||||
mkdir $@
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# CLI
|
||||
# ---------------------------------------------------------------------
|
||||
|
||||
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies: package.json npm-shrinkwrap.json \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app: \
|
||||
package.json npm-shrinkwrap.json \
|
||||
| $(BUILD_DIRECTORY)
|
||||
mkdir $@
|
||||
mkdir -p $@
|
||||
./scripts/build/dependencies-npm.sh -p \
|
||||
-r "$(TARGET_ARCH)" \
|
||||
-v "$(NODE_VERSION)" \
|
||||
@ -225,54 +225,45 @@ $(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies: package.
|
||||
-t node \
|
||||
-s "$(TARGET_PLATFORM)"
|
||||
git apply --directory $@/node_modules/lzma-native patches/cli/lzma-native-index-static-addon-require.patch
|
||||
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app: \
|
||||
package.json lib \
|
||||
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies \
|
||||
| $(BUILD_DIRECTORY)
|
||||
mkdir $@
|
||||
cp $(word 1,$^) $@
|
||||
$(CPRF) $(word 2,$^) $@
|
||||
$(CPRF) $(word 3,$^)/* $@
|
||||
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).js: \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app \
|
||||
| $(BUILD_DIRECTORY)
|
||||
./scripts/build/concatenate-javascript.sh -e lib/cli/etcher.js -b $< -o $@ -m
|
||||
cp -r lib $@
|
||||
cp package.json $@
|
||||
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH): \
|
||||
$(BUILD_DIRECTORY)/node-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).js \
|
||||
| $(BUILD_DIRECTORY) $(BUILD_TEMPORARY_DIRECTORY)
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app \
|
||||
| $(BUILD_DIRECTORY)
|
||||
mkdir $@
|
||||
./scripts/build/node-package-cli.sh -o $@ -l $</node_modules \
|
||||
-n $(APPLICATION_NAME) \
|
||||
-e $(word 2,$^) \
|
||||
-r $(TARGET_ARCH) \
|
||||
-s $(TARGET_PLATFORM)
|
||||
$(NPX) pkg --output $@/$(ETCHER_CLI_BINARY) -t node6-$(TARGET_PLATFORM_PKG)-$(TARGET_ARCH) $</$(ENTRY_POINT_CLI)
|
||||
./scripts/build/dependencies-npm-extract-addons.sh \
|
||||
-d $</node_modules \
|
||||
-o $@/node_modules
|
||||
# pkg currently has a bug where darwin executables
|
||||
# can't be code-signed
|
||||
# See https://github.com/zeit/pkg/issues/128
|
||||
# ifeq ($(TARGET_PLATFORM),darwin)
|
||||
# ifdef CSC_NAME
|
||||
# ./scripts/build/electron-sign-file-darwin.sh -f $@/$(ETCHER_CLI_BINARY) -i "$(CSC_NAME)"
|
||||
# endif
|
||||
# endif
|
||||
|
||||
ifeq ($(TARGET_PLATFORM),win32)
|
||||
./scripts/build/electron-brand-exe.sh \
|
||||
-f $@/etcher.exe \
|
||||
-n $(APPLICATION_NAME) \
|
||||
-d "$(APPLICATION_DESCRIPTION)" \
|
||||
-v "$(APPLICATION_VERSION)" \
|
||||
-c "$(APPLICATION_COPYRIGHT)" \
|
||||
-m "$(COMPANY_NAME)" \
|
||||
-i assets/icon.ico \
|
||||
-w $(BUILD_TEMPORARY_DIRECTORY)
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_PLATFORM),darwin)
|
||||
ifdef CSC_NAME
|
||||
./scripts/build/electron-sign-file-darwin.sh -f $@/etcher -i "$(CSC_NAME)"
|
||||
endif
|
||||
endif
|
||||
# pkg currently has a bug where Windows executables
|
||||
# can't be branded
|
||||
# See https://github.com/zeit/pkg/issues/149
|
||||
# ifeq ($(TARGET_PLATFORM),win32)
|
||||
# ./scripts/build/electron-brand-exe.sh \
|
||||
# -f $@/$(ETCHER_CLI_BINARY) \
|
||||
# -n $(APPLICATION_NAME) \
|
||||
# -d "$(APPLICATION_DESCRIPTION)" \
|
||||
# -v "$(APPLICATION_VERSION)" \
|
||||
# -c "$(APPLICATION_COPYRIGHT)" \
|
||||
# -m "$(COMPANY_NAME)" \
|
||||
# -i assets/icon.ico \
|
||||
# -w $(BUILD_TEMPORARY_DIRECTORY)
|
||||
# endif
|
||||
|
||||
ifeq ($(TARGET_PLATFORM),win32)
|
||||
ifdef CSC_LINK
|
||||
ifdef CSC_KEY_PASSWORD
|
||||
./scripts/build/electron-sign-exe-win32.sh -f $@/etcher.exe \
|
||||
./scripts/build/electron-sign-exe-win32.sh -f $@/$(ETCHER_CLI_BINARY) \
|
||||
-d "$(APPLICATION_NAME) - $(APPLICATION_VERSION)" \
|
||||
-c $(CSC_LINK) \
|
||||
-p $(CSC_KEY_PASSWORD)
|
||||
@ -280,14 +271,12 @@ endif
|
||||
endif
|
||||
endif
|
||||
|
||||
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip: \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH) \
|
||||
| $(BUILD_OUTPUT_DIRECTORY)
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip: \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)
|
||||
./scripts/build/zip-file.sh -f $< -s $(TARGET_PLATFORM) -o $@
|
||||
|
||||
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz: \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH) \
|
||||
| $(BUILD_OUTPUT_DIRECTORY)
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz: \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)
|
||||
./scripts/build/tar-gz-file.sh -f $< -o $@
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
@ -376,7 +365,7 @@ package-cli: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$
|
||||
ifeq ($(TARGET_PLATFORM),darwin)
|
||||
electron-installer-app-zip: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
|
||||
electron-installer-dmg: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).dmg
|
||||
cli-installer-tar-gz: $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
|
||||
cli-installer-tar-gz: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
|
||||
TARGETS += \
|
||||
electron-installer-dmg \
|
||||
electron-installer-app-zip \
|
||||
@ -384,14 +373,14 @@ TARGETS += \
|
||||
PUBLISH_AWS_S3 += \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).dmg \
|
||||
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_PLATFORM),linux)
|
||||
electron-installer-appimage: $(BUILD_DIRECTORY)/$(APPLICATION_NAME_LOWERCASE)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
|
||||
electron-installer-debian: $(BUILD_DIRECTORY)/$(APPLICATION_NAME_ELECTRON)_$(APPLICATION_VERSION_DEBIAN)_$(TARGET_ARCH_DEBIAN).deb
|
||||
electron-installer-redhat: $(BUILD_DIRECTORY)/$(APPLICATION_NAME_ELECTRON)-$(APPLICATION_VERSION_REDHAT).$(TARGET_ARCH_REDHAT).rpm
|
||||
cli-installer-tar-gz: $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
|
||||
cli-installer-tar-gz: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
|
||||
TARGETS += \
|
||||
electron-installer-appimage \
|
||||
electron-installer-debian \
|
||||
@ -399,7 +388,7 @@ TARGETS += \
|
||||
cli-installer-tar-gz
|
||||
PUBLISH_AWS_S3 += \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME_LOWERCASE)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip \
|
||||
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).tar.gz
|
||||
PUBLISH_BINTRAY_DEBIAN += \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME_ELECTRON)_$(APPLICATION_VERSION_DEBIAN)_$(TARGET_ARCH_DEBIAN).deb
|
||||
PUBLISH_BINTRAY_REDHAT += \
|
||||
@ -409,7 +398,7 @@ endif
|
||||
ifeq ($(TARGET_PLATFORM),win32)
|
||||
electron-installer-portable: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-portable.exe
|
||||
electron-installer-nsis: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).exe
|
||||
cli-installer-zip: $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
|
||||
cli-installer-zip: $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
|
||||
TARGETS += \
|
||||
electron-installer-portable \
|
||||
electron-installer-nsis \
|
||||
@ -417,7 +406,7 @@ TARGETS += \
|
||||
PUBLISH_AWS_S3 += \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-portable.exe \
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).exe \
|
||||
$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
|
||||
$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-cli-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip
|
||||
endif
|
||||
|
||||
installers-all: $(PUBLISH_AWS_S3) $(PUBLISH_BINTRAY_DEBIAN) $(PUBLISH_BINTRAY_REDHAT)
|
||||
|
764
npm-shrinkwrap.json
generated
764
npm-shrinkwrap.json
generated
File diff suppressed because it is too large
Load Diff
@ -83,7 +83,6 @@
|
||||
"devDependencies": {
|
||||
"angular-mocks": "1.6.3",
|
||||
"asar": "0.10.0",
|
||||
"browserify": "github:jviotti/node-browserify#dynamic-dirname-filename",
|
||||
"electron": "1.6.6",
|
||||
"electron-builder": "19.9.1",
|
||||
"electron-mocha": "3.3.0",
|
||||
@ -96,6 +95,7 @@
|
||||
"node-gyp": "3.5.0",
|
||||
"node-sass": "4.5.3",
|
||||
"npx": "5.2.0",
|
||||
"pkg": "4.1.1",
|
||||
"sass-lint": "1.10.2",
|
||||
"tmp": "0.0.31",
|
||||
"versionist": "2.8.1"
|
||||
|
@ -1,67 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
###
|
||||
# Copyright 2016 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 -u
|
||||
set -e
|
||||
|
||||
BROWSERIFY="./node_modules/.bin/browserify"
|
||||
./scripts/build/check-dependency.sh "$BROWSERIFY"
|
||||
|
||||
function usage() {
|
||||
echo "Usage: $0"
|
||||
echo ""
|
||||
echo "Options"
|
||||
echo ""
|
||||
echo " -e <entry point (.js)>"
|
||||
echo " -b <base directory>"
|
||||
echo " -o <output>"
|
||||
echo " -m minify"
|
||||
exit 1
|
||||
}
|
||||
|
||||
ARGV_ENTRY_POINT=""
|
||||
ARGV_BASE_DIRECTORY=""
|
||||
ARGV_OUTPUT=""
|
||||
ARGV_MINIFY=false
|
||||
|
||||
while getopts ":e:b:o:m" option; do
|
||||
case $option in
|
||||
e) ARGV_ENTRY_POINT=$OPTARG ;;
|
||||
b) ARGV_BASE_DIRECTORY=$OPTARG ;;
|
||||
o) ARGV_OUTPUT=$OPTARG ;;
|
||||
m) ARGV_MINIFY=true ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$ARGV_ENTRY_POINT" ] ||
|
||||
[ -z "$ARGV_BASE_DIRECTORY" ] ||
|
||||
[ -z "$ARGV_OUTPUT" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
"$BROWSERIFY" "$ARGV_ENTRY_POINT" \
|
||||
--node \
|
||||
--basedir "$ARGV_BASE_DIRECTORY" \
|
||||
--outfile "$ARGV_OUTPUT"
|
||||
|
||||
if [ "$ARGV_MINIFY" == "true" ]; then
|
||||
./scripts/build/check-dependency.sh uglifyjs
|
||||
uglifyjs --compress --output "$ARGV_OUTPUT.MIN" -- "$ARGV_OUTPUT"
|
||||
mv "$ARGV_OUTPUT.MIN" "$ARGV_OUTPUT"
|
||||
fi
|
@ -49,7 +49,6 @@ RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - \
|
||||
RUN npm config set unsafe-perm=true
|
||||
|
||||
RUN npm config set spin=false
|
||||
RUN npm install -g uglify-es@3.0.3
|
||||
|
||||
# Python
|
||||
COPY requirements.txt requirements.txt
|
||||
|
@ -48,7 +48,6 @@ RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - \
|
||||
RUN npm config set unsafe-perm=true
|
||||
|
||||
RUN npm config set spin=false
|
||||
RUN npm install -g uglify-es@3.0.3
|
||||
|
||||
# Python
|
||||
COPY requirements.txt requirements.txt
|
||||
|
@ -51,7 +51,6 @@ RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - \
|
||||
RUN npm config set unsafe-perm=true
|
||||
|
||||
RUN npm config set spin=false
|
||||
RUN npm install -g uglify-es@3.0.3
|
||||
|
||||
# Python
|
||||
COPY requirements.txt requirements.txt
|
||||
|
@ -1,81 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
###
|
||||
# Copyright 2016 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 -u
|
||||
set -e
|
||||
|
||||
function usage() {
|
||||
echo "Usage: $0"
|
||||
echo ""
|
||||
echo "Options"
|
||||
echo ""
|
||||
echo " -n <application name>"
|
||||
echo " -e <application entry point (.js)>"
|
||||
echo " -l <node_modules directory>"
|
||||
echo " -r <architecture>"
|
||||
echo " -s <operating system (linux|darwin|win32)>"
|
||||
echo " -o <output directory>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
ARGV_APPLICATION_NAME=""
|
||||
ARGV_ENTRY_POINT=""
|
||||
ARGV_NODE_MODULES=""
|
||||
ARGV_ARCHITECTURE=""
|
||||
ARGV_OPERATING_SYSTEM=""
|
||||
ARGV_OUTPUT=""
|
||||
|
||||
while getopts ":n:e:l:r:s:o:" option; do
|
||||
case $option in
|
||||
n) ARGV_APPLICATION_NAME="$OPTARG" ;;
|
||||
e) ARGV_ENTRY_POINT="$OPTARG" ;;
|
||||
l) ARGV_NODE_MODULES="$OPTARG" ;;
|
||||
r) ARGV_ARCHITECTURE="$OPTARG" ;;
|
||||
s) ARGV_OPERATING_SYSTEM="$OPTARG" ;;
|
||||
o) ARGV_OUTPUT="$OPTARG" ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$ARGV_APPLICATION_NAME" ] \
|
||||
|| [ -z "$ARGV_ENTRY_POINT" ] \
|
||||
|| [ -z "$ARGV_NODE_MODULES" ] \
|
||||
|| [ -z "$ARGV_ARCHITECTURE" ] \
|
||||
|| [ -z "$ARGV_OPERATING_SYSTEM" ] \
|
||||
|| [ -z "$ARGV_OUTPUT" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
cp "$ARGV_ENTRY_POINT" "$ARGV_OUTPUT/index.js"
|
||||
|
||||
./scripts/build/dependencies-npm-extract-addons.sh \
|
||||
-d "$ARGV_NODE_MODULES" \
|
||||
-o "$ARGV_OUTPUT/node_modules"
|
||||
|
||||
APPLICATION_NAME_LOWERCASE="$(echo "$ARGV_APPLICATION_NAME" | tr '[:upper:]' '[:lower:]')"
|
||||
BINARY_LOCATION="$ARGV_OUTPUT/$APPLICATION_NAME_LOWERCASE"
|
||||
if [ "$ARGV_OPERATING_SYSTEM" == "win32" ]; then
|
||||
BINARY_LOCATION="$BINARY_LOCATION.exe"
|
||||
fi
|
||||
|
||||
./scripts/build/node-static-entry-point-download.sh \
|
||||
-r "$ARGV_ARCHITECTURE" \
|
||||
-v "1.0.1" \
|
||||
-s "$ARGV_OPERATING_SYSTEM" \
|
||||
-o "$BINARY_LOCATION"
|
||||
chmod +x "$BINARY_LOCATION"
|
@ -1,72 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
###
|
||||
# Copyright 2016 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 -u
|
||||
set -e
|
||||
|
||||
./scripts/build/check-dependency.sh curl
|
||||
|
||||
function usage() {
|
||||
echo "Usage: $0"
|
||||
echo ""
|
||||
echo "Options"
|
||||
echo ""
|
||||
echo " -r <architecture>"
|
||||
echo " -v <version>"
|
||||
echo " -s <operating system>"
|
||||
echo " -o <output directory>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
ARGV_ARCHITECTURE=""
|
||||
ARGV_VERSION=""
|
||||
ARGV_OPERATING_SYSTEM=""
|
||||
ARGV_OUTPUT=""
|
||||
|
||||
while getopts ":r:v:s:o:" option; do
|
||||
case $option in
|
||||
r) ARGV_ARCHITECTURE=$OPTARG ;;
|
||||
v) ARGV_VERSION=$OPTARG ;;
|
||||
s) ARGV_OPERATING_SYSTEM=$OPTARG ;;
|
||||
o) ARGV_OUTPUT=$OPTARG ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$ARGV_ARCHITECTURE" ] \
|
||||
|| [ -z "$ARGV_VERSION" ] \
|
||||
|| [ -z "$ARGV_OPERATING_SYSTEM" ] \
|
||||
|| [ -z "$ARGV_OUTPUT" ]
|
||||
then
|
||||
usage
|
||||
fi
|
||||
|
||||
GITHUB_REPOSITORY=https://github.com/resin-io-modules/node-static-entry-point
|
||||
DOWNLOADS_BASEURL="$GITHUB_REPOSITORY/releases/download/v$ARGV_VERSION"
|
||||
|
||||
FILENAME="node-$ARGV_OPERATING_SYSTEM-$ARGV_ARCHITECTURE"
|
||||
if [ "$ARGV_OPERATING_SYSTEM" == "win32" ]; then
|
||||
FILENAME="$FILENAME.exe"
|
||||
fi
|
||||
|
||||
CHECKSUM=$(curl --location "$DOWNLOADS_BASEURL/SHASUMS256.txt" | grep "$FILENAME" | cut -d ' ' -f 1)
|
||||
|
||||
./scripts/build/download-tool.sh \
|
||||
-u "$DOWNLOADS_BASEURL/$FILENAME" \
|
||||
-c "$CHECKSUM" \
|
||||
-o "$ARGV_OUTPUT"
|
@ -68,7 +68,6 @@ else
|
||||
|
||||
npm config set spin=false
|
||||
npm config set progress=false
|
||||
npm install -g --silent uglify-es@3.0.3 > /dev/null
|
||||
pip install -r requirements.txt
|
||||
|
||||
make info
|
||||
|
Loading…
x
Reference in New Issue
Block a user