mgorny-nyan (on) :autism:🙀🚂🐧<p>Jakiś czas temu, zainspirowany <a href="https://pol.social/tags/Fedor%C4%85" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Fedorą</span></a>, wyodrębniłem paczki .whl z Pythonowego ensurepip w <a href="https://pol.social/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a> (właśnie sprawdziłem — "jakiś czas" to 3 lata). Umożliwiło to nam aktualizowanie ich razem z paczkami pip i setuptools, dzięki czemu nowe środowiska wirtualne otrzymują najnowszą dostępną wersję, a nie tę, którą włączono w dane wydanie CPythona.</p><p>Myślałem wówczas, by budować je z naszych systemowych paczek, ale już wówczas usuwaliśmy zagnieżdżone zależności, więc otrzymalibyśmy niepełne paczki. Zamiast tego po prostu zgarnialiśmy gotowe paczki z PyPI. A dlaczego nie budować ich na nowo ze źródeł? Pomijając fakt, że wydawało się to zbędne (wszak paczki na PyPI nie zawierają żadnego skompilowanego kodu), nie mieliśmy do tego dobrej infrastruktury w eclass.</p><p>Za inspiracją <span class="h-card" translate="no"><a href="https://floss.social/@hroncok" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>hroncok</span></a></span>, dziś przygotowałem nowe wersje paczek ensurepip, które budują wszystko ze źródeł. Co się zmieniło, i dlaczego warto dziś budować ze źródeł? Po pierwsze, nasz kod budowania PEP517 dorobił się możliwości wydobycia poprzednich paczek .whl. Po drugie, skoro usuwamy zagnieżdżone zależności z pipa i setuptools, to właściwie testujemy inny kod niż ten, który trafia do ensurepip — a myślę, że miałoby sens testowanie obydwu wariantów. Po trzecie, budowanie ze źródeł ułatwi nakładanie łatek, a w szczególności umożliwi użytkownikom łatwe dodawanie lokalnych łatek.</p><p>A skoro już się za to wziąłem, to przy okazji zaktualizowałem stan testów we wszystkich trzech paczkach (pip, setuptools i wheel — tego ostatniego potrzebujemy ze względu na testy). No i oczywiście, że trafiłem na padające testy w wersjach z zagnieżdżonymi zależnościami, i przypadkiem odkryłem błąd w <a href="https://pol.social/tags/PyPy" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PyPy</span></a>.</p><p><a href="https://github.com/gentoo/gentoo/pull/42882" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/gentoo/gentoo/pull/</span><span class="invisible">42882</span></a> (tak, nadal tam jesteśmy)<br><a href="https://github.com/pypy/pypy/issues/5306" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/pypy/pypy/issues/53</span><span class="invisible">06</span></a></p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a></p>