#!/bin/bash

# https://gluon.readthedocs.io/en/latest/releases/v2021.1.2.html
# https://github.com/freifunk-gluon/gluon/wiki/Release-life-cycle#migration-paths-diagram
# Bauen funktioniert sicher unter Ubuntu 20.04.6 LTS, benötigte Pakete installieren
# Gluon Verzeichnis laden: git clone https://github.com/freifunk-gluon/gluon.git gluon -b v2021.1.2
# site ordner, modules und bauen_2021.1.2.sh in das gluon Verzeichnis kopieren, dann git checkout v2021.1.2 und make update
# Bauskript ausführbar machen: chmod +x bauen_2021.1.2.sh und starten: ./bauen_2021.1.2.sh
# Der erste Durchlauf (EN-Kreis), läuft nur mit 1 CPU-Kern, um eine Race Condition beim Kompilieren zu vermeiden, danach mit allen verfügbaren CPU-Kernen

# Strikten Modus für Bash aktivieren (beendet das Skript bei Fehlern in Pipelines)
set -e

OPTIONS="DEFAULT_GLUON_RELEASE=3.0 GLUON_AUTOUPDATER_BRANCH=stable GLUON_AUTOUPDATER_ENABLED=1 BROKEN=1"

# EN-Kreis
rm site/site.conf
cp site/en_site.conf/en_kreis/site.conf site

make -j1 GLUON_TARGET=ar71xx-generic $OPTIONS
make -j1 GLUON_TARGET=ar71xx-mikrotik $OPTIONS
make -j1 GLUON_TARGET=ar71xx-nand $OPTIONS
make -j1 GLUON_TARGET=ar71xx-tiny $OPTIONS
make -j1 GLUON_TARGET=ath79-generic $OPTIONS
make -j1 GLUON_TARGET=brcm2708-bcm2708 $OPTIONS 
make -j1 GLUON_TARGET=brcm2708-bcm2709 $OPTIONS
make -j1 GLUON_TARGET=brcm2708-bcm2710 $OPTIONS
make -j1 GLUON_TARGET=ipq40xx-generic $OPTIONS
make -j1 GLUON_TARGET=ipq806x-generic $OPTIONS
make -j1 GLUON_TARGET=lantiq-xrx200 $OPTIONS
make -j1 GLUON_TARGET=lantiq-xway $OPTIONS
make -j1 GLUON_TARGET=mpc85xx-generic $OPTIONS
make -j1 GLUON_TARGET=mpc85xx-p1020 $OPTIONS
make -j1 GLUON_TARGET=mvebu-cortexa9 $OPTIONS
make -j1 GLUON_TARGET=ramips-mt76x8 $OPTIONS
make -j1 GLUON_TARGET=ramips-mt7620 $OPTIONS
make -j1 GLUON_TARGET=ramips-mt7621 $OPTIONS
make -j1 GLUON_TARGET=ramips-rt305x $OPTIONS
make -j1 GLUON_TARGET=sunxi-cortexa7 $OPTIONS
make -j1 GLUON_TARGET=x86-64 $OPTIONS
make -j1 GLUON_TARGET=x86-generic $OPTIONS
make -j1 GLUON_TARGET=x86-geode $OPTIONS
make -j1 GLUON_TARGET=x86-legacy $OPTIONS

#make manifest GLUON_AUTOUPDATER_BRANCH=stable
#contrib/sign.sh ecdsakey output/images/sysupgrade/stable.manifest
cp -rL output/images output/images_en_kreis
rm -r output/images

# Ennepetal
rm site/site.conf
cp site/en_site.conf/ennepetal/site.conf site

make -j$(nproc) GLUON_TARGET=ar71xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-mikrotik $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-nand $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-tiny $OPTIONS
make -j$(nproc) GLUON_TARGET=ath79-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2708 $OPTIONS 
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2709 $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2710 $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq40xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq806x-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xrx200 $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xway $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-p1020 $OPTIONS
make -j$(nproc) GLUON_TARGET=mvebu-cortexa9 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt76x8 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7620 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7621 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-rt305x $OPTIONS
make -j$(nproc) GLUON_TARGET=sunxi-cortexa7 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-64 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-geode $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-legacy $OPTIONS

#make manifest GLUON_AUTOUPDATER_BRANCH=stable
#contrib/sign.sh ecdsakey output/images/sysupgrade/stable.manifest
cp -rL output/images output/images_ennepetal
rm -r output/images

# Hagen
rm site/site.conf
cp site/en_site.conf/hagen/site.conf site

make -j$(nproc) GLUON_TARGET=ar71xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-mikrotik $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-nand $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-tiny $OPTIONS
make -j$(nproc) GLUON_TARGET=ath79-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2708 $OPTIONS 
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2709 $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2710 $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq40xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq806x-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xrx200 $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xway $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-p1020 $OPTIONS
make -j$(nproc) GLUON_TARGET=mvebu-cortexa9 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt76x8 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7620 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7621 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-rt305x $OPTIONS
make -j$(nproc) GLUON_TARGET=sunxi-cortexa7 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-64 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-geode $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-legacy $OPTIONS

#make manifest GLUON_AUTOUPDATER_BRANCH=stable
#contrib/sign.sh ecdsakey output/images/sysupgrade/stable.manifest
cp -rL output/images output/images_hagen
rm -r output/images

# Hattingen
rm site/site.conf
cp site/en_site.conf/hattingen/site.conf site

make -j$(nproc) GLUON_TARGET=ar71xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-mikrotik $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-nand $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-tiny $OPTIONS
make -j$(nproc) GLUON_TARGET=ath79-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2708 $OPTIONS 
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2709 $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2710 $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq40xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq806x-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xrx200 $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xway $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-p1020 $OPTIONS
make -j$(nproc) GLUON_TARGET=mvebu-cortexa9 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt76x8 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7620 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7621 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-rt305x $OPTIONS
make -j$(nproc) GLUON_TARGET=sunxi-cortexa7 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-64 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-geode $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-legacy $OPTIONS

#make manifest GLUON_AUTOUPDATER_BRANCH=stable
#contrib/sign.sh ecdsakey output/images/sysupgrade/stable.manifest
cp -rL output/images output/images_hattingen
rm -r output/images

# Refugee
rm site/site.conf
cp site/en_site.conf/refugee/site.conf site

make -j$(nproc) GLUON_TARGET=ar71xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-mikrotik $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-nand $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-tiny $OPTIONS
make -j$(nproc) GLUON_TARGET=ath79-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2708 $OPTIONS 
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2709 $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2710 $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq40xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq806x-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xrx200 $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xway $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-p1020 $OPTIONS
make -j$(nproc) GLUON_TARGET=mvebu-cortexa9 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt76x8 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7620 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7621 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-rt305x $OPTIONS
make -j$(nproc) GLUON_TARGET=sunxi-cortexa7 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-64 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-geode $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-legacy $OPTIONS

#make manifest GLUON_AUTOUPDATER_BRANCH=stable
#contrib/sign.sh ecdsakey output/images/sysupgrade/stable.manifest
cp -rL output/images output/images_refugee
rm -r output/images

# Sprockhoevel
rm site/site.conf
cp site/en_site.conf/sprockhoevel/site.conf site

make -j$(nproc) GLUON_TARGET=ar71xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-mikrotik $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-nand $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-tiny $OPTIONS
make -j$(nproc) GLUON_TARGET=ath79-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2708 $OPTIONS 
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2709 $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2710 $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq40xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq806x-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xrx200 $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xway $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-p1020 $OPTIONS
make -j$(nproc) GLUON_TARGET=mvebu-cortexa9 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt76x8 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7620 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7621 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-rt305x $OPTIONS
make -j$(nproc) GLUON_TARGET=sunxi-cortexa7 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-64 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-geode $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-legacy $OPTIONS

#make manifest GLUON_AUTOUPDATER_BRANCH=stable
#contrib/sign.sh ecdsakey output/images/sysupgrade/stable.manifest
cp -rL output/images output/images_sprockhoevel
rm -r output/images

# Wetter (Ruhr)
rm site/site.conf
cp site/en_site.conf/wetter/site.conf site

make -j$(nproc) GLUON_TARGET=ar71xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-mikrotik $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-nand $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-tiny $OPTIONS
make -j$(nproc) GLUON_TARGET=ath79-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2708 $OPTIONS 
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2709 $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2710 $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq40xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq806x-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xrx200 $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xway $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-p1020 $OPTIONS
make -j$(nproc) GLUON_TARGET=mvebu-cortexa9 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt76x8 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7620 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7621 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-rt305x $OPTIONS
make -j$(nproc) GLUON_TARGET=sunxi-cortexa7 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-64 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-geode $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-legacy $OPTIONS

#make manifest GLUON_AUTOUPDATER_BRANCH=stable
#contrib/sign.sh ecdsakey output/images/sysupgrade/stable.manifest
cp -rL output/images output/images_wetter
rm -r output/images

# Witten
rm site/site.conf
cp site/en_site.conf/witten/site.conf site

make -j$(nproc) GLUON_TARGET=ar71xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-mikrotik $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-nand $OPTIONS
make -j$(nproc) GLUON_TARGET=ar71xx-tiny $OPTIONS
make -j$(nproc) GLUON_TARGET=ath79-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2708 $OPTIONS 
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2709 $OPTIONS
make -j$(nproc) GLUON_TARGET=brcm2708-bcm2710 $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq40xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=ipq806x-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xrx200 $OPTIONS
make -j$(nproc) GLUON_TARGET=lantiq-xway $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=mpc85xx-p1020 $OPTIONS
make -j$(nproc) GLUON_TARGET=mvebu-cortexa9 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt76x8 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7620 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-mt7621 $OPTIONS
make -j$(nproc) GLUON_TARGET=ramips-rt305x $OPTIONS
make -j$(nproc) GLUON_TARGET=sunxi-cortexa7 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-64 $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-generic $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-geode $OPTIONS
make -j$(nproc) GLUON_TARGET=x86-legacy $OPTIONS

#make manifest GLUON_AUTOUPDATER_BRANCH=stable
#contrib/sign.sh ecdsakey output/images/sysupgrade/stable.manifest
cp -rL output/images output/images_witten
rm -r output/images

# Ende
echo "Skript erfolgreich ausgeführt am $(date +'%d/%m/%Y %H:%M:%S')Uhr"
