diff options
author | Antonio Rojas | 2020-04-13 11:08:36 +0000 |
---|---|---|
committer | Antonio Rojas | 2020-04-13 11:08:36 +0000 |
commit | b2e2e1d75c23f488f4683912196391102306749b (patch) | |
tree | 100ba7a825baad5b11c864a96c54c24049e14e3d /PKGBUILD | |
download | aur-b2e2e1d75c23f488f4683912196391102306749b.tar.gz |
Dropped from repos
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 277 |
1 files changed, 277 insertions, 0 deletions
diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..efe588add87a --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,277 @@ +# Maintainer: Bruno Pagani <archange@archlinux.org> +# Contributor: Nicola Squartini <tensor5@gmail.com> + +_chromiumver=61.0.3163.100 +pkgname=electron2 +pkgver=2.0.18 +pkgrel=4 +pkgdesc='Build cross platform desktop apps with web technologies' +arch=('x86_64') +url='https://electronjs.org/' +license=('MIT' 'custom') +depends=('c-ares' 'ffmpeg' 'gtk3' 'http-parser' 'libevent' 'libxslt' + 'libxss' 'minizip' 'nss' 're2' 'snappy') +makedepends=('clang' 'git' 'gperf' 'harfbuzz-icu' 'jsoncpp' 'libnotify' 'lld' + 'llvm' 'ninja' 'npm' 'pciutils' 'python2' 'wget' 'yasm') +optdepends=('gvfs: file deletion support (gvfs-trash)' + 'kde-cli-tools: file deletion support (kioclient5)' + 'trash-cli: file deletion support (trash-put)' + "xdg-utils: open URLs with desktop's default (xdg-email, xdg-open)") +source=("git+https://github.com/electron/electron.git#tag=v${pkgver}" + 'git+https://github.com/boto/boto.git' + 'breakpad::git+https://github.com/electron/chromium-breakpad.git' + 'git+https://chromium.googlesource.com/chromium/src/tools/grit.git' + 'electron-gyp::git+https://github.com/electron/gyp.git' + "git+https://github.com/electron/libchromiumcontent.git" + 'native_mate::git+https://github.com/electron/native-mate.git' + 'git+https://github.com/electron/node.git' + 'pdf_viewer::git+https://github.com/electron/pdf-viewer.git' + 'git+https://github.com/kennethreitz/requests.git' + 'google-breakpad::git+https://chromium.googlesource.com/breakpad/breakpad/src' + "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${_chromiumver}.tar.xz" + 'electron2.desktop' + 'default_app-icon.patch' + 'dont-bootstrap-libchromiumcontent.patch' + 'dont-update-submodules.patch' + 'dont-use-sysroot.patch' + 'no-whole-archive.patch' + 'use-system-libraries-in-node.patch' + 'use-system-ffmpeg.patch' + 'breakpad-glibc2.26.patch' + 'breakpad-glibc2.30.patch' + 'gyp-no-rpath.patch' + 'libchromiumcontent-fix-v8-patches.patch' + 'libchromiumcontent-settings.patch' + 'libchromiumcontent-sort-filenames.patch' + 'libchromiumcontent-static-library-only.patch' + 'libchromiumcontent-use-system-tools.patch' + 'chromium-atk-r1.patch' + 'chromium-gn-bootstrap-r14.patch' + 'chromium-include-functional.patch' + 'chromium-use-system-ffmpeg.patch' + 'chromium-use-system-minizip.patch' + 'chromium-use-system-re2.patch' + 'chromium-SIOCGSTAMP.patch' + ) +noextract=("chromium-${_chromiumver}.tar.xz") +sha512sums=('SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + '4dfd3a493ceb7c605eeab6f387541273d529e8b935a6104927e34836469aedcfcbb4a1154591585621d5c2e842e68701d32328acba842f840a20498822165f78' + '59d8f3cef8f38d2d212c509ced0dbd5a09a6821e8167761ebf826fe8866f2f228ac83bca76b022fd48cb853bde43eabced4065247ae444b8128fab4bd3e7c4ff' + '6189c850c8dc07c4e517d5b1e3b4771703e1b3d267ef7edc0cf57aa154f4d865a87255a4d28a554db9e8068113ccf851664cb7be04c8d07684e50bacb1021725' + 'b002bb96d38875876d09ad5ceb76843b306031c470ba24aace6cbc5b8a22774f44b5c0e4a99bf807737e25f57254d14865934694114a9f4551453cc6c560063a' + '22d2d3605a49a72cf7e12e4f1cdadb6e327a7487eed47eeb04a4213cf6dcc73c47d93cdea85a767a11181debc37e952f5e4685f9fae1debd4a1a1a10ac188e8c' + '1bda751a86a1c07f87e6631469701ebab5b1ce8f4052fcf666e8fc3bc645199a4df47fe7e75aed092ff23e17c2b9c4f286a60c2428fd72d0e6cae7a5d0507de4' + 'e5a21eea33f24e82b250ad903ae9f6f40a71876661391b7bb2b749edb3470e1256ecb06aba0541f4da4cbaf9be2df90eb2b9e588566138fdb63d92a9aca60936' + 'baf921c2970e09cbc98781bdad9625c6926eaeb197cca5588cb3444db4422d18949a611f8d66452c4acff1c5f2cb0ba67cac3f85214a97c91c232778e1e9dce2' + '89966d7b6eba2a588898cb69a2397ff87ad8936dc1e99e82668b312b6423794e3d6c41ee9defa8773e8fa947c6e873bc23928c719d908687eb28f78df54d6a2a' + '2dd594a07f8ce62a7706a0365d764ab3ee3cc2d050d6ae4460db3152269e84f43516438a4f48f47fc54fe758a70c462baed6b7defa8b2bd277e67cb1bae8da12' + '8d9a06f10ecc3a4a54fce8d4ca4d9fce338705c3f43bf4e393377e0cb21710711f8fd0a1e211b01942776fc7117e9d8ecf51609b61d77f42579513dca2c84454' + 'd77a2045f03c1327eb78517028c083e8965297a41d5a81df8c7dac5a8500aa242faa644a38be5d12914b68ba3a0b944c1bfe6dbfd7b88b1a0aeeec1d87a1619a' + '79baa5d144733442cd839d7ee195b11b4e8ee19cd77e37c8ca1def18e2ffa30b8e63b8e4e2688944d55cbea048107f0cf209547ea14c49b4585c936249016c43' + 'f7b354b1672760c85b278a900e8398c54c31663148091a59ca63bfcb9739a0071991111c6ce790fcfc072aff30fe8c52309c55cc39ede1f44ba503d712e4fc3d' + '8da75b16f3fc39e828b94fe9bf013a2fd180a81a9a34a8511a99e62e8d2a714ced24d94ef643561e0c88c27868d8eaa643e19003cbfa293451fc15dd75f5801f' + 'efeb0358488a7402d380a4cab736efd4c626171659f1fd627b48b3f44a873d6ef149f8b00a03f6eae4a775d3fe77887e7e8b9ff2753f60d16a94e4f342687384' + '45c9bcc588d8fc5dd5c5fde17ef5114f0c9717c965a7c3009bfa6e79ba6a3fc9a19eab3451b72e5de75535d62391a3e2660f0aab329d7ec137605593915f4010' + '5722c571ffc384e0e226342d170e29109bf45761dcd7202b2fe6572795e0a04bd0521b1120eb2247c2a84bed0e63f47a71d25802528992ee4f976b348fb5c8f6' + 'd297728681538fd6d6d48da4477e6e42b0ac1585a243dca60c0d9896387a1bf17770aa70966344c8d3551b774cbea6d6acbeaa0dbbfc3c17367dda5daa912297' + '2906e565804cb42ef3370521683d01e4cb083f0c7d5b02692101afb56616838b3dda8d05d43d0942ea3b7b7528985a1470719574356d37416427b56409c52a7f' + 'd549c33d3499737f7d4dd2f87b8f08e90687d107248d9729676b7a0ea8562df3dd0430aa6776e4cb6ca793c2d93a726ce7b8da22703eef3f91aeb42b7e852240' + 'eace29bd99f7167ac2e5b7499560ec7e6c205eeee8fd0adef8cc7de3cef5058f9852dd2cc20946d637ed479d25b270c35d52de6f104f41000faa36dc018f63aa' + '5552e8918462f6c3a4e1baef3c22b57d70c732766945ea0b39f63df7d7b8fca9646f1f9b28b0528fa586799842c949298fc97e1041875da0ca1aacff046f6c9b' + '764f9d564863098b20fb59c3eac2cf37a5ec725e4113ef7c1b81f91242c1c3ea994afead7fc9b70dbcdaff3d108068167e7b4dc4515de25dc5c18005da8ec55e') + +_system_libs=('ffmpeg' + 'flac' + 'harfbuzz-ng' +# 'icu' + 'libevent' + 'libjpeg' +# 'libpng' +# 'libvpx' # Not compatible with libvpx 1.8.0 + 'libwebp' + 'libxml' + 'libxslt' + 're2' + 'snappy' + 'yasm' + 'zlib' + ) + +prepare() { + ln -s electron-gyp gyp + + cd "${srcdir}"/electron + + patch -Np1 -i "${srcdir}"/default_app-icon.patch # Icon from .desktop file + patch -Np1 -i "${srcdir}"/use-system-libraries-in-node.patch + patch -Np1 -i "${srcdir}"/use-system-ffmpeg.patch + patch -Np1 -i "${srcdir}"/dont-update-submodules.patch + patch -Np1 -i "${srcdir}"/dont-use-sysroot.patch + patch -Np1 -i "${srcdir}"/dont-bootstrap-libchromiumcontent.patch + patch -Np1 -i "${srcdir}"/no-whole-archive.patch + + # Add extra libraries for unbundling, remove unneeded libraries + sed -e "s/'-lexpat',/'-lexpat', '<\!@(pkg-config --libs-only-l libavcodec libavformat libavutil libevent flac harfbuzz-icu jsoncpp minizip libpulse vpx libwebpdemux libwebpmux libxml-2.0 libxslt zlib)', '-ljpeg', '-lre2', '-lsnappy', '-latomic',/" \ + -e 's/ gconf-2.0//' \ + -i brightray/brightray.gyp + + mkdir -p "${srcdir}"/python2-path + ln -sf /usr/bin/python2 "${srcdir}/python2-path/python" + + for m in boto breakpad gyp libchromiumcontent native_mate node pdf_viewer requests; do + git submodule init vendor/${m} + git config submodule.vendor/${m}.url "${srcdir}/${m}" + done + git submodule update + + cd "${srcdir}"/electron/vendor/pdf_viewer + git submodule init vendor/grit + git config submodule.vendor/grit.url "${srcdir}/grit" + git submodule update + + cd "${srcdir}"/electron/vendor/breakpad + git submodule init src + git config submodule.src.url "${srcdir}"/google-breakpad + git submodule update + patch -Np1 -i "${srcdir}"/breakpad-glibc2.26.patch + patch -Np1 -i "${srcdir}"/breakpad-glibc2.30.patch + + cd "${srcdir}"/electron/vendor/gyp + # Remove a useless $ORIGIN/lib/ rpath from the electron binary + patch -Np1 -i "${srcdir}"/gyp-no-rpath.patch + + cd "${srcdir}"/electron/vendor/libchromiumcontent + patch -Np1 -i "${srcdir}"/libchromiumcontent-fix-v8-patches.patch + patch -Np1 -i "${srcdir}"/libchromiumcontent-settings.patch + patch -Np1 -i "${srcdir}"/libchromiumcontent-sort-filenames.patch # deterministic build + patch -Np1 -i "${srcdir}"/libchromiumcontent-use-system-tools.patch + patch -Np1 -i "${srcdir}"/libchromiumcontent-static-library-only.patch + rm patches/third_party/ffmpeg/001-build_gn.patch # Use system ffmpeg + echo 'Extracting chromium source...' + tar -xJf "${srcdir}"/chromium-${_chromiumver}.tar.xz + mv chromium-${_chromiumver} src + cd src + patch -Np1 -i "${srcdir}"/chromium-atk-r1.patch + patch -Np1 -i "${srcdir}"/chromium-gn-bootstrap-r14.patch + patch -Np1 -i "${srcdir}"/chromium-include-functional.patch + patch -Np1 -i "${srcdir}"/chromium-use-system-ffmpeg.patch + patch -Np1 -i "${srcdir}"/chromium-use-system-minizip.patch + patch -Np1 -i "${srcdir}"/chromium-use-system-re2.patch + patch -Np1 -i "${srcdir}"/chromium-SIOCGSTAMP.patch + + for lib in "${_system_libs[@]}" libjpeg_turbo; do + find -type f -path "*third_party/${lib}/*" \ + \! -path "*third_party/${lib}/chromium/*" \ + \! -path "*third_party/${lib}/google/*" \ + \! -path "*base/third_party/icu/*" \ + \! -path "*base/third_party/libevent/*" \ + \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ + -delete + done + python2 build/linux/unbundle/replace_gn_files.py --system-libraries "${_system_libs[@]}" + + # Create sysmlink to system Node.js + mkdir -p third_party/node/linux/node-linux-x64/bin + ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin +} + +build() { + export PATH="${srcdir}/python2-path:${PATH}" + + # Build GN + cd "${srcdir}/electron/vendor/libchromiumcontent/src" + gn_flags=( + 'clang_base_path="/usr"' + 'clang_use_chrome_plugins=false' + 'treat_warnings_as_errors=false' + 'use_custom_libcxx=false' + 'use_sysroot=false' + 'use_gconf=false' + 'use_gnome_keyring=false' +) + CC=clang CXX=clang++ python2 tools/gn/bootstrap/bootstrap.py --gn-gen-args "${gn_flags[*]}" + # libevent not needed anymore + find -type f -path "*base/third_party/libevent/*" \ + \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ + -delete + + cd "${srcdir}/electron/vendor/libchromiumcontent" + script/update -t x64 --skip_gclient + script/build -t x64 -c static_library native_mksnapshot + script/create-dist -c static_library -t x64 --no_zip -t x64 + + cd "${srcdir}"/electron + LDFLAGS="${LDFLAGS} -Wl,-z,noexecstack" + distdir="${srcdir}/electron/vendor/libchromiumcontent/dist/main" + script/bootstrap.py --verbose \ + --clang_dir=/usr \ + --libcc_source_path="${distdir}/src" \ + --libcc_shared_library_path="${distdir}/shared_library" \ + --libcc_static_library_path="${distdir}/static_library" + script/build.py -c Release --ninja-path=ninja +} + +package() { + cd "${srcdir}"/electron + + _cc="${srcdir}"/electron/vendor/libchromiumcontent/dist/main + + install -Dm644 LICENSE "${_cc}"/LICENSES.chromium.html \ + -t "${pkgdir}"/usr/share/licenses/electron2 + for lib in native_mate node; do + install -m644 vendor/${lib}/LICENSE \ + "${pkgdir}"/usr/share/licenses/electron2/LICENSE-${lib} + done + install -m644 vendor/libchromiumcontent/src/LICENSE \ + "${pkgdir}"/usr/share/licenses/electron2/LICENSE-chromium + + cd out/R + install -Dm644 blink_image_resources_200_percent.pak \ + content_resources_200_percent.pak content_shell.pak icudtl.dat \ + natives_blob.bin \ + pdf_viewer_resources.pak \ + snapshot_blob.bin \ + ui_resources_200_percent.pak \ + views_resources_200_percent.pak \ + -t "${pkgdir}"/usr/lib/electron2 + install -m755 electron "${pkgdir}"/usr/lib/electron2/electron + install -dm755 "${pkgdir}"/usr/bin + ln -s ../lib/electron2/electron "${pkgdir}"/usr/bin/electron2 + # namcap warning: Referenced library 'libnode.so' is an uninstalled dependency + # Fixable by moving libnode.so to /usr/lib + install -m644 libnode.so "${pkgdir}"/usr/lib/electron2 + cp -r locales resources "${pkgdir}"/usr/lib/electron2 + cd ../.. + + echo -n "v${pkgver}" > "${pkgdir}"/usr/lib/electron2/version + + # Install .desktop and icon file + install -Dm644 "${srcdir}"/electron2.desktop -t "${pkgdir}"/usr/share/applications/ + install -Dm644 default_app/icon.png \ + "${pkgdir}"/usr/share/pixmaps/electron2.png # hicolor has no 1024x1024 + + # Install Node headers + _headers_dest="${pkgdir}/usr/lib/electron2/node" + install -d -m755 "${_headers_dest}" + cd "${srcdir}"/electron/vendor/node + find src deps/http_parser deps/zlib deps/uv deps/npm \ + -name "*.gypi" \ + -exec install -D -m644 '{}' "${_headers_dest}/{}" \; \ + -or -name "*.h" \ + -exec install -D -m644 '{}' "${_headers_dest}/{}" \; + install -m644 {common,config}.gypi "${_headers_dest}" + cd "${_cc}"/src + find v8 -name "*.h" \ + -exec install -D -m644 '{}' "${_headers_dest}/deps/{}" \; + # echo '9' > "${_headers_dest}/installVersion" +} |