0

Net::NSCAng::Client少し前にリリースしましたが、OpenBSD で多くのテストの失敗が発生しています。その理由は、NSCAng プロトコルが事前共有鍵モード (RFC4279) で OpenSSL を使用するためです。これは、LibreSSL (現在の OpenBSD のデフォルト) の人々が切り出したものです。しかし、彼らはこれを最も不透明な方法で行うことに必死だったようです。インクルード ファイルにはすべての関数が定義されており、共有ライブラリには対応するシンボルが欠けているだけなので、コンパイルは正常に機能しますが、テストは失敗します。

OpenBSD には eopenssl と呼ばれる互換パッケージがあり、最初に Makefile.PL でこれをテストすることにより (を使用して) 、互換ライブラリがインストールされている場合ExtUtils::PkgConfigに動作させることができます。そうでない場合でも、物事は失敗します。

CPP シンボル OPENSSL_NO_PSK を確認できましたが、インクルードは常に LibreSSL から取得されるため、eopenssl とのリンクが正常に機能する場合でも、これは失敗します。私が残した唯一のアイデアは、autoconf が行うように、コンパイル段階の一部としてテスト プログラムを実行することです。ExtUtils::MakeMakerそれは(または他の何か-必要に応じてビルドシステムを切り替えてもかまいません)でも可能ですか?

4

1 に答える 1

1

It's easy to write feature tests with Devel::CheckLib. Something like the following can be used to check for the presence of function your_func (in Makefile.PL):

my $your_func_exists = check_lib(
    header   => 'your_header.h',
    function => 'return your_func ? 1 : 0;',
);

If you simply want to abort compilation if the function is missing:

check_lib(
    ...
) or warn('your_func is missing'), exit;

Exiting with 0 should avoid a CPAN Tester's 'FAIL' report.

于 2015-10-04T09:49:47.880 に答える