问题标签 [makemaker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
86 浏览

perl - 如何使用 ExtUtils::MakeMaker 在 META 文件中填充“提供”字段

我的一个模块未能通过 CPANTS 政策meta_yml_has_provides

该文档指出:

将此分发中包含的所有模块添加到 META.yml 字段“提供”。Module::Build 或 Dist::Zilla::Plugin::MetaProvides 会自动为您执行此操作。

如何在使用 ExtUtils::MakeMaker 时将其应用于我的 CPAN 模块?

0 投票
2 回答
1781 浏览

git - 解决 ExtUtils::MakeMaker 和 Test::Harness 之间的循环依赖

我正在尝试将 RHEL6 上的 git 2.5.2 编译到我的主目录中,它需要一个 perl 模块 ExtUtils::MakeMaker。ExtUtils::MakeMaker 没有安装在标准位置,由于组织限制,安装包(通过 yum)是不可能的。

ExtUtils::MakeMaker 需要 Test::Harness,它也没有安装。Test::Harness 依赖于 ExtUtils::MakeMaker,有没有办法打破这种依赖关系或编译 git 而不依赖于 ExtUtils::MakeMaker?

尝试安装 ExtUtils::MakeMaker 时的输出:

git make 的输出:

0 投票
0 回答
46 浏览

perl - ExtUtils::MakeMaker 编译助手实用程序

我可以说服 EU::MM 编译一个辅助实用程序而不寻找 XS 来构建吗?

例如,给定以下内容:

...生成的 Makefile 上的make尝试使用动态库:

我最终想要的是在、example.pl和 App::Example 下构建和安装助手。但是,我首先需要正确“构建”纯 perl 模块。使用 C 和 EXE_FILES 指令并没有改变这种行为。/usr/bin/usr/sbin$Config{vendorlib}

0 投票
1 回答
399 浏览

macos - 从 cpan 安装 Date::Manip 在 mac 上失败 - 找不到 ExtUtils::MakeMaker

我正在尝试使用 cpan 在 Mac OS X 10.10 上安装 Date::Manip。我安装了 Xcode 和命令行工具。当我输入

sudo cpan -i Date::Manip我看到以下错误:

这没有意义,因为ExtUtils::MakeMaker我的系统上已经安装了:

我不明白为什么 Date::Manip 安装找不到它。

安装程序接下来会尝试安装ExtUtils::MakeMaker(因为它认为它丢失了),但安装失败。这可能是一个单独的问题,但我目前并不关心 - 我只想Date::Manip安装,使用当前版本的MakeMaker.

如何cpan找到并使用当前安装的ExtUtils::MakeMaker?


附加信息:

0 投票
0 回答
259 浏览

perl - 如何配置 rpmbuild 以使用 lib64/perl5 作为安装路径?

我正在运行 CentOS7 (RHEL7),并且正在尝试使用 rpmbuild 构建 Perl 模块。我已经生成了 SPEC 文件,它一直在构建,直到安装失败。

错误:glob 找不到文件:/home/user/rpm/BUILDROOT/perl-Data-Dumper-2.167_02-1.el7.centos.x86_64/usr/lib64/perl5/vendor_perl/auto/*

我在 .spec 文件中看到,它正在寻找 %{perl_vendorarch}/auto/* 所以它正在寻找正确的位置(与 yum 为 perl 模块安装预构建 rpm 的位置相同。)

但是,在进行安装阶段时,似乎 rpmbuild 正在尝试使用(通过 MakeMaker 生成的 Makefile)我的 PERL5LIB /home/user/perl5/lib/perl5。我可以通过规范将 INSTALL_DIR 更改为/usr,但是,我不知道如何将后缀更改为lib/perl5

有没有办法告诉 MakeMaker 使用不同的后缀?

0 投票
1 回答
50 浏览

perl - ExtUtils::MakeMaker doesn't generate make target to install dependencies for development

I'm building a Perl module. Makefile.PL has

Recently, my ~/perl5 tree got corrupted (PERL5LIB=~/perl5) so I decided to rebuild it, so I blew it away. Doesn't WriteMakefile() generate some make target that will do this for me with all the modules/packages in PREREQ_PM and TEST_REQUIRES. Instead, it just prints warnings:

So I have to start re-installing all these by hand in order to run tests. For my small project, this isn't such a problem, but what if the project had many dependencies? Isn't there a way to automate this?

0 投票
1 回答
158 浏览

perl - 在安装时使用 ExtUtils::MakeMaker/Dist::Zilla (dzil) 安装附加文件

tl;dr我想package.json随我的 Perl 库一起提供一个,运行yarn install(或npm install在安装期间)并使用 Perl 模块安装下载的 JavaScript 依赖项。

我有以下内容dist.ini

该文件EMM-include.pm包含一个MY::postamble方法:

插件[Web::FileHeader]获取文件并将其修补到Makefile.PL.

然后有一个lib/Foobar/package.json

调用MY::postamble部分(如果没有,则将其替换为)并使用及其依赖项填充目录。EMM-include.pmyarn installnpm installyarnlib/Foobar/node_modulesajv

最后,必须有一个模块lib/Foobar.pm

几乎可以按预期工作:可以使用dzil build. 在分发目录中,perl Makefile.PL调用yarn install,该目录lib/Foobar/node_modules被填充,但其中的文件没有安装make install

如果我perl Makefile.PL第二次运行,一切正常,JavaScript 依赖项会进入blib/并将make installJavaScript 模块与 Perl 模块一起安装。

将 JavaScript 依赖项与分发一起提供不是一种选择。它们已经太多了,而且它们可能有冲突的许可证(我在这里使用的是 GPLv3)。在运行时下载deps,安装后大多会因为缺少权限而失败。

诚然,这与 没有太大关系Dist::Zilla,而是与 有问题ExtUtils::MakeMaker。但我实际上Dist::Zilla在这里使用。

如果它很重要,真正的分布是https://github.com/gflohr/qgoda并且在撰写本文时的最后一次提交是https://github.com/gflohr/qgoda/commit/3f34a3dfec8da665061432c3a8f7bd8eef28b95e

0 投票
1 回答
39 浏览

perl - 如何获得代码覆盖率的 MakeMaker 目标?

在我的基于 ExtUtils::MakeMaker 的项目中,我想从我的测试中生成代码覆盖率报告。我为此使用了 Devel::Cover,但我必须手动运行它:

输入(和记住)太多了,所以我想运行类似的东西make coverExtUtils::MakeMaker::Coverage似乎可以做到这一点,但我无法安装它。

为什么会这样,我该如何安装该模块?我可以很好地安装其他模块cpan,所以我认为这不是网络问题。

还是 ExtUtils::MakeMaker::Coverage 过时了(看起来最后一次更新是从 2005 年开始的)?我应该改用什么?

0 投票
0 回答
44 浏览

unit-testing - 如何告诉 Makemaker 并行运行测试?

我有一个带有 MakeMaker 生成的 Makefile 的模块,我想make test并行运行我的单元测试 ()。Test::Harness接受例如HARNESS_OPTIONS=j4使用 4 个线程。但是我看不到如何调整MakeMaker 的测试目标来设置这个变量。

现在我可以HARNESS_OPTIONS=j4在我的中导出,~/.bashrc但在每次使用 Test::Harness 的测试运行时强制执行它似乎很奇怪。如果我有不应该在另一个项目中并行运行的测试怎么办?

make -j4 test没有看到任何改善。make test运行

所以我猜即使make使用多个线程,Test::Harness 也可能不支持这一点,或者make可能不会将此信息传递给 Test::Harness。

目前这只是为了加快我的测试。我的模块是一个内部模块,我不太担心将这个选项强加​​给模块的任何用户。但是,如果我可以在例如我不发布的配置文件中定义此选项,那也可以。

说到配置文件:我可以prove -j4 t/并行运行和运行测试。因此,一个选项可能是告诉 MakeMaker 使用 运行测试prove,但我也没有看到配置它的方法。

我如何告诉 MakeMaker 并行运行这个项目的测试?

0 投票
1 回答
83 浏览

perl - 有没有办法让操作系统在 CPAN 发行版中定义依赖关系?

我正在开发一个可以在 Win32 和 *nix 上运行的 CPAN 发行版。然而,为了让它在 Win32 上工作,它需要另一个只能安装在 Win32 上的 CPAN 发行版(模块)。

这样做的问题是,通过将该模块声明为依赖项,它无法安装在 *nix 机器上。但它不会在 *nix 机器上真正使用/需要,只有在 Win32 上运行时。

我的发行版ExtUtils::MakeMaker在自动生成的 hash 中使用和配置依赖项%WriteMakefileArgs

我尝试Makefile.PL根据运行它的操作系统进行编辑以添加或删除依赖项。但是,这实际上不适用于 and 的生成META.jsonMETA.yml它们是根据我最终执行的操作系统生成的make dist。如果我在 Windows 上运行它,那么只会将 Win32 依赖项添加到这些文件中并破坏 *nix 安装。如果我在 *nix 上运行它,则不会添加依赖项,并且在测试分发时它可能会破坏 Win32 上的安装。

有没有办法为特定操作系统定义不同的依赖项,以使应用程序在安装发行版时喜欢CPANCPANminus可以在每个操作系统上成功运行?