Budowanie pakietu binarnego na bramkę

:warning: Ten opis skierowany jest do zaawansowanych użytkowników i integratorów, którzy mogą wykorzystać Asystenta domowego do tworzenia własnych projektów/produktów. Podczas aktualizacji systemu automatycznie instalujemy potrzebne pakiety (już skompilowane dostępne z naszego repozytorium apt), użytkownicy bramki nie mają potrzeby kompilować czy ręcznie instalować pakietów.

:information_source: Celem tego wpisu jest pokazanie, w jaki sposób można skompilować pakiet binarny, który następnie można zainstalować na bramce (dodając do naszego repozytorium pakietów lub ręcznie).

Środowisko do budowania pakietów

Użycie oficjalnego obrazu Docker jest zalecanym sposobem budowania pakietów, w ten sposób możemy być pewni, że masz takie samo środowisko jak my i kompilacje są odtwarzalne.

Docker

W dalszej części opisu zakładamy, że na swoim komputerze, na którym będziesz kompilował pakiety, masz zainstalowany Docker.

Pobranie skryptów z repozytorium

Z naszego repozytorium pobierz projekt zawierający skrypty do budowania pakietów używanych w projekcie AI-Speaker.

możesz to zrobić za pomocą git:

git clone https://github.com/sviete/AIS-linux-packages.git

Uruchomienie środowiska do budowy pakietów

Przejdź do folderu, do którego pobrałeś skrypty, użyj poniższej komendy, by uruchomić środowisko do budowy pakietów:

./scripts/run-docker.sh

Poczekaj, aż najnowszy obraz zostanie pobrany, a następnie pojawi się monit konsoli kontenera. Folder AIS-linux-packages zostanie zamontowany w kontenerze jako /home/builder/termux-packages.

W konsoli kontenera możesz uruchamiać budowę pakietu za pomocą skryptu build-package.sh np. żeby zbudować rclone wpisujemy:

./build-package.sh rclone 

:information_source: Możesz wykonywać polecenia wewnątrz kontenera bez uruchamiania konsoli kontenera, podając je jako argumenty do skryptu ./scripts/run-docker.sh. Przykład:

./scripts/run-docker.sh ./build-package.sh rclone 

tak będziemy robić w kolejnych przykładach.

Budowa istniejącego pakietu

Gdy już mamy środowisko do kompilacji sprawdzmy czy działa nam kompilacja pakietów które są w repozytorium.

Tak jak wspomniano wyżej, kompilacja rozpoczyna się od wykonania w kontenerze dockera (./scripts/run-docker.sh) skryptu build-package.sh znajdującego się w katalogu głównym repozytorium AIS-linux-packages z przekazaniem nazwy pakietu jako argumentu (i innych opcjonalnych argumentów).

Przykład budowania pakietu rclone dla architektury ARM:

./scripts/run-docker.sh ./build-package.sh -a arm -f rclone

asciicast

Przydatne opcje kompilacji

  • -a - Architektura, dla której budujemy pakiet. Akceptowane wartości to: aarch64, arm, i686, x86_64, all. Jeżeli chcemy kopilować tylko na bramkę AIS dom DEV1 to wystarczy wybrać -a arm
  • -d - Kompiluj z informacjami debugowania.
  • -f - Wymusza budowanie pakietu, nawet jeśli jest już zbudowany.
  • -o - Podaj katalog, w którym mają zostać umieszczone wbudowane pliki * .deb. Domyślnie jest to ./debs.

Dodanie nowego pakietu

Gdy działa nam kompilacja pakietów, które są w repozytorium, to możemy dodać i skompilować nasz nowy pakiet. W tym celu w folderze AIS-linux-packages/packages dodajemy nowy folder (nazwa taka jak nazwa naszego pakietu). Następnei w folderze tym dodajemy skrypt Bash build.sh skrypt Bash, który zawiera definicje metadanych i instrukcje dla systemu kompilacji. Taki skrypt jest wewnętrznie używany przez ./build-package.sh i nie jest samodzielny.

W przykładzie poniżej dodajemy binarkę ais-auth:

Utworzenie folderu ais-auth

cd AIS-linux-packages/packages
mkdir ais-auth

Utworzenie pliku build.sh

nano  build.sh
TERMUX_PKG_HOMEPAGE=https://github.com/araczkowski/AIS-auth
TERMUX_PKG_DESCRIPTION="Password authentication library and utility for AIS dom"
TERMUX_PKG_LICENSE="GPL-3.0"
TERMUX_PKG_MAINTAINER="Andrzej Raczkowski <araczkowski@gmail.com>"
TERMUX_PKG_VERSION=1.2
TERMUX_PKG_REVISION=1
TERMUX_PKG_SRCURL=https://github.com/araczkowski/termux-auth/archive/v${TERMUX_PKG_VERSION}.tar.gz
TERMUX_PKG_SHA256=f461043f8794638297a4320398fdac7a806629a3ad63b75b590bfc9fac2af872
TERMUX_PKG_DEPENDS="openssl"

Budowanie pakietu

Wracamy do folderu AIS-packages i wykonujemy komendę:

sudo ./scripts/run-docker.sh ./build-package.sh -f -a arm ais-auth

asciicast

Zrozumienie procesu budowania

Kompilacja rozpoczyna się w momencie wykonania skryptu ./build-package.sh poszczególne etapy kompilacji opisane są szczegółowo w dokumentacji Termux:

Pod tym linkiem dostepna jest też instrukcja tworzenia nowego pakietu:

1 polubienie