2019-02-23 03:22:49 +01:00
|
|
|
# Copyright 1999-2019 Gentoo Authors
|
|
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
|
|
|
|
EAPI=7
|
|
|
|
|
|
|
|
inherit user systemd
|
|
|
|
|
|
|
|
MY_P="${PN}-v${PV}"
|
|
|
|
DESCRIPTION="Microblogging server software that can federate with other servers."
|
|
|
|
HOMEPAGE="https://pleroma.social/ https://git.pleroma.social/pleroma/pleroma/"
|
|
|
|
SRC_URI="https://git.pleroma.social/pleroma/pleroma/-/archive/v0.9.9/${MY_P}.tar.bz2
|
|
|
|
-> ${P}.tar.bz2"
|
|
|
|
|
|
|
|
LICENSE="AGPL-3"
|
|
|
|
SLOT="0"
|
|
|
|
KEYWORDS=""
|
|
|
|
IUSE="apache +nginx syslog systemd"
|
|
|
|
|
|
|
|
RDEPEND="
|
|
|
|
>=dev-lang/elixir-1.6.6
|
|
|
|
dev-vcs/git
|
|
|
|
>=dev-db/postgresql-9.6.11[uuid]
|
|
|
|
app-admin/sudo
|
|
|
|
apache? ( www-servers/apache )
|
|
|
|
nginx? ( www-servers/nginx )
|
|
|
|
"
|
|
|
|
DEPEND=""
|
|
|
|
|
|
|
|
S="${WORKDIR}/${MY_P}"
|
|
|
|
|
|
|
|
pkg_preinst() {
|
|
|
|
elog "This ebuild comes with a lot of bundles libraries."
|
2019-02-23 05:31:19 +01:00
|
|
|
ewarn "This ebuild may overwrite files you have edited. Waiting 10 seconds ..."
|
|
|
|
sleep 10 || die
|
|
|
|
|
|
|
|
# Backup user-modified files
|
|
|
|
if [ -f "${EROOT}/opt/pleroma/priv/static/instance/panel.html" ]; then
|
|
|
|
einfo "Backing up panel.html, terms-of-service.html and thumbnail.jpeg ..."
|
|
|
|
mv "${EROOT}/opt/pleroma/priv/static/instance/panel.html"{,~} || die
|
|
|
|
mv "${EROOT}/opt/pleroma/priv/static/static/terms-of-service.html"{,~} || die
|
|
|
|
mv "${EROOT}/opt/pleroma/priv/static/instance/thumbnail.jpeg"{,~} || die
|
|
|
|
fi
|
2019-02-23 03:22:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
pkg_setup() {
|
|
|
|
enewgroup pleroma
|
2019-02-23 05:31:19 +01:00
|
|
|
enewuser pleroma -1 -1 /opt/pleroma pleroma
|
2019-02-23 03:22:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
src_prepare() {
|
|
|
|
default
|
|
|
|
|
2019-02-23 05:31:19 +01:00
|
|
|
sed -i 's|directory=~pleroma/pleroma|directory=~pleroma|' \
|
|
|
|
"${S}/installation/init.d/pleroma" || die
|
2019-02-23 03:22:49 +01:00
|
|
|
if use syslog; then
|
|
|
|
# Log to syslog
|
|
|
|
sed -i 's/command_background=1/command_background=1\nerror_logger="logger"\noutput_logger="logger"/' \
|
|
|
|
"${S}/installation/init.d/pleroma" || die
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
src_install() {
|
|
|
|
local pleromadir="${EPREFIX}/opt/pleroma"
|
|
|
|
|
|
|
|
insopts -o pleroma -g pleroma -m 644
|
|
|
|
insinto "${pleromadir}"
|
|
|
|
doins -r * .*
|
|
|
|
|
|
|
|
if use nginx; then
|
|
|
|
dodoc installation/pleroma.nginx
|
|
|
|
fi
|
|
|
|
if use apache; then
|
|
|
|
dodoc installation/pleroma-apache.conf
|
|
|
|
fi
|
|
|
|
|
|
|
|
dodoc docs/*
|
|
|
|
|
|
|
|
if use systemd; then
|
|
|
|
systemd_dounit installation/pleroma.service
|
|
|
|
else
|
|
|
|
doinitd installation/init.d/pleroma
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
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."
|
|
|
|
fi
|
|
|
|
if use apache; then
|
|
|
|
einfo "An example config for apache has been installed in the doc directory."
|
|
|
|
fi
|
2019-02-23 05:31:19 +01:00
|
|
|
|
|
|
|
# Restore user-modified files
|
|
|
|
if [ -f "${EROOT}/opt/pleroma/priv/static/instance/panel.html~" ]; then
|
|
|
|
einfo "Restoring panel.html, terms-of-service.html and thumbnail.jpeg ..."
|
|
|
|
mv "${EROOT}/opt/pleroma/priv/static/instance/panel.html"{~,} || die
|
|
|
|
mv "${EROOT}/opt/pleroma/priv/static/static/terms-of-service.html"{~,} || die
|
|
|
|
mv "${EROOT}/opt/pleroma/priv/static/instance/thumbnail.jpeg"{~,} || die
|
|
|
|
fi
|
2019-02-23 03:22:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
pkg_config() {
|
|
|
|
local configfile="${EROOT}/opt/pleroma/config/prod.secret.exs"
|
|
|
|
cd "${EROOT}/opt/pleroma" || die
|
|
|
|
|
|
|
|
if [ ! -f ${configfile} ]; then
|
|
|
|
einfo "Installing the dependencies..."
|
|
|
|
einfo "Answer with yes if it asks you to install Hex."
|
|
|
|
sudo -u pleroma mix deps.get || die
|
|
|
|
|
|
|
|
einfo "Generating the configuration..."
|
|
|
|
einfo "Answer with yes if it asks you to install rebar3."
|
|
|
|
sudo -u pleroma mix pleroma.instance gen || die
|
|
|
|
mv -v config/{generated_config.exs,prod.secret.exs} || die
|
|
|
|
|
|
|
|
einfo "Creating the database..."
|
|
|
|
sudo -u postgres psql -f config/setup_db.psql || die
|
|
|
|
|
|
|
|
einfo "Running the database migration..."
|
|
|
|
sudo -u pleroma MIX_ENV=prod mix ecto.migrate || die
|
|
|
|
|
|
|
|
einfo "Your configuration file is in ${configfile}."
|
|
|
|
else
|
|
|
|
einfo "Pleroma will be stopped for the duration of the update."
|
|
|
|
einfo "Hit enter to proceed."
|
|
|
|
read
|
|
|
|
|
|
|
|
local started=0
|
|
|
|
if "${EROOT}"/etc/init.d/pleroma --nocolor status | grep 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..."
|
|
|
|
sudo -u pleroma mix deps.get || die
|
|
|
|
|
|
|
|
einfo "Running the database migration..."
|
|
|
|
sudo -u pleroma MIX_ENV=prod mix ecto.migrate || die
|
|
|
|
|
|
|
|
if [ ${started} -eq 1 ]; then
|
|
|
|
einfo "Starting pleroma..."
|
|
|
|
"${EROOT}"/etc/init.d/pleroma start || die
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|