diff --git a/www-apps/misskey/Manifest b/www-apps/misskey/Manifest index c51b224..642e4a6 100644 --- a/www-apps/misskey/Manifest +++ b/www-apps/misskey/Manifest @@ -1,3 +1,5 @@ +DIST misskey-13.10.2-deps.tar.zst 421168474 BLAKE2B d9909227eca96a3e6a6943d620f54a2d085edead5f359c0624b8991e1b15dc287429048dec6f84c23c22f30424015a5a7c1e5fc6e1f5dded0ab240aaeba063ab SHA512 aadb5bdc709203041796a430d4bef805ad0bee830180437d639c84f8b22f1110500cd04329203ddf0e4e06f286e0e2ecd98d348db3868c88254d9a5f0f39e1c9 +DIST misskey-13.10.2.tar.gz 20761821 BLAKE2B aaa72ff30b06d2dc1706de6f07598cda614564e4dbfc8c2f3dbcb4ee9c5812000587dfe20cd4b9cab84b7df9099d32397d80ac9af8dc18b4e31375a4d8e3170c SHA512 478712902f220e78e6edaf154465bb60b202fbd4639096a951690554e95134e47975506241e6c9869efbd592ea6dd117397de0953394e5e6c38868f1ab9088b4 DIST misskey-13.8.1-deps.tar.zst 411317641 BLAKE2B 8df294a673419af99c957aa0a357bd4f36771243de76209890fec8bed334d0ddfa8194b213133594d3aced295de4045a899d74d279c81ae3dc349faccd93d254 SHA512 ed5d1a22dc24dea21637ae57efcca51bec66374063c84e5fa54cb6e901782bfdf4553a31565cf579edcf4c90e0ffc1eb9cebe5494993597eb83420fdb9d63bf1 DIST misskey-13.8.1.tar.gz 20315912 BLAKE2B 12d3b490ee88bd43d3bad8469b88c2a737108ab9efbfc52365d2c30bf6dd27bfa02c0393b2b5f740632523013a2ab47ef60da2252885f19cb142202b3289c645 SHA512 07ab57dde8aadc7c0e3179d3f9f45652bfe51a305a4c590c9ba3b64960e69493df092d8c007e482a250b0cee5c569d2e8117806dfaaafccb22676cba1679f160 DIST misskey-13.9.2-deps.tar.zst 417170095 BLAKE2B 013f54bc0333664876dbcb3cee3f31e0b67339f69fcae56daf89ab422a28b70bd3d400595c557a63b570d8b4e98ad29a6f9773bd6e8e1a50afe0e4c0ac112132 SHA512 6e880ca9f3ca5a3792f0e61c08c1097b6b55b0bbf782a40824710112c2deb11c2223bffd5ce5ba04986b23aa4ec78870f1c0206f11f269f11011e4e183370c8e diff --git a/www-apps/misskey/misskey-13.10.2.ebuild b/www-apps/misskey/misskey-13.10.2.ebuild new file mode 100644 index 0000000..e123aed --- /dev/null +++ b/www-apps/misskey/misskey-13.10.2.ebuild @@ -0,0 +1,162 @@ +# Copyright 2022-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit optfeature savedconfig unpacker + +# NOTE: check for updates on each bump +MY_COMMIT_ASSETS="0179793ec891856d6f37a3be16ba4c22f67a81b5" +MY_COMMIT_EMOJIS="cae981eb4c5189ea9ea3230e83b876a5068df7d1" + +DESCRIPTION="An interplanetary microblogging platform" +HOMEPAGE="https://misskey-hub.net/" +SRC_URI=" + https://github.com/misskey-dev/misskey/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + https://github.com/misskey-dev/assets/archive/${MY_COMMIT_ASSETS}.tar.gz -> ${PN}-assets-${MY_COMMIT_ASSETS}.tar.gz + https://github.com/misskey-dev/emojis/archive/${MY_COMMIT_EMOJIS}.tar.gz -> ${PN}-emojis-${MY_COMMIT_EMOJIS}.tar.gz + https://tastytea.de/files/gentoo/${P}-deps.tar.zst +" + +# NOTE: to generate the deps archive: +# export CYPRESS_CACHE_FOLDER="$(realpath ./packages-cache)" +# export npm_config_cache="$(realpath ./packages-cache)" +# pnpm config set store-dir "$(realpath ./packages-cache)" +# pnpm install --frozen-lockfile +# ZSTD_CLEVEL=9 tar -caf ${P}-deps.tar.zst packages-cache +# unset CYPRESS_CACHE_FOLDER npm_config_cache + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64" +IUSE="nginx +savedconfig source" + +REQUIRED_USE="savedconfig" + +RESTRICT="strip network-sandbox" + +COMMON_DEPEND=" + >=net-libs/nodejs-18.13:=[npm] +" +BDEPEND=" + ${COMMON_DEPEND} + app-arch/zstd + dev-lang/nasm + virtual/pkgconfig +" +RDEPEND=" + ${COMMON_DEPEND} + acct-user/misskey + >=dev-db/postgresql-15 + dev-db/redis + nginx? ( www-servers/nginx ) +" + +QA_PREBUILT=" + /opt/misskey/misskey/packages/backend/node_modules/msgpackr-extract/prebuilds/* + /opt/misskey/misskey/packages/client/node_modules/microtime/prebuilds/* +" + +pkg_setup() { + # check if pnpm from nodejs is installed + if ! type pnpm > /dev/null 2>&1; then + eerror "pnpm not found. It can be installed with 'corepack enable'" + fi +} + +src_unpack() { + unpacker_src_unpack + mv --no-target-directory assets-${MY_COMMIT_ASSETS} ${P}/${PN}-assets \ + || die "Could not move assets" + mv --no-target-directory emojis-${MY_COMMIT_EMOJIS} ${P}/fluent-emojis \ + || die "Could not move emojis" + mv packages-cache "${T}"/ || die "Could not move packages cache" +} + +src_prepare() { + export CYPRESS_CACHE_FOLDER="${T}"/packages-cache + export npm_config_cache="${T}"/packages-cache + export PNPMFLAGS="--verbose" + pnpm config set cache "${T}"/packages-cache + pnpm config set store-dir "${T}"/packages-cache + + # use system node-gyp + PATH+=":/usr/lib64/node_modules/npm/bin/node-gyp-bin" + export npm_config_nodedir=/usr/include/node/ + + restore_config .config/default.yml + if [[ ! -f .config/default.yml ]]; then + eerror "Edit .config/example.yml and save it to the location mentioned above" + die "No config file found" + fi + + default +} + +src_compile() { + pnpm ${PNPMFLAGS} install --frozen-lockfile || die "dependency installation failed" + NODE_ENV=production pnpm ${PNPMFLAGS} run build || die "build failed" +} + +src_install() { + insinto opt/misskey/misskey + insopts -o misskey -g misskey + if use source; then + doins -r . + else + doins -r package.json .node-version .config built node_modules packages \ + fluent-emojis pnpm-workspace.yaml pnpm-lock.yaml + fi + + # insopts doesn't affect directories + chown --recursive misskey:misskey "${ED}"/opt/misskey/misskey + chmod o= "${ED}"/opt/misskey/misskey + + newinitd "${FILESDIR}"/${PN}.initd ${PN} + if use nginx; then + sed -i 's/use logger$/use logger nginx/' "${ED}"/etc/init.d/${PN} \ + || die "Could not modify OpenRC init script" + fi + + einstalldocs +} + +pkg_preinst() { + # Apparently Misskey creates files at runtime that can interfere + # after an upgrade. Normally you would run 'yarn cleanall'. + einfo "Cleaning up Misskey directory …" + su --shell /bin/bash --login --command \ + "rm -rf misskey/{built,node_modules} && rm -rf misskey/packages/{backend,client,sw}/{built,node_modules}" \ + misskey || die "cleanup failed" +} + +pkg_postinst() { + # Only run migrations if database exists + if su --command "psql misskey -c ''" postgres; then + einfo "Running migration…" + su --shell /bin/bash --login --command \ + "cd misskey && pnpm run migrate" misskey || die "migration failed" + else + elog "Run emerge --config ${CATEGORY}/${PN} to initialise the PostgreSQL database" + fi + + if use nginx; then + einfo "An nginx example config can be found at " + fi + + optfeature "thumbnail generation support" media-video/ffmpeg +} + +pkg_config() { + einfo "Initialising PostgreSQL database" + echo -n "password for misskey user: " + read -r MY_PASSWORD || die "Reading password failed" + echo "create database misskey with encoding = 'UTF8'; create user misskey with encrypted password '${MY_PASSWORD}'; grant all privileges on database misskey to misskey; \q" \ + | su --command psql postgres || die "database creation failed" + + su --shell /bin/bash --login --command \ + "cd misskey && pnpm run init" misskey || die "database initialisation failed" + + ewarn "When you first start Misskey you will be asked to add an admin account via the web interface, and registrations are enabled." + ewarn "Do not expose the web interface to the public until after you configured your instance\!" +}