プロジェクト

全般

プロフィール

環境対応 #1152

3.6.0 のリリース tarball 内の vendor/twitter-text が意図通りの構成になっていない

Izumi Tsutsui12ヶ月前に追加. 11ヶ月前に更新.

ステータス:
実装待ち
優先度:
通常
担当者:
対象バージョン:
開始日:
2018-01-07
期日:
進捗率:

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
コピー先がその階層でよいのか、というのはよくわかりませんが。

履歴

#1 toshi_a 初音11ヶ月前に更新

  • ステータス新規 から 実装待ち に変更
  • 担当者toshi_a 初音 にセット

アーカイブスクリプトで自動でパッチしていて、エラーハンドリングしてなかったようですね。リリース作業時に確認してみます

他の形式にエクスポート: Atom PDF