質問: ### GAE/Goを試してますが、 `nobuild_files` について確認させてください Vendoringの機能を使ってて、 `app.yaml` と同じディレクトリに `vendor` ディレクトリがあります。 これを、そのまま動かそうとすると、 `Failed parsing input: parser: bad import "syscall"` というエラーが使ってるライブラリによっては出ます。 これの対処法として、 `app.yaml` に `nobuild_files: vendor/` を追加しました。 ### 私の理解 以下、私の理解です。 * GAEでは、 `app.yaml` があるディレクトリ以下をすべてビルド対象にする。 * `nobuild_files: vendor/` が無い場合は `vendor` ディレクトリすべてのパッケージをビルドする。アプリケーションで使ってないものもすべてビルドする。 * `nobuild_files: vendor/` がある場合は、 `vendor` ディレクトリはビルド対象とはならない。が、アプリケーションで使ってるものは `vendor` ディレクトリから探してきて使ってるファイル(パッケージ?)のみをビルド対象にする。 ### 確認 この理解で合ってますでしょうか? また、ビルド対象になるのはファイル単位なのかパッケージ単位なのかが分かりませんでした。 そもそもGo自体のビルドは使ってるもののみがビルド対象でGAEが特別な挙動なのでしょうか?
回答: Google App Engine はクラウドなので、syscall や unsafe といった、システムに支障をきたしかねない API の使用が禁止されています。ですので、ご自分のプログラムもしくはそれが依存しているパッケージが一つでも syscall/unsafe を使っているとそれだけでエラーとなります。 これは vendor に置いたとしても同じです。