いけむランド

はてダからやってきました

cygport の LICENSE 変数まわりの話

ちょっと前に cygport が LICENSE 変数に対応したため、それの影響でいろいろ調べた話をまとめておく。

cygwin.com

Add LICENSE variable

具体的な LICENSE 変数対応の差分は以下のとおり。

github.com

これによりインストーラが読む setup.hint にライセンス名が付与されるようになった。

(実際にインストーラの setup.hint のパーザのコードを見た感じだと読んではいなさそう。)

cygwin.com

ライセンス名の書き方についてはコメントで言及があるように SPDX short-form identifiers に従う必要がある。

#****v* Information/LICENSE
#  DESCRIPTION
#  A SPDX license expression (See https://spdx.dev/ids/) for the license(s) of
#  the package.
#****

spdx.dev

実際に setup.hint に書かれたライセンス名は calm が license-expression で判定するため、不正な ID や式を書くと、怒られるようになる。

pypi.org

                    # license must be a valid spdx license expression
                    if key == 'license' and licensing:
                        try:
                            le = licensing.validate(value, strict=True)
                        except (license_expression.ExpressionParseError, license_expression.ExpressionError) as e:
                            errors.append('value for key %s not a valid license expression: %s' % (key, e))
                        if le.original_expression != le.normalized_expression:
                            errors.append("license expression: '%s' normalizes to '%s'" % (value, le.normalized_expression))

github.com

これに関連して、とあるパッケージを更新した時に calm がきちんと動かなくなっている旨の報告が ML に投げられていた。

cygwin.com

Could we maybe turn down the licence messages to warnings for now, until we get a handle on what we need to change to make it valid and accurate! It was not obvious to me that these messages were referring to the cygport script variable LICENSE value.

LICENSE 変数が不正かどうかは cygport でパッケージを作成完了した時点ではわからない (LICENSE 変数の中身をチェックする仕組みは cygport にはない) ため、たしかにこの修正はちょっと影響が大きすぎるのではという感想。(↓のメールでもそのことを言及されている。)

cygwin.com

実際にこの機能を入れるにはもっと議論が必要だろうという話も出ている。

cygwin.com

この記事を書いている時点では↑が最新のメールなので、これ以降、話が進展して、良い方向に向かってくれれば良いかなと思う。