2012-04-20 10 views
2

cygwinでPyPyをコンパイルしようとしていますが、pythonがgccでコンパイルされたファイル "externmod"を開こうとするとコンパイルが停止します。 cygwin上のgccの問題は、コンパイルしているものに '.exe'を自動的に付加することです。したがって、gccはgcc -shared -Wl,--enable-auto-image-base -pthread -o /tmp/usession-release-1.8/shared_cache/externmodと呼ばれますが、出力ファイルはexternmod.exeに関係なく終了します。だから、python /tmp/usession-release-1.8/shared_cache/externmodを開こうとすると、それを見つけることができない - したがって、コンパイルが停止します。誰でもこの問題を解決する方法を知っていますが、gccを再コンパイルするのに手間がかかりません。私はそれをしたくありません。cygwinでPyPyをコンパイルする

答えて

3

あなたの質問に答える最も簡単な方法は、 .pyをpypy/translator/platformに変更して、現時点では「なし」の代わりに実際のプラットフォームを指すようにすることです。 linux.pyには、 `so_ext = 'so'という行があることに気づくでしょう。これはおそらく拡張の問題を修正するものです。

cygwinを装っていることのちょっとしたハックは、この正確な例ではうまくいくでしょうが、後でいくつかの道のりがあります(残念ながら、私は十分な詳細で覚えることができません) 。

編集:私のinit.pyの関連セクションは、現在、私はかなりの数の変更を加えることの後に、それをコンパイルするために管理

if sys.platform == 'cygwin': 
    from pypy.translator.platform.linux import Linux, Linux64 
    import platform 
    if platform.architecture()[0] == '32bit': 
     host_factory = Linux 
    else: 
     host_factory = Linux64 
elif sys.platform.startswith('linux'): 
+0

でCygwinと手順については、パッチを見つけることができ、他のroadbumpsがあります。以前はすべてのプロセスを完了して動作させましたか? –

+2

私はそれを約1年前にコンパイルしました(そして、あなたは私に再びそれを試してもらうように促しました:D)。上記の特定の修正を使用する場合は、翻訳していないrctimeモジュールに関する問題が発生します。アドバイスを受けて(https://bugs.pypy.org/issue902)、私はrctimeと_multiprocessingモジュールを無効にしました。残念ながら、これはスレッドを使用するコードを破ります。私はそれを補うかもしれないいくつかの窓機能を有効にすることを検討していますが、私はそれほど遠くには達していません。 – Casey

1

Windowsは実行可能であることを知るために ".exe"拡張子が必要です。 Windowsを探すためにビルドを変更し、.exe拡張子を使用する必要があります。

3

のように見えます。

  1. PyPyにはCygwinの設定がありません。上記のように、私はLinuxの 設定をコピーし、必要に応じて変更しました。特に、 -pthreadフラグを削除し、--export-dynamic Cリンカーフラグを-export-all-symbolsにする必要があります。また、ファイル拡張子(.exe、.dll)が指定されています。
  2. Cygwinはtm構造体にtm_gmtoffとtm_zoneフィールドを実装していません。これはPOSIX標準のGNU拡張です。 PyPyは、これらのフィールドを使用してタイムゾーンを決定します。私は回避策を実装しました。これらのフィールドを使用すると、すべてのファイルを変更する必要があります。
  3. Cygwinでは、システムコールwaitpid()は、スロット2にPyPyが使用するものとは異なる引数型を想定しています。私は引数を再マッピングするラッパーを実装しました。
  4. Cygwinでは、cursesのCヘッダファイルはncursesの下にあります。

あなたはあなたは正しいhttp://www.tux.org/~mayer/cygwin/pypy

関連する問題