<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>FLLOG &#187; setup.py</title> <atom:link href="http://www.michalklich.com/tag/setup-py/feed/" rel="self" type="application/rss+xml" /><link>http://www.michalklich.com</link> <description>Fedora Linux Blog</description> <lastBuildDate>Sun, 05 Sep 2010 10:30:15 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.1</generator> <item><title>Jak dołączyć %changelog, %post_install i %post_uninstall do pliku spec używając distutils i setup.py</title><link>http://www.michalklich.com/2010/02/17/jak-dolaczyc-changelog-post_install-i-post_uninstall-do-pliku-spec-uzywajac-distutils-i-setup-py/</link> <comments>http://www.michalklich.com/2010/02/17/jak-dolaczyc-changelog-post_install-i-post_uninstall-do-pliku-spec-uzywajac-distutils-i-setup-py/#comments</comments> <pubDate>Wed, 17 Feb 2010 07:00:38 +0000</pubDate> <dc:creator>Klich Michał</dc:creator> <category><![CDATA[fedora]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[open source]]></category> <category><![CDATA[programowanie]]></category> <category><![CDATA[distutils]]></category> <category><![CDATA[python]]></category> <category><![CDATA[rpm]]></category> <category><![CDATA[setup.py]]></category><guid
isPermaLink="false">http://www.michalklich.com/?p=672</guid> <description><![CDATA[Ostatnimi czasy moją głowę zaprzątał problem stworzenia paczki rpm dla mojego programu SynapticsConfig. Długo walczyłem z jednego powodu, chciałem użyć distutils a nie ręcznie tworzyć plik spec. Poniżej przytoczę problemy z którymi się borykałem oraz rozwiązania tych problemów. Wg. mnie dokumentacja distutils i pythona dotycząca zagadnień które poruszam jest dosyć skromna i wszelkie próby znalezienia [...]<p><a
href="http://www.michalklich.com/2010/02/17/jak-dolaczyc-changelog-post_install-i-post_uninstall-do-pliku-spec-uzywajac-distutils-i-setup-py/">Jak dołączyć %changelog, %post_install i %post_uninstall do pliku spec używając distutils i setup.py</a> to wpis z <a
href="http://www.michalklich.com">FLLOGa</a></p> ]]></description> <content:encoded><![CDATA[<p>Ostatnimi czasy moją głowę zaprzątał problem stworzenia paczki rpm dla mojego programu SynapticsConfig. Długo walczyłem z jednego powodu, chciałem użyć distutils a nie ręcznie tworzyć plik spec. Poniżej przytoczę problemy z którymi się borykałem oraz rozwiązania tych problemów. Wg. mnie dokumentacja distutils i pythona dotycząca zagadnień które poruszam jest dosyć skromna i wszelkie próby znalezienia rozwiązania dawały mierne wyniki. Całe szczęście mamy listy dyskusyjne oraz od źródłowy (fuck you propietary software!).</p><p><span
id="more-672"></span></p><ol><li>Dołączanie %changelog</li><p>Część pliku spec odpowiedzialna za changelog jest wymagana, tak przynajmniej uważa rpmlint oraz tak stoi w dokumentacji Fedory. W <a
href="http://docs.python.org/distutils/setupscript.html">dokumentacji distutils</a> nie ma zbyt wielu informacji na ten temat. Jednak naprowadziła mnie ona na proste rozwiązanie a mianowicie</p><pre>python setup.py bdist_rpm --help</pre><p>Komenda wyświetla dokładnie to czego potrzeba czyli</p><pre>--changelog          RPM changelog</pre><p>To mogłoby załatwić sprawę gdyby nie brak informacji w jakiej postaci ma być changelog. Wszystko wskazuje, że to powinien być plik jednak <a
href="http://fedoraproject.org/wiki/Packaging:Guidelines#Changelogs">domyślne formatowanie</a> nie spełniało wymagań i ładnie wypluwało komunikat, że wiersz musi zaczynać się od &#8222;*&#8221;. Postanowiłem zerknąć do pliku odpowiedzialnego za generowanie paczek rpm /usr/lib64/python2.6/distutils/command/bdist_rpm.py. Na początku pliku wśród listy opcji pojawia się taki tekst</p><blockquote><p># More meta-data: too RPM-specific to put in the setup script,<br
/> # but needs to go in the .spec file &#8212; so we make these options<br
/> # to &#8222;bdist_rpm&#8221;.  The idea is that packagers would put this<br
/> # info in setup.cfg, although they are of course free to<br
/> # supply it on the command line.</p></blockquote><p>No ładnie ale ja z lini poleceń nie mogłem dołączyć changelog więc z pomocą przyszedł plik <a
href="http://docs.python.org/distutils/configfile.html">setup.cfg</a>. Do pustego pliku dodałem linijkę</p><blockquote><p>[bdist_rpm]<br
/> changelog = #tutaj tekst changelog oczywiście zaczynający się od *</p></blockquote><p>Należy pamiętać o gwiazdce ropoczynającej każdą wersję oraz o poprawnym formacie daty. Rpm jest bardzo wymagający w tym temacie. Tak przygotowany changelog powinen przejść proces budowania paczki.</p><li>Dodawanie %post_install i %post_uninstall</li><p>Kolejne rzeczy, które musiałem skonfigurować to sekcje kodu uruchamiane po zainstalowaniu paczki i jej odinstalowaniu. Wspomniany wcześniej bdist_rpm &#8211;help tak opisuje to</p><blockquote><div
id="_mcePaste">&#8211;post-install       Specify a script for the post-INSTALL phase of RPM</div><div
id="_mcePaste">building</div><div
id="_mcePaste">&#8211;post-uninstall     Specify a script for the post-UNINSTALL phase of RPM</div><div
id="_mcePaste">building</div></blockquote><p>W tym wypadku jednak nie używałem linii poleceń ani pliku setup.cfg. Te dwie opcje pozwoliły sie zgrabnie dołączyć do pliku setup.py jako argument funkcji setup</p><pre>options={'bdist_rpm' : {'post_install'  : 'ścieżka_do_pliku', 'post_uninstall'  : 'ścieżka_do_pliku'}}</pre><p>Bardzo możliwe, że zamiast podawania ścieżek do istniejących plików można wsadzić komendy. W wypadku skryptów mających parę linijek może pojawić się problem, ale nie testowałem.</ol><div>Mam nadzieję, że przybliżyło to co niektórych do stworzenia własnej paczki rpm przy użyciu distutils. To dlaczego wybrałem %post_install i %post_uninstall zostało podyktowane sposobem uruchamiania mojego programu i niemożliwością (spodowoaną może brakiem wystarczającej wiedzy) dodania linka do pliku w paczce rpm. Z wielką chęcią przyjmę wszelkie uwagi lub sugestie.</div><p><a
href="http://www.michalklich.com/2010/02/17/jak-dolaczyc-changelog-post_install-i-post_uninstall-do-pliku-spec-uzywajac-distutils-i-setup-py/">Jak dołączyć %changelog, %post_install i %post_uninstall do pliku spec używając distutils i setup.py</a> to wpis z <a
href="http://www.michalklich.com">FLLOGa</a></p> ]]></content:encoded> <wfw:commentRss>http://www.michalklich.com/2010/02/17/jak-dolaczyc-changelog-post_install-i-post_uninstall-do-pliku-spec-uzywajac-distutils-i-setup-py/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Served from: www.michalklich.com @ 2010-09-07 16:45:37 by W3 Total Cache -->