Skocz do zawartości

Smplayer 0.5.0 Fc 7


piotreek23

Rekomendowane odpowiedzi

Witam :) wi?c tak pokusi?o mnie o napisanie spec file dla smplayera w wersji 0.5.0.

Poniewa? nie ma paczek pod FC 7 zrobi?em swoje i z tego miejsca zapraszam do testowania (uwaga to moja pierwsza paczka !!) u mnie dzialaj? system wstaje :P

%define name	smplayer
%define version 0.5.0
%define release rvm

Name:		  %{name}
Version:		%{version}
Release:		1%{?dist}
Summary:		A great front-end for MPlayer

Group:		  Applications/Multimedia
License:		GPL
URL:			http://smplayer.sourceforge.net/
Source0:		%{name}-%{version}.tar.gz
BuildRoot:	  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  qt-devel
Requires:	   mplayer

%description
SMPlayer intends to be a complete front-end for MPlayer, from basic features 
like playing videos, DVDs, and VCDs to more advanced features like support 
for Mplayer filters and more. One of the main features is the ability to 
remember the state of a played file, so when you play it later it will resume 
at the same point and with the same settings. smplayer is developed with 
the Qt toolkit, so it's multi-platform.

%prep

%setup -q


%build
make %{?_smp_mflags} PREFIX=/usr

%install
rm -rf $RPM_BUILD_ROOT
make %{?_smp_mflags} PREFIX=/usr  DESTDIR=$RPM_BUILD_ROOT install


%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)

  /usr/bin/smplayer
  /usr/share/applications/smplayer.desktop
  /usr/share/doc/packages/smplayer/Changelog
  /usr/share/doc/packages/smplayer/Configurable_shortcuts.txt
  /usr/share/doc/packages/smplayer/Copying.txt
  /usr/share/doc/packages/smplayer/Icon_themes.txt
  /usr/share/doc/packages/smplayer/Install.txt
  /usr/share/doc/packages/smplayer/Not_so_obvious_things.txt
  /usr/share/doc/packages/smplayer/Readme.txt
  /usr/share/doc/packages/smplayer/Release_notes.txt
  /usr/share/doc/packages/smplayer/Translations.txt
  /usr/share/icons/hicolor/16x16/apps/smplayer.png
  /usr/share/icons/hicolor/22x22/apps/smplayer.png
  /usr/share/icons/hicolor/32x32/apps/smplayer.png
  /usr/share/icons/hicolor/64x64/apps/smplayer.png
  /usr/share/smplayer/input.conf
  /usr/share/smplayer/shortcuts/default.keys
  /usr/share/smplayer/translations/smplayer_bg.qm
  /usr/share/smplayer/translations/smplayer_cs.qm
  /usr/share/smplayer/translations/smplayer_de.qm
  /usr/share/smplayer/translations/smplayer_en_US.qm
  /usr/share/smplayer/translations/smplayer_es.qm
  /usr/share/smplayer/translations/smplayer_fr.qm
  /usr/share/smplayer/translations/smplayer_hu.qm
  /usr/share/smplayer/translations/smplayer_it.qm
  /usr/share/smplayer/translations/smplayer_ja.qm
  /usr/share/smplayer/translations/smplayer_ka.qm
  /usr/share/smplayer/translations/smplayer_nl.qm
  /usr/share/smplayer/translations/smplayer_pl.qm
  /usr/share/smplayer/translations/smplayer_pt_BR.qm
  /usr/share/smplayer/translations/smplayer_ru_RU.qm
  /usr/share/smplayer/translations/smplayer_sk.qm
  /usr/share/smplayer/translations/smplayer_sr.qm
  /usr/share/smplayer/translations/smplayer_sv.qm
  /usr/share/smplayer/translations/smplayer_tr.qm
  /usr/share/smplayer/translations/smplayer_uk_UA.qm
  /usr/share/smplayer/translations/smplayer_zh_CN.qm
  /usr/share/smplayer/translations/smplayer_zh_TW.qm




%changelog
* Tue Jun 12 2007 Piotr Sabiniewicz <[email protected]> 0.5.0-1
- First Spec for Fedora 7

Teraz pliki przepraszam ze na megaupload ale musze jakie? konto za?o?y? to bed? na ftp ;) Prosze o sugestie poprawki itp.

http://rapidshare.com/files/36766580/smpla...7.i386.rpm.html

http://rapidshare.com/files/36766581/smpla...7.i386.rpm.html

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 31
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

To może po kolei:

nie testowałem paczki więc nie wiem jak z działaniem/przygotowaniem (nie widziałem źródeł)

nie musisz robić define name, version etc (w Twoim przypadku), odpowiednie makra są zdefiniowane w preambule (przez Name: i Version: )

w Source0: powinieneś dać pełny url do źródeł (na stronie "producenta")

Najbardziej boląca jest sekcja %files, używaj makr i globalnych znaków, to znacznie ułatwi Ci życie

 

http://repo.dobremiasto.net/articles/kurs_...ow_rpm?longpage

http://fedoraproject.org/wiki/Packaging/Guidelines

 

Odnośnik do komentarza
Udostępnij na innych stronach

Najbardziej boląca jest sekcja %files

Moim zdaniem ta sekcja to porażka ;)

 

na razie paczka działa :P

Owszem - działa, ale próba usunięcia jej pozostawi po sobie wiele śmieci w systemie, a tego przecież chcemy uniknąć ;)

Umieść gdzieś SRPM-a to zrobię pełną recenzję.

A jeśli chcesz mieć gdzie umieszczać to warto zainteresować sie serwerem http://nonlogic.org/. 2GB quoty są zadowalające ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Tylko mi powiedzcie jak wygenerowac src.rpm :P bo do tego nie doszedlem.

rpmbuild -bs <abc>.spec

2)Dlaczego zasmieci?? przeciez pliki ktore sa w %files istnieja i je usunie.

Owszem usunie pliki, ale zostaną katalogi. To znaczy, że cała zawartość katalogu /usr/share/smplayer zostanie wywalona, ale sam katalog się ostanie.

 

BTW prosze nie bić ja naprawde jestem newbie w paczkowaniu.

Ja nie mam zamiaru bić, tylko wskazywać właściwą drogę ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Tak więc pierwsze co robi recenzent sprawdzając potencjalną paczkę to sprawdzą ją programem rpmlint. Jeśli brakuje go w systemie, to wpisujemy tylko

yum install rpmlint

Następnie rpmlinta włącza się zarówno na paczkę źródłową, jak i wynikową. W przypadku smplayera rpmlint milczy dla src.rpm, ale dla paczki wynikowej ma bardziej gadatliwe wyjście.

W: smplayer wrong-file-end-of-line-encoding /usr/share/doc/packages/smplayer/Readme.txt
W: smplayer wrong-file-end-of-line-encoding /usr/share/doc/packages/smplayer/Install.txt
W: smplayer wrong-file-end-of-line-encoding /usr/share/doc/packages/smplayer/Icon_themes.txt
W: smplayer wrong-file-end-of-line-encoding /usr/share/doc/packages/smplayer/Translations.txt
W: smplayer wrong-file-end-of-line-encoding /usr/share/doc/packages/smplayer/Release_notes.txt
W: smplayer wrong-file-end-of-line-encoding /usr/share/doc/packages/smplayer/Not_so_obvious_things.txt
W: smplayer wrong-file-end-of-line-encoding /usr/share/doc/packages/smplayer/Copying.txt
W: smplayer wrong-file-end-of-line-encoding /usr/share/doc/packages/smplayer/Configurable_shortcuts.txt
E: smplayer invalid-desktopfile /tmp/smplayer-0.5.0-1.fc7.x86_64.rpm.4486/usr/share/applications/smplayer.desktop

Sporo wartościowych informacji odnośnie tego, co robić w przypadku błędów rpmlina znajduje się tutaj.

Ponieważ rzuca się w wielu plikach o złe kodowanie należy w sekcji %prep ów kodowanie poprawić. Najlepiej zrobić to sedem - odsyłam do strony, której link podałem wcześniej.

Jeśli chodzi o błąd w przypadku pliku desktop to jeśli chcemy się dokładnie dowiedzieć o co chodzi warto zapoznać się z narzędziem desktop-file-validate dostępnym w paczce desktop-file-utils.

[build@ecik tmp]$ desktop-file-validate smplayer.desktop
smplayer.desktop: error: value "AudioVideo;Player;Video;Qt;KDE" for string list key "Categories" in group "Desktop Entry" does not have a semicolon (';') as trailing character
smplayer.desktop: warning: key "Encoding" in group "Desktop Entry" is deprecated
smplayer.desktop: error: value "audio/ac3;audio/mp4;audio/mpeg;audio/vnd.rn-realaudio;audio/vorbis;audio/x-adpcm;audio/x-matroska;audio/x-mp2;audio/x-mp3;audio/x-ms-wma;audio/x-vorbis;audio/x-wav;video/avi;video/mp4;video/mpeg;video/quicktime;video/vnd.rn-realvideo;video/x-matroska;video/x-ms-asf;video/x-msvideo;video/x-ms-wmv;video/x-ogm;video/x-theora" for string list key "MimeType" in group "Desktop Entry" does not have a semicolon (';') as trailing character

Wszystkie błędy można naprawić albo samodzielnie dostarczając plik desktop do paczki, albo poprawiając to sedem, albo patchem. To już w zależności od woli paczkującego ;)

 

Rpmlinta mamy już za sobą to weźmy się za plik spec.

Na samym początku jest bezsensowna deklaracja release, która i tak potem jest nadpisywana, więc najlepiej ją wywalić. Prawdę mówiąc moim zdaniem %define name i version też nie są potrzebne, gdyż o wiele ładniej jest, gdy znajduje się to w preambule.

Tag Source0 powinien zawierać pełen adres URL do źródła, po to, żeby zawsze można było je sobie ściągnąć i przy okazji sprawdzić też czy źródła się zgadzają (tj. czy paczkujący niczego sobie w źródle nie zmienił).

 

Teraz sekcja %files.

Pozwolę ją sobie opisać trochę po swojemu. Zawsze należy się tak logicznie zastanowić: czy dany katalog powinien należeć do systemu czy do paczki. Jeżeli do paczki to wypisujemy tylko katalog, a jeśli do systemu to jego zawartość.

Po drugie należy używać makr. Oto kilka bardziej przydatnych:

  • %{_bindir} - /usr/bin
  • %{_datadir} - /usr/share
  • %{_libdir} - /usr/lib[64] (w zależności od architektury)
  • %{_sysconfdir} - /etc
  • %{_mandir} - /usr/share/man
W związku z tym idźmy linia po linii (prawie ;)):

   /usr/bin/smplayer

Oczywistym jest, że katalog z binarkami należy do systemu więc:

 %{_bindir}/smplayer

 

   /usr/share/applications/smplayer.desktop

tu sytuacja jest podobna jak wyżej

 %{_datadir}/applications/smplayer.desktop

(choć do pliku desktop jeszcze wrócę)

 

   /usr/share/doc/packages/smplayer/Changelog
   /usr/share/doc/packages/smplayer/Configurable_shortcuts.txt
(...)
   /usr/share/doc/packages/smplayer/Translations.txt[code]
Tych plików w ogóle nie powinno być. W sekcji %install już po make install należy te pliki usunąć (jeśli ich aplikacja w czasie działania nie wymaga) i zastosować makro %doc.
[code]%doc Changelog Configurable_shortcuts.txt (...)

Przyjęło się, że makro %doc jest na początku sekcji %files, a ścieżki, które podajemy w %doc są ścieżkami z katalogu ze źródłami, a nie z buildroota.

 

   /usr/share/icons/hicolor/16x16/apps/smplayer.png
   /usr/share/icons/hicolor/22x22/apps/smplayer.png
   /usr/share/icons/hicolor/32x32/apps/smplayer.png
   /usr/share/icons/hicolor/64x64/apps/smplayer.png

tutaj wszystko można ładnie zastąpić wieloznakiem:

%{_datadir]/hicolor/*/apps/smplayer.png

Warto jednak zauważyć, że katalog %{_datadir}/hicolor nie należy jako tako do systemu, tylko do innej paczki zwanej hicolor-icon-theme. Oznacza to, że smplayer powinien mieć Requires: hicolor-icon-theme.

 

   /usr/share/smplayer/input.conf
   /usr/share/smplayer/shortcuts/default.keys
(...)
   /usr/share/smplayer/translations/smplayer_zh_TW.qm

A na koniec stos plików z katalogu programu. Ponieważ oczywistym jest, że katalog /usr/share/smplayer należy do tej paczki - i nikogo innego, zatem listujemy po prostu ten katalog:

%{_datadir}/smplayer

i gotowe - czyż to nie łatwiejsze ;)

 

Warto zapoznać się ze stroną ScripletSnippets, która mówi o tym jakich konkretnych sekcji %post i %postun należy używać w danych sytuacjach.

Z dokumentu wynika, że jeśli paczka zawiera ikony w %{_datadir}/icons to należy dodać:

%post
touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :

%postun
touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :

A ponieważ smplayer takowe ikony zawiera należy te sekcje dodać ;)

Zaś w pliku desktop znajduję się tag MimeType więc jeszcze trzeba dodać:

%post
update-desktop-database &> /dev/null ||:

%postun
update-desktop-database &> /dev/null ||:

 

Oczywiście nie należy tworzyć dwóch sekcji %post i dwóch sekcji %postun tylko wszystko umieścić w jednej.

W zasadzie to wszystko, co widzę, że jest nie tak.

Koniecznie powinieneś zapoznać się z dokumentami: Packaging Guidelines, Review Guidelines i najlepiej z całą sekcją Packaging na wiki.

Poza tym dokładnie przestudiować hoppke, przeglądać review requesty i uczyć się na cudzych specach.

I oczywiście pytać tutaj ;)

 

Jeśli masz jakiekolwiek pytanie odnośnie mojej powyzszej (niepełnej jednak) recenzji to nie krępuj się - tylko pytaj :)

Odnośnik do komentarza
Udostępnij na innych stronach

Jedno pytanie w jaki sposób rozpoznać czego dany progs wymaga. Bo np. z tym hicolor theme bym nie wpadł :P
Tak naprawdę to te przypadki są bardzo specyficzne i jest ich niewiele. Requires używa się gdy coś ma być zainstalowane w systemie dla estetyki (np. hicolor, żeby nie mieszało się) lub działania, które nie są standardowo wykrywane przez rpm.

 

Odnośnik do komentarza
Udostępnij na innych stronach

%define name    smplayer
%define version 0.5.0


Name:          %{name}
Version:        %{version}
Release:        1%{?dist}
Summary:        A great front-end for MPlayer

Group:          Applications/Multimedia
License:        GPL
URL:            http://smplayer.sourceforge.net/
Source0:        http://downloads.sourceforge.net/smplayer/...er-0.5.0.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  qt-devel 
Requires:       mplayer hicolor-icon-theme

%description
SMPlayer intends to be a complete front-end for MPlayer, from basic features 
like playing videos, DVDs, and VCDs to more advanced features like support 
for Mplayer filters and more. One of the main features is the ability to 
remember the state of a played file, so when you play it later it will resume 
at the same point and with the same settings. smplayer is developed with 
the Qt toolkit, so it's multi-platform.

%prep

%setup -q


%build
make %{?_smp_mflags} PREFIX=/usr

%install
rm -rf $RPM_BUILD_ROOT
make %{?_smp_mflags} PREFIX=/usr  DESTDIR=$RPM_BUILD_ROOT install


%clean
rm -rf $RPM_BUILD_ROOT


%files
%doc Changelog Configurable_shortcuts.txt Copying.txt Icon_themes.txt Install.txt Not_so_obvious_things.txt Readme.txt Release_notes.txt Translations.txt
%defattr(-,root,root,-)
%{_bindir}/smplayer
%{_datadir}/applications/smplayer.desktop
%{_datadir}/icons/hicolor/*
%{_datadir}/smplayer/*

%post
touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
update-desktop-database &> /dev/null ||:
%postun
touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
update-desktop-database &> /dev/null ||:

%changelog
* Tue Jun 12 2007 Piotr Sabiniewicz <[email protected]> 0.5.0-1
- First Spec for Fedora 7

Poprawiłem spec file ale kończy błędem

Szukanie niespakietowanych plików: /usr/lib/rpm/check-files /var/tmp/smplayer-0.5.0-1.fc7-root-piotr
błąd: Znaleziono zainstalowane (ale niespakietowane) pliki:
   /usr/share/doc/packages/smplayer/Changelog
   /usr/share/doc/packages/smplayer/Configurable_shortcuts.txt
   /usr/share/doc/packages/smplayer/Copying.txt
   /usr/share/doc/packages/smplayer/Icon_themes.txt
   /usr/share/doc/packages/smplayer/Install.txt
   /usr/share/doc/packages/smplayer/Not_so_obvious_things.txt
   /usr/share/doc/packages/smplayer/Readme.txt
   /usr/share/doc/packages/smplayer/Release_notes.txt
   /usr/share/doc/packages/smplayer/Translations.txt


Błędy budowania RPM-a:
    Znaleziono zainstalowane (ale niespakietowane) pliki:
   /usr/share/doc/packages/smplayer/Changelog
   /usr/share/doc/packages/smplayer/Configurable_shortcuts.txt
   /usr/share/doc/packages/smplayer/Copying.txt
   /usr/share/doc/packages/smplayer/Icon_themes.txt
   /usr/share/doc/packages/smplayer/Install.txt
   /usr/share/doc/packages/smplayer/Not_so_obvious_things.txt
   /usr/share/doc/packages/smplayer/Readme.txt
   /usr/share/doc/packages/smplayer/Release_notes.txt
   /usr/share/doc/packages/smplayer/Translations.txt

:/

Odnośnik do komentarza
Udostępnij na innych stronach

Przede wszystkim w polu Source0 masz używac pełnej ścieżki, ale wciąż powinieneś używać makr. To znaczy, że tag ten powinien wyglądać tak:

http://downloads.sourceforge.net/smplayer/smplayer-%{version}.tar.gz

(jeśli chcesz to możesz jeszcze zastąpić każde wystąpienie smplayer przez %{name} - za to %{version} musi być obowiązkowo)

 

Po drugie linia %doc jest dość długa, co wygląda trochę nieestetycznie, lepiej podzielić to na kilka tagów, tj:

%doc Changelog Configurable_shortcuts.txt Copying.txt Icon_themes.txt Install.txt
%doc Not_so_obvious_things.txt Readme.txt Release_notes.txt Translations.txt

i już to nie razi ;)

 

Następnie nie do końca zrozumiałeś to co pisałem o sekcji %files; dałeś tam linijkę:

%{_datadir}/smplayer/*

czyli w takim wypadku do paczki należą tylko pliki z katalogu %{_datadir}/smplayer, a nie sam katalog. Musisz dać po prostu:

%{_datadir}/smplayer

 

W przypadku hicolor wieloznak też jest niewłaściwie zastosowany, bo wtedy do paczki należą podkatalogi z %{_datadir}/icons/hicolor, a nie o to chodziło. Należy zrobić:

%{_datadir]/hicolor/*/apps/smplayer.png

 

Co do samego błędu to jest on jasny: Znaleziono zainstalowane (ale niespakietowane) pliki:. Ale te pliki, które są niespakietowane zgodnie z naszymi oczekiwaniami mają w ogóle z paczki zniknąć (tj. w tamtej lokalizacji), należy więc w sekcji %install po make install dopisać:

rm -rf $RPM_BUILD_ROOT%{_datadir}/doc

Bo cały ten katalog jest niepotrzebny.

 

Poza tym, wspominałem w recenzji, że jeszcze wrócę do pliku desktop, a nie wróciłem - bo zapomniałem ;) wracam więc teraz. W guidelines jest wspomniane o tym, co należy z plikami desktop robić - odsyłam tutaj. Warto zauważyć, że wtedy nazwa pliku z smplayer.desktop ulegnie zmianie na fedora-smplayer.desktop.

 

Jeśli czegoś nie rozumiesz - oczywiście pytaj ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

×
×
  • Dodaj nową pozycję...