diff options
Diffstat (limited to 'net-im/element-desktop/element-desktop-1.12.11.ebuild')
| -rw-r--r-- | net-im/element-desktop/element-desktop-1.12.11.ebuild | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/net-im/element-desktop/element-desktop-1.12.11.ebuild b/net-im/element-desktop/element-desktop-1.12.11.ebuild new file mode 100644 index 000000000000..1000d7b01bed --- /dev/null +++ b/net-im/element-desktop/element-desktop-1.12.11.ebuild @@ -0,0 +1,219 @@ +# Copyright 2009-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..14} ) + +inherit desktop flag-o-matic multilib python-any-r1 xdg-utils + +DESCRIPTION="A glossy Matrix collaboration client for desktop" +HOMEPAGE="https://element.io/" +LICENSE="Apache-2.0" +SLOT="0" +SRC_URI="" +REPO="https://github.com/vector-im/element-desktop" +ELECTRON_SLOT_DEFAULT="39" +#ELEMENT_COMMIT_ID="ae245c9b1f06e79cec4829f8cd1555206b0ec8f2" +IUSE="electron-36 electron-37 electron-40 native-modules" + +if [[ ${PV} = *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="${REPO}.git" + EGIT_BRANCH="develop" + DOWNLOAD="" + IUSE+=" +build-online" +else + IUSE+=" +build-online" + KEYWORDS="amd64 ~arm64 ~ppc64 ~x86" + DOWNLOAD="${REPO}/archive/" + if [ -z "$ELEMENT_COMMIT_ID" ] + then + DOWNLOAD+="v${PV}.tar.gz -> ${P}.tar.gz" + else + DOWNLOAD+="${ELEMENT_COMMIT_ID}.tar.gz -> ${PN}-${ELEMENT_COMMIT_ID}.tar.gz" + S="${WORKDIR}/${PN}-${ELEMENT_COMMIT_ID}" + fi +fi + +SRC_URI+="${DOWNLOAD}" + +RESTRICT="mirror build-online? ( network-sandbox )" +REQUIRED_USE=" + native-modules? ( build-online ) +" + +COMMON_DEPEND=" + ~net-im/element-web-${PV} + native-modules? ( dev-db/sqlcipher ) + electron-36? ( dev-util/electron:36 ) + electron-37? ( dev-util/electron:37 ) + electron-40? ( dev-util/electron:40 ) + !electron-36? ( + !electron-37? ( + !electron-40? ( + dev-util/electron:${ELECTRON_SLOT_DEFAULT} + ) ) ) +" + +RDEPEND="${COMMON_DEPEND} +" +DEPEND="${COMMON_DEPEND} +" + +BDEPEND=" + ${PYTHON_DEPS} + $(python_gen_any_dep ' + dev-python/setuptools[${PYTHON_USEDEP}] + ') + native-modules? ( || ( dev-lang/rust dev-lang/rust-bin ) ) + net-libs/nodejs[corepack] +" + +python_check_deps() { + python_has_version "dev-python/setuptools[${PYTHON_USEDEP}]" +} + +#TODO: net-im/element-web -> runtime/buildtime dep + +src_unpack() { + if use electron-36; then + export ELECTRON_SLOT=36 + elif use electron-37; then + export ELECTRON_SLOT=37 + elif use electron-40; then + export ELECTRON_SLOT=40 + else + export ELECTRON_SLOT=$ELECTRON_SLOT_DEFAULT + fi + if [ -z "$ELEMENT_COMMIT_ID" ] + then + if [ -f "${DISTDIR}/${P}.tar.gz" ]; then + unpack "${P}".tar.gz || die + else + git-r3_src_unpack + fi + else + unpack "${PN}-${ELEMENT_COMMIT_ID}.tar.gz" || die + fi +} + +src_compile() { + # # OLD_PATH=$PATH + # PATH="/usr/$(get_libdir)/electron-${ELECTRON_SLOT}/node_modules/npm/bin/node-gyp-bin:$PATH" + # PATH="/usr/$(get_libdir)/electron-${ELECTRON_SLOT}/node_modules/npm/bin:$PATH" + # PATH="/usr/$(get_libdir)/electron-${ELECTRON_SLOT}:$PATH" + # PATH="${S}/node_modules/.bin:$PATH"; + # export PATH + # export CFLAGS="${CFLAGS} -I/usr/include/electron-${ELECTRON_SLOT}/node" + # export CPPFLAGS="${CPPFLAGS} -I/usr/include/electron-${ELECTRON_SLOT}/node" + export ELECTRON_SKIP_BINARY_DOWNLOAD=1 + # yarn config set disable-self-update-check true || die + # yarn config set nodedir /usr/include/electron-${ELECTRON_SLOT}/node || die + # # #! Until electron-builder >=22.11.5 + # # yarn config set ignore-engines true || die + + sed -i 's/electron-builder install-app-deps/true/' package.json || die + + # if ! use build-online; then + # ONLINE_OFFLINE="--offline --frozen-lockfile" + # yarn config set yarn-offline-mirror "${DISTDIR}" || die + # fi + + einfo "Removing playwright from dependencies" + sed -i '/playwright":/d' package.json || die + + einfo "Installing node_modules" + pnpm install || die + + # node node_modules/.bin/tsc || die + # node node_modules/.bin/tsx scripts/copy-res.ts || die + pnpm run build || die + + if use native-modules + then + pnpm run build:native || die + fi + + # # Electron-Builder doesn't support ppc64 due to using precompiled binaries + # if ! use ppc64; then + # einfo "Editing ElectronFramework.js" + # sed -i 's/return unpack(options, createDownloadOpts.*$/return true;/' \ + # node_modules/app-builder-lib/out/electron/ElectronFramework.js || die + # sed -i 's/return beforeCopyExtraFiles(options);$/return true;/' \ + # node_modules/app-builder-lib/out/electron/ElectronFramework.js || die + + # #!Error: With electron's node: "Unknown argument" electron/electron#25379 + # #!Error: With electron's node: "Invalid package app.asar" + # /usr/bin/node node_modules/.bin/electron-builder --dir || die + # else + einfo "Manually preparing app.asar" + local distdir="dist/linux-unpacked/resources" + mkdir -p ${distdir}/node_modules || die + cp -r lib ${distdir} || die + # Copying yarn.lock allows freezing versions to the build versions + cp package.json ${distdir} || die + pushd ${distdir} &> /dev/null || die + pnpm install || die + popd &> /dev/null || die + # rm ${distdir}/yarn.lock || die + if use native-modules; then + cp -r .hak/hakModules/matrix-seshat ${distdir}/node_modules/ || die + fi + + einfo "Creating archive" + /usr/bin/node node_modules/@electron/asar/bin/asar.mjs pack ${distdir} ${distdir}/app.asar \ + --unpack-dir '{**/Release,**/matrix-seshat}' || die + # Remove unarchived copies of files (they are still in app.asar) + rm -r ${distdir}/node_modules || die + rm -r ${distdir}/lib || die + + cp -r build ${distdir} || die + # fi + + #cp -r /usr/share/element-web webapp + #rm -f webapp/config.json + #cp -f /etc/element-web/config.json webapp/config.json + #node node_modules/.bin/asar p webapp webapp.asar + #node node_modules/.bin/asar l webapp.asar + + # export PATH=${OLD_PATH} +} + +src_install() { + insinto "/usr/$(get_libdir)/element-desktop" + + doins -r dist/linux-unpacked/resources/* + dosym ../../share/element-web /usr/$(get_libdir)/element-desktop/webapp + + exeinto "/usr/$(get_libdir)/element-desktop" + cp "${FILESDIR}/read_flags_file" dist/linux-unpacked/resources/element-desktop + sed -i "s|@ELECTRON@|element-desktop|" dist/linux-unpacked/resources/element-desktop + + echo "\"/usr/$(get_libdir)/electron-${ELECTRON_SLOT}/electron\" \ +/usr/$(get_libdir)/element-desktop/app.asar \"\${flags[@]}\" \"\$@\"" >> dist/linux-unpacked/resources/element-desktop + doexe dist/linux-unpacked/resources/element-desktop + dosym "/usr/$(get_libdir)/element-desktop/element-desktop" /usr/bin/element-desktop + + # # Install icons + # local branding size + # for size in 16 24 48 64 96 128 256 512 ; do + # newicon -s ${size} "build/icons/${size}x${size}.png" \ + # element-desktop.png + # done + + newicon build/icon.png element-desktop.png + + make_desktop_entry "/usr/bin/element-desktop" Element \ + "element-desktop" "Network;Chat" +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update +} |
