Bug 19436 - ошибка при создании spec-файла в секции files
Summary: ошибка при создании spec-файла в секции files
Status: CLOSED WONTFIX
Alias: None
Product: Branch 5.0
Classification: Distributions
Component: cpan2rpm (show other bugs)
Version: unspecified
Hardware: all Linux
: P2 major
Assignee: Vitaly Lipatov
QA Contact: qa-5.0@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-04-01 20:24 MSD by PeterVF
Modified: 2017-08-06 23:46 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 PeterVF 2009-04-01 20:24:49 MSD
(cpan2rpm-2.027-alt3)
например, при создании RTF-parser в секции files получаем:
%files
%perl_vendor_privlib/RTF-Parser/*
и соответственно ошибка при сборке
RPM build errors:
    File not found by glob: /usr/src/tmp/perl-RTF-Parser-buildroot/usr/lib/perl5/vendor_perl/RTF-Parser/*

при использовании cpan2rpm-2.027-alt1 files имеет вид:
%files
%perl_vendor_privlib/*
%perl_vendor_man3dir/*
Comment 1 Vitaly Lipatov 2009-04-01 23:09:39 MSD
Вы не указали, какой строка в files должна быть.
Comment 2 PeterVF 2009-04-02 11:09:18 MSD
(В ответ на комментарий №1)
> Вы не указали, какой строка в files должна быть.
:) как в версии cpan2rpm-2.027-alt1 меня вполне устраивает

%files
%perl_vendor_privlib/*
Comment 3 Vitaly Lipatov 2009-04-02 22:27:44 MSD
(В ответ на комментарий №2)
> (В ответ на комментарий №1)
> > Вы не указали, какой строка в files должна быть.
> :) как в версии cpan2rpm-2.027-alt1 меня вполне устраивает
> 
> %files
> %perl_vendor_privlib/*
Это неправильно, и sisyphus_check не пропустит такой пакет.

Я хотел бы узнать, какая строка будет правильной для данного пакета.
А, там наверное будет 
%perl_vendor_privlib/RTF/RTF-Parser/
?
Comment 4 PeterVF 2009-04-03 17:33:35 MSD
(В ответ на комментарий №3)
> %perl_vendor_privlib/RTF/RTF-Parser/
> ?
Если я правильно понял правила наименования модулей perl и соответствующих им пакетов (архивов), то директории ABC-Module там в принципе не может быть. Речь идет о модуле ABC::Module
В конкретном случае в %perl_vendor_privlib/ лежат две папки:
RTF
i386-linux

и т.к. модуль написан иключительно на perl (т.е. -  noarch), то достаточный минимум - %perl_vendor_privlib/RTF/*. Если бы были си-шные вставки, потребовалолась бы строка %perl_vendor_privlib/i386-linux/* (см. например perl-DBI). 
Кроме того, архив модуля содержит не совсем бесполезные утилиты rtf2html,rtf2text, которые после "компиляции" лежат в %buildroot/blib/script.
Но, похоже, для помещения их в пакет, надо вручную править спек.
Comment 5 Vitaly Lipatov 2009-04-04 10:23:49 MSD
(В ответ на комментарий №4)
... 
> Кроме того, архив модуля содержит не совсем бесполезные утилиты
> rtf2html,rtf2text, которые после "компиляции" лежат в %buildroot/blib/script.
> Но, похоже, для помещения их в пакет, надо вручную править спек.
Не очень понимаю, с чего вы взяли, что это возможно сделать автоматически. Но если хотите попробовать, всегда можете отредактировать /usr/bin/cpan2rpm и прислать исправление.
Comment 6 PeterVF 2009-04-06 15:53:28 MSD
(В ответ на комментарий №5)
> > Но, похоже, для помещения их в пакет, надо вручную править спек.
> Не очень понимаю, с чего вы взяли, что это возможно сделать автоматически. 
?!
Не вижу здесь утверждения, что я считаю, что это возможно сделать автоматически.

(Как вариант автоматизации этого порцесса - поместить все что предлагает изначальный пакет за минусом того чот уже упаковалось и man-ов в %doc секцию или отдельный doc-пакет)
Comment 7 PeterVF 2009-04-06 16:15:38 MSD
(В ответ на комментарий №5)
>...Но
> если хотите попробовать, всегда можете отредактировать /usr/bin/cpan2rpm и
> прислать исправление.

Приехали.
а как всеже с первопричиной бага?
Позвольте повториться:
cpan2rpm-2.027-alt1 выдает вполне рабочий spec-файл, из которого собирается вполне рабочий пакет. 
По поводу sisyphus_check не совсем понятно, на что он будет ругаться, т.к. мне, как рядовому пользователю, приходится собирать пакеты с опцией --no-sisyphus-check. А cpan2rpm - инструмент в основном для рядового пользователя. А для "разработчика" - лишь первый помощник (ввиду ком.№4 2-я часть :). IMHO.
Comment 8 Vitaly Lipatov 2009-04-06 23:42:21 MSD
(В ответ на комментарий №7)
> (В ответ на комментарий №5)
> >...Но
> > если хотите попробовать, всегда можете отредактировать /usr/bin/cpan2rpm и
> > прислать исправление.
> 
> Приехали.
> а как всеже с первопричиной бага?
> Позвольте повториться:
> cpan2rpm-2.027-alt1 выдает вполне рабочий spec-файл, из которого собирается
> вполне рабочий пакет.
Не соответствующий policy на perl-пакеты в Сизифе.

> По поводу sisyphus_check не совсем понятно, на что он будет ругаться, т.к. мне,
> как рядовому пользователю, приходится собирать пакеты с опцией
> --no-sisyphus-check. А cpan2rpm - инструмент в основном для рядового
Что не очень хорошо.

> пользователя. А для "разработчика" - лишь первый помощник (ввиду ком.№4 2-я
> часть :). IMHO.
По моему мнению, cpan2rpm - инструмент для меня. Если вам не хватает пакетов в Сизифе, сообщите, я соберу.
Текущая ситуация меня в общем-то устраивает, потому что человек хоть в спек заглянет при сборке пакета.
Изменить "назад" я не могу, потому что старое поведение противоречит правилам. Исправлять до идеала мне некогда.
Comment 9 PeterVF 2009-04-08 15:08:35 MSD
Похоже, мне "повезло" с пакетом:
$ cat Makefile.PL

use ExtUtils::MakeMaker;

&WriteMakefile(
               NAME          => 'RTF::Parser',
               EXE_FILES     => [ 'bin/rtf2html', 'bin/rtf2text' ],
               DISTNAME      => 'RTF-Parser',
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
Обрабатывая этот файл, cpan2rpm (
505     $info->{module} ||= $meta{DISTNAME} || $meta{NAME};
) присваивает $info->{module} значение RTF-Parser. Отсюда и проблема.

Предлагаю следующий патч:
$ diff -u /usr/bin/cpan2rpm cpan2rpm-my
--- /usr/bin/cpan2rpm   2008-10-09 22:38:45 +0000
+++ cpan2rpm-my 2009-04-08 11:01:43 +0000
@@ -512,8 +512,8 @@
             }
         $info->{module} = $info->{tarball};
         $info->{module} =~ s/-(\d+\.?\d*)$tarRE$//i;
-        $info->{module} =~ s/-/::/g;
         }
+    $info->{module} =~ s/-/::/g;

     ($info->{name} = $info->{module}) =~ s/::/-/g unless $info->{name};
     $info->{tarball} = $info->{name} if -d $info->{dist};

Кстати, Ваш патч несколько избыточен. Например:
$ cat cpan2rpm-2.027-alt.patch|grep %perl_vendor
+%perl_vendor_build
+%perl_vendor_install
+%perl_vendor_privlib/*
+%perl_vendor_man3dir/*
 %perl_vendor_man3dir/*
 %perl_vendor_install
+rm -rf %buildroot%perl_vendor_man3dir/
-%perl_vendor_privlib/*
-%perl_vendor_man3dir/*
Comment 10 Vitaly Lipatov 2017-08-06 23:46:43 MSK
Закрываю задачи для Branch 5.