[sisyphus] XawTV4

Slava Semushin php-coder на ngs.ru
Пт Июл 28 09:06:22 MSD 2006


--- Хихин Руслан 2006-07-28 02:01:07 +0400
+++ Vyacheslav Semushin 2006-07-28 11:22:08 +0700

    Позволю себе дать немного советов Вам. Вы вправе ими пренебречь :)
    
    [skip]

ХР> 4 Хотелось-бы убрать из проги все Working-и в компиляции и трансляции - 
ХР> обычно это скрытые ошибки.

    Верной дорогой идёте! ;0)

ХР> 5 При упаковке пакетов идут сообщения об ненайденных функциях, правда 
ХР> Working, а не Error, поэтому пакет собирается. С ними надо то-же 
ХР> разобраться.

    s/Working/Warning/, насколько понимаю :)

    Обычно такие предупреждения достаточно легко фиксить -- достаточно
    найти в каком заголовочном файле определена требуемая ф-ция и
    подключить этот файл.


    Ну и тпро спек:

ХР> %define dirlist app-defaults ru_RU.UTF-8/app-defaults ru_RU.CP1251/app-defaults ru_RU.KOI8-R/app-defaults

    Все строчки, где используется этот макрос закоментированны => макрос
    тоже можно закомментировать или вовсе удалить. В любом случае, не
    стОило его вставлять в самое начало спека IMHO.

ХР> %define dateversion 20060615

    Этот макрос используется ещё два раза на следующих пяти строчках. Я
    думаю, что можно обойтись без него.

ХР> %define nomer 161048

    s/nomer/number/ -- лучше использовать английские слова, а не транслит.

ХР> Release: alto

    после alt должен следовать номер, к примеру, alt0

ХР> Prefix: %dateversion

    Prefix AFAIK используется для указания корня при установке файлов из
    пакета, у вас же он почему-то определён как число. В ALT Linux Prefix
    вообще не принято использовать. Вообщем, эту строку можно удалить.

ХР> Source3: %name-32.png
ХР> Source4: %name-16.png
ХР> Source5: %name-48.png

    Во Fluxbox все иконки упакованы в один тарболл. Мне кажется, так более
    удобно.

ХР> Requires: common-licenses

    IMHO это лишняя зависимость, потому что common-license всегда
    присутствует в системе.

ХР> %package vdr
ХР> Summary: A X11 VDR frontend
ХР> Summary(ru_RU.UTF-8): X11 п╬п╠п╬п╩п╬я┤п╨п╟ п╢п╩я▐ VDR
ХР> Group: Video
ХР> Requires: libs%name = %version
ХР> Requires: %name-common = %version
ХР> Requires: %name = %version
ХР> Requires: vdr %origname

    В последней строке не vdr-%origname должно ли быть?
    
ХР> %description -n xawtv
ХР> Xawtv is a Video4Linux Stream Capture Viewer, that is a X11 program for
ХР> watching TV.
    
    [skip]

ХР> pushd gtk
ХР> mv xawtv.c xawtv4.c
ХР> mv mtt.c mtt4.c
ХР> mv pia.c pia4.c
ХР> popd

    Я бы в цикле это сделал %)

    pushd gtk
      for file in xawtv.c mtt.c pia.c; do
        mv $file ${file/.c/4.c}
      dine
    popd

ХР> CFLAGS="$RPM_OPT_FLAGS" \

    use %optflags macros

    Хотя лучше не передавать configure флаги вообще, т.к. если в этих
    фалагах встретиться -Werror, то очень многие тесты configure-скрипта
    обломятся и выдадут ошибку.
    
ХР> %make_build %add_optflags %optflags_shared
 
    Эм.. это какая-то вообще странная конструкция и кажется не должна так
    использоваться. Я лично вообще не использую макрос %add_optflags, а
    передаю флаги прямо make'у следующим образом:

    %make_build CFLAGS="%optflags"   (для программ на Си)
    %make_build CXXFLAGS="%optflags" (для программ на Си++)

ХР> %make_install DESTDIR=%buildroot \
ХР> 	     ROOT=%buildroot	\
ХР> 	     SUID_ROOT="" install

    Не уверен, т.к. не видел вашу программу, но точно ли нужны ROOT и
    SUID_ROOT ?

ХР> find %buildroot -type f -print	\
ХР> 	| sed -e 's|%buildroot||'	\
ХР> 	| grep -v -e %_docdir		\
ХР> 	| grep -v -e bin/v4l-conf	\
ХР> 	> filelist
ХР> cat filelist

    Судя по cat, это используется для отладки? Вообще, можно обернуть все
    отладочные макросы/дейтвия и потом включать/выключать их по
    %def_{enable,disable}.

    Несколько идей:

    - ключик -e для grep нужен при использовании регулярных выражений и
      здесь IMHO избыточен

    - макроса %docdir не существует, используется %_defaultdocdir

    - два грепа можно объединить вместе:

      egrep -v 'bin/v4l-conf|%_defaultdocdir'

    - зачем сохранять в файл, если далее вы этот файл всё равно выводите
      на stdout? Если файл более нигде не используется, то можно обойтись
      без него :)

ХР> # Menu entries
ХР> %__install -d %buildroot%_miconsdir
ХР> %__install -d %buildroot%_liconsdir
ХР> 
ХР> %__install -m 644 %SOURCE3 %buildroot%_niconsdir/motv.png
ХР> %__install -m 644 %SOURCE4 %buildroot%_liconsdir/motv.png
ХР> %__install -m 644 %SOURCE5 %buildroot%_miconsdir/motv.png

    - можно использовать install вместо %__install

    - можно использовать install -pD -m вместо install -d && install -m

ХР> %__install -d %buildroot%_menudir
ХР> cat > %buildroot%_menudir/xawtv4 <<EOF
ХР> ?package(xawtv): command="XawTV" icon="%name.png" section="Multimedia/Video" \
ХР> title="XawTV" longtitle="The X11 Video4Linux Stream Capture Viewer" \
ХР> needs="x11"
ХР> EOF

    Я обычно .menu-файла прекрепляю отдельно, чтобы сделать спек более
    компактным и читабельным.

ХР> mkdir -p %buildroot{%_iconsdir/{large,mini},%_menudir}
ХР> install -m 644 %SOURCE3 %buildroot%_iconsdir/
ХР> install -m 644 %SOURCE4 %buildroot%_miconsdir/%name.png
ХР> install -m 644 %SOURCE5 %buildroot%_liconsdir/%name.png

    Не понял. Вы что одни и те же SOURCE пр два раза устанавливаете? Ага..
    но с разными именами, да? В таком случае, я бы лучше сделать симлинки
    вместо реальных файлов для экономии места на жестком диске ;)

ХР> cp %SOURCE1 .|| true

    Лучше использовать install вместо cp, чтобы не было проблем с правами
    на файлы.

ХР> %files -n libs%name
ХР> %dir %_libdir/%name
ХР> %_libdir/%name/*

    У вас тут библиотека, а вызвать ldconfig вы не забыли? (см. макросы
    %post_ldconfig/%postun_ldconfig)
                     
ХР> %files common -f %origname.lang
ХР> %attr(4711,root,root) %_bindir/v4l-conf

    Какие-то странные права. Почему группе и остальным только на запуск?

ХР> %_bindir/rootv
ХР> %_bindir/scantv
ХР> %_bindir/subtitles
ХР> %_bindir/v4l-info
ХР> %_bindir/record
ХР> %_bindir/mtt4
ХР> %dir %_mandir/
ХР> %_mandir/*

    Не надо так делать. Теперь /usr/share/man и некоторые вложенные
    подкаталоги принадлежат вашему пакету. Используйте макросы %_manXdir,
    где X -- номер секции.

ХР> %dir %_datadir/xawtv
ХР> %_datadir/xawtv/*

    Можно просто %_datadir/xawtv/

ХР> %_iconsdir/*

    Тот же случай, что и с %_mandir. Используйте макрос %_liconsdir,
    %_niconsdir и %_miconsdir.

ХР> %_mandir/man1/alevtd.1*
ХР> %_mandir/man1/webcam.1*

    %_man1dir/alevtd.1.*
    %_man1dir/webcam.1.*

ХР> %changelog
ХР> * Thu Jul 27 2006 Hihin Ruslan <hihin_c на t_narod_dot_ru> 4.0-alto
ХР> - new version
ХР> - add or reaire patchs :
ХР> - 	xawtv4-4.0-as-need.patch	- fix dlopen
ХР> -	xawtv4-4.0-gtkadd.patch		- fix two xawtv		
ХР> -	xawtv4-4.0-fbtv-fix.patch	- fix fbtv (no all fix)	
ХР> - 	xawtv4-4.0-gcc4.patch		- correct from Suse
ХР> 					    xawtv4-3.999_0.20051018-0.pm.0.src.rpm
ХР> - 	xawtv4-4.0-aalib-fix.patch	- delete aalib (bad upstream)
ХР> - 	xawtv4-4.0-libquictime-fix.patch - add patch for qt-pugins (Fix Mi :) )   
ХР> - 	xawtv4-4.0-defwintitle.patch	- correct from 3.95
ХР> - 	xawtv4-4.0-vdr.patch		- correct from 3.95 + my patch (Fix Mi :) )
ХР> - 	xawtv4-4.0-russian.patch	- correct from 3.95
ХР> - 	xawtv4-4.0-vdr-russian.patch	- correct from 3.95
ХР> 

   s/reaire/require/
   s/Mi/me/

   Советую также ознакомиться с документом
   http://wiki.sisyphus.ru/devel/TypicalPackagingErrors/changelog


   Руслан, спасибо за вашу работу и помощь! Ждём в Team ;-)


-- 
+ Slava Semushin | php-coder @ ngs.ru
+ ALT Linux Team | php-coder @ altlinux.ru
+ Expand QA Team | vsemushin @ swsoft.com



Подробная информация о списке рассылки Sisyphus