diff --git a/devel/electron41/Makefile b/devel/electron41/Makefile index cf79331828e3..e764238f88bb 100644 --- a/devel/electron41/Makefile +++ b/devel/electron41/Makefile @@ -1,470 +1,469 @@ PORTNAME= electron DISTVERSIONPREFIX= v DISTVERSION= ${ELECTRON_VER} -PORTREVISION= 1 PULSEMV= 16 PULSEV= ${PULSEMV}.1 CATEGORIES= devel -MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v41.2.1/:chromium \ +MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v41.5.0/:chromium \ https://freedesktop.org/software/pulseaudio/releases/:pulseaudio PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR} DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.0:chromium \ chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.1:chromium \ chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.2:chromium \ pulseaudio-${PULSEV}.tar.gz:pulseaudio DIST_SUBDIR= ${PORTNAME} EXTRACT_ONLY= ${DISTFILES:C/:[^:]+$//:C/chromium-${CHROMIUM_VER}${EXTRACT_SUFX}\.[0-9]//} MAINTAINER= tagattie@FreeBSD.org COMMENT= Build cross-platform desktop apps with JavaScript, HTML, and CSS WWW= https://electronjs.org/ LICENSE= BSD3CLAUSE LGPL21 MPL11 MIT LICENSE_COMB= multi LICENSE_FILE= ${WRKSRC}/electron/LICENSE BROKEN_i386= fetch fails: node process stalls during fetch phase and eats up all CPUs ONLY_FOR_ARCHS= aarch64 amd64 i386 FETCH_DEPENDS= git:devel/git \ npm${NODEJS_SUFFIX}>0:www/npm${NODEJS_SUFFIX} PATCH_DEPENDS= git:devel/git \ jq:textproc/jq BUILD_DEPENDS= esbuild:devel/esbuild \ gperf:devel/gperf \ bindgen:devel/rust-bindgen-cli \ yasm:devel/yasm \ ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri \ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \ node${NODEJS_VERSION}>0:www/node${NODEJS_VERSION} \ npm${NODEJS_SUFFIX}>0:www/npm${NODEJS_SUFFIX} LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-core \ libatspi.so:accessibility/at-spi2-core \ libFLAC.so:audio/flac \ libopus.so:audio/opus \ libdbus-1.so:devel/dbus \ libepoll-shim.so:devel/libepoll-shim \ libevent.so:devel/libevent \ libffi.so:devel/libffi \ libnotify.so:devel/libnotify \ libpci.so:devel/libpci \ libnspr4.so:devel/nspr \ libre2.so:devel/re2 \ libdrm.so:graphics/libdrm \ libpng.so:graphics/png \ libwayland-client.so:graphics/wayland \ libwebp.so:graphics/webp \ libdav1d.so:multimedia/dav1d \ libva.so:multimedia/libva \ libopenh264.so:multimedia/openh264 \ libfreetype.so:print/freetype2 \ libharfbuzz.so:print/harfbuzz \ libsecret-1.so:security/libsecret \ libnss3.so:security/nss \ libexpat.so:textproc/expat2 \ libxkbcommon.so:x11/libxkbcommon \ libxshmfence.so:x11/libxshmfence \ libfontconfig.so:x11-fonts/fontconfig RUN_DEPENDS= xdg-open:devel/xdg-utils TEST_DEPENDS= git:devel/git \ ${PYTHON_PKGNAMEPREFIX}python-dbusmock>0:devel/py-python-dbusmock@${PY_FLAVOR} USES= bison cargo compiler:c++17-lang cpe display:test electron:env \ gettext-tools gl gmake gnome iconv:wchar_t jpeg \ localbase:ldflags ninja nodejs:24,build pkgconfig \ python:build,test qt:5 shebangfix tar:xz xorg CPE_VENDOR= electronjs USE_GITHUB= nodefault GH_TUPLE= electron:electron:${DISTVERSIONFULL}:electron \ nodejs:node:v${NODE_VER}:node \ nodejs:nan:${NAN_VER}:nan \ Squirrel:Squirrel.Mac:${SQUIRREL_MAC_VER}:squirrel_mac \ ReactiveCocoa:ReactiveObjC:${REACTIVEOBJC_VER}:reactiveobjc \ Mantle:Mantle:${MANTLE_VER}:mantle \ EngFlow:reclient-configs:${ENGFLOW_RECLIENT_CONFIGS_VER}:reclient_configs \ rollup:rollup:v${ROLLUP_VER}:rollup \ evanw:esbuild:v${ESBUILD_VER}:esbuild USE_GL= gbm gl glesv2 USE_GNOME= atk cairo gdkpixbuf gtk30 libxml2 libxslt pango USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xrandr \ xrender xscrnsaver xtst USE_QT= buildtools:build core:build widgets:build USE_ELECTRON= npm:yarn4 prefetch extract NPM_EXTRACT_WRKSRC= ${WRKDIR}/${PORTNAME}-${ELECTRON_VER} SHEBANG_FILES= chrome/tools/build/linux/chrome-wrapper buildtools/linux64/clang-format # rollup CARGO_CARGOTOML= ${WRKSRC}/rollup/rust/Cargo.toml CARGO_CARGOLOCK= ${WRKSRC}/rollup/rust/Cargo.lock CARGO_BUILD= no CARGO_INSTALL= no CARGO_TEST= no CARGO_TARGET_DIR= ${WRKSRC}/rollup/rust/target MAKE_ARGS= -C out/${BUILDTYPE} MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \ CPLUS_INCLUDE_PATH=${LOCALBASE}/include ALL_TARGET= electron electron:node_headers POST_BUILD_TARGETS= licenses version POST_BUILD_DIST_TARGETS=electron_dist_zip electron_chromedriver_zip \ electron_mksnapshot_zip DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX} BINARY_ALIAS= python3=${PYTHON_CMD} BUNDLE_LIBS= yes TARGET_ORDER_OVERRIDE= 750:cargo-extract WRKSRC= ${WRKDIR}/src GN_ARGS+= clang_use_chrome_plugins=false \ enable_backup_ref_ptr_support=false \ enable_hangout_services_extension=true \ enable_remoting=false \ fatal_linker_warnings=false \ icu_use_data_file=false \ is_clang=true \ moc_qt5_path="${QT_TOOLDIR}/moc" \ optimize_webui=true \ toolkit_views=true \ treat_warnings_as_errors=false \ use_allocator_shim=false \ use_aura=true \ use_custom_libcxx=true \ use_custom_libunwind=true \ use_lld=true \ use_partition_alloc=true \ use_partition_alloc_as_malloc=false \ use_qt5=true \ use_sysroot=false \ use_system_freetype=false \ use_system_harfbuzz=true \ use_system_libffi=true \ use_system_libjpeg=true \ use_udev=false \ chrome_pgo_phase=0 \ extra_cflags="${CFLAGS}" \ extra_cxxflags="${CXXFLAGS} -I${LOCALBASE}/include/libepoll-shim ${PINCLUDES}" \ extra_ldflags="${LDFLAGS}" \ ffmpeg_branding="${FFMPEG_BRAND}" \ override_electron_version="${ELECTRON_VER}" # TODO: investigate building with these options: # use_system_minigbm GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild --skip-generate-buildfiles PLIST_SUB= ELECTRON_VER=${ELECTRON_VER} \ ELECTRON_VER_MAJOR=${ELECTRON_VER_MAJOR} OPTIONS_DEFINE= CODECS CUPS DEBUG DIST DRIVER KERBEROS LTO PIPEWIRE OPTIONS_DEFAULT= CODECS CUPS DRIVER KERBEROS PIPEWIRE ALSA PULSEAUDIO SNDIO OPTIONS_EXCLUDE_aarch64=LTO OPTIONS_GROUP= AUDIO OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO SNDIO OPTIONS_RADIO= KERBEROS OPTIONS_RADIO_KERBEROS= HEIMDAL HEIMDAL_BASE MIT OPTIONS_SUB= yes CODECS_DESC= Compile and enable patented codecs like H.264 DIST_DESC= Build distribution zip files DRIVER_DESC= Install chromedriver HEIMDAL_BASE_DESC= Heimdal Kerberos (base) HEIMDAL_DESC= Heimdal Kerberos (security/heimdal) MIT_DESC= MIT Kerberos (security/krb5) PIPEWIRE_DESC= Screen capture via PipeWire ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins \ alsa-lib>=1.1.1_1:audio/alsa-lib ALSA_VARS= GN_ARGS+=use_alsa=true ALSA_VARS_OFF= GN_ARGS+=use_alsa=false CODECS_VARS= GN_ARGS+=proprietary_codecs=true \ FFMPEG_BRAND="Chrome" CODECS_VARS_OFF= GN_ARGS+=proprietary_codecs=false \ FFMPEG_BRAND="Chromium" CUPS_LIB_DEPENDS= libcups.so:print/cups CUPS_VARS= GN_ARGS+=use_cups=true CUPS_VARS_OFF= GN_ARGS+=use_cups=false DEBUG_MAKE_ENV= ELECTRON_OUT_DIR=Debug DEBUG_MAKE_ENV_OFF= ELECTRON_OUT_DIR=Release DEBUG_VARS= BUILDTYPE=Debug \ GN_FILE=testing.gn \ GN_ARGS+=is_debug=true \ GN_ARGS+=is_component_build=false \ GN_ARGS+=symbol_level=1 \ GN_BOOTSTRAP_FLAGS+=--debug \ WANTSPACE="21 GB" DEBUG_VARS_OFF= BUILDTYPE=Release \ GN_FILE=release.gn \ GN_ARGS+=blink_symbol_level=0 \ GN_ARGS+=is_debug=false \ GN_ARGS+=is_official_build=true \ GN_ARGS+=symbol_level=0 \ WANTSPACE="14 GB" DIST_IMPLIES= DRIVER DRIVER_MAKE_ARGS= chromedriver HEIMDAL_USES= gssapi:heimdal HEIMDAL_BASE_USES= gssapi:base KERBEROS_VARS= GN_ARGS+=use_kerberos=true KERBEROS_VARS_OFF= GN_ARGS+=use_kerberos=false LTO_VARS= GN_ARGS+=use_thin_lto=true \ GN_ARGS+=thin_lto_enable_optimizations=true \ WANTSPACE="14 GB" LTO_VARS_OFF= GN_ARGS+=use_thin_lto=false MIT_USES= gssapi:mit PIPEWIRE_LIB_DEPENDS= libpipewire-0.3.so:multimedia/pipewire PIPEWIRE_VARS= GN_ARGS+=rtc_use_pipewire=true \ GN_ARGS+=rtc_link_pipewire=true PIPEWIRE_VARS_OFF= GN_ARGS+=rtc_use_pipewire=false \ GN_ARGS+=rtc_link_pipewire=false PULSEAUDIO_VARS= GN_ARGS+=use_pulseaudio=true \ PINCLUDES="-I${WRKDIR}/pulseaudio-${PULSEV}/src -DPA_MAJOR=${PULSEMV}" PULSEAUDIO_VARS_OFF= GN_ARGS+=use_pulseaudio=false SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio SNDIO_VARS= GN_ARGS+=use_sndio=true SNDIO_VARS_OFF= GN_ARGS+=use_sndio=false # See ${WRKSRC}/electron/DEPS for CHROMIUM_VER -CHROMIUM_VER= 146.0.7680.188 +CHROMIUM_VER= 146.0.7680.216 # See ${WRKSRC}/electron/DEPS for NODE_VER NODE_VER= 24.15.0 # See ${WRKSRC}/electron/DEPS for NAN_VER NAN_VER= 675cefebca42410733da8a454c8d9391fcebfbc2 # See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER SQUIRREL_MAC_VER= 0e5d146ba13101a1302d59ea6e6e0b3cace4ae38 # See ${WRKSRC}/electron/DEPS for REACTIVEOBJC_VER REACTIVEOBJC_VER= 74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76 # See ${WRKSRC}/electron/DEPS for MANTLE_VER MANTLE_VER= 78d3966b3c331292ea29ec38661b25df0a245948 # See ${WRKSRC}/electron/DEPS for ENGFLOW_RECLIENT_CONFIGS_VER ENGFLOW_RECLIENT_CONFIGS_VER= 955335c30a752e9ef7bff375baab5e0819b6c00d # See ${WRKSRC}/third_party/devtools-frontend/src/node_modules/rollup/package.json ROLLUP_VER= 4.22.4 # Keep in sync with devel/esbuild ESBUILD_VER= 0.27.1 .include "Makefile.version" .include .if ${PORT_OPTIONS:MHEIMDAL_BASE} && !exists(/usr/lib/libkrb5.so) IGNORE= you have selected HEIMDAL_BASE but do not have Heimdal installed in base .endif LLVM_DEFAULT= 21 BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT} BINARY_ALIAS+= cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \ cc=${LOCALBASE}/bin/clang${LLVM_DEFAULT} \ c++=${LOCALBASE}/bin/clang++${LLVM_DEFAULT} \ ar=${LOCALBASE}/bin/llvm-ar${LLVM_DEFAULT} \ nm=${LOCALBASE}/bin/llvm-nm${LLVM_DEFAULT} \ ld=${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT} CFLAGS+= -Wno-error=implicit-function-declaration .if ${ARCH} == "aarch64" PLIST_SUB+= AARCH64="" \ AMD64="@comment " \ I386="@comment " \ NOT_AARCH64="@comment " FFMPEG_TARGET= arm64 .elif ${ARCH} == "amd64" BUILD_DEPENDS+= nasm:devel/nasm PLIST_SUB+= AARCH64="@comment " \ AMD64="" \ I386="@comment " \ NOT_AARCH64="" FFMPEG_TARGET= x64 .elif ${ARCH} == "i386" BUILD_DEPENDS+= nasm:devel/nasm PLIST_SUB+= AARCH64="@comment " \ AMD64="@comment " \ I386="" \ NOT_AARCH64="" FFMPEG_TARGET= ia32 .endif FFMPEG_BDIR= ${WRKSRC}/third_party/ffmpeg/build.${FFMPEG_TARGET}.freebsd/${FFMPEG_BRAND} FFMPEG_CDIR= ${WRKSRC}/third_party/ffmpeg/chromium/config/${FFMPEG_BRAND}/freebsd/${FFMPEG_TARGET} # Allow relocations against read-only segments (override lld default) LDFLAGS_i386= -Wl,-znotext # TODO: -isystem, would be just as ugly as this approach, but more reliably # build would fail without C_INCLUDE_PATH/CPLUS_INCLUDE_PATH env var set. MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \ CPLUS_INCLUDE_PATH=${LOCALBASE}/include # rust MAKE_ENV+= RUSTC_BOOTSTRAP=1 GN_ARGS+= enable_rust=true \ rust_sysroot_absolute="${LOCALBASE}" TEST_ENV+= ${MAKE_ENV} \ ELECTRON_OUT_DIR=${BUILDTYPE} \ LOCAL_GIT_DIRECTORY=${LOCALBASE} \ DISABLE_CRASH_REPORTER_TESTS=1 pre-everything:: @${ECHO_MSG} @${ECHO_MSG} "To build electron, you should have around 2GB of memory" @${ECHO_MSG} "and around ${WANTSPACE} of free disk space." @${ECHO_MSG} pre-extract: # Chromium source tarball is splitted into multiple fragments. Concatenate them # into a single one and manually extract it into WRKDIR. @${CAT} ${DISTDIR}/${DIST_SUBDIR}/chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.? > \ ${WRKDIR}/chromium-${CHROMIUM_VER}${EXTRACT_SUFX} @cd ${WRKDIR} && \ ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} \ chromium-${CHROMIUM_VER}${EXTRACT_SUFX} ${EXTRACT_AFTER_ARGS} post-extract: # Move extracted sources to appropriate locations ${MV} ${WRKDIR}/chromium-${CHROMIUM_VER} \ ${WRKSRC} ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER} \ ${WRKSRC}/electron ${MV} ${WRKDIR}/${GH_PROJECT_nan}-${NAN_VER} \ ${WRKSRC}/third_party/nan ${MV} ${WRKDIR}/${GH_PROJECT_node}-${NODE_VER} \ ${WRKSRC}/third_party/electron_node ${MV} ${WRKDIR}/${GH_PROJECT_squirrel_mac}-${SQUIRREL_MAC_VER} \ ${WRKSRC}/third_party/squirrel.mac @${MKDIR} ${WRKSRC}/third_party/squirrel.mac/vendor ${MV} ${WRKDIR}/${GH_PROJECT_reactiveobjc}-${REACTIVEOBJC_VER} \ ${WRKSRC}/third_party/squirrel.mac/vendor/ReactiveObjC ${MV} ${WRKDIR}/${GH_PROJECT_mantle}-${MANTLE_VER} \ ${WRKSRC}/third_party/squirrel.mac/vendor/Mantle ${MV} ${WRKDIR}/${GH_PROJECT_reclient_configs}-${ENGFLOW_RECLIENT_CONFIGS_VER} \ ${WRKSRC}/third_party/engflow-reclient-configs ${MV} ${WRKDIR}/${GH_PROJECT_rollup}-${ROLLUP_VER} \ ${WRKSRC}/rollup ${MV} ${WRKDIR}/${GH_PROJECT_esbuild}-${ESBUILD_VER} \ ${WRKSRC}/esbuild pre-patch: ${SH} ${FILESDIR}/apply-electron-patches.sh ${WRKSRC} # ${FIND} ${WRKSRC} -type f -name '*.orig' -print -delete # ${FIND} ${WRKSRC} -type f -name '*~' -print -delete pre-configure: # We used to remove bundled libraries to be sure that chromium uses # system libraries and not shipped ones. # cd ${WRKSRC} && ${PYTHON_CMD} \ #./build/linux/unbundle/remove_bundled_libraries.py [list of preserved] cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \ ./build/linux/unbundle/replace_gn_files.py --system-libraries \ dav1d flac fontconfig harfbuzz-ng libdrm libpng \ libusb libwebp libxml libxslt openh264 opus || ${FALSE} # Chromium uses an unreleased version of FFmpeg, so configure it cd ${WRKSRC}/media/ffmpeg && \ ${PYTHON_CMD} scripts/build_ffmpeg.py freebsd ${FFMPEG_TARGET} \ --config-only --branding=${FFMPEG_BRAND} cd ${FFMPEG_BDIR} && ${GMAKE} ffversion.h ${MKDIR} ${FFMPEG_CDIR} .for _e in config.h config.asm config_components.asm config_components.h libavcodec libavformat libavutil -${CP} -pR ${FFMPEG_BDIR}/${_e} ${FFMPEG_CDIR} .endfor touch ${WRKDIR}/pulseaudio-${PULSEV}/src/pulse/version.h @${REINPLACE_CMD} -e 's|$${LOCALBASE}|${LOCALBASE}|;s|$${MODCLANG_VERSION}|${LLVM_DEFAULT}|' \ ${WRKSRC}/build/config/rust.gni \ ${WRKSRC}/build/linux/strip_binary.gni \ ${WRKSRC}/build/rust/rust_bindgen.gni \ ${WRKSRC}/build/rust/rust_bindgen_generator.gni do-configure: cd ${WRKSRC}/esbuild && \ ${LOCALBASE}/bin/node scripts/esbuild.js \ ${LOCALBASE}/bin/esbuild --neutral && \ ${RM} -r ${WRKSRC}/third_party/devtools-frontend/src/node_modules/esbuild && \ ${LN} -sf ${WRKSRC}/esbuild/npm/esbuild \ ${WRKSRC}/third_party/devtools-frontend/src/node_modules/esbuild \ # GN generator bootstrapping and generating ninja files cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} LD=${CXX} \ READELF=${READELF} AR=${AR} NM=${NM} ${PYTHON_CMD} \ ./tools/gn/bootstrap/bootstrap.py ${GN_BOOTSTRAP_FLAGS} cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./out/${BUILDTYPE}/gn gen out/${BUILDTYPE} \ --args='import("//electron/build/args/${GN_FILE}") ${GN_ARGS}' # Make GN available to python scripts called during build ${LN} -sf ${WRKSRC}/out/${BUILDTYPE}/gn ${WRKDIR}/.bin # Setup nodejs dependency @${MKDIR} ${WRKSRC}/third_party/node/freebsd/node-freebsd/bin ${LN} -sf ${LOCALBASE}/bin/node ${WRKSRC}/third_party/node/freebsd/node-freebsd/bin/node # Setup esbuild dependency ${LN} -sf ${LOCALBASE}/bin/esbuild ${WRKSRC}/third_party/devtools-frontend/src/third_party/esbuild/esbuild # Setup buildtools/freebsd @${MKDIR} ${WRKSRC}/buildtools/freebsd ${LN} -sf ${WRKSRC}/buildtools/linux64/clang-format ${WRKSRC}/buildtools/freebsd ${LN} -sf ${WRKSRC}/out/${BUILDTYPE}/gn ${WRKSRC}/buildtools/freebsd ${LN} -sf /usr/bin/strip ${WRKSRC}/buildtools/freebsd/strip pre-build: @${CARGO_CARGO_RUN} build \ --manifest-path ${CARGO_CARGOTOML} \ --verbose \ --verbose \ ${CARGO_BUILD_ARGS} (cd ${WRKSRC}/third_party/devtools-frontend/src/node_modules/@rollup && \ ${MKDIR} rollup-freebsd && \ ${CP} ${CARGO_TARGET_DIR}/*/libbindings_napi.so \ rollup-freebsd/rollup.freebsd.node && \ ${ECHO_CMD} '{ "main": "./rollup.freebsd.node" }' \ > rollup-freebsd/package.json) post-build: cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_TARGETS} post-build-DIST-on: cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_DIST_TARGETS} cd ${WRKSRC}/out/${BUILDTYPE} && \ ${CP} chromedriver.zip chromedriver-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \ ${CP} dist.zip electron-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \ ${CP} mksnapshot.zip mksnapshot-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \ ${SHA256} -r *-v${ELECTRON_VER}-freebsd-*.zip | ${SED} -e 's/ / */' > SHASUMS256.txt do-install: ${MKDIR} ${STAGEDIR}${DATADIR} .for f in electron mksnapshot v8_context_snapshot_generator ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR} .endfor .for f in libEGL.so libGLESv2.so libffmpeg.so libvk_swiftshader.so ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR} .endfor ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/libvulkan.so.1 ${STAGEDIR}${DATADIR}/libvulkan.so .for f in LICENSE LICENSES.chromium.html snapshot_blob.bin v8_context_snapshot.bin version vk_swiftshader_icd.json ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR} .endfor .for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR} .endfor ${MKDIR} ${STAGEDIR}${DATADIR}/locales ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/locales/*.pak ${STAGEDIR}${DATADIR}/locales ${MKDIR} ${STAGEDIR}${DATADIR}/resources .for f in default_app.asar ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/resources/${f} ${STAGEDIR}${DATADIR}/resources .endfor cd ${WRKSRC}/out/${BUILDTYPE}/gen && ${COPYTREE_SHARE} node_headers ${STAGEDIR}${DATADIR} cd ${WRKSRC}/out/${BUILDTYPE} && ${COPYTREE_SHARE} gen/electron/buildflags ${STAGEDIR}${DATADIR} cd ${WRKSRC}/out/${BUILDTYPE} && ${COPYTREE_SHARE} gen/v8/embedded.S ${STAGEDIR}${DATADIR} ${RLN} ${STAGEDIR}${DATADIR}/electron ${STAGEDIR}${PREFIX}/bin/electron${PKGNAMESUFFIX} post-install-DIST-on: ${MKDIR} ${STAGEDIR}${DATADIR}/releases ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/SHASUMS256.txt ${STAGEDIR}${DATADIR}/releases ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*-v${ELECTRON_VER}-freebsd-*.zip ${STAGEDIR}${DATADIR}/releases post-install-DRIVER-on: ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chromedriver.unstripped \ ${STAGEDIR}${DATADIR}/chromedriver do-test: cd ${WRKSRC}/electron && \ ${SETENV} ${TEST_ENV} yarn run test -- --ci .include diff --git a/devel/electron41/Makefile.version b/devel/electron41/Makefile.version index ff484b296d44..6e31e50df998 100644 --- a/devel/electron41/Makefile.version +++ b/devel/electron41/Makefile.version @@ -1,2 +1,2 @@ -ELECTRON_VER= 41.3.0 +ELECTRON_VER= 41.5.0 ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//} diff --git a/devel/electron41/distinfo b/devel/electron41/distinfo index 5032f131615b..104486f6a382 100644 --- a/devel/electron41/distinfo +++ b/devel/electron41/distinfo @@ -1,363 +1,363 @@ -TIMESTAMP = 1777152067 -SHA256 (electron/chromium-146.0.7680.188.tar.xz.0) = fe0dd625b47d1a0594b20d8c748da45c023da315b4a8f2fc3944b96149330cc6 -SIZE (electron/chromium-146.0.7680.188.tar.xz.0) = 2000000000 -SHA256 (electron/chromium-146.0.7680.188.tar.xz.1) = 3a0320e66c708c527dbc39a9e21051d6146e039a50b57209ec069e808369e6ce -SIZE (electron/chromium-146.0.7680.188.tar.xz.1) = 2000000000 -SHA256 (electron/chromium-146.0.7680.188.tar.xz.2) = 08c4ae08a2605728ed16524bcd0c930434c09f1aee9342344a2e632d25ade73a -SIZE (electron/chromium-146.0.7680.188.tar.xz.2) = 740905224 +TIMESTAMP = 1777991003 +SHA256 (electron/chromium-146.0.7680.216.tar.xz.0) = 975c7b752e7b89c72b6e85f458db893c84bf3de42b7eb954bea2b6fda8e9786b +SIZE (electron/chromium-146.0.7680.216.tar.xz.0) = 2000000000 +SHA256 (electron/chromium-146.0.7680.216.tar.xz.1) = 35b9287cf3cdefcf443f5b6e96198a82de7d89b8f33b6784f74ab85957f56f01 +SIZE (electron/chromium-146.0.7680.216.tar.xz.1) = 2000000000 +SHA256 (electron/chromium-146.0.7680.216.tar.xz.2) = 4f11b63dd52e789323c182d35d59cd5af32901d63f709204134938fd68fef0c8 +SIZE (electron/chromium-146.0.7680.216.tar.xz.2) = 741064124 SHA256 (electron/pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1628fb1fd9242315ac54ce2d7c92 SIZE (electron/pulseaudio-16.1.tar.gz) = 2763111 SHA256 (electron/rust/crates/Inflector-0.11.4.crate) = fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3 SIZE (electron/rust/crates/Inflector-0.11.4.crate) = 17438 SHA256 (electron/rust/crates/ahash-0.8.11.crate) = e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011 SIZE (electron/rust/crates/ahash-0.8.11.crate) = 43607 SHA256 (electron/rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916 SIZE (electron/rust/crates/aho-corasick-1.1.3.crate) = 183311 SHA256 (electron/rust/crates/allocator-api2-0.2.18.crate) = 5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f SIZE (electron/rust/crates/allocator-api2-0.2.18.crate) = 62504 SHA256 (electron/rust/crates/anyhow-1.0.89.crate) = 86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6 SIZE (electron/rust/crates/anyhow-1.0.89.crate) = 47078 SHA256 (electron/rust/crates/arrayvec-0.7.6.crate) = 7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50 SIZE (electron/rust/crates/arrayvec-0.7.6.crate) = 31237 SHA256 (electron/rust/crates/ast_node-0.10.0.crate) = 9f8486443b68ecc17b8b45c6161b0194142f74622ed8dade227480a20291fc91 SIZE (electron/rust/crates/ast_node-0.10.0.crate) = 8073 SHA256 (electron/rust/crates/autocfg-1.3.0.crate) = 0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0 SIZE (electron/rust/crates/autocfg-1.3.0.crate) = 16524 SHA256 (electron/rust/crates/base-encode-0.3.1.crate) = a17bd29f7c70f32e9387f4d4acfa5ea7b7749ef784fb78cf382df97069337b8c SIZE (electron/rust/crates/base-encode-0.3.1.crate) = 3630 SHA256 (electron/rust/crates/base64-0.21.7.crate) = 9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567 SIZE (electron/rust/crates/base64-0.21.7.crate) = 82576 SHA256 (electron/rust/crates/base64-simd-0.7.0.crate) = 781dd20c3aff0bd194fe7d2a977dd92f21c173891f3a03b677359e5fa457e5d5 SIZE (electron/rust/crates/base64-simd-0.7.0.crate) = 9966 SHA256 (electron/rust/crates/better_scoped_tls-0.1.1.crate) = 794edcc9b3fb07bb4aecaa11f093fd45663b4feadb782d68303a2268bc2701de SIZE (electron/rust/crates/better_scoped_tls-0.1.1.crate) = 1874 SHA256 (electron/rust/crates/bitflags-2.6.0.crate) = b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de SIZE (electron/rust/crates/bitflags-2.6.0.crate) = 45357 SHA256 (electron/rust/crates/bitvec-1.0.1.crate) = 1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c SIZE (electron/rust/crates/bitvec-1.0.1.crate) = 224375 SHA256 (electron/rust/crates/bumpalo-3.16.0.crate) = 79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c SIZE (electron/rust/crates/bumpalo-3.16.0.crate) = 85677 SHA256 (electron/rust/crates/cc-1.1.21.crate) = 07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0 SIZE (electron/rust/crates/cc-1.1.21.crate) = 83463 SHA256 (electron/rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd SIZE (electron/rust/crates/cfg-if-1.0.0.crate) = 7934 SHA256 (electron/rust/crates/convert_case-0.6.0.crate) = ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca SIZE (electron/rust/crates/convert_case-0.6.0.crate) = 18675 SHA256 (electron/rust/crates/ctor-0.2.8.crate) = edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f SIZE (electron/rust/crates/ctor-0.2.8.crate) = 11053 SHA256 (electron/rust/crates/cty-0.2.2.crate) = b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35 SIZE (electron/rust/crates/cty-0.2.2.crate) = 7230 SHA256 (electron/rust/crates/dashmap-5.5.3.crate) = 978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856 SIZE (electron/rust/crates/dashmap-5.5.3.crate) = 24061 SHA256 (electron/rust/crates/data-encoding-2.6.0.crate) = e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2 SIZE (electron/rust/crates/data-encoding-2.6.0.crate) = 20769 SHA256 (electron/rust/crates/debugid-0.8.0.crate) = bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d SIZE (electron/rust/crates/debugid-0.8.0.crate) = 12757 SHA256 (electron/rust/crates/either-1.13.0.crate) = 60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0 SIZE (electron/rust/crates/either-1.13.0.crate) = 19169 SHA256 (electron/rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5 SIZE (electron/rust/crates/equivalent-1.0.1.crate) = 6615 SHA256 (electron/rust/crates/fixedbitset-0.4.2.crate) = 0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80 SIZE (electron/rust/crates/fixedbitset-0.4.2.crate) = 15954 SHA256 (electron/rust/crates/form_urlencoded-1.2.1.crate) = e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456 SIZE (electron/rust/crates/form_urlencoded-1.2.1.crate) = 8969 SHA256 (electron/rust/crates/from_variant-0.1.9.crate) = 32016f1242eb82af5474752d00fd8ebcd9004bd69b462b1c91de833972d08ed4 SIZE (electron/rust/crates/from_variant-0.1.9.crate) = 1617 SHA256 (electron/rust/crates/funty-2.0.0.crate) = e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c SIZE (electron/rust/crates/funty-2.0.0.crate) = 13160 SHA256 (electron/rust/crates/getrandom-0.2.15.crate) = c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7 SIZE (electron/rust/crates/getrandom-0.2.15.crate) = 37163 SHA256 (electron/rust/crates/hashbrown-0.14.5.crate) = e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1 SIZE (electron/rust/crates/hashbrown-0.14.5.crate) = 141498 SHA256 (electron/rust/crates/hermit-abi-0.3.9.crate) = d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024 SIZE (electron/rust/crates/hermit-abi-0.3.9.crate) = 16165 SHA256 (electron/rust/crates/hstr-0.2.12.crate) = dae404c0c5d4e95d4858876ab02eecd6a196bb8caa42050dfa809938833fc412 SIZE (electron/rust/crates/hstr-0.2.12.crate) = 22307 SHA256 (electron/rust/crates/idna-0.5.0.crate) = 634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6 SIZE (electron/rust/crates/idna-0.5.0.crate) = 271940 SHA256 (electron/rust/crates/if_chain-1.0.2.crate) = cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed SIZE (electron/rust/crates/if_chain-1.0.2.crate) = 8062 SHA256 (electron/rust/crates/indexmap-2.5.0.crate) = 68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5 SIZE (electron/rust/crates/indexmap-2.5.0.crate) = 85919 SHA256 (electron/rust/crates/is-macro-0.3.6.crate) = 2069faacbe981460232f880d26bf3c7634e322d49053aa48c27e3ae642f728f1 SIZE (electron/rust/crates/is-macro-0.3.6.crate) = 9068 SHA256 (electron/rust/crates/itoa-1.0.11.crate) = 49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b SIZE (electron/rust/crates/itoa-1.0.11.crate) = 10563 SHA256 (electron/rust/crates/js-sys-0.3.70.crate) = 1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a SIZE (electron/rust/crates/js-sys-0.3.70.crate) = 53863 SHA256 (electron/rust/crates/libc-0.2.158.crate) = d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439 SIZE (electron/rust/crates/libc-0.2.158.crate) = 751340 SHA256 (electron/rust/crates/libloading-0.8.5.crate) = 4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4 SIZE (electron/rust/crates/libloading-0.8.5.crate) = 28902 SHA256 (electron/rust/crates/lock_api-0.4.12.crate) = 07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17 SIZE (electron/rust/crates/lock_api-0.4.12.crate) = 27591 SHA256 (electron/rust/crates/log-0.4.22.crate) = a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24 SIZE (electron/rust/crates/log-0.4.22.crate) = 44027 SHA256 (electron/rust/crates/memchr-2.7.4.crate) = 78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3 SIZE (electron/rust/crates/memchr-2.7.4.crate) = 96670 SHA256 (electron/rust/crates/mimalloc-rust-0.2.1.crate) = 5eb726c8298efb4010b2c46d8050e4be36cf807b9d9e98cb112f830914fc9bbe SIZE (electron/rust/crates/mimalloc-rust-0.2.1.crate) = 5327 SHA256 (electron/rust/crates/mimalloc-rust-sys-1.7.9-source.crate) = 6413e13241a9809f291568133eca6694572cf528c1a6175502d090adce5dd5db SIZE (electron/rust/crates/mimalloc-rust-sys-1.7.9-source.crate) = 134952 SHA256 (electron/rust/crates/napi-2.16.11.crate) = 53575dfa17f208dd1ce3a2da2da4659aae393b256a472f2738a8586a6c4107fd SIZE (electron/rust/crates/napi-2.16.11.crate) = 85909 SHA256 (electron/rust/crates/napi-build-2.1.3.crate) = e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a SIZE (electron/rust/crates/napi-build-2.1.3.crate) = 2096 SHA256 (electron/rust/crates/napi-derive-2.16.12.crate) = 17435f7a00bfdab20b0c27d9c56f58f6499e418252253081bfff448099da31d1 SIZE (electron/rust/crates/napi-derive-2.16.12.crate) = 17184 SHA256 (electron/rust/crates/napi-derive-backend-1.0.74.crate) = 967c485e00f0bf3b1bdbe510a38a4606919cf1d34d9a37ad41f25a81aa077abe SIZE (electron/rust/crates/napi-derive-backend-1.0.74.crate) = 21755 SHA256 (electron/rust/crates/napi-sys-2.4.0.crate) = 427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3 SIZE (electron/rust/crates/napi-sys-2.4.0.crate) = 6582 SHA256 (electron/rust/crates/new_debug_unreachable-1.0.6.crate) = 650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086 SIZE (electron/rust/crates/new_debug_unreachable-1.0.6.crate) = 2582 SHA256 (electron/rust/crates/num-bigint-0.4.6.crate) = a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9 SIZE (electron/rust/crates/num-bigint-0.4.6.crate) = 102801 SHA256 (electron/rust/crates/num-integer-0.1.46.crate) = 7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f SIZE (electron/rust/crates/num-integer-0.1.46.crate) = 22331 SHA256 (electron/rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841 SIZE (electron/rust/crates/num-traits-0.2.19.crate) = 51631 SHA256 (electron/rust/crates/num_cpus-1.16.0.crate) = 4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43 SIZE (electron/rust/crates/num_cpus-1.16.0.crate) = 15713 SHA256 (electron/rust/crates/once_cell-1.19.0.crate) = 3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92 SIZE (electron/rust/crates/once_cell-1.19.0.crate) = 33046 SHA256 (electron/rust/crates/outref-0.1.0.crate) = 7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4 SIZE (electron/rust/crates/outref-0.1.0.crate) = 3067 SHA256 (electron/rust/crates/parking_lot-0.12.3.crate) = f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27 SIZE (electron/rust/crates/parking_lot-0.12.3.crate) = 41860 SHA256 (electron/rust/crates/parking_lot_core-0.9.10.crate) = 1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8 SIZE (electron/rust/crates/parking_lot_core-0.9.10.crate) = 32406 SHA256 (electron/rust/crates/pathdiff-0.2.1.crate) = 8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd SIZE (electron/rust/crates/pathdiff-0.2.1.crate) = 7142 SHA256 (electron/rust/crates/percent-encoding-2.3.1.crate) = e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e SIZE (electron/rust/crates/percent-encoding-2.3.1.crate) = 10235 SHA256 (electron/rust/crates/petgraph-0.6.5.crate) = b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db SIZE (electron/rust/crates/petgraph-0.6.5.crate) = 710970 SHA256 (electron/rust/crates/phf-0.11.2.crate) = ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc SIZE (electron/rust/crates/phf-0.11.2.crate) = 21569 SHA256 (electron/rust/crates/phf_generator-0.11.2.crate) = 48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0 SIZE (electron/rust/crates/phf_generator-0.11.2.crate) = 14190 SHA256 (electron/rust/crates/phf_macros-0.11.2.crate) = 3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b SIZE (electron/rust/crates/phf_macros-0.11.2.crate) = 4748 SHA256 (electron/rust/crates/phf_shared-0.11.2.crate) = 90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b SIZE (electron/rust/crates/phf_shared-0.11.2.crate) = 14284 SHA256 (electron/rust/crates/pin-project-lite-0.2.14.crate) = bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02 SIZE (electron/rust/crates/pin-project-lite-0.2.14.crate) = 28817 SHA256 (electron/rust/crates/proc-macro2-1.0.86.crate) = 5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77 SIZE (electron/rust/crates/proc-macro2-1.0.86.crate) = 48958 SHA256 (electron/rust/crates/psm-0.1.23.crate) = aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205 SIZE (electron/rust/crates/psm-0.1.23.crate) = 23318 SHA256 (electron/rust/crates/ptr_meta-0.1.4.crate) = 0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1 SIZE (electron/rust/crates/ptr_meta-0.1.4.crate) = 5754 SHA256 (electron/rust/crates/ptr_meta_derive-0.1.4.crate) = 16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac SIZE (electron/rust/crates/ptr_meta_derive-0.1.4.crate) = 2302 SHA256 (electron/rust/crates/quote-1.0.37.crate) = b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af SIZE (electron/rust/crates/quote-1.0.37.crate) = 28558 SHA256 (electron/rust/crates/radium-0.7.0.crate) = dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09 SIZE (electron/rust/crates/radium-0.7.0.crate) = 10906 SHA256 (electron/rust/crates/radix_fmt-1.0.0.crate) = ce082a9940a7ace2ad4a8b7d0b1eac6aa378895f18be598230c5f2284ac05426 SIZE (electron/rust/crates/radix_fmt-1.0.0.crate) = 8743 SHA256 (electron/rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404 SIZE (electron/rust/crates/rand-0.8.5.crate) = 87113 SHA256 (electron/rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c SIZE (electron/rust/crates/rand_core-0.6.4.crate) = 22666 SHA256 (electron/rust/crates/redox_syscall-0.5.4.crate) = 0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853 SIZE (electron/rust/crates/redox_syscall-0.5.4.crate) = 25977 SHA256 (electron/rust/crates/regex-1.10.6.crate) = 4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619 SIZE (electron/rust/crates/regex-1.10.6.crate) = 253894 SHA256 (electron/rust/crates/regex-automata-0.4.7.crate) = 38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df SIZE (electron/rust/crates/regex-automata-0.4.7.crate) = 617582 SHA256 (electron/rust/crates/regex-syntax-0.8.4.crate) = 7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b SIZE (electron/rust/crates/regex-syntax-0.8.4.crate) = 347577 SHA256 (electron/rust/crates/rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2 SIZE (electron/rust/crates/rustc-hash-1.1.0.crate) = 9331 SHA256 (electron/rust/crates/rustc_version-0.2.3.crate) = 138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a SIZE (electron/rust/crates/rustc_version-0.2.3.crate) = 10210 SHA256 (electron/rust/crates/ryu-1.0.18.crate) = f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f SIZE (electron/rust/crates/ryu-1.0.18.crate) = 47713 SHA256 (electron/rust/crates/ryu-js-1.0.1.crate) = ad97d4ce1560a5e27cec89519dc8300d1aa6035b099821261c651486a19e44d5 SIZE (electron/rust/crates/ryu-js-1.0.1.crate) = 74220 SHA256 (electron/rust/crates/scoped-tls-1.0.1.crate) = e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294 SIZE (electron/rust/crates/scoped-tls-1.0.1.crate) = 8202 SHA256 (electron/rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49 SIZE (electron/rust/crates/scopeguard-1.2.0.crate) = 11619 SHA256 (electron/rust/crates/semver-0.9.0.crate) = 1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403 SIZE (electron/rust/crates/semver-0.9.0.crate) = 17344 SHA256 (electron/rust/crates/semver-1.0.23.crate) = 61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b SIZE (electron/rust/crates/semver-1.0.23.crate) = 30622 SHA256 (electron/rust/crates/semver-parser-0.7.0.crate) = 388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3 SIZE (electron/rust/crates/semver-parser-0.7.0.crate) = 10268 SHA256 (electron/rust/crates/serde-1.0.210.crate) = c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a SIZE (electron/rust/crates/serde-1.0.210.crate) = 78338 SHA256 (electron/rust/crates/serde_derive-1.0.210.crate) = 243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f SIZE (electron/rust/crates/serde_derive-1.0.210.crate) = 56020 SHA256 (electron/rust/crates/serde_json-1.0.128.crate) = 6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8 SIZE (electron/rust/crates/serde_json-1.0.128.crate) = 149520 SHA256 (electron/rust/crates/shlex-1.3.0.crate) = 0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64 SIZE (electron/rust/crates/shlex-1.3.0.crate) = 18713 SHA256 (electron/rust/crates/simd-abstraction-0.7.1.crate) = 9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987 SIZE (electron/rust/crates/simd-abstraction-0.7.1.crate) = 9170 SHA256 (electron/rust/crates/siphasher-0.3.11.crate) = 38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d SIZE (electron/rust/crates/siphasher-0.3.11.crate) = 10442 SHA256 (electron/rust/crates/smallvec-1.13.2.crate) = 3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67 SIZE (electron/rust/crates/smallvec-1.13.2.crate) = 35216 SHA256 (electron/rust/crates/smartstring-1.0.1.crate) = 3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29 SIZE (electron/rust/crates/smartstring-1.0.1.crate) = 29555 SHA256 (electron/rust/crates/sourcemap-9.0.0.crate) = dab08a862c70980b8e23698b507e272317ae52a608a164a844111f5372374f1f SIZE (electron/rust/crates/sourcemap-9.0.0.crate) = 43857 SHA256 (electron/rust/crates/stable_deref_trait-1.2.0.crate) = a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3 SIZE (electron/rust/crates/stable_deref_trait-1.2.0.crate) = 8054 SHA256 (electron/rust/crates/stacker-0.1.17.crate) = 799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b SIZE (electron/rust/crates/stacker-0.1.17.crate) = 14699 SHA256 (electron/rust/crates/static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f SIZE (electron/rust/crates/static_assertions-1.1.0.crate) = 18480 SHA256 (electron/rust/crates/string_enum-0.4.4.crate) = 05e383308aebc257e7d7920224fa055c632478d92744eca77f99be8fa1545b90 SIZE (electron/rust/crates/string_enum-0.4.4.crate) = 3861 SHA256 (electron/rust/crates/swc_allocator-0.1.8.crate) = adc8bd3075d1c6964010333fae9ddcd91ad422a4f8eb8b3206a9b2b6afb4209e SIZE (electron/rust/crates/swc_allocator-0.1.8.crate) = 12576 SHA256 (electron/rust/crates/swc_atoms-0.7.0.crate) = 8ff4ad2795eabc349fb7ac1bdccb2625858a8be5545703ef31d5b5dc7a9f37f4 SIZE (electron/rust/crates/swc_atoms-0.7.0.crate) = 3503 SHA256 (electron/rust/crates/swc_cached-0.3.20.crate) = 83406221c501860fce9c27444f44125eafe9e598b8b81be7563d7036784cd05c SIZE (electron/rust/crates/swc_cached-0.3.20.crate) = 1958 SHA256 (electron/rust/crates/swc_common-0.39.0.crate) = 04012755fd21334086b5ee2467a6236afea869d0aff3bdf8b20dc07ee5f676c6 SIZE (electron/rust/crates/swc_common-0.39.0.crate) = 80673 SHA256 (electron/rust/crates/swc_compiler_base-0.22.0.crate) = 72452f40c7bc9c133b060cbc73f032d0c5ce87843d301e4ef33faa09008b83be SIZE (electron/rust/crates/swc_compiler_base-0.22.0.crate) = 5051 SHA256 (electron/rust/crates/swc_config-0.1.15.crate) = 4740e53eaf68b101203c1df0937d5161a29f3c13bceed0836ddfe245b72dd000 SIZE (electron/rust/crates/swc_config-0.1.15.crate) = 4839 SHA256 (electron/rust/crates/swc_config_macro-0.1.4.crate) = 7c5f56139042c1a95b54f5ca48baa0e0172d369bcc9d3d473dad1de36bae8399 SIZE (electron/rust/crates/swc_config_macro-0.1.4.crate) = 1717 SHA256 (electron/rust/crates/swc_ecma_ast-0.120.0.crate) = bb7f7d4a08f9a413b27506903a5a893a51bd0df6c8b91203fbb76aa217472ed6 SIZE (electron/rust/crates/swc_ecma_ast-0.120.0.crate) = 34640 SHA256 (electron/rust/crates/swc_ecma_codegen-0.157.0.crate) = 78ce83228e9304008f2df1d21e0e88d70232c438337f5faad27024974e2d3a09 SIZE (electron/rust/crates/swc_ecma_codegen-0.157.0.crate) = 52829 SHA256 (electron/rust/crates/swc_ecma_codegen_macros-0.7.7.crate) = 859fabde36db38634f3fad548dd5e3410c1aebba1b67a3c63e67018fa57a0bca SIZE (electron/rust/crates/swc_ecma_codegen_macros-0.7.7.crate) = 2945 SHA256 (electron/rust/crates/swc_ecma_minifier-0.207.0.crate) = 15739c02dff0b2b3fe10146b0105b7842b7f71e9340f226b6f1862db15a680f6 SIZE (electron/rust/crates/swc_ecma_minifier-0.207.0.crate) = 225454 SHA256 (electron/rust/crates/swc_ecma_parser-0.151.0.crate) = 3c23f8288f6a38f84a1b82896917eac3adf92e37dee19cbc1c42cebab7b48590 SIZE (electron/rust/crates/swc_ecma_parser-0.151.0.crate) = 150827 SHA256 (electron/rust/crates/swc_ecma_transforms_base-0.148.0.crate) = 0231922ee5391a452ea47f7bf6ffde401fd7ceb201b8ac6343c885758e33551e SIZE (electron/rust/crates/swc_ecma_transforms_base-0.148.0.crate) = 72533 SHA256 (electron/rust/crates/swc_ecma_transforms_macros-0.5.5.crate) = 500a1dadad1e0e41e417d633b3d6d5de677c9e0d3159b94ba3348436cdb15aab SIZE (electron/rust/crates/swc_ecma_transforms_macros-0.5.5.crate) = 3827 SHA256 (electron/rust/crates/swc_ecma_transforms_optimization-0.211.0.crate) = 5966e6e631795b350441fcfea34dd00d6ad637d182033697f606c82a74d64894 SIZE (electron/rust/crates/swc_ecma_transforms_optimization-0.211.0.crate) = 61838 SHA256 (electron/rust/crates/swc_ecma_usage_analyzer-0.32.0.crate) = ae003379b4b3f0ef1b149014a9bac0db7261ebd8b8abe03e51be3fd2b0134fe4 SIZE (electron/rust/crates/swc_ecma_usage_analyzer-0.32.0.crate) = 11954 SHA256 (electron/rust/crates/swc_ecma_utils-0.136.0.crate) = df9b03b44d3342bcf4e3f8a4c05605e07c642b537198a5534314c433a3767fe5 SIZE (electron/rust/crates/swc_ecma_utils-0.136.0.crate) = 32888 SHA256 (electron/rust/crates/swc_ecma_visit-0.106.0.crate) = f4ee9335a4ad1a78587d5cb0d75a8c718a53d40eaf37475e3eda9c4ed1741da0 SIZE (electron/rust/crates/swc_ecma_visit-0.106.0.crate) = 318891 SHA256 (electron/rust/crates/swc_eq_ignore_macros-0.1.4.crate) = 63db0adcff29d220c3d151c5b25c0eabe7e32dd936212b84cdaa1392e3130497 SIZE (electron/rust/crates/swc_eq_ignore_macros-0.1.4.crate) = 2741 SHA256 (electron/rust/crates/swc_fast_graph-0.27.0.crate) = accc67d03a5b88d5d8fc4ba051738075ba0e12194d1dc26f9f88a776026fe938 SIZE (electron/rust/crates/swc_fast_graph-0.27.0.crate) = 7100 SHA256 (electron/rust/crates/swc_macros_common-0.3.13.crate) = f486687bfb7b5c560868f69ed2d458b880cebc9babebcb67e49f31b55c5bf847 SIZE (electron/rust/crates/swc_macros_common-0.3.13.crate) = 6666 SHA256 (electron/rust/crates/swc_timer-0.27.0.crate) = f53899e4ab3f9ce3db83b4c845f8a27f37bf700b233febbc9a6da749651c2fbb SIZE (electron/rust/crates/swc_timer-0.27.0.crate) = 1680 SHA256 (electron/rust/crates/swc_visit-0.6.2.crate) = 1ceb044142ba2719ef9eb3b6b454fce61ab849eb696c34d190f04651955c613d SIZE (electron/rust/crates/swc_visit-0.6.2.crate) = 5188 SHA256 (electron/rust/crates/syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237 SIZE (electron/rust/crates/syn-1.0.109.crate) = 237611 SHA256 (electron/rust/crates/syn-2.0.77.crate) = 9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed SIZE (electron/rust/crates/syn-2.0.77.crate) = 268784 SHA256 (electron/rust/crates/tap-1.0.1.crate) = 55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369 SIZE (electron/rust/crates/tap-1.0.1.crate) = 11316 SHA256 (electron/rust/crates/tinyvec-1.8.0.crate) = 445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938 SIZE (electron/rust/crates/tinyvec-1.8.0.crate) = 46796 SHA256 (electron/rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20 SIZE (electron/rust/crates/tinyvec_macros-0.1.1.crate) = 5865 SHA256 (electron/rust/crates/tracing-0.1.40.crate) = c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef SIZE (electron/rust/crates/tracing-0.1.40.crate) = 79459 SHA256 (electron/rust/crates/tracing-attributes-0.1.27.crate) = 34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7 SIZE (electron/rust/crates/tracing-attributes-0.1.27.crate) = 32241 SHA256 (electron/rust/crates/tracing-core-0.1.32.crate) = c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54 SIZE (electron/rust/crates/tracing-core-0.1.32.crate) = 61221 SHA256 (electron/rust/crates/triomphe-0.1.13.crate) = e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369 SIZE (electron/rust/crates/triomphe-0.1.13.crate) = 29568 SHA256 (electron/rust/crates/typed-arena-2.0.2.crate) = 6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a SIZE (electron/rust/crates/typed-arena-2.0.2.crate) = 11848 SHA256 (electron/rust/crates/unicode-bidi-0.3.15.crate) = 08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75 SIZE (electron/rust/crates/unicode-bidi-0.3.15.crate) = 56811 SHA256 (electron/rust/crates/unicode-id-0.3.5.crate) = 10103c57044730945224467c09f71a4db0071c123a0648cc3e818913bde6b561 SIZE (electron/rust/crates/unicode-id-0.3.5.crate) = 16807 SHA256 (electron/rust/crates/unicode-id-start-1.3.0.crate) = 97e2a3c5fc9de285c0e805d98eba666adb4b2d9e1049ce44821ff7707cc34e91 SIZE (electron/rust/crates/unicode-id-start-1.3.0.crate) = 43825 SHA256 (electron/rust/crates/unicode-ident-1.0.13.crate) = e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe SIZE (electron/rust/crates/unicode-ident-1.0.13.crate) = 43279 SHA256 (electron/rust/crates/unicode-normalization-0.1.24.crate) = 5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956 SIZE (electron/rust/crates/unicode-normalization-0.1.24.crate) = 126536 SHA256 (electron/rust/crates/unicode-segmentation-1.12.0.crate) = f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493 SIZE (electron/rust/crates/unicode-segmentation-1.12.0.crate) = 106323 SHA256 (electron/rust/crates/unicode-width-0.1.14.crate) = 7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af SIZE (electron/rust/crates/unicode-width-0.1.14.crate) = 271615 SHA256 (electron/rust/crates/url-2.5.2.crate) = 22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c SIZE (electron/rust/crates/url-2.5.2.crate) = 79704 SHA256 (electron/rust/crates/uuid-1.10.0.crate) = 81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314 SIZE (electron/rust/crates/uuid-1.10.0.crate) = 47648 SHA256 (electron/rust/crates/version_check-0.9.5.crate) = 0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a SIZE (electron/rust/crates/version_check-0.9.5.crate) = 15554 SHA256 (electron/rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423 SIZE (electron/rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131 SHA256 (electron/rust/crates/wasm-bindgen-0.2.93.crate) = a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5 SIZE (electron/rust/crates/wasm-bindgen-0.2.93.crate) = 43769 SHA256 (electron/rust/crates/wasm-bindgen-backend-0.2.93.crate) = 9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b SIZE (electron/rust/crates/wasm-bindgen-backend-0.2.93.crate) = 30344 SHA256 (electron/rust/crates/wasm-bindgen-macro-0.2.93.crate) = 585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf SIZE (electron/rust/crates/wasm-bindgen-macro-0.2.93.crate) = 6822 SHA256 (electron/rust/crates/wasm-bindgen-macro-support-0.2.93.crate) = afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836 SIZE (electron/rust/crates/wasm-bindgen-macro-support-0.2.93.crate) = 20642 SHA256 (electron/rust/crates/wasm-bindgen-shared-0.2.93.crate) = c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484 SIZE (electron/rust/crates/wasm-bindgen-shared-0.2.93.crate) = 7527 SHA256 (electron/rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b SIZE (electron/rust/crates/windows-sys-0.59.0.crate) = 2387323 SHA256 (electron/rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973 SIZE (electron/rust/crates/windows-targets-0.52.6.crate) = 6403 SHA256 (electron/rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3 SIZE (electron/rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718 SHA256 (electron/rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469 SIZE (electron/rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615 SHA256 (electron/rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b SIZE (electron/rust/crates/windows_i686_gnu-0.52.6.crate) = 880402 SHA256 (electron/rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66 SIZE (electron/rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940 SHA256 (electron/rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66 SIZE (electron/rust/crates/windows_i686_msvc-0.52.6.crate) = 901163 SHA256 (electron/rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78 SIZE (electron/rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363 SHA256 (electron/rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d SIZE (electron/rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707 SHA256 (electron/rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec SIZE (electron/rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564 SHA256 (electron/rust/crates/wyz-0.5.1.crate) = 05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed SIZE (electron/rust/crates/wyz-0.5.1.crate) = 18790 SHA256 (electron/rust/crates/xxhash-rust-0.8.12.crate) = 6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984 SIZE (electron/rust/crates/xxhash-rust-0.8.12.crate) = 21329 SHA256 (electron/rust/crates/zerocopy-0.7.35.crate) = 1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0 SIZE (electron/rust/crates/zerocopy-0.7.35.crate) = 152645 SHA256 (electron/rust/crates/zerocopy-derive-0.7.35.crate) = fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e SIZE (electron/rust/crates/zerocopy-derive-0.7.35.crate) = 37829 SHA256 (electron/yarn-4.12.0.tgz) = bd58d06826ce9542c4cd904fe10bab7bc718ea2cc39a45d9fbd15f2edb45761c SIZE (electron/yarn-4.12.0.tgz) = 1056794 -SHA256 (electron/electron41-41.3.0-node-modules.tar.xz) = 9ded0bbcd3c5db0b211a670695a5cd39b06240eb3cde395fcc8990702f45da14 -SIZE (electron/electron41-41.3.0-node-modules.tar.xz) = 63583255 -SHA256 (electron/electron-electron-v41.3.0_GH0.tar.gz) = d5394172ad19b0d251ad7e370295a305c64b2974187d2acfccbcb4ffe4cb9e14 -SIZE (electron/electron-electron-v41.3.0_GH0.tar.gz) = 17096687 +SHA256 (electron/electron41-41.5.0-node-modules.tar.xz) = 9ded0bbcd3c5db0b211a670695a5cd39b06240eb3cde395fcc8990702f45da14 +SIZE (electron/electron41-41.5.0-node-modules.tar.xz) = 63583255 +SHA256 (electron/electron-electron-v41.5.0_GH0.tar.gz) = a5ba9121a71731c26c70e784c3efd31c3ba578f34f0f110374c2d5dd81e26414 +SIZE (electron/electron-electron-v41.5.0_GH0.tar.gz) = 18801379 SHA256 (electron/nodejs-node-v24.15.0_GH0.tar.gz) = 5cfb169b21878f50876e0c6a77db1a5e40d733960232682bebb5e267246a2e80 SIZE (electron/nodejs-node-v24.15.0_GH0.tar.gz) = 126716937 SHA256 (electron/nodejs-nan-675cefebca42410733da8a454c8d9391fcebfbc2_GH0.tar.gz) = 3983c68f19ed75dd37dc228eab385093ae2533132730f253f0c3d19ff10788e3 SIZE (electron/nodejs-nan-675cefebca42410733da8a454c8d9391fcebfbc2_GH0.tar.gz) = 111323 SHA256 (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = f4ebb40a8d85dbb7ef02aa0571b2f8e22182c6d73b6992484a53c90047779d01 SIZE (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = 2112918 SHA256 (electron/ReactiveCocoa-ReactiveObjC-74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76_GH0.tar.gz) = 88e65f116c7a06fccedb43970fba63080a57a4e5dc29147d2cdfe1ee58dd0546 SIZE (electron/ReactiveCocoa-ReactiveObjC-74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76_GH0.tar.gz) = 1136238 SHA256 (electron/Mantle-Mantle-78d3966b3c331292ea29ec38661b25df0a245948_GH0.tar.gz) = a365df6d83e0be3cc000b70bd39734d80c28f0d9983ebe44698337a2ca464bb1 SIZE (electron/Mantle-Mantle-78d3966b3c331292ea29ec38661b25df0a245948_GH0.tar.gz) = 62962 SHA256 (electron/EngFlow-reclient-configs-955335c30a752e9ef7bff375baab5e0819b6c00d_GH0.tar.gz) = c148f76220fc41a89ffeaf370c2cc175577be184688b12aa6fec5f8ac6c714c4 SIZE (electron/EngFlow-reclient-configs-955335c30a752e9ef7bff375baab5e0819b6c00d_GH0.tar.gz) = 13014 SHA256 (electron/rollup-rollup-v4.22.4_GH0.tar.gz) = a7e5c09f00fe50adabe27fef8455510f156cf73fee8aef1faf3804b653988e4c SIZE (electron/rollup-rollup-v4.22.4_GH0.tar.gz) = 1732642 SHA256 (electron/evanw-esbuild-v0.27.1_GH0.tar.gz) = bcc3abdc911961ef04340714dc69ddc34af6d2e2c60a1c4036d1c7f1a3fc4a23 SIZE (electron/evanw-esbuild-v0.27.1_GH0.tar.gz) = 1978868 diff --git a/devel/electron41/files/packagejsons/.yarn/README.md b/devel/electron41/files/packagejsons/.yarn/README.md new file mode 100644 index 000000000000..5e13264d4254 --- /dev/null +++ b/devel/electron41/files/packagejsons/.yarn/README.md @@ -0,0 +1,82 @@ +# Vendored Yarn release + +This directory holds the Yarn release used by this repo (`yarnPath` in +`.yarnrc.yml`). The release file is checked in so every contributor and CI job +runs the exact same Yarn, and so we can carry small local patches when needed. + +`releases/yarn-4.12.0.cjs` currently carries one such patch, described below. +If you bump the Yarn version, read the **Upgrading Yarn** section first. + +## Patch: use `JsZipImpl` for the node-modules link step + +### What changed + +Two call sites in `releases/yarn-4.12.0.cjs` are modified so the +`node-modules` linker (and the `pnpm`-loose linker) construct their read-only +`ZipOpenFS` with `customZipImplementation: ST` — Yarn's pure-JS `JsZipImpl` — +instead of falling through to the default WASM-backed `LibZipImpl`: + +```text +new $f({maxOpenFiles:80,readOnlyArchives:!0}) + → new $f({maxOpenFiles:80,readOnlyArchives:!0,customZipImplementation:ST}) +``` + +A comment block at the top of the `.cjs` file marks the file as patched and +points back here. + +### Why + +On the `linux-arm` CI test shards we run a 32-bit `arm32v7` container. During +`yarn install`'s **Link step**, Yarn opens up to 80 cache zips concurrently. +With `LibZipImpl`, each open zip is `readFileSync`'d into a Node `Buffer` +**and copied again into the WASM linear memory**, and every file read does a +WASM `_malloc(size)` for the entry. The WASM heap has to grow as a single +contiguous region of the 32-bit address space; once enough zips are resident, +the `_malloc` for a large entry — most often `typescript/lib/typescript.js` +(~9 MB inside a ~22 MB zip) — fails. + +Yarn's cross-FS `copyFilePromise` swallows the underlying error and re-throws +a generic one, so CI shows: + +```text +YN0001: While persisting .../typescript-patch-...zip/node_modules/typescript/ + EINVAL: invalid argument, copyfile '/node_modules/typescript/lib/typescript.js' -> '...' +``` + +The unmasked form (occasionally seen on `pdfjs-dist`) is the WASM-heap failure +string `Couldn't allocate enough memory`. This started failing ~1-in-3 +`linux-arm / test` shards at **Install Dependencies** on 2026-04-13, after +[#50692](https://github.com/electron/electron/pull/50692) grew the cache enough +to push the 32-bit process over the edge nondeterministically — e.g. +[run 24739817558](https://github.com/electron/electron/actions/runs/24739817558/job/72380803746). + +`JsZipImpl` avoids the problem entirely: it opens the zip by file descriptor, +reads only the central directory into memory, and `readSync`s individual +entries into ordinary Node `Buffer`s — **no WASM heap involved**. It is +read-only and path-based, which is exactly how the linker uses these archives. + +There is no `.yarnrc.yml` setting or environment variable to select the zip +implementation (verified against the bundle), so editing the vendored release +is the only way to switch it short of re-implementing the linker in a plugin. + +Upstream references: +[yarnpkg/berry#3972](https://github.com/yarnpkg/berry/issues/3972), +[yarnpkg/berry#6722](https://github.com/yarnpkg/berry/issues/6722), +[yarnpkg/berry#6550](https://github.com/yarnpkg/berry/issues/6550). + +### Upgrading Yarn + +When bumping `releases/yarn-*.cjs`: + +1. Check whether upstream now defaults `readOnlyArchives` opens to `JsZipImpl`, + or exposes a config knob for the zip implementation. If so, drop this patch. +2. Otherwise, re-apply: search the new bundle for + `maxOpenFiles:80,readOnlyArchives:!0` (the surrounding minified identifiers + will differ) and add `,customZipImplementation:` — that + symbol is whatever the new bundle exports as `JsZipImpl` from + `@yarnpkg/libzip`. +3. Re-add the header comment pointing back to this README. +4. Verify with + `rm -rf node_modules spec/node_modules && node script/yarn.js install --immutable --mode=skip-build` + and confirm `node_modules/typescript/lib/typescript.js` is byte-identical to + an unpatched install. diff --git a/devel/electron41/files/packagejsons/npm/package.json b/devel/electron41/files/packagejsons/npm/package.json index 5f029ee4c7c0..6d453ce21d9a 100644 --- a/devel/electron41/files/packagejsons/npm/package.json +++ b/devel/electron41/files/packagejsons/npm/package.json @@ -1,18 +1,28 @@ { "main": "index.js", "types": "electron.d.ts", "bin": { "electron": "cli.js" }, "scripts": { "postinstall": "node install.js" }, + "files": [ + "LICENSE", + "README.md", + "abi_version", + "checksums.json", + "cli.js", + "electron.d.ts", + "index.js", + "install.js" + ], "dependencies": { "@electron/get": "^2.0.0", "@types/node": "^24.9.0", "extract-zip": "^2.0.1" }, "engines": { "node": ">= 12.20.55" } } diff --git a/devel/electron41/files/packagejsons/package.json b/devel/electron41/files/packagejsons/package.json index a738e80d12d2..8cd3ee8ce35d 100644 --- a/devel/electron41/files/packagejsons/package.json +++ b/devel/electron41/files/packagejsons/package.json @@ -1,165 +1,165 @@ { "name": "@electron-ci/dev-root", "version": "0.0.0-development", "repository": "https://github.com/electron/electron", "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS", "devDependencies": { "@azure/storage-blob": "^12.28.0", "@datadog/datadog-ci": "^4.1.2", "@electron/asar": "^4.0.1", "@electron/docs-parser": "^2.0.0", "@electron/fiddle-core": "^1.3.4", "@electron/github-app-auth": "^3.2.0", "@electron/lint-roller": "^3.2.0", "@electron/typescript-definitions": "^9.1.5", "@octokit/rest": "^20.1.2", "@primer/octicons": "^10.0.0", "@sentry/cli": "1.72.0", "@types/minimist": "^1.2.5", "@types/node": "^24.9.0", "@types/semver": "^7.5.8", "@types/stream-json": "^1.7.8", "@types/temp": "^0.9.4", "@typescript-eslint/eslint-plugin": "^8.32.1", "@typescript-eslint/parser": "^8.7.0", "@xmldom/xmldom": "^0.8.11", "buffer": "^6.0.3", "chalk": "^4.1.0", "check-for-leaks": "^1.2.1", "eslint": "^8.57.1", "eslint-config-standard": "^17.1.0", "eslint-plugin-import": "^2.32.0", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-mocha": "^10.5.0", "eslint-plugin-n": "^16.6.2", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.6.0", "events": "^3.2.0", "folder-hash": "^4.1.1", "got": "^11.8.5", "husky": "^9.1.7", "lint-staged": "^16.1.0", "markdownlint-cli2": "^0.18.0", "minimist": "^1.2.8", "node-gyp": "^11.4.2", "null-loader": "^4.0.1", "pre-flight": "^2.0.0", "process": "^0.11.10", "remark-cli": "^12.0.1", "remark-preset-lint-markdown-style-guide": "^6.0.1", "semver": "^7.6.3", "stream-json": "^1.9.1", "tap-xunit": "^2.4.1", "temp": "^0.9.4", "timers-browserify": "1.4.2", "ts-loader": "^8.0.2", "ts-node": "6.2.0", "typescript": "^5.8.3", "url": "^0.11.4", "webpack": "^5.95.0", "webpack-cli": "^6.0.1", "wrapper-webpack-plugin": "^2.2.0", "yaml": "^2.8.1" }, "private": true, "scripts": { "asar": "asar", "generate-version-json": "node script/generate-version-json.js", "lint": "node ./script/lint.js && npm run lint:docs && npm run lint:chromium-roller", "lint:js": "node ./script/lint.js --js", "lint:clang-format": "python3 script/run-clang-format.py -r -c shell/ || (echo \"\\nCode not formatted correctly.\" && exit 1)", "lint:clang-tidy": "ts-node ./script/run-clang-tidy.ts", "lint:cpp": "node ./script/lint.js --cc", "lint:objc": "node ./script/lint.js --objc", "lint:py": "node ./script/lint.js --py", "lint:gn": "node ./script/lint.js --gn", "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:ts-check-js-in-markdown && npm run lint:docs-fiddles && npm run lint:docs-relative-links && npm run lint:markdown && npm run lint:api-history", "lint:docs-fiddles": "standard \"docs/fiddles/**/*.js\"", "lint:docs-relative-links": "lint-roller-markdown-links --resource-root . --root docs \"**/*.md\"", "lint:markdown": "node ./script/lint.js --md", "lint:ts-check-js-in-markdown": "lint-roller-markdown-ts-check --root docs \"**/*.md\" --ignore \"breaking-changes.md\"", "lint:js-in-markdown": "lint-roller-markdown-standard --root docs \"**/*.md\"", "lint:api-history": "lint-roller-markdown-api-history --root \"./docs/api/\" --schema \"./docs/api-history.schema.json\" --breaking-changes-file \"./docs/breaking-changes.md\" --check-placement --check-strings \"*.md\"", "lint:chromium-roller": "node ./script/lint-roller-chromium-changes.mjs", "create-api-json": "node script/create-api-json.mjs", "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --api=electron-api.json && node spec/ts-smoke/runner.js", "gn-typescript-definitions": "npm run create-typescript-definitions && node script/cp.mjs electron.d.ts", "pre-flight": "pre-flight", "gn-check": "node ./script/gn-check.js", - "gn-format": "python3 script/run-gn-format.py", + "gn-format": "node ./script/lint.js --gn --fix", "precommit": "lint-staged", "preinstall": "node -e 'process.exit(0)'", "pretest": "npm run create-typescript-definitions", "prepack": "check-for-leaks", "repl": "node ./script/start.js --interactive", "start": "node ./script/start.js", "test": "node ./script/spec-runner.js", "tsc": "tsc", "webpack": "webpack" }, "license": "MIT", "author": "Electron Community", "keywords": [ "electron" ], "lint-staged": { "*": [ "npm run lint:chromium-roller" ], "*.{js,ts}": [ "node script/lint.js --js --fix --only --" ], "*.{js,ts,d.ts}": [ "ts-node script/gen-filenames.ts" ], "*.{cc,mm,c,h}": [ "python3 script/run-clang-format.py -r -c --fix" ], "*.md": [ "npm run lint:docs" ], "*.{gn,gni}": [ "npm run gn-check", - "npm run gn-format" + "node ./script/lint.js --gn --fix --only --" ], "*.py": [ "node script/lint.js --py --fix --only --" ], "docs/api/**/*.md": [ "ts-node script/gen-filenames.ts", "markdownlint-cli2 --config .autofix.markdownlint-cli2.jsonc --fix", "git add filenames.auto.gni" ], "{*.patch,.patches}": [ "node script/lint.js --patches --only --", "ts-node script/check-patch-diff.ts" ], "DEPS": [ "node script/gen-hunspell-filenames.js", "node script/gen-libc++-filenames.js" ], ".github/workflows/pipeline-segment-electron-build.yml": [ "node script/copy-pipeline-segment-publish.js", "git add .github/workflows/pipeline-segment-electron-publish.yml" ] }, "resolutions": { "dbus-native/xml2js": "0.5.0", "abstract-socket": "github:deepak1556/node-abstractsocket#928cc591decd12aff7dad96449da8afc29832c19", "minimist@npm:~0.0.1": "0.2.4" }, "packageManager": "yarn@4.12.0", "workspaces": [ ".github/workflows", "spec", "spec/fixtures/native-addon/*" ], "dependenciesMeta": { "@sentry/cli": { "built": true }, "abstract-socket": { "built": true } } } diff --git a/devel/electron41/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc b/devel/electron41/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc index 11e47c0cfa06..15415265063e 100644 --- a/devel/electron41/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc +++ b/devel/electron41/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc @@ -1,56 +1,56 @@ ---- chrome/browser/ui/startup/startup_browser_creator_impl.cc.orig 2026-03-13 16:54:03 UTC +--- chrome/browser/ui/startup/startup_browser_creator_impl.cc.orig 2026-04-27 19:50:04 UTC +++ chrome/browser/ui/startup/startup_browser_creator_impl.cc @@ -69,7 +69,7 @@ #include "content/public/browser/storage_partition.h" #include "content/public/common/content_switches.h" -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) #include "ui/display/screen.h" #endif -@@ -87,7 +87,7 @@ - #include "components/app_restore/full_restore_utils.h" +@@ -91,7 +91,7 @@ + #include "chrome/browser/ui/browser_window/public/profile_browser_collection.h" #endif -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) #include "chrome/browser/search_integrity/search_integrity.h" #include "chrome/browser/search_integrity/search_integrity_factory.h" #include "chrome/browser/ui/webui/whats_new/whats_new_fetcher.h" -@@ -132,7 +132,7 @@ Browser* GetExistingBrowserForOpenBehavior( - chrome::startup::IsProcessStartup process_startup) { - Browser* workspace_browser = chrome::FindLastActiveWithProfile(profile); +@@ -160,7 +160,7 @@ Browser* GetExistingBrowserForOpenBehavior( + BrowserCollection::Order::kActivation); + #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) const bool match_original_profiles = process_startup == chrome::startup::IsProcessStartup::kYes; display::Screen* const screen = display::Screen::Get(); -@@ -280,7 +280,7 @@ Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser( +@@ -308,7 +308,7 @@ Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser( // at the state of the MessageLoop. Browser::CreateParams params = Browser::CreateParams(profile_, false); params.creation_source = Browser::CreationSource::kStartupCreator; -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) params.startup_id = command_line_->GetSwitchValueASCII("desktop-startup-id"); #endif -@@ -310,7 +310,7 @@ Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser( +@@ -338,7 +338,7 @@ Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser( continue; } -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Start the What's New fetch but don't add the tab at this point. The tab // will open as the foreground tab only if the remote content can be // retrieved successfully. This prevents needing to automatically close the -@@ -517,7 +517,7 @@ void StartupBrowserCreatorImpl::DetermineURLsAndLaunch +@@ -545,7 +545,7 @@ void StartupBrowserCreatorImpl::DetermineURLsAndLaunch : CHROME_VERSION_STRING; MaybeShowNonMilestoneUpdateToast(browser, current_version_string); } -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Check for DSE integrity if flag is enabled. if (base::FeatureList::IsEnabled(features::kDseIntegrity)) { search_integrity::SearchIntegrity* search_integrity_service = diff --git a/devel/electron41/files/patch-electron_BUILD.gn b/devel/electron41/files/patch-electron_BUILD.gn index fb03db150a5d..613929f3915b 100644 --- a/devel/electron41/files/patch-electron_BUILD.gn +++ b/devel/electron41/files/patch-electron_BUILD.gn @@ -1,62 +1,62 @@ ---- electron/BUILD.gn.orig 2026-04-22 19:52:17 UTC +--- electron/BUILD.gn.orig 2026-05-01 21:06:40 UTC +++ electron/BUILD.gn -@@ -557,7 +557,7 @@ source_set("electron_lib") { +@@ -560,7 +560,7 @@ source_set("electron_lib") { defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ] } - if (!is_mas_build) { + if (!is_mas_build && !is_bsd) { deps += [ "//components/crash/core/app", "//components/crash/core/browser", -@@ -656,6 +656,12 @@ source_set("electron_lib") { +@@ -659,6 +659,12 @@ source_set("electron_lib") { cflags_objcc = [ "-fobjc-weak" ] } } + if (is_bsd) { + sources -= [ + "shell/common/crash_keys.cc", + "shell/common/crash_keys.h", + ] + } if (is_linux) { libs = [ "xshmfence" ] deps += [ -@@ -1241,7 +1247,7 @@ if (is_mac) { +@@ -1244,7 +1250,7 @@ if (is_mac) { ":electron_lib", ":electron_win32_resources", ":packed_resources", - "//components/crash/core/app", + # "//components/crash/core/app", "//content:sandbox_helper_win", "//electron/buildflags", "//third_party/electron_node:libnode", -@@ -1268,7 +1274,7 @@ if (is_mac) { +@@ -1271,7 +1277,7 @@ if (is_mac) { public_deps = [ "//tools/v8_context_snapshot" ] } - if (is_linux) { + if (is_linux && !is_bsd) { data_deps += [ "//components/crash/core/app:chrome_crashpad_handler" ] } -@@ -1335,7 +1341,7 @@ if (is_mac) { +@@ -1338,7 +1344,7 @@ if (is_mac) { configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } - if (is_linux) { + if (is_linux && !is_bsd) { deps += [ "//sandbox/linux:chrome_sandbox" ] } } -@@ -1456,7 +1462,9 @@ dist_zip("electron_dist_zip") { +@@ -1459,7 +1465,9 @@ dist_zip("electron_dist_zip") { ] } - data_deps += [ "//sandbox/linux:chrome_sandbox" ] + if (!is_bsd) { + data_deps += [ "//sandbox/linux:chrome_sandbox" ] + } } deps = data_deps outputs = [ "$root_build_dir/dist.zip" ] diff --git a/devel/electron41/files/patch-electron_shell_app_electron__main__delegate.cc b/devel/electron41/files/patch-electron_shell_app_electron__main__delegate.cc index 39787492ee85..231133e195b6 100644 --- a/devel/electron41/files/patch-electron_shell_app_electron__main__delegate.cc +++ b/devel/electron41/files/patch-electron_shell_app_electron__main__delegate.cc @@ -1,65 +1,65 @@ ---- electron/shell/app/electron_main_delegate.cc.orig 2026-03-17 08:46:52 UTC +--- electron/shell/app/electron_main_delegate.cc.orig 2026-05-01 21:06:40 UTC +++ electron/shell/app/electron_main_delegate.cc -@@ -64,7 +64,7 @@ +@@ -67,7 +67,7 @@ #include "chrome/child/v8_crashpad_support_win.h" #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) #include "base/nix/xdg_util.h" #include "base/posix/global_descriptors.h" #include "content/public/common/content_descriptors.h" -@@ -72,7 +72,7 @@ +@@ -75,7 +75,7 @@ #include "v8/include/v8.h" #endif -#if !IS_MAS_BUILD() +#if !IS_MAS_BUILD() && !BUILDFLAG(IS_BSD) #include "components/crash/core/app/crash_switches.h" // nogncheck #include "components/crash/core/app/crashpad.h" // nogncheck #include "components/crash/core/common/crash_key.h" -@@ -212,7 +212,7 @@ std::optional ElectronMainDelegate::BasicStartupC +@@ -215,7 +215,7 @@ std::optional ElectronMainDelegate::BasicStartupC base::win::PinUser32(); #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Check for --no-sandbox parameter when running as root. if (getuid() == 0 && IsSandboxEnabled(command_line)) LOG(FATAL) << "Running as root without --" -@@ -242,7 +242,7 @@ void ElectronMainDelegate::PreSandboxStartup() { +@@ -245,7 +245,7 @@ void ElectronMainDelegate::PreSandboxStartup() { auto* command_line = base::CommandLine::ForCurrentProcess(); std::string process_type = GetProcessType(); -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Register the pseudonymization salt descriptor in GlobalDescriptors. // (see https://crbug.com/40850085) Only affects processes launched // without the zygote (i.e. utility processes) -@@ -276,7 +276,7 @@ void ElectronMainDelegate::PreSandboxStartup() { +@@ -279,7 +279,7 @@ void ElectronMainDelegate::PreSandboxStartup() { /* is_preinit = */ IsBrowserProcess() || IsZygoteProcess()); #endif -#if !IS_MAS_BUILD() +#if !IS_MAS_BUILD() && !BUILDFLAG(IS_BSD) crash_reporter::InitializeCrashKeys(); #endif -@@ -311,7 +311,7 @@ void ElectronMainDelegate::PreSandboxStartup() { +@@ -314,7 +314,7 @@ void ElectronMainDelegate::PreSandboxStartup() { } #endif -#if !IS_MAS_BUILD() +#if !IS_MAS_BUILD() && !BUILDFLAG(IS_BSD) crash_keys::SetCrashKeysFromCommandLine(*command_line); crash_keys::SetPlatformCrashKey(); #endif -@@ -351,7 +351,7 @@ std::optional ElectronMainDelegate::PreBrowserMai +@@ -354,7 +354,7 @@ std::optional ElectronMainDelegate::PreBrowserMai #if BUILDFLAG(IS_MAC) RegisterAtomCrApp(); #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Set the global activation token sent as an environment variable. auto env = base::Environment::Create(); base::nix::ExtractXdgActivationTokenFromEnv(*env); diff --git a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc index 7e6775952bde..2824506f09a8 100644 --- a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc +++ b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc @@ -1,74 +1,74 @@ ---- electron/shell/browser/api/electron_api_app.cc.orig 2026-04-15 14:10:25 UTC +--- electron/shell/browser/api/electron_api_app.cc.orig 2026-05-01 21:06:40 UTC +++ electron/shell/browser/api/electron_api_app.cc -@@ -101,7 +101,7 @@ +@@ -102,7 +102,7 @@ #include "shell/common/process_util.h" #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) #include "base/nix/scoped_xdg_activation_token_injector.h" #include "base/nix/xdg_util.h" #endif -@@ -429,7 +429,7 @@ bool NotificationCallbackWrapper( +@@ -430,7 +430,7 @@ bool NotificationCallbackWrapper( base::CommandLine cmd, const base::FilePath& cwd, const std::vector additional_data) { -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Set the global activation token sent as a command line switch by another // electron app instance. This also removes the switch after use to prevent // any side effects of leaving it in the command line after this point. -@@ -614,7 +614,7 @@ void App::OnFinishLaunching(base::DictValue launch_inf +@@ -615,7 +615,7 @@ void App::OnFinishLaunching(base::DictValue launch_inf } void App::OnFinishLaunching(base::DictValue launch_info) { -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Set the application name for audio streams shown in external // applications. Only affects pulseaudio currently. media::AudioManager::SetGlobalAppName(Browser::Get()->GetName()); -@@ -963,7 +963,7 @@ void App::SetDesktopName(const std::string& desktop_na +@@ -964,7 +964,7 @@ void App::SetDesktopName(const std::string& desktop_na } void App::SetDesktopName(const std::string& desktop_name) { -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) auto env = base::Environment::Create(); env->SetVar("CHROME_DESKTOP", desktop_name); #endif -@@ -1065,7 +1065,7 @@ bool App::RequestSingleInstanceLock(gin::Arguments* ar +@@ -1066,7 +1066,7 @@ bool App::RequestSingleInstanceLock(gin::Arguments* ar base::BindRepeating(NotificationCallbackWrapper, cb)); #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Read the xdg-activation token and set it in the command line for the // duration of the notification in order to ensure this is propagated to an // already running electron app instance if it exists. -@@ -1452,7 +1452,7 @@ std::vector App::GetAppMetrics +@@ -1453,7 +1453,7 @@ std::vector App::GetAppMetrics pid_dict.Set("name", process_metric.second->name); } -#if !BUILDFLAG(IS_LINUX) +#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD) auto memory_info = process_metric.second->GetMemoryInfo(); auto memory_dict = gin_helper::Dictionary::CreateEmpty(isolate); -@@ -1854,7 +1854,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild +@@ -1878,7 +1878,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild .SetMethod( "removeAsDefaultProtocolClient", base::BindRepeating(&Browser::RemoveAsDefaultProtocolClient, browser)) -#if !BUILDFLAG(IS_LINUX) +#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD) .SetMethod( "getApplicationInfoForProtocol", base::BindRepeating(&Browser::GetApplicationInfoForProtocol, browser)) -@@ -1912,7 +1912,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild +@@ -1937,7 +1937,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild .SetMethod("getJumpListSettings", &App::GetJumpListSettings) .SetMethod("setJumpList", &App::SetJumpList) #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) .SetMethod("isUnityRunning", base::BindRepeating(&Browser::IsUnityRunning, browser)) #endif diff --git a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc index 3175eb536f03..d176181fd37e 100644 --- a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc +++ b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc @@ -1,77 +1,77 @@ ---- electron/shell/browser/api/electron_api_web_contents.cc.orig 2026-04-22 19:52:17 UTC +--- electron/shell/browser/api/electron_api_web_contents.cc.orig 2026-05-01 21:06:40 UTC +++ electron/shell/browser/api/electron_api_web_contents.cc @@ -164,11 +164,11 @@ #include "ui/base/cocoa/defaults_utils.h" #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) #include "ui/linux/linux_ui.h" #endif -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) #include "ui/aura/window.h" #include "ui/gfx/font_render_params.h" #endif @@ -200,7 +200,7 @@ #include "content/public/browser/plugin_service.h" #endif -#if !IS_MAS_BUILD() +#if !IS_MAS_BUILD() && !BUILDFLAG(IS_BSD) #include "chrome/browser/hang_monitor/hang_crash_dump.h" // nogncheck #endif -@@ -635,7 +635,7 @@ std::optional GetCursorBlinkInterval( +@@ -637,7 +637,7 @@ std::optional GetCursorBlinkInterval( ui::TextInsertionCaretBlinkPeriodFromDefaults()); if (system_value) return *system_value; -#elif BUILDFLAG(IS_LINUX) +#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) if (auto* native_theme = ui::NativeTheme::GetInstanceForNativeUi()) return native_theme->caret_blink_interval(); #elif BUILDFLAG(IS_WIN) -@@ -1005,7 +1005,7 @@ void WebContents::InitWithSessionAndOptions( +@@ -1010,7 +1010,7 @@ void WebContents::InitWithSessionAndOptions( accept_languages.pop_back(); prefs->accept_languages = accept_languages; -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) // Update font settings. static const gfx::FontRenderParams params( gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr)); -@@ -2837,13 +2837,13 @@ void WebContents::ForcefullyCrashRenderer() { +@@ -2843,13 +2843,13 @@ void WebContents::ForcefullyCrashRenderer() { content::RenderProcessHost* rph = rwh->GetProcess(); if (rph) { -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) // A generic |CrashDumpHungChildProcess()| is not implemented for Linux. // Instead we send an explicit IPC to crash on the renderer's IO thread. rph->ForceCrash(); #else // Try to generate a crash report for the hung process. -#if !IS_MAS_BUILD() +#if !IS_MAS_BUILD() && !BUILDFLAG(IS_BSD) CrashDumpHungChildProcess(rph->GetProcess().Handle()); #endif rph->Shutdown(content::RESULT_CODE_HUNG); -@@ -3547,7 +3547,7 @@ void WebContents::Focus() { +@@ -3559,7 +3559,7 @@ void WebContents::Focus() { void WebContents::Focus() { // Focusing on WebContents does not automatically focus the window on macOS // and Linux, do it manually to match the behavior on Windows. -#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) if (owner_window()) owner_window()->Focus(true); #endif -@@ -4444,7 +4444,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() { +@@ -4456,7 +4456,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() { } #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) void WebContents::GetDevToolsWindowWMClass(std::string* name, std::string* class_name) { *class_name = Browser::Get()->GetName(); diff --git a/devel/electron41/files/patch-electron_spec_api-app-spec.ts b/devel/electron41/files/patch-electron_spec_api-app-spec.ts index fda51944dc43..e8565ebbc623 100644 --- a/devel/electron41/files/patch-electron_spec_api-app-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-app-spec.ts @@ -1,142 +1,151 @@ ---- electron/spec/api-app-spec.ts.orig 2026-04-22 19:52:17 UTC +--- electron/spec/api-app-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-app-spec.ts -@@ -129,11 +129,11 @@ describe('app module', () => { +@@ -145,11 +145,11 @@ describe('app module', () => { }); describe('app.getPreferredSystemLanguages()', () => { - ifit(process.platform !== 'linux')('should not be empty', () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should not be empty', () => { expect(app.getPreferredSystemLanguages().length).to.not.equal(0); }); - ifit(process.platform === 'linux')('should be empty or contain C entry', () => { + ifit(process.platform === 'linux' || process.platform === 'freebsd')('should be empty or contain C entry', () => { const languages = app.getPreferredSystemLanguages(); if (languages.length) { expect(languages).to.not.include('C'); -@@ -210,7 +210,7 @@ describe('app module', () => { +@@ -226,7 +226,7 @@ describe('app module', () => { expect(code).to.equal(123, 'exit code should be 123, if you see this please tag @MarshallOfSound'); }); - ifit(['darwin', 'linux'].includes(process.platform))('exits gracefully', async function () { + ifit(['darwin', 'linux', 'freebsd'].includes(process.platform))('exits gracefully', async function () { const electronPath = process.execPath; const appPath = path.join(fixturesPath, 'api', 'singleton'); appProcess = cp.spawn(electronPath, [appPath]); -@@ -374,7 +374,7 @@ describe('app module', () => { +@@ -390,7 +390,7 @@ describe('app module', () => { }); // GitHub Actions macOS-13 runners used for x64 seem to have a problem with this test. - ifdescribe(process.platform !== 'linux' && !isMacOSx64)('app.{add|get|clear}RecentDocument(s)', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd' && !isMacOSx64)('app.{add|get|clear}RecentDocument(s)', () => { const tempFiles = [ path.join(fixturesPath, 'foo.txt'), path.join(fixturesPath, 'bar.txt'), -@@ -502,7 +502,7 @@ describe('app module', () => { +@@ -518,7 +518,7 @@ describe('app module', () => { // let w = null // before(function () { - // if (process.platform !== 'linux') { + // if (process.platform !== 'linux' && process.platform !== 'freebsd') { // this.skip() // } // }) -@@ -609,7 +609,7 @@ describe('app module', () => { +@@ -625,7 +625,7 @@ describe('app module', () => { describe('app.badgeCount', () => { const platformIsNotSupported = (process.platform === 'win32') || - (process.platform === 'linux' && !app.isUnityRunning()); + (process.platform === 'linux' && !app.isUnityRunning()) || (process.platform === 'freebsd'); const expectedBadgeCount = 42; -@@ -653,7 +653,7 @@ describe('app module', () => { +@@ -669,7 +669,7 @@ describe('app module', () => { }); }); - ifdescribe(process.platform !== 'linux' && !process.mas && (process.platform !== 'darwin' || process.arch === 'arm64'))('app.get/setLoginItemSettings API', function () { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd' && !process.mas && (process.platform !== 'darwin' || process.arch === 'arm64'))('app.get/setLoginItemSettings API', function () { const isMac = process.platform === 'darwin'; const isWin = process.platform === 'win32'; -@@ -1033,7 +1033,7 @@ describe('app module', () => { +@@ -1049,7 +1049,7 @@ describe('app module', () => { }); }); - ifdescribe(process.platform !== 'linux')('accessibility support functionality', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('accessibility support functionality', () => { it('is mutable', () => { const values = [false, true, false]; const setters: Array<(arg: boolean) => void> = [ -@@ -1302,7 +1302,7 @@ describe('app module', () => { +@@ -1318,7 +1318,7 @@ describe('app module', () => { }); }); - ifdescribe(process.platform !== 'linux')('select-client-certificate event', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('select-client-certificate event', () => { let w: BrowserWindow; before(function () { -@@ -1437,7 +1437,7 @@ describe('app module', () => { +@@ -1451,7 +1451,7 @@ describe('app module', () => { + }); + }); + +- ifdescribe(process.platform === 'linux')('default protocol client APIs with mocked XDG settings', () => { ++ ifdescribe(process.platform === 'linux' || process.platform === 'freebsd')('default protocol client APIs with mocked XDG settings', () => { + const protocol = 'electron-test-linux'; + const desktopFileId = 'electron-test.desktop'; + const protocolMimeType = `x-scheme-handler/${protocol}`; +@@ -1541,7 +1541,7 @@ describe('app module', () => { describe('getApplicationNameForProtocol()', () => { // TODO: Linux CI doesn't have registered http & https handlers - ifit(!(process.env.CI && process.platform === 'linux'))('returns application names for common protocols', function () { + ifit(!(process.env.CI && (process.platform === 'linux' || process.platform === 'freebsd')))('returns application names for common protocols', function () { // We can't expect particular app names here, but these protocols should // at least have _something_ registered. Except on our Linux CI // environment apparently. -@@ -1454,7 +1454,7 @@ describe('app module', () => { +@@ -1558,7 +1558,7 @@ describe('app module', () => { expect(app.getApplicationNameForProtocol('bogus-protocol://')).to.equal(''); }); - ifdescribe(process.platform === 'linux')('on Linux with mocked XDG dirs', () => { + ifdescribe(process.platform === 'linux' || process.platform === 'freebsd')('on Linux with mocked XDG dirs', () => { const fixtureApp = path.join(fixturesPath, 'api', 'protocol-name'); const desktopFileId = 'mock-browser.desktop'; const mockScheme = 'mockproto'; -@@ -1581,7 +1581,7 @@ describe('app module', () => { +@@ -1685,7 +1685,7 @@ describe('app module', () => { }); }); - ifdescribe(process.platform !== 'linux')('getApplicationInfoForProtocol()', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('getApplicationInfoForProtocol()', () => { it('returns promise rejection for a bogus protocol', async function () { await expect( app.getApplicationInfoForProtocol('bogus-protocol://') -@@ -1654,7 +1654,7 @@ describe('app module', () => { +@@ -1758,7 +1758,7 @@ describe('app module', () => { }); // FIXME Get these specs running on Linux CI - ifdescribe(process.platform !== 'linux')('getFileIcon() API', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('getFileIcon() API', () => { const iconPath = path.join(__dirname, 'fixtures/assets/icon.ico'); const sizes = { small: 16, -@@ -1736,7 +1736,7 @@ describe('app module', () => { +@@ -1840,7 +1840,7 @@ describe('app module', () => { expect(entry.memory).to.have.property('privateBytes').that.is.greaterThan(0); } - if (process.platform !== 'linux') { + if (process.platform !== 'linux' && process.platform !== 'freebsd') { expect(entry.sandboxed).to.be.a('boolean'); } -@@ -1810,7 +1810,7 @@ describe('app module', () => { +@@ -1914,7 +1914,7 @@ describe('app module', () => { it('succeeds with complete GPUInfo', async () => { const completeInfo = await getGPUInfo('complete'); - if (process.platform === 'linux') { + if (process.platform === 'linux' || process.platform === 'freebsd') { // For linux and macOS complete info is same as basic info await verifyBasicGPUInfo(completeInfo); const basicInfo = await getGPUInfo('basic'); -@@ -1834,7 +1834,7 @@ describe('app module', () => { +@@ -1938,7 +1938,7 @@ describe('app module', () => { }); }); - ifdescribe(!(process.platform === 'linux' && (process.arch === 'arm64' || process.arch === 'arm')))('sandbox options', () => { + ifdescribe(!((process.platform === 'linux' || process.platform === 'freebsd') && (process.arch === 'arm64' || process.arch === 'arm')))('sandbox options', () => { let appProcess: cp.ChildProcess = null as any; let server: net.Server = null as any; const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-mixed-sandbox' : '/tmp/electron-mixed-sandbox'; diff --git a/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts b/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts index 741b3c8d0c9d..41a223e548da 100644 --- a/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts @@ -1,191 +1,191 @@ ---- electron/spec/api-browser-window-spec.ts.orig 2026-04-22 19:52:17 UTC +--- electron/spec/api-browser-window-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-browser-window-spec.ts @@ -69,7 +69,7 @@ describe('BrowserWindow module', () => { }).not.to.throw(); }); - ifit(process.platform === 'linux')('does not crash when setting large window icons', async () => { + ifit(process.platform === 'linux' || process.platform === 'freebsd')('does not crash when setting large window icons', async () => { const appPath = path.join(fixtures, 'apps', 'xwindow-icon'); const appProcess = childProcess.spawn(process.execPath, [appPath]); await once(appProcess, 'exit'); @@ -326,7 +326,7 @@ describe('BrowserWindow module', () => { }); }); - ifdescribe(process.platform !== 'linux')('BrowserWindow.getContentProtection', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('BrowserWindow.getContentProtection', () => { afterEach(closeAllWindows); it('can set content protection', async () => { const w = new BrowserWindow({ show: false }); @@ -1197,7 +1197,7 @@ describe('BrowserWindow module', () => { describe('BrowserWindow.minimize()', () => { // TODO(codebytere): Enable for Linux once maximize/minimize events work in CI. - ifit(process.platform !== 'linux')('should not be visible when the window is minimized', async () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should not be visible when the window is minimized', async () => { const minimize = once(w, 'minimize'); w.minimize(); await minimize; @@ -1214,7 +1214,7 @@ describe('BrowserWindow module', () => { }); // TODO(dsanders11): Enable for Linux once CI plays nice with these kinds of tests - ifit(process.platform !== 'linux')('should not restore maximized windows', async () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should not restore maximized windows', async () => { const maximize = once(w, 'maximize'); const shown = once(w, 'show'); w.maximize(); @@ -1279,7 +1279,7 @@ describe('BrowserWindow module', () => { expect(w.isFocused()).to.equal(true); }); - ifit(process.platform !== 'linux')('acquires focus status from the other windows', async () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('acquires focus status from the other windows', async () => { const w1 = new BrowserWindow({ show: false }); const w2 = new BrowserWindow({ show: false }); const w3 = new BrowserWindow({ show: false }); @@ -1381,7 +1381,7 @@ describe('BrowserWindow module', () => { expect(w.isFocused()).to.equal(false); }); - ifit(process.platform !== 'linux')('transfers focus status to the next window', async () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('transfers focus status to the next window', async () => { const w1 = new BrowserWindow({ show: false }); const w2 = new BrowserWindow({ show: false }); const w3 = new BrowserWindow({ show: false }); @@ -1886,7 +1886,7 @@ describe('BrowserWindow module', () => { }); }); - ifdescribe(process.platform !== 'linux')('Maximized state', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('Maximized state', () => { it('checks normal bounds when maximized', async () => { const bounds = w.getBounds(); const maximize = once(w, 'maximize'); @@ -2096,7 +2096,7 @@ describe('BrowserWindow module', () => { }); }); - ifdescribe(process.platform !== 'linux')('Minimized state', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('Minimized state', () => { it('checks normal bounds when minimized', async () => { const bounds = w.getBounds(); const minimize = once(w, 'minimize'); @@ -3191,7 +3191,7 @@ describe('BrowserWindow module', () => { describe('BrowserWindow.setOpacity(opacity)', () => { afterEach(closeAllWindows); - ifdescribe(process.platform !== 'linux')(('Windows and Mac'), () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')(('Windows and Mac'), () => { it('make window with initial opacity', () => { const w = new BrowserWindow({ show: false, opacity: 0.5 }); expect(w.getOpacity()).to.equal(0.5); @@ -3217,7 +3217,7 @@ describe('BrowserWindow module', () => { }); }); - ifdescribe(process.platform === 'linux')(('Linux'), () => { + ifdescribe(process.platform === 'linux' || process.platform === 'freebsd')(('Linux'), () => { it('sets 1 regardless of parameter', () => { const w = new BrowserWindow({ show: false }); w.setOpacity(0); @@ -3428,7 +3428,7 @@ describe('BrowserWindow module', () => { expect(overlayRectPreMax.height).to.equal(size); // 'maximize' event is not emitted on Linux in CI. - if (process.platform !== 'linux' && !w.isMaximized()) { + if ((process.platform !== 'linux' && process.platform !== 'freebsd') && !w.isMaximized()) { const maximize = once(w, 'maximize'); w.show(); w.maximize(); @@ -3494,7 +3494,7 @@ describe('BrowserWindow module', () => { expect(preMaxHeight).to.equal(size); // 'maximize' event is not emitted on Linux in CI. - if (process.platform !== 'linux' && !w.isMaximized()) { + if ((process.platform !== 'linux' && process.platform !== 'freebsd') && !w.isMaximized()) { const maximize = once(w, 'maximize'); w.show(); w.maximize(); @@ -4187,7 +4187,7 @@ describe('BrowserWindow module', () => { expect(test.nodeTimers).to.equal(true); expect(test.nodeUrl).to.equal(true); - if (process.platform === 'linux' && test.osSandbox) { + if ((process.platform === 'linux' || process.platform === 'freebsd') && test.osSandbox) { expect(test.creationTime).to.be.null('creation time'); expect(test.systemMemoryInfo).to.be.null('system memory info'); } else { @@ -4692,7 +4692,7 @@ describe('BrowserWindow module', () => { }); }); - ifdescribe(process.platform !== 'linux')('max/minimize events', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('max/minimize events', () => { afterEach(closeAllWindows); it('emits an event when window is maximized', async () => { const w = new BrowserWindow({ show: false }); @@ -4963,7 +4963,7 @@ describe('BrowserWindow module', () => { // TODO(zcbenz): // This test does not run on Linux CI. See: // https://github.com/electron/electron/issues/28699 - ifit(process.platform === 'linux' && !process.env.CI)('should bring a minimized maximized window back to maximized state', async () => { + ifit((process.platform === 'linux' || process.platform === 'freebsd') && !process.env.CI)('should bring a minimized maximized window back to maximized state', async () => { const w = new BrowserWindow({}); const maximize = once(w, 'maximize'); w.maximize(); @@ -4978,7 +4978,7 @@ describe('BrowserWindow module', () => { expect(w.isMaximized()).to.equal(true); }); - ifit(process.platform !== 'linux')('should not break fullscreen state', async () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should not break fullscreen state', async () => { const w = new BrowserWindow({ show: false }); w.show(); @@ -5001,7 +5001,7 @@ describe('BrowserWindow module', () => { }); // TODO(dsanders11): Enable once maximize event works on Linux again on CI - ifdescribe(process.platform !== 'linux')('BrowserWindow.maximize()', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('BrowserWindow.maximize()', () => { afterEach(closeAllWindows); it('should show the window if it is not currently shown', async () => { const w = new BrowserWindow({ show: false }); @@ -5038,7 +5038,7 @@ describe('BrowserWindow module', () => { // TODO(dsanders11): Enable once minimize event works on Linux again. // See https://github.com/electron/electron/issues/28699 - ifit(process.platform !== 'linux')('should not restore a minimized window', async () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should not restore a minimized window', async () => { const w = new BrowserWindow(); const minimize = once(w, 'minimize'); w.minimize(); @@ -5524,7 +5524,7 @@ describe('BrowserWindow module', () => { }); // On Linux there is no "resizable" property of a window. - ifit(process.platform !== 'linux')('does affect maximizability when disabled and enabled', () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('does affect maximizability when disabled and enabled', () => { const w = new BrowserWindow({ show: false }); expect(w.resizable).to.be.true('resizable'); -@@ -5778,7 +5778,7 @@ describe('BrowserWindow module', () => { +@@ -5792,7 +5792,7 @@ describe('BrowserWindow module', () => { }); }); - ifdescribe(process.platform !== 'linux')('window states (excluding Linux)', () => { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('window states (excluding Linux)', () => { // Not implemented on Linux. afterEach(closeAllWindows); -@@ -7028,7 +7028,7 @@ describe('BrowserWindow module', () => { +@@ -7119,7 +7119,7 @@ describe('BrowserWindow module', () => { describe('"transparent" option', () => { afterEach(closeAllWindows); - ifit(process.platform !== 'linux')('correctly returns isMaximized() when the window is maximized then minimized', async () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('correctly returns isMaximized() when the window is maximized then minimized', async () => { const w = new BrowserWindow({ frame: false, transparent: true diff --git a/devel/electron41/files/patch-electron_spec_api-content-tracing-spec.ts b/devel/electron41/files/patch-electron_spec_api-content-tracing-spec.ts index c54661107ec1..6e58be6dc3e1 100644 --- a/devel/electron41/files/patch-electron_spec_api-content-tracing-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-content-tracing-spec.ts @@ -1,20 +1,20 @@ ---- electron/spec/api-content-tracing-spec.ts.orig 2025-04-04 05:26:44 UTC +--- electron/spec/api-content-tracing-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-content-tracing-spec.ts -@@ -9,7 +9,7 @@ import { ifdescribe } from './lib/spec-helpers'; - import { ifdescribe } from './lib/spec-helpers'; +@@ -13,7 +13,7 @@ const fixturesPath = path.resolve(__dirname, 'fixtures + const fixturesPath = path.resolve(__dirname, 'fixtures'); // FIXME: The tests are skipped on linux arm/arm64 -ifdescribe(!(['arm', 'arm64'].includes(process.arch)) || (process.platform !== 'linux'))('contentTracing', () => { +ifdescribe(!(['arm', 'arm64'].includes(process.arch)) || (process.platform !== 'linux' && process.platform !== 'freebsd'))('contentTracing', () => { const record = async (options: TraceConfig | TraceCategoriesAndOptions, outputFilePath: string | undefined, recordTimeInMilliseconds = 1e1) => { await app.whenReady(); -@@ -91,7 +91,7 @@ ifdescribe(!(['arm', 'arm64'].includes(process.arch)) +@@ -95,7 +95,7 @@ ifdescribe(!(['arm', 'arm64'].includes(process.arch)) }); }); - ifdescribe(process.platform !== 'linux')('stopRecording', function () { + ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('stopRecording', function () { if (process.platform === 'win32' && process.arch === 'arm64') { // WOA needs more time this.timeout(10e3); diff --git a/devel/electron41/files/patch-electron_spec_api-protocol-spec.ts b/devel/electron41/files/patch-electron_spec_api-protocol-spec.ts index 33a10d3bc206..93cd18e2e3a8 100644 --- a/devel/electron41/files/patch-electron_spec_api-protocol-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-protocol-spec.ts @@ -1,11 +1,11 @@ ---- electron/spec/api-protocol-spec.ts.orig 2026-04-07 01:35:50 UTC +--- electron/spec/api-protocol-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-protocol-spec.ts -@@ -1757,7 +1757,7 @@ describe('protocol module', () => { +@@ -1899,7 +1899,7 @@ describe('protocol module', () => { // TODO(nornagon): this test doesn't pass on Linux currently, investigate. // test is also flaky on CI on macOS so it is currently disabled there as well. - ifit(process.platform !== 'linux' && (!process.env.CI || process.platform !== 'darwin'))('is fast', async () => { + ifit((process.platform !== 'linux' && process.platform !== 'freebsd') && (!process.env.CI || process.platform !== 'darwin'))('is fast', async () => { // 128 MB of spaces. const chunk = new Uint8Array(128 * 1024 * 1024); chunk.fill(' '.charCodeAt(0)); diff --git a/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts b/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts index 0d9bad806388..15a6746be600 100644 --- a/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts @@ -1,20 +1,20 @@ ---- electron/spec/api-web-contents-spec.ts.orig 2026-04-22 19:52:17 UTC +--- electron/spec/api-web-contents-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-web-contents-spec.ts -@@ -1266,7 +1266,7 @@ describe('webContents module', () => { +@@ -1267,7 +1267,7 @@ describe('webContents module', () => { // back to OpenFolder() which does a blocking DirectoryExists() on the UI // thread (pre-existing behavior). Workspace-gating is covered by the test // above. - ifit(process.platform !== 'linux')('reveals paths under a registered workspace folder without executing them', async () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('reveals paths under a registered workspace folder without executing them', async () => { const w = new BrowserWindow({ show: false }); await openDevTools(w); -@@ -3023,7 +3023,7 @@ describe('webContents module', () => { +@@ -3024,7 +3024,7 @@ describe('webContents module', () => { }); // TODO(codebytere): OOPIF printing is disabled on Linux at the moment due to crashes. - ifit(process.platform !== 'linux')('can print cross-origin iframes', async () => { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('can print cross-origin iframes', async () => { server = http.createServer((_, res) => { res.writeHead(200); res.end(` diff --git a/devel/electron41/files/patch-electron_spec_chromium-spec.ts b/devel/electron41/files/patch-electron_spec_chromium-spec.ts index d7a6bc3a262e..36e22541c6ec 100644 --- a/devel/electron41/files/patch-electron_spec_chromium-spec.ts +++ b/devel/electron41/files/patch-electron_spec_chromium-spec.ts @@ -1,44 +1,44 @@ ---- electron/spec/chromium-spec.ts.orig 2026-04-22 19:52:17 UTC +--- electron/spec/chromium-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/chromium-spec.ts @@ -475,13 +475,13 @@ describe('command line switches', () => { it('should not set an invalid locale', async () => testLocale('asdfkl', `${currentLocale}|${currentSystemLocale}|${currentPreferredLanguages}`)); const lcAll = String(process.env.LC_ALL); - ifit(process.platform === 'linux')('current process has a valid LC_ALL env', async () => { + ifit(process.platform === 'linux' || process.platform === 'freebsd')('current process has a valid LC_ALL env', async () => { // The LC_ALL env should not be set to DOM locale string. expect(lcAll).to.not.equal(app.getLocale()); }); - ifit(process.platform === 'linux')('should not change LC_ALL', async () => testLocale('fr', lcAll, true)); - ifit(process.platform === 'linux')('should not change LC_ALL when setting invalid locale', async () => testLocale('asdfkl', lcAll, true)); - ifit(process.platform === 'linux')('should not change LC_ALL when --lang is not set', async () => testLocale('', lcAll, true)); + ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL', async () => testLocale('fr', lcAll, true)); + ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL when setting invalid locale', async () => testLocale('asdfkl', lcAll, true)); + ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL when --lang is not set', async () => testLocale('', lcAll, true)); }); describe('--remote-debugging-pipe switch', () => { -@@ -3502,12 +3502,12 @@ describe('font fallback', () => { +@@ -3574,12 +3574,12 @@ describe('font fallback', () => { expect(fonts[0].familyName).to.equal('Arial'); } else if (process.platform === 'darwin') { expect(fonts[0].familyName).to.equal('Helvetica'); - } else if (process.platform === 'linux') { + } else if (process.platform === 'linux' || process.platform === 'freebsd') { expect(fonts[0].familyName).to.equal('DejaVu Sans'); } // I think this depends on the distro? We don't specify a default. }); - ifit(process.platform !== 'linux')('should fall back to Japanese font for sans-serif Japanese script', async function () { + ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should fall back to Japanese font for sans-serif Japanese script', async function () { const html = ` -@@ -4060,7 +4060,7 @@ describe('paste execCommand', () => { +@@ -4132,7 +4132,7 @@ describe('paste execCommand', () => { }); }); -ifdescribe((process.platform !== 'linux' || app.isUnityRunning()))('navigator.setAppBadge/clearAppBadge', () => { +ifdescribe(((process.platform !== 'linux' && process.platform !== 'freebsd') || app.isUnityRunning()))('navigator.setAppBadge/clearAppBadge', () => { let w: BrowserWindow; const expectedBadgeCount = 42;