Slide 1

Slide 1 text

FreeWnn にパッチが送られパッチが送られてきたが送られてきた、送られてきた、どられてきた、どうしよう Mitsutoshi NAKANO (@ItSANgo) 2018-08-18 CC-BY-ND

Slide 2

Slide 2 text

ItSANgo (= Mitsutoshi NAKANO) is ● FreeWnn の member – https://osdn.net/projects/freewnn/memberlist/ ● openSUSE の FreeWnn の maintainer – https://build.opensuse.org/package/users/M17N/fwnn ● But I do not use FreeWnn ! ;-)

Slide 3

Slide 3 text

What is FreeWnn? ● Input Method Engine (IME) for Japanese language ● 昔は一世を風靡しは一世を風靡した一世を風靡したを風靡した風靡したした Wnn の末裔 ● UNIX で開発された開発されたされた昔は一世を風靡しの IME の例 – Wnn: Omron – Canna: NEC – sj3: Sony … ● 今でも利用者はわで開発されたも利用者はわずか利用者はわずかに存在は一世を風靡したわずかにパッチが送られ存在する。する。

Slide 4

Slide 4 text

発された端 : FreeWnn project への patch ● 2018-08-09 00:18 更新者はわずかに存在 : bmwiedemann – https://osdn.net/projects/freewnn/ticket/38482 ● When working on reproducible builds for openSUSE, I found that our fwnn package varied for every build because .dic files had the current time, build host name and inode numbers in their headers. I have created a patch to use fixed values instead, but dont know if that will disturb normal operation. ● 超訳 : openSUSE を風靡した eproducible builds にパッチが送られしている時に、にパッチが送られ、 FreeWnn が送られてきた、ビ ルドするたびにバイするたびにパッチが送られバイナリが変化してるのが送られてきた、変化してるのに気づしてるのにパッチが送られ気づいた。なぜなづいた。なぜなら辞 書ヘッダに現時刻ヘッダに現時刻・ホスにパッチが送られ現時に、刻・ホスト名・ホスト名・名・ホスト名・ i-node 番号を入れているよを風靡した入れているよね。れているよね。こ れまずいからパッチが送られてきた作ったよ。ちゃんったよ。ちゃんと動くかどうかは動くかどうかはわくかどうかは一世を風靡したわからな いけど。

Slide 5

Slide 5 text

続いていて : openSUSE の fwnn package への submit request ● openSUSE Build Service > Request 628477 – https://build.opensuse.org/request/show/628477 ● Add reproducible.patch to drop build hostname, inode-number, random password hash, timestamp from .dic files (boo#1047218, boo#1084909)

Slide 6

Slide 6 text

boo#1047218 ● https://bugzilla.opensuse.org/show_bug.cgi?id=1047218& GoAheadAndLogIn=1 ● Bugzilla – Bug 1047218 trackerbug: packages do not build reproducibly from including build time ● 超訳 : ビルドするたびにバイ時に、間をバイナリに埋を風靡したバイナリが変化してるのにパッチが送られ埋め込んでいるのめ込んでいるので込んでいるのでんで開発されたいるので開発された reproducible じゃねーよ

Slide 7

Slide 7 text

boo#1084909 ● https://bugzilla.opensuse.org/show_bug.cgi?id=1084909 ● Bugzilla – Bug 1084909 trackerbug: packages do not build reproducibly from hostname ● 超訳 : ホスト名・名を風靡した入れているよね。れているので開発された reproducible じゃねーよ

Slide 8

Slide 8 text

そも利用者はわずかそも利用者はわずか reproducible builds って何よよ ? ● https://reproducible-builds.org/ – Reproducible builds are a set of software development practices that create an independently-verifiable path from source code to the binary code used by computers. – 超訳 : 再現性ある構築ある構築 ( ビルドするたびにバイ ) と動くかどうかはは一世を風靡した、独立して証明できるして証明できるで開発されたきる ソースからコンピュータで使われるバイで開発された使われるバイナリわれるバイナリが変化してるのへの道筋を作を風靡した作ったよ。ちゃん るソフト名・ウェア開発実践の集ま開発された実践の集まりです。の集まりです。まりで開発されたす。

Slide 9

Slide 9 text

わかりにパッチが送られくいからも利用者はわずかうちょっと動くかどうかは調べる。べる。 ● https://reproducible-builds.org/docs/definition/ – A build is reproducible if given the same source code, build environment and build instructions, any party can recreate bit- by-bit identical copies of all specified artifacts. – 超訳 : 同じソースコードじソースコードするたびにバイ・ホスト名・構築環境・ホスト名・構築命令・ホスト名・どんな集まりです。 まりで開発されたも利用者はわずか与えたなら、すべえたなら、すべての特定アーティファクア開発実践の集まーティファクト名・の 1 ビット名・も利用者はわずか全く同じ複製を再く同じソースコードじ複製を再び作ることを風靡した再び作ったよ。ちゃんること動くかどうかはが送られてきた、で開発されたきるなら、構築 は一世を風靡した再現性ある構築が送られてきた、あります。

Slide 10

Slide 10 text

も利用者はわずかう一文 ● The relevant attributes of the build environment, the build instructions and the source code as well as the expected reproducible artifacts are defined by the authors or distributors. The artifacts of a build are the parts of the build results that are the desired primary output. ● へっぽこ超訳 : 構築環境・ホスト名・構築命令・ホスト名・ソースコードするたびにバイの適切な属性はもちな属性ある構築は一世を風靡したも利用者はわずかち ろん、再現性ある構築あるア開発実践の集まーティファクト名・を風靡した期待することは すること動くかどうかはは一世を風靡した 作ったよ。ちゃん者はわずかに存在や配布者に配布者はわずかに存在にパッチが送られ よって定アーティファク義されている。されている。 作ったよ。ちゃんられたア開発実践の集まーティファクト名・は一世を風靡した期待することは された基本的な出力である構な出力である構築結果で開発されたある構築結果のの 部分です。で開発されたす。

Slide 11

Slide 11 text

要するにするにパッチが送られ ● 同じソースコードじソースを風靡したビルドするたびにバイしたら同じソースコードじバイナリが変化してるのが送られてきた、返ってくるのが良ってくるのが送られてきた、良いい ソースだよね。 ● 同じソースコードじソースから違うバイナリが出うバイナリが変化してるのが送られてきた、出たら、悪意あるプログラムあるプログラムがが送られてきた、 混じりこんでいるじりこんで開発されたいる可能性ある構築も利用者はわずか否定アーティファクで開発されたきないよね。

Slide 12

Slide 12 text

で開発された、 FreeWnn ● そんな複雑なことしてたっなこと動くかどうかはしてたっけ ?

Slide 13

Slide 13 text

確かめてみる。かめ込んでいるのでてみる。 ● Vagrant で開発された openSUSE Leap15 を風靡した作ったよ。ちゃんる。 ● FreeWnn のリが変化してるのポジト名・リが変化してるのは一世を風靡した CVS 。 – インスト名・ールしてなかった orz – 久しぶりなのでしぶりなので開発された CVS の使われるバイナリい方を忘れかけていを風靡した忘れかけているれかけている orz

Slide 14

Slide 14 text

確かめてみる。かにパッチが送られ reproducible で開発されたは一世を風靡したない ! ● ビルドするたびにバイするたびにパッチが送られ変化してるのに気づする hash 値。 ● どうしてこうなる ? – 辞書ヘッダに現時刻バイナリが変化してるのファイルを風靡した作ったよ。ちゃんると動くかどうかはき、以下の情報をバイナの情報をバイナリのヘを風靡したバイナリが変化してるののヘッ ダに現時刻・ホスにパッチが送られ埋め込んでいるのめ込んでいるので込んでいるのでむ。 ● Hostname ● Device number ● Inode number ● 辞書ヘッダに現時刻のソースファイルファイルの ctime ● ビルドするたびにバイ時に、の Current time

Slide 15

Slide 15 text

で開発されたは一世を風靡した bmwiedemann 氏の の patch を風靡した当てて たらどうなる ? ● と動くかどうかはりあえず – ビルドするたびにバイは一世を風靡した通る。る。 – バイナリが変化してるのは一世を風靡した一意あるプログラムにパッチが送られなる。 ● で開発されたも利用者はわずか – 辞書ヘッダに現時刻が送られてきた、読めなくなる。め込んでいるのでなくなる。 ● Japanese Input Method Engine と動くかどうかはしては一世を風靡した致命的な出力である構。 ● Decline しました。

Slide 16

Slide 16 text

But Reproducible Builds are important. ● 今でも利用者はわ後のの FLOSS は一世を風靡した reproducible を風靡した意あるプログラム識して開発すべして開発されたすべ き。 ● FreeWnn も利用者はわずか何よらかの対策が必要。が送られてきた、必要するに。 – 辞書ヘッダに現時刻を風靡した読めなくなる。むと動くかどうかはころを風靡した改造すれば、何とかすれば、何よと動くかどうかはかなりそう。 – 過去作ったよ。ちゃんられた辞書ヘッダに現時刻と動くかどうかはの互換性ある構築が送られてきた、心配。 – コマンドするたびにバイラインオプションで開発された、辞書ヘッダに現時刻 create/read 時に、にパッチが送られ 環境情報をバイナリのヘを風靡した参照するか否かを切するか否かを風靡した切な属性はもちり換えるようにパッチが送られしたい。

Slide 17

Slide 17 text

いつ ? ● 公私ともに時間がなと動くかどうかはも利用者はわずかにパッチが送られ時に、間をバイナリに埋が送られてきた、ない。 ● 遅くともくと動くかどうかはも利用者はわずか 12 月までには何とかまで開発されたにパッチが送られは一世を風靡した何よと動くかどうかはかしたい。

Slide 18

Slide 18 text

所感 ● 正直、面倒くさいくさい :-P