症状
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
ruby ../asp3/tecsgen/tecsgen.rb ../asp3/sample/sample1.cdl -R -I. -I../asp3/include -I../asp3/target/raspberrypi_pico_gcc -I../asp3/arch/arm_m_gcc/rp2040 -I../asp3/arch/arm_m_gcc/common -I../asp3/arch/gcc -I../asp3 -I../asp3/sample -I./gen -I../asp3/tecs_kernel --cpp "arm-none-eabi-gcc -DUSE_TIM_AS_HRT -DTOPPERS_CORTEX_M0PLUS -D__TARGET_ARCH_THUMB=3 -I. -I../asp3/include -I../asp3/target/raspberrypi_pico_gcc -I../asp3/arch/arm_m_gcc/rp2040 -I../asp3/arch/arm_m_gcc/common -I../asp3/arch/gcc -I../asp3 -I../asp3/sample -I./gen -I../asp3/tecs_kernel -D TECSGEN -E" -g ./gen tecsgen version 1.7.0 Copyright(c) 2008-2019, TOPPERS project. All rights reserved. make[1]: Entering directory '/home/JaneDoe/toppers/build' ruby ../asp3/cfg/cfg.rb --pass 1 --kernel asp -I. -I../asp3/include -I../asp3/target/raspberrypi_pico_gcc -I../asp3/arch/arm_m_gcc/rp2040 -I../asp3/arch/arm_m_gcc/common -I../asp3/arch/gcc -I../asp3 -I../asp3/sample -I./gen -I../asp3/tecs_kernel --api-table ../asp3/kernel/kernel_api.def --symval-table ../asp3/kernel/kernel_sym.def --symval-table ../asp3/arch/arm_m_gcc/common/core_sym_v6m.def \ -M objs/cfg1_out_c.d ../asp3/target/raspberrypi_pico_gcc/target_kernel.cfg ../asp3/sample/sample1.cfg /home/JaneDoe/.rbenv/versions/3.1.2/lib/ruby/3.1.0/csv.rb:1433:in `initialize': no implicit conversion of Hash into String (TypeError) from /home/JaneDoe/.rbenv/versions/3.1.2/lib/ruby/3.1.0/csv.rb:1433:in `open' from /home/JaneDoe/.rbenv/versions/3.1.2/lib/ruby/3.1.0/csv.rb:1433:in `open' from /home/JaneDoe/toppers/asp3/cfg/pass1.rb:180:in `block in ReadSymvalTable' from /home/JaneDoe/toppers/asp3/cfg/pass1.rb:174:in `each' from /home/JaneDoe/toppers/asp3/cfg/pass1.rb:174:in `ReadSymvalTable' from /home/JaneDoe/toppers/asp3/cfg/pass1.rb:909:in `Pass1' from ../asp3/cfg/cfg.rb:712:in `<main>' make[1]: *** [Makefile:358: cfg1_out.timestamp] Error 1 make[1]: Leaving directory '/home/JaneDoe/toppers/build' make: *** [Makefile:224: all] Error 2 |
コンフィギュレータ(ITRONのタスクやメールボックスなどの静的生成)が失敗する。
⇒ make が失敗する。
不具合発生条件 詳細
- Ruby 3.0 以上
- TOPPERS第3世代カーネル向け Ruby版コンフィギュレータ Release 1.6.0 以下
- TOPPERS/ASP3カーネル簡易パッケージ
asp3_arm_gcc-20201223.tar.gz
など
- TOPPERS/ASP3カーネル簡易パッケージ
不具合原因
options引数の記述が不適切である
不適切なコード
1 |
symvalCsv = CSV.open(symvalTableFileName, { skip_blanks: true, skip_lines: /^#/ }) |
適切なコード
1 |
symvalCsv = CSV.open(symvalTableFileName, skip_blanks: true, skip_lines: /^#/ ) |
コード不具合の詳細
CSVクラスのopenメソッドの仕様は次のとおりである。
1 2 3 4 |
open(filename, mode = "rb", options = Hash.new) {|csv| ... } -> nil[permalink][rdoc][edit] open(filename, mode = "rb", options = Hash.new) -> CSV open(filename, options = Hash.new) {|csv| ... } -> nil open(filename, options = Hash.new) -> CSV |
キーワード引数 mode を省略した結果、ハッシュが mode の引数となってしまいエラーに陥っている。