Upgrade to Pro — share decks privately, control downloads, hide ads and more …

限界環境CPython rev. seccamp2025

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

限界環境CPython rev. seccamp2025

Avatar for らすぴー

らすぴー

August 14, 2025
Tweet

More Decks by らすぴー

Other Decks in Technology

Transcript

  1. 注意事項 • これは2024年夏のPyCon JP 2024で行った野良発表 「Python3をWindows CEに移植した話」 の二番煎じrev. seccamp2025となっています •

    時間の都合で当時のスライドを流用しており、大変読みにくく なっているかと思われます • そもそも説明が雑です 2
  2. 目次 1. 自己紹介 2. 電子辞書で動くPython 3. 事の発端 4. Pythonのバージョン選定 5.

    パッチ適用 6. ビルドツールの選定 7. configure.acの改造 8. Makefile.pre.inの改造 9. WinCEに無いAPIの実装 10.コンソール問題 11.同名DLL問題 12.その他の問題 13.追加モジュールについて #rev. seccamp2025 14.追加移植: tqdm 3
  3. 電子辞書で動くPython • 電子辞書Brainについて • SHARPの電子辞書シリーズ • Windows CE(WinCE)が動作 • 2021年以降のモデルは別OS

    • 2chなどで自作アプリやハックが 盛んだった • 今年5月頃にインターネット接続に ついに成功 • Kernel/VM@関西11回目で発表したよ 5 SHARP Brain PW-SH7-W 自分が持ってる機体の色違い
  4. 電子辞書で動くPython • 2007年頃まで開発されていた、WinCEで動く 「PythonCE」が存在 • v2.3.4 ~ v2.5 まで対応 •

    独自コンソールにより対話モードが使用可能 • numarrayなど一部の追加モジュールも https://sourceforge.net/projects/pythonce/ 6 CPythonのWinCE移植版 「PythonCE」のアイコン
  5. ビルドツールの選定 Pythonで使えるビルドツール: • Makefile + gcc ... LinuxとMac • Visual

    Studio + Visual C++ ... Windows • SCons + eVC4 ... Windows CE (PythonCE) 12
  6. ビルドツールの選定 当時使用できた環境 • Raspberry Pi 3B & ZeroW • Chromebook

    → Windows系のビルドツールの使用が困難 → WinCE向けのgcc「cegcc」を使うしかない 13
  7. コンソール問題 問題発生 ... 電子辞書で stdin や stdout が使えない stdin, stdout,

    stderrのファイル記述子は本来は 0, 1, 2 そのすべてが無効になっていた(-1) → fileno や isatty を別に実装して偽装 19
  8. 同名DLL問題 解決策 • *.pyd → *.cp310-wince_arm.pydに変更 • python310.dll と python3.10.exe

    双方にハッシュ値を 埋め込み、実行時に検証する 21
  9. その他の問題 • 環境変数がない environ.iniという設定ファイルを作成、また --env-set オプションや --env-path オプションを追加することで対応 • pyファイルを直接実行できない

    レジストリにpyファイルが登録されないため、pyファイルをダブルク リックしても実行できない → PYTHONASSOCIATEREG という環境変数を追加、起動時にレジストリ設 定をできるように 22
  10. その他の問題 • ModuleNotFoundError: No module named ‘os’ なぜかosがインポートできない(!?) 原因: “os.py”

    が “OS.PY” になっていた!(ファイルシステムの問題) → PYTHONCASEOK を設定することにより対応 • python310._pthを使った時の挙動がなんか変 なんかドキュメントに書いてある通りの挙動じゃない... → ドキュメントの日本語訳が間違っていた!(現在は修正済み) 23