aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTagadda <36127788+Tagadda@users.noreply.github.com>2022-01-24 14:08:41 +0000
committerTagadda <36127788+Tagadda@users.noreply.github.com>2022-01-24 15:45:01 +0000
commit03cd9df2b604fc833f8213f44b49daac3a39763a (patch)
tree3813364f5c3452a69bd085a250af6346fe1658bd
parent7be9bed8cff234c4579c15279438a5d82feca9d0 (diff)
downloadmastodon_ynh-03cd9df2b604fc833f8213f44b49daac3a39763a.tar.gz
mastodon_ynh-03cd9df2b604fc833f8213f44b49daac3a39763a.tar.bz2
mastodon_ynh-03cd9df2b604fc833f8213f44b49daac3a39763a.zip
[enh] Workaround for bullseye
see https://github.com/mastodon/mastodon/issues/15751#issuecomment-873594463
-rw-r--r--conf/cron10
-rw-r--r--conf/mastodon-sidekiq.service1
-rw-r--r--conf/mastodon-web.service1
-rw-r--r--scripts/_common.sh22
-rw-r--r--scripts/install16
-rw-r--r--scripts/upgrade14
6 files changed, 44 insertions, 20 deletions
diff --git a/conf/cron b/conf/cron
index 710e7f0..c5f1af0 100644
--- a/conf/cron
+++ b/conf/cron
@@ -1,5 +1,5 @@
-@daily cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ RAILS_ENV=production bin/tootctl media remove
-@monthly cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ RAILS_ENV=production bin/tootctl media remove-orphans
-@monthly cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ RAILS_ENV=production bin/tootctl accounts cull
-@monthly cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ RAILS_ENV=production bin/tootctl statuses remove
-@monthly cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ RAILS_ENV=production bin/tootctl preview_cards remove
+@daily cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl media remove
+@monthly cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl media remove-orphans
+@monthly cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl accounts cull
+@monthly cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl statuses remove
+@monthly cd __FINAL_PATH__/live && sudo -u __APP__ __YNH_RUBY_LOAD_PATH__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl preview_cards remove
diff --git a/conf/mastodon-sidekiq.service b/conf/mastodon-sidekiq.service
index f91b7b9..d561f07 100644
--- a/conf/mastodon-sidekiq.service
+++ b/conf/mastodon-sidekiq.service
@@ -9,6 +9,7 @@ WorkingDirectory=__FINALPATH__/live
Environment="RAILS_ENV=production"
Environment="DB_POOL=25"
Environment="MALLOC_ARENA_MAX=2"
+Environment="__LD_PRELOAD__"
ExecStart=__RBENV_ROOT__/versions/__APP__/bin/bundle exec sidekiq -c 25
TimeoutSec=15
Restart=always
diff --git a/conf/mastodon-web.service b/conf/mastodon-web.service
index 24ab72a..295d504 100644
--- a/conf/mastodon-web.service
+++ b/conf/mastodon-web.service
@@ -8,6 +8,7 @@ User=__APP__
WorkingDirectory=__FINALPATH__/live
Environment="RAILS_ENV=production"
Environment="PORT=__PORT_WEB__"
+Environment="__LD_PRELOAD__"
ExecStart=__RBENV_ROOT__/versions/__APP__/bin/bundle exec puma -C config/puma.rb
ExecReload=/bin/kill -SIGUSR1 $MAINPID
TimeoutSec=15
diff --git a/scripts/_common.sh b/scripts/_common.sh
index c861376..168251c 100644
--- a/scripts/_common.sh
+++ b/scripts/_common.sh
@@ -13,6 +13,28 @@ RUBY_VERSION="2.7.2"
NODEJS_VERSION="12"
+# Workaround for Mastodon on Bullseye
+# See https://github.com/mastodon/mastodon/issues/15751#issuecomment-873594463
+if [ "$(lsb_release --codename --short)" = "bullseye" ]; then
+ case $YNH_ARCH in
+ amd64)
+ arch="x86_64"
+ ;;
+ arm64)
+ arch="aarch64"
+ ;;
+ armel|armhf)
+ arch="arm"
+ ;;
+ i386)
+ arch="i386"
+ ;;
+ esac
+ ld_preload="LD_PRELOAD=/usr/lib/$arch-linux-gnu/libjemalloc.so"
+else
+ ld_preload=""
+fi
+
#=================================================
# PERSONAL HELPERS
#=================================================
diff --git a/scripts/install b/scripts/install
index 3100891..696d59e 100644
--- a/scripts/install
+++ b/scripts/install
@@ -204,17 +204,17 @@ ynh_add_systemd_config --service="$app-streaming" --template="mastodon-streaming
ynh_script_progression --message="Installing Mastodon..."
pushd "$final_path/live"
- ynh_exec_as $app $ynh_ruby_load_path bin/bundle config deployment 'true'
- ynh_exec_as $app $ynh_ruby_load_path bin/bundle config without 'development test'
- ynh_exec_as $app $ynh_ruby_load_path bin/bundle install -j$(getconf _NPROCESSORS_ONLN)
+ ynh_exec_as $app $ynh_ruby_load_path $ld_preload bin/bundle config deployment 'true'
+ ynh_exec_as $app $ynh_ruby_load_path $ld_preload bin/bundle config without 'development test'
+ ynh_exec_as $app $ynh_ruby_load_path $ld_preload bin/bundle install -j$(getconf _NPROCESSORS_ONLN)
ynh_use_nodejs
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH yarn install --pure-lockfile
echo "SAFETY_ASSURED=1">> $config
- ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path bin/bundle exec rails db:setup --quiet
- ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path bin/bundle exec rails assets:precompile --quiet
- ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path bin/bundle exec rake mastodon:webpush:generate_vapid_key > key.txt
- ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path bin/tootctl accounts create "$admin" --email="$admin_mail" --confirmed --role=admin > /dev/null
- ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path bin/tootctl accounts modify "$admin" --approve
+ ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/bundle exec rails db:setup --quiet
+ ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/bundle exec rails assets:precompile --quiet
+ ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/bundle exec rake mastodon:webpush:generate_vapid_key > key.txt
+ ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/tootctl accounts create "$admin" --email="$admin_mail" --confirmed --role=admin > /dev/null
+ ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/tootctl accounts modify "$admin" --approve
popd
vapid_private_key=$(grep -oP "VAPID_PRIVATE_KEY=\K.+" "$final_path/live/key.txt")
diff --git a/scripts/upgrade b/scripts/upgrade
index ea95ffa..1c24a62 100644
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -270,15 +270,15 @@ ynh_add_systemd_config --service="$app-streaming" --template="mastodon-streaming
ynh_script_progression --message="Upgrading Mastodon..."
pushd "$final_path/live"
- ynh_exec_as $app $ynh_ruby_load_path bin/bundle config deployment 'true'
- ynh_exec_as $app $ynh_ruby_load_path bin/bundle config without 'development test'
- ynh_exec_as $app $ynh_ruby_load_path bin/bundle install -j$(getconf _NPROCESSORS_ONLN)
+ ynh_exec_as $app $ynh_ruby_load_path $ld_preload bin/bundle config deployment 'true'
+ ynh_exec_as $app $ynh_ruby_load_path $ld_preload bin/bundle config without 'development test'
+ ynh_exec_as $app $ynh_ruby_load_path $ld_preload bin/bundle install -j$(getconf _NPROCESSORS_ONLN)
ynh_use_nodejs
ynh_exec_as $app $ynh_node_load_PATH yarn install --pure-lockfile
- ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path bin/bundle exec rails assets:clean
- ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path bin/bundle exec rails assets:precompile
- ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path bin/bundle exec rails db:migrate
- ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path bin/tootctl cache clear
+ ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/bundle exec rails assets:clean
+ ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/bundle exec rails assets:precompile
+ ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/bundle exec rails db:migrate
+ ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/tootctl cache clear
popd
#=================================================