overlay/www-apps/pleroma/pleroma-2.3.0-r1.ebuild

135 lines
3.9 KiB
Bash

# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit git-r3 systemd
DESCRIPTION="Microblogging server software that can federate with other servers."
HOMEPAGE="https://pleroma.social/ https://git.pleroma.social/pleroma/pleroma/"
EGIT_REPO_URI="https://git.pleroma.social/pleroma/pleroma.git"
EGIT_COMMIT="v${PV}"
LICENSE="AGPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="apache exif ffmpeg imagemagick +nginx syslog"
# Erlang-24 issue should be fixed in >pleroma-2.3.0.
# <https://git.pleroma.social/pleroma/pleroma/-/issues/2647>
RDEPEND="
acct-group/pleroma
acct-user/pleroma
>=dev-lang/elixir-1.8.1
<dev-lang/erlang-24.0
>=dev-db/postgresql-9.6.13[uuid]
apache? ( www-servers/apache )
nginx? ( www-servers/nginx[nginx_modules_http_slice] )
dev-util/cmake
sys-apps/file
imagemagick? ( virtual/imagemagick-tools )
ffmpeg? ( media-video/ffmpeg )
exif? ( media-libs/exiftool )
"
DEPEND=""
pkg_preinst() {
ewarn "This ebuild will overwrite modified files in /opt/pleroma/priv/static/"
}
src_install() {
insinto "/opt/pleroma"
insopts -o pleroma -g pleroma -m 0664
doins -r * .*
# insopts doesn't affect directories.
chown -R pleroma:pleroma "${ED}/opt/pleroma"
chmod -R ug=rwX "${ED}/opt/pleroma"
if use nginx; then
dodoc installation/pleroma.nginx
fi
if use apache; then
dodoc installation/pleroma-apache.conf
fi
dodoc -r docs/*
doinitd installation/init.d/pleroma
systemd_dounit installation/pleroma.service
}
pkg_postinst() {
elog "You need to run emerge --config www-apps/pleroma after each upgrade."
if use nginx; then
einfo "An example config for nginx has been installed in the doc directory."
einfo "If you're upgrading from pre-2.0.1, remove"
einfo "proxy_ignore_headers Cache-Control; and"
einfo "proxy_hide_header Cache-Control; from your nginx config."
fi
if use apache; then
einfo "An example config for apache has been installed in the doc directory."
elog "If you're upgrading from pre-2.0.4, remove the following line"
elog "from your apache config:"
elog "SSLCertificateFile /etc/letsencrypt/live/${servername}/cert.pem"
fi
}
pkg_config() {
local configfile="${EROOT}/opt/pleroma/config/prod.secret.exs"
cd "${EROOT}/opt/pleroma" || die
if [[ ! -f ${configfile} ]]; then # Fresh install.
einfo "Installing the dependencies..."
einfo "Answer with yes if it asks you to install Hex."
su -ls /bin/bash -c "mix deps.get" pleroma || die
einfo "Generating the configuration..."
einfo "Answer with yes if it asks you to install rebar3."
su -ls /bin/bash -c "mix pleroma.instance gen" pleroma || die
mv -v config/{generated_config.exs,prod.secret.exs} || die
if use syslog; then
einfo "Activating syslog in ${configfile} ..."
cat "${FILESDIR}/syslog.exs" >> ${configfile}
fi
einfo "Creating the database..."
su -ls /bin/bash -c "psql -f config/setup_db.psql" postgres || die
einfo "Running the database migration..."
su -ls /bin/bash -c "MIX_ENV=prod mix ecto.migrate" pleroma || die
einfo "Your configuration file is in ${configfile}."
else # Update.
einfo "Pleroma will be stopped for the duration of the update."
einfo "Hit enter to proceed."
read
declare -i started=0
if "${EROOT}"/etc/init.d/pleroma --nocolor status | grep -q started; then
started=1
fi
if [[ ${started} -eq 1 ]]; then
einfo "Stopping pleroma..."
"${EROOT}"/etc/init.d/pleroma stop || die
fi
einfo "Updating the dependencies..."
su -ls /bin/bash -c "mix deps.get" pleroma || die
einfo "Running the database migration..."
su -ls /bin/bash -c "MIX_ENV=prod mix ecto.migrate" pleroma || die
if [[ ${started} -eq 1 ]]; then
einfo "Starting pleroma..."
"${EROOT}"/etc/init.d/pleroma start || die
fi
fi
if ! grep -q MIX_ENV ~pleroma/.profile 2>/dev/null; then
elog "Setting MIX_ENV=prod in ~pleroma/.profile ..."
echo "export MIX_ENV=prod" >> ~pleroma/.profile || die
fi
}