環境対応 #1152
完了3.6.0 のリリース tarball 内の vendor/twitter-text が意図通りの構成になっていない
0%
説明
概要¶
3.6.0 のリリース tarball
https://mikutter.hachune.net/bin/mikutter.3.6.0.tar.gz
の mikutter/vendor/twitter-text 以下は twitter-text-2.1.0.gem の代替と思いますが、
以下の通り複数の問題があるようです。
(≒結果としてこれらを使用する ArchLinux AUR では動作しない?)
rej ファイル¶
以下の通りパッチ当てに失敗したと思われる *.orig と *.rej ファイルが残っています
% tar -ztf mikutter.3.6.0.tar.gz mikutter/vendor : mikutter/vendor/twitter-text/regex.rb.orig mikutter/vendor/twitter-text/regex.rb.rej %
regex.rb.rej の中身は以下のように twitter-text-2.1.0.gem に含まれる tld_lib.yml の対応と思います。
--- vendor/twitter-text/regex.rb 2015-12-25 07:24:03.213843945 +0900
+++ vendor/twitter-text/regex.rb 2015-12-25 07:22:50.788520093 +0900
@@ -28,8 +28,8 @@ module Twitter
TLDS = YAML.load_file(
File.join(
- File.expand_path('../../..', __FILE__), # project root
- 'lib', 'assets', 'tld_lib.yml'
+ __dir__,
+ '..', 'assets', 'tld_lib.yml'
)
)
twitter-text-2.1.0.gem では assets/tld_lib.yml は twitter-text.rb と同じ lib 直下に置かれていて、
tarball 内の当該のファイルは mikutter/vendor/assets/tld_lib.yml にあるので意図どおりと思いますが、
rej ができているのは単にインデントがズレているだけのようです。
config ファイル¶
twitter-text-2.1.0 gem の lib/twitter-text/configuration.rb は以下のように
lib/twitter-text.rb と同じ階層にある config ディレクトリ以下の v1.json と v2.json を参照します。
CONFIG_V1 = File.join(
File.expand_path('../../../config', __FILE__), # project root
"#{PARSER_VERSION_CLASSIC}.json"
)
CONFIG_V2 = File.join(
File.expand_path('../../../config', __FILE__), # project root
"#{PARSER_VERSION_DEFAULT}.json"
)
しかしこれらが mikutter/vendor 以下にありません。
% tar -ztf mikutter.3.6.0.tar.gz mikutter/vendor | grep config mikutter/vendor/twitter-text/configuration.rb %
twitter-text-2.1.0.gem では config ディレクトリが lib と同じ階層にあるので、
vendor/twitter-text においては同じ階層にはできない状態です。
% cat twitter-text-2.1.0.gem | tar -xf - % tar -ztf data.tar.gz .gitignore .gitmodules .rspec CHANGELOG.md Gemfile LICENSE README.md Rakefile config/README.md config/v1.json config/v2.json lib/assets/tld_lib.yml lib/twitter-text.rb lib/twitter-text/autolink.rb lib/twitter-text/configuration.rb lib/twitter-text/deprecation.rb lib/twitter-text/extractor.rb lib/twitter-text/hash_helper.rb lib/twitter-text/hit_highlighter.rb lib/twitter-text/regex.rb lib/twitter-text/rewriter.rb lib/twitter-text/unicode.rb lib/twitter-text/validation.rb lib/twitter-text/weighted_range.rb :
config ディレクトリを mikutter/vendor 直下に作成して v1.json v2.json をコピーし、
regex.rb と同様に mikutter/vendor/twitter-text/configuration.rb のパス記述にパッチを当てる、
という操作が必要な気がします。
備考¶
twitter-text の upstream では config/v1.json config/v2.json と assets/tld_lib.yml が ruby 以外の実装と共通で
rb ディレクトリの外にあるため、 gem 作成時にコピーしているようです。
https://github.com/twitter/twitter-text/blob/c35766e842ca0729818d904a58f84e1ab5d72ed8/rb/Rakefile#L13
コピー先がその階層でよいのか、というのはよくわかりませんが。
toshi_a 初音 さんがほぼ7年前に更新
- ステータス を 新規 から 実装待ち に変更
- 担当者 を toshi_a 初音 にセット
アーカイブスクリプトで自動でパッチしていて、エラーハンドリングしてなかったようですね。リリース作業時に確認してみます
Izumi Tsutsui さんが約4年前に更新
- ステータス を 実装待ち から 終了 に変更
4.0 以降 vendor は消滅して、配布としては deployment/appimage で代替されるようになっているので
本件もクローズ