diff --git a/www-apps/misskey/Manifest b/www-apps/misskey/Manifest index 267a90c..a7a515c 100644 --- a/www-apps/misskey/Manifest +++ b/www-apps/misskey/Manifest @@ -1,3 +1,6 @@ DIST misskey-12.119.2-deps.tar.xz 565595040 BLAKE2B 78bd1f8f51614c57d56fbbdc506b4b136613a2d37becd90cf54cddb2519d380f3f29e20b222c2747c3367c43266259c7e04fb680dd8712b38d76e80332ae6c2c SHA512 5065226733178a705fca244f451588eda37144062b555c153904a1994bdc0c093bfed20040611f5ddd94d494397a481d3d4fa0ea9d0beeaa440e64b88b509008 DIST misskey-12.119.2.tar.gz 19901911 BLAKE2B 5ceba5ba122308d0998b86e0f7de4a227058b7a64784f6a02372fb7fb9d16e0f0e213cd671eb17144570d10022aa51c5b7b5aeb9e833a696fd48bdbf7c0c860f SHA512 91b11453751e387611c1e66c7b94137cbbe74c2e4df7ef45f2c6a2a15b4d398e77c1c71490038408b8ee1ded6206c330d628ade49da7b930dbd95312e3d00e65 +DIST misskey-13.0.0-deps.tar.xz 118535888 BLAKE2B 51f5d0622d4e79973d0e5e3ba4ef16795a04c1bcf2fe6fede910a1bef26fbac58bae359f7b246c6919c58682eca2b0c36dc7e898cdb274ec0b16a33bdf104a30 SHA512 5031065e2a5da26f105033bc467b394885e33f5d6ad4665461ad9b25f616980a9a71ebef5c0c2ba99bec093ed626e933d08310d5e517b81f04e8aeb71be8d0d0 +DIST misskey-13.0.0.tar.gz 20052588 BLAKE2B 830fb8dfe996532f1ad6dbf33e1a22f7c15828a905789f62956a5aabce1ca3438aa9834d9b495a98eef4d588a6e5d5b065ce768e402a6d2451cfb244b9040fe4 SHA512 c76c9b4ab10c5b5207f11b2df09e3264d4974ca4724774b8e89ccaef367680c6c3a915cb9ecdcf3e462640d752dd5ae90ba427bf6a852461ef308fb622002f9c DIST misskey-assets-0179793ec891856d6f37a3be16ba4c22f67a81b5.tar.gz 40471635 BLAKE2B 5305b5b316aa9d27f860e0e2c86f55eeb4140fd76c9cc7a753f78f93c509a10237033ec2109d2e806605f302d3fc9e9b916d2967053a4bce9b2cdea14df5885b SHA512 b4de7d8ab43f27e14372bb7246be4b032b142f22913ceaaa01e7631a1f702ba77ccf25482038cf2341f7a0ae92d54a1200bb654cac1d409b1ddcc113513b3f16 +DIST misskey-assets-cae981eb4c5189ea9ea3230e83b876a5068df7d1.tar.gz 12933900 BLAKE2B e37df7009b21276debd2118d1fb12bc917aa148a088e186a2fe85597cb5ea1a9aa79600919e7d0196af2bf8dfc6fee7f1b9cc6b898cda00810ece2969291e5a7 SHA512 68fce9f6afd7bd3db40ca5e990514f9d88506253f100b7c9db2032be97594919c36ab4bdc235ebb98647b7cc827f88d53bf9bdb59b4017888a1ec3a68e2e06fb diff --git a/www-apps/misskey/misskey-13.0.0.ebuild b/www-apps/misskey/misskey-13.0.0.ebuild new file mode 100644 index 0000000..9219ce7 --- /dev/null +++ b/www-apps/misskey/misskey-13.0.0.ebuild @@ -0,0 +1,161 @@ +# Copyright 2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit optfeature savedconfig + +# 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}-assets-${MY_COMMIT_EMOJIS}.tar.gz + https://tastytea.de/files/gentoo/${P}-deps.tar.xz +" + +# NOTE: to generate the deps archive: +# export YARN_CACHE_FOLDER="$(realpath ./packages-cache)" +# export CYPRESS_CACHE_FOLDER="$(realpath ./packages-cache)" +# export npm_config_cache="$(realpath ./packages-cache)" +# pnpm install +# tar -caf ${P}-deps.tar.xz packages-cache +# unset YARN_CACHE_FOLDER 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:=[npm] +" +BDEPEND=" + ${COMMON_DEPEND} + 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/* +" + +src_unpack() { + default + mv --no-target-directory assets-${MY_COMMIT_ASSETS} ${P}/${PN}-assets \ + || die "Could not move assets" + mv --no-target-directory emojis-${MY_COMMIT_ASSETS} ${P}/fluent-emojis \ + || die "Could not move emojis" + mv packages-cache "${T}"/ || die "Could not move packages cache" +} + +src_prepare() { + export YARN_CACHE_FOLDER="${T}"/packages-cache + export CYPRESS_CACHE_FOLDER="${T}"/packages-cache + export npm_config_cache="${T}"/packages-cache + export PNPMFLAGS="--verbose" + # 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 + + # enable pnpm (part of nodejs) temporarily if it isn't available + if ! type pnpm > /dev/null 2>&1; then + mkdir "${T}"/bin || die + ln -s /usr/$(get_libdir)/node_modules/corepack/dist/pnpm.js \ + "${T}"/bin/pnpm || die "Could not symlink pnpm.js" + PATH="${T}/bin:${PATH}" + fi + + default +} + +src_compile() { + pnpm ${PNPMFLAGS} install || 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 packages + 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 --login --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; create user misskey with encrypted password '${MY_PASSWORD}'; grant all privileges on database misskey to misskey; \q" \ + | su --login --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\!" +}