poniedziałek, 28 marca 2016

Poprawiamy Plasma 5.6: "pokaż pulpit" nie degraduje już paska zadań

Wprawdzie o Plasma 5.6 moje zdanie nie jest najlepsze, albowiem uważam, że wyszła ona nazbyt szybko (bo termin) i nie zostały w niej poprawione błędy, które były znane co najmniej od chwili wydania 5.5.95. W niektórych przypadkach, instalacja nowej wersji środowiska prowadziła do degradacji wcześniejszego pulpitu. Zamiast paska zadań (panel) pojawiało się coś, co kompletnie nie było użyteczne. Dzieje się tak wówczas, gdy do paska mamy dodany plazmoid "Pokaż pulpit" (Show Desktop). Okazuje się, że w planowanym za kilka dni wydaniu poprawkowym (5.6.1) ten błąd ma zostać usunięty. Stosowna łatka jest już dostępna i można ją nałożyć.

Poniżej stosuję m.in. yaourt, ale nikomu nie każę go stosować. Można użyć dowolnej nakładki (np. pacaur) na pacmana, która umożliwia łatwe ściągnięcie plików źródłowych, służących do budowy pakietów w Archu. Oczywiście można również zastosować narzędzie ALA, ale wg mnie jest to jak strzelanie z armaty do muchy. Można też ściągnąć pliki źródłowe ze strony packages Archa. Mniejsza o to jak ściągniecie, ważne, by otrzymać owe skrypty.

Błąd jest w kdeplasma-addons 5.6.0, zatem konieczne jest pobranie skryptów dla tych źródeł. Przechodzimy do wygodnego dla nas katalogu, w którym chcemy budować program. Pamiętajmy, by wcześniej taki katalog wyłączyć z indeksowania przez baloo, bo nie ma to najmniejszego sensu. Osobiście kompilacji dokonuję w katalogu ~/temp, ale może on mieć dowolną nazwę.
cd ~/temp && yaourt -G kdeplasma-addons && cd kdeplasma-addons
Jesteśmy zatem w katalogu, w którym znajdują się ściągnięte skrypty służące makepkg do budowy paczek dla Archa. W katalogu tym powinniśmy znaleźć dwa pliki: PKGBUILD oraz kdeplasma-addons.install. Drugiego w ogóle nie zmieniamy, pierwszy poddajemy edycji dowolnym edytorem. Nie będę tu przytaczał całego PKGBUILDa, opowiem tylko co i jak musimy zmienić.
Po pierwsze musimy dodać do źródeł łatkę. Znajdujemy zatem linię rozpoczynającą się od source i do istniejącego tam adresu dodajemy łatkę. Można to zrobić na wiele sposobów. Jednym z nich jest ściągnięcie do katalogu łatki z quickgit.kde.org za pomocą np. wgeta, albo przekopiowanie zawartości (pamiętajmy, że musi to być widok plain) do jakiegoś pliku. Ja preferuję pokazanie makepkg źródła, które ma zostać pobrane oraz wskazanie w jaki sposób ma to uczynić. Reszta będzie dziać się automatycznie. W tym przypadku nazwa, jaką nadamy łatce jest obojętna. Stosowny commit, który naprawił nam ShowDesktop znajduje się tutaj. Do pola source dodaję zatem:
nazwa_łatki::"adres_git&a=commitdiff&h=oznaczenie_commitu&o=plain"
Teraz pora na wytłumaczenie:
nazwa_łatki - Moja nazwa, sam ją nadaję. Ze względu na to, że jest to commit, to występuje jako plik tekstowy, który sam w sobie nie nosi żadnej nazwy. Sensownie jest nadać mu taką nazwę, która będzie będzie łatwo identyfikować łatkę, którą nakładamy. Ja preferuję dwa sposoby, albo oznaczam taką łatkę przez oznaczenie commitu, albo przez numer błędu, który naprawia, ze względu na to, że często kilka commitów naprawia jeden błąd, bądź jednym udaje się naprawić kilka, może nawet sensowniejszym pomysłem jest stosowanie jako nazwy łatki oznakowania commitu.
adres_git - Tu chyba wszystko jasne. Miejsce w repozytorium git, z którego pobierać będziemy łatkę. W przypadku, gdy stosujemy jako adresu quickgit, to adres ten przybierze postać: https://quickgit.kde.org/?p=nazwa_kodu.git. Owa tajemnicza nazwa_kodu to nadana przez twórców danemu elementowi KDE nazwa. W naszym przypadku będzie to kdeplasma-addons.
oznaczenie_commitu - Każdy commit (czyli po prostu fragment kodu) ma swoje oznaczenie. Na stronie https://quickgit.kde.org/?p=nazwa_kodu.gitznajdziemy po lewej stronie w shortlog. Interesujący nas dzisiaj commit nosi oznaczenie: e164ae7.
Pozostaje wytłumaczyć jeszcze dwie kwestie: a=commitdiff oraz o=plain. Obie odpowiadają za sposób w jaki pobierana ma być łatka. Pierwszy stwierdza, że ma to być plik "różnicowy", który po prostu wskazuje jakie elementy kodu mają być zastąpione przez nowe. Drugi stwierdza, że ma owa łatka zostać pobrana w czystym pliku tekstowym.
Nasz adres zatem, w tym przypadku, przybierze taką oto postać:
commit_e164ae7::"https://quickgit.kde.org/?p=kdeplasma-addons.git&a=commitdiff&h=e164ae7&o=plain"
Linię tę musimy dodać do pola source w PKGBUILD (pamiętajmy, musi ona zostać zamknięta w nawiasach.
Następnie odnajdujemy pozycję prepare w PKGBUILD i dodajemy tam polecenie nakładające łatkę (po mkdir -p build):
cd ${pkgname}-${pkgver}
patch -Np1 -i "${srcdir}/commit_e164ae7"
Cała sekcja prepare przymie zatem taką postać:
prepare{} (
coś
nasze polecenie z łatką)
Przydałoby się również naszej paczce zmienić numer pkgrel. Odnajdujemy w PKGBUILD taką pozycję i "podbijamy" o jeden numer w górę. W ten sposób, przy późniejszej aktualizacji systemu ujrzymy, że zbudowana przez nas paczka jest w wersji lokalnej "wyższej" niż paczka w repozytorium. Jeśli ostrzeżenie to zniknie, będzie to oznaczać, że albo pojawiła się paczka w takiej samej wersji w repozytorium, a wówczas warto sprawdzić jej PKGBUILD i zdecydować co robić dalej, albo paczka w wersji "wyższej" i nasza paczka zostanie zaktualizowana. W tym przypadku, gdy pojawi się paczka kdeplasma-addons-5.6.1-1.pkg.tar.xz to będzie ona uwzględniać przedstawioną tu łatkę.
Zamykamy plik i uaktualniamy sumy kontrolne dla makepkg:
updpkgsums
Teraz pozostaje sprawdzenie pliku PKGBUILD poleceniem:
namcap PKGBUILD
Jeśli wszystko przebiega prawidłowo, możemy przystąpić do budowy i instalacji paczki:
makepkg -s
Sprawdzamy, czy paczka została prawidłowo zbudowana:
namcap nasza_paczka 
Jeśli wszystko przebiegło prawidłowo, instalujemy zbudowaną paczkę:
sudo pacman -U nasza_paczka
Tym razem zatem opis, a nie podanie gotowego sposobu. Dajcie znać, czy jest on dla Was czytelny i czy prawidłowo się budują paczki.