Nie jesteś zalogowany na forum.

#1 2015-08-26 11:23:32

pavbaranov
Administrator
Lokalizacja: Kraków
Data rejestracji: 2015-08-22
Liczba postów: 1,861
WWW

Prośba o ocenę Why Can't I Connect?

Program: https://www.whycanticonnect.com/ (opis po polsku: http://404.g-net.pl/2015/08/why-cant-i-connect-1-11-2/) zawiera śladowe informacje o tym jakie potrzebuje zależności.  Na pewno wxgtk i webkitgtk2. Stworzyłem dla niego PKGBUILD:

pkgname=whycanticonnect
_pkgname=WhyCantIConnect
pkgver=1.11.2
pkgrel=1
pkgdesc="Network diagnostic tool that makes it easier to resolve TCP/IP connection errors"
arch=(i686 x86_64)
depends=(wxgtk webkitgtk2)
url="https://www.whycanticonnect.com/"
install=$pkgname.install
license=(GPL3)
source=(https://s3.amazonaws.com/whycanticonnect/Release-1.11.2/WhyCantIConnect-1.11.2.tar.gz)
md5sums=('3484c368a71cf8a04ddc223da4f0a3ef')


build() {
    cd $_pkgname-$pkgver
    ./configure --prefix=/usr
    make
    }

package() {
    cd $_pkgname-$pkgver
    make DESTDIR="$pkgdir" install
}

i plik whycanticonnect.install:

post_install() {
    glib-compile-schemas /usr/share/glib-2.0/schemas
    update-desktop-database -q
}

pre_upgrade() {
    if [ -f /usr/share/gconf/schemas/whycanticonnect.schemas ]; then
        gconfpkg --uninstall whycanticonnect
    fi
}

post_upgrade() {
    post_install $1
}

post_remove() {
    post_install $1
}

Przyznam szczerze, to pierwsza aplikacja Gtk+, dla której zrobiłem skrypty instalujące. Paczka się buduje i działa, ale prosiłbym o ocenę. Biorąc pod uwagę czemu służy, może być komuś przydatna.

Mam jeszcze - odnośnie PKGBUILDu - pytanie. Program buduje się w oparciu o wxWidgets, przy czym zarówno w wersji 3.0.x, jak i w wersji 2.x. W extra mamy dwie wersje tej paczki: wxgtk (czyli wersja 3.0.x) oraz wxgtk2.8 (czyli wersja 2.8.x). Wg pacmana (-Si) nie są one sprzeczne ze sobą, czyli możliwa jest ich koegzystencja w systemie. Niemniej jednak, skoro ktoś ma wersję 2.8, to bez sensu jest mu pchać do systemu wersję 3.0, skoro program - jak to pisze sam twórca:

The configure script will first look for wx-config-3.0 (usually found in /usr/bin), if not found, wx-config will be used.

- buduje się również na wersji 2.8 (i vice versa). Przyznam, że bez sensu jest wg mnie tworzenie dwu PKGBUILDów dla różnych wersji wxgtk, zwłaszcza, że porządku to nie wprowadzi, a jedynie większy rozgardiasz. No i pytanie w końcu: czy istnieje możliwość takiego zdefiniowania pola depends w PKGBUILDzie, by zawierał alternatywne wersje określonego programu? Normalnie, gdy wpiszę tam zarówno wxgtk jak i wxgtk2.8, to makepkg będzie domagał się instalacji ich obu, co jest bez sensu. Mi natomiast chodzi o to, czy w depends można zdefiniować jakoś alternatywę. Jeśli nie - skrypt - pozostanie na wersji 3.0.x.

Aha, zapomniałbym. Twórcy programu oferują też skrypty dla jego działania (zob.: https://www.whycanticonnect.com/?q=downloads sekcja "Scripts For Commonly Used Servers"), które po prostu należy rozpakować i uruchomić. Czy w PKGBUILDzie powinienem gdzieś o tym powiadomić? Sensu robienia odrębnych PKGBUILDów dla tych skryptów raczej nie widzę. Może należałoby je razem w jednym PKGBUILDzie spakować? (Ale w takim wypadku, to co dostarczam, nie stanowi samego programu, a "coś więcej", czego sami twórcy nie przeznaczyli do łącznego dystrybuowania z programem; dołączenie tych skryptów byłoby zatem sprzeczne z tym, co winno stanowić paczkę w Archu).


Hardware: AMD: A8-7410 APU with Radeon R5
software (podaję wyłącznie odrębności): Arch testing+kde-unstable, kernel linux-pb (5.1.10 m.in. AMD Jaguar, BMQ, UKSM), amdgpu (dla CIK), KDE

Offline

#2 2015-08-26 17:18:54

marcin82
Moderator
Lokalizacja: Sosnowiec
Data rejestracji: 2015-08-20
Liczba postów: 175

Odp: Prośba o ocenę Why Can't I Connect?

Daj coś takiego:

if [[ -n $(pacman -Qqs wxgtk2.8) ]]; then
depends=(wxgtk2.8 webkitgtk2)
else
depends=(wxgtk webkitgtk2)
fi

Technicznie działa - nie wiem natomiast czy jest akceptowalne i poprawne metodologicznie ...


marcin82

Offline

#3 2015-08-26 19:11:19

pavbaranov
Administrator
Lokalizacja: Kraków
Data rejestracji: 2015-08-22
Liczba postów: 1,861
WWW

Odp: Prośba o ocenę Why Can't I Connect?

Thx. Czekam w takim razie na opinię, czy "akceptowalne i poprawne metodologicznie".


Hardware: AMD: A8-7410 APU with Radeon R5
software (podaję wyłącznie odrębności): Arch testing+kde-unstable, kernel linux-pb (5.1.10 m.in. AMD Jaguar, BMQ, UKSM), amdgpu (dla CIK), KDE

Offline

#4 2015-08-26 20:11:09

barthalion
Developer
Lokalizacja: Poznań
Data rejestracji: 2015-08-20
Liczba postów: 223
WWW

Odp: Prośba o ocenę Why Can't I Connect?

Nie jest ani akceptowalne, ani poprawne. Jeżeli program buduje się ze zwykłym wxgtk, to on powinien widnieć w depends. W większości przypadków pakiety foobarX.Y to tylko tymczasowe rozwiązania, aż autorzy projektów zaktualizują kod pod nowe biblioteki.

Tak poza tym, w sources nie odnosisz się do $pkgver, więc będziesz musiał ręcznie zmienić wersję przy aktualizacji. W post_upgrade i w post_remove nie widzę dużego sensu, żeby przekazywać $1 do wywołania post_install. Zwykle zresztą nie robimy w ogóle post_remove, bo Twój pakiet może być jedynym zależnym od paczek dostarczających polecenia z post_install, powodując błędy "command not found" jeżeli programy są usuwane rekursywnie.

Offline

#5 2015-08-26 20:17:38

pavbaranov
Administrator
Lokalizacja: Kraków
Data rejestracji: 2015-08-22
Liczba postów: 1,861
WWW

Odp: Prośba o ocenę Why Can't I Connect?

W sources nie wprowadziłem zmiennej bowiem nie mam pojęcia czy i jak autorzy to realizują. Jak wyjdzie następna wersja będę wiedział (choć w istocie można to zmienić już teraz). Plik *.install jest po prostu ściągnięty z gedita i przerobiony wg instrukcji stąd: https://wiki.archlinux.org/index.php/GN … tall_files
Dzięki.


Hardware: AMD: A8-7410 APU with Radeon R5
software (podaję wyłącznie odrębności): Arch testing+kde-unstable, kernel linux-pb (5.1.10 m.in. AMD Jaguar, BMQ, UKSM), amdgpu (dla CIK), KDE

Offline

#6 2015-08-27 16:08:47

pavbaranov
Administrator
Lokalizacja: Kraków
Data rejestracji: 2015-08-22
Liczba postów: 1,861
WWW

Odp: Prośba o ocenę Why Can't I Connect?

barthalion napisał/a:

Jeżeli program buduje się ze zwykłym wxgtk, to on powinien widnieć w depends. W większości przypadków pakiety foobarX.Y to tylko tymczasowe rozwiązania, aż autorzy projektów zaktualizują kod pod nowe biblioteki.

Bartek, zatem, żebym dobrze zrozumiał. Zawsze, gdy istnieją jakieś źródła, które budują program z użyciem czegoś w wersji X i Y i obie te wersje są dostępne, a wersja X jest "wyższa" niż Y, to w zależnościach wprowadzić winniśmy tę "wyższą" wersję (python3, a nie 2, wxgtk 3, a nie 2.x itd.) - zgadza się? To korzystając z okazji. Są paczki, które budują się zarówno na Qt4, jak i na Qt5. W takim przypadku mam dawać wyłącznie paczki na Qt5?

barthalion napisał/a:

Tak poza tym, w sources nie odnosisz się do $pkgver, więc będziesz musiał ręcznie zmienić wersję przy aktualizacji. W post_upgrade i w post_remove nie widzę dużego sensu, żeby przekazywać $1 do wywołania post_install. Zwykle zresztą nie robimy w ogóle post_remove, bo Twój pakiet może być jedynym zależnym od paczek dostarczających polecenia z post_install, powodując błędy "command not found" jeżeli programy są usuwane rekursywnie.

Czyli wywalić post_upgrade/remove i będzie najlepiej?


Hardware: AMD: A8-7410 APU with Radeon R5
software (podaję wyłącznie odrębności): Arch testing+kde-unstable, kernel linux-pb (5.1.10 m.in. AMD Jaguar, BMQ, UKSM), amdgpu (dla CIK), KDE

Offline

#7 2015-08-27 18:20:01

barthalion
Developer
Lokalizacja: Poznań
Data rejestracji: 2015-08-20
Liczba postów: 223
WWW

Odp: Prośba o ocenę Why Can't I Connect?

Ad. 1: Z reguły tak, z wyjątkiem problemów ze stabilnością w wypadku wyższych wersji.

Ad. 2: Tylko post_remove.

Offline

#8 2015-08-27 19:16:24

pavbaranov
Administrator
Lokalizacja: Kraków
Data rejestracji: 2015-08-22
Liczba postów: 1,861
WWW

Odp: Prośba o ocenę Why Can't I Connect?

Rozumiem zatem, że ma być tak:

post_install() {
    glib-compile-schemas /usr/share/glib-2.0/schemas
    update-desktop-database -q
}

pre_upgrade() {
    if [ -f /usr/share/gconf/schemas/whycanticonnect.schemas ]; then
        gconfpkg --uninstall whycanticonnect
    fi
}

post_upgrade() {
    post_install $1
}

i na tym koniec.


Hardware: AMD: A8-7410 APU with Radeon R5
software (podaję wyłącznie odrębności): Arch testing+kde-unstable, kernel linux-pb (5.1.10 m.in. AMD Jaguar, BMQ, UKSM), amdgpu (dla CIK), KDE

Offline

Stopka

Forum oparte na FluxBB