app-misc/notion - 3.9.1 (jaredallard)

Search

Package Information

Description:
Your connected workspace for wiki, docs & projects
Homepage:
https://github.com/ArmCord/ArmCord
License:
all-rights-reserved

Ebuild Details

Version EAPI Keywords Slot
3.9.1 8 amd64 arm64 0
View Raw Ebuild
# Copyright 2020-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

MY_PN="${PN/-bin/}"
MY_PV="${PV/-r*/}"

# Matches the versions used by Notion.
ELECTRON_VERSION="v29.3.0"
BETTER_SQLITE3_VERSION="9.4.5"

inherit chromium-2 desktop linux-info optfeature unpacker xdg

DESCRIPTION="Your connected workspace for wiki, docs & projects"
HOMEPAGE="https://github.com/ArmCord/ArmCord"
SRC_URI="
  https://desktop-release.notion-static.com/Notion-${MY_PV}.dmg
  amd64? (
    https://gentoo.rgst.io/updater_artifacts/app-misc/notion/${MY_PV}/better_sqlite3-${BETTER_SQLITE3_VERSION}/amd64/better_sqlite3.node -> better_sqlite3_amd64.node
    https://github.com/electron/electron/releases/download/$ELECTRON_VERSION/electron-$ELECTRON_VERSION-linux-x64.zip 
  )
  arm64? ( 
    https://gentoo.rgst.io/updater_artifacts/app-misc/notion/${MY_PV}/better_sqlite3-${BETTER_SQLITE3_VERSION}/arm64/better_sqlite3.node -> better_sqlite3_arm64.node
    https://github.com/electron/electron/releases/download/$ELECTRON_VERSION/electron-$ELECTRON_VERSION-linux-arm64.zip 
  )
"

IUSE="appindicator +seccomp wayland"
BDEPEND="app-arch/7zip"
LICENSE="all-rights-reserved"
SLOT="0"
KEYWORDS="amd64 arm64"

RESTRICT="bindist mirror strip test"

QA_PREBUILT="*"
DESTDIR="/opt/${MY_PN}"
CONFIG_CHECK="~USER_NS"

src_unpack() {
  ls -alh
  7zz x "${DISTDIR}/Notion-${MY_PV}.dmg" || true
  7zz x "${DISTDIR}/electron-$ELECTRON_VERSION-linux-"**".zip" -o"$WORKDIR/electron" || die "Failed to extract Electron"
  cp "$DISTDIR/better_sqlite3_"**".node" "$WORKDIR/better_sqlite3.node" || die "Failed to copy better_sqlite3.node"

  S="${WORKDIR}"
}

src_configure() {
  default
  chromium_suid_sandbox_check_kernel_config
}

src_compile() {
  # We "build" Notion by combining the downloaded artifacts.

  BUILDDIR="${S}/${MY_PN}-${MY_PV}"
  mkdir -p "${BUILDDIR}"

  # Copy the Electron files.
  cp -r "${WORKDIR}/electron"/* "${BUILDDIR}"

  # Copy the Notion files.
  cp -rp Notion/Notion.app/Contents/Resources/{app.asar.unpacked,app.asar} "$BUILDDIR/resources/"

  # Remove the Electron files we don't need.
  rm -rf "${BUILDDIR}/resources/default_app.asar"

  # Rename "electron" to "notion" to avoid confusion.
  mv "${BUILDDIR}/electron" "${BUILDDIR}/${MY_PN}"

  # Replace better_sqlite 3 with one for our architecture so that Notion
  # is able to open.
  cp better_sqlite3.node "$BUILDDIR/resources/app.asar.unpacked/node_modules/better-sqlite3/build/Release/better_sqlite3.node" ||
    die "Failed to copy better_sqlite3.node"
  S="${BUILDDIR}"
}

src_install() {
  doicon -s 256 "${FILESDIR}/notion.png"

  exeinto "${DESTDIR}"
  doexe "${MY_PN}" chrome-sandbox libEGL.so libffmpeg.so libGLESv2.so libvk_swiftshader.so

  insinto "${DESTDIR}"
  doins chrome_100_percent.pak chrome_200_percent.pak icudtl.dat resources.pak snapshot_blob.bin v8_context_snapshot.bin
  insopts -m0755
  doins -r locales resources

  # Chrome-sandbox requires the setuid bit to be specifically set.
  # see https://github.com/electron/electron/issues/17972
  fowners root "${DESTDIR}/chrome-sandbox"
  fperms 4711 "${DESTDIR}/chrome-sandbox"
  [[ -x chrome_crashpad_handler ]] && doins chrome_crashpad_handler

  dosym "${DESTDIR}/${MY_PN}" "/usr/bin/${MY_PN}"

  executable="${PN}"
  if use wayland; then
    executable="${PN} --ozone-platform-hint=auto"
  fi
  make_desktop_entry "$executable" "Notion" "${PN}" "Office;TextEditor;"
}

pkg_postinst() {
  xdg_pkg_postinst

  optfeature_header "Install the following packages for additional support:"
  optfeature "sound support" \
    media-sound/pulseaudio media-sound/apulse[sdk] media-video/pipewire
  optfeature "emoji support" media-fonts/noto-emoji
}

USE Flags

seccomp
Default: Enabled (+)

Dependencies

BDEPEND

app-arch/7zip

Manifest for 3.9.1

Type File Size Source URLs
DIST better_sqlite3_amd64.node 2042992 bytes https://gentoo.rgst.io/updater_artifacts/app-misc/notion/${PV/-r*/}/better_sqlite3-9.4.5/amd64/better_sqlite3.node
DIST better_sqlite3_arm64.node 2037712 bytes https://gentoo.rgst.io/updater_artifacts/app-misc/notion/${PV/-r*/}/better_sqlite3-9.4.5/arm64/better_sqlite3.node
DIST electron-v29.3.0-linux-arm64.zip 102894820 bytes https://github.com/electron/electron/releases/download/v29.3.0/electron-v29.3.0-linux-arm64.zip
DIST electron-v29.3.0-linux-x64.zip 102650900 bytes https://github.com/electron/electron/releases/download/v29.3.0/electron-v29.3.0-linux-x64.zip