ホームページ >バックエンド開発 >PHPチュートリアル >「pecl install grpc」実行時の過剰な警告メッセージを処理する方法
pecl install grpc を実行すると、次のような警告メッセージが大量に表示される場合があります。
#7 67.72 /tmp/pear/temp/grpc/src/core/lib/promise/detail/promise_factory.h:174:5: warning: 'always_inline' function might not be inlinable [-Wattributes] #7 352.5 /tmp/pear/temp/grpc/src/core/lib/event_engine/forkable.h:61:34: warning: 'unused' attribute ignored [-Wattributes]
これらの警告が何百も存在し、ログがあふれてしまうこともあります。これは、CI/CD パイプラインがログ制限を超えてエラーが発生し、プロセスが停止するデプロイメント中に特に問題がありました。
オンラインで警告メッセージを検索すると、GCC (GNU Compiler Collection) が参照されます。
これらの警告は、gRPC のソース コードをビルドするときにコンパイラによって生成されることが判明しました。警告は gRPC のソース コードから発生するため、ユーザーがソース コードを直接修正して警告を抑制することは現実的ではありません。
幸いなことに、GCC には警告メッセージを抑制するためのオプションがいくつか用意されており、ビルド プロセス中にコンパイラに渡すことができます。
GCC ドキュメントの警告オプション
ただし、pecl install grpc の実行時にこれらのオプションを直接渡す簡単な方法はありません。ご存知の方がいらっしゃいましたら、ぜひお知らせください。喜びの涙を流してお祝いさせていただきます。 ?
それで、今度はどうするのですか?
答えは StackOverflow スレッドから得られました。pecl install にすべてを処理させる代わりに、プロセスを小さなステップに分割し、コンパイル段階でオプションを渡すことができます。
参照: StackOverflow
gRPC は C で記述されているため、CFLAGS や CXXFLAGS などの環境変数を使用して、コンパイル中に警告を抑制するオプションを指定できます。
GCC 最適化に関する Gentoo Wiki
gRPC が Dockerfile にインストールされていると仮定します。
RUN pecl install grpc
RUN pecl download grpc \ && tar xzf $(ls grpc-*.tgz | head -n 1) \ && cd $(ls -d grpc-*/ | head -n 1) \ && phpize \ && ./configure --with-php-config=/usr/local/bin/php-config \ && make -e CFLAGS="-Wno-attributes -Wno-unused-parameter -Wno-deprecated-declarations -Wno-return-type" CXXFLAGS="-Wno-attributes -Wno-unused-parameter -Wno-deprecated-declarations -Wno-return-type" \ && make install
後のコマンドは pecl install が内部的に行うことを模倣していますが、より詳細に制御できます。プロセスを詳しく分析すると、pecl インストールがバックグラウンドでどれだけの量の処理を処理しているかが明らかになり、驚くべき結果となりました!
警告は作成フェーズ中に表示されたため、CFLAGS および CXXFLAGS 環境変数を介して抑制オプションを渡しました。
make -e CFLAGS="-Wno-attributes -Wno-unused-parameter -Wno-deprecated-declarations -Wno-return-type" CXXFLAGS="-Wno-attributes -Wno-unused-parameter -Wno-deprecated-declarations -Wno-return-type"
どの抑制オプションを使用するかを決定するには、警告メッセージの最後を確認してください。 [-Wattributes] や [-Wunused-parameter] などのヒントがよく表示されます。これらを抑制するには、-Wno-attributes または -Wno-unused-parameter など、これらの先頭に no を追加します。
詳細については、公式ドキュメントを参照してください:
GCC ドキュメントの警告オプション
このアプローチにより、gRPC 警告メッセージの沼から抜け出すことに成功しました。ただし、これでは CI/CD ログ制限の問題が完全に解決されたわけではありません。これについては今後の投稿で説明します。
この記事が 1 人でも gRPC 警告メッセージの沼から抜け出す手助けになれば、とても嬉しいです。 ?
以上が「pecl install grpc」実行時の過剰な警告メッセージを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。