222 Commits

Author SHA1 Message Date
Juan Cruz Viotti
00b66a9cf7 chore: use pushd/popd instead of --prefix on dependencies-npm.sh (#941)
We currently use the `--prefix` option in `dependencies-npm.sh` to
install dependencies in another directory, however that function causes
ENOSELF to be thrown on Windows under Msys. As a solution, we take the
same `pushd`/`popd` approach as we do in `dependencies-bower.sh`.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-05 21:40:50 -04:00
Juan Cruz Viotti
457c8d194f chore: fix certificate verification error with wget on MinGW (#942)
The `electron-download-package.sh` script yields the following error on
MinGW:

```
cannot verify github.com's certificate
```

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-05 21:25:41 -04:00
Juan Cruz Viotti
bf2ff121f3 chore: symlink manifests in dependencies scripts (#935)
See: https://github.com/resin-io/etcher/pull/934#issuecomment-264862767
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-05 15:42:42 -04:00
Juan Cruz Viotti
92bc79df15 chore: move electron package caching responsibility to GNU Make (#926)
Currently, `scripts/unix/electron-download-package.sh` contains its own
logic to determine if the package was already downloaded.

This commit takes the electron package uncompressing task to the
configure scripts, and reduce `electron-download-package.sh` to a script
that simply downloads the zip to a certain location, since this change
allows us to have a separate Make rule to download the Electron zip (and
thus have Make take care of caching).

After this change, the `electron-configure-package-*.sh` scripts are no
longer routines that modify a certain directory, but scripts that take
the zip as an input and actually create the package directory, which
aligns better with Make's design.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-05 12:28:35 -04:00
Juan Cruz Viotti
dcf5a5c2f4 chore: move bower.json removal after popd in dependencies-bower.sh (#934)
The reason for this change is to make things more explicit.

See: https://github.com/resin-io/etcher/pull/923#discussion_r90571316
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-05 11:15:03 -04:00
Juan Cruz Viotti
0c1f9e93ba chore: use rmdir to delete empty npm etc/ directory (#933)
NPM might create an empty `etc/` directory when calling it with the
`--prefix` option and we have a check to see if this directory indeed
exists and its empty in order to proceed and delete it.

We currently use `rm -rf` for it, even though `rmdir` is sufficient.

See: https://github.com/resin-io/etcher/pull/923#discussion_r90570968
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-05 00:16:13 -04:00
Andrew Scheller
ce206fc0b7 chore: fix the bintray-debian publishing script (#930)
This change prevents the script erroring with `BINTRAY_USER: unbound variable` when `$BINTRAY_USER` isn't defined, and instead displays the "Please define the following ..." message as expected.
2016-12-04 20:24:50 -04:00
Andrew Scheller
223932eb7b chore: exit with error code 1 on build script usage section (#925) 2016-12-01 20:34:37 -04:00
Juan Cruz Viotti
b7aee7affe chore: attempt to re-use $TMPDIR in installer-appimage.sh (#917)
We currently hardcode the temporary directory location to `/tmp`. Some
Linux systems define `$TMPDIR`, so we should attempt to re-use that
first.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-01 19:52:27 -04:00
Juan Cruz Viotti
832bfad9d1 chore: reuse npm/bower dependencies across builds (#923)
Currently, we create a "resources app" and install dependencies on it.
This means that to create another "resources app", the whole dependency
installation process needs to be repeated.

As a solution, we cache dependencies at
`release/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/` and
copy them to the resources apps as we need them.

This has the additional benefit that the resources app depends on the
dependencies rather than the other way around (dependencies depend on
the resources app), which didn't feel right.

In order to accomodate to these changes, the dependencies scripts are
now in charge of taking their corresponding manifests with them when the
prefix option is passed, given that neither `npm` nor `bower` allow to
customise the output location.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-01 19:52:07 -04:00
Juan Cruz Viotti
68a71d89e2 chore: add Makefile to build OS X and GNU/Linux (#922)
This Makefile ties together all the build scripts we've been developing
so far. It currently only supports UNIX based operating systems, but
Windows support will be added soon.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-01 15:16:47 -04:00
Juan Cruz Viotti
4f233f20e0 chore: move GNU/Linux zip generation to installer-appimage (#913)
Currently, `installer-appimage` creates only the AppImage, and we rely
on code outside the main task to package it up as a Zip. Since Zip is
a required step for AppImage deployment (since the AppImage will lose
its execution permissions if its moved around), we integrate Zip
generation into the AppImage task itself.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-01 12:29:27 -04:00
Juan Cruz Viotti
6f0fe93aad chore: improve naming of build scripts (#918)
- `darwin/configure-electron.sh` -> `darwin/electron-configure-package-darwin.sh`
- `darwin/installer-zip.sh` -> `darwin/electron-installer-app-zip.sh`
- `darwin/installer-dmg.sh` -> `darwin/electron-installer-dmg.sh`
- `darwin/sign.sh` -> `darwin/electron-sign-app.sh`
- `linux/configure-electron.sh` -> `linux/electron-configure-package-linux.sh`
- `linux/installer-appimage.sh` -> `linux/electron-installer-appimage.sh`
- `linux/installer-deb.sh` -> `linux/electron-installer-debian.sh`
- `unix/create-asar.sh` -> `unix/electron-create-asar.sh`
- `unix/create-electron-app.sh` -> `unix/electron-create-resources-app.sh`
- `unix/download-electron.sh` -> `unix/electron-download-package.sh`

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-01 12:11:08 -04:00
Juan Cruz Viotti
100ab79eab chore: exit with error code 1 on build script usage section (#916)
We're currently exitting with error code 0 when displaying the usage
information on build scripts, which means that if the user forgets or
mistypes an option argument, the script will carry on its way.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-01 11:58:10 -04:00
Juan Cruz Viotti
b2124499c7 chore: extract code-signing logic from windows.bat to sign.bat (#911)
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-01 10:59:26 -04:00
Juan Cruz Viotti
5b6f3cca60 chore: split dependencies.sh into bower and npm scripts (#914)
The purpose of this change is to stay true to the Makefile approach,
where each rule is meant to create a single directory/file.

Currently, `unix/dependencies.sh` resulted in `bower_components` and
`node_modules`. Splitting this rule also means that we don't have to
install bower dependencies where we don't need them (e.g: the CLI).

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-12-01 10:58:26 -04:00
Juan Cruz Viotti
a8116250d2 chore: install dependencies directly in package (#909)
Previously, the build scripts would override the top level
`node_modules` and `bower_components`. After this commit, the
dependencies are installed directly in the Electron package.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-30 11:38:31 -04:00
Juan Cruz Viotti
43922f94c0 chore: extract dependencies.bat from windows.bat (#910)
The logic to install dependencies on Windows now separately lives in
`scripts/windows/dependencies.bat`, similarly to what we've been done
with other operating systems.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-30 11:33:47 -04:00
Andrew Scheller
b8ffd24cce chore: refactor and enhance dependency checking in build scripts (#908)
This refactors the way that the build shell-scripts check for dependencies
in order to cut down on code duplication, and also adds additional
dependency-checks that were missing previously.

Change-Type: minor
2016-11-29 19:37:31 -04:00
Juan Cruz Viotti
2397b5d2aa chore: don't include LICENSE and version in OS X package (#907)
Including them means we have to nicely display them in the final `.dmg`.
For simplicity reasons, we'll omit it for now.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-29 19:18:31 -04:00
Juan Cruz Viotti
ad3636c31a fix: don't lock installer-cli architecture to x64 in build scripts (#904)
We were accidentally hardcoding the installer generation to `x64`.

See: https://github.com/resin-io/etcher/pull/896#discussion_r89999295
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-29 15:20:59 -04:00
Juan Cruz Viotti
0ed4f5d3c8 chore: adopt new build command convention for OS X (#903)
The `darwin.sh` script now accepts the following commands:

- `develop-electron`
- `installer-dmg`
- `installer-zip`

In order to accomplish this, `./scripts/darwin/package.sh` is no longer
relying on `electron-packager`.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-28 09:56:14 -04:00
Juan Cruz Viotti
7794bf06d1 refactor: extract electron downloading logic to its own script (#902)
This will allow us to easily re-use this functionality in the OS X
package script.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-28 01:13:12 -04:00
Juan Cruz Viotti
6e0d8e1f5c refactor: ditch electron-osx-sign for OS X signing (#901)
Making use of `codesign` directly allows us to have much more
flexibility in how we sign things, which will prove very valuable when
adapting this `sign.sh` script to code sign the Etcher CLI.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-28 01:13:02 -04:00
Juan Cruz Viotti
19b3bc56c2 chore: adopt new build script command convention in GNU/Linux (#899)
The GNU/Linux build script (as the rest of the OSes will in the near
future), now accepts the following command:

- `develop-electron`
- `develop-cli`
- `installer-cli`
- `installer-appimage`
- `installer-debian`

Each of the commands is now completely independent from the others.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-27 22:29:23 -04:00
Juan Cruz Viotti
553f7f3f4b refactor: get rid of electron-packager in GNU/Linux (#897)
In order to take a whitelisting approach to dependencies, the
`unix/dependencies.sh` script is ran as part of packaging as well, but
passing the `-p` (production) flag.

In the future, the current `install`, `package`, and `installer` targets
will be deplaced by `develop-<type>`, `installer-<type>`.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-25 16:13:59 -04:00
Juan Cruz Viotti
151d19ce63 chore: add "cli" command to GNU/Linux and OS X build script (#896)
This is the first step towards properly publishing the Etcher CLI. The
option is not present in Windows yet, and its intentionally undocumented
for the time being.

See: https://github.com/resin-io/etcher/issues/355
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-25 14:11:13 -04:00
Juan Cruz Viotti
a01c9aa6b1 refactor: improve and unify dependencies.sh script across UNIX targets (#894)
- Unify both `linux/dependencies.sh` and `darwin/dependencies.sh` in
  `unix/dependencies.sh`

- Add `-f` (force) option to `unix/dependencies.sh`

- Add `-p` (production) option to `unix/dependencies.sh`

- Allow passing a target type to `unix/dependencies.sh`

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-25 12:57:09 -04:00
Juan Cruz Viotti
f0bc04c238 refactor: extract GNU/Linux build scripts into many files (#890)
Related changes

- Remove AppImages related binary blob from `scripts/build/AppImages` and
  fetch them from the internet instead.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-23 12:20:51 -04:00
Juan Cruz Viotti
2f980e808f chore: add x86 architecture support for darwin/dependencies.sh (#883)
We don't really do x64 builds for OS X at the moment, but nice to make
the build scripts consistent.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-18 17:28:23 +00:00
Juan Cruz Viotti
8d44c9b86c refactor: extract OS X build script into many files (#875)
This is the first step towards decoupling the build system as many
different scripts, for maintainability and convenience purposes.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-18 16:54:14 +00:00
Juan Cruz Viotti
5ac486d941 style: refer to Resin.io as resin.io, according to the style manual (#823)
> For all, lower-case capitalization unless beginning a sentence (Ex. I
> like resin.io. Resin.io is great.)

See: https://github.com/resin-io/docs#style-manual
See: https://github.com/resin-io/etcher/issues/797
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-03 10:57:29 -04:00
Juan Cruz Viotti
8b47c3f017 chore: add bintray debian publishing script (#819)
This script can be used to publish Etcher debian packages to Bintray.

See: https://github.com/resin-io/etcher/issues/632
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-11-02 18:24:28 -04:00
Juan Cruz Viotti
45dac58e2a chore: remove www from etcher homepage URL (#808)
See: https://github.com/resin-io/etcher/pull/795
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-10-31 17:39:11 -04:00
Andrew Scheller
438c098953 chore: fix linux x86 build script (#780)
While the previous fix in #777 fixed repeated builds, it accidentally broke the first build!
2016-10-27 14:49:14 -04:00
Wasabi Fan
b6817cfbb3 chore: include Etcher version in installer/archive names 2016-10-27 10:46:04 -04:00
Andrew Scheller
0bbcc10cfe chore: fix minor install script problems (#777)
When running the install script as root (e.g. inside a Docker container), bower complained that it

"shouldn't" be run with sudo. When running the x86 install multiple times, it tried to move

Etcher-linux-ia32 inside the existing Etcher-linux-x86/ folder, rather than renaming it, which meant

later commands failed.
2016-10-26 14:58:47 -04:00
Juan Cruz Viotti
9618291f80 feat(GUI): spawn CLI directly from the AppImage in GNU/Linux (#775)
If we pass relative paths as arguments to the AppImage, they get
resolved from `/tmp/.mount_XXXXXX/usr`. We can exploit this to run the
Etcher CLI directly from the AppImage, rather than having to mount it
ourselves:

```sh
ELECTRON_RUN_AS_NODE=1 Etcher-linux-x64.AppImage bin/resources/app.asar [OPTIONS]
```

By using this little trick, we get rid of both our custom mounting logic
and the need of surrounding the command to run in single quotes,
therefore avoiding a whole new kind of escaping issues.

Since running the CLI directly from the AppImage means that the
`desktopintegration` will be ran for the CLI, we pass the `SKIP`
environment variable to avoid having it prompt the user for
installation.

We also updated the `desktopintegration` script to the latest version,
which reduces the amount of logging plus other minor fixes.

Fixes: https://github.com/resin-io/etcher/issues/637
Change-Type: patch
Changelog-Entry: Fix Etcher leaving zombie processes behind in GNU/Linux.
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-10-26 14:07:17 -04:00
Juan Cruz Viotti
4d3eab4915 chore: create standalone Windows builds (#769)
This PR zips the package that is built by running:

```sh
.\scripts\build\windows.bat package <arch>
```

And puts it in `etcher-release/installers`.

Fixes: https://github.com/resin-io/etcher/issues/760
Change-Type: minor
Changelog-Entry: Publish standalone Windows builds.
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-10-25 12:35:21 -04:00
Juan Cruz Viotti
63948874d7 chore: distribute AppImage inside a zip (#772)
AppImages need to be marked as executables before they can be used.
Distributing them directly means that virtually all web browsers will
automatically remove the execution permissions, leading us to have to
explain users how to add it back with `chmod`, etc.

For simplicity purposes, we'll be distributing AppImages inside ZIPs,
which ensure the execution permissions are added back when the user
decompresses it.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-10-24 20:25:16 -04:00
Juan Cruz Viotti
b6314bf397 refactor: use local variables in shell functions in build scripts (#771)
We translate function arguments (e.g: `$1`, `$2`, etc) to readable names
using shell variables in the top of every shell function in the build
scripts.

Since we were not declaring these variables as `local`, two functions
using the same "argument name" would override each other.

For example:

```sh
function foo() {
  variable=$1
  # Do something with $variable
}

function bar() {
  variable=$1
  # Do something with $variable
}

foo "Hello World"
echo $variable
> Hello World

bar "Changed variable"
echo $variable
> Changed variable
```

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-10-24 17:24:32 -04:00
Juan Cruz Viotti
d7d9dc099f chore: fix output_package unbound variable in GNU/Linux (#767)
The `$output_package` variable is defined inside the `package_x$ARCH`
functions, which means that if we run the following commands:

```sh
./scripts/build/linux.sh package x64
./scripts/build/linux.sh appimage x64
```

The `$output_package` variable will not be defined when the script runs
the `appimage` command.

To workaround this issue, we declare a new `$package_directory` variable
inside the `appimage` command clause.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-10-24 14:25:37 -04:00
David Lechner
c43dffce80 chore(debian): add dependency on polkit package (#758)
A policy kit authentication agent is needed for privilege escalation.

See: https://github.com/resin-io/etcher/issues/756#issuecomment-253298322
2016-10-14 12:09:02 -03:00
David Lechner
f28b5a859b chore: add debian packaging (#747)
This adds a "debian" command to the linux build script. It uses
electron-installer-debian to create a debian package.
2016-10-05 12:30:06 -04:00
David Lechner
aea9d30271 chore: only apply upx compression when packaging as appimage
Debian packaging tools cannot analyze the binaries if they are compressed
with upx. If we move the compression to the appimage command, then the
output of the package command can be used for building debian packages.
2016-10-02 21:17:28 -04:00
David Lechner
6fedc9eb83 chore: add appimage command to GNU/Linux build script
With this addition, the `package` command simply creates a standalone package, while "appimage" is the one that creates the actual AppImage. The "all" command still generates the AppImage as before.
2016-09-30 10:09:47 -04:00
Juan Cruz Viotti
66a810e764 chore: apply HFS+ compression to *.app in OS X (#715)
This results in ~10MB savings, which is not much, but still worth
reducing as much as we can.

See: https://github.com/resin-io/etcher/issues/711
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-09-23 14:11:42 -04:00
Juan Cruz Viotti
82cb7ab689 upgrade: removedrive to v1.0.0 (#611)
This version contains the following improvements:

- https://github.com/jviotti/removedrive/pull/3
- https://github.com/jviotti/removedrive/pull/2

We also make sure error descriptions are passed to the dialog service
since this module now sets that property in its error objects.

Change-Type: patch
Changelog-Entry: Upgrade `removedrive` to v1.0.0.
Link: https://github.com/jviotti/removedrive/blob/master/CHANGELOG.md
See: https://github.com/resin-io/etcher/issues/573
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-28 15:53:47 -04:00
Juan Cruz Viotti
ef96ae86a0 chore: stop requiring a specific nodejs version to build Etcher (#584)
We were previously requiring users to run the exact same NodeJS version as
Electron bundled in order to avoid native add-on compilation incompatibilities,
however this problem is completely mitigated by configuring NPM to build
against an Electron specific V8.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-19 22:28:41 -04:00
Juan Cruz Viotti
6348d88c95 chore: add commands to build scripts (#566)
Currently build scripts install dependencies and package everything on
every run. In order to allow more customisation, the build scripts now
accept the following commands:

- `install`: Only install dependencies.
- `package`: Only package the application.
- `all`: Install dependencies and package the application.

The above differentiation allows us to improve the documentation and CI
configuration files to point to the `install` commands instead of having
to explain how to configure NPM correctly, since that's done by the
build scripts by default.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-12 10:15:21 -04:00