Ошибка обновления из-за неработающего плагина событий

У меня тоже возникли проблемы со сборкой последней стабильной версии, которая до 1–2 недель назад собиралась без ошибок. Мне кажется, это может быть связано с изменениями в Ruby (даже если те, что были внесены в discourse_docker, уже отменены), поскольку проблема возникает с ранее работавшим gem-пакетом, который теперь не собирается.

Пакет (stringio) подтягивается (по крайней мере) плагином discourse-events, но этот плагин использует данный gem и ту же версию уже как минимум последние 2 года (вероятно, даже больше). Я пробовал собирать с более старой (ранее известной как рабочая) версией плагина, но ошибка всё равно возникает. Поэтому я думаю, что что-то ещё изменилось в самом Discourse, возможно, в рамках подготовки к Ruby 3.3.1, и эти изменения также попали в стабильную ветку.

Важно отметить, что проблема возникает только на ARM-машине (на которой я успешно собирал Discourse в последние несколько месяцев). Попытка собрать точно такую же конфигурацию на x86 проходит успешно. Похоже, проблема зависит от архитектуры ARM64, и хотя gem подтягивается плагином discourse-events, это тот же самый gem (и версия), который ранее работал. Значит, что-то изменилось и в самом Discourse. Возможно, @Falco сможет подсказать, что именно происходит с точки зрения ARM64?

Лог сборки
[...]
checking out compatible docker_manager version: 9523f7a88453ce1863071bcc2bc88130b60efee5
HEAD is now at 9523f7a Update translations (#205)

I, [2024-05-28T09:52:18.538215 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
ERROR:  Error installing stringio:
	ERROR: Failed to build gem native extension.

    current directory: /var/www/discourse/plugins/discourse-events/gems/3.3.1/gems/stringio-3.0.2/ext/stringio
/usr/local/bin/ruby extconf.rb
checking for rb_io_extract_modeenc() in ruby/io.h... yes
creating Makefile

current directory: /var/www/discourse/plugins/discourse-events/gems/3.3.1/gems/stringio-3.0.2/ext/stringio
make DESTDIR\= sitearchdir\=./.gem.20240528-1205-7qlio5 sitelibdir\=./.gem.20240528-1205-7qlio5 clean

current directory: /var/www/discourse/plugins/discourse-events/gems/3.3.1/gems/stringio-3.0.2/ext/stringio
make DESTDIR\= sitearchdir\=./.gem.20240528-1205-7qlio5 sitelibdir\=./.gem.20240528-1205-7qlio5
compiling stringio.c
stringio.c: In function 'strio_init':
stringio.c:343:24: error: storage size of 'convconfig' isn't known
  343 |     struct rb_io_enc_t convconfig;
      |                        ^~~~~~~~~~
stringio.c:343:24: warning: unused variable 'convconfig' [-Wunused-variable]
stringio.c: At top level:
cc1: note: unrecognized command-line option '-Wno-self-assign' may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option '-Wno-parentheses-equality' may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option '-Wno-constant-logical-operand' may have been intended to silence earlier diagnostics
make: *** [Makefile:248: stringio.o] Error 1

make failed, exit code 2

Gem files will remain installed in /var/www/discourse/plugins/discourse-events/gems/3.3.1/gems/stringio-3.0.2 for inspection.
Results logged to /var/www/discourse/plugins/discourse-events/gems/3.3.1/extensions/aarch64-linux/3.3.0/stringio-3.0.2/gem_make.out
I, [2024-05-28T09:52:39.324741 #1]  INFO -- : gem install uuidtools -v 2.2.0 -i /var/www/discourse/plugins/discourse-events/gems/3.3.1 --no-document --ignore-dependencies --no-user-install
Successfully installed uuidtools-2.2.0
1 gem installed
gem install iso-639 -v 0.3.5 -i /var/www/discourse/plugins/discourse-events/gems/3.3.1 --no-document --ignore-dependencies --no-user-install
Successfully installed iso-639-0.3.5
1 gem installed
gem install ice_cube -v 0.16.4 -i /var/www/discourse/plugins/discourse-events/gems/3.3.1 --no-document --ignore-dependencies --no-user-install
Successfully installed ice_cube-0.16.4
1 gem installed
gem install icalendar -v 2.8.0 -i /var/www/discourse/plugins/discourse-events/gems/3.3.1 --no-document --ignore-dependencies --no-user-install
ActiveSupport is required for TimeWithZone support, but not required for general use.
Successfully installed icalendar-2.8.0
1 gem installed
gem install icalendar-recurrence -v 1.1.3 -i /var/www/discourse/plugins/discourse-events/gems/3.3.1 --no-document --ignore-dependencies --no-user-install
Successfully installed icalendar-recurrence-1.1.3
1 gem installed
gem install date -v 3.3.4 -i /var/www/discourse/plugins/discourse-events/gems/3.3.1 --no-document --ignore-dependencies --no-user-install
Building native extensions. This could take a while...
Successfully installed date-3.3.4
1 gem installed
gem install time -v 0.2.0 -i /var/www/discourse/plugins/discourse-events/gems/3.3.1 --no-document --ignore-dependencies --no-user-install
Successfully installed time-0.2.0
1 gem installed
gem install stringio -v 3.0.2 -i /var/www/discourse/plugins/discourse-events/gems/3.3.1 --no-document --ignore-dependencies --no-user-install
Building native extensions. This could take a while...
You are specifying the gem stringio in /var/www/discourse/plugins/discourse-events/plugin.rb, however it does not exist!
Looked for: 
- /var/www/discourse/plugins/discourse-events/gems/3.3.1/specifications/stringio-3.0.2.gemspec
- /var/www/discourse/plugins/discourse-events/gems/3.3.1/specifications/stringio-3.0.2-aarch64-linux.gemspec
- /var/www/discourse/plugins/discourse-events/gems/3.3.1/specifications/stringio-3.0.2-aarch64-linux.gemspec



FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1109 exit 255>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 255

Приношу извинения, если это вообще не связано с недавними изменениями в Ruby — с радостью открою новую тему, если это так.

StringIO 3.0.2 несовместим с Ruby 3.3, и его разработчик должен обновить его до последней версии.

Учитывая, что эта информация взята с Events Plugin 📅 и там указано, что она не работает, вам нужно найти способ двигаться дальше.

Для тех, кто столкнулся с этой проблемой, могу подтвердить, что плагин собирается с версией StringIO 3.0.7 или выше.