summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron McDaniel2018-10-23 16:53:17 -0500
committerAaron McDaniel2018-10-23 16:53:17 -0500
commitacbcdd821bdd0078e992483fcf83c40c708adaad (patch)
treebcc0ff89b3b5f0585f2d2ff3a09061196a6a7aeb
parent77954060fd3775c2f28c2ba47a076f18f94ce99a (diff)
downloadaur-acbcdd821bdd0078e992483fcf83c40c708adaad.tar.gz
Updated with arch community fixes by Nicola
-rw-r--r--.SRCINFO51
-rw-r--r--PKGBUILD165
-rw-r--r--atom-git75
-rw-r--r--atom-git.install11
-rw-r--r--atom.desktop (renamed from atom-git.desktop)4
-rw-r--r--atom.js33
-rw-r--r--dugite-use-system-git.patch33
-rw-r--r--fix-atom-sh.patch138
-rw-r--r--fix-license-path.patch22
-rw-r--r--fix-restart.patch11
-rw-r--r--symbols-view-use-system-ctags.patch11
-rw-r--r--use-system-apm.patch32
-rw-r--r--use-system-electron.patch177
13 files changed, 589 insertions, 174 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 41ea9f4c7657..1ff37894716c 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,32 +1,43 @@
-# Generated by mksrcinfo v8
-# Wed Nov 1 12:45:39 UTC 2017
pkgbase = atom-editor-git
- pkgdesc = Hackable text editor for the 21st Century, based on web technologies - git channel.
- pkgver = 1.23.0.dev.33610
+ pkgdesc = Hackable text editor for the 21st Century - git channel.
+ pkgver = 1.6.0.beta0.r8187.gec945d03c
pkgrel = 1
- url = https://github.com/atom/atom
- install = atom-git.install
+ url = https://atom.io/
arch = x86_64
arch = i686
- license = MIT
- makedepends = git
- makedepends = npm
- depends = alsa-lib
+ license = MIT,
+ license = custom
depends = gconf
- depends = gtk2
- depends = libgnome-keyring
- depends = libnotify
- depends = libxtst
depends = nodejs
- depends = nss
+ depends = npm
+ depends = libsecret
depends = python2
+ depends = libx11
+ depends = libxkbfile
+ depends = electron
+ depends = apm
optdepends = gvfs: file deletion support
- source = git+https://github.com/atom/atom.git
- source = atom-git.desktop
- source = atom-git
+ optdepends = ctags: symbol indexing support
+ source = atom-editor-git::git+https://github.com/atom/atom.git
+ source = dugite-use-system-git.patch
+ source = fix-atom-sh.patch
+ source = fix-license-path.patch
+ source = fix-restart.patch
+ source = symbols-view-use-system-ctags.patch
+ source = use-system-apm.patch
+ source = use-system-electron.patch
+ source = atom.js
+ source = atom.desktop
sha256sums = SKIP
- sha256sums = b172e3f81eb42eeb1ad6ef70300c33a79a2015110ea87c413b5857c9694d10e9
- sha256sums = 20d3c386dd60e85977511f9138e32921af051fd7e573d3052822219bd7210be9
+ sha256sums = 530b46d31df0f5e8f5881e1608a66fe75d549092a6db2e72ba3ad69c48714153
+ sha256sums = ab9eed3d4c8bfefea256953428379ab1e636b9c7d4c4af30ddc3f485330183c2
+ sha256sums = c8a931f36af3722c57c4d1b70c1e58aa1a18372e8e26c28a4e01253e05295205
+ sha256sums = 1f48c84f30ffefaef7235d8231af7357b801d66de9f09921d0ee0dd5849595ca
+ sha256sums = 3c68e6b3751313e1d386e721f8f819fb051351fb2cf8e753b1d773a0f475fef8
+ sha256sums = 32e27c6245237a794b15eaf7dbfb81196455865af8ed9157aca763ed21a2fef3
+ sha256sums = 8427b38936c4f01ceed4d171528ee375ce211fac01fb220b1596d3a074b31663
+ sha256sums = cdf87ab82cfcf69e8904684c59b08c35a68540ea16ab173fce06037ac341efcd
+ sha256sums = bf7778fa5084027f94cb9c15d2df3b3651ff4749e7d8c0d0c50226400b75efe7
pkgname = atom-editor-git
diff --git a/PKGBUILD b/PKGBUILD
index d5804c40aa04..e2853eeb1a65 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,88 +1,121 @@
+# Maintainer: Aaron McDaniel (mcd1992) <'aur' at the domain 'fgthou.se'>
# Contributor: Matheus de Alcantara <matheus.de.alcantara@gmail.com>
-# Maintainer: Brenton Horne <brentonhorne77 at gmail dot com>
+# Contributor: Brenton Horne <brentonhorne77 at gmail dot com>
+# Contributor: Nicola Squartini <tensor5@gmail.com>
-_pkgname=atom
-_version=git
-
-pkgname=${_pkgname}-editor-${_version}
-pkgver=1.23.0.dev.33610
+pkgname=atom-editor-git
+pkgver=1.6.0.beta0.r8187.gec945d03c
pkgrel=1
-pkgdesc='Hackable text editor for the 21st Century, based on web technologies - git channel.'
+pkgdesc='Hackable text editor for the 21st Century - git channel.'
+url="https://atom.io/"
arch=('x86_64' 'i686')
-url="https://github.com/${_pkgname}/${_pkgname}"
-license=('MIT')
-depends=('alsa-lib' 'gconf' 'gtk2' 'libgnome-keyring' 'libnotify' 'libxtst' 'nodejs' 'nss' 'python2')
-optdepends=('gvfs: file deletion support')
-makedepends=('git' 'npm')
-install=${_pkgname}-${_version}.install
-source=("git+${url}.git"
-"${_pkgname}-${_version}.desktop"
-"${_pkgname}-${_version}")
+license=('MIT', 'custom')
+depends=('gconf' 'nodejs' 'npm' 'libsecret' 'python2' 'libx11' 'libxkbfile' 'electron' 'apm')
+optdepends=('gvfs: file deletion support'
+ 'ctags: symbol indexing support')
+source=("${pkgname}::git+https://github.com/atom/atom.git"
+ 'dugite-use-system-git.patch'
+ 'fix-atom-sh.patch'
+ 'fix-license-path.patch'
+ 'fix-restart.patch'
+ 'symbols-view-use-system-ctags.patch'
+ 'use-system-apm.patch'
+ 'use-system-electron.patch'
+ 'atom.js'
+ 'atom.desktop')
sha256sums=('SKIP'
- 'b172e3f81eb42eeb1ad6ef70300c33a79a2015110ea87c413b5857c9694d10e9'
- '20d3c386dd60e85977511f9138e32921af051fd7e573d3052822219bd7210be9')
-
+ '530b46d31df0f5e8f5881e1608a66fe75d549092a6db2e72ba3ad69c48714153'
+ 'ab9eed3d4c8bfefea256953428379ab1e636b9c7d4c4af30ddc3f485330183c2'
+ 'c8a931f36af3722c57c4d1b70c1e58aa1a18372e8e26c28a4e01253e05295205'
+ '1f48c84f30ffefaef7235d8231af7357b801d66de9f09921d0ee0dd5849595ca'
+ '3c68e6b3751313e1d386e721f8f819fb051351fb2cf8e753b1d773a0f475fef8'
+ '32e27c6245237a794b15eaf7dbfb81196455865af8ed9157aca763ed21a2fef3'
+ '8427b38936c4f01ceed4d171528ee375ce211fac01fb220b1596d3a074b31663'
+ 'cdf87ab82cfcf69e8904684c59b08c35a68540ea16ab173fce06037ac341efcd'
+ 'bf7778fa5084027f94cb9c15d2df3b3651ff4749e7d8c0d0c50226400b75efe7')
pkgver() {
- cd $srcdir/$_pkgname
- _basever=$(cat package.json | grep version | sed 's/version//g' | sed 's/://g' | sed 's/ //g' | sed 's/"//g' | sed 's/,//g' | sed 's/-/./g')
- _commitno=$(git rev-list --count HEAD)
- printf "${_basever}.${_commitno}"
+ cd ${pkgname}
+ # Remove 'v' prefix on tags; prefix revision with 'r'; replace all '-' with '.'
+ git describe --long | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}
prepare() {
- cd "$srcdir/${_pkgname}"
+ cd ${pkgname}
- sed -i -e 's@node script/bootstrap@node script/bootstrap --no-quiet@g' \
- ./script/build || die "Fail fixing verbosity of script/build"
+ patch -Np1 -i "${srcdir}"/fix-atom-sh.patch
+ patch -Np1 -i "${srcdir}"/use-system-electron.patch
+ patch -Np1 -i "${srcdir}"/use-system-apm.patch
+ patch -Np1 -i "${srcdir}"/fix-license-path.patch
+ patch -Np1 -i "${srcdir}"/fix-restart.patch
}
build() {
- # Fix : GYP does not support python3 but uses python, not python2
- export PYTHON=/usr/bin/python2
- cd "${srcdir}"
- mkdir -p pypath
- ln -fs /usr/bin/python2 ./pypath/python
- export PATH=$(pwd)/pypath:$PATH
+ cd ${pkgname}
+# export PYTHON=/usr/bin/python2
+# export IOJS_ORG_MIRROR=https://atom.io/download/electron
+# export npm_config_python=/usr/bin/python2
+
+ ATOM_RESOURCE_PATH="${PWD}" npm_config_target=$(tail -c +2 /usr/lib/electron/version) apm install
+
+ # Use system ctags
+ cd "${srcdir}/${pkgname}/node_modules/symbols-view"
+ patch -Np1 -i "${srcdir}"/symbols-view-use-system-ctags.patch
+ rm -r vendor
+
+ # Use system git
+ cd "${srcdir}/${pkgname}/node_modules/dugite"
+ patch -Np1 -i "${srcdir}"/dugite-use-system-git.patch
+ rm -r git
- cd "${srcdir}/${_pkgname}"
- # Cleanup a non-clean srcdir
- rm -f ./apm/package-lock.json ./node_modules/github/node_modules.bak
- ./script/build # use until ./script/build; do :; done instead if network errors occur
+ cd "${srcdir}/${pkgname}/script"
+ npm install
+ ./build
}
package() {
- cd "$srcdir/${_pkgname}"
+ cd ${pkgname}
- _ver=$(cat package.json | grep version | sed 's/version//g' | sed 's/://g' | sed 's/ //g' | sed 's/"//g' | sed 's/,//g')
- _commit=$(git rev-parse --short HEAD)
+ ls -la
+ pwd
+ echo "$pkgdir"
+ echo "$srcdir"
- _arch=amd64
- if [ "${CARCH}" = "i686" ]; then
- _arch=i386
- fi
- install -dm755 ${pkgdir}/usr/bin
- install -dm755 ${pkgdir}/usr/share/${_pkgname}-${_version}
- install -dm755 ${pkgdir}/usr/share/applications
- install -dm755 ${pkgdir}/usr/share/licenses/$pkgname
- install -dm755 ${pkgdir}/usr/share/pixmaps
+ install -d -m 755 "${pkgdir}"/usr/lib
+ cp -r out/app "${pkgdir}"/usr/lib/atom
+ install -m 644 out/startup.js "${pkgdir}"/usr/lib/atom
+ install -m 755 "${srcdir}/atom.js" "${pkgdir}"/usr/lib/atom/atom
+ install -d -m 755 "${pkgdir}/usr/share/applications"
+ install -m 644 "${srcdir}/atom.desktop" "${pkgdir}/usr/share/applications/atom.desktop"
- cp -r out/atom-${_ver}-${_commit}-${_arch}/* ${pkgdir}/usr/share/${_pkgname}-${_version}/
- mv ${pkgdir}/usr/share/${_pkgname}-${_version}/atom.png ${pkgdir}/usr/share/pixmaps/${_pkgname}-${_version}.png
- mv ${pkgdir}/usr/share/${_pkgname}-${_version}/LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
- install -Dm755 $srcdir/${_pkgname}-${_version} ${pkgdir}/usr/bin/${_pkgname}-${_version}
- install -Dm644 $srcdir/${_pkgname}-${_version}.desktop ${pkgdir}/usr/share/applications/${_pkgname}-${_version}.desktop
- rm ${pkgdir}/usr/share/${_pkgname}-${_version}/resources/app/atom.sh
- rm -rf ${pkgdir}/usr/share/${_pkgname}-${_version}/resources/app.asar.unpacked/resources
- ln -sf "/usr/share/${_pkgname}-${_version}/resources/app/apm/node_modules/.bin/apm" "${pkgdir}/usr/bin/apm-${_version}"
+# sed -e "s|<%= appName %>|Atom|" \
+# -e "s/<%= description %>/${pkgdesc}/" \
+# -e "s|<%= installDir %>/share/<%= appFileName %>/atom|/usr/lib/atom/atom|" \
+# -e "s|<%= iconPath %>|atom|" \
+# resources/linux/atom.desktop.in > "${pkgdir}/usr/share/applications/atom.desktop"
- find "$pkgdir" \
- -name "*.a" -exec rm '{}' \; \
- -or -name "*.bat" -exec rm '{}' \; \
- -or -name "benchmark" -prune -exec rm -r '{}' \; \
- -or -name "doc" -prune -exec rm -r '{}' \; \
- -or -name "html" -prune -exec rm -r '{}' \; \
- -or -name "man" -prune -exec rm -r '{}' \; \
- -or -path "*/less/gradle" -prune -exec rm -r '{}' \; \
- -or -path "*/task-lists/src" -prune -exec rm -r '{}' \; \
- -or -name "package.json" -exec sed -i -e "s|${srcdir}/atom/apm|/usr/share/${_pkgname}-${_version}/resources/app/apm|g" '{}' +
+
+ for size in 16 24 32 48 64 128 256 512 1024; do
+ install -D -m 644 resources/app-icons/stable/png/${size}.png \
+ "${pkgdir}"/usr/share/icons/hicolor/${size}x${size}/apps/atom.png
+ done
+ ln -sf ../../../share/icons/hicolor/1024x1024/apps/atom.png \
+ "${pkgdir}"/usr/lib/atom/resources/atom.png
+
+ install -D -m 755 atom.sh "${pkgdir}/usr/bin/atom"
+
+ install -d -m 755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ node -e "require('./script/lib/get-license-text')().then((licenseText) => require('fs').writeFileSync('${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.md', licenseText))"
+
+ # Remove useless stuff
+ find "${pkgdir}"/usr/lib/atom/node_modules \
+ -name "*.a" -exec rm '{}' \; \
+ -or -name "*.bat" -exec rm '{}' \; \
+ -or -name "*.node" -exec chmod a-x '{}' \; \
+ -or -name "benchmark" -prune -exec rm -r '{}' \; \
+ -or -name "doc" -prune -exec rm -r '{}' \; \
+ -or -name "html" -prune -exec rm -r '{}' \; \
+ -or -name "man" -prune -exec rm -r '{}' \; \
+ -or -name "scripts" -prune -exec rm -r '{}' \; \
+ -or -path "*/less/gradle" -prune -exec rm -r '{}' \; \
+ -or -path "*/task-lists/src" -prune -exec rm -r '{}' \;
}
diff --git a/atom-git b/atom-git
deleted file mode 100644
index 69ef3f07024a..000000000000
--- a/atom-git
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/bin/bash
-
-# Always disable environment shell grab, causes lockups
-export ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=true
-
-while getopts ":wtfvh-:" opt; do
- case "$opt" in
- -)
- case "${OPTARG}" in
- wait)
- WAIT=1
- ;;
- help|version)
- REDIRECT_STDERR=1
- EXPECT_OUTPUT=1
- ;;
- foreground|test)
- EXPECT_OUTPUT=1
- ;;
- esac
- ;;
- w)
- WAIT=1
- ;;
- h|v)
- REDIRECT_STDERR=1
- EXPECT_OUTPUT=1
- ;;
- f|t)
- EXPECT_OUTPUT=1
- ;;
- esac
-done
-
-if [ $REDIRECT_STDERR ]; then
- exec 2> /dev/null
-fi
-
-if [ $EXPECT_OUTPUT ]; then
- export ELECTRON_ENABLE_LOGGING=1
-fi
-
-SCRIPT=$(readlink -f "$0")
-USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..)
-
-ATOM_PATH="$USR_DIRECTORY/share/atom-git/atom"
-
-ATOM_HOME="${ATOM_HOME:-$HOME/.atom}"
-mkdir -p "$ATOM_HOME"
-
-if [ $EXPECT_OUTPUT ]; then
- "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@"
- exit $?
-else
- (
- nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1
- if [ $? -ne 0 ]; then
- cat "$ATOM_HOME/nohup.out"
- exit $?
- fi
- ) &
-fi
-
-# Exits this process when Atom is used as $EDITOR
-on_die() {
- exit 0
-}
-trap 'on_die' SIGQUIT SIGTERM
-
-# If the wait flag is set, don't exit this process until Atom tells it to.
-if [ $WAIT ]; then
- while true; do
- sleep 1
- done
-fi
diff --git a/atom-git.install b/atom-git.install
deleted file mode 100644
index e111ef946053..000000000000
--- a/atom-git.install
+++ /dev/null
@@ -1,11 +0,0 @@
-post_install() {
- update-desktop-database -q
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install
-}
diff --git a/atom-git.desktop b/atom.desktop
index 8797eac8555f..b316bd4bc528 100644
--- a/atom-git.desktop
+++ b/atom.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Name=Atom Git
-Comment=Hackable text editor for the 21st Century, based on web technologies and built from the latest git source code
+Comment=Hackable text editor for the 21st Century - git
GenericName=Text Editor
Exec=/usr/bin/atom-git %U
-Icon=atom-git.png
+Icon=atom
Type=Application
StartupNotify=true
Categories=GTK;Utility;TextEditor;Development;
diff --git a/atom.js b/atom.js
new file mode 100644
index 000000000000..386929835763
--- /dev/null
+++ b/atom.js
@@ -0,0 +1,33 @@
+#!/usr/bin/electron
+
+const name = "atom";
+
+const {app} = require("electron");
+const fs = require("fs");
+const Module = require("module");
+const {join} = require("path");
+const vm = require("vm");
+
+// Change command name.
+const fd = fs.openSync("/proc/self/comm", fs.constants.O_WRONLY);
+fs.writeSync(fd, name);
+fs.closeSync(fd);
+
+// Remove first command line argument (/usr/bin/electron).
+process.argv.splice(0, 1);
+
+// Set application paths.
+const appPath = __dirname;
+const packageJson = require(join(appPath, "package.json"));
+const productName = packageJson.productName;
+app.setAppPath(appPath);
+app.setDesktopName(name + ".desktop");
+app.setName(productName);
+app.setPath("userCache", join(app.getPath("cache"), productName));
+app.setPath("userData", join(app.getPath("appData"), productName));
+app.setVersion(packageJson.version);
+
+// Run the application.
+const startupJs = fs.readFileSync(join(appPath, "startup.js"), "utf-8");
+vm.runInThisContext(startupJs);
+Module._load(appPath, Module, true);
diff --git a/dugite-use-system-git.patch b/dugite-use-system-git.patch
new file mode 100644
index 000000000000..c28ccd0968b2
--- /dev/null
+++ b/dugite-use-system-git.patch
@@ -0,0 +1,33 @@
+--- a/build/lib/git-environment.js
++++ b/build/lib/git-environment.js
+@@ -24,7 +24,7 @@
+ return path.resolve(process.env.LOCAL_GIT_DIRECTORY);
+ }
+ else {
+- return resolveEmbeddedGitDir();
++ return '/usr';
+ }
+ }
+ /**
+@@ -57,7 +57,7 @@
+ return path.join(gitDir, 'mingw32', 'libexec', 'git-core');
+ }
+ else {
+- return path.join(gitDir, 'libexec', 'git-core');
++ return path.join(gitDir, 'lib', 'git-core');
+ }
+ }
+ /**
+@@ -108,9 +108,9 @@
+ if (!env.GIT_SSL_CAINFO && !env.LOCAL_GIT_DIRECTORY) {
+ // use the SSL certificate bundle included in the distribution only
+ // when using embedded Git and not providing your own bundle
+- const distDir = resolveEmbeddedGitDir();
+- const sslCABundle = `${distDir}/ssl/cacert.pem`;
+- env.GIT_SSL_CAINFO = sslCABundle;
++ // const distDir = resolveEmbeddedGitDir();
++ // const sslCABundle = `${distDir}/ssl/cacert.pem`;
++ // env.GIT_SSL_CAINFO = sslCABundle;
+ }
+ }
+ return { env, gitLocation };
diff --git a/fix-atom-sh.patch b/fix-atom-sh.patch
new file mode 100644
index 000000000000..6d7106a9b316
--- /dev/null
+++ b/fix-atom-sh.patch
@@ -0,0 +1,138 @@
+--- a/atom.sh
++++ b/atom.sh
+@@ -1,29 +1,5 @@
+ #!/bin/bash
+
+-if [ "$(uname)" == 'Darwin' ]; then
+- OS='Mac'
+-elif [ "$(expr substr $(uname -s) 1 5)" == 'Linux' ]; then
+- OS='Linux'
+-else
+- echo "Your platform ($(uname -a)) is not supported."
+- exit 1
+-fi
+-
+-case $(basename $0) in
+- atom-beta)
+- CHANNEL=beta
+- ;;
+- atom-nightly)
+- CHANNEL=nightly
+- ;;
+- atom-dev)
+- CHANNEL=dev
+- ;;
+- *)
+- CHANNEL=stable
+- ;;
+-esac
+-
+ export ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=true
+
+ while getopts ":wtfvh-:" opt; do
+@@ -65,95 +41,19 @@
+ ATOM_HOME="${ATOM_HOME:-$HOME/.atom}"
+ mkdir -p "$ATOM_HOME"
+
+-if [ $OS == 'Mac' ]; then
+- if [ -L "$0" ]; then
+- SCRIPT="$(readlink "$0")"
+- else
+- SCRIPT="$0"
+- fi
+- ATOM_APP="$(dirname "$(dirname "$(dirname "$(dirname "$SCRIPT")")")")"
+- if [ "$ATOM_APP" == . ]; then
+- unset ATOM_APP
+- else
+- ATOM_PATH="$(dirname "$ATOM_APP")"
+- ATOM_APP_NAME="$(basename "$ATOM_APP")"
+- fi
++ATOM_PATH="/usr/lib/atom/atom"
+
+- if [ ! -z "${ATOM_APP_NAME}" ]; then
+- # If ATOM_APP_NAME is known, use it as the executable name
+- ATOM_EXECUTABLE_NAME="${ATOM_APP_NAME%.*}"
+- else
+- # Else choose it from the inferred channel name
+- if [ "$CHANNEL" == 'beta' ]; then
+- ATOM_EXECUTABLE_NAME="Atom Beta"
+- elif [ "$CHANNEL" == 'nightly' ]; then
+- ATOM_EXECUTABLE_NAME="Atom Nightly"
+- elif [ "$CHANNEL" == 'dev' ]; then
+- ATOM_EXECUTABLE_NAME="Atom Dev"
+- else
+- ATOM_EXECUTABLE_NAME="Atom"
+- fi
+- fi
+-
+- if [ -z "${ATOM_PATH}" ]; then
+- # If ATOM_PATH isn't set, check /Applications and then ~/Applications for Atom.app
+- if [ -x "/Applications/$ATOM_APP_NAME" ]; then
+- ATOM_PATH="/Applications"
+- elif [ -x "$HOME/Applications/$ATOM_APP_NAME" ]; then
+- ATOM_PATH="$HOME/Applications"
+- else
+- # We haven't found an Atom.app, use spotlight to search for Atom
+- ATOM_PATH="$(mdfind "kMDItemCFBundleIdentifier == 'com.github.atom'" | grep -v ShipIt | head -1 | xargs -0 dirname)"
+-
+- # Exit if Atom can't be found
+- if [ ! -x "$ATOM_PATH/$ATOM_APP_NAME" ]; then
+- echo "Cannot locate ${ATOM_APP_NAME}, it is usually located in /Applications. Set the ATOM_PATH environment variable to the directory containing ${ATOM_APP_NAME}."
+- exit 1
+- fi
+- fi
+- fi
+-
+- if [ $EXPECT_OUTPUT ]; then
+- "$ATOM_PATH/$ATOM_APP_NAME/Contents/MacOS/$ATOM_EXECUTABLE_NAME" --executed-from="$(pwd)" --pid=$$ "$@"
+- exit $?
+- else
+- open -a "$ATOM_PATH/$ATOM_APP_NAME" -n --args --executed-from="$(pwd)" --pid=$$ --path-environment="$PATH" "$@"
+- fi
+-elif [ $OS == 'Linux' ]; then
+- SCRIPT=$(readlink -f "$0")
+- USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..)
+-
+- case $CHANNEL in
+- beta)
+- ATOM_PATH="$USR_DIRECTORY/share/atom-beta/atom"
+- ;;
+- nightly)
+- ATOM_PATH="$USR_DIRECTORY/share/atom-nightly/atom"
+- ;;
+- dev)
+- ATOM_PATH="$USR_DIRECTORY/share/atom-dev/atom"
+- ;;
+- *)
+- ATOM_PATH="$USR_DIRECTORY/share/atom/atom"
+- ;;
+- esac
+-
+- : ${TMPDIR:=/tmp}
+-
+- [ -x "$ATOM_PATH" ] || ATOM_PATH="$TMPDIR/atom-build/Atom/atom"
+-
+- if [ $EXPECT_OUTPUT ]; then
+- "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@"
++if [ $EXPECT_OUTPUT ]; then
++ "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@"
++ exit $?
++else
++ (
++ nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1
++ if [ $? -ne 0 ]; then
++ cat "$ATOM_HOME/nohup.out"
+ exit $?
+- else
+- (
+- nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1
+- if [ $? -ne 0 ]; then
+- cat "$ATOM_HOME/nohup.out"
+- exit $?
+- fi
+- ) &
+ fi
++ ) &
+ fi
+
+ # Exits this process when Atom is used as $EDITOR
diff --git a/fix-license-path.patch b/fix-license-path.patch
new file mode 100644
index 000000000000..4580353b9126
--- /dev/null
+++ b/fix-license-path.patch
@@ -0,0 +1,22 @@
+--- a/src/main-process/atom-application.js
++++ b/src/main-process/atom-application.js
+@@ -416,7 +416,7 @@
+ this.openPathOnEvent('application:open-your-keymap', 'atom://.atom/keymap')
+ this.openPathOnEvent('application:open-your-snippets', 'atom://.atom/snippets')
+ this.openPathOnEvent('application:open-your-stylesheet', 'atom://.atom/stylesheet')
+- this.openPathOnEvent('application:open-license', path.join(process.resourcesPath, 'LICENSE.md'))
++ this.openPathOnEvent('application:open-license', '/usr/share/licenses/atom/LICENSE.md')
+
+ this.configFile.onDidChange(settings => {
+ for (let window of this.getAllWindows()) {
+--- a/src/workspace.js
++++ b/src/workspace.js
+@@ -1132,7 +1132,7 @@
+
+ // Open Atom's license in the active pane.
+ openLicense () {
+- return this.open(path.join(process.resourcesPath, 'LICENSE.md'))
++ return this.open('/usr/share/licenses/atom/LICENSE.md')
+ }
+
+ // Synchronously open the given URI in the active pane. **Only use this method
diff --git a/fix-restart.patch b/fix-restart.patch
new file mode 100644
index 000000000000..5f5d18def99d
--- /dev/null
+++ b/fix-restart.patch
@@ -0,0 +1,11 @@
+--- a/src/main-process/atom-application.js
++++ b/src/main-process/atom-application.js
+@@ -1350,7 +1350,7 @@
+ }
+
+ restart () {
+- const args = []
++ const args = ['/usr/lib/atom/atom']
+ if (this.safeMode) args.push('--safe')
+ if (this.logFile != null) args.push(`--log-file=${this.logFile}`)
+ if (this.socketPath != null) args.push(`--socket-path=${this.socketPath}`)
diff --git a/symbols-view-use-system-ctags.patch b/symbols-view-use-system-ctags.patch
new file mode 100644
index 000000000000..cd9ff5e2dcd4
--- /dev/null
+++ b/symbols-view-use-system-ctags.patch
@@ -0,0 +1,11 @@
+--- a/lib/tag-generator.js
++++ b/lib/tag-generator.js
+@@ -79,7 +79,7 @@ export default class TagGenerator {
+ generate() {
+ let tags = {};
+ const packageRoot = this.getPackageRoot();
+- const command = path.join(packageRoot, 'vendor', `ctags-${process.platform}`);
++ const command = 'ctags';
+ const defaultCtagsFile = path.join(packageRoot, 'lib', 'ctags-config');
+ const args = [`--options=${defaultCtagsFile}`, '--fields=+KS'];
+
diff --git a/use-system-apm.patch b/use-system-apm.patch
new file mode 100644
index 000000000000..04246bd0416d
--- /dev/null
+++ b/use-system-apm.patch
@@ -0,0 +1,32 @@
+--- a/script/lib/run-apm-install.js
++++ b/script/lib/run-apm-install.js
+@@ -8,11 +8,8 @@
+ const installEnv = Object.assign({}, process.env)
+ // Set resource path so that apm can load metadata related to Atom.
+ installEnv.ATOM_RESOURCE_PATH = CONFIG.repositoryRootPath
+- // Set our target (Electron) version so that node-pre-gyp can download the
+- // proper binaries.
+- installEnv.npm_config_target = CONFIG.appMetadata.electronVersion
+ childProcess.execFileSync(
+- CONFIG.getApmBinPath(),
++ 'apm',
+ ['--loglevel=error', ci ? 'ci' : 'install'],
+ {env: installEnv, cwd: packagePath, stdio: stdioOptions || 'inherit'}
+ )
+--- a/src/package-manager.js
++++ b/src/package-manager.js
+@@ -167,13 +167,7 @@
+ return configPath || this.apmPath
+ }
+
+- const commandName = process.platform === 'win32' ? 'apm.cmd' : 'apm'
+- const apmRoot = path.join(process.resourcesPath, 'app', 'apm')
+- this.apmPath = path.join(apmRoot, 'bin', commandName)
+- if (!fs.isFileSync(this.apmPath)) {
+- this.apmPath = path.join(apmRoot, 'node_modules', 'atom-package-manager', 'bin', commandName)
+- }
+- return this.apmPath
++ return '/usr/lib/node_modules/atom-package-manager/bin/apm'
+ }
+
+ // Public: Get the paths being used to look for packages.
diff --git a/use-system-electron.patch b/use-system-electron.patch
new file mode 100644
index 000000000000..58c56d6d0d23
--- /dev/null
+++ b/use-system-electron.patch
@@ -0,0 +1,177 @@
+--- a/script/build
++++ b/script/build
+@@ -2,10 +2,6 @@
+
+ 'use strict'
+
+-// Run bootstrap first to ensure all the dependencies used later in this script
+-// are installed.
+-require('./bootstrap')
+-
+ // Needed so we can require src/module-cache.coffee during generateModuleCache
+ require('coffee-script/register')
+ require('colors')
+@@ -28,7 +24,6 @@
+ .wrap(yargs.terminalWidth())
+ .argv
+
+-const checkChromedriverVersion = require('./lib/check-chromedriver-version')
+ const cleanOutputDirectory = require('./lib/clean-output-directory')
+ const codeSignOnMac = require('./lib/code-sign-on-mac')
+ const codeSignOnWindows = require('./lib/code-sign-on-windows')
+@@ -60,7 +55,6 @@
+ let binariesPromise = Promise.resolve()
+
+ if (!argv.existingBinaries) {
+- checkChromedriverVersion()
+ cleanOutputDirectory()
+ copyAssets()
+ transpilePackagesWithCustomTranspilerPaths()
+@@ -79,67 +73,5 @@
+
+ if (!argv.generateApiDocs) {
+ binariesPromise
+- .then(packageApplication)
+ .then(packagedAppPath => generateStartupSnapshot(packagedAppPath).then(() => packagedAppPath))
+- .then(packagedAppPath => {
+- switch (process.platform) {
+- case 'darwin': {
+- if (argv.codeSign) {
+- codeSignOnMac(packagedAppPath)
+- } else {
+- console.log('Skipping code-signing. Specify the --code-sign option to perform code-signing'.gray)
+- }
+- break
+- }
+- case 'win32': {
+- if (argv.codeSign) {
+- const executablesToSign = [ path.join(packagedAppPath, 'Atom.exe') ]
+- if (argv.createWindowsInstaller) {
+- executablesToSign.push(path.join(__dirname, 'node_modules', 'electron-winstaller', 'vendor', 'Update.exe'))
+- }
+- codeSignOnWindows(executablesToSign)
+- } else {
+- console.log('Skipping code-signing. Specify the --code-sign option to perform code-signing'.gray)
+- }
+- if (argv.createWindowsInstaller) {
+- return createWindowsInstaller(packagedAppPath)
+- .then((installerPath) => {
+- argv.codeSign && codeSignOnWindows([installerPath])
+- return packagedAppPath
+- })
+- } else {
+- console.log('Skipping creating installer. Specify the --create-windows-installer option to create a Squirrel-based Windows installer.'.gray)
+- }
+- break
+- }
+- case 'linux': {
+- if (argv.createDebianPackage) {
+- createDebianPackage(packagedAppPath)
+- } else {
+- console.log('Skipping creating debian package. Specify the --create-debian-package option to create it.'.gray)
+- }
+-
+- if (argv.createRpmPackage) {
+- createRpmPackage(packagedAppPath)
+- } else {
+- console.log('Skipping creating rpm package. Specify the --create-rpm-package option to create it.'.gray)
+- }
+- break
+- }
+- }
+-
+- return Promise.resolve(packagedAppPath)
+- }).then(packagedAppPath => {
+- if (argv.compressArtifacts) {
+- compressArtifacts(packagedAppPath)
+- } else {
+- console.log('Skipping artifacts compression. Specify the --compress-artifacts option to compress Atom binaries (and symbols on macOS)'.gray)
+- }
+-
+- if (argv.install != null) {
+- installApplication(packagedAppPath, argv.install)
+- } else {
+- console.log('Skipping installation. Specify the --install option to install Atom'.gray)
+- }
+- })
+ }
+--- a/script/lib/generate-startup-snapshot.js
++++ b/script/lib/generate-startup-snapshot.js
+@@ -80,7 +80,7 @@
+ } else if (process.platform === 'win32') {
+ nodeBundledInElectronPath = path.join(packagedAppPath, 'atom.exe')
+ } else {
+- nodeBundledInElectronPath = path.join(packagedAppPath, 'atom')
++ nodeBundledInElectronPath = 'electron'
+ }
+ childProcess.execFileSync(
+ nodeBundledInElectronPath,
+@@ -88,6 +88,7 @@
+ {env: Object.assign({}, process.env, {ELECTRON_RUN_AS_NODE: 1})}
+ )
+
++/*
+ const generatedStartupBlobPath = path.join(CONFIG.buildOutputPath, 'snapshot_blob.bin')
+ console.log(`Generating startup blob at "${generatedStartupBlobPath}"`)
+ childProcess.execFileSync(
+@@ -105,5 +106,6 @@
+ console.log(`Moving generated startup blob into "${startupBlobDestinationPath}"`)
+ fs.unlinkSync(startupBlobDestinationPath)
+ fs.renameSync(generatedStartupBlobPath, startupBlobDestinationPath)
++*/
+ })
+ }
+--- a/script/package.json
++++ b/script/package.json
+@@ -9,9 +9,7 @@
+ "coffeelint": "1.15.7",
+ "colors": "1.1.2",
+ "donna": "1.0.16",
+- "electron-chromedriver": "~2.0",
+ "electron-link": "0.2.2",
+- "electron-mksnapshot": "~2.0",
+ "electron-packager": "7.3.0",
+ "electron-winstaller": "2.6.4",
+ "fs-admin": "^0.1.5",
+--- a/src/package-manager.js
++++ b/src/package-manager.js
+@@ -808,7 +808,7 @@ module.exports = class PackageManager {
+ }
+
+ isBundledPackagePath (packagePath) {
+- if (this.devMode && !this.resourcePath.startsWith(`${process.resourcesPath}${path.sep}`)) {
++ if (this.devMode && this.resourcePath !== '/usr/lib/atom') {
+ return false
+ }
+
+--- a/src/task-bootstrap.js
++++ b/src/task-bootstrap.js
+@@ -3,7 +3,7 @@ const [compileCachePath, taskPath] = process.argv.slice(2)
+
+ const CompileCache = require('./compile-cache')
+ CompileCache.setCacheDirectory(compileCachePath)
+-CompileCache.install(`${process.resourcesPath}`, require)
++CompileCache.install('/usr/lib/atom', require)
+
+ const setupGlobals = function () {
+ global.attachEvent = function () {}
+--- a/static/index.js
++++ b/static/index.js
+@@ -23,7 +23,7 @@
+ process.resourcesPath = path.normalize(process.resourcesPath)
+
+ setupAtomHome()
+- const devMode = getWindowLoadSettings().devMode || !getWindowLoadSettings().resourcePath.startsWith(process.resourcesPath + path.sep)
++ const devMode = getWindowLoadSettings().devMode || !getWindowLoadSettings().resourcePath.startsWith('/usr/lib/atom')
+ useSnapshot = !devMode && typeof snapshotResult !== 'undefined'
+
+ if (devMode) {
+@@ -90,7 +90,7 @@
+ function setupWindow () {
+ const CompileCache = useSnapshot ? snapshotResult.customRequire('../src/compile-cache.js') : require('../src/compile-cache')
+ CompileCache.setAtomHomeDirectory(process.env.ATOM_HOME)
+- CompileCache.install(process.resourcesPath, require)
++ CompileCache.install('/usr/lib/atom', require)
+
+ const ModuleCache = useSnapshot ? snapshotResult.customRequire('../src/module-cache.js') : require('../src/module-cache')
+ ModuleCache.register(getWindowLoadSettings())