diff options
author | Elvis Pranskevichus <elvis@magic.io> | 2016-05-08 12:35:08 -0400 |
---|---|---|
committer | Patrice Clement <monsieurp@gentoo.org> | 2016-05-10 11:12:16 +0000 |
commit | 35a0f25a84b32b2f15b5d115aa607db4020cc55b (patch) | |
tree | 4dc7c3d75cc482f23d02d4b58ae196a2bc9e8a56 /app-editors/atom | |
parent | x11-misc/openbox-menu: Add maintainer name. (diff) | |
download | gentoo-35a0f25a84b32b2f15b5d115aa607db4020cc55b.tar.gz gentoo-35a0f25a84b32b2f15b5d115aa607db4020cc55b.tar.bz2 gentoo-35a0f25a84b32b2f15b5d115aa607db4020cc55b.zip |
app-editors/atom: Switch to using dev-util/electron, recompile binaries and unbundle libraries.
Proper build of dev-util/electron is now in the tree (#579116),
which makes it possible to rebuild Atom properly, i.e. without
the use of precompiled blobs and with proper library unbundling.
The strategy used in this build is to take the upstream release
build and recompile the native module portions against the system
Electron and system libraries.
Gentoo-Bug: https://bugs.gentoo.org/582462
Package-Manager: portage-2.2.28
Closes: https://github.com/gentoo/gentoo/pull/1430
Signed-off-by: Patrice Clement <monsieurp@gentoo.org>
Diffstat (limited to 'app-editors/atom')
-rw-r--r-- | app-editors/atom/Manifest | 28 | ||||
-rw-r--r-- | app-editors/atom/atom-1.7.3.ebuild | 388 | ||||
-rw-r--r-- | app-editors/atom/files/atom-unbundle-electron.patch | 45 | ||||
-rw-r--r-- | app-editors/atom/files/gyp-unbundle.py | 123 | ||||
-rw-r--r-- | app-editors/atom/metadata.xml | 8 |
5 files changed, 538 insertions, 54 deletions
diff --git a/app-editors/atom/Manifest b/app-editors/atom/Manifest index 4d55d7cced15..3f33557f4252 100644 --- a/app-editors/atom/Manifest +++ b/app-editors/atom/Manifest @@ -1 +1,27 @@ -DIST 1.7.3.tar.gz 10352768 SHA256 5074b59ddaca5525eb48098dee6fe63013799cbc77749add314b9e1bc894b8f4 SHA512 87d1452086b5434ba204773508a361b02d1f695dd37b8d40540997dbfb53c57c8a7117abe752b6ffd18beccc0f2318afadf6b2c506d54307ea15bb73074647f3 WHIRLPOOL 72398d4432759cd9de13c0c537e5eaea6dc28dbe144b46d972331c0e5cbebeeafc0d747b62d33e3a08959d1b72d8dba271966bce519b2ba7bc7ba7e433630ac2 +DIST atom-1.7.3.rpm 63702044 SHA256 0f21d09318cc526b12fa31eb4a527caa9db59eea4531b72b611658cbe16283a3 SHA512 f7ea3e906e6c3fa7185e49ae5fc0a461e02c079e37f8f96540847106b48c126aa7f3e431d835f98fd8fe831eae86288028623dabd83be095fd2c89e8ff50268f WHIRLPOOL 4238cca8f10b4d3bf72d78da5a019d3a33e31c9e39ad771855c8bf6aa5589e7cf9ec37aa5b62079d4fe56e33d98243dd3233d389ad2c3f05ef092fee5b213772 +DIST atom-cached-run-in-this-context-0.4.1.tar.gz 3855 SHA256 5487e7641d5031e652deeef8bebe2d3af4e4d2b89989dd8700bf14e33843ce89 SHA512 dca2a6c77bb94e704aa99b405ae017bf0c56ce536a7246a8feaf133722556d444fb684cd6b9b475abcd0b946a42073a9fc0d61f5141b564320ac023ab2fbf79d WHIRLPOOL 573d0f703989f31109854f0eb324d6b1364e93cd057c4cfe20409415dee3101964cacabc246d4df43124dad881d8fec8575c6bbb23ba98698e6c73cf3c5614d4 +DIST atom-git-utils-4.1.2.tar.gz 36492 SHA256 fd627647742359946d3b8f88bc91dd4d68a047dcba5bfafbd690e1a20afeb908 SHA512 d1f0a5bbd6b059131ccf4ab92174d80caddbb254ea6d0676a5ce71d7dba55d60c86ed1c412862b9d104a5f6deb2671facad84841f9644afb9b37416b743e917a WHIRLPOOL 4ee4620b0208a30f848167fffce05c5999d38bf5a3e50567e6bcf295fdafc7861e870346cfeb28a61392e7a737e100f90ae1dbd25066469926e3148006e02937 +DIST atom-keyboard-layout-1.0.0.tar.gz 6430 SHA256 d3f20f0765b7a243c3cfa3e49360851404977c2ed6e84dc84e9aaf28d8547d03 SHA512 a96b77c29eb1f5367f1d60ddc501fdd6e507fc92f980974bb2c1bec923b264e73104650180722819946e075284a928b4aaa01f8594365186bd8530a0179c7ff5 WHIRLPOOL 693f4a1546e0ca772ea2b2f860e6c2cf55f645031eb516021107296a3a05fca9086de62080255abae55c0ea42cc0f5aeeba26e6dd0b7eb274a8b69135bbf79c9 +DIST atom-marker-index-3.1.0.tar.gz 18065 SHA256 264e5553edee7e10766083433f952a515601201b53d332ecfe0fd43870fb4a38 SHA512 e50c2e03555d18e2eae0eb4ca5b16f486a53bf67803da6eb7eec90ef86048939f302baf15678a3af964b36ae809387d4665024e4d61bd9741738b12e84f4db64 WHIRLPOOL 179fafbd85d9b6e093ab646264716b0708d39aa3e1cd5771fbe173f2cd1ebb05f9a2525e5bb27d9605e2fd4ab5773a68d6552667c285ad3cbdbfbb6ae7d8b30e +DIST atom-node-ctags-3.0.0.tar.gz 15062 SHA256 40605012d06d4dcbfc369862b57900b6963613e2e4ee3b37fea21693b2b418a7 SHA512 6f7277a0ff872991c365f811c635fd881c3e466c20219d8a7bdaf6fec7c26c5feaa7ae2118691a8d52ceb3ecfda6d795bf39dfda7f8df5a6d02388575a010f87 WHIRLPOOL 2cff81d2ca405a615e5c7d284785f129f8fcd968998c68a42af1ca2e6d76a6fcb404a92f3c0d20220567b28593448b91657db6df8bce19de1f2eedbfe2959140 +DIST atom-node-keytar-3.0.2.tar.gz 5718 SHA256 16af03d2a7876e3008f82d35e913753384655bc181e93cb771639b6d5a2439bf SHA512 f08ec6e50071e6e8995244607144009eaa8fd61a1724c80c40ccfb497e2b4682b30d6a091de9480b78f49ceb11f1a655e12ccb6b43d3df34f7e089585381697a WHIRLPOOL 69b10619531bedb839c61c1b29d18d1a0bf4e468ed05ebd58db349010b8de555673f45bdf98c4ad252aaa960b47faa00d952470e9b3545a0e1e189bbb3e49ded +DIST atom-node-nslog-3.0.0.tar.gz 2774 SHA256 6f2c7b79dd27688829d72dcbb94cc3da8b86fe74f355e1d407907cc56da29747 SHA512 1891632486acfa014eec79f70b14d56d967670310e46dedccfc9dfa505581365765f6bd42ad538b29e74d7c7de83d045b4199dd634fc588734a1ee086dcddb0a WHIRLPOOL d29f2c68e6168ce020c2a73d73f107ffb4c777e006fba4f01a93045ad631fb2d8b83f989244caf4d5e2f66474e660f3479d79a03e82a6b8fa8a297586ee6e556 +DIST atom-node-oniguruma-5.1.2.tar.gz 662091 SHA256 130ab56cd6c29c4acc1f14ba31ec3f04146f02fe89c865c0af092f9d639fbdfb SHA512 e451f742ac1319b64e203848bce5d9c15251e15b083419b7a97588316eac3d86acfdbf6d7541cbd92eece48b41f90fd23f69b5e7e2d93e8bc18559c703944353 WHIRLPOOL 2cf44d2a4023655c96aed93c6c8faa45c569c75eaf2435b39f0a09ddcd53377c0ea05ac186b2e67f256c75c146bb50d971b7f9b7170d64031de79c4e76ef5252 +DIST atom-node-pathwatcher-6.2.4.tar.gz 23324 SHA256 6b47f7f0e8009fe4dac0800ac11f2a2a0366fb4fd889e444d99787e093b8cf2e SHA512 f891777a326a4f11f36a64f382fb0c9bd3fa5e6478144130b0c554aaaced079223489461050667293f1392e356f5a84838196dc39f8d54f7b3fd537f361c2c9a WHIRLPOOL 67ea2fa8a98214f3ce64a3cc5ce1ff0a757c606c02599f1c1069e3e7aa2addd32a48da2273648632b92149027cf18b64131ee9070e46c6e0a2d227239a47eeaf +DIST atom-node-runas-3.1.1.tar.gz 6628 SHA256 9d7d5a157b16fdd7263f50adb2831706d6fcf0902a1af528fc2602db6f9dc1cf SHA512 bada6e99ceb833c8c6e74f4b3116c49f21b54b922c1a27668312552779b9e5ccebf380b41c781d49c1c0dd0fdff6de8b71a0dcaf1f992892593e85f4572238df WHIRLPOOL d286d76f38ee8a23b4b76a9070913abe901f4db273073d9c0dcef13004abe7e10e9b4cad451cfe8d0cd4cc1e0ac2ab28ed50f327c1b9d317689153658f7b8944 +DIST atom-node-spellchecker-3.2.3.tar.gz 481966 SHA256 bf4a07b4c671cd38b176ff8ef375f3cdf277decb941a0a279f8ffb36151fad55 SHA512 b0209fdfcbee53d289443e1c203a720888a82fa59648b4038c036c6afe68a6b04624e23267e69c36f23c185160d6ab84b1e4020047fbe6d94354e99d717a60b9 WHIRLPOOL d883cd3d3962e38ebe4c55e997ce461fa0b0da98e8b982793b77342eac1413e16090d562a9a50cb8200a18eda751a873528fdfde3b1f1928629bd56c5568f887 +DIST atom-scrollbar-style-3.2.0.tar.gz 4609 SHA256 ea0f8f00cac609537af0d10d228054371c58b5a74785bd52fbbd276af02911ef SHA512 fc3ddfe7582517df45d7258a5857ca05fbadb92417d68b0c77d1e89e54b3bdaef3a1624e29177ebe64a2a994e62e1d1f5cb438911e881124aeec359426fab1bc WHIRLPOOL f6e75aafa8946ccc16949bdffa33b2bf050f06434a3fedcf8e1abac8b6b2d31dd37fcc137a43274d4c55d5926349486fda157d3fb6948d97063aac33b99e6578 +DIST node-asap-2.0.3.tar.gz 38970 SHA256 ae81fe67d5f36f238d5f7dd315baffce7f7d243a67c739ea8b5a6373a452fe36 SHA512 ed8556b61dd6677c0a4b16724e2e1d7fa9c93bd141459ef481821988bdb04b713efed145e5cb0e377ba3f35a7292b692f894a06689d08fa25bb00fd600945c96 WHIRLPOOL d0936375945a6558eac9e6b6101232d7d650dddb32393ebd5722a2f17a5b7e276e55ff1ab3ce35eb3a6e850e6d3cc56b0c5167d6d91f8aeb957710e0f310c27c +DIST node-combyne-0.8.1.tar.gz 43384 SHA256 f5490904428b6204d2cad0e87abc3df289da3d7d75a4c1ab381506ad858cf42b SHA512 e35c6c5d6576e745b4e20b73c1793e12dd6bc4eb4977a97b4396654c7df2f52cf64eead7ad510f8d82fb5434a5780832195d1e16e9afaecbef10772876c06abd WHIRLPOOL 97552bab4f4c6cbe56553dbacb4276e1df279a2e69a85223e7ffba703531e34f390308c4a5a636dbb9143ca491af98b083acb0e975e355d31dd6df29497acc58 +DIST node-fs-extra-0.26.2.tar.gz 38210 SHA256 46e1dc219e9bf8e5962232ab428ca5fb26476f738f75aba2ebcb472334e5e07b SHA512 49d1b78dc5690a309c8bb4c3404bbbd0a9c7eabf9012095f223fbb360e7ef478a2dcf64b4f53373d702d002af29d557dbb5cd7a4c4478eb70ab4ae42f4df95fd WHIRLPOOL fa5c98d0087500e0b03ba35f76d18dd3a1b55a0ad985450834d18c4ce729c53832fed0b31eec9cf67e652ae90c3b9f89245fe2f834604c4037062b6a0b50d650 +DIST node-graceful-fs-4.1.2.tar.gz 8162 SHA256 1133697e1ebfdc25ab4c23b7b34a9591b8970d00f48dcfa806068778bd94aaa7 SHA512 7ee59ea3bc767640c2fc8895f50a751ca1c8004ce7d49623941202c408390f60b54aba06ae205d0222abfa80388a7899559e3ae2e5acd9e7349a45156c4aaec1 WHIRLPOOL a64042dc1ba43ff8bd95bfab2db443f6fe618e779bd82ca05b82e224e4739a9cf2537473dc8cb8ed5024372ef8dcd4e06b75e9dfb1200ddd1d09c1c9b426d43d +DIST node-js-beautify-1.5.10.tar.gz 301789 SHA256 055ce354da5f38387020d87ec68bd926af43eb36766b560f721b39fc3617c86a SHA512 a137e759533b4fa9e06895f27b0f8b5761a04ba00927ac8a964a755d3c11df1af6aaded039273d0e22d5ccc6cd6255878241cc9c55a2338e040defa540e1ad0e WHIRLPOOL 56577c5ae36e6d6f9c626a9275117e8592286a8e58b968c56ea36ae4dfa002fff0f7c032302060507796b532d5b1a05b0ed3eb14603403171e3ff66a6d2a9716 +DIST node-jsonfile-2.1.0.tar.gz 4390 SHA256 bdfe02539486eb30293c67202858552466db2e1774d1fe9d71631ee615aa3eee SHA512 8c51b41ecfd0e6c6e2bf7923f61b215fa42a905a44ba31e20a7b682d1ed992fc9cda65d4c09e97863eb6ec8c02dfeb7bb0cacb4fa0f63093e9c2d32e88e1ee37 WHIRLPOOL 6c1fcc2468ca63b189a7c55b568e2b51a67fd45745137b63781ed7b67e931cba847308388f942c8724192bf2c16d89722632afe053819c7725b9427f3f84e8fc +DIST node-klaw-1.0.0.tar.gz 4054 SHA256 ea1f37abe8bc23ec60375d7e81f23976398bf6ec0a81785bbf4a9d37635853b3 SHA512 9d9148202629143ec7839352d8539055401c8c85013e270546105b6af831f8ff5f4a0156f2f51bedab39bce2a1bbfb83018585f69400b56f1f8a367d9d0e62f4 WHIRLPOOL ea82b224071247421af12daecca9ed25ea8115841bab964cc12e381624e6bc1e443b18f603c50f17f951238b333e91992f15cfb97790b901e376d76d8d04de41 +DIST node-lodash-3.10.1.tgz 173550 SHA256 4578a0a45fae7bfc8f0ea464e9ca3b1330ad6d2c4696d61dc7e7afdcf4e2c925 SHA512 f660c3c2a54899ae8e657efd6650c009997cb019b44c49e47fdf7357788c0381b39084fff618aa3f9998d07a13d6234b0ab29cfd1d4707257ec897d159526bc9 WHIRLPOOL 13c347ac2925fea303d27d89697a9e83ca6228ee1cbf55986cf14bd9a8056ebd8bb7563f1f86b63c40809c80cadd8d263948a36ec9ed3228c4365a5858c4019d +DIST node-object-assign-4.0.1.tar.gz 3429 SHA256 d59183984993c1e08ad504c15ddb1e12f6f327bc45770309d5f318fcae98c173 SHA512 973504ea20510db1d0a428b6b02885f863ca94649e737843d49c9f0059b991b8086b80ddf0fbb643300e154d33c583b2bf34fa596c48bb13adc891c530f0dfd8 WHIRLPOOL 36ea749150efc5ed3dcd245425302429fe7bced5024bb660c8130fffa356e42069a8e5e776600d5ea4a786fcd3bb35521c19038a53204b3d4a06db061daa5df9 +DIST node-rimraf-2.2.8.tar.gz 4397 SHA256 766aa845c3688d409181856ef14a1a9f4489390bf7735ed159ab6cd9cb2ad5fc SHA512 790283e3b1461cf3946f3d499fa3aca766dccca02ade7f6733768ef461f62bb7c2ffb8093e3c03fba9e00bae59d57491de9285033c2542f73e05b3152fcd7b75 WHIRLPOOL 02feb1b90399834f2d17c377c62a620507751da1add89396bf33a1a9394d8d2e5d7c709dd7be1a3b3d12641cf03032f3ea16ae16ed0f425725bcdc6f4f56f81d +DIST nodegit-0.12.0.tar.gz 12428114 SHA256 b9b1cb8b8058a0e590635657a31193408a6db3b742f95958d70a02218990a9ab SHA512 dd7273dc6f78bd6e074d793fe066feed14b1b4554e03adf4c4053ab05960d132b7ecd44360b51b17a3c10388bd875a04e85532af4069cbc9a28f67352f64007f WHIRLPOOL 09c679861a3fc6510ebc79ea730f01d59da317423bcd3b4699a1f3da8b6b92964347fb0ab1aaa21412f3aa045f7c2a0a7451aa7fa902f0a654aa76bced38727b +DIST nodegit-promise-4.0.0.tgz 9486 SHA256 7b1c4f2a0e2475ffb333a5d360dc2c006e74a14e78e44d0661329a9b6ae0a7e7 SHA512 ebaf81f14d7ac7cc42e43b1a58a2b8c09743108d6ba8c6f577dd582047b8207848505f7a9cef327e2b8af15a790e3f82f0171f80528ad6c49672b6aef3eb986e WHIRLPOOL e6383d55696dabc121471cccfdd32743e9880bc1d2f054217e816e6c8c1be3a4f167bb9cda3ceddb778e7b609291aeefddc1fe2a21b3e8c1080a7ee29c5f3c46 +DIST nodegit-promisify-node-0.4.0.tar.gz 6190 SHA256 9bf342475d7c82d2f95d29eb1ce97f6f61387170d37c3690d107aaa0109dd435 SHA512 e9771bbd857084f115df7cee884182fd5c5e9e8f600350bd1a38c72427f34edcf1125280ebbc3154dc93db86fa614b75ab9df7d1b8b22f90ea3e80cc1cb70830 WHIRLPOOL 224c24cc0e5f8b0858eef565cfb40327f2369f8f60869b84e263d967e3c9d780773af9b06f31b9e895a4fd66aa78ca4369bf1d6b6f9f2c607af6722e29fe70ad +DIST nodejs-nan-2.0.9.tar.gz 147832 SHA256 4c29221f2beacd79a53f3399f3e6c34a33a0febf5249d92947391e615bfb4899 SHA512 7a680759f2391901c34c2fdd6be20565869c666bde786767a016beade561137b12038afbcf089496f9febdff3a9e6638e310f0ce8f60efb8beca5204ad8e1442 WHIRLPOOL c88038876b294f44da6f6f0a697f91f60d5c2beee018b95115dbd284ce23db80f76593737f507c02a4515265a06f59df4573b657062e6b1252c0ed4d834fe28a diff --git a/app-editors/atom/atom-1.7.3.ebuild b/app-editors/atom/atom-1.7.3.ebuild index 6c0541e20bf3..36de15dc0555 100644 --- a/app-editors/atom/atom-1.7.3.ebuild +++ b/app-editors/atom/atom-1.7.3.ebuild @@ -5,81 +5,363 @@ EAPI=6 PYTHON_COMPAT=( python2_7 ) -inherit flag-o-matic python-any-r1 eutils +inherit flag-o-matic python-any-r1 eutils rpm DESCRIPTION="A hackable text editor for the 21st Century" HOMEPAGE="https://atom.io" -SRC_URI="https://github.com/atom/atom/archive/v${PV}.tar.gz -> ${PV}.tar.gz" +MY_PV="${PV//_/-}" + +# All binary packages depend on this +NAN_V=2.0.9 + +# Keep dep versions in sync with atom/package.json +CACHED_RUN_IN_THIS_CONTEXT_V=0.4.1 +GIT_UTILS_V=4.1.2 +NODEGIT_V=0.12.0 +NODE_NSLOG_V=3.0.0 +NODE_ONIGURUMA_V=5.1.2 +NODE_PATHWATCHER_V=6.2.4 +NODE_RUNAS_V=3.1.1 +SCROLLBAR_STYLE_V=3.2.0 +SPELL_CHECK_V=0.67.0 + +# textbuffer dependency +MARKER_INDEX_V=3.1.0 + +# apm dependency +NODE_KEYTAR_V=3.0.2 + +# atom-keymap dependency +KEYBOARD_LAYOUT_V=1.0.0 + +# symbols-view dependency +NODE_CTAGS_V=3.0.0 + +# spell-check dependency +NODE_SPELLCHECKER_V=3.2.3 + +# nodegit dependencies +PROMISIFY_NODE_V=0.4.0 +NODE_FS_EXTRA_V=0.26.2 +NODE_GRACEFUL_FS_V=4.1.2 +NODE_JSONFILE_V=2.1.0 +NODE_KLAW_V=1.0.0 +RIMRAF_V=2.2.8 +NODE_LODASH_V=3.10.1 +COMBYNE_V=0.8.1 +JS_BEAUTIFY_V=1.5.10 +NODEGIT_PROMISE_V=4.0.0 +ASAP_V=2.0.3 +OBJECT_ASSIGN_V=4.0.1 + +# The x86_64 arch below is irrelevant, as we will rebuild all binary packages. +SRC_URI=" + https://github.com/${PN}/${PN}/releases/download/v${MY_PV}/atom.x86_64.rpm -> atom-${MY_PV}.rpm + https://github.com/nodejs/nan/archive/v${NAN_V}.tar.gz -> nodejs-nan-${NAN_V}.tar.gz + https://github.com/atom/cached-run-in-this-context/archive/v${CACHED_RUN_IN_THIS_CONTEXT_V}.tar.gz -> atom-cached-run-in-this-context-${CACHED_RUN_IN_THIS_CONTEXT_V}.tar.gz + https://github.com/atom/node-ctags/archive/v${NODE_CTAGS_V}.tar.gz -> atom-node-ctags-${NODE_CTAGS_V}.tar.gz + https://github.com/atom/git-utils/archive/v${GIT_UTILS_V}.tar.gz -> atom-git-utils-${GIT_UTILS_V}.tar.gz + https://github.com/nodegit/nodegit/archive/v${NODEGIT_V}.tar.gz -> nodegit-${NODEGIT_V}.tar.gz + https://github.com/atom/keyboard-layout/archive/v${KEYBOARD_LAYOUT_V}.tar.gz -> atom-keyboard-layout-${KEYBOARD_LAYOUT_V}.tar.gz + https://github.com/atom/marker-index/archive/v${MARKER_INDEX_V}.tar.gz -> atom-marker-index-${MARKER_INDEX_V}.tar.gz + https://github.com/atom/node-keytar/archive/v${NODE_KEYTAR_V}.tar.gz -> atom-node-keytar-${NODE_KEYTAR_V}.tar.gz + https://github.com/atom/node-nslog/archive/v${NODE_NSLOG_V}.tar.gz -> atom-node-nslog-${NODE_NSLOG_V}.tar.gz + https://github.com/atom/node-oniguruma/archive/v${NODE_ONIGURUMA_V}.tar.gz -> atom-node-oniguruma-${NODE_ONIGURUMA_V}.tar.gz + https://github.com/atom/node-pathwatcher/archive/v${NODE_PATHWATCHER_V}.tar.gz -> atom-node-pathwatcher-${NODE_PATHWATCHER_V}.tar.gz + https://github.com/atom/node-runas/archive/v${NODE_RUNAS_V}.tar.gz -> atom-node-runas-${NODE_RUNAS_V}.tar.gz + https://github.com/atom/scrollbar-style/archive/v${SCROLLBAR_STYLE_V}.tar.gz -> atom-scrollbar-style-${SCROLLBAR_STYLE_V}.tar.gz + https://github.com/atom/node-spellchecker/archive/v${NODE_SPELLCHECKER_V}.tar.gz -> atom-node-spellchecker-${NODE_SPELLCHECKER_V}.tar.gz + + https://github.com/nodegit/promisify-node/archive/${PROMISIFY_NODE_V}.tar.gz -> nodegit-promisify-node-${PROMISIFY_NODE_V}.tar.gz + https://registry.npmjs.org/nodegit-promise/-/nodegit-promise-${NODEGIT_PROMISE_V}.tgz + https://registry.npmjs.org/lodash/-/lodash-${NODE_LODASH_V}.tgz -> node-lodash-${NODE_LODASH_V}.tgz + https://github.com/kriskowal/asap/archive/v${ASAP_V}.tar.gz -> node-asap-${ASAP_V}.tar.gz + https://github.com/sindresorhus/object-assign/archive/v${OBJECT_ASSIGN_V}.tar.gz -> node-object-assign-${OBJECT_ASSIGN_V}.tar.gz + https://github.com/jprichardson/node-fs-extra/archive/${NODE_FS_EXTRA_V}.tar.gz -> node-fs-extra-${NODE_FS_EXTRA_V}.tar.gz + https://github.com/jprichardson/node-jsonfile/archive/${NODE_JSONFILE_V}.tar.gz -> node-jsonfile-${NODE_JSONFILE_V}.tar.gz + https://github.com/jprichardson/node-klaw/archive/${NODE_KLAW_V}.tar.gz -> node-klaw-${NODE_KLAW_V}.tar.gz + https://github.com/isaacs/node-graceful-fs/archive/v${NODE_GRACEFUL_FS_V}.tar.gz -> node-graceful-fs-${NODE_GRACEFUL_FS_V}.tar.gz + https://github.com/isaacs/rimraf/archive/v${RIMRAF_V}.tar.gz -> node-rimraf-${RIMRAF_V}.tar.gz + https://github.com/tbranyen/combyne/archive/${COMBYNE_V}.tar.gz -> node-combyne-${COMBYNE_V}.tar.gz + https://github.com/beautify-web/js-beautify/archive/v${JS_BEAUTIFY_V}.tar.gz -> node-js-beautify-${JS_BEAUTIFY_V}.tar.gz +" + +BINMODS=" + cached-run-in-this-context + node-ctags + git-utils + nodegit + keyboard-layout + node-nslog + node-oniguruma + node-pathwatcher + node-runas + node-keytar + scrollbar-style + node-spellchecker + marker-index +" + RESTRICT="mirror" LICENSE="MIT" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="~amd64" IUSE="" DEPEND=" + !dev-util/apm ${PYTHON_DEPS} - net-libs/nodejs[npm] - media-fonts/inconsolata - gnome-base/gconf - x11-libs/gtk+:2 - gnome-base/libgnome-keyring - x11-libs/libnotify - x11-libs/libXtst - dev-libs/nss - media-libs/alsa-lib + >=net-libs/nodejs-5.9.0:=[npm] + >=app-text/hunspell-1.3.3:= + =dev-libs/libgit2-0.23*:=[ssh] + >=dev-libs/oniguruma-5.9.5:= + >=dev-util/ctags-5.8 + dev-util/electron:0/36 " RDEPEND="${DEPEND}" +S="${WORKDIR}/${PN}-${MY_PV}" + pkg_setup() { python-any-r1_pkg_setup - npm config set python $PYTHON } -src_prepare(){ +get_install_suffix() { + local c=(${SLOT//\// }) + local slot=${c[0]} + local suffix + + if [[ "${slot}" == "0" ]]; then + suffix="" + else + suffix="-${slot}" + fi + + echo -n "${suffix}" +} + +get_install_dir() { + echo -n "/usr/$(get_libdir)/atom$(get_install_suffix)" +} + +package_dir() { + local binmod="${1}" binmod_v + eval binmod_v=\${$(tr '[:lower:]' '[:upper:]' <<< ${binmod//-/_}_V)} + echo -n ${binmod}-${binmod_v} +} + +_unpack_npm_package() { + local a="${1}" basename suffix + + basename=${a%.*} + suffix=${basename##*.} + if [[ "${suffix}" == "tar" ]]; then + basename=${basename%.*} + fi + + unpack ${a} + mv package "${basename}" || die +} + +_have_patches_for() { + local _patches="${1}-*.patch" _find + _find=$(find "${FILESDIR}" -maxdepth 1 -name "${_patches}" -print -quit) + test -n "$_find" +} + +src_unpack() { + local a + + for a in ${A} ; do + case ${a} in + *.rpm) srcrpm_unpack "${a}" ;; + nodegit-promise*|node-lodash*) _unpack_npm_package "${a}" ;; + *) unpack "${a}" ;; + esac + done + + mkdir "${WORKDIR}/atom-${MY_PV}" || die + mv "${WORKDIR}/usr" "${WORKDIR}/atom-${MY_PV}" || die +} + +src_prepare() { + local install_dir="$(get_install_dir)" + local patch binmod _s nan_s="${WORKDIR}/nan-${NAN_V}" + + cd "${S}/usr/share/atom/resources/app" || die epatch "${FILESDIR}/${PN}-python.patch" - sed -i -e "/exception-reporting/d" \ - -e "/metrics/d" package.json - sed -e "s/<%= description %>/$pkgdesc/" \ - -e "s|<%= installDir %>/share/<%= appFileName %>/atom|/usr/bin/atom|"\ - -e "s|<%= iconPath %>|atom|"\ - -e "s|<%= appName %>|Atom|" \ - resources/linux/atom.desktop.in > resources/linux/Atom.desktop - - # Fix atom location guessing - sed -i -e 's/ATOM_PATH="$USR_DIRECTORY\/share\/atom/ATOM_PATH="$USR_DIRECTORY\/../g' \ + epatch "${FILESDIR}/${PN}-unbundle-electron.patch" + + sed -i -e "s|{{ATOM_PATH}}|/usr/$(get_libdir)/electron/electron|g" \ ./atom.sh \ - || die "Fail fixing atom-shell directory" + || die - # Make bootstrap process more verbose - sed -i -e 's@node script/bootstrap@node script/bootstrap --no-quiet@g' \ - ./script/build \ - || die "Fail fixing verbosity of script/build" - default + sed -i -e "s|{{ATOM_RESOURCE_PATH}}|${install_dir}/app.asar|g" \ + ./atom.sh \ + || die + + local env="export NPM_CONFIG_NODEDIR=/usr/include/electron/node/" + sed -i -e \ + "s|\"\$binDir/\$nodeBin\" --harmony_collections|${env}\nexec /usr/bin/node|g" \ + apm/bin/apm || die + + rm apm/bin/node || die + + sed -i -e "s|/usr/share/atom/atom|/usr/bin/atom|g" \ + "${S}/usr/share/applications/atom.desktop" || die + + cd "${S}" || die + + for binmod in ${BINMODS}; do + _s="${WORKDIR}/$(package_dir ${binmod})" + cd "${_s}" || die + if _have_patches_for "${binmod}"; then + for patch in "${FILESDIR}"/${binmod}-*.patch; do + epatch "${patch}" + done + fi + done + + # Unbundle bundled libs from modules + + _s="${WORKDIR}/$(package_dir git-utils)" + ${EPYTHON} "${FILESDIR}/gyp-unbundle.py" \ + --inplace --unbundle "git;libgit2;git2" "${_s}/binding.gyp" || die + + _s="${WORKDIR}/$(package_dir node-oniguruma)" + ${EPYTHON} "${FILESDIR}/gyp-unbundle.py" \ + --inplace --unbundle "onig_scanner;oniguruma;onig" "${_s}/binding.gyp" || die + + _s="${WORKDIR}/$(package_dir node-spellchecker)" + ${EPYTHON} "${FILESDIR}/gyp-unbundle.py" \ + --inplace --unbundle "spellchecker;hunspell;hunspell" "${_s}/binding.gyp" || die + + for binmod in ${BINMODS}; do + _s="${WORKDIR}/$(package_dir ${binmod})" + mkdir -p "${_s}/node_modules" || die + ln -s "${nan_s}" "${_s}/node_modules/nan" || die + done + + _s="${WORKDIR}/$(package_dir nodegit)" + ln -s "${WORKDIR}/$(package_dir node-fs-extra)" "${_s}/node_modules/fs-extra" || die + ln -s "${WORKDIR}/$(package_dir promisify-node)" "${_s}/node_modules/promisify-node" || die + ln -s "${WORKDIR}/$(package_dir combyne)" "${_s}/node_modules/combyne" || die + ln -s "${WORKDIR}/$(package_dir js-beautify)" "${_s}/node_modules/js-beautify" || die + ln -s "${WORKDIR}/$(package_dir node-lodash)" "${_s}/node_modules/lodash" || die + + _s="${WORKDIR}/$(package_dir promisify-node)" + mkdir "${_s}/node_modules" || die + ln -s "${WORKDIR}/$(package_dir nodegit-promise)" "${_s}/node_modules/nodegit-promise" || die + ln -s "${WORKDIR}/$(package_dir object-assign)" "${_s}/node_modules/object-assign" || die + + _s="${WORKDIR}/$(package_dir nodegit-promise)" + mkdir "${_s}/node_modules" || die + ln -s "${WORKDIR}/$(package_dir asap)" "${_s}/node_modules/asap" || die + + _s="${WORKDIR}/$(package_dir node-fs-extra)" + mkdir "${_s}/node_modules" || die + ln -s "${WORKDIR}/$(package_dir node-graceful-fs)" "${_s}/node_modules/graceful-fs" || die + ln -s "${WORKDIR}/$(package_dir node-jsonfile)" "${_s}/node_modules/jsonfile" || die + ln -s "${WORKDIR}/$(package_dir node-klaw)" "${_s}/node_modules/klaw" || die + ln -s "${WORKDIR}/$(package_dir rimraf)" "${_s}/node_modules/rimraf" || die + + eapply_user } -src_compile(){ - ./script/build --verbose --build-dir "${T}" || die "Failed to compile" - "${T}/Atom/resources/app/apm/bin/apm" rebuild || die "Failed to rebuild native module" - echo "python = $PYTHON" >> "${T}/Atom/resources/app/apm/.apmrc" +src_configure() { + local binmod _s + + _s="${WORKDIR}/$(package_dir nodegit)" + cd "${_s}" || die + node generate/scripts/generateJson.js || die + node generate/scripts/generateNativeCode.js || die + + ${EPYTHON} "${FILESDIR}/gyp-unbundle.py" \ + --inplace --unbundle "nodegit;vendor/libgit2.gyp:libgit2;git2;ssh2" "${_s}/binding.gyp" || die + + for binmod in ${BINMODS}; do + einfo "Configuring ${binmod}..." + _s="${WORKDIR}/$(package_dir ${binmod})" + cd "${_s}" || die + node-gyp --nodedir=/usr/include/electron/node/ configure || die + # Unclobber MAKEFLAGS + sed -i -e '/MAKEFLAGS=-r/d' build/Makefile || die + done } -src_install(){ - insinto "/usr/share/${PN}" - doins -r "${T}"/Atom/* - insinto "/usr/share/applications" - newins resources/linux/Atom.desktop atom.desktop - insinto "/usr/share/pixmaps" - newins resources/app-icons/stable/png/128.png atom.png - insinto "/usr/share/licenses/${PN}" - doins LICENSE.md - # Fixes permissions - fperms +x "/usr/share/${PN}/${PN}" - fperms +x "/usr/share/${PN}/libgcrypt.so.11" - fperms +x "/usr/share/${PN}/resources/app/atom.sh" - fperms +x "/usr/share/${PN}/resources/app/apm/bin/apm" - fperms +x "/usr/share/${PN}/resources/app/apm/bin/node" - fperms +x "/usr/share/${PN}/resources/app/apm/node_modules/npm/bin/node-gyp-bin/node-gyp" - # Symlinking to /usr/bin - dosym "/usr/share/${PN}/resources/app/atom.sh" /usr/bin/atom - dosym "/usr/share/${PN}/resources/app/apm/bin/apm" /usr/bin/apm +src_compile() { + local binmod _s x + + mkdir -p "${S}/build/modules/" || die + + for binmod in ${BINMODS}; do + einfo "Building ${binmod}..." + _s="${WORKDIR}/$(package_dir ${binmod})" + cd "${_s}" || die + node-gyp --nodedir=/usr/include/electron/node/ --verbose build || die + x=${binmod##node-} + mkdir -p "${S}/build/modules/${x}" + cp build/Release/*.node "${S}/build/modules/${x}" + done +} + +_fix_binmods() { + local _dir="${2}" _prefix="${1}" path relpath modpath mod depth link f d + local cruft + + find "${_prefix}/${_dir}" -name '*.node' -print | while IFS= read -r path; do + f=$(basename "${path}") + d=$(dirname "${path}") + relpath=${path#${_prefix}} + relpath=${relpath##/} + relpath=${relpath#W${_dir}} + modpath=$(dirname ${relpath}) + modpath=${modpath%build/Release} + mod=$(basename ${modpath}) + + # must copy here as symlinks will cause the module loading to fail + cp "${ED}/${install_dir}/modules/${mod}/${f}" "${path}" || die + cruft=$(find "${d}" -name '*.a' -print) + if [ -n "${cruft}" ]; then + rm ${cruft} || die + fi + done +} + +src_install() { + local install_dir="$(get_install_dir)" + local suffix="$(get_install_suffix)" + local ctags_d="${ED}/${install_dir}/app.asar.unpacked/node_modules/symbols-view/vendor" + + cd "${S}" || die + + insinto "${install_dir}" + doins -r build/modules + + doins usr/share/atom/resources/app.asar + doins -r usr/share/atom/resources/app + doins -r usr/share/atom/resources/app.asar.unpacked + + _fix_binmods "${ED}/${install_dir}" "app" + _fix_binmods "${ED}/${install_dir}" "app.asar.unpacked" + + rm -r "${ED}/${install_dir}/modules" || die + + # Remove vendored ctags binary and replace with a symlink to system ctags + rm "${ctags_d}"/* || die + ln -s "/usr/bin/ctags" "${ctags_d}/ctags-linux" || die + + insinto /usr/share/applications/ + newins usr/share/applications/atom.desktop "atom${suffix}.desktop" + + insinto /usr/share/icons/ + doins -r usr/share/icons/hicolor + + exeinto "${install_dir}" + newexe usr/share/atom/resources/app/atom.sh atom + insinto /usr/share/licenses/"${PN}${suffix}" + doins usr/share/atom/resources/LICENSE.md + dosym "${install_dir}/atom" "/usr/bin/atom${suffix}" + fperms +x "${install_dir}/app/apm/bin/apm" + dosym "${install_dir}/app/apm/bin/apm" "/usr/bin/apm${suffix}" } diff --git a/app-editors/atom/files/atom-unbundle-electron.patch b/app-editors/atom/files/atom-unbundle-electron.patch new file mode 100644 index 000000000000..ba5833083dad --- /dev/null +++ b/app-editors/atom/files/atom-unbundle-electron.patch @@ -0,0 +1,45 @@ +From d8e2b7e0fabdb4604063071f7f3a4a24e49daca7 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Thu, 5 May 2016 17:23:35 -0400 +Subject: [PATCH] Unbundle electron + +--- + atom.sh | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/atom.sh b/atom.sh +index b68716b..d89587f 100755 +--- a/atom.sh ++++ b/atom.sh +@@ -87,11 +87,9 @@ elif [ $OS == 'Linux' ]; then + SCRIPT=$(readlink -f "$0") + USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..) + +- if [ -n "$BETA_VERSION" ]; then +- ATOM_PATH="$USR_DIRECTORY/share/atom-beta/atom" +- else +- ATOM_PATH="$USR_DIRECTORY/share/atom/atom" +- fi ++ export NPM_CONFIG_NODEDIR="/usr/include/electron/node/" ++ export ATOM_RESOURCE_PATH="{{ATOM_RESOURCE_PATH}}" ++ ATOM_PATH="{{ATOM_PATH}}" + + ATOM_HOME="${ATOM_HOME:-$HOME/.atom}" + mkdir -p "$ATOM_HOME" +@@ -101,11 +99,11 @@ elif [ $OS == 'Linux' ]; then + [ -x "$ATOM_PATH" ] || ATOM_PATH="$TMPDIR/atom-build/Atom/atom" + + if [ $EXPECT_OUTPUT ]; then +- "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" ++ "$ATOM_PATH" --app="$ATOM_RESOURCE_PATH" --executed-from="$(pwd)" --pid=$$ "$@" + exit $? + else + ( +- nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1 ++ nohup "$ATOM_PATH" --app="$ATOM_RESOURCE_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1 + if [ $? -ne 0 ]; then + cat "$ATOM_HOME/nohup.out" + exit $? +-- +2.7.3 + diff --git a/app-editors/atom/files/gyp-unbundle.py b/app-editors/atom/files/gyp-unbundle.py new file mode 100644 index 000000000000..381de792edc9 --- /dev/null +++ b/app-editors/atom/files/gyp-unbundle.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python + +from __future__ import print_function + + +import argparse +import sys + + +def die(msg): + print(msg, file=sys.stderr) + sys.exit(1) + + +def do_unbundle(gypdata, targets): + gyptargets = {t['target_name']: t for t in gypdata['targets']} + dropped_deps = set() + + def _unbundle_in_block(gypblock): + gypdeps = gypblock.get('dependencies') or {} + + for dep, libs in unbundlings.items(): + if dep not in gypdeps: + continue + + gypdeps.remove(dep) + + try: + ls = gyptarget['link_settings'] + except KeyError: + ls = gyptarget['link_settings'] = {} + + try: + gyplibs = ls['libraries'] + except KeyError: + gyplibs = ls['libraries'] = [] + + gyplibs.extend('-l{}'.format(lib) for lib in libs) + + dropped_deps.add(dep) + + gypconds = gypblock.get('conditions') or [] + for cond in gypconds: + condblocks = cond[1:] + for condblock in condblocks: + _unbundle_in_block(condblock) + + for target, unbundlings in targets.items(): + if target not in gyptargets: + die('There is no {} target in gyp file'.format(target)) + + gyptarget = gyptargets[target] + + _unbundle_in_block(gyptarget) + + for gyptarget in gypdata['targets']: + if gyptarget['target_name'] in dropped_deps: + if gyptarget.get('dependencies'): + dropped_deps.update(gyptarget.get('dependencies')) + + new_targets = [] + for gyptarget in gypdata['targets']: + if gyptarget['target_name'] not in dropped_deps: + new_targets.append(gyptarget) + + gypdata['targets'] = new_targets + + gypconds = gypdata.get('conditions') + if gypconds: + for cond in gypconds: + condblocks = cond[1:] + for condblock in condblocks: + new_targets = [] + blocktargets = condblock.get('targets') + if blocktargets: + for blocktarget in blocktargets: + if blocktarget['target_name'] not in dropped_deps: + new_targets.append(blocktarget) + condblock['targets'] = new_targets + + +def main(): + parser = argparse.ArgumentParser(description='Unbundle libs in gyp files') + parser.add_argument('gypfile', type=str, help='input gyp file') + parser.add_argument( + '--unbundle', type=str, action='append', + help='unbundle rule in the format <target>;<dep>;<lib>[;lib]') + parser.add_argument( + '-i', '--inplace', action='store_true', + help='modify gyp file in-place') + + args = parser.parse_args() + + targets = {} + + for unbundle in args.unbundle: + rule = unbundle.split(';') + if len(rule) < 3: + die('Invalid unbundle rule: {!r}'.format(unbundle)) + target, dep = rule[:2] + libs = rule[2:] + + try: + target_unbundlings = targets[target] + except KeyError: + target_unbundlings = targets[target] = {} + + target_unbundlings[dep] = libs + + with open(args.gypfile, 'rt') as f: + gypdata = eval(f.read()) + + do_unbundle(gypdata, targets) + + if args.inplace: + with open(args.gypfile, 'wt') as f: + f.write(repr(gypdata) + "\n") + else: + print(repr(gypdata)) + + +if __name__ == '__main__': + main() diff --git a/app-editors/atom/metadata.xml b/app-editors/atom/metadata.xml index 8f407653791e..1fac832ec512 100644 --- a/app-editors/atom/metadata.xml +++ b/app-editors/atom/metadata.xml @@ -4,4 +4,12 @@ <maintainer type="person"> <email>cynede@gentoo.org</email> </maintainer> + <maintainer type="person"> + <email>elvis@magic.io</email> + <name>Elvis Pranskevichus</name> + </maintainer> + <maintainer type="project"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> </pkgmetadata> |