summaryrefslogtreecommitdiff
path: root/editors/atom/files
diff options
context:
space:
mode:
authorAntoine Brodin <antoine@FreeBSD.org>2021-01-01 10:11:34 +0000
committerAntoine Brodin <antoine@FreeBSD.org>2021-01-01 10:11:34 +0000
commit26b4c8f71f91d22e081b27814782686edde0c90a (patch)
tree1c321c39372c25d8634e75b5c8e08edc676b296d /editors/atom/files
parentNew port: math/py-optuna: A hyperparameter optimization framework (diff)
Revert r559792 to unbreak INDEX and bulk -a
It seems a lot of reverse dependencies were missed With hat: portmgr
Diffstat (limited to 'editors/atom/files')
-rw-r--r--editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_apm.js11
-rw-r--r--editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_auth.js11
-rw-r--r--editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_install.js11
-rw-r--r--editors/atom/files/atom/patch-node__modules_ATatom_nsfw_binding.gyp12
-rw-r--r--editors/atom/files/atom/patch-node__modules_ATatom_watcher_binding.gyp11
-rw-r--r--editors/atom/files/atom/patch-node__modules_atom-keymap_lib_helpers.js20
-rw-r--r--editors/atom/files/atom/patch-node__modules_dugite_build_lib_git-environment.js52
-rw-r--r--editors/atom/files/atom/patch-node__modules_fs-admin_binding.gyp11
-rw-r--r--editors/atom/files/atom/patch-node__modules_github_bin_linux-ssh-wrapper.sh9
-rw-r--r--editors/atom/files/atom/patch-node__modules_github_lib_git-shell-out-strategy.js11
-rw-r--r--editors/atom/files/atom/patch-node__modules_github_lib_models_workdir-context.js11
-rw-r--r--editors/atom/files/atom/patch-node__modules_github_package.json10
-rw-r--r--editors/atom/files/atom/patch-node__modules_github_test_git-strategies.test.js11
-rw-r--r--editors/atom/files/atom/patch-node__modules_github_test_github-package.test.js20
-rw-r--r--editors/atom/files/atom/patch-node__modules_nslog_binding.gyp11
-rw-r--r--editors/atom/files/atom/patch-node__modules_os-homedir_index.js11
-rw-r--r--editors/atom/files/atom/patch-node__modules_scrollbar-style_binding.gyp16
-rw-r--r--editors/atom/files/atom/patch-node__modules_spell-check_lib_checker-env.coffee9
-rw-r--r--editors/atom/files/atom/patch-node__modules_spell-check_lib_locale-checker.coffee10
-rw-r--r--editors/atom/files/atom/patch-node__modules_spellchecker_binding.gyp20
-rw-r--r--editors/atom/files/atom/patch-node__modules_spellchecker_vendor_hunspell_src_hunspell_affentry.hxx102
-rw-r--r--editors/atom/files/atom/patch-node__modules_symbols-view_lib_tag-generator.js11
-rw-r--r--editors/atom/files/atom/patch-node__modules_tabs_lib_tab-bar-view.coffee11
-rw-r--r--editors/atom/files/atom/patch-node__modules_text-buffer_lib_text-buffer.js11
-rw-r--r--editors/atom/files/atom/patch-node__modules_tree-view_lib_root-drag-and-drop.coffee11
-rw-r--r--editors/atom/files/atom/patch-node__modules_tree-view_spec_tree-view-package-spec.coffee11
-rw-r--r--editors/atom/files/atom/patch-node__modules_user-home_index.js11
-rw-r--r--editors/atom/files/node/patch-common.gypi18
-rw-r--r--editors/atom/files/node/patch-configure.py11
-rw-r--r--editors/atom/files/patch-atom.sh20
-rw-r--r--editors/atom/files/patch-package.json11
-rw-r--r--editors/atom/files/patch-packages_welcome_lib_guide-view.js11
-rw-r--r--editors/atom/files/patch-script_build20
-rw-r--r--editors/atom/files/patch-script_lib_dump-symbols.js14
-rw-r--r--editors/atom/files/patch-script_lib_package-application.js29
-rw-r--r--editors/atom/files/patch-script_package.json20
-rw-r--r--editors/atom/files/patch-script_test20
-rw-r--r--editors/atom/files/patch-spec_main-process_atom-application.test.js11
-rw-r--r--editors/atom/files/patch-src_atom-paths.js11
-rw-r--r--editors/atom/files/patch-src_config-schema.js17
-rw-r--r--editors/atom/files/patch-src_crash-reporter-start.js18
-rw-r--r--editors/atom/files/patch-src_main-process_atom-application.js11
-rw-r--r--editors/atom/files/patch-src_main-process_atom-window.js11
-rw-r--r--editors/atom/files/patch-src_main-process_auto-update-manager.js11
-rw-r--r--editors/atom/files/patch-src_text-editor-component.js29
-rw-r--r--editors/atom/files/patch-src_update-process-env.js11
-rw-r--r--editors/atom/files/patch-src_window-event-handler.js11
-rw-r--r--editors/atom/files/script/patch-script_node__modules_electron-packager_ignore.js11
-rw-r--r--editors/atom/files/script/patch-script_node__modules_electron-packager_targets.js22
-rw-r--r--editors/atom/files/script/patch-script_node__modules_passwd-user_index.js29
-rw-r--r--editors/atom/files/script/patch-script_node__modules_user-home_index.js11
51 files changed, 844 insertions, 0 deletions
diff --git a/editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_apm.js b/editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_apm.js
new file mode 100644
index 000000000000..c4290358cc20
--- /dev/null
+++ b/editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_apm.js
@@ -0,0 +1,11 @@
+--- apm/node_modules/atom-package-manager/lib/apm.js.orig 2019-12-27 05:56:26 UTC
++++ apm/node_modules/atom-package-manager/lib/apm.js
+@@ -72,7 +72,7 @@
+ }
+ return callback(`${appLocation}/Contents/Resources/app.asar`);
+ });
+- case 'linux':
++ case 'linux': case 'freebsd':
+ appLocation = '/usr/local/share/atom/resources/app.asar';
+ if (!fs.existsSync(appLocation)) {
+ appLocation = '/usr/share/atom/resources/app.asar';
diff --git a/editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_auth.js b/editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_auth.js
new file mode 100644
index 000000000000..57f52e2e73c1
--- /dev/null
+++ b/editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_auth.js
@@ -0,0 +1,11 @@
+--- apm/node_modules/atom-package-manager/lib/auth.js.orig 2019-12-27 05:53:35 UTC
++++ apm/node_modules/atom-package-manager/lib/auth.js
+@@ -6,7 +6,7 @@
+ } catch (error1) {
+ error = error1;
+ // Gracefully handle keytar failing to load due to missing library on Linux
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ keytar = {
+ findPassword: function() {
+ return Promise.reject();
diff --git a/editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_install.js b/editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_install.js
new file mode 100644
index 000000000000..59d979b90d7f
--- /dev/null
+++ b/editors/atom/files/apm/patch-apm_node__modules_atom-package-manager_lib_install.js
@@ -0,0 +1,11 @@
+--- apm/node_modules/atom-package-manager/lib/install.js.orig 2019-12-27 05:57:00 UTC
++++ apm/node_modules/atom-package-manager/lib/install.js
+@@ -159,7 +159,7 @@
+ case 'win32':
+ message += "\nYou can install Git by downloading, installing, and launching GitHub for Windows: https://windows.github.com\n";
+ break;
+- case 'linux':
++ case 'linux': case 'freebsd':
+ message += "\nYou can install Git from your OS package manager.\n";
+ }
+ message += "\nRun apm -v after installing Git to see what version has been detected.";
diff --git a/editors/atom/files/atom/patch-node__modules_ATatom_nsfw_binding.gyp b/editors/atom/files/atom/patch-node__modules_ATatom_nsfw_binding.gyp
new file mode 100644
index 000000000000..3770b7094e4a
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_ATatom_nsfw_binding.gyp
@@ -0,0 +1,12 @@
+--- node_modules/@atom/nsfw/binding.gyp.orig 1985-10-26 08:15:00 UTC
++++ node_modules/@atom/nsfw/binding.gyp
+@@ -97,6 +97,9 @@
+ ["OS=='freebsd'", {
+ "include_dirs": [
+ "/usr/local/include"
++ ],
++ "ldflags": [
++ "-L/usr/local/lib", "-linotify"
+ ]
+ }],
+ ]
diff --git a/editors/atom/files/atom/patch-node__modules_ATatom_watcher_binding.gyp b/editors/atom/files/atom/patch-node__modules_ATatom_watcher_binding.gyp
new file mode 100644
index 000000000000..025ec78486b8
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_ATatom_watcher_binding.gyp
@@ -0,0 +1,11 @@
+--- node_modules/@atom/watcher/binding.gyp.orig 1985-10-26 08:15:00 UTC
++++ node_modules/@atom/watcher/binding.gyp
+@@ -66,7 +66,7 @@
+ "src/worker/windows/windows_worker_platform.cpp"
+ ]
+ }],
+- ["OS=='linux'", {
++ ["OS=='linux' or OS=='freebsd'", {
+ "defines": [
+ 'PLATFORM_LINUX'
+ ],
diff --git a/editors/atom/files/atom/patch-node__modules_atom-keymap_lib_helpers.js b/editors/atom/files/atom/patch-node__modules_atom-keymap_lib_helpers.js
new file mode 100644
index 000000000000..7f4a5bf5e5a6
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_atom-keymap_lib_helpers.js
@@ -0,0 +1,20 @@
+--- node_modules/atom-keymap/lib/helpers.js.orig 1985-10-26 08:15:00 UTC
++++ node_modules/atom-keymap/lib/helpers.js
+@@ -218,7 +218,7 @@
+ if (KEY_NAMES_BY_KEYBOARD_EVENT_CODE[code] != null) {
+ key = KEY_NAMES_BY_KEYBOARD_EVENT_CODE[code];
+ }
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ if (code === 'NumpadDecimal' && !event.getModifierState('NumLock')) {
+ key = 'delete';
+ }
+@@ -257,7 +257,7 @@
+ altKey = false;
+ isAltModifiedKey = true;
+ }
+- } else if (process.platform === 'linux') {
++ } else if (process.platform === 'linux' || process.platform === 'freebsd') {
+ nonAltModifiedKey = nonAltModifiedKeyForKeyboardEvent(event);
+ if (nonAltModifiedKey && (ctrlKey || altKey || metaKey)) {
+ key = nonAltModifiedKey;
diff --git a/editors/atom/files/atom/patch-node__modules_dugite_build_lib_git-environment.js b/editors/atom/files/atom/patch-node__modules_dugite_build_lib_git-environment.js
new file mode 100644
index 000000000000..8ace7478be54
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_dugite_build_lib_git-environment.js
@@ -0,0 +1,52 @@
+--- node_modules/dugite/build/lib/git-environment.js.orig 1985-10-26 08:15:00 UTC
++++ node_modules/dugite/build/lib/git-environment.js
+@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value:
+ const path = require("path");
+ function resolveEmbeddedGitDir() {
+ if (process.platform === 'darwin' ||
+- process.platform === 'linux' ||
++ process.platform === 'linux' || process.platform === 'freebsd' ||
+ process.platform === 'android' ||
+ process.platform === 'win32') {
+ const s = path.sep;
+@@ -23,6 +23,9 @@ function resolveGitDir() {
+ if (process.env.LOCAL_GIT_DIRECTORY != null) {
+ return path.resolve(process.env.LOCAL_GIT_DIRECTORY);
+ }
++ else if (process.platform === 'freebsd') {
++ return '/usr/local';
++ }
+ else {
+ return resolveEmbeddedGitDir();
+ }
+@@ -94,13 +97,13 @@ function setupEnvironment(environmentVariables) {
+ delete env.Path;
+ }
+ }
+- if (process.platform === 'darwin' || process.platform === 'linux') {
++ if (process.platform === 'darwin' || process.platform === 'linux' || process.platform === 'freebsd') {
+ // templates are used to populate your .git folder
+ // when a repository is initialized locally
+ const templateDir = `${gitDir}/share/git-core/templates`;
+ env.GIT_TEMPLATE_DIR = templateDir;
+ }
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // when building Git for Linux and then running it from
+ // an arbitrary location, you should set PREFIX for the
+ // process to ensure that it knows how to resolve things
+@@ -109,11 +112,11 @@ function setupEnvironment(environmentVariables) {
+ // 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`;
++ const sslCABundle = `/etc/ssl/cert.pem`;
+ env.GIT_SSL_CAINFO = sslCABundle;
+ }
+ }
+ return { env, gitLocation };
+ }
+ exports.setupEnvironment = setupEnvironment;
+-//# sourceMappingURL=git-environment.js.map
+\ No newline at end of file
++//# sourceMappingURL=git-environment.js.map
diff --git a/editors/atom/files/atom/patch-node__modules_fs-admin_binding.gyp b/editors/atom/files/atom/patch-node__modules_fs-admin_binding.gyp
new file mode 100644
index 000000000000..94327feacfff
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_fs-admin_binding.gyp
@@ -0,0 +1,11 @@
+--- node_modules/fs-admin/binding.gyp.orig 1985-10-26 08:15:00 UTC
++++ node_modules/fs-admin/binding.gyp
+@@ -37,7 +37,7 @@
+ '$(SDKROOT)/System/Library/Frameworks/Security.framework',
+ ],
+ }],
+- ['OS=="linux"', {
++ ['OS=="linux" or OS=="freebsd"', {
+ 'sources': [
+ 'src/fs-admin-linux.cc',
+ ],
diff --git a/editors/atom/files/atom/patch-node__modules_github_bin_linux-ssh-wrapper.sh b/editors/atom/files/atom/patch-node__modules_github_bin_linux-ssh-wrapper.sh
new file mode 100644
index 000000000000..cab803194a80
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_github_bin_linux-ssh-wrapper.sh
@@ -0,0 +1,9 @@
+--- node_modules/github/bin/linux-ssh-wrapper.sh.orig 2020-02-15 07:03:49 UTC
++++ node_modules/github/bin/linux-ssh-wrapper.sh
+@@ -26,5 +26,5 @@ if type setsid >/dev/null 2>&1; then
+ setsid ${SSH_CMD} "${@:-}"
+ else
+ log "no setsid available. SSH prompts may appear on a tty."
+- sh -c "${SSH_CMD} ${@:-}"
++ ${SSH_CMD} "${@:-}"
+ fi
diff --git a/editors/atom/files/atom/patch-node__modules_github_lib_git-shell-out-strategy.js b/editors/atom/files/atom/patch-node__modules_github_lib_git-shell-out-strategy.js
new file mode 100644
index 000000000000..939d736a2d2c
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_github_lib_git-shell-out-strategy.js
@@ -0,0 +1,11 @@
+--- node_modules/github/lib/git-shell-out-strategy.js.orig 2019-12-11 03:24:32 UTC
++++ node_modules/github/lib/git-shell-out-strategy.js
+@@ -190,7 +190,7 @@ export default class GitShellOutStrategy {
+ env.SSH_ASKPASS = normalizeGitHelperPath(gitTempDir.getAskPassSh());
+ env.GIT_ASKPASS = normalizeGitHelperPath(gitTempDir.getAskPassSh());
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ env.GIT_SSH_COMMAND = gitTempDir.getSshWrapperSh();
+ } else if (process.env.GIT_SSH_COMMAND) {
+ env.GIT_SSH_COMMAND = process.env.GIT_SSH_COMMAND;
diff --git a/editors/atom/files/atom/patch-node__modules_github_lib_models_workdir-context.js b/editors/atom/files/atom/patch-node__modules_github_lib_models_workdir-context.js
new file mode 100644
index 000000000000..2a4ea1e0c099
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_github_lib_models_workdir-context.js
@@ -0,0 +1,11 @@
+--- node_modules/github/lib/models/workdir-context.js.orig 2019-08-21 13:55:10 UTC
++++ node_modules/github/lib/models/workdir-context.js
+@@ -116,7 +116,7 @@ export default class WorkdirContext {
+ }
+
+ useWorkspaceChangeObserver() {
+- return !!process.env.ATOM_GITHUB_WORKSPACE_OBSERVER || process.platform === 'linux';
++ return !!process.env.ATOM_GITHUB_WORKSPACE_OBSERVER || (process.platform === 'linux' || process.platform === 'freebsd');
+ }
+
+ // Event subscriptions
diff --git a/editors/atom/files/atom/patch-node__modules_github_package.json b/editors/atom/files/atom/patch-node__modules_github_package.json
new file mode 100644
index 000000000000..7545f4d4a844
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_github_package.json
@@ -0,0 +1,10 @@
+--- node_modules/github/package.json.orig 2020-05-22 08:46:19 UTC
++++ node_modules/github/package.json
+@@ -214,7 +214,6 @@
+ "dedent-js": "1.0.1",
+ "electron-devtools-installer": "2.2.4",
+ "electron-link": "0.4.1",
+- "electron-mksnapshot": "^4.2.0",
+ "enzyme": "3.10.0",
+ "enzyme-adapter-react-16": "1.7.1",
+ "eslint": "6.7.2",
diff --git a/editors/atom/files/atom/patch-node__modules_github_test_git-strategies.test.js b/editors/atom/files/atom/patch-node__modules_github_test_git-strategies.test.js
new file mode 100644
index 000000000000..5c6c44d71a22
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_github_test_git-strategies.test.js
@@ -0,0 +1,11 @@
+--- node_modules/github/test/git-strategies.test.js.orig 2020-02-26 21:07:14 UTC
++++ node_modules/github/test/git-strategies.test.js
+@@ -1535,7 +1535,7 @@ import * as reporterProxy from '../lib/reporter-proxy'
+ assert.match(options.env.DISPLAY, /^.+$/);
+ assert.match(options.env.SSH_ASKPASS, /git-askpass-atom\.sh$/);
+ assert.match(options.env.GIT_ASKPASS, /git-askpass-atom\.sh$/);
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ assert.match(options.env.GIT_SSH_COMMAND, /linux-ssh-wrapper\.sh$/);
+ }
+
diff --git a/editors/atom/files/atom/patch-node__modules_github_test_github-package.test.js b/editors/atom/files/atom/patch-node__modules_github_test_github-package.test.js
new file mode 100644
index 000000000000..46597ff509b1
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_github_test_github-package.test.js
@@ -0,0 +1,20 @@
+--- node_modules/github/test/github-package.test.js.orig 2020-02-05 20:24:36 UTC
++++ node_modules/github/test/github-package.test.js
+@@ -1040,7 +1040,7 @@ describe('GithubPackage', function() {
+
+ describe('when a file change is made outside Atom in workspace 1', function() {
+ beforeEach(function() {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip();
+ }
+
+@@ -1058,7 +1058,7 @@ describe('GithubPackage', function() {
+
+ describe('when a file change is made outside Atom in workspace 2', function() {
+ beforeEach(function() {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip();
+ }
+
diff --git a/editors/atom/files/atom/patch-node__modules_nslog_binding.gyp b/editors/atom/files/atom/patch-node__modules_nslog_binding.gyp
new file mode 100644
index 000000000000..b56e1f6f9075
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_nslog_binding.gyp
@@ -0,0 +1,11 @@
+--- node_modules/nslog/binding.gyp.orig 1985-10-26 08:15:00 UTC
++++ node_modules/nslog/binding.gyp
+@@ -33,7 +33,7 @@
+ 'src/nslog_win.cc',
+ ],
+ }],
+- ['OS=="linux"', {
++ ['OS=="linux" or OS=="freebsd"', {
+ 'sources': [
+ 'src/nslog_linux.cc',
+ ],
diff --git a/editors/atom/files/atom/patch-node__modules_os-homedir_index.js b/editors/atom/files/atom/patch-node__modules_os-homedir_index.js
new file mode 100644
index 000000000000..a4da0c243086
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_os-homedir_index.js
@@ -0,0 +1,11 @@
+--- node_modules/os-homedir/index.js.orig 2015-07-20 23:25:14 UTC
++++ node_modules/os-homedir/index.js
+@@ -14,7 +14,7 @@ function homedir() {
+ return home || (user ? '/Users/' + user : null);
+ }
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null));
+ }
+
diff --git a/editors/atom/files/atom/patch-node__modules_scrollbar-style_binding.gyp b/editors/atom/files/atom/patch-node__modules_scrollbar-style_binding.gyp
new file mode 100644
index 000000000000..48ff507c8dce
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_scrollbar-style_binding.gyp
@@ -0,0 +1,16 @@
+--- node_modules/scrollbar-style/binding.gyp.orig 2015-01-28 01:01:40 UTC
++++ node_modules/scrollbar-style/binding.gyp
+@@ -33,11 +33,11 @@
+ 4996, # function was declared deprecated
+ ],
+ }], # OS=="win"
+- ['OS=="linux"', {
++ ['OS=="linux" or OS=="freebsd"', {
+ "sources": [
+ "src/scrollbar-style-observer-non-mac.cc",
+ ],
+- }], # OS=="linux"
++ }], # OS=="linux" or OS=="freebsd"
+ ]
+ }
+ ]
diff --git a/editors/atom/files/atom/patch-node__modules_spell-check_lib_checker-env.coffee b/editors/atom/files/atom/patch-node__modules_spell-check_lib_checker-env.coffee
new file mode 100644
index 000000000000..d21e50082881
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_spell-check_lib_checker-env.coffee
@@ -0,0 +1,9 @@
+--- node_modules/spell-check/lib/checker-env.coffee.orig 2020-05-09 06:40:15 UTC
++++ node_modules/spell-check/lib/checker-env.coffee
+@@ -1,5 +1,5 @@
+ module.exports =
+- isLinux: -> /linux/.test process.platform
++ isLinux: -> /(linux|freebsd)/.test process.platform
+ isWindows: -> /win32/.test process.platform # TODO: Windows < 8 or >= 8
+ isDarwin: -> /darwin/.test process.platform
+ preferHunspell: -> !!process.env.SPELLCHECKER_PREFER_HUNSPELL
diff --git a/editors/atom/files/atom/patch-node__modules_spell-check_lib_locale-checker.coffee b/editors/atom/files/atom/patch-node__modules_spell-check_lib_locale-checker.coffee
new file mode 100644
index 000000000000..1c2916469a15
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_spell-check_lib_locale-checker.coffee
@@ -0,0 +1,10 @@
+--- node_modules/spell-check/lib/locale-checker.coffee.orig 2020-05-18 17:31:39 UTC
++++ node_modules/spell-check/lib/locale-checker.coffee
+@@ -73,6 +73,7 @@ class LocaleChecker
+ searchPaths.push "/usr/share/hunspell"
+ searchPaths.push "/usr/share/myspell"
+ searchPaths.push "/usr/share/myspell/dicts"
++ searchPaths.push "/usr/local/share/hunspell"
+
+ if env.isDarwin()
+ searchPaths.push "/"
diff --git a/editors/atom/files/atom/patch-node__modules_spellchecker_binding.gyp b/editors/atom/files/atom/patch-node__modules_spellchecker_binding.gyp
new file mode 100644
index 000000000000..814fd09df81c
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_spellchecker_binding.gyp
@@ -0,0 +1,20 @@
+--- node_modules/spellchecker/binding.gyp.orig 1985-10-26 08:15:00 UTC
++++ node_modules/spellchecker/binding.gyp
+@@ -4,7 +4,7 @@
+ ['OS=="mac"', {
+ 'spellchecker_use_hunspell%': 'true',
+ }],
+- ['OS=="linux"', {
++ ['OS=="linux" or OS=="freebsd"', {
+ 'spellchecker_use_hunspell': 'true',
+ }],
+ ['OS=="win"', {
+@@ -53,7 +53,7 @@
+ 'src/transcoder_win.cc',
+ ],
+ }],
+- ['OS=="linux"', {
++ ['OS=="linux" or OS=="freebsd"', {
+ 'sources': [
+ 'src/spellchecker_linux.cc',
+ 'src/transcoder_posix.cc',
diff --git a/editors/atom/files/atom/patch-node__modules_spellchecker_vendor_hunspell_src_hunspell_affentry.hxx b/editors/atom/files/atom/patch-node__modules_spellchecker_vendor_hunspell_src_hunspell_affentry.hxx
new file mode 100644
index 000000000000..c68cdba31d80
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_spellchecker_vendor_hunspell_src_hunspell_affentry.hxx
@@ -0,0 +1,102 @@
+--- node_modules/spellchecker/vendor/hunspell/src/hunspell/affentry.hxx.orig 2019-12-27 07:21:39 UTC
++++ node_modules/spellchecker/vendor/hunspell/src/hunspell/affentry.hxx
+@@ -24,10 +24,10 @@ class LIBHUNSPELL_DLL_EXPORTED PfxEntry : protected Af
+ ~PfxEntry();
+
+ inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); }
+- struct hentry * checkword(const char * word, int len, char in_compound,
++ struct hentry * checkword(const char * word, int len, char in_compound,
+ const FLAG needflag = FLAG_NULL);
+
+- struct hentry * check_twosfx(const char * word, int len, char in_compound, const FLAG needflag = NULL);
++ struct hentry * check_twosfx(const char * word, int len, char in_compound, const FLAG needflag = FLAG_NULL);
+
+ char * check_morph(const char * word, int len, char in_compound,
+ const FLAG needflag = FLAG_NULL);
+@@ -36,15 +36,15 @@ class LIBHUNSPELL_DLL_EXPORTED PfxEntry : protected Af
+ char in_compound, const FLAG needflag = FLAG_NULL);
+
+ inline FLAG getFlag() { return aflag; }
+- inline const char * getKey() { return appnd; }
++ inline const char * getKey() { return appnd; }
+ char * add(const char * word, int len);
+
+- inline short getKeyLen() { return appndl; }
++ inline short getKeyLen() { return appndl; }
+
+- inline const char * getMorph() { return morphcode; }
++ inline const char * getMorph() { return morphcode; }
+
+- inline const unsigned short * getCont() { return contclass; }
+- inline short getContLen() { return contclasslen; }
++ inline const unsigned short * getCont() { return contclass; }
++ inline short getContLen() { return contclasslen; }
+
+ inline PfxEntry * getNext() { return next; }
+ inline PfxEntry * getNextNE() { return nextne; }
+@@ -55,7 +55,7 @@ class LIBHUNSPELL_DLL_EXPORTED PfxEntry : protected Af
+ inline void setNextNE(PfxEntry * ptr) { nextne = ptr; }
+ inline void setNextEQ(PfxEntry * ptr) { nexteq = ptr; }
+ inline void setFlgNxt(PfxEntry * ptr) { flgnxt = ptr; }
+-
++
+ inline char * nextchar(char * p);
+ inline int test_condition(const char * st);
+ };
+@@ -74,7 +74,7 @@ class LIBHUNSPELL_DLL_EXPORTED SfxEntry : protected Af
+ SfxEntry * nexteq;
+ SfxEntry * nextne;
+ SfxEntry * flgnxt;
+-
++
+ SfxEntry * l_morph;
+ SfxEntry * r_morph;
+ SfxEntry * eq_morph;
+@@ -85,32 +85,32 @@ class LIBHUNSPELL_DLL_EXPORTED SfxEntry : protected Af
+ ~SfxEntry();
+
+ inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); }
+- struct hentry * checkword(const char * word, int len, int optflags,
++ struct hentry * checkword(const char * word, int len, int optflags,
+ PfxEntry* ppfx, char ** wlst, int maxSug, int * ns,
+ // const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, char in_compound=IN_CPD_NOT);
+ const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, const FLAG badflag = 0);
+
+- struct hentry * check_twosfx(const char * word, int len, int optflags, PfxEntry* ppfx, const FLAG needflag = NULL);
++ struct hentry * check_twosfx(const char * word, int len, int optflags, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL);
+
+ char * check_twosfx_morph(const char * word, int len, int optflags,
+ PfxEntry* ppfx, const FLAG needflag = FLAG_NULL);
+ struct hentry * get_next_homonym(struct hentry * he);
+- struct hentry * get_next_homonym(struct hentry * word, int optflags, PfxEntry* ppfx,
++ struct hentry * get_next_homonym(struct hentry * word, int optflags, PfxEntry* ppfx,
+ const FLAG cclass, const FLAG needflag);
+
+
+ inline FLAG getFlag() { return aflag; }
+- inline const char * getKey() { return rappnd; }
++ inline const char * getKey() { return rappnd; }
+ char * add(const char * word, int len);
+
+
+- inline const char * getMorph() { return morphcode; }
++ inline const char * getMorph() { return morphcode; }
+
+- inline const unsigned short * getCont() { return contclass; }
+- inline short getContLen() { return contclasslen; }
+- inline const char * getAffix() { return appnd; }
++ inline const unsigned short * getCont() { return contclass; }
++ inline short getContLen() { return contclasslen; }
++ inline const char * getAffix() { return appnd; }
+
+- inline short getKeyLen() { return appndl; }
++ inline short getKeyLen() { return appndl; }
+
+ inline SfxEntry * getNext() { return next; }
+ inline SfxEntry * getNextNE() { return nextne; }
+@@ -132,5 +132,3 @@ class LIBHUNSPELL_DLL_EXPORTED SfxEntry : protected Af
+ };
+
+ #endif
+-
+-
diff --git a/editors/atom/files/atom/patch-node__modules_symbols-view_lib_tag-generator.js b/editors/atom/files/atom/patch-node__modules_symbols-view_lib_tag-generator.js
new file mode 100644
index 000000000000..c3f530cf868a
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_symbols-view_lib_tag-generator.js
@@ -0,0 +1,11 @@
+--- node_modules/symbols-view/lib/tag-generator.js.orig 2019-12-27 07:45:34 UTC
++++ node_modules/symbols-view/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/editors/atom/files/atom/patch-node__modules_tabs_lib_tab-bar-view.coffee b/editors/atom/files/atom/patch-node__modules_tabs_lib_tab-bar-view.coffee
new file mode 100644
index 000000000000..47542b4975d1
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_tabs_lib_tab-bar-view.coffee
@@ -0,0 +1,11 @@
+--- node_modules/tabs/lib/tab-bar-view.coffee.orig 2019-01-24 00:42:27 UTC
++++ node_modules/tabs/lib/tab-bar-view.coffee
+@@ -462,7 +462,7 @@ class TabBarView
+
+ updateTabScrolling: (value) ->
+ if value is 'platform'
+- @tabScrolling = (process.platform is 'linux')
++ @tabScrolling = (process.platform is 'linux' or process.platform is 'freebsd')
+ else
+ @tabScrolling = value
+
diff --git a/editors/atom/files/atom/patch-node__modules_text-buffer_lib_text-buffer.js b/editors/atom/files/atom/patch-node__modules_text-buffer_lib_text-buffer.js
new file mode 100644
index 000000000000..5b55773f16c0
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_text-buffer_lib_text-buffer.js
@@ -0,0 +1,11 @@
+--- node_modules/text-buffer/lib/text-buffer.js.orig 2019-12-27 06:41:17 UTC
++++ node_modules/text-buffer/lib/text-buffer.js
+@@ -1925,7 +1925,7 @@ class TextBuffer {
+ try {
+ await this.buffer.save(destination, this.getEncoding())
+ } catch (error) {
+- const canEscalate = process.platform === 'darwin' || process.platform === 'linux'
++ const canEscalate = process.platform === 'darwin' || process.platform === 'linux' || process.platform === 'freebsd'
+ if (error.code === 'EACCES' && destination === filePath && canEscalate) {
+ const fsAdmin = require('fs-admin')
+ try {
diff --git a/editors/atom/files/atom/patch-node__modules_tree-view_lib_root-drag-and-drop.coffee b/editors/atom/files/atom/patch-node__modules_tree-view_lib_root-drag-and-drop.coffee
new file mode 100644
index 000000000000..32ef53088946
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_tree-view_lib_root-drag-and-drop.coffee
@@ -0,0 +1,11 @@
+--- node_modules/tree-view/lib/root-drag-and-drop.coffee.orig 2019-05-14 21:29:00 UTC
++++ node_modules/tree-view/lib/root-drag-and-drop.coffee
+@@ -42,7 +42,7 @@ class RootDragAndDropHandler
+
+ e.dataTransfer.setData 'text/plain', directory.path
+
+- if process.platform in ['darwin', 'linux']
++ if process.platform in ['darwin', 'linux', 'freebsd']
+ pathUri = "file://#{directory.path}" unless @uriHasProtocol(directory.path)
+ e.dataTransfer.setData 'text/uri-list', pathUri
+
diff --git a/editors/atom/files/atom/patch-node__modules_tree-view_spec_tree-view-package-spec.coffee b/editors/atom/files/atom/patch-node__modules_tree-view_spec_tree-view-package-spec.coffee
new file mode 100644
index 000000000000..ece834e6c2cd
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_tree-view_spec_tree-view-package-spec.coffee
@@ -0,0 +1,11 @@
+--- node_modules/tree-view/spec/tree-view-package-spec.coffee.orig 2019-12-27 06:42:40 UTC
++++ node_modules/tree-view/spec/tree-view-package-spec.coffee
+@@ -5054,7 +5054,7 @@ describe "TreeView", ->
+ treeView.rootDragAndDrop.onDragStart(dragStartEvent)
+
+ expect(dragStartEvent.dataTransfer.getData("text/plain")).toEqual gammaDirPath
+- if process.platform in ['darwin', 'linux']
++ if process.platform in ['darwin', 'linux', 'freebsd']
+ expect(dragStartEvent.dataTransfer.getData("text/uri-list")).toEqual "file://#{gammaDirPath}"
+
+ describe "when a root folder is dropped from another Atom window", ->
diff --git a/editors/atom/files/atom/patch-node__modules_user-home_index.js b/editors/atom/files/atom/patch-node__modules_user-home_index.js
new file mode 100644
index 000000000000..c2ec8edf9df5
--- /dev/null
+++ b/editors/atom/files/atom/patch-node__modules_user-home_index.js
@@ -0,0 +1,11 @@
+--- node_modules/user-home/index.js.orig 2019-12-27 06:43:28 UTC
++++ node_modules/user-home/index.js
+@@ -7,7 +7,7 @@ if (process.platform === 'win32') {
+ module.exports = env.USERPROFILE || env.HOMEDRIVE + env.HOMEPATH || home || null;
+ } else if (process.platform === 'darwin') {
+ module.exports = home || (user ? '/Users/' + user : null) || null;
+-} else if (process.platform === 'linux') {
++} else if (process.platform === 'linux' || process.platform === 'freebsd') {
+ module.exports = home ||
+ (user ? (process.getuid() === 0 ? '/root' : '/home/' + user) : null) || null;
+ } else {
diff --git a/editors/atom/files/node/patch-common.gypi b/editors/atom/files/node/patch-common.gypi
new file mode 100644
index 000000000000..becb72fa3fc4
--- /dev/null
+++ b/editors/atom/files/node/patch-common.gypi
@@ -0,0 +1,18 @@
+--- common.gypi.orig 2020-04-12 11:55:35 UTC
++++ common.gypi
+@@ -509,15 +509,6 @@
+ 'libraries': [ '-lelf' ],
+ }],
+ ['OS=="freebsd"', {
+- 'conditions': [
+- ['"0" < llvm_version < "4.0"', {
+- # Use this flag because on FreeBSD std::pairs copy constructor is non-trivial.
+- # Doesn't apply to llvm 4.0 (FreeBSD 11.1) or later.
+- # Refs: https://lists.freebsd.org/pipermail/freebsd-toolchain/2016-March/002094.html
+- # Refs: https://svnweb.freebsd.org/ports/head/www/node/Makefile?revision=444555&view=markup
+- 'cflags': [ '-D_LIBCPP_TRIVIAL_PAIR_COPY_CTOR=1' ],
+- }],
+- ],
+ 'ldflags': [
+ '-Wl,--export-dynamic',
+ ],
diff --git a/editors/atom/files/node/patch-configure.py b/editors/atom/files/node/patch-configure.py
new file mode 100644
index 000000000000..f069527a7b00
--- /dev/null
+++ b/editors/atom/files/node/patch-configure.py
@@ -0,0 +1,11 @@
+--- configure.py.orig 2020-06-16 06:19:09 UTC
++++ configure.py
+@@ -705,7 +705,7 @@ def get_nasm_version(asm):
+
+ def get_llvm_version(cc):
+ return get_version_helper(
+- cc, r"(^(?:FreeBSD )?clang version|based on LLVM) ([3-9]\.[0-9]+)")
++ cc, r"(^(?:FreeBSD )?clang version|based on LLVM) ([0-9]+\.[0-9]+)")
+
+ def get_xcode_version(cc):
+ return get_version_helper(
diff --git a/editors/atom/files/patch-atom.sh b/editors/atom/files/patch-atom.sh
new file mode 100644
index 000000000000..9fa6334e5cc4
--- /dev/null
+++ b/editors/atom/files/patch-atom.sh
@@ -0,0 +1,20 @@
+--- atom.sh.orig 2019-05-22 03:44:37 UTC
++++ atom.sh
+@@ -2,6 +2,8 @@
+
+ if [ "$(uname)" == 'Darwin' ]; then
+ OS='Mac'
++elif [ "$(uname)" == 'FreeBSD' ]; then
++ OS='FreeBSD'
+ elif [ "$(expr substr $(uname -s) 1 5)" == 'Linux' ]; then
+ OS='Linux'
+ else
+@@ -149,7 +151,7 @@ if [ $OS == 'Mac' ]; then
+ else
+ open -a "$ATOM_PATH/$ATOM_APP_NAME" -n --args --executed-from="$(pwd)" --pid=$$ --path-environment="$PATH" "$@"
+ fi
+-elif [ $OS == 'Linux' ]; then
++elif [ $OS == 'Linux' ] || [ $OS == 'FreeBSD' ]; then
+ SCRIPT=$(readlink -f "$0")
+ USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..)
+
diff --git a/editors/atom/files/patch-package.json b/editors/atom/files/patch-package.json
new file mode 100644
index 000000000000..14607eee4e07
--- /dev/null
+++ b/editors/atom/files/patch-package.json
@@ -0,0 +1,11 @@
+--- package.json.orig 2020-05-18 19:34:10 UTC
++++ package.json
+@@ -76,7 +76,7 @@
+ "incompatible-packages": "file:packages/incompatible-packages",
+ "jasmine-json": "~0.0",
+ "jasmine-reporters": "1.1.0",
+- "jasmine-tagged": "^1.1.4",
++ "jasmine-tagged": "file:../jasmine-tagged",
+ "key-path-helpers": "^0.4.0",
+ "keybinding-resolver": "https://www.atom.io/api/packages/keybinding-resolver/versions/0.39.0/tarball",
+ "language-c": "https://www.atom.io/api/packages/language-c/versions/0.60.19/tarball",
diff --git a/editors/atom/files/patch-packages_welcome_lib_guide-view.js b/editors/atom/files/patch-packages_welcome_lib_guide-view.js
new file mode 100644
index 000000000000..2d5a2ab28855
--- /dev/null
+++ b/editors/atom/files/patch-packages_welcome_lib_guide-view.js
@@ -0,0 +1,11 @@
+--- packages/welcome/lib/guide-view.js.orig 2019-12-27 05:12:53 UTC
++++ packages/welcome/lib/guide-view.js
+@@ -380,7 +380,7 @@ export default class GuideView {
+ getApplicationMenuName() {
+ if (process.platform === 'darwin') {
+ return 'Atom';
+- } else if (process.platform === 'linux') {
++ } else if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return 'Edit';
+ } else {
+ return 'File';
diff --git a/editors/atom/files/patch-script_build b/editors/atom/files/patch-script_build
new file mode 100644
index 000000000000..e79a30d6250b
--- /dev/null
+++ b/editors/atom/files/patch-script_build
@@ -0,0 +1,20 @@
+--- script/build.orig 2020-04-22 18:42:32 UTC
++++ script/build
+@@ -69,7 +69,7 @@ process.env.ELECTRON_VERSION = CONFIG.appMetadata.elec
+ let binariesPromise = Promise.resolve()
+
+ if (!argv.existingBinaries) {
+- checkChromedriverVersion()
++ // checkChromedriverVersion()
+ cleanOutputDirectory()
+ copyAssets()
+ transpilePackagesWithCustomTranspilerPaths()
+@@ -89,7 +89,7 @@ if (!argv.existingBinaries) {
+ if (!argv.generateApiDocs) {
+ binariesPromise
+ .then(packageApplication)
+- .then(packagedAppPath => generateStartupSnapshot(packagedAppPath).then(() => packagedAppPath))
++ // .then(packagedAppPath => generateStartupSnapshot(packagedAppPath).then(() => packagedAppPath))
+ .then(async packagedAppPath => {
+ switch (process.platform) {
+ case 'darwin': {
diff --git a/editors/atom/files/patch-script_lib_dump-symbols.js b/editors/atom/files/patch-script_lib_dump-symbols.js
new file mode 100644
index 000000000000..fcfe0f9d3515
--- /dev/null
+++ b/editors/atom/files/patch-script_lib_dump-symbols.js
@@ -0,0 +1,14 @@
+--- script/lib/dump-symbols.js.orig 2019-10-21 17:33:40 UTC
++++ script/lib/dump-symbols.js
+@@ -6,9 +6,9 @@ const path = require('path');
+
+ const CONFIG = require('../config');
+ module.exports = function() {
+- if (process.platform === 'win32') {
++ if (process.platform === 'win32' || process.platform === 'freebsd') {
+ console.log(
+- 'Skipping symbol dumping because minidump is not supported on Windows'
++ 'Skipping symbol dumping because minidump is not supported on Windows or FreeBSD'
+ .gray
+ );
+ return Promise.resolve();
diff --git a/editors/atom/files/patch-script_lib_package-application.js b/editors/atom/files/patch-script_lib_package-application.js
new file mode 100644
index 000000000000..f711f1fc2f67
--- /dev/null
+++ b/editors/atom/files/patch-script_lib_package-application.js
@@ -0,0 +1,29 @@
+--- script/lib/package-application.js.orig 2019-10-21 17:33:40 UTC
++++ script/lib/package-application.js
+@@ -66,7 +66,7 @@ module.exports = function() {
+ 'Resources'
+ );
+ setAtomHelperVersion(packagedAppPath);
+- } else if (process.platform === 'linux') {
++ } else if (process.platform === 'linux' || process.platform === 'freebsd') {
+ bundledResourcesPath = path.join(packagedAppPath, 'resources');
+ chmodNodeFiles(packagedAppPath);
+ } else {
+@@ -118,7 +118,7 @@ function copyNonASARResources(packagedAppPath, bundled
+ path.join(CONFIG.repositoryRootPath, 'resources', 'mac', 'file.icns'),
+ path.join(bundledResourcesPath, 'file.icns')
+ );
+- } else if (process.platform === 'linux') {
++ } else if (process.platform === 'linux' || process.platform === 'freebsd') {
+ fs.copySync(
+ path.join(
+ CONFIG.repositoryRootPath,
+@@ -234,7 +234,7 @@ function renamePackagedAppDir(packageOutputDirPath) {
+ path.join(packageOutputDirPath, appBundleName),
+ packagedAppPath
+ );
+- } else if (process.platform === 'linux') {
++ } else if (process.platform === 'linux' || process.platform === 'freebsd') {
+ const appName =
+ CONFIG.channel !== 'stable' ? `atom-${CONFIG.channel}` : 'atom';
+ let architecture;
diff --git a/editors/atom/files/patch-script_package.json b/editors/atom/files/patch-script_package.json
new file mode 100644
index 000000000000..1b086dc74d46
--- /dev/null
+++ b/editors/atom/files/patch-script_package.json
@@ -0,0 +1,20 @@
+--- script/package.json.orig 2020-06-10 09:38:09 UTC
++++ script/package.json
+@@ -10,9 +10,7 @@
+ "coffeelint": "1.15.7",
+ "colors": "1.1.2",
+ "donna": "1.0.16",
+- "electron-chromedriver": "^5.0.0",
+ "electron-link": "0.4.1",
+- "electron-mksnapshot": "^5.0.0",
+ "electron-packager": "12.2.0",
+ "@atom/electron-winstaller": "0.0.1",
+ "eslint": "^5.16.0",
+@@ -31,7 +29,6 @@
+ "legal-eagle": "0.14.0",
+ "lodash.startcase": "4.4.0",
+ "lodash.template": "4.5.0",
+- "minidump": "0.9.0",
+ "mkdirp": "0.5.1",
+ "normalize-package-data": "2.3.5",
+ "npm": "6.14.4",
diff --git a/editors/atom/files/patch-script_test b/editors/atom/files/patch-script_test
new file mode 100644
index 000000000000..7bde6f8301cb
--- /dev/null
+++ b/editors/atom/files/patch-script_test
@@ -0,0 +1,20 @@
+--- script/test.orig 2020-05-18 19:34:10 UTC
++++ script/test
+@@ -51,7 +51,7 @@ if (process.platform === 'darwin') {
+ const executablePaths = glob.sync(path.join(CONFIG.buildOutputPath, '*.app'))
+ assert(executablePaths.length === 1, `More than one application to run tests against was found. ${executablePaths.join(',')}`)
+ executablePath = path.join(executablePaths[0], 'Contents', 'MacOS', path.basename(executablePaths[0], '.app'))
+-} else if (process.platform === 'linux') {
++} else if (process.platform === 'linux' || process.platform === 'freebsd') {
+ const executablePaths = glob.sync(path.join(CONFIG.buildOutputPath, 'atom-*', 'atom'))
+ assert(executablePaths.length === 1, `More than one application to run tests against was found. ${executablePaths.join(',')}`)
+ executablePath = executablePaths[0]
+@@ -222,7 +222,7 @@ function testSuitesForPlatform (platform) {
+ case 'win32':
+ suites = (process.arch === 'x64') ? [runCoreMainProcessTests, runCoreRenderProcessTests] : [runCoreMainProcessTests]
+ break
+- case 'linux':
++ case 'linux': case 'freebsd':
+ suites = [runCoreMainProcessTests]
+ break
+ default:
diff --git a/editors/atom/files/patch-spec_main-process_atom-application.test.js b/editors/atom/files/patch-spec_main-process_atom-application.test.js
new file mode 100644
index 000000000000..fd18328129a9
--- /dev/null
+++ b/editors/atom/files/patch-spec_main-process_atom-application.test.js
@@ -0,0 +1,11 @@
+--- spec/main-process/atom-application.test.js.orig 2019-11-16 08:38:38 UTC
++++ spec/main-process/atom-application.test.js
+@@ -1107,7 +1107,7 @@ describe('AtomApplication', function() {
+ });
+
+ describe('when closing the last window', function() {
+- if (process.platform === 'linux' || process.platform === 'win32') {
++ if (process.platform === 'linux' || process.platform === 'freebsd' || process.platform === 'win32') {
+ it('quits the application', async function() {
+ const [w] = await scenario.launch(parseCommandLine(['a']));
+ scenario.getApplication(0).removeWindow(w);
diff --git a/editors/atom/files/patch-src_atom-paths.js b/editors/atom/files/patch-src_atom-paths.js
new file mode 100644
index 000000000000..987472267818
--- /dev/null
+++ b/editors/atom/files/patch-src_atom-paths.js
@@ -0,0 +1,11 @@
+--- src/atom-paths.js.orig 2019-12-13 19:07:42 UTC
++++ src/atom-paths.js
+@@ -19,7 +19,7 @@ const getAppDirectory = () => {
+ 0,
+ process.execPath.indexOf('.app') + 4
+ );
+- case 'linux':
++ case 'linux': case 'freebsd':
+ case 'win32':
+ return path.join(process.execPath, '..');
+ }
diff --git a/editors/atom/files/patch-src_config-schema.js b/editors/atom/files/patch-src_config-schema.js
new file mode 100644
index 000000000000..62e8e795dabe
--- /dev/null
+++ b/editors/atom/files/patch-src_config-schema.js
@@ -0,0 +1,17 @@
+--- src/config-schema.js.orig 2020-06-10 09:38:09 UTC
++++ src/config-schema.js
+@@ -620,12 +620,12 @@ const configSchema = {
+ }
+ };
+
+-if (['win32', 'linux'].includes(process.platform)) {
++if (['win32', 'linux', 'freebsd'].includes(process.platform)) {
+ configSchema.core.properties.autoHideMenuBar = {
+ type: 'boolean',
+ default: false,
+ description:
+- 'Automatically hide the menu bar and toggle it by pressing Alt. This is only supported on Windows & Linux.'
++ 'Automatically hide the menu bar and toggle it by pressing Alt. This is only supported on Windows, Linux & FreeBSD.'
+ };
+ }
+
diff --git a/editors/atom/files/patch-src_crash-reporter-start.js b/editors/atom/files/patch-src_crash-reporter-start.js
new file mode 100644
index 000000000000..705b6f62bf81
--- /dev/null
+++ b/editors/atom/files/patch-src_crash-reporter-start.js
@@ -0,0 +1,18 @@
+--- src/crash-reporter-start.js.orig 2019-10-21 17:33:40 UTC
++++ src/crash-reporter-start.js
+@@ -1,15 +1,2 @@
+ module.exports = function(params) {
+- const { crashReporter } = require('electron');
+- const os = require('os');
+- const platformRelease = os.release();
+- const arch = os.arch();
+- const { uploadToServer, releaseChannel } = params;
+-
+- crashReporter.start({
+- productName: 'Atom',
+- companyName: 'GitHub',
+- submitURL: 'https://atom.io/crash_reports',
+- uploadToServer,
+- extra: { platformRelease, arch, releaseChannel }
+- });
+ };
diff --git a/editors/atom/files/patch-src_main-process_atom-application.js b/editors/atom/files/patch-src_main-process_atom-application.js
new file mode 100644
index 000000000000..5b3b0e364a40
--- /dev/null
+++ b/editors/atom/files/patch-src_main-process_atom-application.js
@@ -0,0 +1,11 @@
+--- src/main-process/atom-application.js.orig 2019-10-21 17:33:40 UTC
++++ src/main-process/atom-application.js
+@@ -463,7 +463,7 @@ module.exports = class AtomApplication extends EventEm
+ if (this.applicationMenu != null) {
+ this.applicationMenu.enableWindowSpecificItems(false);
+ }
+- if (['win32', 'linux'].includes(process.platform)) {
++ if (['win32', 'linux', 'freebsd'].includes(process.platform)) {
+ app.quit();
+ return;
+ }
diff --git a/editors/atom/files/patch-src_main-process_atom-window.js b/editors/atom/files/patch-src_main-process_atom-window.js
new file mode 100644
index 000000000000..5ea35f3dd028
--- /dev/null
+++ b/editors/atom/files/patch-src_main-process_atom-window.js
@@ -0,0 +1,11 @@
+--- src/main-process/atom-window.js.orig 2020-06-10 09:38:09 UTC
++++ src/main-process/atom-window.js
+@@ -55,7 +55,7 @@ module.exports = class AtomWindow extends EventEmitter
+
+ // Don't set icon on Windows so the exe's ico will be used as window and
+ // taskbar's icon. See https://github.com/atom/atom/issues/4811 for more.
+- if (process.platform === 'linux') options.icon = ICON_PATH;
++ if (process.platform === 'linux' || process.platform === 'freebsd') options.icon = ICON_PATH;
+ if (this.shouldAddCustomTitleBar()) options.titleBarStyle = 'hidden';
+ if (this.shouldAddCustomInsetTitleBar())
+ options.titleBarStyle = 'hiddenInset';
diff --git a/editors/atom/files/patch-src_main-process_auto-update-manager.js b/editors/atom/files/patch-src_main-process_auto-update-manager.js
new file mode 100644
index 000000000000..61ba8d1631f4
--- /dev/null
+++ b/editors/atom/files/patch-src_main-process_auto-update-manager.js
@@ -0,0 +1,11 @@
+--- src/main-process/auto-update-manager.js.orig 2019-12-13 19:07:42 UTC
++++ src/main-process/auto-update-manager.js
+@@ -101,7 +101,7 @@ module.exports = class AutoUpdateManager extends Event
+ this.setState(UnsupportedState);
+ }
+ break;
+- case 'linux':
++ case 'linux': case 'freebsd':
+ this.setState(UnsupportedState);
+ }
+ }
diff --git a/editors/atom/files/patch-src_text-editor-component.js b/editors/atom/files/patch-src_text-editor-component.js
new file mode 100644
index 000000000000..f11b1f96399e
--- /dev/null
+++ b/editors/atom/files/patch-src_text-editor-component.js
@@ -0,0 +1,29 @@
+--- src/text-editor-component.js.orig 2020-06-10 09:38:09 UTC
++++ src/text-editor-component.js
+@@ -1812,7 +1812,7 @@ module.exports = class TextEditorComponent {
+ // the paste event. And since we don't use the `paste` event for any
+ // behavior in Atom, we can no-op the event to eliminate this issue.
+ // See https://github.com/atom/atom/pull/15183#issue-248432413.
+- if (this.getPlatform() === 'linux') event.preventDefault();
++ if (this.getPlatform() === 'linux' || this.getPlatform() === 'freebsd') event.preventDefault();
+ }
+
+ didTextInput(event) {
+@@ -1976,7 +1976,7 @@ module.exports = class TextEditorComponent {
+ // On Linux, pasting happens on middle click. A textInput event with the
+ // contents of the selection clipboard will be dispatched by the browser
+ // automatically on mouseup.
+- if (platform === 'linux' && this.isInputEnabled())
++ if ((platform === 'linux' || platform === 'freebsd') && this.isInputEnabled())
+ model.insertText(clipboard.readText('selection'));
+ return;
+ }
+@@ -2848,7 +2848,7 @@ module.exports = class TextEditorComponent {
+ didChangeSelectionRange() {
+ const { model } = this.props;
+
+- if (this.getPlatform() === 'linux') {
++ if (this.getPlatform() === 'linux' || this.getPlatform() === 'freebsd') {
+ if (this.selectionClipboardImmediateId) {
+ clearImmediate(this.selectionClipboardImmediateId);
+ }
diff --git a/editors/atom/files/patch-src_update-process-env.js b/editors/atom/files/patch-src_update-process-env.js
new file mode 100644
index 000000000000..fe34de0678a2
--- /dev/null
+++ b/editors/atom/files/patch-src_update-process-env.js
@@ -0,0 +1,11 @@
+--- src/update-process-env.js.orig 2019-10-21 17:33:40 UTC
++++ src/update-process-env.js
+@@ -8,7 +8,7 @@ const ENVIRONMENT_VARIABLES_TO_PRESERVE = new Set([
+ 'ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT'
+ ]);
+
+-const PLATFORMS_KNOWN_TO_WORK = new Set(['darwin', 'linux']);
++const PLATFORMS_KNOWN_TO_WORK = new Set(['darwin', 'linux', 'freebsd']);
+
+ async function updateProcessEnv(launchEnv) {
+ let envToAssign;
diff --git a/editors/atom/files/patch-src_window-event-handler.js b/editors/atom/files/patch-src_window-event-handler.js
new file mode 100644
index 000000000000..a7e5cde400ad
--- /dev/null
+++ b/editors/atom/files/patch-src_window-event-handler.js
@@ -0,0 +1,11 @@
+--- src/window-event-handler.js.orig 2019-10-21 17:33:40 UTC
++++ src/window-event-handler.js
+@@ -44,7 +44,7 @@ module.exports = class WindowEventHandler {
+ })
+ );
+
+- if (['win32', 'linux'].includes(process.platform)) {
++ if (['win32', 'linux', 'freebsd'].includes(process.platform)) {
+ this.subscriptions.add(
+ this.atomEnvironment.commands.add(this.window, {
+ 'window:toggle-menu-bar': this.handleWindowToggleMenuBar
diff --git a/editors/atom/files/script/patch-script_node__modules_electron-packager_ignore.js b/editors/atom/files/script/patch-script_node__modules_electron-packager_ignore.js
new file mode 100644
index 000000000000..34b3130d4630
--- /dev/null
+++ b/editors/atom/files/script/patch-script_node__modules_electron-packager_ignore.js
@@ -0,0 +1,11 @@
+--- script/node_modules/electron-packager/ignore.js.orig 2019-12-27 05:37:51 UTC
++++ script/node_modules/electron-packager/ignore.js
+@@ -19,7 +19,7 @@ function generateIgnores (opts) {
+ } else {
+ opts.ignore = [].concat(DEFAULT_IGNORES)
+ }
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ opts.ignore.push(common.baseTempDir(opts))
+ }
+
diff --git a/editors/atom/files/script/patch-script_node__modules_electron-packager_targets.js b/editors/atom/files/script/patch-script_node__modules_electron-packager_targets.js
new file mode 100644
index 000000000000..947ba8cce13b
--- /dev/null
+++ b/editors/atom/files/script/patch-script_node__modules_electron-packager_targets.js
@@ -0,0 +1,22 @@
+--- script/node_modules/electron-packager/targets.js.orig 1985-10-26 08:15:00 UTC
++++ script/node_modules/electron-packager/targets.js
+@@ -5,9 +5,10 @@ const downloadArch = require('electron-download/lib/ar
+ const semver = require('semver')
+
+ const officialArchs = ['ia32', 'x64', 'armv7l', 'arm64', 'mips64el']
+-const officialPlatforms = ['darwin', 'linux', 'mas', 'win32']
++const officialPlatforms = ['darwin', 'freebsd', 'linux', 'mas', 'win32']
+ const officialPlatformArchCombos = {
+ darwin: ['x64'],
++ freebsd: ['x64'],
+ linux: ['ia32', 'x64', 'armv7l', 'arm64', 'mips64el'],
+ mas: ['x64'],
+ win32: ['ia32', 'x64']
+@@ -21,6 +22,7 @@ const linuxArchBuildVersions = {
+ // Maps to module filename for each platform (lazy-required if used)
+ const osModules = {
+ darwin: './mac',
++ freebsd: './linux',
+ linux: './linux',
+ mas: './mac', // map to darwin
+ win32: './win32'
diff --git a/editors/atom/files/script/patch-script_node__modules_passwd-user_index.js b/editors/atom/files/script/patch-script_node__modules_passwd-user_index.js
new file mode 100644
index 000000000000..4c991b8cce26
--- /dev/null
+++ b/editors/atom/files/script/patch-script_node__modules_passwd-user_index.js
@@ -0,0 +1,29 @@
+--- script/node_modules/passwd-user/index.js.orig 2019-12-27 05:40:00 UTC
++++ script/node_modules/passwd-user/index.js
+@@ -53,7 +53,7 @@ function extractLinux(line) {
+ }
+
+ function getUser(str, username) {
+- const extract = process.platform === 'linux' ? extractLinux : extractDarwin;
++ const extract = (process.platform === 'linux' || process.platform === 'freebsd') ? extractLinux : extractDarwin;
+ const lines = str.split('\n');
+ const l = lines.length;
+ let i = 0;
+@@ -76,7 +76,7 @@ module.exports = username => {
+ username = process.getuid();
+ }
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return pify(fs.readFile)('/etc/passwd', 'utf8')
+ .then(passwd => getUser(passwd, username));
+ }
+@@ -98,7 +98,7 @@ module.exports.sync = username => {
+ username = process.getuid();
+ }
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return getUser(fs.readFileSync('/etc/passwd', 'utf8'), username);
+ }
+
diff --git a/editors/atom/files/script/patch-script_node__modules_user-home_index.js b/editors/atom/files/script/patch-script_node__modules_user-home_index.js
new file mode 100644
index 000000000000..0fbfc84d9341
--- /dev/null
+++ b/editors/atom/files/script/patch-script_node__modules_user-home_index.js
@@ -0,0 +1,11 @@
+--- script/node_modules/user-home/index.js.orig 2019-12-27 05:43:04 UTC
++++ script/node_modules/user-home/index.js
+@@ -7,7 +7,7 @@ if (process.platform === 'win32') {
+ module.exports = env.USERPROFILE || env.HOMEDRIVE + env.HOMEPATH || home || null;
+ } else if (process.platform === 'darwin') {
+ module.exports = home || (user ? '/Users/' + user : null) || null;
+-} else if (process.platform === 'linux') {
++} else if (process.platform === 'linux' || process.platform === 'freebsd') {
+ module.exports = home ||
+ (user ? (process.getuid() === 0 ? '/root' : '/home/' + user) : null) || null;
+ } else {