首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl构建脚本中测试LibreSSL

在Perl构建脚本中测试LibreSSL
EN

Stack Overflow用户
提问于 2015-10-03 09:00:40
回答 1查看 87关注 0票数 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 (或者其他什么--如果有必要的话,我不介意切换构建系统),这可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-04 09:49:47

Devel::CheckLib编写特性测试很容易。可以使用以下内容检查函数your_func的存在(在Makefile.PL中):

代码语言:javascript
复制
my $your_func_exists = check_lib(
    header   => 'your_header.h',
    function => 'return your_func ? 1 : 0;',
);

如果只想在函数丢失的情况下中止编译:

代码语言:javascript
复制
check_lib(
    ...
) or warn('your_func is missing'), exit;

退出0应避免CPAN测试程序的“失败”报告。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32920753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档