Bug 24790 - h2ph генерит не компилируемый код
Summary: h2ph генерит не компилируемый код
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: perl4-compat (show other bugs)
Version: unstable
Hardware: all Linux
: P3 major
Assignee: at@altlinux.org
QA Contact: qa-sisyphus
URL: http://rt.perl.org/rt3//Public/Bug/Di...
Keywords:
Depends on:
Blocks:
 
Reported: 2010-12-20 00:44 MSK by Slava Dubrovskiy
Modified: 2012-10-07 18:58 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Slava Dubrovskiy 2010-12-20 00:44:50 MSK
Собираю qemu-server.
Использую h2ph вот так:
h2ph -r -l -d . /usr/include/*

В результате получаю такую ошибку:

find-requires: running scripts (files,lib,pam,perl,pkgconfig,pkgconfiglib,python,rpmlib,shebang,shell,static,symlinks)
Unquoted string "c" may clash with future reserved word at /usr/src/tmp/qemu-server-buildroot/usr/share/perl5/_h2ph_pre.ph line 162.
Illegal character in prototype for main::__INT16_C : c at /usr/src/tmp/qemu-server-buildroot/usr/share/perl5/_h2ph_pre.ph line 162.
Illegal declaration of subroutine main::__INT16_C at /usr/src/tmp/qemu-server-buildroot/usr/share/perl5/_h2ph_pre.ph line 162.
Compilation failed in require at /usr/src/tmp/qemu-server-buildroot/usr/share/perl5/PVE/QemuServer.pm line 33.
Compilation failed in require at /usr/src/tmp/qemu-server-buildroot/usr/sbin/qm line 6.
BEGIN failed--compilation aborted at /usr/src/tmp/qemu-server-buildroot/usr/sbin/qm line 6.
# perl(PVE/QemuServer.pm) at line 6 (depth 3) not loaded at BEGIN SKIP
# /usr/src/tmp/qemu-server-buildroot/usr/sbin/qm: deparse failed. isPerl=0.0299910474485228.
find-requires: ERROR: /usr/lib/rpm/perl.req failed
error: /bin/sh failed
error: Failed to find Requires

Раньше пол года назад собиралось нормально.

Подобная ошибка есть в багзиле https://bugzilla.redhat.com/show_bug.cgi?id=643447
И её причины и исправление описано в http://rt.perl.org/rt3//Public/Bug/Display.html?id=74614
Comment 1 at@altlinux.org 2010-12-20 00:52:47 MSK
h2ph скорее всего большое не поддерживается, и чинить его скорее всего никто не будет. Для совместимости с существующим кодом я сделал пакет perl-ph, в котором несколько штук *.ph файлов генерируются другим (более цивилизованным) способом.

Короче, рекомендую не запускать h2ph.
Comment 2 Slava Dubrovskiy 2010-12-20 03:44:37 MSK
(В ответ на комментарий №1)
> h2ph скорее всего большое не поддерживается, и чинить его скорее всего никто не
> будет. Для совместимости с существующим кодом я сделал пакет perl-ph, в котором
> несколько штук *.ph файлов генерируются другим (более цивилизованным) способом.
А если нужен asm/ioctl.ph , что делать?
В дебиане, кстати, для сборки данного пакета не используют h2ph.
Можно ли рассчитывать на расширение perl-ph?

> Короче, рекомендую не запускать h2ph.
Помогло 
sed -i "/(c)/d" _h2ph_pre.ph 
но я не знаю где это может вылезти в дальнейшем.
Comment 3 at@altlinux.org 2010-12-20 03:50:11 MSK
В ioctl(2) указан хедер <sys/ioctl.h>, хотя ioctl_list(2) ссылается на <asm/ioctl.h>. А какие макросы оттуда нужны?
Comment 4 Vladimir Lettiev 2012-10-07 18:58:42 MSK
Исправление из RT74614 присутствует в текущем perl, поэтому думаю, что можно закрыть баг.