mirror of
https://github.com/tuxbox-neutrino/buildenv.git
synced 2025-08-27 15:33:01 +02:00
Compare commits
54 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
1ab259dc19 | ||
|
36fa4881ac | ||
|
035d55be1e | ||
|
a02717be46 | ||
|
fd6946add0 | ||
|
8db6d9ff5a | ||
|
1c2ea27e48 | ||
|
7364c023f3 | ||
|
be593b9280 | ||
|
cdc0a66024 | ||
|
1fab14c1b1 | ||
|
7cc95f244c | ||
|
c99b2c81a5 | ||
|
7192612c65 | ||
|
118bf41374 | ||
|
f6013c24f8 | ||
|
af32875a90 | ||
|
a57049b8ff | ||
|
eb6fa9c3af | ||
|
aa1967149f | ||
|
7d64ca76ea | ||
|
33e5895b69 | ||
|
3ece5019d6 | ||
|
6f9a3e5d5f | ||
|
b67b6179a0 | ||
|
b2bc94cc85 | ||
|
083bad396c | ||
|
512fd26b8c | ||
|
06dc131957 | ||
|
417adaae42 | ||
|
8853288746 | ||
|
d0b46d9d66 | ||
|
b3bf207181 | ||
|
60951020ac | ||
|
3274d534f4 | ||
|
91e99de80c | ||
|
84e8e7f4b3 | ||
|
bba6f1757a | ||
|
3357c695e8 | ||
|
53c1eff2d9 | ||
|
635dcea62b | ||
|
e6adc400ae | ||
|
5a69bca0b3 | ||
|
81e94378da | ||
|
6c12b84daa | ||
|
f0a324cf8c | ||
|
e843103372 | ||
|
c3e5a8c69c | ||
|
0036b959aa | ||
|
21060d3016 | ||
|
93eac578c8 | ||
|
56a6509346 | ||
|
6c4dace716 | ||
|
5e06dceea8 |
25
.github/scripts/translate.py
vendored
Normal file
25
.github/scripts/translate.py
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
from googletrans import Translator
|
||||||
|
|
||||||
|
def translate_readme(input_text, target_lang):
|
||||||
|
translator = Translator()
|
||||||
|
translated = translator.translate(input_text, dest=target_lang)
|
||||||
|
translated_text = translated.text
|
||||||
|
|
||||||
|
# add hint for automatically translation
|
||||||
|
translated_text = f"Note: This is an automatically translated file. Original content from [here](https://github.com/tuxbox-neutrino/buildenv/blob/3.2.4/README-de.md):\n\n{translated_text}"
|
||||||
|
|
||||||
|
# Use this workaround, because translater breaks some links and anchors
|
||||||
|
translated_text = translated_text.replace("[Build Image](#Build Image)", "[Build Image](#build-image)")
|
||||||
|
translated_text = translated_text.replace("devtool -reference.html", "devtool-reference.html")
|
||||||
|
translated_text = translated_text.replace("dev-manual -common-tasks.html", "dev-manual-common-tasks.html")
|
||||||
|
translated_text = translated_text.replace("Clone #1-Init-Script", "#1-clone-init-script")
|
||||||
|
|
||||||
|
return translated_text
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
input_text = open("README-de.md", "r").read()
|
||||||
|
target_lang = "en" # target language is english
|
||||||
|
translated_text = translate_readme(input_text, target_lang)
|
||||||
|
|
||||||
|
with open("README-en.md", "w") as outfile:
|
||||||
|
outfile.write(translated_text)
|
42
.github/workflows/readme.yml
vendored
Normal file
42
.github/workflows/readme.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: Translate README
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 3.2.4
|
||||||
|
paths:
|
||||||
|
- 'README-de.md'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
translate:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install --upgrade googletrans==3.1.0a0
|
||||||
|
|
||||||
|
- name: Translate README
|
||||||
|
run: |
|
||||||
|
python .github/scripts/translate.py
|
||||||
|
|
||||||
|
- name: Commit and push translated README
|
||||||
|
run: |
|
||||||
|
git config --global user.email "actions@github.com"
|
||||||
|
git config --global user.name "GitHub Actions"
|
||||||
|
git add README-en.md
|
||||||
|
git commit -m "readme: Automatically translated README to English"
|
||||||
|
git push
|
||||||
|
|
4
.gitignore
vendored
4
.gitignore
vendored
@@ -9,8 +9,12 @@ build-neutrino
|
|||||||
local.conf.common.inc
|
local.conf.common.inc
|
||||||
dist/*
|
dist/*
|
||||||
build*
|
build*
|
||||||
|
backups*
|
||||||
*.orig
|
*.orig
|
||||||
*.log
|
*.log
|
||||||
local build increment
|
local build increment
|
||||||
*.list
|
*.list
|
||||||
|
|
||||||
|
*/poky
|
||||||
|
poky-*
|
||||||
|
|
||||||
|
213
README-de.md
Normal file
213
README-de.md
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
# Schnellstart Image-Erstellung #
|
||||||
|
|
||||||
|
- [Vorbereitung](#Vorbereitung)
|
||||||
|
- [Image bauen](#Image-bauen)
|
||||||
|
- [Aktualisierung](#Aktualisierung)
|
||||||
|
- [Arbeiten an Zielquellen](#Arbeiten-an-Zielquellen)
|
||||||
|
- [Übersicht über globale Konfigurationsdateien](#Übersicht-über-globale-Konfigurationsdateien)
|
||||||
|
|
||||||
|
## Vorbereitung
|
||||||
|
|
||||||
|
### Erforderliche Host-Pakete installieren (Debian 11)
|
||||||
|
Zur Verwendung mit anderen Distributionen siehe: [Yocto Project Quick Build](https://docs.yoctoproject.org/3.2.4/ref-manual/ref-system-requirements.html#supported-linux-distributions)
|
||||||
|
|
||||||
|
> :memo: **HINWEIS:** Bei Verwendung der Tuxbox-Builder-VM (welche nicht zwingend erforderlich ist), springe bitte zu [Schritt 1](#1-Init-Skript-klonen). Die Tuxbox-Builder-VM enthält bereits erforderliche Pakete. Details und Download von Tuxbox-Builder VM siehe: [Tuxbox-Builder](https://sourceforge.net/projects/n4k/files/Tuxbox-Builder)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt-get install -y gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential \
|
||||||
|
chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils \
|
||||||
|
iputils-ping python3-git python3-jinja2 libegl1-mesa pylint3 xterm subversion locales-all \
|
||||||
|
libxml2-utils ninja-build default-jre clisp libcapstone4 libsdl2-dev doxygen
|
||||||
|
```
|
||||||
|
> :memo: **HINWEIS:** Bei Debian 10 (buster) libcapstone3 verwenden.
|
||||||
|
|
||||||
|
#### Empfohlene Zusatzpakete zur grafischen Unterstützung und Analyse (z.B. mit Kdevelop, Meld):
|
||||||
|
```bash
|
||||||
|
apt-get install -y gitk git-gui meld cppcheck clazy kdevelop
|
||||||
|
```
|
||||||
|
|
||||||
|
### Optional: Falls kein konfiguriertes Git vorhanden ist, gib bitte Deine globalen Git-Benutzerdaten ein:
|
||||||
|
```bash
|
||||||
|
git config --global user.email "you@example.com"
|
||||||
|
git config --global user.user "Dein Name"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Image bauen
|
||||||
|
|
||||||
|
> :memo: **Hinweis:** Einige Pfade basieren auf Vorgaben, die vom Init-Script erzeugt werden. Einige Einträge werden als ```<Platzhalter>``` dargestellt, die entsprechend angepasst werden müssen.
|
||||||
|
|
||||||
|
> ### 1. Init-Skript klonen.
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/tuxbox-neutrino/buildenv.git
|
||||||
|
cd buildenv
|
||||||
|
```
|
||||||
|
|
||||||
|
> ### 2. Init-Skript ausführen
|
||||||
|
```bash
|
||||||
|
./init
|
||||||
|
cd poky-3.2.4
|
||||||
|
```
|
||||||
|
|
||||||
|
> ### 3. Liste möglicher Maschinentypen anzeigen
|
||||||
|
```bash
|
||||||
|
ls build
|
||||||
|
```
|
||||||
|
|
||||||
|
> ### 4. Umgebungsskript ausführen
|
||||||
|
```bash
|
||||||
|
. ./oe-init-build-env build/<Machine-Type aus der Liste von Schritt 3 hier eintragen>
|
||||||
|
```
|
||||||
|
|
||||||
|
> ### 5. Bauen
|
||||||
|
```bash
|
||||||
|
bitbake neutrino-image
|
||||||
|
```
|
||||||
|
|
||||||
|
Das kann eine Weile dauern. Einige Warnmeldungen können ignoriert werden. Fehlermeldungen, welche die Setscene-Tasks betreffen, sind kein Problem, aber Fehler während der Build- und Package-Tasks brechen den Prozess in den meißten Fällen ab. [Bitte melde in diesem Fall den Fehler oder sende Deine Lösung an uns](https://forum.tuxbox-neutrino.org/forum/viewforum.php?f=77). Hilfe ist sehr willkommen.
|
||||||
|
|
||||||
|
Wenn alles erledigt ist, sollte eine ähnliche Meldung wie diese erscheinen:
|
||||||
|
```bash
|
||||||
|
...
|
||||||
|
NOTE: Tasks Summary: Attempted 4568 tasks of which 4198 didn't need to be rerun and all succeeded.
|
||||||
|
...
|
||||||
|
```
|
||||||
|
**Das war's ...**
|
||||||
|
|
||||||
|
Erstellte Images und Pakete sind zu finden unter:
|
||||||
|
```
|
||||||
|
~/build/poky-3.2.4/build/<machine>/tmp/deploy
|
||||||
|
```
|
||||||
|
oder im dist-Verzeichnis:
|
||||||
|
```
|
||||||
|
~/build/dist/<Image-Version>/<machine>/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Aktualisierung
|
||||||
|
> :memo: Manuelle Aktualisierungen für beliebeige Ziel-Quellen sind nicht erforderlich. Dies wird automatisch bei jedem aufgerufenen Ziel mit Bitbake durchgeführt. Dadurch werden auch immer erforderliche Abhängigkeiten aktualisiert. Wenn man die volle Kontrolle über bestimmte Ziel-Quellen haben möchte, siehe [Arbeiten an Zielquellen](#Arbeiten-an-Zielquellen)!
|
||||||
|
|
||||||
|
Falls [Schritte 1 bis 4](#3-Liste-möglicher-Maschinentypen-anzeigen) bereits ausgeführt wurden, ist nur Schritt 5 erforderlich:
|
||||||
|
|
||||||
|
### Update Image
|
||||||
|
```bash
|
||||||
|
bitbake neutrino-image
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update Ziel
|
||||||
|
```bash
|
||||||
|
bitbake <target>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Meta-Layer-Repositories aktualisieren
|
||||||
|
Die erneute Ausführung des Init-Skripts aktualisiert die enthaltenen Meta-Layer auf den Stand der Remote-Repositories.
|
||||||
|
```bash
|
||||||
|
cd $HOME/build
|
||||||
|
./init
|
||||||
|
```
|
||||||
|
Die angestoßenen Update-Routinen des Init-scripts sollten nicht festgeschriebene Änderungen vorübergehend stashen bzw. rebasen lokale Commits auf die Remote-Änderungen. Konflikte muss man jedoch manuell auflösen. Natürlich kann man seine lokalen Meta-Layer für Meta-Neutrino- und Maschinen-Layer-Repositories manuell aktualisieren und modifizieren.
|
||||||
|
|
||||||
|
> :memo: **Hinweis:** Konfigurationsdateien bleiben unberührt. Neue oder geänderte Konfigurationsoptionen werden nicht berücksichtigt. Bitte überprüfe ggf. die Konfiguration.
|
||||||
|
|
||||||
|
## Arbeiten an Zielquellen
|
||||||
|
Wenn man die volle Kontrolle über die Ziel-Quellen haben möchte, sollten die Quellcodes in den Workspace verschoben werden. Siehe
|
||||||
|
[devtool](https://docs.yoctoproject.org/current/ref-manual/devtool-reference.html) und insbesondere [devtool modify](https://docs.yoctoproject.org/current/ref-manual/devtool-reference.html#modifying-an-existing-recipe).
|
||||||
|
|
||||||
|
## Konfiguration zurücksetzen
|
||||||
|
Wenn Du deine Maschinen-Konfigurationen zurücksetzen möchtest, benenne bitte das conf-Verzeichnis um (Löschen wird nicht empfohlen) und führe das Init-Skript erneut aus.
|
||||||
|
```bash
|
||||||
|
mv $HOME/build/poky-3.2.4/build/<machine>/conf $HOME/build/poky-3.2.4/build/<machine>/conf.01
|
||||||
|
cd $HOME/build
|
||||||
|
./init
|
||||||
|
```
|
||||||
|
|
||||||
|
## Neubau eines einzelnen Ziels erzwingen
|
||||||
|
In einigen Fällen kann es vorkommen, dass ein Target, warum auch immer, abbricht. Man sollte deswegen nicht in Panik verfallen und deswegen den tmp-Ordner und den sstate-cache löschen. Das kann man auch für jedes Target einzeln machen.
|
||||||
|
|
||||||
|
> :memo: Insbesondere defekte Archiv-URL's können zum Abbruch führen. Diese Fehler werden aber immer angezeigt und man kann die URL überprüfen. Oft liegt es nur an den Servern und funktioneren nach wenigen Minuten sogar wieder.
|
||||||
|
|
||||||
|
Um sicherzustellen, ob das betreffende Recipe auch tatsächlich ein Problem hat, macht es Sinn das betreffende Target komplett zu bereinigen und neu zu bauen. Um dies zu erzwingen, müssen alle erzeugten Paket-, Build- und Cachedaten bereinigt werden.
|
||||||
|
```bash
|
||||||
|
bitbake -c cleansstate <target>
|
||||||
|
```
|
||||||
|
anschließend neu bauen:
|
||||||
|
```bash
|
||||||
|
bitbake <target>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Vollständigen Imagebau erzwingen
|
||||||
|
Wenn Du einen kompletten Imagebau erzwingen möchtest, kann man das tmp-Verzeichnis löschen (oder umbenennen):
|
||||||
|
```bash
|
||||||
|
mv tmp tmp.01
|
||||||
|
bitbake neutrino-image
|
||||||
|
```
|
||||||
|
Wenn man den sstate-cache **nicht** gelöscht hat, sollte das Image in relativ kurzer Zeit fertig gebaut sein. Daher wird empfohlen, den sstate-cache beizubehalten. Das Verzeichnis wo sich der sstate-cache befindet, wird über die Variable ```${SSTATE_DIR}``` festgelegt und kann in der Konfiguration angepasst werden.
|
||||||
|
|
||||||
|
Dieses Verzeichnis ist ziemlich wertvoll und nur in seltenen Fällen ist es notwendig, dieses Verzeichnis zu löschen. Bitte beachte, dass der Build in diesem Fall sehr viel mehr Zeit in Anspruch nimmt.
|
||||||
|
> :bulb: Man kann Bitbake anweisen, keinen sstate-cache zu verwenden.
|
||||||
|
```bash
|
||||||
|
bitbake --no-setscene neutrino-image
|
||||||
|
```
|
||||||
|
oder
|
||||||
|
```bash
|
||||||
|
bitbake --skip-setscene neutrino-image
|
||||||
|
```
|
||||||
|
|
||||||
|
## Bei Bedarf anpassen
|
||||||
|
Es wird empfohlen, zum ersten Mal ohne Änderungen an den Konfigurationsdateien zu bauen, um einen Eindruck davon zu bekommen, wie der Build-Prozess funktioniert, und um die Ergebnisse zu sehen.
|
||||||
|
Die Einstellmöglichkeiten sind sehr umfangreich und für Einsteiger nicht wirklich überschaubar. Das Yoctoproject ist jedoch sehr
|
||||||
|
umfassend dokumentiert und bietet die beste Informationsquelle.
|
||||||
|
|
||||||
|
**Wichtig für Entwickler**: "[Arbeiten an Zielquellen](#Arbeiten-an-Zielquellen)"!
|
||||||
|
|
||||||
|
> :memo: **Bitte ändere nicht die Yocto-Recipes! Dies wird vom Yocto-Team nicht empfohlen, aber man kann zum Vervollständigen, Erweitern oder Überschreiben von Meta-Core-Recipes [.bbappend](https://docs.yoctoproject.org/3.2.4/dev-manual/dev-manual-common-tasks.html#using-bbappend-files-in-your-layer)-Dateien verwenden.**
|
||||||
|
|
||||||
|
### Übersicht über globale Konfigurationsdateien
|
||||||
|
Für die lokale Konfiguration werden diese Konfigurationsdateien innerhalb der Build-Verzeichnissen benötigt:
|
||||||
|
|
||||||
|
> $HOME/build/poky-3.2.4/build/```<machine>```/conf/local.conf
|
||||||
|
|
||||||
|
Diese generierte local.conf enthält nur wenige Zeilen, besitzt aber eine Zeile, die auf eine gemeinsame Konfigurationsdatei zeigt, die für alle Images und unterstützten Maschinentypen gültig ist und kann man mit eigenen Optionen füttern.
|
||||||
|
|
||||||
|
> $HOME/build/local.conf.common.inc
|
||||||
|
|
||||||
|
Diese **.inc** Datei wurde aus der geklonten Beispieldatei beim erstmaligen ausführen des init-Scripts erzeugt.
|
||||||
|
|
||||||
|
> local.conf.common.inc.sample
|
||||||
|
|
||||||
|
Diese Beispieldatei sollte unberührt bleiben, um mögliche Konflikte beim Aktualisieren des build-Repositories zu vermeiden und um zu sehen, was sich geändert haben könnte.
|
||||||
|
|
||||||
|
Nach einer Aktualisierung des build-Repositries könnten einige neue oder geänderte Optionen hinzugefügt oder entfernt worden sein, die nicht in die inkludierte Konfigurationsdatei übernommen werden. Diesen Fall sollte man in der eigenen Konfiguration berücksichtigen und falls erforderlich anpassen.
|
||||||
|
Natürlich kann man ```$HOME/Build/poky-3.2.4/build/<machine>/conf/local.conf``` mit eigenen Anforderungen ändern und als separate Konfigurationsdatei für einen Maschinentyp verwenden.
|
||||||
|
|
||||||
|
#### Musterkonfiguration für bblayers.conf:
|
||||||
|
> $HOME/build/poky-3.2.4/build/```<machine>```/conf/bblayers.conf
|
||||||
|
|
||||||
|
```bitbake
|
||||||
|
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
|
||||||
|
# changes incompatibly
|
||||||
|
POKY_BBLAYERS_CONF_VERSION = "2"
|
||||||
|
|
||||||
|
BBPATH = "${TOPDIR}"
|
||||||
|
BBFILES ?= ""
|
||||||
|
|
||||||
|
BBLAYERS ?= " \
|
||||||
|
/home/<username>build/poky-3.2.4/meta \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-poky \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-yocto-bsp \
|
||||||
|
"
|
||||||
|
BBLAYERS += " \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-neutrino \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-<machine-brand-or-bsp-name> \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-openembedded/meta-oe \
|
||||||
|
"
|
||||||
|
BBLAYERS += " \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-python2 \
|
||||||
|
"
|
||||||
|
BBLAYERS += " \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-qt5 \
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Mehr Informationen
|
||||||
|
Weitere Informationen zum Yocto Buildsystem:
|
||||||
|
|
||||||
|
* https://docs.yoctoproject.org/3.2.4/index.html
|
215
README-en.md
Normal file
215
README-en.md
Normal file
@@ -0,0 +1,215 @@
|
|||||||
|
Note: This is an automatically translated file. Original content from [here](https://github.com/tuxbox-neutrino/buildenv/blob/3.2.4/README-de.md):
|
||||||
|
|
||||||
|
# Quick start image creation #
|
||||||
|
|
||||||
|
- [Preparation](#Preparation)
|
||||||
|
- [Build Image](#build-image)
|
||||||
|
- [Update](#Update)
|
||||||
|
- [Working on Target Sources](#Working-on-Target-Sources)
|
||||||
|
- [Overview of global configuration files](#overview-of-global-configuration-files)
|
||||||
|
|
||||||
|
## Preparation
|
||||||
|
|
||||||
|
### Install required host packages (Debian 11)
|
||||||
|
For use with other distributions see: [Yocto Project Quick Build](https://docs.yoctoproject.org/3.2.4/ref-manual/ref-system-requirements.html#supported-linux-distributions)
|
||||||
|
|
||||||
|
> :memo: **NOTE:** If using the Tuxbox Builder VM (which is not mandatory), please skip to [Step 1](#1-clone-init-script). The Tuxbox Builder VM already contains required packages. Details and download of Tuxbox-Builder VM see: [Tuxbox-Builder](https://sourceforge.net/projects/n4k/files/Tuxbox-Builder)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt-get install -y gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential \
|
||||||
|
chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils \
|
||||||
|
iputils-ping python3-git python3-jinja2 libegl1-mesa pylint3 xterm subversion locales-all \
|
||||||
|
libxml2-utils ninja-build default-jre clisp libcapstone4 libsdl2-dev doxygen
|
||||||
|
```
|
||||||
|
> :memo: **NOTE:** On Debian 10 (buster) use libcapstone3.
|
||||||
|
|
||||||
|
#### Recommended additional packages for graphical support and analysis (e.g. with Kdevelop, Meld):
|
||||||
|
```bash
|
||||||
|
apt-get install -y gitk git-gui meld cppcheck clazy kdevelop
|
||||||
|
```
|
||||||
|
|
||||||
|
### Optional: If there is no configured Git, please enter your global Git user data:
|
||||||
|
```bash
|
||||||
|
git config --global user.email "you@example.com"
|
||||||
|
git config --global user.user "Your name"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build image
|
||||||
|
|
||||||
|
> :memo: **Note:** Some paths are based on defaults generated by the init script. Some entries are displayed as ```<placeholder>```, which need to be adjusted accordingly.
|
||||||
|
|
||||||
|
> ### 1. Clone init script.
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/tuxbox-neutrino/buildenv.git
|
||||||
|
cd buildenv
|
||||||
|
```
|
||||||
|
|
||||||
|
> ### 2. Run init script
|
||||||
|
```bash
|
||||||
|
./init
|
||||||
|
cd poky-3.2.4
|
||||||
|
```
|
||||||
|
|
||||||
|
> ### 3. Show list of possible machine types
|
||||||
|
```bash
|
||||||
|
ls build
|
||||||
|
```
|
||||||
|
|
||||||
|
> ### 4. Run environment script
|
||||||
|
```bash
|
||||||
|
. ./oe-init-build-env build/<enter machine type from the list from step 3 here>
|
||||||
|
```
|
||||||
|
|
||||||
|
> ### 5. Build
|
||||||
|
```bash
|
||||||
|
bitbake neutrino image
|
||||||
|
```
|
||||||
|
|
||||||
|
This could take a while. Some warning messages can be ignored. Error messages affecting the setscene tasks are not a problem, but errors during the build and package tasks terminate the process in most cases. [In this case, please report the error or send your solution to us](https://forum.tuxbox-neutrino.org/forum/viewforum.php?f=77). Help is very welcome.
|
||||||
|
|
||||||
|
When everything is done, you should see a message similar to this:
|
||||||
|
```bash
|
||||||
|
...
|
||||||
|
NOTE: Tasks Summary: Attempted 4568 tasks of which 4198 didn't need to be rerun and all succeeded.
|
||||||
|
...
|
||||||
|
```
|
||||||
|
**That's it...**
|
||||||
|
|
||||||
|
Created images and packages can be found at:
|
||||||
|
```
|
||||||
|
~/build/poky-3.2.4/build/<machine>/tmp/deploy
|
||||||
|
```
|
||||||
|
or in the dist directory:
|
||||||
|
```
|
||||||
|
~/build/dist/<image version>/<machine>/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Update
|
||||||
|
> :memo: Manual updates for arbitrary target sources are not required. This is done automatically for every target accessed using Bitbake. This means that required dependencies are always updated. If you want full control over specific target sources, see [Working on Target Sources](#Working-on-Target-Sources)!
|
||||||
|
|
||||||
|
If [Steps 1 to 4](View #3-list-of-possible-machine-types) have already been completed, only step 5 is required:
|
||||||
|
|
||||||
|
### Update image
|
||||||
|
```bash
|
||||||
|
bitbake neutrino image
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update target
|
||||||
|
```bash
|
||||||
|
bitbake <target>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update meta layer repositories
|
||||||
|
Re-executing the init script updates the included meta layers to the status of the remote repositories.
|
||||||
|
```bash
|
||||||
|
cd $HOME/build
|
||||||
|
./init
|
||||||
|
```
|
||||||
|
The triggered update routines of the init script should temporarily stash uncommitted changes or rebase local commits to the remote changes. However, conflicts must be resolved manually. Of course, you can manually update and modify your local meta layers for meta neutrino and machine layer repositories.
|
||||||
|
|
||||||
|
> :memo: **Note:** Configuration files remain untouched. New or changed configuration options are not taken into account. Please check the configuration if necessary.
|
||||||
|
|
||||||
|
## Working on target sources
|
||||||
|
If you want to have full control over the target sources, the source codes should be moved to the workspace. Please refer
|
||||||
|
[devtool](https://docs.yoctoproject.org/current/ref-manual/devtool-reference.html) and especially [devtool modify](https://docs.yoctoproject.org/current/ref-manual/devtool-reference.html#modifying-an-existing-recipe).
|
||||||
|
|
||||||
|
## Reset configuration
|
||||||
|
If you want to reset your machine configurations, please rename the conf directory (deletion is not recommended) and run the init script again.
|
||||||
|
```bash
|
||||||
|
mv $HOME/build/poky-3.2.4/build/<machine>/conf $HOME/build/poky-3.2.4/build/<machine>/conf.01
|
||||||
|
cd $HOME/build
|
||||||
|
./init
|
||||||
|
```
|
||||||
|
|
||||||
|
## Force rebuild of a single target
|
||||||
|
In some cases it can happen that a target breaks off for whatever reason. You shouldn't panic and delete the tmp folder and the sstate cache. You can also do this for each target individually.
|
||||||
|
|
||||||
|
> :memo: In particular, broken archive URLs can lead to termination. However, these errors are always displayed and you can check the URL. Often it's just the servers and they even work again after a few minutes.
|
||||||
|
|
||||||
|
To make sure whether the recipe in question actually has a problem, it makes sense to completely clean up the target in question and rebuild it. To enforce this, all generated package, build and cache data must be cleaned up.
|
||||||
|
```bash
|
||||||
|
bitbake -c cleansstate <target>
|
||||||
|
```
|
||||||
|
then rebuild:
|
||||||
|
```bash
|
||||||
|
bitbake <target>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Force full image build
|
||||||
|
If you want to force a complete image build, you can delete (or rename) the tmp directory:
|
||||||
|
```bash
|
||||||
|
mv tmp tmp.01
|
||||||
|
bitbake neutrino image
|
||||||
|
```
|
||||||
|
If you have **not** cleared the sstate cache, the image should be built in a relatively short time. Therefore, it is recommended to keep the sstate cache. The directory where the sstate cache is located is determined via the variable ```${SSTATE_DIR}``` and can be adjusted in the configuration.
|
||||||
|
|
||||||
|
This directory is quite valuable and only in rare cases is it necessary to delete this directory. Please note that the build will take much longer in this case.
|
||||||
|
> :bulb: You can tell Bitbake not to use sstate cache.
|
||||||
|
```bash
|
||||||
|
bitbake --no-setscene neutrino-image
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```bash
|
||||||
|
bitbake --skip-setscene neutrino-image
|
||||||
|
```
|
||||||
|
|
||||||
|
## Adjust if necessary
|
||||||
|
It is recommended to build for the first time without making any changes to the configuration files to get an idea of how the build process works and to see the results.
|
||||||
|
The setting options are very extensive and not really manageable for beginners. However, the Yoctoproject is very
|
||||||
|
comprehensively documented and provides the best source of information.
|
||||||
|
|
||||||
|
**Important for developers**: "[Working on Target Sources](#Working-on-Target-Sources)"!
|
||||||
|
|
||||||
|
> :memo: **Please do not change the Yocto recipes! This is not recommended by the Yocto team, but you can use [.bbappend](https://docs.yoctoproject.org/3.2.4/dev-manual/dev-manual-common-tasks.html#using-bbappend-files-in-your-layer) files.**
|
||||||
|
|
||||||
|
### Overview of global configuration files
|
||||||
|
For local configuration, these configuration files are required within the build directories:
|
||||||
|
|
||||||
|
> $HOME/build/poky-3.2.4/build/```<machine>```/conf/local.conf
|
||||||
|
|
||||||
|
This generated local.conf only contains a few lines, but has a line that points to a common configuration file that is valid for all images and supported machine types and can be fed with your own options.
|
||||||
|
|
||||||
|
> $HOME/build/local.conf.common.inc
|
||||||
|
|
||||||
|
This **.inc** file was created from the cloned example file when running the init script for the first time.
|
||||||
|
|
||||||
|
> local.conf.common.inc.sample
|
||||||
|
|
||||||
|
This example file should be left untouched to avoid possible conflicts when updating the build repository and to see what might have changed.
|
||||||
|
|
||||||
|
After an update to the build repository, some new or changed options may have been added or removed that are not reflected in the included configuration file. You should take this case into account in your own configuration and adapt it if necessary.
|
||||||
|
Of course, you can modify ```$HOME/Build/poky-3.2.4/build/<machine>/conf/local.conf``` with your own requirements and use it as a separate configuration file for a machine type.
|
||||||
|
|
||||||
|
#### Sample configuration for bblayers.conf:
|
||||||
|
> $HOME/build/poky-3.2.4/build/```<machine>```/conf/bblayers.conf
|
||||||
|
|
||||||
|
```bitbake
|
||||||
|
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
|
||||||
|
# changes incompatibly
|
||||||
|
POKY_BBLAYERS_CONF_VERSION = "2"
|
||||||
|
|
||||||
|
BBPATH = "${TOPDIR}"
|
||||||
|
BBFILES ?= ""
|
||||||
|
|
||||||
|
BBLAYERS ?= " \
|
||||||
|
/home/<username>build/poky-3.2.4/meta \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-poky \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-yocto-bsp \
|
||||||
|
"
|
||||||
|
BBLAYERS += "\
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-neutrino \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-<machine-brand-or-bsp-name> \
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-openembedded/meta-oe \
|
||||||
|
"
|
||||||
|
BBLAYERS += "\
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-python2 \
|
||||||
|
"
|
||||||
|
BBLAYERS += "\
|
||||||
|
/home/<username>/build/poky-3.2.4/meta-qt5 \
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
## More information
|
||||||
|
Further information about the Yocto build system:
|
||||||
|
|
||||||
|
* https://docs.yoctoproject.org/3.2.4/index.html
|
164
README.md
164
README.md
@@ -1,159 +1,7 @@
|
|||||||
# Quick start image build #
|
|
||||||
|
|
||||||
## Preparation
|
## Localized `README.md`'s
|
||||||
NOTE: If you are using the Tuxbox-Builder VM (this is not mandatory) please jump to [step 1](#1-clone-init-script-into-a-directory-of-your-choice). The Tuxbox-Builder VM already contains required packages.
|
|
||||||
For details and download of Tuxbox-Builder VM see: [Tuxbox-Builder](https://sourceforge.net/projects/n4k/files/Tuxbox-Builder)
|
| Language |
|
||||||
|
| -------------------------- |
|
||||||
### Install required packages (Debian 9/10)
|
| [English](README-en.md) |
|
||||||
```bash
|
| [German](README-de.md) |
|
||||||
apt-get install -y gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential \
|
|
||||||
chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils \
|
|
||||||
iputils-ping python3-git python3-jinja2 libegl1-mesa pylint3 xterm subversion locales-all \
|
|
||||||
libxml2-utils ninja-build default-jre clisp libcapstone3 libsdl2-dev
|
|
||||||
```
|
|
||||||
NOTE: Older buildsystem versions < 3.2 need libsdl1.2-dev
|
|
||||||
|
|
||||||
### Recommended additional packages for graphical support (e.g. KDE ...):
|
|
||||||
```bash
|
|
||||||
apt-get install -y gitk git-gui meld
|
|
||||||
```
|
|
||||||
|
|
||||||
### Optional: In case of no configured git, please set your global git user data:
|
|
||||||
```bash
|
|
||||||
git config --global user.email "you@example.com"
|
|
||||||
git config --global user.user "Your Name"
|
|
||||||
```
|
|
||||||
|
|
||||||
For usage with other distributions see: [Yocto Project Quick Build](https://www.yoctoproject.org/docs/latest/brief-yoctoprojectqs/brief-yoctoprojectqs.html)
|
|
||||||
|
|
||||||
### let's start:
|
|
||||||
|
|
||||||
## 1. Clone init script into a directory of your choice
|
|
||||||
```bash
|
|
||||||
$:~ git clone https://github.com/tuxbox-neutrino/build.git
|
|
||||||
$:~ cd build
|
|
||||||
```
|
|
||||||
|
|
||||||
## 2. Execute init script
|
|
||||||
This will clone all required layers and create some config files into your build directories.
|
|
||||||
* Parameter 1 <machine>: could be h7, hd51, hd60, hd61, osmio4k, osmio4kplus or set 'all' or keep empty ' ' for all machines.
|
|
||||||
* Parameter 2 <image-version>: could be 3.0, 3.1, 3.2 or keep empty for latest version (recommended, older versions are not really maintained anymore)
|
|
||||||
```bash
|
|
||||||
$:~ ./init.sh <machine> <image-version>
|
|
||||||
$:~ cd poky-<image-version>
|
|
||||||
```
|
|
||||||
example:
|
|
||||||
```bash
|
|
||||||
$:~ ./init.sh hd51 3.2
|
|
||||||
$:~ cd poky-3.2
|
|
||||||
```
|
|
||||||
|
|
||||||
## 3. Execute environment script
|
|
||||||
Please use possible machine type which you selected (see [step 2](#2-execute-init-script))! Here as example we use hd51.
|
|
||||||
This creates (if not exists!) the build directory named as hd51, sets the build environment and will print some lines:
|
|
||||||
```bash
|
|
||||||
$:~ . ./oe-init-build-env hd51
|
|
||||||
|
|
||||||
### Shell environment set up for builds. ###
|
|
||||||
|
|
||||||
You can now run 'bitbake <target>'
|
|
||||||
|
|
||||||
Common targets are:
|
|
||||||
core-image-minimal
|
|
||||||
core-image-sato
|
|
||||||
meta-toolchain
|
|
||||||
meta-ide-support
|
|
||||||
|
|
||||||
You can also run generated qemu images with a command like 'runqemu qemux86'
|
|
||||||
|
|
||||||
Other commonly useful commands are:
|
|
||||||
- 'devtool' and 'recipetool' handle common recipe tasks
|
|
||||||
- 'bitbake-layers' handles common layer tasks
|
|
||||||
- 'oe-pkgdata-util' handles common target package tasks
|
|
||||||
tuxbox@tuxbox-builder:~/Build/poky-3.0/hd51
|
|
||||||
$
|
|
||||||
```
|
|
||||||
**NOTE:** If you left the current shell you must retry [step 3](#3-execute-environment-script) for your machine type to recreate the required environment.
|
|
||||||
|
|
||||||
## 4. Build image
|
|
||||||
Now you are ready to build an image.
|
|
||||||
```bash
|
|
||||||
$:~ /build/poky-3.2/<machine>$ bitbake neutrino-image
|
|
||||||
```
|
|
||||||
This may take a while. Some warn messages can be ignored. Error messages during setscene tasks are no problem but errors during build and package tasks will abort the process. In this case please report or send us your solution to [Tuxbox-Forum](https://forum.tuxbox-neutrino.org/forum/viewforum.php?f=77). Help is very welcome.
|
|
||||||
|
|
||||||
If all done, such a message should appear:
|
|
||||||
```bash
|
|
||||||
...
|
|
||||||
NOTE: Tasks Summary: Attempted 4568 tasks of which 4198 didn't need to be rerun and all succeeded.
|
|
||||||
...
|
|
||||||
```
|
|
||||||
## That's it ...
|
|
||||||
|
|
||||||
Built images and packages to find under:
|
|
||||||
```
|
|
||||||
~/build/poky-X.X/<machine>/tmp/deploy
|
|
||||||
```
|
|
||||||
or in the dist directory:
|
|
||||||
```
|
|
||||||
~/build/dist/<image-version/<machine>/
|
|
||||||
```
|
|
||||||
|
|
||||||
## Updating
|
|
||||||
|
|
||||||
### Update target sources
|
|
||||||
An explicit update for any sources (e.g. neutrino) is not required. This will be done automatically on evrery called target with bitbake. This will also update required dependencies. See also "[Working on target sources](#working-on-target-sources)"!
|
|
||||||
|
|
||||||
### Update meta layer repositories
|
|
||||||
Execution of init script will update the yocto poky-x.x repository to the required yocto release and will updating the included local meta layers to current
|
|
||||||
state of remote repositories. Of corse you can update and modiify your local meta-layer for meta-neutrino and machine layers repositories manually. The update routines will stash uncommitted changes or will rebase your local commits to new remote changes, but conflicts are possible. In this case you must solve manually.
|
|
||||||
|
|
||||||
**Note: Your config files will be untouched. New or adapted config options are not considered. Please check your configuration if required.**
|
|
||||||
|
|
||||||
## Working on target sources
|
|
||||||
In this case you should transfer the desiered target source into the workspace repository.
|
|
||||||
if You have moved any target source into the workspace tree you have full control to source code you want to modify. See also [devtool](https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#using-devtool-in-your-sdk-workflow) and especially [devtool modify](https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#sdk-devtool-use-devtool-modify-to-modify-the-source-of-an-existing-component).
|
|
||||||
|
|
||||||
## Reset configuration if required
|
|
||||||
If you want to reset your configs, please rename (delete is not recommended) the conf directory ($HOME/build/poky-X.X/<machine>/conf) and execute the init script again.
|
|
||||||
|
|
||||||
|
|
||||||
## Customize if required
|
|
||||||
It's recommended to build for first time without any changes on config files to get an impression how the build process is working and see the results.
|
|
||||||
The possibilities for adjustments are very extensive and not really manageable for beginners. However, the Yoctoproject is very
|
|
||||||
extensively documented and provides the best source of information.
|
|
||||||
|
|
||||||
**Please do not modify the Yocto-sources! This is not recommended by the Yocto-Team, but you can use [.bbappend](https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#using-bbappend-files) files to complete, expand or override meta core Yocto recipes.**
|
|
||||||
|
|
||||||
The generated local.conf contains only a few lines but contains a line which is linking a common config file and is valid for all images and supported machine types. The origin cloned sample config file ("local.conf.common.inc.sample") should be untouched. This avoids possible conflicts during updating the init script from git repo. After executed init script (step 2), the config sample file was renamed from "local.conf.common.inc.sample" to "local.conf.common.inc" and this file you can feed with your own options which have effect for all images you want to build.
|
|
||||||
Alternatively you can modify the default "$HOME/Build/poky-X.X/<machine>/conf/local.conf" with your own requirements or include your own config file. After updated init script, some new or changed options could be added or removed. This case you should consider for your own configuration.
|
|
||||||
|
|
||||||
For local configuration these config files within your build directory are required:
|
|
||||||
```
|
|
||||||
../build/poky-X.X/<machine>/conf/bblayers.conf
|
|
||||||
../build/poky-X.X/<machine>/conf/local.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
This is the minimal required setup for bblayers.conf.
|
|
||||||
NOTE! machine name is not a part of layer name (e.g. hd51)
|
|
||||||
|
|
||||||
```bitbake
|
|
||||||
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
|
|
||||||
# changes incompatibly
|
|
||||||
POKY_BBLAYERS_CONF_VERSION = "2"
|
|
||||||
|
|
||||||
BBPATH = "${TOPDIR}"
|
|
||||||
BBFILES ?= ""
|
|
||||||
|
|
||||||
BBLAYERS ?= " \
|
|
||||||
${HOME}/build/poky-X.X/meta \
|
|
||||||
${HOME}/build/poky-X.X/meta-poky \
|
|
||||||
${HOME}/build/poky-X.X/meta-yocto-bsp \
|
|
||||||
${HOME}/build/poky-X.X/meta-neutrino \
|
|
||||||
${HOME}/build/poky-X.X/poky/meta-<metaname> \
|
|
||||||
"
|
|
||||||
```
|
|
||||||
Further informations about yocto buildsystem you can find here:
|
|
||||||
|
|
||||||
* https://www.yoctoproject.org/docs/latest/brief-yoctoprojectqs/brief-yoctoprojectqs.html
|
|
||||||
* https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html
|
|
||||||
|
24
files/0001-openembedded-disable-meta-python.patch
Normal file
24
files/0001-openembedded-disable-meta-python.patch
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
From 090a04acb63ed1d7fc829fa41de9c5ee86d249c1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thilo Graf <dbt@novatux.de>
|
||||||
|
Date: Sun, 24 Jul 2022 14:53:27 +0200
|
||||||
|
Subject: [PATCH 1/2] openembedded: disable meta-python
|
||||||
|
|
||||||
|
---
|
||||||
|
meta-multimedia/conf/layer.conf | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/meta-multimedia/conf/layer.conf b/meta-multimedia/conf/layer.conf
|
||||||
|
index be0e2b362..eb10c6eaa 100644
|
||||||
|
--- a/meta-multimedia/conf/layer.conf
|
||||||
|
+++ b/meta-multimedia/conf/layer.conf
|
||||||
|
@@ -29,6 +29,6 @@ BBFILE_PRIORITY_multimedia-layer = "6"
|
||||||
|
# cause compatibility issues with other layers
|
||||||
|
LAYERVERSION_multimedia-layer = "1"
|
||||||
|
|
||||||
|
-LAYERDEPENDS_multimedia-layer = "core meta-python"
|
||||||
|
+#LAYERDEPENDS_multimedia-layer = "core meta-python"
|
||||||
|
|
||||||
|
LAYERSERIES_COMPAT_multimedia-layer = "gatesgarth"
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
@@ -0,0 +1,27 @@
|
|||||||
|
From eb53094f171a3833f19b20667bda236d78a44ca9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thilo Graf <dbt@novatux.de>
|
||||||
|
Date: Sun, 24 Jul 2022 14:56:09 +0200
|
||||||
|
Subject: [PATCH 2/2] openembedded: disable openembedded-layer, meta-phyton
|
||||||
|
|
||||||
|
---
|
||||||
|
meta-networking/conf/layer.conf | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/meta-networking/conf/layer.conf b/meta-networking/conf/layer.conf
|
||||||
|
index bd0a44cae..dce550fe2 100644
|
||||||
|
--- a/meta-networking/conf/layer.conf
|
||||||
|
+++ b/meta-networking/conf/layer.conf
|
||||||
|
@@ -14,8 +14,8 @@ BBFILE_PRIORITY_networking-layer = "5"
|
||||||
|
LAYERVERSION_networking-layer = "1"
|
||||||
|
|
||||||
|
LAYERDEPENDS_networking-layer = "core"
|
||||||
|
-LAYERDEPENDS_networking-layer += "openembedded-layer"
|
||||||
|
-LAYERDEPENDS_networking-layer += "meta-python"
|
||||||
|
+#LAYERDEPENDS_networking-layer += "openembedded-layer"
|
||||||
|
+#LAYERDEPENDS_networking-layer += "meta-python"
|
||||||
|
|
||||||
|
LAYERSERIES_COMPAT_networking-layer = "gatesgarth"
|
||||||
|
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
333
init.functions.sh
Normal file
333
init.functions.sh
Normal file
@@ -0,0 +1,333 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# function for checking of valid machine(s)
|
||||||
|
function is_valid_machine ()
|
||||||
|
{
|
||||||
|
ISM=$1
|
||||||
|
for M in $MACHINES ; do
|
||||||
|
if [ "$ISM" == "$M" ] || [ "$MACHINE" == "all" ]; then
|
||||||
|
echo true
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo false
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_exec() {
|
||||||
|
DEX_ARG1=$1
|
||||||
|
DEX_ARG2=$2
|
||||||
|
DEX_ARG3=$3
|
||||||
|
# rm -f $TMP_LOGFILE
|
||||||
|
echo "[`date '+%Y%m%d_%H%M%S'`] EXEC: $DEX_ARG1" >> $LOGFILE
|
||||||
|
if [ "$DEX_ARG3" == "show_output" ]; then
|
||||||
|
$DEX_ARG1
|
||||||
|
else
|
||||||
|
$DEX_ARG1 > /dev/null 2>> $TMP_LOGFILE
|
||||||
|
fi
|
||||||
|
# echo -e "DEX_ARG1 [$DEX_ARG1] DEX_ARG2 [$DEX_ARG2] DEX_ARG3 [$DEX_ARG3]"
|
||||||
|
if test -f $TMP_LOGFILE; then
|
||||||
|
LOGTEXT=`cat $TMP_LOGFILE`
|
||||||
|
echo > $TMP_LOGFILE
|
||||||
|
fi
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
if [ "$DEX_ARG2" != "no_exit" ]; then
|
||||||
|
if [ "$LOGTEXT" != "" ]; then
|
||||||
|
echo -e "\033[31;1mERROR:\t\033[0m $LOGTEXT"
|
||||||
|
echo "ERROR: $LOGTEXT" >> $LOGFILE
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
if [ "$LOGTEXT" != "" ]; then
|
||||||
|
echo -e "\033[37;1mNOTE:\t\033[0m $LOGTEXT"
|
||||||
|
echo "NOTE: $LOGTEXT" >> $LOGFILE
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_metaname () {
|
||||||
|
TMP_NAME=$1
|
||||||
|
|
||||||
|
if [ "$TMP_NAME" == "hd51" ] || [ "$TMP_NAME" == "bre2ze4k" ] || [ "$TMP_NAME" == "mutant51" ] || [ "$TMP_NAME" == "ax51" ]; then
|
||||||
|
META_NAME="gfutures"
|
||||||
|
elif [ "$TMP_NAME" == "h7" ] || [ "$TMP_NAME" == "zgemmah7" ]; then
|
||||||
|
META_NAME="airdigital"
|
||||||
|
elif [ "$TMP_NAME" == "hd60" ] || [ "$TMP_NAME" == "hd61" ] || [ "$TMP_NAME" == "ax60" ] || [ "$TMP_NAME" == "ax61" ]; then
|
||||||
|
META_NAME="hisilicon"
|
||||||
|
elif [ "$TMP_NAME" == "osmio4k" ] || [ "$TMP_NAME" == "osmio4kplus" ]; then
|
||||||
|
META_NAME="edision"
|
||||||
|
elif [ "$TMP_NAME" == "e4hdultra" ]; then
|
||||||
|
META_NAME="ceryon"
|
||||||
|
else
|
||||||
|
META_NAME=$TMP_NAME
|
||||||
|
fi
|
||||||
|
echo "$META_NAME"
|
||||||
|
}
|
||||||
|
|
||||||
|
# clone or update required branch for required meta-<layer>
|
||||||
|
function clone_meta () {
|
||||||
|
|
||||||
|
LAYER_NAME=$1
|
||||||
|
BRANCH_NAME=$2
|
||||||
|
LAYER_GIT_URL=$3
|
||||||
|
BRANCH_HASH=$4
|
||||||
|
TARGET_GIT_PATH=$5
|
||||||
|
PATCH_LIST=$6
|
||||||
|
|
||||||
|
#echo -e "Parameters= $LAYER_NAME $BRANCH_NAME $LAYER_GIT_URL $BRANCH_HASH $TARGET_GIT_PATH $PATCH_LIST"
|
||||||
|
|
||||||
|
TMP_LAYER_BRANCH=$BRANCH_NAME
|
||||||
|
|
||||||
|
if test ! -d $TARGET_GIT_PATH/.git; then
|
||||||
|
echo -e "\033[35;1mclone branch $BRANCH_NAME from $LAYER_GIT_URL\033[0m"
|
||||||
|
do_exec "git clone -b $BRANCH_NAME $LAYER_GIT_URL $TARGET_GIT_PATH" ' ' 'show_output'
|
||||||
|
do_exec "git -C $TARGET_GIT_PATH checkout $BRANCH_HASH -b $IMAGE_VERSION"
|
||||||
|
do_exec "git -C $TARGET_GIT_PATH pull -r origin $BRANCH_NAME" ' ' 'show_output'
|
||||||
|
echo -e "\033[35;1mpatching $TARGET_GIT_PATH.\033[0m"
|
||||||
|
for PF in $PATCH_LIST ; do
|
||||||
|
PATCH_FILE="$FILES_DIR/$PF"
|
||||||
|
echo -e "apply: $PATCH_FILE"
|
||||||
|
do_exec "git -C $TARGET_GIT_PATH am $PATCH_FILE" ' ' 'show_output'
|
||||||
|
done
|
||||||
|
else
|
||||||
|
TMP_LAYER_BRANCH=`git -C $TARGET_GIT_PATH rev-parse --abbrev-ref HEAD`
|
||||||
|
echo -e "\033[35;1mupdate $TARGET_GIT_PATH $TMP_LAYER_BRANCH\033[0m"
|
||||||
|
do_exec "git -C $TARGET_GIT_PATH stash" 'no_exit'
|
||||||
|
|
||||||
|
if [ "$TMP_LAYER_BRANCH" != "$BRANCH_NAME" ]; then
|
||||||
|
echo -e "switch from branch $TMP_LAYER_BRANCH to branch $BRANCH_NAME..."
|
||||||
|
do_exec "git -C $TARGET_GIT_PATH checkout $BRANCH_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#echo -e "\033[35;1mUPDATE:\033[0m\nupdate $LAYER_NAME from (branch $BRANCH_NAME) $LAYER_GIT_URL ..."
|
||||||
|
do_exec "git -C $TARGET_GIT_PATH pull -r origin $BRANCH_NAME" ' ' 'show_output'
|
||||||
|
|
||||||
|
if [ "$TMP_LAYER_BRANCH" != "$BRANCH_NAME" ]; then
|
||||||
|
echo -e "\033[35;1mswitch back to branch $TMP_LAYER_BRANCH\033[0m"
|
||||||
|
do_exec "git -C $TARGET_GIT_PATH checkout $TMP_LAYER_BRANCH"
|
||||||
|
echo -e "\033[35;1mrebase branch $BRANCH_NAME into branch $TMP_LAYER_BRANCH\033[0m"
|
||||||
|
do_exec "git -C $TARGET_GIT_PATH rebase $BRANCH_NAME" ' ' 'show_output'
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_exec "git -C $TARGET_GIT_PATH stash pop" 'no_exit'
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# clone/update required branch from tuxbox bsp layers
|
||||||
|
function is_required_machine_layer ()
|
||||||
|
{
|
||||||
|
HIM1=$1
|
||||||
|
for M in $HIM1 ; do
|
||||||
|
if [ "$M" == "$MACHINE" ]; then
|
||||||
|
echo true
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo false
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# get matching machine type from machine build id
|
||||||
|
function get_real_machine_type() {
|
||||||
|
MACHINE_TYPE=$1
|
||||||
|
if [ "$MACHINE_TYPE" == "mutant51" ] || [ "$MACHINE_TYPE" == "ax51" ] || [ "$MACHINE_TYPE" == "hd51" ]; then
|
||||||
|
RMT_RES="hd51"
|
||||||
|
elif [ "$MACHINE_TYPE" == "hd60" ] || [ "$MACHINE_TYPE" == "ax60" ]; then
|
||||||
|
RMT_RES="hd60"
|
||||||
|
elif [ "$MACHINE_TYPE" == "hd61" ] || [ "$MACHINE_TYPE" == "ax61" ]; then
|
||||||
|
RMT_RES="hd61"
|
||||||
|
elif [ "$MACHINE_TYPE" == "zgemmah7" ] || [ "$MACHINE_TYPE" == "h7" ]; then
|
||||||
|
RMT_RES="h7"
|
||||||
|
else
|
||||||
|
RMT_RES=$MACHINE_TYPE
|
||||||
|
fi
|
||||||
|
echo $RMT_RES
|
||||||
|
}
|
||||||
|
|
||||||
|
# get matching machine build id from machine type
|
||||||
|
function get_real_machine_id() {
|
||||||
|
MACHINEBUILD=$1
|
||||||
|
if [ "$MACHINEBUILD" == "hd51" ]; then
|
||||||
|
RMI_RES="ax51"
|
||||||
|
elif [ "$MACHINEBUILD" == "hd60" ]; then
|
||||||
|
RMI_RES="ax60"
|
||||||
|
elif [ "$MACHINEBUILD" == "hd61" ]; then
|
||||||
|
RMI_RES="ax61"
|
||||||
|
elif [ "$MACHINEBUILD" == "h7" ]; then
|
||||||
|
RMI_RES="zgemmah7"
|
||||||
|
else
|
||||||
|
RMI_RES=$MACHINEBUILD
|
||||||
|
fi
|
||||||
|
echo $RMI_RES
|
||||||
|
}
|
||||||
|
|
||||||
|
# function to create file enrties into a file, already existing entry will be ignored
|
||||||
|
function set_file_entry () {
|
||||||
|
FILE_NAME=$1
|
||||||
|
FILE_SEARCH_ENTRY=$2
|
||||||
|
FILE_NEW_ENTRY=$3
|
||||||
|
if test ! -f $FILE_NAME; then
|
||||||
|
echo $FILE_NEW_ENTRY > $FILE_NAME
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
OLD_CONTENT=`cat $FILE_NAME`
|
||||||
|
HAS_ENTRY=`grep -c -w $FILE_SEARCH_ENTRY $FILE_NAME`
|
||||||
|
if [ "$HAS_ENTRY" == "0" ] ; then
|
||||||
|
echo $FILE_NEW_ENTRY >> $FILE_NAME
|
||||||
|
fi
|
||||||
|
NEW_CONTENT=`cat $FILE_NAME`
|
||||||
|
if [ "$OLD_CONTENT" == "$NEW_CONTENT" ] ; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# function to create configuration for box types
|
||||||
|
function create_local_config () {
|
||||||
|
CLC_ARG1=$1
|
||||||
|
|
||||||
|
if [ "$CLC_ARG1" != "all" ]; then
|
||||||
|
|
||||||
|
MACHINE_BUILD_DIR=$BUILD_ROOT/$CLC_ARG1
|
||||||
|
do_exec "mkdir -p $BUILD_ROOT"
|
||||||
|
|
||||||
|
BACKUP_CONFIG_DIR="$BACKUP_PATH/$CLC_ARG1/conf"
|
||||||
|
do_exec "mkdir -p $BACKUP_CONFIG_DIR"
|
||||||
|
|
||||||
|
LOCAL_CONFIG_FILE_PATH=$MACHINE_BUILD_DIR/conf/local.conf
|
||||||
|
|
||||||
|
if test -d $BUILD_ROOT_DIR/$CLC_ARG1; then
|
||||||
|
if test ! -L $BUILD_ROOT_DIR/$CLC_ARG1; then
|
||||||
|
# generate build/config symlinks for compatibility
|
||||||
|
echo -e "\033[37;1m\tcreate compatible symlinks directory for $CLC_ARG1 environment ...\033[0m"
|
||||||
|
do_exec "mv -v $BUILD_ROOT_DIR/$CLC_ARG1 $BUILD_ROOT"
|
||||||
|
do_exec "ln -sv $MACHINE_BUILD_DIR $BUILD_ROOT_DIR/$CLC_ARG1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# generate default config
|
||||||
|
if test ! -d $MACHINE_BUILD_DIR/conf; then
|
||||||
|
echo -e "\033[37;1m\tcreating build directory for $CLC_ARG1 environment ...\033[0m"
|
||||||
|
do_exec "cd $BUILD_ROOT_DIR"
|
||||||
|
do_exec ". ./oe-init-build-env $MACHINE_BUILD_DIR"
|
||||||
|
# we need a clean config file
|
||||||
|
if test -f $LOCAL_CONFIG_FILE_PATH & test ! -f $LOCAL_CONFIG_FILE_PATH.origin; then
|
||||||
|
# so we save the origin local.conf
|
||||||
|
do_exec "mv -v $LOCAL_CONFIG_FILE_PATH $LOCAL_CONFIG_FILE_PATH.origin"
|
||||||
|
fi
|
||||||
|
do_exec "cd $BASEPATH"
|
||||||
|
echo "[Desktop Entry]" > $BUILD_ROOT/.directory
|
||||||
|
echo "Icon=folder-green" >> $BUILD_ROOT/.directory
|
||||||
|
fi
|
||||||
|
|
||||||
|
# modify or upgrade config files inside conf directory
|
||||||
|
LOCAL_CONFIG_FILE_INC_PATH=$BASEPATH/local.conf.common.inc
|
||||||
|
if test -f $LOCAL_CONFIG_FILE_INC_PATH; then
|
||||||
|
|
||||||
|
if test -f $LOCAL_CONFIG_FILE_PATH; then
|
||||||
|
HASHSTAMP=`MD5SUM $LOCAL_CONFIG_FILE_PATH`
|
||||||
|
do_exec "cp -v $LOCAL_CONFIG_FILE_PATH $BACKUP_CONFIG_DIR/local.conf.$HASHSTAMP.$BACKUP_SUFFIX"
|
||||||
|
|
||||||
|
# migrate settings after server switch
|
||||||
|
echo -e "migrate settings within $LOCAL_CONFIG_FILE_INC_PATH..."
|
||||||
|
sed -i -e 's|http://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH
|
||||||
|
sed -i -e 's|https://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH
|
||||||
|
|
||||||
|
sed -i -e 's|http://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_INC_PATH
|
||||||
|
sed -i -e 's|https://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_INC_PATH
|
||||||
|
|
||||||
|
sed -i -e 's|http://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH
|
||||||
|
sed -i -e 's|https://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH
|
||||||
|
|
||||||
|
sed -i -e 's|archiv.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH
|
||||||
|
sed -i -e 's|sstate.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH
|
||||||
|
|
||||||
|
echo -e "migrate settings within $LOCAL_CONFIG_FILE_PATH"
|
||||||
|
sed -i -e 's|http://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH
|
||||||
|
sed -i -e 's|https://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH
|
||||||
|
|
||||||
|
sed -i -e 's|http://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_PATH
|
||||||
|
sed -i -e 's|https://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_PATH
|
||||||
|
|
||||||
|
sed -i -e 's|http://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH
|
||||||
|
sed -i -e 's|https://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH
|
||||||
|
|
||||||
|
sed -i -e 's|archiv.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH
|
||||||
|
sed -i -e 's|sstate.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH
|
||||||
|
|
||||||
|
echo -e "\033[32;1mdone ...\033[0m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# add init note
|
||||||
|
set_file_entry $LOCAL_CONFIG_FILE_PATH "generated" "# auto generated entries by init script"
|
||||||
|
|
||||||
|
# add line 1, include for local.conf.common.inc
|
||||||
|
set_file_entry $LOCAL_CONFIG_FILE_PATH "$BASEPATH/local.conf.common.inc" "include $BASEPATH/local.conf.common.inc"
|
||||||
|
|
||||||
|
# add line 2, machine type
|
||||||
|
M_TYPE='MACHINE = "'`get_real_machine_type $CLC_ARG1`'"'
|
||||||
|
if set_file_entry $LOCAL_CONFIG_FILE_PATH "MACHINE" "$M_TYPE" == 1; then
|
||||||
|
echo -e "\t\033[37;1m$LOCAL_CONFIG_FILE_PATH has been upgraded with entry: $M_TYPE \033[0m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# add line 3, machine build
|
||||||
|
M_ID='MACHINEBUILD = "'`get_real_machine_id $CLC_ARG1`'"'
|
||||||
|
if set_file_entry $LOCAL_CONFIG_FILE_PATH "MACHINEBUILD" "$M_ID" == 1; then
|
||||||
|
echo -e "\t\033[37;1m$LOCAL_CONFIG_FILE_PATH has been upgraded with entry: $M_ID \033[0m"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "\033[31;1mERROR:\033[0m:\ttemplate $BASEPATH/local.conf.common.inc not found..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
BBLAYER_CONF_FILE="$MACHINE_BUILD_DIR/conf/bblayers.conf"
|
||||||
|
|
||||||
|
# craete backup for bblayer.conf
|
||||||
|
if test -f $BBLAYER_CONF_FILE; then
|
||||||
|
HASHSTAMP=`MD5SUM $BBLAYER_CONF_FILE`
|
||||||
|
do_exec "cp -v $BBLAYER_CONF_FILE $BACKUP_CONFIG_DIR/bblayer.conf.$HASHSTAMP.$BACKUP_SUFFIX"
|
||||||
|
fi
|
||||||
|
|
||||||
|
META_MACHINE_LAYER=meta-`get_metaname $CLC_ARG1`
|
||||||
|
|
||||||
|
# add layer entries into bblayer.conf
|
||||||
|
set_file_entry $BBLAYER_CONF_FILE "generated" '# auto generated entries by init script'
|
||||||
|
LAYER_LIST=" $TUXBOX_LAYER_NAME $META_MACHINE_LAYER $OE_LAYER_NAME/meta-oe $OE_LAYER_NAME/meta-networking $PYTHON2_LAYER_NAME $QT5_LAYER_NAME "
|
||||||
|
for LL in $LAYER_LIST ; do
|
||||||
|
if set_file_entry $BBLAYER_CONF_FILE $LL 'BBLAYERS += " '$BUILD_ROOT_DIR'/'$LL' "' == 1;then
|
||||||
|
echo -e "\t\033[37;1m$BBLAYER_CONF_FILE has been upgraded with entry: $LL... \033[0m"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# function create local dist directory to prepare for web access
|
||||||
|
function create_dist_tree () {
|
||||||
|
|
||||||
|
# create dist dir
|
||||||
|
DIST_BASEDIR="$BASEPATH/dist/$IMAGE_VERSION"
|
||||||
|
if test ! -d "$DIST_BASEDIR"; then
|
||||||
|
echo -e "\033[37;1mcreate dist directory:\033[0m $DIST_BASEDIR"
|
||||||
|
do_exec "mkdir -p $DIST_BASEDIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create link sources
|
||||||
|
DIST_LIST=`ls $BUILD_ROOT`
|
||||||
|
for DL in $DIST_LIST ; do
|
||||||
|
DEPLOY_DIR="$BUILD_ROOT/$DL/tmp/deploy"
|
||||||
|
do_exec "ln -sfv $DEPLOY_DIR $DIST_BASEDIR/$DL"
|
||||||
|
if test -L "$DIST_BASEDIR/$DL/deploy"; then
|
||||||
|
do_exec "unlink -v $DIST_BASEDIR/$DL/deploy"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function MD5SUM () {
|
||||||
|
MD5SUM_FILE=$1
|
||||||
|
MD5STAMP=`md5sum $MD5SUM_FILE |cut -f 1 -d " "`
|
||||||
|
echo $MD5STAMP
|
||||||
|
}
|
609
init.sh
609
init.sh
@@ -1,17 +1,47 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
source init.functions.sh
|
||||||
#set -x
|
#set -x
|
||||||
|
|
||||||
BASEPATH=`pwd`
|
BASEPATH=$(pwd)
|
||||||
FILES_DIR=$BASEPATH/files
|
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
|
||||||
MACHINES="h7 hd51 hd60 hd61 osmio4k osmio4kplus"
|
|
||||||
HINT_SYNTAX='Usage '$0' <machine> <image-version>'
|
# only current version
|
||||||
HINT_MACHINES="<$MACHINES all>"
|
# IMAGE_VERSION=$(git -C $BASEPATH rev-parse --abbrev-ref HEAD)
|
||||||
HINT_IMAGE_VERSIONS='<3.2> <3.1> <3.0>'
|
IMAGE_VERSION="3.2.4"
|
||||||
|
|
||||||
|
FILES_DIR="$BASEPATH/files"
|
||||||
|
|
||||||
|
# identical listings
|
||||||
|
MACHINES_IDENTICAL_HD51="hd51 ax51 mutant51"
|
||||||
|
MACHINES_IDENTICAL_H7="h7 zgemmah7"
|
||||||
|
MACHINES_IDENTICAL_HD60="hd60 ax60" #TODO: move into gfutures
|
||||||
|
MACHINES_IDENTICAL_HD61="hd61 ax61" #TODO: move into gfutures
|
||||||
|
|
||||||
|
# gfutures listing
|
||||||
|
MACHINES_GFUTURES="$MACHINES_IDENTICAL_HD51 bre2ze4k"
|
||||||
|
# hisilcon listing #TODO: move into gfutures
|
||||||
|
MACHINES_HISI="$MACHINES_IDENTICAL_HD60 $MACHINES_IDENTICAL_HD61"
|
||||||
|
# airdigital listing
|
||||||
|
MACHINES_AIRDIGITAL="$MACHINES_IDENTICAL_H7"
|
||||||
|
# edision listing
|
||||||
|
#MACHINES_EDISION="osmio4k osmio4kplus"
|
||||||
|
# ceryon listing
|
||||||
|
MACHINES_CERYON="e4hdultra"
|
||||||
|
|
||||||
|
# valid machine list
|
||||||
|
MACHINES="$MACHINES_GFUTURES $MACHINES_HISI $MACHINES_AIRDIGITAL $MACHINES_EDISION $MACHINES_CERYON"
|
||||||
|
|
||||||
|
HINT_SYNTAX='\033[37;1mUsage '$0' <machine>\033[0m'
|
||||||
|
HINT_MACHINES="<$MACHINES>, <all> or keep empty < >"
|
||||||
|
HINT_IMAGE_VERSIONS="$IMAGE_VERSION"
|
||||||
|
|
||||||
LOG_PATH=$BASEPATH/log
|
LOG_PATH=$BASEPATH/log
|
||||||
mkdir -p $LOG_PATH
|
mkdir -p $LOG_PATH
|
||||||
LOGFILE_NAME="$0_`date '+%Y%m%d_%H%M%S'`.log"
|
|
||||||
|
BACKUP_PATH=$BASEPATH/backups
|
||||||
|
mkdir -p $BACKUP_PATH
|
||||||
|
|
||||||
|
LOGFILE_NAME="$0_$TIMESTAMP.log"
|
||||||
LOGFILE=$LOG_PATH/$LOGFILE_NAME
|
LOGFILE=$LOG_PATH/$LOGFILE_NAME
|
||||||
TMP_LOGFILE=$LOG_PATH/.tmp.log
|
TMP_LOGFILE=$LOG_PATH/.tmp.log
|
||||||
touch $LOGFILE
|
touch $LOGFILE
|
||||||
@@ -24,355 +54,125 @@ ln -sf $LOGFILE $LOGFILE_LINK
|
|||||||
|
|
||||||
|
|
||||||
# set passed parameters
|
# set passed parameters
|
||||||
if [ "$1" = "" ]; then
|
if [ "$1" == "" ]; then
|
||||||
MACHINE="all"
|
MACHINE="all"
|
||||||
else
|
else
|
||||||
MACHINE=$1
|
MACHINE=$1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$2" = "" ]; then
|
if [ $(is_valid_machine "$MACHINE") == false ]; then
|
||||||
IMAGE_VERSION="3.2"
|
echo -e "\033[31;1mERROR:\tNo valid machine defined.\033[0m\n\t$HINT_SYNTAX.
|
||||||
else
|
\tKeep parameter <machine> empty to initialize all possible machine types or set your favorite machine.
|
||||||
IMAGE_VERSION=$2
|
\tPossible types are:
|
||||||
fi
|
\t\033[37;1m$HINT_MACHINES\033[0m\n"
|
||||||
|
|
||||||
# check for empty machine
|
|
||||||
if [ -z "$MACHINE" ]; then
|
|
||||||
echo -e "\033[31;1mERROR:\tNo machine defined. Possible machines are $HINT_MACHINES. $HINT_SYNTAX ...\033[0m"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check for valid machine
|
echo -e "##########################################################################################"
|
||||||
if [ "$MACHINE" != "hd51" ] && [ "$MACHINE" != "h7" ] && [ "$MACHINE" != "hd60" ] && [ "$MACHINE" != "hd61" ] && [ "$MACHINE" != "osmio4k" ] && [ "$MACHINE" != "osmio4kplus" ] && [ "$MACHINE" != "all" ]; then
|
echo -e "\033[37;1mInitialze build environment:\nversion: $IMAGE_VERSION\nmachine: $MACHINE\033[0m"
|
||||||
echo -e "\033[31;1mERROR:\tInvalid machine defined. $HINT_SYNTAX. Possible machines are $HINT_MACHINES\033[0m"
|
echo -e "##########################################################################################\n"
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check for image versions
|
|
||||||
if [ "$IMAGE_VERSION" != "3.2" ] && [ "$IMAGE_VERSION" != "3.1" ] && [ "$IMAGE_VERSION" != "3.0" ]; then
|
|
||||||
echo -e "\033[31;1mERROR:\tInvalid image version defined. $HINT_SYNTAX. Possible image versions are $HINT_IMAGE_VERSIONS, keep empty for current version\033[0m"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\033[37;1mNOTE:\tInitialze build environment for image version $IMAGE_VERSION and machine: $MACHINE \033[0m\n"
|
|
||||||
|
|
||||||
function do_exec() {
|
|
||||||
DEX_ARG1=$1
|
|
||||||
DEX_ARG2=$2
|
|
||||||
DEX_ARG3=$3
|
|
||||||
rm -f $TMP_LOGFILE
|
|
||||||
if [ "$DEX_ARG3" == "show_output" ]; then
|
|
||||||
$DEX_ARG1
|
|
||||||
else
|
|
||||||
$DEX_ARG1 > /dev/null 2>> $TMP_LOGFILE
|
|
||||||
fi
|
|
||||||
# echo -e "DEX_ARG1 [$DEX_ARG1] DEX_ARG2 [$DEX_ARG2] DEX_ARG3 [$DEX_ARG3]"
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
LOGTEXT=`cat $TMP_LOGFILE`
|
|
||||||
echo "$LOGTEXT" >> $LOGFILE
|
|
||||||
if [ "$DEX_ARG2" != "no_exit" ]; then
|
|
||||||
if [ "$LOGTEXT" != "" ]; then
|
|
||||||
echo -e "\033[31;1mERROR:\t\033[0m $LOGTEXT"
|
|
||||||
fi
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
if [ "$LOGTEXT" != "" ]; then
|
|
||||||
echo -e "\033[37;1mNOTE:\t\033[0m $LOGTEXT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# if [ $DEX_ARG2 == "no_exit" ]; then
|
|
||||||
# echo -e "\033[32;1mOK:\033[0m `cat $LOGFILE`"
|
|
||||||
# fi
|
|
||||||
}
|
|
||||||
|
|
||||||
POKY_NAME=poky-$IMAGE_VERSION
|
|
||||||
BUILD_ROOT_DIR=$BASEPATH/$POKY_NAME
|
|
||||||
GUI_LAYER_NAME=meta-neutrino
|
|
||||||
BACKUP_SUFFIX=bak
|
BACKUP_SUFFIX=bak
|
||||||
|
|
||||||
YOCTO_GIT_URL=https://git.yoctoproject.org/git/poky
|
YOCTO_GIT_URL=https://git.yoctoproject.org/git/poky
|
||||||
# update of yocto layer is disabled on executing init script, for yocto oe it's better to use a tested tag, defined with $YOCTO_BRANCH_HASH
|
POKY=poky
|
||||||
YOCTO_LAYER_DO_UPDATE=0
|
POKY_NAME=$IMAGE_VERSION
|
||||||
|
BUILD_ROOT_DIR=$BASEPATH/$POKY-$IMAGE_VERSION
|
||||||
|
BUILD_ROOT=$BUILD_ROOT_DIR/build
|
||||||
|
|
||||||
TUXBOX_LAYER_GIT_URL=https://github.com/neutrino-hd
|
OE_LAYER_NAME=meta-openembedded
|
||||||
|
OE_LAYER_GIT_URL=https://git.openembedded.org/meta-openembedded
|
||||||
|
OE_LAYER_PATCH_LIST="0001-openembedded-disable-meta-python.patch 0002-openembedded-disable-openembedded-layer-meta-phyton.patch"
|
||||||
|
|
||||||
|
OE_CORE_LAYER_NAME=openembedded-core
|
||||||
|
OE_CORE_LAYER_GIT_URL=https://github.com/openembedded/openembedded-core.git
|
||||||
|
|
||||||
|
TUXBOX_LAYER_NAME=meta-neutrino
|
||||||
|
TUXBOX_LAYER_GIT_URL=https://github.com/Tuxbox-Project
|
||||||
|
|
||||||
|
TUXBOX_BSP_LAYER_GIT_URL=$TUXBOX_LAYER_GIT_URL
|
||||||
|
|
||||||
|
AIRDIGITAL_LAYER_NAME=meta-airdigital
|
||||||
|
AIRDIGITAL_LAYER_GIT_URL=$TUXBOX_BSP_LAYER_GIT_URL/$AIRDIGITAL_LAYER_NAME
|
||||||
|
|
||||||
|
GFUTURES_LAYER_NAME=meta-gfutures
|
||||||
|
GFUTURES_LAYER_GIT_URL=$TUXBOX_BSP_LAYER_GIT_URL/$GFUTURES_LAYER_NAME
|
||||||
|
|
||||||
|
EDISION_LAYER_NAME=meta-edision
|
||||||
|
EDISION_LAYER_GIT_URL=$TUXBOX_LAYER_GIT_URL/$EDISION_LAYER_NAME
|
||||||
|
|
||||||
|
HISI_LAYER_NAME=meta-hisilicon #TODO: move into gfutures
|
||||||
|
HISI_LAYER_GIT_URL=$TUXBOX_LAYER_GIT_URL/$HISI_LAYER_NAME
|
||||||
|
|
||||||
|
CERYON_LAYER_NAME=meta-ceryon
|
||||||
|
CERYON_LAYER_GIT_URL=$TUXBOX_BSP_LAYER_GIT_URL/$CERYON_LAYER_NAME
|
||||||
|
|
||||||
PYTHON2_LAYER_NAME=meta-python2
|
PYTHON2_LAYER_NAME=meta-python2
|
||||||
PYTHON2_LAYER_GIT_URL=https://git.openembedded.org
|
PYTHON2_LAYER_GIT_URL=https://git.openembedded.org/$PYTHON2_LAYER_NAME
|
||||||
PYTHON2_LAYER_DO_UPDATE=1
|
PYTHON2_PATCH_LIST="0001-local_conf_outcomment_line_15.patch"
|
||||||
|
|
||||||
QT5_LAYER_NAME=meta-qt5
|
QT5_LAYER_NAME=meta-qt5
|
||||||
QT5_LAYER_GIT_URL=https://github.com/meta-qt5
|
QT5_LAYER_GIT_URL=https://github.com/meta-qt5/$QT5_LAYER_NAME
|
||||||
QT5_LAYER_DO_UPDATE=1
|
|
||||||
|
|
||||||
GIT_CLONE='git clone'
|
|
||||||
GIT_PULL='git pull -r'
|
|
||||||
GIT_STASH='git stash'
|
|
||||||
GIT_STASH_POP='git stash pop'
|
|
||||||
|
|
||||||
|
|
||||||
# set required branch
|
# set required branches
|
||||||
YOCTO_BRANCH_NAME=""
|
COMPATIBLE_BRANCH=gatesgarth
|
||||||
if [ "$IMAGE_VERSION" = "3.0" ]; then
|
YOCTO_BRANCH_HASH=bc71ec0
|
||||||
YOCTO_BRANCH_NAME=zeus
|
|
||||||
YOCTO_BRANCH_HASH=d88d62c
|
|
||||||
elif [ "$IMAGE_VERSION" = "3.1" ]; then
|
|
||||||
YOCTO_BRANCH_NAME=dunfell
|
|
||||||
YOCTO_BRANCH_HASH=2181825
|
|
||||||
elif [ "$IMAGE_VERSION" = "3.2" ]; then
|
|
||||||
YOCTO_BRANCH_NAME=gatesgarth
|
|
||||||
YOCTO_BRANCH_HASH=60c8482
|
|
||||||
fi
|
|
||||||
PYTHON2_BRANCH_HASH=27d2aeb
|
PYTHON2_BRANCH_HASH=27d2aeb
|
||||||
|
OE_BRANCH_HASH=f3f7a5f
|
||||||
|
|
||||||
# clone required branch from yocto
|
|
||||||
if test ! -d $BUILD_ROOT_DIR/.git; then
|
|
||||||
echo -e "\033[36;1mCLONE POKY:\033[0m clone branch $YOCTO_BRANCH_NAME from $YOCTO_GIT_URL into $BUILD_ROOT_DIR..."
|
|
||||||
do_exec "$GIT_CLONE -b $YOCTO_BRANCH_NAME $YOCTO_GIT_URL $POKY_NAME" ' ' 'show_output'
|
|
||||||
|
|
||||||
echo -e "set $POKY_NAME-repository to required yocto-release $IMAGE_VERSION at commit $YOCTO_BRANCH_HASH..."
|
# clone/update required branch from yocto
|
||||||
do_exec "git -C $BUILD_ROOT_DIR reset --hard $YOCTO_BRANCH_HASH"
|
clone_meta '' $COMPATIBLE_BRANCH $YOCTO_GIT_URL $YOCTO_BRANCH_HASH $BUILD_ROOT_DIR
|
||||||
|
# for compatibility with old path structure
|
||||||
|
# ln -sf $BUILD_ROOT_DIR $BASEPATH/$POKY-$IMAGE_VERSION
|
||||||
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
|
|
||||||
echo -e "create local branch $IMAGE_VERSION at commit $YOCTO_BRANCH_HASH..."
|
# clone required branch from openembedded
|
||||||
do_exec "git -C $BUILD_ROOT_DIR checkout $YOCTO_BRANCH_HASH -b $IMAGE_VERSION"
|
clone_meta '' $COMPATIBLE_BRANCH $OE_LAYER_GIT_URL $OE_BRANCH_HASH $BUILD_ROOT_DIR/$OE_LAYER_NAME "$OE_LAYER_PATCH_LIST"
|
||||||
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
|
clone_meta '' master $OE_CORE_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$OE_CORE_LAYER_NAME
|
||||||
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
|
|
||||||
echo -e "create local tag $IMAGE_VERSION..."
|
# clone required branch for meta-python2
|
||||||
do_exec "git -C $BUILD_ROOT_DIR tag $IMAGE_VERSION"
|
clone_meta '' $COMPATIBLE_BRANCH $PYTHON2_LAYER_GIT_URL $PYTHON2_BRANCH_HASH $BUILD_ROOT_DIR/$PYTHON2_LAYER_NAME "$PYTHON2_PATCH_LIST"
|
||||||
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
|
|
||||||
# if [ $YOCTO_LAYER_DO_UPDATE != 0 ]; then
|
# clone required branch for meta-qt5
|
||||||
# do_exec "git pull -C $BUILD_ROOT_DIR origin $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
clone_meta '' $COMPATIBLE_BRANCH $QT5_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$QT5_LAYER_NAME
|
||||||
# fi
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
echo -e "\033[36;1mdone ...\033[0m\n"
|
|
||||||
else
|
|
||||||
if [ $YOCTO_LAYER_DO_UPDATE != 0 ]; then
|
|
||||||
|
|
||||||
CURRENT_YOCTO_BRANCH=`git -C $BUILD_ROOT_DIR rev-parse --abbrev-ref HEAD`
|
# clone/update required branch from meta-neutrino
|
||||||
|
clone_meta '' $COMPATIBLE_BRANCH $TUXBOX_LAYER_GIT_URL/$TUXBOX_LAYER_NAME '' $BUILD_ROOT_DIR/$TUXBOX_LAYER_NAME
|
||||||
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
|
|
||||||
echo -e "\033[36;1mUPDATE poky:\033[0m\nupdate $CURRENT_YOCTO_BRANCH..."
|
|
||||||
|
|
||||||
echo -e "switch from $CURRENT_YOCTO_BRANCH to $IMAGE_VERSION..."
|
# gfutures
|
||||||
do_exec "git -C $BUILD_ROOT_DIR checkout $IMAGE_VERSION" ' ' 'show_output'
|
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_GFUTURES '") == true ]; then
|
||||||
|
# gfutures
|
||||||
echo -e "update $POKY_NAME from (branch $YOCTO_BRANCH_NAME) $YOCTO_GIT_URL ..."
|
clone_meta '' $COMPATIBLE_BRANCH $GFUTURES_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$GFUTURES_LAYER_NAME
|
||||||
do_exec "git pull -r -C $BUILD_ROOT_DIR origin $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
|
|
||||||
echo -e "switch back to $YOCTO_BRANCH_NAME ..."
|
|
||||||
do_exec "git -C $BUILD_ROOT_DIR checkout $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
do_exec "git pull -r -C $BUILD_ROOT_DIR origin $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
|
|
||||||
echo -e "switch back to $IMAGE_VERSION ..."
|
|
||||||
do_exec "git -C $BUILD_ROOT_DIR checkout $IMAGE_VERSION" ' ' 'show_output'
|
|
||||||
|
|
||||||
echo -e "\033[36;1mdone ...\033[0m\n"
|
|
||||||
else
|
|
||||||
YOCTO_BRANCH_HASH_CURRENT=`git -C $BUILD_ROOT_DIR rev-parse --verify HEAD | awk '{print substr($0, 0,7)}'`
|
|
||||||
HAS_CHANGES=0
|
|
||||||
if [[ "$YOCTO_BRANCH_HASH_CURRENT" != "$YOCTO_BRANCH_HASH" ]]; then
|
|
||||||
HAS_CHANGES=1
|
|
||||||
LOCAL_YOCTO_BRANCH=$IMAGE_VERSION.mod.$YOCTO_BRANCH_HASH_CURRENT
|
|
||||||
echo -e "\033[36;1mupdate yocto: found local changes, create branch $LOCAL_YOCTO_BRANCH\033[0m\n"
|
|
||||||
do_exec "git -C $BUILD_ROOT_DIR checkout $YOCTO_BRANCH_HASH_CURRENT -b $LOCAL_YOCTO_BRANCH"
|
|
||||||
echo -e "\033[36;1mswitch to required branch $YOCTO_BRANCH_NAME at $YOCTO_BRANCH_HASH\033[0m\n"
|
|
||||||
do_exec "git -C $BUILD_ROOT_DIR checkout $IMAGE_VERSION"
|
|
||||||
fi
|
|
||||||
if [ $HAS_CHANGES=0 ]; then
|
|
||||||
echo -e "\033[36;1mkeeping $YOCTO_BRANCH_NAME at $YOCTO_BRANCH_HASH\033[0m\n"
|
|
||||||
do_exec "git -C $BUILD_ROOT_DIR reset --hard $YOCTO_BRANCH_HASH"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
# airdigital
|
||||||
|
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_AIRDIGITAL '") == true ]; then
|
||||||
# clone or update required branch from gui meta layer
|
clone_meta '' $COMPATIBLE_BRANCH $AIRDIGITAL_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$AIRDIGITAL_LAYER_NAME
|
||||||
if test ! -d $BUILD_ROOT_DIR/$GUI_LAYER_NAME/.git; then
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
echo -e "\033[33;1mCLONE $GUI_LAYER_NAME:\033[0m\nclone $GUI_LAYER_NAME (branch $YOCTO_BRANCH_NAME) from $TUXBOX_LAYER_GIT_URL ..."
|
|
||||||
do_exec "cd $BUILD_ROOT_DIR"
|
|
||||||
do_exec "$GIT_CLONE -b $YOCTO_BRANCH_NAME $TUXBOX_LAYER_GIT_URL/$GUI_LAYER_NAME.git $GUI_LAYER_NAME" ' ' 'show_output'
|
|
||||||
echo -e "\033[33;1mdone ...\033[0m\n"
|
|
||||||
else
|
|
||||||
do_exec "cd $BUILD_ROOT_DIR/$GUI_LAYER_NAME"
|
|
||||||
CURRENT_GUI_LAYER_BRANCH=`git -C $BUILD_ROOT_DIR/$GUI_LAYER_NAME rev-parse --abbrev-ref HEAD`
|
|
||||||
echo -e "\033[33;1mUPDATE: update $GUI_LAYER_NAME $CURRENT_GUI_LAYER_BRANCH\033[0m"
|
|
||||||
do_exec "$GIT_STASH" 'no_exit'
|
|
||||||
|
|
||||||
if [ "$CURRENT_GUI_LAYER_BRANCH" != "$YOCTO_BRANCH_NAME" ]; then
|
|
||||||
echo -e "\033[37;1mCHECKOUT:\033[0m\nswitch from $CURRENT_GUI_LAYER_BRANCH to $YOCTO_BRANCH_NAME..."
|
|
||||||
do_exec "git checkout $YOCTO_BRANCH_NAME"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\033[37;1mUPDATE:\033[0m\nupdate $GUI_LAYER_NAME from (branch $YOCTO_BRANCH_NAME) $TUXBOX_LAYER_GIT_URL ..."
|
|
||||||
do_exec "$GIT_PULL origin $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
|
|
||||||
if [ "$CURRENT_GUI_LAYER_BRANCH" != "$YOCTO_BRANCH_NAME" ]; then
|
|
||||||
echo -e "\033[37;1mCHECKOUT:\033[0m\nswitch back to $CURRENT_GUI_LAYER_BRANCH ..."
|
|
||||||
do_exec "git checkout $CURRENT_GUI_LAYER_BRANCH"
|
|
||||||
echo -e "\033[37;1mREBASE:\033[0m\nrebase branch $YOCTO_BRANCH_NAME into $CURRENT_GUI_LAYER_BRANCH"
|
|
||||||
do_exec "git rebase $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
fi
|
|
||||||
|
|
||||||
do_exec "$GIT_STASH_POP" 'no_exit'
|
|
||||||
echo -e "\033[33;1mdone ...\033[0m\n"
|
|
||||||
fi
|
fi
|
||||||
|
# edision
|
||||||
|
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_EDISION '") == true ]; then
|
||||||
# clone or update required branch for python2 from https://git.openembedded.org/meta-python2
|
clone_meta '' $COMPATIBLE_BRANCH $EDISION_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$EDISION_LAYER_NAME
|
||||||
function clone_meta_python2 () {
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
META_MACHINE_LAYER=meta-$1
|
fi
|
||||||
|
# hisilicon #TODO: move into gfutures
|
||||||
if [ $PYTHON2_LAYER_DO_UPDATE == "1" ] && [ "$IMAGE_VERSION" != "3.0" ] && [ "$IMAGE_VERSION" != "3.1" ] && test -d $BUILD_ROOT_DIR/$META_MACHINE_LAYER/recipes-multimedia/kodi; then
|
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_HISI '") == true; then
|
||||||
|
clone_meta '' $COMPATIBLE_BRANCH $HISI_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$HISI_LAYER_NAME
|
||||||
$CURRENT_PYTHON_LAYER_BRANCH
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
|
fi
|
||||||
if test ! -d $BUILD_ROOT_DIR/$PYTHON2_LAYER_NAME/.git; then
|
# ceryon
|
||||||
echo -e "\033[35;1mCLONE $PYTHON2_LAYER_NAME:\033[0m\nclone $PYTHON2_LAYER_NAME (branch $YOCTO_BRANCH_NAME) from $PYTHON2_LAYER_GIT_URL ..."
|
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_CERYON '") == true ]; then
|
||||||
do_exec "cd $BUILD_ROOT_DIR"
|
clone_meta '' $COMPATIBLE_BRANCH $CERYON_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$CERYON_LAYER_NAME
|
||||||
do_exec "$GIT_CLONE -b $YOCTO_BRANCH_NAME $PYTHON2_LAYER_GIT_URL/$PYTHON2_LAYER_NAME $PYTHON2_LAYER_NAME" ' ' 'show_output'
|
echo -e "\033[32;1mOK ...\033[0m\n"
|
||||||
do_exec "git -C $BUILD_ROOT_DIR/$PYTHON2_LAYER_NAME checkout $PYTHON2_BRANCH_HASH -b $IMAGE_VERSION"
|
|
||||||
do_exec "git -C $BUILD_ROOT_DIR/$PYTHON2_LAYER_NAME am $FILES_DIR/0001-local_conf_outcomment_line_15.patch" ' ' 'show_output'
|
|
||||||
do_exec "$GIT_PULL origin $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
echo -e "\033[35;1mdone ...\033[0m\n"
|
|
||||||
else
|
|
||||||
do_exec "cd $BUILD_ROOT_DIR/$PYTHON2_LAYER_NAME"
|
|
||||||
CURRENT_PYTHON_LAYER_BRANCH=`git -C $BUILD_ROOT_DIR/$PYTHON2_LAYER_NAME rev-parse --abbrev-ref HEAD`
|
|
||||||
echo -e "\033[35;1mUPDATE: update $PYTHON2_LAYER_NAME $CURRENT_PYTHON_LAYER_BRANCH\033[0m"
|
|
||||||
do_exec "$GIT_STASH" 'no_exit'
|
|
||||||
|
|
||||||
if [ "$CURRENT_PYTHON_LAYER_BRANCH" != "$YOCTO_BRANCH_NAME" ]; then
|
|
||||||
echo -e "\033[35;1mCHECKOUT:\033[0m\nswitch from $CURRENT_PYTHON_LAYER_BRANCH to $YOCTO_BRANCH_NAME..."
|
|
||||||
do_exec "git checkout $YOCTO_BRANCH_NAME"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#echo -e "\033[35;1mUPDATE:\033[0m\nupdate $PYTHON2_LAYER_NAME from (branch $YOCTO_BRANCH_NAME) $PYTHON2_LAYER_GIT_URL ..."
|
|
||||||
do_exec "$GIT_PULL origin $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
|
|
||||||
if [ "$CURRENT_PYTHON_LAYER_BRANCH" != "$YOCTO_BRANCH_NAME" ]; then
|
|
||||||
echo -e "\033[35;1mCHECKOUT:\033[0m\nswitch back to $CURRENT_PYTHON_LAYER_BRANCH ..."
|
|
||||||
do_exec "git checkout $CURRENT_PYTHON_LAYER_BRANCH"
|
|
||||||
echo -e "\033[35;1mREBASE:\033[0m\nrebase branch $YOCTO_BRANCH_NAME into $CURRENT_PYTHON_LAYER_BRANCH"
|
|
||||||
do_exec "git rebase $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
fi
|
|
||||||
|
|
||||||
do_exec "$GIT_STASH_POP" 'no_exit'
|
|
||||||
echo -e "\033[35;1mdone ...\033[0m\n"
|
|
||||||
PYTHON2_LAYER_DO_UPDATE=0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# clone or update required branch for qt5
|
|
||||||
function clone_meta_qt5 () {
|
|
||||||
META_MACHINE_LAYER=meta-$1
|
|
||||||
|
|
||||||
if [ $QT5_LAYER_DO_UPDATE == "1" ] && [ "$IMAGE_VERSION" != "3.0" ] && [ "$IMAGE_VERSION" != "3.1" ] && test -d $BUILD_ROOT_DIR/$META_MACHINE_LAYER/recipes-multimedia/kodi; then
|
|
||||||
|
|
||||||
$CURRENT_QT_LAYER_BRANCH
|
|
||||||
|
|
||||||
if test ! -d $BUILD_ROOT_DIR/$QT5_LAYER_NAME/.git; then
|
|
||||||
echo -e "\033[35;1mCLONE $QT5_LAYER_NAME:\033[0m\nclone $QT5_LAYER_NAME (branch $YOCTO_BRANCH_NAME) from $QT5_LAYER_GIT_URL ..."
|
|
||||||
do_exec "cd $BUILD_ROOT_DIR"
|
|
||||||
do_exec "$GIT_CLONE -b $YOCTO_BRANCH_NAME $QT5_LAYER_GIT_URL/$QT5_LAYER_NAME $QT5_LAYER_NAME" ' ' 'show_output'
|
|
||||||
do_exec "git -C $BUILD_ROOT_DIR/$QT5_LAYER_NAME checkout $QT5_BRANCH_HASH -b $IMAGE_VERSION"
|
|
||||||
do_exec "$GIT_PULL origin $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
echo -e "\033[35;1mdone ...\033[0m\n"
|
|
||||||
else
|
|
||||||
do_exec "cd $BUILD_ROOT_DIR/$QT5_LAYER_NAME"
|
|
||||||
CURRENT_QT_LAYER_BRANCH=`git -C $BUILD_ROOT_DIR/$QT5_LAYER_NAME rev-parse --abbrev-ref HEAD`
|
|
||||||
echo -e "\033[35;1mUPDATE: update $QT5_LAYER_NAME $CURRENT_QT_LAYER_BRANCH\033[0m"
|
|
||||||
do_exec "$GIT_STASH" 'no_exit'
|
|
||||||
|
|
||||||
if [ "$CURRENT_QT_LAYER_BRANCH" != "$YOCTO_BRANCH_NAME" ]; then
|
|
||||||
echo -e "\033[35;1mCHECKOUT:\033[0m\nswitch from $CURRENT_QT_LAYER_BRANCH to $YOCTO_BRANCH_NAME..."
|
|
||||||
do_exec "git checkout $YOCTO_BRANCH_NAME"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#echo -e "\033[35;1mUPDATE:\033[0m\nupdate $QT5_LAYER_NAME from (branch $YOCTO_BRANCH_NAME) $QT5_LAYER_GIT_URL ..."
|
|
||||||
do_exec "$GIT_PULL origin $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
|
|
||||||
if [ "$CURRENT_QT_LAYER_BRANCH" != "$YOCTO_BRANCH_NAME" ]; then
|
|
||||||
echo -e "\033[35;1mCHECKOUT:\033[0m\nswitch back to $CURRENT_QT_LAYER_BRANCH ..."
|
|
||||||
do_exec "git checkout $CURRENT_QT_LAYER_BRANCH"
|
|
||||||
echo -e "\033[35;1mREBASE:\033[0m\nrebase branch $YOCTO_BRANCH_NAME into $CURRENT_QT_LAYER_BRANCH"
|
|
||||||
do_exec "git rebase $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
fi
|
|
||||||
|
|
||||||
do_exec "$GIT_STASH_POP" 'no_exit'
|
|
||||||
echo -e "\033[35;1mdone ...\033[0m\n"
|
|
||||||
QT5_LAYER_DO_UPDATE=0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_metaname () {
|
|
||||||
TMP_NAME=$1
|
|
||||||
|
|
||||||
if [ "$TMP_NAME" == "hd51" ]; then
|
|
||||||
META_NAME="hd51"
|
|
||||||
elif [ "$TMP_NAME" == "h7" ]; then
|
|
||||||
META_NAME="zgemma"
|
|
||||||
elif [ "$TMP_NAME" == "hd60" ] || [ "$TMP_NAME" == "hd61" ]; then
|
|
||||||
META_NAME="hisilicon"
|
|
||||||
elif [ "$TMP_NAME" == "osmio4k" ] || [ "$TMP_NAME" == "osmio4kplus" ]; then
|
|
||||||
META_NAME="edision"
|
|
||||||
else
|
|
||||||
META_NAME=$TMP_NAME
|
|
||||||
fi
|
|
||||||
echo "$META_NAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
# function for clone or update required branch(es) from machine meta layer
|
|
||||||
function clone_box_layer () {
|
|
||||||
NAME=`get_metaname $1`
|
|
||||||
|
|
||||||
if [ "$NAME" != "all" ]; then
|
|
||||||
if test ! -d $BUILD_ROOT_DIR/meta-$NAME/.git; then
|
|
||||||
echo -e "\033[34;1mCLONE: clone meta-$NAME (branch $YOCTO_BRANCH_NAME) from $TUXBOX_LAYER_GIT_URL ...\033[0m"
|
|
||||||
do_exec "cd $BUILD_ROOT_DIR"
|
|
||||||
do_exec "$GIT_CLONE -b $YOCTO_BRANCH_NAME $TUXBOX_LAYER_GIT_URL/meta-$NAME.git" ' ' 'show_output'
|
|
||||||
echo -e "\033[34;1mdone ...\033[0m\n"
|
|
||||||
|
|
||||||
if test ! -d $BUILD_ROOT_DIR/$PYTHON2_LAYER_NAME; then
|
|
||||||
clone_meta_python2 $NAME
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -d $BUILD_ROOT_DIR/$QT5_LAYER_NAME; then
|
|
||||||
clone_meta_qt5 $NAME
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
do_exec "cd $BUILD_ROOT_DIR/meta-$NAME"
|
|
||||||
do_exec "$GIT_STASH" 'no_exit'
|
|
||||||
|
|
||||||
CURRENT_MACHINE_LAYER_BRANCH=`git -C $BUILD_ROOT_DIR/meta-$NAME rev-parse --abbrev-ref HEAD`
|
|
||||||
if [ "$CURRENT_MACHINE_LAYER_BRANCH" != "$YOCTO_BRANCH_NAME" ]; then
|
|
||||||
echo -e "\033[37;1mCHECKOUT:\033[0m\nswitch from $CURRENT_MACHINE_LAYER_BRANCH to $YOCTO_BRANCH_NAME..."
|
|
||||||
do_exec "git checkout $YOCTO_BRANCH_NAME"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\033[34;1mUPDATE: update meta-$NAME (branch $YOCTO_BRANCH_NAME) from $TUXBOX_LAYER_GIT_URL ...\033[0m"
|
|
||||||
do_exec "$GIT_PULL origin $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
|
|
||||||
if [ "$CURRENT_MACHINE_LAYER_BRANCH" != "$YOCTO_BRANCH_NAME" ]; then
|
|
||||||
echo -e "\033[37;1mCHECKOUT:\033[0m\nswitch back to $CURRENT_MACHINE_LAYER_BRANCH ..."
|
|
||||||
do_exec "git checkout $CURRENT_MACHINE_LAYER_BRANCH"
|
|
||||||
echo -e "\033[37;1mREBASE:\033[0m\nrebase branch $YOCTO_BRANCH_NAME into $CURRENT_MACHINE_LAYER_BRANCH"
|
|
||||||
do_exec "git rebase $YOCTO_BRANCH_NAME" ' ' 'show_output'
|
|
||||||
fi
|
|
||||||
|
|
||||||
do_exec "$GIT_STASH_POP" 'no_exit'
|
|
||||||
echo -e "\033[34;1mdone ...\033[0m\n"
|
|
||||||
|
|
||||||
clone_meta_python2 $NAME
|
|
||||||
clone_meta_qt5 $NAME
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# clone or update meta layers
|
|
||||||
if [ "$MACHINE" == "all" ]; then
|
|
||||||
for M in $MACHINES ; do
|
|
||||||
clone_box_layer $M;
|
|
||||||
done
|
|
||||||
else
|
|
||||||
clone_box_layer $MACHINE;
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -380,127 +180,70 @@ fi
|
|||||||
if test ! -f $BASEPATH/local.conf.common.inc; then
|
if test ! -f $BASEPATH/local.conf.common.inc; then
|
||||||
echo -e "\033[37;1mCONFIG:\033[0m\tcreate $BASEPATH/local.conf.common.inc as include file for layer configuration ..."
|
echo -e "\033[37;1mCONFIG:\033[0m\tcreate $BASEPATH/local.conf.common.inc as include file for layer configuration ..."
|
||||||
do_exec "cp -v $BASEPATH/local.conf.common.inc.sample $BASEPATH/local.conf.common.inc"
|
do_exec "cp -v $BASEPATH/local.conf.common.inc.sample $BASEPATH/local.conf.common.inc"
|
||||||
else
|
|
||||||
echo -e "\033[37;1mNOTE:\t Local configuration not considered\033[0m"
|
|
||||||
echo -e "\t##########################################################################################"
|
|
||||||
echo -e "\t# $BASEPATH/local.conf.common.inc already exists. #"
|
|
||||||
echo -e "\t# Nothing was changed on this file for your configuration. #"
|
|
||||||
echo -e "\t# Possible changes at sample configuration will be ignored. #"
|
|
||||||
echo -e "\t# You should check local configuration and modify your configuration if required. #"
|
|
||||||
echo -e "\t# \033[37;1m$BASEPATH/local.conf.common.inc\033[0m #"
|
|
||||||
echo -e "\t##########################################################################################"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# function to create configuration for box types
|
|
||||||
function create_local_config () {
|
|
||||||
CLC_ARG1=$1
|
|
||||||
if [ "$CLC_ARG1" != "all" ]; then
|
|
||||||
BOX_BUILD_DIR=$BUILD_ROOT_DIR/$CLC_ARG1
|
|
||||||
|
|
||||||
# generate default config
|
|
||||||
if test ! -d $BOX_BUILD_DIR/conf; then
|
|
||||||
echo -e "\033[37;1m\tcreate directory for $CLC_ARG1 environment ...\033[0m"
|
|
||||||
do_exec "cd $BUILD_ROOT_DIR"
|
|
||||||
do_exec ". ./oe-init-build-env $CLC_ARG1"
|
|
||||||
do_exec "cd $BASEPATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# move config files into conf directory
|
|
||||||
if test -f $BASEPATH/local.conf.common.inc; then
|
|
||||||
if test ! -f $BOX_BUILD_DIR/conf/local.conf.$BACKUP_SUFFIX; then
|
|
||||||
echo -e "\tset base configuration for $CLC_ARG1 ... "
|
|
||||||
do_exec "mv -v $BOX_BUILD_DIR/conf/local.conf $BOX_BUILD_DIR/conf/local.conf.$BACKUP_SUFFIX"
|
|
||||||
echo 'MACHINE ?= "'$CLC_ARG1'"' > $BOX_BUILD_DIR/conf/local.conf
|
|
||||||
echo "include $BASEPATH/local.conf.common.inc" >> $BOX_BUILD_DIR/conf/local.conf
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo -e "\033[31;1mERROR:\033[0m:\ttemplate $BASEPATH/local.conf.common.inc not found..."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -f $BOX_BUILD_DIR/conf/bblayers.conf.$BACKUP_SUFFIX; then
|
|
||||||
echo -e "\033[37;1m\tset base bblayer configuration for $CLC_ARG1...\033[0m"
|
|
||||||
do_exec "cp -v $BOX_BUILD_DIR/conf/bblayers.conf $BOX_BUILD_DIR/conf/bblayers.conf.$BACKUP_SUFFIX"
|
|
||||||
META_MACHINE_LAYER=meta-`get_metaname $CLC_ARG1`
|
|
||||||
echo 'BBLAYERS += " \
|
|
||||||
'$BUILD_ROOT_DIR'/meta-neutrino \
|
|
||||||
'$BUILD_ROOT_DIR'/'$META_MACHINE_LAYER' \
|
|
||||||
"' >> $BOX_BUILD_DIR/conf/bblayers.conf
|
|
||||||
if test -d $BUILD_ROOT_DIR/$META_MACHINE_LAYER/recipes-multimedia/kodi; then
|
|
||||||
echo 'BBLAYERS += " \
|
|
||||||
'$BUILD_ROOT_DIR'/'$PYTHON2_LAYER_NAME' \
|
|
||||||
"' >> $BOX_BUILD_DIR/conf/bblayers.conf
|
|
||||||
fi
|
|
||||||
if test -d $BUILD_ROOT_DIR/$QT5_LAYER_NAME; then
|
|
||||||
echo 'BBLAYERS += " \
|
|
||||||
'$BUILD_ROOT_DIR'/'$QT5_LAYER_NAME' \
|
|
||||||
"' >> $BOX_BUILD_DIR/conf/bblayers.conf
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# function create local dist directory to prepare for web access
|
|
||||||
function create_dist_tree () {
|
|
||||||
PAR1=$1
|
|
||||||
if [ "$PAR1" != "all" ]; then
|
|
||||||
|
|
||||||
DIST_BASEDIR="$BASEPATH/dist/$IMAGE_VERSION"
|
|
||||||
DIST_LINK=$DIST_BASEDIR/$PAR1
|
|
||||||
DIST_LINK_IMAGES=$DIST_BASEDIR/$PAR1/images
|
|
||||||
DIST_LINK_IPK=$DIST_BASEDIR/$PAR1/ipk
|
|
||||||
DIST_LINK_LICENSE=$DIST_BASEDIR/$PAR1/licenses
|
|
||||||
|
|
||||||
if test ! -d "$DIST_LINK"; then
|
|
||||||
echo -e "\n\033[37;1mcreate directory:\033[0m $DIST_LINK"
|
|
||||||
do_exec "mkdir -p $DIST_LINK"
|
|
||||||
fi
|
|
||||||
|
|
||||||
DEPLOY_DIR=$BUILD_ROOT_DIR/$PAR1/tmp/deploy
|
|
||||||
DEPLOY_DIR_IMAGES=$DEPLOY_DIR/images/$PAR1
|
|
||||||
DEPLOY_DIR_IPK=$DEPLOY_DIR/ipk
|
|
||||||
DEPLOY_DIR_LICENSE=$DEPLOY_DIR/licenses
|
|
||||||
|
|
||||||
if test ! -L "$DIST_LINK_IMAGES"; then
|
|
||||||
echo -e "\033[37;1mcreate symlink:\033[0m $DIST_LINK_IMAGES"
|
|
||||||
do_exec "ln -sf $DEPLOY_DIR_IMAGES $DIST_LINK_IMAGES"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -L "$DIST_LINK_IPK"; then
|
|
||||||
echo -e "\033[37;1mcreate symlink:\033[0m $DIST_LINK_IPK"
|
|
||||||
do_exec "ln -sf $DEPLOY_DIR_IPK $DIST_LINK_IPK"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -L "$DIST_LINK_LICENSE"; then
|
|
||||||
echo -e "\033[37;1mcreate symlink:\033[0m $DIST_LINK_LICENSE"
|
|
||||||
do_exec "ln -sf $DEPLOY_DIR_LICENSE $DIST_LINK_LICENSE"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# create configuration for machine
|
# create configuration for machine
|
||||||
if [ "$MACHINE" == "all" ]; then
|
if [ "$MACHINE" == "all" ]; then
|
||||||
for M in $MACHINES ; do
|
for M in $MACHINES ; do
|
||||||
create_local_config $M;
|
create_local_config $M;
|
||||||
create_dist_tree $M;
|
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
create_local_config $MACHINE;
|
create_local_config $MACHINE;
|
||||||
create_dist_tree $MACHINE;
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
create_dist_tree;
|
||||||
|
|
||||||
|
echo -e "\033[37;1mNOTE:\033[0m"
|
||||||
|
|
||||||
# check and create distribution directory inside html directory for online update
|
# check and create distribution directory inside html directory for online update
|
||||||
if test ! -L /var/www/html/dist; then
|
if test ! -L /var/www/html/dist; then
|
||||||
echo -e "\033[37;1mNOTE:\t Online update usage.\033[0m"
|
echo -e "\033[37;1m\tLocal setup for package online update.\033[0m"
|
||||||
echo -e "\t##########################################################################################"
|
echo -e "\t############################################################################################"
|
||||||
echo -e "\t# /var/www/html/dist doesn't exists. #"
|
echo -e "\t/var/www/html/dist doesn't exists."
|
||||||
echo -e "\t# If you want to use online update, please configure your webserver and use dist content #"
|
echo -e "\tIf you want to use online update, please configure your webserver and use dist content"
|
||||||
echo -e "\t# Super user permissions are required to create symlink... #"
|
echo -e "\t"
|
||||||
echo -e "\t# An easy way is to create a symlink to dist directory: #"
|
echo -e "\tAn easy way is to create a symlink to dist directory:"
|
||||||
echo -e "\t# \033[37;1msudo ln -s $BASEPATH/dist /var/www/html/dist\033[0m #"
|
echo -e "\t"
|
||||||
echo -e "\t########################################################################################## "
|
echo -e "\t\t\033[37;1msudo ln -s $BASEPATH/dist /var/www/html/dist\033[0m"
|
||||||
fi
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
echo -e "\t"
|
||||||
|
echo -e "\033[37;1m\tLocal environment setup\033[0m"
|
||||||
|
echo -e "\t############################################################################################"
|
||||||
|
echo -e "\t$BASEPATH/local.conf.common.inc was created by the 1st call of $0 from"
|
||||||
|
echo -e "\t$BASEPATH/local.conf.common.inc.sample"
|
||||||
|
echo -e "\tIf this file already exists nothing was changed on this file for your configuration."
|
||||||
|
echo -e "\tYou should check $BASEPATH/local.conf.common.inc and modify this file if required."
|
||||||
|
echo -e "\t"
|
||||||
|
echo -e "\tUnlike here: Please check this files for modifications or upgrades:"
|
||||||
|
echo -e "\t"
|
||||||
|
echo -e "\t\t\033[37;1m$BUILD_ROOT/<machine>/bblayer.conf\033[0m"
|
||||||
|
echo -e "\t\t\033[37;1m$BUILD_ROOT/<machine>/local.conf\033[0m"
|
||||||
|
# echo -e "\t############################################################################################"
|
||||||
|
echo -e "\t"
|
||||||
|
echo -e "\033[37;1m\tStart build\033[0m"
|
||||||
|
echo -e "\t############################################################################################"
|
||||||
|
echo -e "\tNow you are ready to build your own images and packages."
|
||||||
|
echo -e "\tSelectable machines are:"
|
||||||
|
echo -e "\t"
|
||||||
|
echo -e "\t\t\033[37;1m$MACHINES\033[0m"
|
||||||
|
echo -e "\t"
|
||||||
|
echo -e "\t Select your favorite machine (or identical) and the next steps are:\033[37;1m"
|
||||||
|
echo -e "\t"
|
||||||
|
echo -e "\t\tcd $BUILD_ROOT_DIR"
|
||||||
|
echo -e "\t\t. ./oe-init-build-env build/<machine>"
|
||||||
|
echo -e "\t\tbitbake neutrino-image"
|
||||||
|
echo -e "\t\033[0m"
|
||||||
|
|
||||||
|
echo -e "\t"
|
||||||
|
echo -e "\033[37;1m\tUpdating meta-layers\033[0m"
|
||||||
|
echo -e "\t############################################################################################"
|
||||||
|
echo -e "\tExecute init script again."
|
||||||
|
echo -e "\t"
|
||||||
|
echo -e "\tFor more informations and next steps take a look at the README.md!"
|
||||||
|
echo -e "\t"
|
||||||
echo -e "\033[32;1mDONE!\033[0m"
|
echo -e "\033[32;1mDONE!\033[0m"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
@@ -1,309 +1,434 @@
|
|||||||
### Host variables
|
### See: https://docs.yoctoproject.org/ref-manual/variables.html?highlight=distro_codename#term-CONF_VERSION
|
||||||
#
|
CONF_VERSION = "1"
|
||||||
# Determine how many tasks bitbake should run in parallel:
|
|
||||||
BB_NUMBER_THREADS ?= "8"
|
### Host options
|
||||||
#
|
# Determine how many tasks bitbake should run in parallel:
|
||||||
# Determine how many processes make should run in parallel when running compile tasks:
|
# NOTE: The build system already calculates the optimized values for your host system.
|
||||||
PARALLEL_MAKE ?= "-j 4"
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html?highlight=distro_codename#term-BB_NUMBER_THREADS
|
||||||
# Note: For your decision you can get information about core and threads at your machine with this command:
|
#BB_NUMBER_THREADS = "16"
|
||||||
# ~ $ lscpu | grep -E '^Thread|^CPU\('
|
# Determine how many processes make should run in parallel when running compile tasks.
|
||||||
|
# NOTE: For your decision you can get information about core and threads at your machine with this command:
|
||||||
DISTRO = "tuxbox"
|
# ~ $ lscpu | grep -E '^Thread|^CPU\('
|
||||||
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html?highlight=distro_codename#term-PARALLEL_MAKE
|
||||||
|
#PARALLEL_MAKE = "-j 8"
|
||||||
### System variables
|
|
||||||
#
|
### Specifies the time (in seconds) after which to unload the BitBake server due to inactivity.
|
||||||
DL_DIR = "${COREBASE}/yocto-downloads"
|
# Set BB_SERVER_TIMEOUT to determine how long the BitBake server stays resident between invocations.
|
||||||
#DL_DIR = "${HOME}/Archive"
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html?highlight=distro_codename#term-BB_SERVER_TIMEOUT
|
||||||
|
#BB_SERVER_TIMEOUT = "20"
|
||||||
### sdk options
|
|
||||||
#
|
### SDK options
|
||||||
#SDKMACHINE ?= "i686"
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html?highlight=distro_codename#term-SDKMACHINE
|
||||||
SDKMACHINE = "x86_64"
|
#SDKMACHINE = "i686"
|
||||||
#SDKIMAGE_FEATURES="dev-pkgs dbg-pkgs src-pkgs "
|
SDKMACHINE = "x86_64"
|
||||||
|
#SDKIMAGE_FEATURES="dev-pkgs dbg-pkgs src-pkgs "
|
||||||
|
|
||||||
### time zone
|
### time zone
|
||||||
#
|
DEFAULT_TIMEZONE = "Europe/Berlin"
|
||||||
DEFAULT_TIMEZONE = "Europe/Berlin"
|
|
||||||
|
### Disk Space Monitoring during the build. Default disabled, but it's a good Idea to enable.
|
||||||
|
# see: https://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-BB_DISKMON_DIRS
|
||||||
### base build and source directory
|
BB_DISKMON_DIRS = "\
|
||||||
#
|
STOPTASKS,${TMPDIR},1G,100K \
|
||||||
YOCTO_BASEDIR = "${COREBASE}"
|
STOPTASKS,${DL_DIR},1G,100K \
|
||||||
|
STOPTASKS,${SSTATE_DIR},500M,100K \
|
||||||
|
ABORT,${TMPDIR},100M,1K \
|
||||||
### Disk Space Monitoring during the build
|
ABORT,${DL_DIR},100M,1K \
|
||||||
#
|
ABORT,${SSTATE_DIR},100M,1K \
|
||||||
BB_DISKMON_DIRS = "\
|
"
|
||||||
STOPTASKS,${TMPDIR},1G,100K \
|
|
||||||
STOPTASKS,${DL_DIR},1G,100K \
|
### Hash Equivalence
|
||||||
STOPTASKS,${SSTATE_DIR},1G,100K \
|
# Enable support for automatically running a local hash equivalence server and
|
||||||
ABORT,${TMPDIR},100M,1K \
|
# instruct bitbake to use a hash equivalence aware signature generator. Hash
|
||||||
ABORT,${DL_DIR},100M,1K \
|
# equivalence improves reuse of sstate by detecting when a given sstate
|
||||||
ABORT,${SSTATE_DIR},100M,1K"
|
# artifact can be reused as equivalent, even if the current task hash doesn't
|
||||||
|
# match the one that generated the artifact.
|
||||||
|
#
|
||||||
### Hash Equivalence
|
# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format+#
|
||||||
#
|
#
|
||||||
# Enable support for automatically running a local hash equivalence server and
|
BB_HASHSERVE = "auto"
|
||||||
# instruct bitbake to use a hash equivalence aware signature generator. Hash
|
BB_SIGNATURE_HANDLER = "OEEquivHash"
|
||||||
# equivalence improves reuse of sstate by detecting when a given sstate
|
#
|
||||||
# artifact can be reused as equivalent, even if the current task hash doesn't
|
# https://docs.yoctoproject.org/ref-manual/variables.html#term-BB_DANGLINGAPPENDS_WARNONLY
|
||||||
# match the one that generated the artifact.
|
BB_DANGLINGAPPENDS_WARNONLY = "1"
|
||||||
#
|
|
||||||
# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format+#
|
### Qemu configuration
|
||||||
#
|
PACKAGECONFIG_pn-qemu-native = "sdl"
|
||||||
BB_HASHSERVE = "auto"
|
|
||||||
BB_SIGNATURE_HANDLER = "OEEquivHash"
|
### Save disk space during build process.
|
||||||
|
# With rm_work enabled, this variable specifies that work directories should not be removed after build process.
|
||||||
BB_DANGLINGAPPENDS_WARNONLY = "1"
|
# If this variable is activated, the memory requirement is significantly reduced.
|
||||||
|
# Defined exceptions are listed within variable RM_WORK_EXCLUDE.
|
||||||
### Qemu configuration
|
# Comment out this entry, if you want to keep all built content within work directories.
|
||||||
#
|
# See: https://docs.yoctoproject.org/ref-manual/classes.html#ref-classes-rm-work
|
||||||
PACKAGECONFIG_pn-qemu-native = "sdl"
|
INHERIT += "rm_work"
|
||||||
|
# These targets are exluded from rm_work.
|
||||||
CONF_VERSION = "1"
|
RM_WORK_EXCLUDE += "neutrino-image neutrino-webif neutrino-logos neutrino-feed-config openssl"
|
||||||
|
|
||||||
|
### Source download storage location (read/write)
|
||||||
### Image settings
|
# It's recommended outsourcing the download archive.
|
||||||
# Image size:
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html?highlight=sdkimage_features#term-DL_DIR
|
||||||
# possible are "small" or "normal" (normal means the same like empty string)
|
#DL_DIR ?= "${COREBASE}/yocto-downloads"
|
||||||
#
|
DL_DIR = "${HOME}/Archive"
|
||||||
#IMAGESIZE = "normal"
|
#WARN_QA = "fetch"
|
||||||
#IMAGESIZE = "small"
|
|
||||||
#
|
### Base directory of the OpenEmbedded build system used by build output and intermediate files (other than the shared state cache).
|
||||||
# Which neutrino source will be used:
|
# By default, the TMPDIR variable points to tmp within the build directory.
|
||||||
# Choose neutrino source. Possible values are "tuxbox", "tango" or "ni"
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html?highlight=sdkimage_features#term-TMPDIR
|
||||||
# Note: Successful build of foreign neutrino source is not guaranteed.
|
#TMPDIR = "${TOPDIR}/tmp"
|
||||||
#
|
|
||||||
FLAVOUR = "tuxbox"
|
### base build and source directory
|
||||||
#
|
YOCTO_BASEDIR = "${COREBASE}"
|
||||||
# Name of the image, default target name "neutrino-image"
|
|
||||||
#IMAGE_BASENAME = "neutrino-image"
|
### Some targets are using ccache. Here you can set the path for ccache store. Default it is located wthin the TMPDIR,
|
||||||
IMAGE_BASENAME = "${SDK_NAME}"
|
# but it's recommended to set outside of the buildsystem into a shared directory
|
||||||
#
|
# NOTE: ccache is not recommended for global usage by Yocto, but we have enabled this class only for some few recipes (eg. samba, neutrino).
|
||||||
# Image version tags:
|
# According to current knowledge, there are no bad side effects for these recipes. On the contrary,
|
||||||
# Allow usage of customized version tag within image file name. Default = "1" means: not allowed
|
# this has proven to be helpful for these recipes.
|
||||||
# For default result: neutrino-image-hd51-20200926170603_ofgwrite.zip
|
# See: https://docs.yoctoproject.org/ref-manual/classes.html?highlight=ccache#ccache-bbclass
|
||||||
INHIBIT_EXTENDED_IMAGE_VERSION = "1"
|
#CCACHE_TOP_DIR = "${TMPDIR}/ccache"
|
||||||
#
|
CCACHE_TOP_DIR = "${HOME}/.ccache"
|
||||||
# For customized results:
|
|
||||||
#INHIBIT_EXTENDED_IMAGE_VERSION = "0"
|
### Where the OpenEmbedded build system place images, packages, SDKs, and other output files that are ready
|
||||||
# If INHIBIT_EXTENDED_IMAGE_VERSION = 0 then you can use the following options to create useful version labels for image files.
|
# to be used outside of the build system.
|
||||||
#
|
# See also: https://docs.yoctoproject.org/ref-manual/variables.html#term-DEPLOY_DIR
|
||||||
# Modify ${DISTRO_VERSION_NUMBER} for extended or custom version tag with what ever you want. This will be append a tag to the output file names, keep empty for nothing.
|
# By default, this directory resides within the Build Directory as ${TMPDIR}/deploy.
|
||||||
# sample result, without any effect: neutrino-image_hd51-20200926170603_usb.zip
|
# NOTE: Change this path only, if it is really needed for by your requirement!
|
||||||
#DISTRO_CUSTOM_VERSION = ""
|
#DEPLOY_DIR = "${TMPDIR}/deploy"
|
||||||
#
|
# Where to fo find the generated images.
|
||||||
# sample result: neutrino-image_hd51-20200926170603_v2020.39_usb.zip
|
#DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images"
|
||||||
#DISTRO_CUSTOM_VERSION = "2020.39"
|
# Where to fo find the generated packages. Only ipk's are supported by Neutrino package manager.
|
||||||
#
|
#DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
|
||||||
# sample result with auto increment: neutrino-image_hd51-20200926170603_v20.0_usb.zip
|
|
||||||
# Result for next build will be: neutrino-image_hd51-20200926170603_v20.1_usb.zip
|
### Directory for the shared state cache. By default, the SSTATE_DIR variable points to sstate-cache within the build directory as ${TOPDIR}/sstate-cache,
|
||||||
#DISTRO_CUSTOM_VERSION = "${IMAGE_YEARLY_TAG}.${IMAGE_BUILD_INCREMENT}"
|
# but it's a good idea to place it into a shared directory, so that this folder is always available in case the build folder should be deleted anyway or
|
||||||
#
|
# you want to use sstate cache for other builds in future. It goes without saying that there is sufficient memory space available.
|
||||||
# For user defined build increment you can generate manually (or how ever you want) a local increment file which cantains
|
# NOTE: This directory is a very precious. Don't delete it lightly.
|
||||||
# at the first line an increment number, other lines will be ignored.
|
#SSTATE_DIR = "${TOPDIR}/sstate-cache"
|
||||||
# Sample result with local increment number '99' at the 1st line inside LOCAL_BUILD_INCREMENT_FILE: neutrino-image_hd51-20200926170603_v20.99_usb.zip
|
SSTATE_DIR = "${HOME}/sstate-cache/${DISTRO_VERSION}"
|
||||||
#LOCAL_BUILD_INCREMENT_FILE = "${HOME}/build/image_build_increment"
|
|
||||||
|
### Tipp: use sstate mirrors
|
||||||
|
# Speed up your complete new package build or after deleted tmp dir or sstate-cache and guard against fetcher failures.
|
||||||
### default image root password
|
# Official mirrors to find here: http://sstate.yoctoproject.org/
|
||||||
# set initial password for user root. Keep empty for root:
|
# Ensure you have a fast internet. After 1st build you can disable this
|
||||||
#
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html?highlight=sdkimage_features#term-SSTATE_MIRRORS
|
||||||
ROOTPW = ""
|
#SSTATE_MIRRORS += "\
|
||||||
|
# file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \
|
||||||
|
# file://.* http://sstate.yoctoproject.org/2.7.3/PATH;downloadfilename=PATH \n \
|
||||||
### Choose which plugins should be installed
|
# file://.* http://sstate.yoctoproject.org/3.0.3/PATH;downloadfilename=PATH \n \
|
||||||
#
|
# file://.* http://sstate.yoctoproject.org/3.1/PATH;downloadfilename=PATH \n \
|
||||||
PLUGIN_INSTALL += "msgbox tuxcom shellexec input tuxwetter"
|
# file://.* http://sstate.yoctoproject.org/3.1.1/PATH;downloadfilename=PATH \n \
|
||||||
|
# file://.* http://sstate.yoctoproject.org/3.1.2/PATH;downloadfilename=PATH \n \
|
||||||
|
# file://.* http://sstate.yoctoproject.org/3.2/PATH;downloadfilename=PATH \n \
|
||||||
### Add Image Maintainer here
|
# file://.* http://sstate.yoctoproject.org/3.2.4/PATH;downloadfilename=PATH \n \
|
||||||
#
|
# "
|
||||||
CREATOR = "${USER}"
|
#SSTATE_MIRRORS += "\
|
||||||
KBUILD_BUILD_USER = "${CREATOR}"
|
# file://.* http://sstate.yoctoproject.org/${DISTRO_VERSION}/PATH;downloadfilename=PATH \n \
|
||||||
KBUILD_BUILD_HOST = "blue"
|
#"
|
||||||
|
# This is our own stock of sstate cache related of last tuxbox builds.
|
||||||
|
SSTATE_MIRRORS += "\
|
||||||
### git configuration ... needed for etckeeper
|
file://.* https://n4k.sourceforge.io/sstate-cache/${DISTRO_VERSION}/sstate-cache/PATH;downloadfilename=PATH \n \
|
||||||
#
|
"
|
||||||
GIT_USER = "root"
|
SSTATE_MIRRORS += "\
|
||||||
MAIL = "root@tuxbox-${MACHINE}"
|
file://.* https://n4k.sourceforge.io/sstate-cache/devel/sstate-cache/PATH;downloadfilename=PATH \n \
|
||||||
|
"
|
||||||
|
|
||||||
### dev keys for neutrino gui
|
# If you are using the TuxboxBuilder VM and it's running, you can use its sstate cache related of last builds.
|
||||||
# NOTE: Here you see empty entries! NOT WORKING!
|
# NOTE: www server of Tuxbox-Builder VM must be enabled and configured so that it can be reached.
|
||||||
#
|
# If required, replace the server url with your own TuxboxBuilder server url
|
||||||
# You can also include a file eg. named "local.conf.devkeys.inc"
|
#SSTATE_MIRRORS += "\
|
||||||
# and add these lines into your included file:
|
# file://.* http://tuxbox-builder/sstate-cache/PATH;downloadfilename=PATH \n \
|
||||||
# include /<path>/<to>/local.conf.devkeys.inc
|
#"
|
||||||
YT_DEV_KEY = ""
|
|
||||||
TMDB_DEV_KEY = ""
|
# If you want to use any local sstate caches, you can add your own local directory.
|
||||||
SHOUTCAST_DEV_KEY = ""
|
# You should ensure directories are exist.
|
||||||
OMDB_API_KEY = ""
|
# These are samples for usage your own local sstate mirror (read only)
|
||||||
WEATHER_DEV_KEY = ""
|
# SSTATE_MIRRORS += "\
|
||||||
|
# file://.* file:///${HOME}/sstate-cache/PATH;downloadfilename=PATH \n \
|
||||||
|
# "
|
||||||
### extra build config options for neutrino build
|
# SSTATE_MIRRORS += "\
|
||||||
# e.g: to enable the neutrino test menu
|
# file://.* file:///${HOME}/sstate-cache/3.2/PATH;downloadfilename=PATH \n \
|
||||||
#EXTRA_OECONF_append_pn-neutrino-mp = " \
|
# "
|
||||||
# --enable-testing \
|
# SSTATE_MIRRORS += "\
|
||||||
#"
|
# file://.* file:///${HOME}/sstate-cache/3.2.4/PATH;downloadfilename=PATH \n \
|
||||||
#EXTRA_OECONF_append_pn-gdb = "--with-system-gdbinit=/etc/gdbinit"
|
# "
|
||||||
|
|
||||||
### experimental kodi, qtwebflix
|
### Image settings
|
||||||
#DEPENDS_pn-neutrino-image += "kodi qtwebflix"
|
# Image size:
|
||||||
|
# possible are "small" or "normal" (normal means the same like empty string)
|
||||||
|
IMAGESIZE = "normal"
|
||||||
### package feed configuration
|
#IMAGESIZE = "small"
|
||||||
#
|
|
||||||
PACKAGE_CLASSES ?= "package_ipk"
|
### Set DISTRO
|
||||||
#
|
# NOTE: don't remove, it's required, but you can set an own name
|
||||||
### Update feeds
|
DISTRO = "tuxbox"
|
||||||
# Web server from which packages and images are updated. Points as default to this host
|
|
||||||
# URL-template (only local in this config file)
|
### Which neutrino and libstb-hal sources will be used. Possible values are "tuxbox", "tango" or "ni"
|
||||||
# for usage of these url's you should make a symlink as super user to the image and package directories
|
# NOTE:
|
||||||
#
|
# This option is only to be understood as a relic from the early days of this meta layer
|
||||||
#UPDATE_SERVER_URL = "http://${KBUILD_BUILD_HOST}"
|
# and is therefore not necessarily maintained anymore. There is no guarantee that the build process
|
||||||
#UPDATE_SERVER_URL = "http://192.168.1.202"
|
# for foreign sources will be successful.
|
||||||
#UPDATE_SERVER_URL = "http://localhost"
|
# The more effective method would be to transfer the Neutrino and
|
||||||
#UPDATE_SERVER_URL = "file:///var/www/html"
|
# libstb-hal sources together into the workspace and use Git's functionality to integrate
|
||||||
UPDATE_SERVER_URL = "https://update.tuxbox-neutrino.org"
|
# third-party repositories. So you are not be limited to few selected sources and can also use
|
||||||
|
# their branches and adapt the build process accordingly.
|
||||||
### Package manager configuration
|
# Therefore, it must be expected that FLAVOUR option will soon be completely removed.
|
||||||
#
|
# See: https://docs.yoctoproject.org/current/ref-manual/devtool-reference.html#modifying-an-existing-recipe
|
||||||
#IPK_FEED_SERVER = "file:///media/sda1/service/ipk"
|
# and: https://docs.yoctoproject.org/current/ref-manual/devtool-reference.html
|
||||||
# local feed if Tuxbox-Builder VM is in use
|
#FLAVOUR = "tuxbox"
|
||||||
DISTRO_FEED_VERSION = "${DISTRO_VERSION_NUMBER}"
|
|
||||||
#DISTRO_FEED_VERSION = "3.2"
|
### Image filename arranging
|
||||||
IPK_FEED_SERVER = "${UPDATE_SERVER_URL}/dist/${DISTRO_FEED_VERSION}/${MACHINE}/ipk"
|
# set a distro name if required
|
||||||
|
#DISTRO_NAME = "${DISTRO}"
|
||||||
|
|
||||||
### Image update configuration
|
### General image name
|
||||||
# IMAGE_LOCATION = "file:////media/sda1/service/image/flashimage.img"
|
#IMAGE_BASENAME = "${DISTRO_NAME}"
|
||||||
IMAGE_LOCATION = "${UPDATE_SERVER_URL}/dist/${DISTRO_FEED_VERSION}/${MACHINE}/images"
|
IMAGE_BASENAME = "my-image"
|
||||||
|
|
||||||
# RELEASE_TEXT_LOCATION = "file:///media/sda1/service/image/imageversion"
|
### This variable controls the emission of warnings
|
||||||
RELEASE_TEXT_LOCATION_HOST = "${DEPLOY_DIR_IMAGE}/beta.txt"
|
# when GITPKGVTAG is used but no Git tags are found in the repository.
|
||||||
RELEASE_TEXT_LOCATION = "${UPDATE_SERVER_URL}/dist/${DISTRO_FEED_VERSION}/${MACHINE}/images/beta.txt"
|
# By default, it is set to "0", which means warnings are enabled.
|
||||||
#
|
# Set this variable to "1" to suppress these warnings.
|
||||||
#
|
#GITPKGVTAG_NO_WARN_ON_NO_TAG = "1"
|
||||||
# Image release state within release text, default = "0" (release), "1" (beta), 2 " (nightly)
|
# Use this for a specific recipe:
|
||||||
# This will be set as suffix within image version file in entry imagedescription
|
#GITPKGVTAG_NO_WARN_ON_NO_TAG:pn-myrecipe = "1"
|
||||||
#RELEASE_STATE = "0"
|
|
||||||
RELEASE_STATE = "1"
|
### Release distro type string
|
||||||
|
# Possible types as plain text are "beta", "release", "nightly", all others means what ever you want
|
||||||
|
DISTRO_TYPE = "beta"
|
||||||
### Some additional lines for /etc/os-release and .version contents
|
#DISTRO_TYPE = "release"
|
||||||
#
|
#DISTRO_TYPE = "nightly"
|
||||||
OS_RELEASE_FIELDS_append = " HOME_URL SUPPORT_URL BUG_REPORT_URL BUILD_ID"
|
# ...or what ever you want, e.g."
|
||||||
HOME_URL = "https://github.com/tuxbox-neutrino"
|
#DISTRO_TYPE = "private"
|
||||||
SUPPORT_URL = "https://wiki.tuxbox-neutrino.org"
|
|
||||||
BUG_REPORT_URL = "https://forum.tuxbox-neutrino.org"
|
### Distro codename
|
||||||
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html?highlight=distro_codename#term-DISTRO_CODENAME
|
||||||
### download mirrors
|
#DISTRO_CODENAME = ""
|
||||||
#
|
|
||||||
# PREMIRRORS_prepend = "\
|
### Distro version: required for version string within the .version file and defined image version
|
||||||
# https://.*/.* https://archiv.tuxbox-neutrino.org/ \n \
|
#DISTRO_VERSION_NUMBER_MAJOR = "3"
|
||||||
# git://.*/.* http://www.yoctoproject.org/sources/ \n \
|
#DISTRO_VERSION_NUMBER_MINOR = "2"
|
||||||
# ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
|
#DISTRO_VERSION_NUMBER_MICRO = "4"
|
||||||
# http://.*/.* http://www.yoctoproject.org/sources/ \n \
|
#DISTRO_VERSION_NUMBER_CYCLE = "${DISTRO_VERSION_NUMBER_MAJOR}${DISTRO_VERSION_NUMBER_MINOR}${DISTRO_VERSION_NUMBER_MICRO}"
|
||||||
# https://.*/.* http://www.yoctoproject.org/sources/ \n \
|
#DISTRO_VERSION = "${DISTRO_VERSION_NUMBER_MAJOR}.${DISTRO_VERSION_NUMBER_MINOR}.${DISTRO_VERSION_NUMBER_MICRO}"
|
||||||
# "
|
|
||||||
|
### Image name suffixes:
|
||||||
#see: https://wiki.yoctoproject.org/wiki/How_do_I#Q:_How_do_I_create_my_own_source_download_mirror_.3F
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html#term-IMAGE_NAME
|
||||||
#
|
#IMAGE_VERSION_SUFFIX="-${DATETIME}"
|
||||||
SOURCE_MIRROR_URL = "https://archiv.tuxbox-neutrino.org"
|
### proposed samples:
|
||||||
INHERIT += "own-mirrors"
|
#IMAGE_VERSION_SUFFIX="-${DISTRO_TYPE}"
|
||||||
BB_GENERATE_MIRROR_TARBALLS = "1"
|
#IMAGE_VERSION_SUFFIX="-${DATETIME}-${DISTRO_TYPE}"
|
||||||
#BB_NO_NETWORK = "1"
|
#IMAGE_VERSION_SUFFIX="-${PR}"
|
||||||
|
#IMAGE_VERSION_SUFFIX="-${PR}-${DISTRO_TYPE}"
|
||||||
PREMIRRORS_prepend = "\
|
### Usage of ${DATE} is possible but not recommended, makes only sense for really once daily build.
|
||||||
file://.*/.* file://${HOME}/Downloads/* \n"
|
#IMAGE_VERSION_SUFFIX="-${PR}.${DATE}"
|
||||||
|
#IMAGE_VERSION_SUFFIX="-${PR}.${DATE}-${DISTRO_TYPE}"
|
||||||
### Tip: use sstate mirrors
|
### For usage of ${META_VERSION}, uncomment the inherit line and the IMAGE_VERSION_SUFFIX line, to set the current git version of meta layer
|
||||||
#
|
# You can define an other meta-layer with variable META_NAME within the COREBASE directory.
|
||||||
# Speed up your complete new package build or after deleted tmp dir or sstate-cache and guard against fetcher failures.
|
#META_NAME = "meta-neutrino"
|
||||||
# Official mirrors to find here: http://sstate.yoctoproject.org/
|
#inherit metaversion
|
||||||
# Ensure you have a fast internet. After 1st build you can disable this
|
#IMAGE_VERSION_SUFFIX=".${META_VERSION}"
|
||||||
# SSTATE_MIRRORS += "\
|
|
||||||
# file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \
|
### Set image name
|
||||||
# file://.* http://sstate.yoctoproject.org/2.7.3/PATH;downloadfilename=PATH \n \
|
# The name of the output image files minus the extension. This variable is derived using the IMAGE_BASENAME, MACHINE, and IMAGE_VERSION_SUFFIX variables:
|
||||||
# file://.* http://sstate.yoctoproject.org/3.0.3/PATH;downloadfilename=PATH \n \
|
# Default and origin by yocto its set to: IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
|
||||||
# file://.* http://sstate.yoctoproject.org/3.1/PATH;downloadfilename=PATH \n \
|
# We are using this as default image name:
|
||||||
# file://.* http://sstate.yoctoproject.org/3.1.1/PATH;downloadfilename=PATH \n \
|
#IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE_BRAND}-${MACHINE_NAME}-${DISTRO_VERSION}${IMAGE_VERSION_SUFFIX}"
|
||||||
# file://.* http://sstate.yoctoproject.org/3.1.2/PATH;downloadfilename=PATH \n \
|
|
||||||
# file://.* http://sstate.yoctoproject.org/3.2/PATH;downloadfilename=PATH \n \
|
### Update server configuration for update feeds and update server configuration
|
||||||
# "
|
# Web server from which packages and images are updated. Points as default to the www directory of the host
|
||||||
# This is our own stock of sstate cache related of last tuxbox builds.
|
# URL-template (only local in this config file)
|
||||||
SSTATE_MIRRORS = "\
|
# for usage of these url's you should make a symlink as super user to the image and package directories
|
||||||
file://.* https://sstate.tuxbox-upload.de/all/sstate-cache/PATH;downloadfilename=PATH \n \
|
# where do find the buildsystem the distro type file (beta.txt, release.txt ...), this file contains list of image urls for download
|
||||||
"
|
#RELEASE_TEXT_LOCATION_FILE = "${DEPLOY_DIR_IMAGE}/${DISTRO_TYPE}.txt"
|
||||||
|
|
||||||
|
### Server URL which contains update and packages.
|
||||||
### masked recipes
|
# Web server must be running and html content must point to the toplevel directory which contains the deployed images
|
||||||
# This will ignore recipes to build.
|
# NOTE: @hostname@ is only a placeholder and will be replaced with current hostname of your build host automatically. @hostname@ could be the current host IP too.
|
||||||
# NOTE: Some masked targets with related depends could break the build.
|
# or any other domain.tld. If required, replace @hostname@ with the host IP or Domain.
|
||||||
# BBMASK += "/meta-neutrino/recipes-qt/qt5"
|
#UPDATE_SERVER_URL = "http://@hostname@"
|
||||||
|
|
||||||
### Build packages but do not install packages into root filesystem/image
|
## URL to the dist directory, must contain the content of the deployed images and packages
|
||||||
# https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#var-EXTRA_IMAGEDEPENDS
|
#DIST_URL = "${UPDATE_SERVER_URL}/dist"
|
||||||
EXTRA_IMAGEDEPENDS += " samba "
|
|
||||||
|
## URL to the images, must contain the content of the image dir and its a sub dir to specific machine build and image dir which contains machine images
|
||||||
# These entries replace default installed entries which are contained in ./meta-neutrino/recipes-images/images/neutrino-image-base.inc.
|
#IMAGE_LOCATION_URL = "${DIST_URL}/${DISTRO_VERSION}/${MACHINE}/images/${MACHINE}"
|
||||||
# You can add more entries with variable IMAGE_INSTALL_append see below...
|
|
||||||
#
|
## URL to package feed
|
||||||
# IMAGE_INSTALL += " \
|
#IPK_FEED_SERVER ?= "${DIST_URL}/${DISTRO_VERSION}/${MACHINE}/ipk"
|
||||||
# vsftpd \
|
|
||||||
# "
|
### Package type configuration
|
||||||
# IMAGE_INSTALL = " \
|
# See: https://docs.yoctoproject.org/ref-manual/variables.html#term-PACKAGE_CLASSES
|
||||||
# autofs \
|
# NOTE: Only ipk's are suported by Neutrino package manager.
|
||||||
# ca-certificates \
|
PACKAGE_CLASSES = "package_ipk"
|
||||||
# curl \
|
|
||||||
# dosfstools \
|
### Prevent splitting out debug information during packaging
|
||||||
# e2fsprogs \
|
# see: https://docs.yoctoproject.org/ref-manual/variables.html#term-INHIBIT_PACKAGE_DEBUG_SPLIT
|
||||||
# e2fsprogs-resize2fs \
|
#INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
|
||||||
# findutils \
|
|
||||||
# gptfdisk \
|
### Add additional lines for /etc/os-release and .version contents
|
||||||
# hdparm \
|
#HOME_URL = "https://github.com/tuxbox-neutrino"
|
||||||
# ifupdown \
|
#SUPPORT_URL = "https://wiki.tuxbox-neutrino.org"
|
||||||
# less \
|
#BUG_REPORT_URL = "https://forum.tuxbox-neutrino.org"
|
||||||
# libswscale \
|
|
||||||
# libusb1 \
|
### Default image root password
|
||||||
# minidlna \
|
# set initial password for user root. Keep empty for root:
|
||||||
# nano \
|
ROOTPW = ""
|
||||||
# nfs-utils \
|
|
||||||
# nfs-utils-client \
|
### Add Image Maintainer and host build machine here
|
||||||
# ntpdate \
|
#CREATOR = "${USER}"
|
||||||
# ofgwrite \
|
#KBUILD_BUILD_USER = "${CREATOR}"
|
||||||
# openssh \
|
KBUILD_BUILD_HOST = "127.0.0.1"
|
||||||
# openssl \
|
|
||||||
# opkg \
|
### Git configuration on target machine.
|
||||||
# pv \
|
# To utilize Etckeeper and Neutrino plugins, Git is a prerequisite.
|
||||||
# rpcbind \
|
# Thus, configuring Git on the target machine is imperative.
|
||||||
# rsync \
|
# However, keep in mind that Etckeeper should not be pre-installed on
|
||||||
# samsunglcd4linux \
|
# the image as it would augment the image size and increase storage requirements
|
||||||
# tar \
|
# during image creation. Therefore, it is recommended to install Etckeeper only
|
||||||
# tzdata \
|
# after successfully flashing the image. However, for devices with limited storage
|
||||||
# tzdata-europe \
|
# space for the root filesystem, ensure that enough space is available for
|
||||||
# udev-extraconf \
|
# installing Etckeeper to avoid runtime errors.
|
||||||
# udpxy \
|
# Furthermore, note that Git's databases can bloat over time,
|
||||||
# util-linux-blkid \
|
# leading to unnecessarily large storage consumption. If Git is provided as an optional
|
||||||
# util-linux-mount \
|
# downloader in some plugins, it is advisable to avoid using it unless necessary.
|
||||||
# util-linux-swaponoff \
|
# Use Git with caution.
|
||||||
# util-linux-umount \
|
GIT_USER = "root"
|
||||||
# virtual/screengrabber \
|
MAIL = "root@${MACHINE}"
|
||||||
# virtual/neutrino \
|
|
||||||
# neutrino-plugins \
|
### dev keys for neutrino gui and weather plugin
|
||||||
# neutrino-lua-plugins \
|
# NOTE: Here you see empty entries! NOT WORKING! Own keys are required!
|
||||||
# neutrino-plugin-mediathek \
|
# You can also include a file eg. named "local.conf.devkeys.inc"
|
||||||
# xupnpd \
|
# Modify and add these line:
|
||||||
# zip \
|
# include /<path>/<to>/local.conf.devkeys.inc
|
||||||
# "
|
## TMDB, OMDB, ShoutCast
|
||||||
|
TMDB_DEV_KEY = ""
|
||||||
# Put additional packages that should be packaged into your image. Separated with a whitespace. or use IMAGE_INSTALL += ...
|
OMDB_API_KEY = ""
|
||||||
#
|
SHOUTCAST_DEV_KEY = ""
|
||||||
# IMAGE_INSTALL_append = " gdb-dbg glibc-dbg glibc-thread-db qtwebflix webmin"
|
## Weather
|
||||||
# IMAGE_INSTALL_append = " gdb-dbg glibc-dbg glibc-thread-db webmin"
|
# NOTE: Beginning on March 31st, 2023 the Dark Sky API will not longer be available.
|
||||||
|
# WeatherKit, a new Apple API available on iOS, iPadOS, macOS, tvOS,
|
||||||
|
# and web that provides access to the new Apple Weather forecast data.
|
||||||
|
# The WEATHER_DEV_KEY variable is not longer used for darksky keys
|
||||||
|
# Currently used provider is: openweather map
|
||||||
|
WEATHER_DEV_KEY = ""
|
||||||
|
# NOTE: YouTube functionality of Neutrino was completely removed in 2022, this key has no effects anymore, but YouTube is usable further with plugins.
|
||||||
|
YT_DEV_KEY = ""
|
||||||
|
|
||||||
|
## EXTRA_OECONF modifications for Neutrino.
|
||||||
|
# NOTE! For global use within build-system see: https://docs.yoctoproject.org/ref-manual/variables.html#term-EXTRA_OECONF
|
||||||
|
## Extra build config options for neutrino build
|
||||||
|
# eg: to enable the neutrino test menu.
|
||||||
|
# NOTE! --enable-testing Works only with FLAVOUR = "tuxbox".
|
||||||
|
# If you want to use a different FLAVOUR than 'tuxbox', keep these lines uncommented and
|
||||||
|
# add them to your local.conf within your build directory.
|
||||||
|
#EXTRA_OECONF_append_pn-neutrino-mp += " \
|
||||||
|
# --enable-testing \
|
||||||
|
#"
|
||||||
|
## Uncomment these lines to disable debug mode for Neutrino.
|
||||||
|
#EXTRA_OECONF_append_pn-neutrino-mp += " \
|
||||||
|
# --without-debug \
|
||||||
|
#"
|
||||||
|
|
||||||
|
### Extra build config options for gdb build
|
||||||
|
#EXTRA_OECONF_append_pn-gdb = "--with-system-gdbinit=/etc/gdbinit"
|
||||||
|
|
||||||
|
### Experimental kodi, qtwebflix
|
||||||
|
# NOTE: will build only with gatesgarth/3.2.4
|
||||||
|
# It's not guaranteed, that build will be successfully.
|
||||||
|
# Alternatively, you can add targets to EXTRA IMAGE DEPENDS or IMAGE_INSTALL.
|
||||||
|
#
|
||||||
|
#DEPENDS_pn-neutrino-image += "kodi qtwebflix"
|
||||||
|
|
||||||
|
### URLs for download mirrors from Yocto or our own stock
|
||||||
|
# global archive and source urls
|
||||||
|
ARCHIVE_SOURCE_URL = "https://n4k.sourceforge.io/archive/Archive"
|
||||||
|
YOCTO_SOURCE_URL = "http://www.yoctoproject.org/sources"
|
||||||
|
|
||||||
|
PREMIRRORS_prepend = "\
|
||||||
|
https://.*/.* ${ARCHIVE_SOURCE_URL}/ \n \
|
||||||
|
git://.*/.* ${YOCTO_SOURCE_URL}/ \n \
|
||||||
|
ftp://.*/.* ${YOCTO_SOURCE_URL}/ \n \
|
||||||
|
http://.*/.* ${YOCTO_SOURCE_URL}/ \n \
|
||||||
|
https://.*/.* ${YOCTO_SOURCE_URL}/ \n \
|
||||||
|
"
|
||||||
|
### Download mirrors from Local file mirrors (read only)
|
||||||
|
#PREMIRRORS_prepend = "\
|
||||||
|
# file://.*/.* file://${HOME}/Downloads/* \n \
|
||||||
|
# "
|
||||||
|
|
||||||
|
### Source mirror urls
|
||||||
|
# see: https://wiki.yoctoproject.org/wiki/How_do_I#Q:_How_do_I_create_my_own_source_download_mirror_.3F
|
||||||
|
# This is our own stock of archives, those are created by our image builds.
|
||||||
|
SOURCE_MIRROR_URL = "${ARCHIVE_SOURCE_URL}"
|
||||||
|
INHERIT += "own-mirrors"
|
||||||
|
BB_GENERATE_MIRROR_TARBALLS = "0"
|
||||||
|
#BB_NO_NETWORK = "1"
|
||||||
|
|
||||||
|
### Masked recipes
|
||||||
|
# This will ignore recipes to build.
|
||||||
|
# NOTE: Some masked targets with related depends could break the build.
|
||||||
|
#BBMASK += "/meta-neutrino/recipes-qt/qt5"
|
||||||
|
|
||||||
|
### Build packages but do not install packages into image
|
||||||
|
# https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#var-EXTRA_IMAGEDEPENDS
|
||||||
|
#EXTRA_IMAGEDEPENDS += " \
|
||||||
|
# gdb \
|
||||||
|
# samba \
|
||||||
|
# vsftpd \
|
||||||
|
# "
|
||||||
|
#EXTRA_IMAGEDEPENDS += " \
|
||||||
|
# kodi \
|
||||||
|
# "
|
||||||
|
|
||||||
|
### Put additional packages that should be packaged into your image. Separated with a whitespace. or use IMAGE_INSTALL += ...
|
||||||
|
# https://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-IMAGE_INSTALL
|
||||||
|
# See: ./meta-neutrino/recipes-images/images/neutrino-image-base.inc.
|
||||||
|
IMAGE_INSTALL += " \
|
||||||
|
stb-flash \
|
||||||
|
msgbox \
|
||||||
|
shellexec \
|
||||||
|
tuxcom \
|
||||||
|
input \
|
||||||
|
"
|
||||||
|
#IMAGE_INSTALL += " \
|
||||||
|
# webmin \
|
||||||
|
#"
|
||||||
|
# IMAGE_INSTALL += " \
|
||||||
|
# neutrino-3rd-party-themes \
|
||||||
|
#"
|
||||||
|
# IMAGE_INSTALL += " qtwebflix"
|
||||||
|
# IMAGE_INSTALL += " gdb-dbg glibc-dbg glibc-thread-db"
|
||||||
|
|
||||||
|
### Examples to ...
|
||||||
|
# ... remove already contained packages from IMAGE_INSTALL use this:
|
||||||
|
#I MAGE_INSTALL_remove += " \
|
||||||
|
# <target1> \
|
||||||
|
# <target2> \
|
||||||
|
# "
|
||||||
|
|
||||||
|
### ... build packages without install into image use PACKAGE_EXCLUDE
|
||||||
|
# see: https://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-PACKAGE_EXCLUDE
|
||||||
|
# PACKAGE_EXCLUDE += \
|
||||||
|
# <package1> \
|
||||||
|
# <package2> \
|
||||||
|
#"
|
||||||
|
|
||||||
|
### ... replace a source url via local.conf
|
||||||
|
# SRC_URI_pn-x264 = "git://code.videolan.org/videolan/x264;branch=stable;protocol=https \
|
||||||
|
# "
|
||||||
|
|
||||||
|
### base-files rewrite
|
||||||
|
#LICENSE_pn-base-files = "CLOSED"
|
||||||
|
#LIC_FILES_CHKSUM_pn-base-files = ""
|
||||||
|
#BBMASK += "/meta-neutrino/recipes-images/base-files/base-files_%.bbappend"
|
||||||
|
#FILESEXTRAPATHS_prepend := "${HOME}/devel/local-yocto-files/base-files:"
|
||||||
|
|
||||||
|
### Enabling and Disabling Build History
|
||||||
|
# see> https://docs.yoctoproject.org/singleindex.html#enabling-and-disabling-build-history
|
||||||
|
#INHERIT += "buildhistory"
|
||||||
|
#BUILDHISTORY_COMMIT = "1"
|
||||||
|
|
||||||
|
### Replace some lame fetch urls
|
||||||
|
#BINUTILS_GIT_URI = "git://github.com/bminor/binutils-gdb.git;branch=${BRANCH};protocol=https"
|
||||||
|
#GLIBC_GIT_URI = "git://github.com/bminor/glibc.git;branch=release/2.32/master;name=glibc"
|
||||||
|
Reference in New Issue
Block a user