【问题标题】:Failures bulding Perl 5.32.1 on HP-UX (hpia11.31) - related to failed regex evaluations在 HP-UX (hpia11.31) 上构建 Perl 5.32.1 的失败 - 与失败的正则表达式评估有关
【发布时间】:2021-11-12 12:02:33
【问题描述】:

我正在尝试在 hpia11.31 系统上构建 Perl 5.32.1,并且在正则表达式评估中遇到了似乎失败的情况。例如,make_patchnum.pl 失败,因为正则表达式旨在从 heredoc 中提取文件名,而不是将整个 heredoc 作为文件名返回:

./miniperl -Ilib make_patchnum.pl
Failed to open for write './lib/Config_git.pl' is generated by make_patchnum.pl
#          DO NOT EDIT DIRECTLY - edit make_patchnum.pl instead
######################################################################
$Config::Git_Data=<<'ENDOFGIT';
git_commit_id=''
git_describe=''    
git_branch=''
git_uncommitted_changes=''
git_commit_id_title='':File name too long at make_patchnum.pl line 84.

手动解决这个问题,configpm 表现出同样的问题:提取变量标头的正则表达式评估在 5.32.1 中失败,而在 5.28.1 中成功。示例:

Expected a Configure variable header, instead we got:
_exe (Unix.U):
    This variable defines the extension used for executable files.
    DJGPP, Cygwin and OS/2 use '.exe'.  Stratus VOS uses '.pm'.
    On operating systems which do not require a specific extension
    for executable files, this variable is empty.

我假设这是使用在构建过程中较早构建的regexec.c,尽管我不确定。 Tne regexec.c build 报告了一些警告,但它们似乎与针对 5.28.1 报告的警告一致:我在这里没有看到任何表明它不起作用的东西。

这是regexec.c 的构建命令:

cc -c -DPERL_CORE -D_POSIX_C_SOURCE=199506L -D_REENTRANT \
-Ae -Wp,-H150000 -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 \
-D_INCLUDE__STDC_A1_SOURCE -I/usr/local/include -D_LARGEFILE_SOURCE \
-D_FILE_OFFSET_BITS=64 +O2 +Onolimit regexec.c

任何想法为什么正则表达式解析器在 HP-UX 上的行为可能与其他平台不同?我已经为 x86 Linux、plinux、zlinux、rs6000 和 Solaris 成功构建了 5.32.1,所以这似乎是 HP-UX 特有的。

编辑:编译器信息

bash-4.0$ /opt/aCC/bin/cc --version
cc: HP C/aC++ B3910B A.06.20 [May 13 2008]

【问题讨论】:

  • 我应该提一下,我绝不是一个经验丰富的 C 开发人员:我对 Perl 和 bash/ksh 脚本编写很熟悉,但对 Perl 或任何其他 C 的构建过程的实际操作很少可执行文件。
  • 也许在Perl/perl5 添加一个问题?那里可能有一些专家可以帮助您。例如,请参阅 this 问题,该问题与 HP-UX 11.00 ANSI 编译器的宏空间太小有关
  • 感谢您的建议:我在那里交叉发布了一个问题:github.com/Perl/perl5/issues/19151

标签: regex perl hp-ux


【解决方案1】:

您的cc 是哪个编译器? 您需要 ANSI-C 编译器才能在 HP-UX 上构建 perl

$ cc --version cc:HP C/aC++ B3910B A.06.28.02 [2016 年 3 月 9 日]

$ cc -V cc:HP C/aC++ B3910B A.06.28.02 [2016 年 3 月 9 日]

【讨论】:

  • 那会是 Merijn 吗? :-}
  • 是的 - 是 PM 指出的
  • bash-4.0$ /opt/aCC/bin/cc --version cc: HP C/aC++ B3910B A.06.20 [2008 年 5 月 13 日]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
相关资源
最近更新 更多