ptrcports/electron/APKBUILD
2022-06-12 03:32:12 +02:00

380 lines
14 KiB
Text

# Maintainer: psykose <alice@ayaya.dev>
pkgname=electron
pkgver=19.0.4
pkgrel=0
_gitrev=def1ec7f991df8e47f00c6fcbe68ece68d09107a
_chromium=102.0.5005.115
_depot_tools=9b9f451addeb3ad230e9385d5e2c20cd1632c491
pkgdesc="Electron"
url="https://github.com/electron/electron"
arch="" # no auto build
[ "$MAGIC" = "1" ] && arch="x86_64"
license="MIT"
depends="gtk+3.0 so:libudev.so.1 xdg-utils"
makedepends="
alsa-lib-dev
bash
bsd-compat-headers
bzip2-dev
c-ares-dev
cairo-dev
clang-dev
clang-extra-tools
cups-dev
curl-dev
dbus-glib-dev
eudev-dev
ffmpeg-dev
findutils
flac-dev
flex
freetype-dev
gperf
gtk+3.0-dev
gn
gzip
harfbuzz-dev
hunspell-dev
http-parser-dev
hwids-usb
java-jdk
jpeg-dev
jsoncpp-dev
krb5-dev
lcms2-dev
libarchive-tools
libbsd-dev
libcap-dev
libevent-dev
libexif-dev
libgcrypt-dev
libgnome-keyring-dev
libjpeg-turbo-dev
libnotify-dev
libpng-dev
libusb-dev
libva-dev
libwebp-dev
libxcomposite-dev
libxcursor-dev
libxinerama-dev
libxml2-dev
libxrandr-dev
libxscrnsaver-dev
libxslt-dev
linux-headers
lld
mesa-dev
nghttp2-dev
ninja
nodejs
nss-dev
opus-dev
pciutils-dev
perl
pipewire-dev
pulseaudio-dev
py3-httplib2
py3-parsing
py3-six
python3
pythonispython3
re2-dev
snappy-dev
speex-dev
sqlite-dev
xcb-proto
yarn
zlib-dev
"
source="chromium-102-fenced_frame_utils-include.patch.chromium
chromium-102-regex_pattern-array.patch.chromium
chromium-VirtualCursor-standard-layout.patch.chromium
chromium-revert-drop-of-system-java.patch.chromium
chromium-use-alpine-target.patch.chromium
credentials-header.patch.chromium
default-pthread-stacksize.patch.chromium
elf-arm.patch.chromium
fix-missing-cstdint-include-musl.patch.chromium
fix-narrowing-cast.patch.chromium
fix-unittests-sandbox.patch.chromium
gdbinit.patch.chromium
iwyu-add-utility-for-std-exchange.patch.chromium
libxml-unbundle.patch.chromium
media-base.patch.chromium
memory-tagging-arm64.patch.chromium
musl-crashpad.patch.chromium
musl-fixes.patch.chromium
musl-hacks.patch.chromium
musl-libc++.patch.chromium
musl-sandbox.patch.chromium
musl-stat.patch.chromium
musl-tid-caching.patch.chromium
musl-v8-monotonic-pthread-cont_timedwait.patch.chromium
nasm.patch.chromium
no-execinfo.patch.chromium
no-getcontext.patch.chromium
no-mallinfo.patch.chromium
quiche-arena-size.patch.chromium
remove-no-opaque-pointers-flag.patch.chromium
remove-strip_binary.patch.chromium
resolver.patch.chromium
revert-use-ffile-compilation-dir.patch.chromium
roll-src-third_party-ffmpeg.patch.chromium
scoped-file.patch.chromium
system-node.patch.electron
python-jinja-3.10.patch.electron
vector-const.patch.electron
"
builddir="$srcdir"
options="!check suid"
prepare() {
git clone --branch=${_chromium} --depth=1 \
https://chromium.googlesource.com/chromium/src.git
git clone https://github.com/electron/electron.git
(
git clone --depth 1 -b main https://chromium.googlesource.com/chromium/tools/depot_tools.git
cd depot_tools
git fetch --depth 1 origin $_depot_tools
git checkout $_depot_tools
)
export PATH="$PATH:$srcdir/depot_tools"
echo "solutions = [
{
\"name\": \"src/electron\",
\"url\": \"file://$srcdir/electron@$_gitrev\",
\"deps_file\": \"DEPS\",
\"managed\": False,
\"custom_deps\": {
\"src\": None,
},
\"custom_vars\": {},
},
]" > .gclient
python3 depot_tools/gclient.py sync \
--with_branch_heads \
--with_tags \
--nohooks
python3 src/build/landmines.py
python3 src/build/util/lastchange.py -o src/build/util/LASTCHANGE
python3 src/build/util/lastchange.py -m GPU_LISTS_VERSION \
--revision-id-only --header src/gpu/config/gpu_lists_version.h
python3 src/build/util/lastchange.py -m SKIA_COMMIT_HASH \
-s src/third_party/skia --header src/skia/ext/skia_commit_hash.h
ln -sfv /usr/bin/clang-format src/buildtools/linux64/clang-format
mkdir -p src/third_party/node/linux/node-linux-x64/bin
ln -sfv /usr/bin/node src/third_party/node/linux/node-linux-x64/bin/node
python3 src/third_party/depot_tools/download_from_google_storage.py \
--no_resume --extract --no_auth --bucket chromium-nodejs \
-s src/third_party/node/node_modules.tar.gz.sha1
python3 src/tools/download_optimization_profile.py \
--newest_state=src/chrome/android/profiles/newest.txt \
--local_state=src/chrome/android/profiles/local.txt \
--output_name=src/chrome/android/profiles/afdo.prof \
--gs_url_base=chromeos-prebuilt/afdo-job/llvm
python3 src/electron/script/apply_all_patches.py \
src/electron/patches/config.json
ln -sfv /usr/bin/java src/third_party/jdk/current/bin/java
(
cd src/electron
yarn install --frozen-lockfile
)
(
cd src/third_party/node
npm ci
)
(
# chromium
cd src
for patch in "$srcdir"/*.patch.chromium; do
patch -Np1 < "$patch"
done
for patch in "$srcdir"/*.patch.electron; do
patch -Np1 < "$patch"
done
local use_system="
ffmpeg
flac
fontconfig
freetype
harfbuzz-ng
libdrm
libevent
libjpeg
libpng
libwebp
libxml
libxslt
opus
re2
snappy
"
for _lib in $use_system libjpeg_turbo; do
msg "Removing buildscripts for system provided $_lib"
find . -type f -path "*third_party/$_lib/*" \
\! -path "*third_party/$_lib/chromium/*" \
\! -path "*third_party/$_lib/google/*" \
\! -path './third_party/libxml/*' \
\! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \
\! -path './third_party/harfbuzz-ng/utils/hb_scoped.h' \
\! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
-delete
done
# https://groups.google.com/a/chromium.org/d/topic/chromium-packagers/9JX1N2nf4PU/discussion
touch chrome/test/data/webui/i18n_process_css_test.html
# Use the file at run time instead of effectively compiling it in
sed 's|//third_party/usb_ids/usb.ids|/usr/share/hwdata/usb.ids|g' \
-i services/device/public/cpp/usb/BUILD.gn
python3 build/linux/unbundle/replace_gn_files.py --system-libraries \
$use_system
python3 third_party/libaddressinput/chromium/tools/update-strings.py
# prevent annoying errors when regenerating gni
sed -i 's,^update_readme$,#update_readme,' \
third_party/libvpx/generate_gni.sh
# allow system dependencies in "official builds"
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
tools/generate_shim_headers/generate_shim_headers.py
)
}
_gn_flags() {
echo "$@"
}
build() {
cd src
export CHROMIUM_BUILDTOOLS_PATH="$srcdir/src/buildtools"
export CC=clang
export CXX=clang++
export AR=ar
export NM=nm
export LD=clang
export CFLAGS="$CFLAGS -Wno-unknown-warning-option"
export CXXFLAGS="$CXXFLAGS -Wno-unknown-warning-option"
_gn_args=$(_gn_flags \
import\(\"//electron/build/args/release.gn\"\) \
custom_toolchain=\"//build/toolchain/linux/unbundle:default\" \
host_toolchain=\"//build/toolchain/linux/unbundle:default\" \
blink_symbol_level=0 \
build_with_tflite_lib=false \
chrome_pgo_phase=0 \
clang_use_chrome_plugins=false \
disable_fieldtrial_testing_config=true \
enable_hangout_services_extension=true \
enable_nacl=false \
enable_precompiled_headers=false \
enable_vr=false \
fatal_linker_warnings=false \
ffmpeg_branding=\"Chrome\" \
icu_use_data_file=true \
is_cfi=false \
is_clang=true \
is_component_build=false \
is_debug=false \
is_official_build=true \
link_pulseaudio=true \
proprietary_codecs=true \
rtc_use_pipewire=true \
symbol_level=0 \
treat_warnings_as_errors=false \
use_allocator=\"none\" \
use_allocator_shim=false \
use_cfi_icall=false \
use_cups=true \
use_custom_libcxx=false \
use_gnome_keyring=false \
use_gold=false \
use_lld=true \
use_pulseaudio=true \
use_sysroot=false \
use_system_freetype=true \
use_system_harfbuzz=true \
use_system_lcms2=true \
use_system_libdrm=true \
use_system_libjpeg=true \
use_system_libpng=true \
use_system_zlib=true \
use_thin_lto=false \
usr_vaapi=true \
)
gn gen out/Release --args="$_gn_args"
ninja -C out/Release electron
strip -s out/Release/electron
ninja -C out/Release electron_dist_zip
}
package() {
mkdir -p "$pkgdir"/usr/lib/electron "$pkgdir"/usr/bin
bsdtar -xf src/out/Release/dist.zip -C "$pkgdir"/usr/lib/electron
chmod u+s "$pkgdir"/usr/lib/electron/chrome-sandbox
ln -sfv /usr/lib/electron/electron "$pkgdir"/usr/bin/electron
}
sha512sums="
459910ac11dfd2953240a72836aac55c33d914906194897b38328f482173a101930cad1656906df0bc1c903d41199eee8089f474f5d8b056cfb12c8f2b0acffb chromium-102-fenced_frame_utils-include.patch.chromium
a6f066e0cbb4e0644733b48013f150647b3c431dc5ebcbff611b3214c86739726208874f67cb339140045e7934e7636f7514bd7aec603545d47c7ab6ca205be4 chromium-102-regex_pattern-array.patch.chromium
0fc131ef4ad32964815744080f40cc2566c70da1cd4ddaf1da8456d1c86e67e3ebf38f43208d17d40b646744e8e662f5b314e236a1c90bc6f8b936313e42a3cf chromium-VirtualCursor-standard-layout.patch.chromium
c4654d5b23c6f5d9502507e534fe1951d6749c62251e49b6adfe10d1569431e7f7a5a6fa5ff09ec30984415ced27a5e20985df8c91295de34af3c84557fa5b91 chromium-revert-drop-of-system-java.patch.chromium
ded02360a36283973b9abb4150de3d964749a58017fbbd9f09fb6cb29ec97a8ac99ccadd953633bbb7eb9ec77a078f4df9de5f624d1580f33446ceba5fd3a3f6 chromium-use-alpine-target.patch.chromium
274858323d040ac8c51bac90b6ef91bb075d7b8d92d73952ed700c10a8bae2c2115fb2a9cc6912de79be226c141d7106839fc3486e22c0206e75cb6d8ff65ee6 credentials-header.patch.chromium
22da17c649ae9845d6a174187f2b666245a10db8a997169fc214c430fbba10143cfb57f8f6ece5acf856cd9ea09f293a1aca90cdf3e64fd9423b78beac53f517 default-pthread-stacksize.patch.chromium
9b1441fe42421ef9ead86a5143bf997d989bd53a8969cdfdf4e0c45f847efc8c1d127e15fb05e2ef5dbefbb228cbdc2849404d74997ca56265599e12e5efd6e4 elf-arm.patch.chromium
8bebf4a9d5225c6e47edc5b07c4b97be24a45cc221f49632836915ceeb4ecb69b7f79a31ea7f82171cde3443f45fec541f409892542cf1014e81aa6acd01566d fix-missing-cstdint-include-musl.patch.chromium
e60f381c557a15598d71e33b7aacc63be4a8e17b16cdd95047df5e5e9577ad925864ffd64597d5dbc9a4516de13b3f17c26099b36692165df8c66b1b4d399ce9 fix-narrowing-cast.patch.chromium
54f07ee9d85577e284e04460e79132fa6769251ceb045561cea811dde0369e9e4cdbcf26566235b0d12c649be4d46fea294f7c6a4e2a75109dc3282e6e7d7993 fix-unittests-sandbox.patch.chromium
82f2bd4aa613e792d3af6e7a8632e0920cf48504a7572fb97d5480ea182fa125fe526e7df1ce4311b5d139a3f78da0f0b54605fbd09d7cd43135906a7639e47f gdbinit.patch.chromium
4d268992ddb341e70f4e730c82c676c0c95b3958bc9553bbe83383cebde7373c79a8e9aeef47c7af2add8353263b02ccfd7e5bd864f544a584361a02d30374ec iwyu-add-utility-for-std-exchange.patch.chromium
17b54042c58cd448c7e26dca1504bb48d85fdd7c2385930e639c283493a5e430923041f01cde5a5dfaa32fbb7f0a645baca55b202d56d3f245fb4febdf026da2 libxml-unbundle.patch.chromium
599f5ef338b5797e04436bdc88921c31365d2dea2613d40053be6e774f654e2889efb0c0bd55c2c5044a6805510fbc337da555971169a75d584fac93e18256ac media-base.patch.chromium
63e5b25c49af484964b3ac723da1c2f348812572a2e24ad412d2fb9eb7eec9ddc0e76568e76d1f352cdc562bc5003c93e04ee519a82e8568f48484d1682e237f memory-tagging-arm64.patch.chromium
2e5a83826239849d096aead033eb519338b84e6fbbf58abfcd7cfe40d0b3070b66bcc825ec84406484d73d1a333f1b9d23a8ab44987ab5c8b187076c84cd668b musl-crashpad.patch.chromium
9fbfeb1f52e48658f46e55db29de02b554f24ae79f46bbd89bbf05c20f538c9bb3c8624a6e27907d13d6717e5f55a332b13577d8672539662c90c9a10109b94a musl-fixes.patch.chromium
20b6931937ae792ddf4e1be7f0cbf0f0931b0afce9f6528b7ae5edb1bb2db070438caa8edc94e915e1e5ab1a191789129877d0353fe8976f537df3775dd3ab5d musl-hacks.patch.chromium
a361989c7ff4a285ed36c499e4fe1e97ed8d904a9b92f8d3c01b056b469490b7d215b6edb803ba3b0955633f58f3682d4fb60cc710cba68153a6b23df3ba7ba9 musl-libc++.patch.chromium
ef43fa90b05e2407b6daa822193121cdeef6ee9068175572f0928f156f186be9c77539dfa06863adfaa25afd498ec1b5081f9e476543616f9472b9033fd921dc musl-sandbox.patch.chromium
0c0d3ed0a8f2bcecb2bf4eb56130fcd71031bb63744fb56e1b5a6b9dfbe16680607ff592e24602fe045b819509a70556e240b6fe0e876710977d60185f682df4 musl-stat.patch.chromium
a018cf58b9e34f73d588961f2f9a36de67267060fb2e77ebc562974c6c92a59009161e374cf9bbdc35e8bf1a7e90f0b90117a0d494dcd2e2bb2f5e6534925d0b musl-tid-caching.patch.chromium
556cc2ba28184a75745f13c673605327f5be590be179eb3f941dc0abded854a814e5da1432a28fb8d4dcdcd66ffd4c94ee1a8824d2cd93b632f48e9310dbc3fa musl-v8-monotonic-pthread-cont_timedwait.patch.chromium
7957aae04e8ef3badbc98c982ba1acb1b9ef5e665440116c704512f11554d7b64ba3643b7ff7d00476a6686324033b0cf762deb78ce798619226380953b9dc9c nasm.patch.chromium
7aa351e79c29de63972f1f16fbab0465b2569bc0a22174780988e0cdfe4fcaff3c664dd277937bb33f2b77f108d20afa8720c427524b09d26074f9cf6807e147 no-execinfo.patch.chromium
e8675aff9fccd8b58cc839ef1d9e0e022d66aa94f72baa72e7acf92ceb2691f6a7907cc60ec3a87f894efdd639a3dec7fe702c97d446fcdea99452caec57e002 no-getcontext.patch.chromium
c741fafab758a675f7007a450df7d9acfe05149f4ce6dd4cf82dc6e97ddcd6b5b4a6b8e09820c2ad3ea62487f30b34d848739908e95ca8a31ca5baeb7cb9d0d7 no-mallinfo.patch.chromium
c7fc8a1a079224b9ed6a1f8331cef901833bec04f337fa122381e0a65a1acdd529368f6653dc6d03475381659e07e6e31dd2ec0530257606480f06d15faf3aaf quiche-arena-size.patch.chromium
c8e892e36e7292cd6db36017fff994a0fbc00dd83ea9010422c21cd56da89c9eddd1712e4ff4b3fec354fa595ce3cc403b96fc13525e74fe6538461d5c2d9b50 remove-no-opaque-pointers-flag.patch.chromium
91dafba2138175b6618ec4c96c7ea39f3a26f6a09b69adabad4f9355dd84d436f3de3274b31465d5f46deeb452fde64e4cfbbda0bb4ed7e9a25d953e1b73e5d2 remove-strip_binary.patch.chromium
cd7719c30518aeb659e9b7dc126241f897afe1a231e601271b63ba170e811a93b514c4d2a77680cdf0c846f81fa6db766ac619aa200efb32cbdfff6732a63893 resolver.patch.chromium
2fdd0b2fd403dd4440533288f7e08bb8480702c42c7571ea764aac18ba5eaf72494793c77e4244991d12f45e5acfceae0772995b11d323916c07cb53c43a2f59 revert-use-ffile-compilation-dir.patch.chromium
128ec0fd14349e065c8bb0910d53cbea7423182a06e06f7b7765f3cba1e5ba5e7a8bccbcdab079335b5235abb7bf0d46dee21ecc8c221be7e1c5c6d9795f958e roll-src-third_party-ffmpeg.patch.chromium
8d11b2ba811fdd6280784bfafcef073238324941b4c33e7c9a5ccfde8506242d06e5136d697f047bab3838b43a666f1da404af7b4f4ff9a0c6bf6bdb8448e5b2 scoped-file.patch.chromium
26a8e4040e69f335a7104f42d012b9d933a40985b33a7be02add27a801c097c5a2be4c6e69faf9175ce8945210ae4c5592ecad2123ccff2beee5473194a765e3 system-node.patch.electron
e05180199ee1d559e4e577cedd3e589844ecf40d98a86321bf1bea5607b02eeb5feb486deddae40e1005b644550331f6b8500177aa7e79bcb3750d3c1ceb76c3 python-jinja-3.10.patch.electron
89a5d6ff62071247595d22a9512ef32d53ac35ab60ae7e64c198fd3dffecaaeb35134d42edb53540d9000a62007821fe8e9bb3e5602b116b1fc28eefd3fe851b vector-const.patch.electron
"