我也遇到了构建最新稳定版的问题,它在一到两周前还能正常构建。我认为这可能与一些相关的 Ruby 更改有关(即使 discourse_docker 中的更改已被撤销),因为问题在于一个以前可以工作的 gem 现在无法构建。
该 gem (stringio) 被 discourse-events 插件拉取(至少是这样?),但该插件至少在过去两年中(可能更长)一直在使用此 gem 和相同版本。我尝试使用旧版本(以前已知有效)的插件进行构建,但仍然失败。因此,我认为 Discourse 本身可能发生了一些变化,也许是为了准备 Ruby 3.3.1,这也已合并到稳定分支?
也许重要的是,这只发生在 ARM 机器上(我在过去几个月里一直在 ARM 机器上成功构建 Discourse)。在 x86 上构建完全相同的设置可以正常工作。因此,它似乎依赖于 ARM64,并且虽然 gem 是由 discourse-events 拉取的,但它与之前工作的 gem(和版本)是相同的。我认为 Discourse 本身一定也发生了一些变化。也许 @Falco 对 ARM64 的情况有什么看法?
构建日志
[...]
正在检出兼容的 docker_manager 版本:9523f7a88453ce1863071bcc2bc88130b60efee5
HEAD 现在是 9523f7a 更新翻译 (#205)
I, [2024-05-28T09:52:18.538215 #1] INFO -- : cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
错误:安装 stringio 时出错:
构建 gem 原生扩展时出错。
当前目录:/var/www/discourse/plugins/discourse-events/gems/3.3.1/gems/stringio-3.0.2/ext/stringio
/usr/local/bin/ruby extconf.rb
在 ruby/io.h 中检查 rb_io_extract_modeenc()... 是
创建 Makefile
当前目录:/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
当前目录:/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
编译 stringio.c
stringio.c: 在函数 ‘strio_init’ 中:
stringio.c:343:24: 错误:‘convconfig’ 的存储大小未知
343 | struct rb_io_enc_t convconfig;
| ^~~~~~~~~~
stringio.c:343:24: 警告:未使用变量 ‘convconfig’ [-Wunused-variable]
stringio.c: 在顶层:
cc1: 注意:不识别的命令行选项 ‘-Wno-self-assign’ 可能旨在抑制早期诊断
cc1: 注意:不识别的命令行选项 ‘-Wno-parentheses-equality’ 可能旨在抑制早期诊断
cc1: 注意:不识别的命令行选项 ‘-Wno-constant-logical-operand’ 可能旨在抑制早期诊断
make: *** [Makefile:248: stringio.o] 错误 1
make 失败,退出代码 2
Gem 文件将保留在 /var/www/discourse/plugins/discourse-events/gems/3.3.1/gems/stringio-3.0.2 中以供检查。
结果记录在 /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
成功安装 uuidtools-2.2.0
安装了 1 个 gem
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
成功安装 iso-639-0.3.5
安装了 1 个 gem
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
成功安装 ice_cube-0.16.4
安装了 1 个 gem
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 需要 TimeWithZone 支持,但对一般使用不是必需的。
成功安装 icalendar-2.8.0
安装了 1 个 gem
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
成功安装 icalendar-recurrence-1.1.3
安装了 1 个 gem
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
正在构建原生扩展。这可能需要一些时间...
成功安装 date-3.3.4
安装了 1 个 gem
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
成功安装 time-0.2.0
安装了 1 个 gem
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
正在构建原生扩展。这可能需要一些时间...
您正在 /var/www/discourse/plugins/discourse-events/plugin.rb 中指定 gem stringio,但它不存在!
查找:
- /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
失败
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' 在使用参数 {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]} 时执行失败,返回 #<Process::Status: pid 1109 exit 255>
失败位置:/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
引导失败,退出代码 255
如果这与最近的 Ruby 更改无关,敬请原谅——如果需要,我很乐意开一个新主题。