Autor Wątek: Clementine-Qt5  (Przeczytany 1392 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

pavbaranov

  • Administrator
  • Ekspert
  • *****
  • Wiadomości: 848
  • Reputacja +25/-0
  • Architektura: x86_64
  • DE/WM: KF5.16+Plasma5.4.95+KDEApps 15.11.80+git na KF5
  • Distro: Arch Linux
  • GPU: Radeon free
  • Kernel: 4.3 (BFQ/CK/BLD/UKSM/+optymalizacje)
Clementine-Qt5
« dnia: Maj 26, 2015, 11:08:45 »
Dzięki pracy kolegów z KaOS mamy skrypty umożliwiające kompilację Clementine z użyciem Qt5. Z uwagi na to, że pliki umożliwiające kompilację znajdują się w githubie KaOSa nie będę ich kopiować, a jedynie podam sposób kompilacji oraz niezbędne zmiany.

I. Przygotowanie instalacji
Tworzymy katalog, w którym odbędzie się kompilacja i ściągamy do niego PKGBUILD oraz clementine.install:
mkdir clementine-qt5 && cd clementine-qt5 && wget -c https://raw.githubusercontent.com/KaOSx/apps/master/clementine/PKGBUILD && wget -c https://raw.githubusercontent.com/KaOSx/apps/master/clementine/clementine.install
Edytujemy PKGBUILD i w sekcji depends zmieniamy libechonest na libechonest-qt5-git i zatwierdzamy zmiany.

PKGBUILD z KaOS zawiera PulseAudio jako swoją zależność, choć Clementine nie wymaga PA jako swojej zależności - wystarcza jej libpulse, która jest w systemie. Osoby, które mają zainstalowane PA w systemie i nie zamierzają się jego wyzbywać nie ma różnicy, czy zależnością będzie libpulse, czy pulseaudio. Niemniej jednak osoby, które swój system mają skonfigurowany bez PA, instalując z dotychczas zmienionego PKGBUILDu otrzymają w "prezencie" zbędne im pulseaudio. Co najmniej zatem te osoby powinny w sekcji depends zamiast pulseaudio należy wpisać libpulse.

2. Instalujemy zależności, których nie ma w oficjalnych repozytoriach
Skrypt makepkg, który posłuży nam później do kompilacji nie obsługuje AUR, stąd też wszelkie zależności, które są w AUR musimy zainstalować wcześniej. W tym przypadku jest to paczka libechonest-qt5-git. Instalujemy ją:
yaourt -S libechonest-qt5-git
3. Właściwa kompilacja Clementine-Qt5
W katalogu z PKGBUILD wykonujemy:
makepkg -sirc(oczywiście operatory i, r i c o ile chcemy nstalacji zbudowanej paczki, oraz wyczyszczenia pozostałości i usunięcia zależności służących jedynie do kompilacji paczki.

UWAGA: Paczka, która instalowana jest na podstawie skryptów KaOSa ma taką samą nazwę jak Clementine znajdujące się w repozytoriach Archa, a budowane w oparciu o Qt4. Wprawdzie nosi ona dość wysoki numer (1.2.3.90, to jednakże, jeśli ukazałaby się wersja 1.2.4, bądź 1.3 Clementine, które byłoby zbudowane w oparciu o Qt4 to zbudowana przez nas wersja zostanie zaktualizowana do owej nowej wersji, której - być może - nie chcemy (wszak nie po to kompilowaliśmy wersję Qt5, by mieć Qt4). Możliwości zaradzenia takiej sytuacji są dwie. Pierwsza, to umieścić nazwę clementine w sekcji IgnorePkg w /etc/pacman.conf. Druga to zmienić nazwę budowanej paczki (w PKGBUILD) na clementine-qt5 (w takim przypadku należy również dokonać kilku innych zmian, jak wprowadzić nazwę clementine w sekcji Conflicts i Provides; jeśli ktoś z Was będzie chciał, to przedstawię jak to zrobić). Osobiście skłaniam się ku pierwszemu rozwiązaniu. Wobec definitywnego zakończenia wsparcia dla Qt4 z końcem 2015, najpóźniej z początkiem przyszłego roku pojawi się Clementine budowane w oparciu o Qt5 (choć istnieje prawdopodobieństwo, że nastąpi to wcześniej). Wówczas paczka z repozytorium zaktualizuje nam wersję zbudowaną przez nas. Po drugie - mam nadzieję sam to kontrolować, ale pomocy nigdy zbyt mało - w momencie, gdy zobaczycie, że Clementne jest w nowszej wersji w repozytorium, dajcie znać - wprowadzę tu nową jej wersję.
« Ostatnia zmiana: Czerwiec 10, 2015, 10:07:46 wysłana przez pavbaranov »

pavbaranov

  • Administrator
  • Ekspert
  • *****
  • Wiadomości: 848
  • Reputacja +25/-0
  • Architektura: x86_64
  • DE/WM: KF5.16+Plasma5.4.95+KDEApps 15.11.80+git na KF5
  • Distro: Arch Linux
  • GPU: Radeon free
  • Kernel: 4.3 (BFQ/CK/BLD/UKSM/+optymalizacje)
Odp: Clementine-Qt5
« Odpowiedź #1 dnia: Czerwiec 10, 2015, 10:13:40 »
Właśnie pojawiła się nowa wersja rozwojowa Clementine-Qt5 oznaczona numerem 1.2.3.91. Zbudowanie budowę paczki możemy przeprowadzić na dwa sposoby.

1. Dla osób, które skorzystały z wcześniej opisanej metody i pozostawiły sobie co najmniej ściągnięte z gita KaOSa skrypty.
Edytujemy PKGBUILD i w sekcji pkgver wpisujemy: 1.2.3.91 oraz dla zmiennej _commit wpisujemy: cc079ec, a następnie wydajemy polecenie:
makepkg -sirc(jeśli w katalogu z PKGBUILDem mamy jeszcze katalogi pkg i src, to przed wydaniem powyższego polecenia usuwamy je).

2. Metoda dla osób, które wykonują po raz pierwszy kompilację lub nie zachowały skryptów budujących paczkę.
Postępujemy dokładnie tak jak w przypadku opisanym w pierwszym poście. W PKGBUILDzie nie będzie trzeba dokonywać zmian opisanych wyżej w pkt. 1.

pavbaranov

  • Administrator
  • Ekspert
  • *****
  • Wiadomości: 848
  • Reputacja +25/-0
  • Architektura: x86_64
  • DE/WM: KF5.16+Plasma5.4.95+KDEApps 15.11.80+git na KF5
  • Distro: Arch Linux
  • GPU: Radeon free
  • Kernel: 4.3 (BFQ/CK/BLD/UKSM/+optymalizacje)
Odp: Clementine-Qt5
« Odpowiedź #2 dnia: Czerwiec 15, 2015, 11:25:29 »
To co nie działa:
- możliwość odtwarzania last.fm
- podcasty używające gpoddera
- spotify
O ile z pierwszą można się boksować (w AUR dostępne jest liblastfm-qt5-git, które jest bezinwazyjne w systemie, w którym jest liblastfm), to uruchomienie drugiego wymaga znacznego przebudowania systemu. Biblioteka odpowiedzialna za gpodder.org, to libmygpo-qt, która zbudowana jest w oparciu o qjson. Ten ostatni w Archu jest w wersji zbudowanej w oparciu o Qt4, co powoduje, że libmygpo-qt też jest biblioteką Qt4. Tymczasem, dla uruchomienia tej funkcjonalności, Clementine budowane w oparciu o Qt5 wymaga libmygpo-qt5. Tę ostatnią bibliotekę można uzyskać, kompilując wcześniej qjson-qt5-git. Problem jednak taki, że ktoś, kto ma zainstalowane w systemie KDEPim/Kontact, czy cokolwiek, co korzysta z kdepimlibs, nie będzie w stanie zainstalować qjson w wersji zbudowanej w oparciu o Qt5.

Najłatwiejsza sytuacja jest ze Spotify, albowiem wychodzi na to, że w KaOSie, a następnie po nich ja, zapomniano o dołączeniu do zależności libspotify (w AUR). To bez problemu daje się załatwić.

Rozwiązanie mam zatem takie:
- mogę przedstawić PKGBUILD, który uwzględnia liblastfm-qt5 oraz libmygpo-qt5, jak również przedstawić jak trzeba zbudować takie Clementine krok po kroku,
- niestety co najmniej do sierpnia będę używać obecnej wersji KDEPim, a zatem nie będę mógł przetestować tak zbudowanej Clementine.
Jeśli kogoś takie rozwiązanie interesuje, to podam.

Kłopot - przynajmniej z wersją "1.2.3.91", czyli z commitem: cc079ec jest taki, że po dodaniu liblastfm-qt5-git - program w ogóle przestaje się budować (przynajmniej u mnie).
Okazuje się, że nie tylko z tym commitem. Obecna wersja dostępna w GIT ma po prostu skopany co najmniej jeden z plików sterujących cmake. Można się tym pobawić :)

EDIT:
W AUR4 pojawiła się właśnie clementine-qt5-git wraz ze wszelkimi niezbędnymi dodatkami. Yaourt tego nie obsłuży, zatem proszę się zainteresować natywnym sposobem instalacji z AUR.
Niestety paczka - co w zasadzie oczywiste w świetle tego co napisałem wyżej - nie buduje się. Konieczne jest wprowadzenie zmian w CMakeLists.txt bądź poczekanie na zmiany w źródłach.

EDIT:
Zmęczyłem mandarynkę. Zbudowana na Qt5, uruchamia się, last.fm działa itd. Niemniej jednak rozwiązanie nie jest proste i składa się z kilku kroków. Skrótowo podaję metodę. Jeśli ktoś jest zainteresowany, to proszę dać znać.
Cały pies jest pogrzebany w tym, że przynajmniej w Archu (nie wiem jak w innych dystrybucjach), biblioteki, których wymaga Clementine budowane na Qt5 instalują w innych lokalizacjach nagłówki niż miejsca, zadeklarowane w plikach cpp (inna sprawa, że pliki te w części deklarują lokalizacje "stare" w części "nowe"). W zasadzie chodzi o echonest5 oraz lastfm5, które lądują w /usr/include/echonest5 oraz /usr/include/lastfm5 podczas gdy pliki cpp mają zadeklarowane, że nagłówki te znajdują się w /usr/include/echonest oraz /usr/include/lastfm.
Oczywiście nie skompilujemy aplikacji.
Rozwiązania są dwa. Pierwszego nie przetestowałem, nie wiem też jakie "spustoszenia" ;) może w systemie narobić. Jest natomiast proste. Po zainstalowaniu libechonest-qt5-git oraz liblastfm-qt5-git podlinkowujemy ich katalogi w /usr/include/ do /usr/include zmieniając nazwę z *5 na *. Następnie kompilujemy paczkę przy wykorzystaniu skryptów dostępnych w AUR4.
To rozwiązanie ma jedną wadę. Inny program kompilowany w systemie, który będzie się odwoływać do odpowiedników tych bibliotek kompilowanych na Qt4 "mylnie" zauważy, że odpowiednie nagłówki istnieją w systemie, podczas, gdy w istocie będą to nagłówki dla Qt5.
Drugie rozwiązanie jest następujące (to nie powoduje w systemie problemów).
Po instalacji wszystkich niezbędnych zależności budowanych z AUR/AUR4 oraz ściągnięciu źródeł skryptu budującego clementine-qt5-git, przygotowujemy źródła (makepkg -o), następnie w katalogu źródeł, zmieniamy odpowiednie wpisy w plikach *.cpp z coś/coś na coś5/coś (nie jest to istotne w tej chwili co, piszę tylko poglądowo). Teraz mamy przygotowane źródła, które można skompilować przez makepkg, tylko musimy je uruchomić z opcją, by stworzył paczkę z katalogu z rozpakowanymi (i przygotowanymi) źródłami, a nie rozpakowując źródła bezpośrednio.
Są źródła - jest zabawa :)

EDIT:
Błąd jest jednak w źródłach, które... są już naprawione. Krótka pogawędka z Florianem i wyjaśnione wszystko.
Nowa wersja będzie dostępna w weekend. Myślę zatem, że z wszelkimi zmianami warto się powstrzymać - będziecie mieć zmienione źródła przez osoby rozwijające program, a nie przez niezbyt wiele znającego się na programowaniu prawnika :)

EDIT:
Od kilku godzin wiem. Nowa wersja w AUR4. Buduje się perfekcyjnie (choć chwilę to trwa) i działa.
« Ostatnia zmiana: Czerwiec 16, 2015, 22:23:30 wysłana przez pavbaranov »

 

Polityka cookies
Darmowe Fora | Darmowe Forum
volkoria pupek halotupsy wataha-mocy rootsunderground