freedesktop.org/intltool: bundled XML::Parser carries stale perl ABI (5.40 vs current 5.42)

オープン 初心者向け
#13,118 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
perl
領域
build-system

調査の方向性

projects/freedesktop.org/intltool/package.yml から始め、そこにバンドルされている Perl XS 依存関係を現在の perl.org のレシピと比較します。versions rev-roll を行って intltool を再ビルドし、再度 Bottle 化してから、pkgx +freedesktop.org/intltool -- intltoolize --version を実行します。コマンドが Perl API mismatch なしでバージョンを出力すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Symptom

Downstream recipes that depend on intltool (autotrace, glib-based packages, etc.) hit the following at runtime of intltoolize / intltool-extract / intltool-update:

Perl API version v5.40.0 of Clone.c does not match v5.42.0

Root cause

projects/freedesktop.org/intltool/package.yml bundles a CPAN tree containing XS extensions (notably Clone, indirectly via XML::Parser) that were compiled against perl 5.40. Pantry's perl.org recipe has since moved to 5.42. The bottled XS .so files carry the older PERL_API_VERSION_STRING in their XS_VERSION_BOOTCHECK symbol, and load-time refuses to bind.

Surfaced by

#13111 `new(autotrace)` debugging session. Worked around in that recipe by cpanm-installing XML::Parser into a fresh prefix at build time, but that workaround would need to be repeated in every consumer of intltool — clearly the wrong layer.

Suggested fix

Either:

  1. Rebuild `freedesktop.org/intltool` against the current `perl.org` and re-bottle. Add a `versions:` rev-roll to invalidate the old bottle hash.
  2. Stop bundling XS deps with intltool; declare a perl `XML::Parser` module as a runtime dep (would need a new pantry recipe for the perl XS module).

Option 1 is the smaller, more immediate fix.

Reproduction

pkgx +freedesktop.org/intltool -- intltoolize --version
# expected: prints version
# actual: Perl API version v5.40.0 of Clone.c does not match v5.42.0

Related

  • Same shape as #13105 (protobuf bottle abseil ABI drift): bottle carries date-stamped/version-stamped symbols baked into binaries.
主要言語
C
スター
199
フォーク
140
平均マージ
4時間 37分
マージ済み PR(30日)
130

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

pkgxdev/pantry のほかの issue

pkgxdev/pantry の issue をすべて見る

似ている issue

C の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。