Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • philhil/site-ffs
  • 0x4A6F/site-ffs
  • nrb/site-ffs
  • adnidor/site-ffs
  • are/site-ffs
  • codingHahn/site-ffs
  • albialbi/site-ffs
  • Daniel/site-ffs
  • Felixmitte/site-ffs
  • dotti/site-ffs
  • patrick/site-ffs
  • firmware/site-ffs
12 results
Show changes
Commits on Source (234)
image: registry.gitlab.freifunk-stuttgart.de/firmware/ffs-buildenv:master
variables:
GIT_SUBMODULE_STRATEGY: normal
DOCKER_DRIVER: overlay2
stages:
- generate_date
- update
- build
- package
default:
before_script:
- git submodule foreach 'git fetch --tags'
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$GIT_SSH_PRIV_KEY")
- git config --global user.email "firmware@freifunk-stuttgart.de"
- git config --global user.name "FFS Buildbot"
- mkdir -p ~/.ssh
- cat gitlab-known-hosts >> ~/.ssh/known_hosts
- test -d ffs-openwrt-dl-cache || git clone ssh://git@ssh.gitlab.freifunk-stuttgart.de:22220/firmware/ffs-openwrt-dl-cache.git
- git -C ffs-openwrt-dl-cache pull --no-rebase || true
- rm -rf gluon/openwrt/dl && mkdir -p gluon/openwrt && ln -s ../../ffs-openwrt-dl-cache gluon/openwrt/dl
- rm -rf gluon/openwrt/staging_dir && mkdir -p staging_dir && ln -s ../../staging_dir gluon/openwrt/staging_dir
after_script:
# we need to start the SSH agent again because it doesn't seem to stay running
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$GIT_SSH_PRIV_KEY")
- git config --global user.email "firmware@freifunk-stuttgart.de"
- git config --global user.name "FFS Buildbot"
- mkdir -p ~/.ssh
- cat gitlab-known-hosts >> ~/.ssh/known_hosts
- cd gluon/openwrt/dl
- git pull --no-rebase || true
- git add . && git commit -m "update DL cache" || true
- git pull --no-rebase && git push || true
generate_date:
stage: generate_date
before_script:
- echo dummy
after_script:
- echo dummy
script:
- date '+%Y-%m-%d' > build.date
artifacts:
paths:
- build.date
expire_in: 1 day
except:
- tags
update:
stage: update
script:
- make -C gluon update GLUON_SITEDIR="$CI_PROJECT_DIR" FFS_BUILD_DATE=$(cat build.date)
artifacts:
paths:
- gluon/
expire_in: 1 day
except:
- tags
build-target:
stage: build
except:
- tags
script:
- make -C gluon GLUON_SITEDIR="$CI_PROJECT_DIR" GLUON_TARGET="$TARGET" GLUON_AUTOUPDATER_BRANCH=stable GLUON_AUTOUPDATER_ENABLED=1 FFS_BUILD_DATE=$(cat build.date) BROKEN="$BROKEN" V=1 -j`nproc`
artifacts:
paths:
- gluon/output/
expire_in: 1 day
cache: []
parallel:
matrix:
- TARGET: armsr-armv7
- TARGET: armsr-armv8
- TARGET: ath79-generic
- TARGET: ath79-nand
- TARGET: ath79-mikrotik
- TARGET: bcm27xx-bcm2708
- TARGET: bcm27xx-bcm2709
- TARGET: ipq40xx-generic
- TARGET: ipq40xx-mikrotik
- TARGET: ipq806x-generic
- TARGET: lantiq-xrx200
- TARGET: lantiq-xway
- TARGET: mediatek-filogic
- TARGET: mediatek-mt7622
- TARGET: mpc85xx-p1010
- TARGET: mpc85xx-p1020
- TARGET: ramips-mt7620
- TARGET: ramips-mt7621
- TARGET: ramips-mt76x8
- TARGET: realtek-rtl838x
- TARGET: rockchip-armv8
- TARGET: sunxi-cortexa7
- TARGET: x86-generic
- TARGET: x86-geode
- TARGET: x86-legacy
- TARGET: x86-64
package:
stage: package
script:
- for branch in "stable" "beta" "nightly" "experimental"; do make -C gluon manifest GLUON_AUTOUPDATER_BRANCH="$branch" GLUON_AUTOUPDATER_ENABLED=1 GLUON_SITEDIR="$CI_PROJECT_DIR" FFS_BUILD_DATE=$(cat build.date) V=1 -j`nproc`; done
- if [ -n "$GLUON_SIGN_KEY" ]; then cd gluon && for branch in "nightly" "experimental"; do ./contrib/sign.sh <(echo "$GLUON_SIGN_KEY") "output/images/sysupgrade/$branch.manifest"; done; fi
cache: []
artifacts:
paths:
- gluon/output
expire_in: 7 days
except:
- tags
[submodule "gluon"]
path = gluon
url = https://gitlab.freifunk-stuttgart.de/firmware/gluon.git
#!/usr/bin/env groovy
/*
With the provided script, the firmware can be build with jenkins. Setup
a Pipeline job and configure the pipeline definition to "Pipeline script
from SCM". Supply as SCM git and as repository
https://github.com/freifunk-stuttgart/site-ffs.git. All other options
can be left at their default. If neccessary configure the branch
specifier. The job parameters will be filled when the job is started the
first time. If you do not want to build all architectures, cancel the
buold and trigger a parameterized build where you can now choose the
architectures to be build.
The init and manifest stage will be executed on the master, all other
stages are executed on any node. This job can use eight build slaves to
build the firmware.
On each slave, nproc is used to run make with all available cpu cores.
Per default, all broken targets will be build also. You can choose to
run make clean before building each architecture. You can check
clean_workspace to build entirely from scratch.
Note that bcrm2708_2710 is not supported with v2017.1.8, but on gluon
master branch. It will be supported in a later release.
If you want to use a different gluon version, you can modify the gluon
parameter, if you want to use a custom site-ffs version, you can modify
the site parameter
*/
def fetchSources() {
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: "${params.gluon}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/freifunk-gluon/gluon.git']]]
dir('site') {
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: "${params.site}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/freifunk-stuttgart/site-ffs.git']]]
}
}
def buildArch(archs) {
echo "step ${STAGE_NAME}"
if (params.clean_workspace) {
sh 'rm -Rf *'
}
fetchSources()
dir('output') { deleteDir() }
if (params.make_clean) {
for (arch in archs) {
sh "nice make GLUON_TARGET=${arch} clean"
}
}
sh "nice make update"
for (arch in archs) {
if (params.verbose) {
sh "nice make -j1 V=s BROKEN=${params.broken} GLUON_BRANCH=stable GLUON_TARGET=${arch} BUILD_DATE=${BUILD_DATE}"
} else {
sh "nice make -j`nproc` BROKEN=${params.broken} GLUON_BRANCH=stable GLUON_TARGET=${arch} BUILD_DATE=${BUILD_DATE}"
}
}
allArchs << "${STAGE_NAME}"
sh "find output/images"
sh "find output/packages"
stash name: "${STAGE_NAME}", includes: "output/images/*/*, output/packages/*/*/*/*"
}
pipeline {
agent none
parameters {
booleanParam(name: 'ar71xx_generic', defaultValue: true, description: '')
booleanParam(name: 'ar71xx_mikrotik', defaultValue: true, description: '')
booleanParam(name: 'ar71xx_nand', defaultValue: true, description: '')
booleanParam(name: 'ar71xx_tiny', defaultValue: true, description: '')
booleanParam(name: 'brcm2708_bcm2708', defaultValue: true, description: '')
booleanParam(name: 'brcm2708_bcm2709', defaultValue: true, description: '')
booleanParam(name: 'brcm2708_bcm2710', defaultValue: false, description: '')
booleanParam(name: 'ipq806x', defaultValue: true, description: '')
booleanParam(name: 'mpc85xx_generic', defaultValue: true, description: '')
booleanParam(name: 'mvebu', defaultValue: true, description: '')
booleanParam(name: 'ramips_mt7621', defaultValue: true, description: '')
booleanParam(name: 'ramips_mt7628', defaultValue: true, description: '')
booleanParam(name: 'ramips_rt305x', defaultValue: true, description: '')
booleanParam(name: 'sunxi', defaultValue: false, description: '')
booleanParam(name: 'x86_generic', defaultValue: true, description: '')
booleanParam(name: 'x86_geode', defaultValue: true, description: '')
booleanParam(name: 'x86_64', defaultValue: true, description: '')
booleanParam(name: 'verbose', defaultValue: false, description: 'build with -j1 and V=s for debugging build errors')
booleanParam(name: 'make_clean', defaultValue: false, description: 'execute make clean before building each architecture' )
booleanParam(name: 'clean_workspace', defaultValue: false, description: 'delete all files in workspace before building' )
choice(name: 'broken', choices: '1\n0', description: 'wether to build broken targets or not')
string(defaultValue: "refs/tags/v2017.1.8", name: 'gluon', description: 'gluon release tag')
string(defaultValue: "*/master", name: 'site', description: 'site release tag, branch or commit')
string(defaultValue: "", name: 'deploy_to', description: 'target for rsync\nExample: www@netinfo:/home/www/html/firmware/gluon/archive/@leonard')
}
options {
timestamps()
}
stages {
stage('init') {
agent { label 'master'}
steps { script {
allArchs = []
fetchSources()
BUILD_DATE = sh(returnStdout: true, script: 'date +%Y-%m-%d').trim()
echo "${BUILD_DATE} in setup"
} }
}
stage('compile') {
parallel {
stage('ar71xx') {
agent any
when { expression {return params.ar71xx_generic || params.ar71xx_mikrotik || params.ar71xx_nand || params.ar71xx_tiny } }
steps { script {
def archs = []
if (params.ar71xx_generic) { archs << 'ar71xx-generic'}
if (params.ar71xx_mikrotik) { archs << 'ar71xx-mikrotik'}
if (params.ar71xx_nand) { archs << 'ar71xx-nand'}
if (params.ar71xx_tiny) { archs << 'ar71xx-tiny'}
buildArch(archs)
} }
}
stage('brcm2708') {
agent any
when { expression {return params.brcm2708_bcm2708 || params.brcm2708_bcm2709 || params.brcm2708_bcm2710 } }
steps { script {
def archs = []
if (params.brcm2708_bcm2708) { archs << 'brcm2708-bcm2708'}
if (params.brcm2708_bcm2709) { archs << 'brcm2708-bcm2709'}
if (params.brcm2708_bcm2710) { archs << 'brcm2708-bcm2710'}
echo "Archs for ${STAGE_NAME}: ${archs}"
buildArch(archs)
} }
}
stage('ipq806x') {
agent any
when { expression {return params.ipq806x } }
steps { script {
def archs = []
buildArch(["ipq806x"])
} }
}
stage('mpc85xx-generic') {
agent any
when { expression {return params.mpc85xx_generic } }
steps { script {
buildArch(["mpc85xx-generic"])
} }
}
stage('mvebu') {
agent any
when { expression {return params.mvebu } }
steps { script {
buildArch(["${STAGE_NAME}"])
} }
}
stage('ramips') {
agent any
when { expression {return params.ramips_mt7621 || params.ramips_mt7628 || params.ramips_rt305x } }
steps { script {
def archs = []
if (params.ramips_mt7621) { archs << 'ramips-mt7621' }
if (params.ramips_mt7628) { archs << 'ramips-mt7628' }
if (params.ramips_rt305x) { archs << 'ramips-rt305x' }
buildArch(archs)
} }
}
stage('sunxi') {
agent any
when { expression {return params.sunxi } }
steps { script {
buildArch(["${STAGE_NAME}"])
} }
}
stage('x86') {
agent any
when { expression {return params.x86_generic || params.x86_genode || params.x86_64 } }
steps { script {
def archs = []
if (params.x86_generic) { archs << 'x86-generic' }
if (params.x86_genode) { archs << 'x86-genode' }
if (params.x86_64) { archs << 'x86-64' }
echo "Archs for ${STAGE_NAME}: ${archs}"
buildArch(archs)
} }
}
}
}
stage('manifest and deploy') {
agent { label 'master'}
steps { script {
fetchSources()
echo "step ${STAGE_NAME}"
echo "Archs: ${allArchs}"
dir('output') { deleteDir() }
for (arch in allArchs) {
unstash "${arch}"
}
sh """
make manifest GLUON_BRANCH=stable
make manifest GLUON_BRANCH=beta
make manifest GLUON_BRANCH=nightly
"""
archiveArtifacts artifacts: 'output/images/*/*, output/packages/*/*/*/*', fingerprint: true
if (deploy_to != "") {
sh "rsync -avx output/images/factory ${params.deploy_to}/${BUILD_DATE}_${BUILD_TAG}/"
sh "rsync -avx output/images/sysupgrade ${params.deploy_to}/${BUILD_DATE}_${BUILD_TAG}/"
sh "rsync -avx output/packages ${params.deploy_to}/${BUILD_DATE}_${BUILD_TAG}/"
}
} }
}
}
}
site-ffs
========
# Freifunk Stuttgart Gluon
Freifunk Stuttgart specific Gluon configuration
This is the [Gluon configuration](https://gitlab.freifunk-stuttgart.de/firmware/site-ffs) for [Freifunk Stuttgart](https://freifunk-stuttgart.de).
Firmware versions are built in Gitlab.
Doku: https://gluon.readthedocs.org/en/latest/user/site.html
We maintain our [own Gluon repository](https://gitlab.freifunk-stuttgart.de/firmware/gluon) to make it easy to apply patches to Gluon.
Gluon versions used for specific Stuttgart Freifunk Firmware builds:
* ffs-1.4: v2017.1.5 (LEDE)
* ffs-1.3: v2016.2.7 + 1340 mtu
* ffs-1.2: v2016.2.6 + ffs-set-segment dns fix + 1312 mtu
* ffs-1.1: v2016.2.6 + ffs-set-segment dns fix
* ffs-1.0: v2016.2.5
* ffs-0.9: v2016.2.1
* ffs-0.8: v2016.2
* ffs-0.7: v2016.1.3
* ffs-0.6: v2016.1
* ffs-0.5: v2015.1.2
Gluon is maintained as a [Git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules) in the `gluon` subdirectory.
## Building
Because we maintain Gluon as a submodule, some special steps are required:
- clone this repository with `--recurse-submodules`: ```git clone --recurse-submodules https://gitlab.freifunk-stuttgart.de/firmware/site-ffs.git```
* If you already clonsed this repo, initalize submodules using `git submodule update --init .`
- run `buildall.sh` to build all targets
### Download Cache
We maintain a [cache of all downloaded files during the build](https://gitlab.freifunk-stuttgart.de/firmware/ffs-openwrt-dl-cache).
## Committing
When changing something in Gluon, keep in mind - besides making the changes in the Gluon repository - you also need to make a commit here that updates the `gluon` submodule. You can do so by:
- changing to the `gluon` subdirectory,
- making your changes,
- commit and push them to the Gluon repository,
- going back to the `site-ffs` directory,
- `git add gluon` and then `git commit` to create a commit which updates the Gluon version in the site-ffs repo.
## Automatic Gluon Update
Minor version updates of Gluon are usually very easy to do. Therefore, we have a daily job which checks for a new minor version of Gluon and performs an [automatic update](https://gitlab.freifunk-stuttgart.de/firmware/ffs-pipeline-nightly) if one is available.
## Branches
For each firmware release (vX.Y) we have a seperate branch.
There is also the experimental branch which is our build against Gluon master. Most bugfixes hence need to be applied to the corresponding branch of the next firmware release and the experimental branch.
## Other repositories
We have a [repository with our custom packages](https://gitlab.freifunk-stuttgart.de/firmware/gluon-packages).
There are [several other repos related to the firmware build](https://gitlab.freifunk-stuttgart.de/firmware).
#!/bin/bash
set -eu
set -o pipefail
branch=nightly
TARGETS=(
ath79-generic
ath79-nand
ath79-mikrotik
bcm27xx-bcm2708
bcm27xx-bcm2709
ipq40xx-generic
ipq40xx-mikrotik
ipq806x-generic
lantiq-xrx200
lantiq-xway
mediatek-mt7622
mpc85xx-p1010
mpc85xx-p1020
ramips-mt7620
ramips-mt7621
ramips-mt76x8
rockchip-armv8
sunxi-cortexa7
x86-generic
x86-geode
x86-legacy
x86-64
)
sitedir=$(readlink -f $(dirname $0))
make -C gluon update GLUON_SITEDIR="$sitedir" V=1
for target in ${TARGETS[@]}; do
echo Building $target
make -C gluon GLUON_TARGET=$target GLUON_AUTOUPATER_BRANCH=$branch GLUON_AUTOUPDATER_ENABLED=1 GLUON_SITEDIR="$sitedir" BROKEN=1 V=1 -j`nproc`
done
[ssh.gitlab.freifunk-stuttgart.de]:22220 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGNCe5DNM3hGY+oEy5JeGjCDg68YrpjFivgxIAuFvhJkRdPPQpnOURuXFt/wQ0PCF/MZHVLPKwSLEfI3pkQRAg2bLyXFnLMlaaC2Q+9eZoQ6K2+NFWlKiVd3EmYGMt2USFfgFiHKeA4NNhvqtINj5pk1usFRCuUYfAegIVQl+vIvW7rpdK68Y33MGPrP81XD0E7TpasQnqnxVIaTe+QG3oNlPCToE6e8sZij3lwKGmR0gopbvUjXjuY7SCIbzEwzNET+olVfVHWMlDwuzM8tUOSbOSg6mX+I1gTJXndxdGl/dSsI9HXAe1HAa3B7zN+SDwcz+ySxsAgS8loyJMT2SD
[ssh.gitlab.freifunk-stuttgart.de]:22220 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJPXKTRXP1BULVuiWD92F3VdNDLkNV3B7Dv7hb9/PVsCVZnH+s6lsdqYZZL/7QvzyqB/eOlXRs5PE/opGkS84Qw=
[ssh.gitlab.freifunk-stuttgart.de]:22220 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKCt1kYnQIF17lAw7kRBAZOJFOS67ZQpBPsq79srBpwu
[gitlab.freifunk-stuttgart.de]:22220 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGNCe5DNM3hGY+oEy5JeGjCDg68YrpjFivgxIAuFvhJkRdPPQpnOURuXFt/wQ0PCF/MZHVLPKwSLEfI3pkQRAg2bLyXFnLMlaaC2Q+9eZoQ6K2+NFWlKiVd3EmYGMt2USFfgFiHKeA4NNhvqtINj5pk1usFRCuUYfAegIVQl+vIvW7rpdK68Y33MGPrP81XD0E7TpasQnqnxVIaTe+QG3oNlPCToE6e8sZij3lwKGmR0gopbvUjXjuY7SCIbzEwzNET+olVfVHWMlDwuzM8tUOSbOSg6mX+I1gTJXndxdGl/dSsI9HXAe1HAa3B7zN+SDwcz+ySxsAgS8loyJMT2SD
[gitlab.freifunk-stuttgart.de]:22220 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJPXKTRXP1BULVuiWD92F3VdNDLkNV3B7Dv7hb9/PVsCVZnH+s6lsdqYZZL/7QvzyqB/eOlXRs5PE/opGkS84Qw=
[gitlab.freifunk-stuttgart.de]:22220 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKCt1kYnQIF17lAw7kRBAZOJFOS67ZQpBPsq79srBpwu
Subproject commit 5e46753ad7564b3c2acea30de1b69e4a801a92c4
......@@ -39,7 +39,7 @@ msgstr ""
"Freifunk-Knoten in seiner Nähe zu verbinden. "
"<h2>Und was jetzt?</h2>"
"Weitere Informationen zur Freifunk-Community findest du auf den Webseiten von "
"<a href=\"http://www.freifunk-suttgart.de/\" target=\"_blank\">Freifunk Stuttgart</a> oder unter <a href=\"http://www.freifunk.net/\" target=\"_blank\">freifunk.net</a>. "
"<a href=\"http://www.freifunk-stuttgart.de/\" target=\"_blank\">Freifunk Stuttgart</a> oder unter <a href=\"http://www.freifunk.net/\" target=\"_blank\">freifunk.net</a>. "
"<dl> "
" <dt>Freifunk Community</dt> "
" <dd>Die Stuttgarter Freifunker vernetzen sich per Mailingliste. Hier kannst du Fragen stellen oder dich einbringen: <a href=\"https://lists.freifunk-stuttgart.de/listinfo/misc\" target=\"_blank\">lists.freifunk-stuttgart.de/listinfo/misc</a>.</dd> "
......
-- Generic features and packages for all devices
features({
'autoupdater',
'ebtables-filter-multicast',
'ebtables-filter-ra-dhcp',
'ebtables-limit-arp',
'mesh-batman-adv-15',
'mesh-vpn-fastd-l2tp',
'radvd',
'radv-filterd',
'respondd',
'status-page',
'web-advanced',
'web-logging',
'web-mesh-vpn-fastd',
'web-private-wifi',
'web-wizard',
})
packages({
'iwinfo',
'respondd-module-airtime',
'ffs-set-segment',
'gluon-config-mode-zip',
'ffac-ssid-changer',
'iwinfo',
})
-- Packages and features for devices which are not flagged as tiny
if not device_class('tiny') then
features({
'mesh-vpn-sqm',
'tls',
'web-cellular',
'wireless-encryption-wpa3'
})
packages({
'ffda-gluon-usteer'
})
end
-- Custom package lists
local pkgs_usb_hid = {
'kmod-usb-hid',
'kmod-hid-generic'
}
local pkgs_usb_serial = {
'kmod-usb-serial',
'kmod-usb-serial-ch341',
'kmod-usb-serial-cp210x',
'kmod-usb-serial-ftdi',
'kmod-usb-serial-pl2303'
}
local pkgs_usb_storage = {
'block-mount',
'blkid',
'kmod-fs-ext4',
'kmod-fs-ntfs',
'kmod-fs-vfat',
'kmod-usb-storage',
'kmod-usb-storage-extras', -- Card Readers
'kmod-usb-storage-uas', -- USB Attached SCSI (UAS/UASP)
'kmod-nls-base',
'kmod-nls-cp1250', -- NLS Codepage 1250 (Eastern Europe)
'kmod-nls-cp437', -- NLS Codepage 437 (United States, Canada)
'kmod-nls-cp850', -- NLS Codepage 850 (Europe)
'kmod-nls-cp852', -- NLS Codepage 852 (Europe)
'kmod-nls-iso8859-1', -- NLS ISO 8859-1 (Latin 1)
'kmod-nls-iso8859-13', -- NLS ISO 8859-13 (Latin 7; Baltic)
'kmod-nls-iso8859-15', -- NLS ISO 8859-15 (Latin 9)
'kmod-nls-iso8859-2', -- NLS ISO 8859-2 (Latin 2)
'kmod-nls-utf8' -- NLS UTF-8
}
local pkgs_usb_net = {
'kmod-mii',
'kmod-usb-net',
'kmod-usb-net-asix',
'kmod-usb-net-asix-ax88179',
'kmod-usb-net-cdc-eem',
'kmod-usb-net-cdc-ether',
'kmod-usb-net-cdc-mbim',
'kmod-usb-net-cdc-ncm',
'kmod-usb-net-cdc-subset',
'kmod-usb-net-dm9601-ether',
'kmod-usb-net-hso',
'kmod-usb-net-huawei-cdc-ncm',
'kmod-usb-net-ipheth',
'kmod-usb-net-kalmia',
'kmod-usb-net-kaweth',
'kmod-usb-net-mcs7830',
'kmod-usb-net-pegasus',
'kmod-usb-net-qmi-wwan',
'kmod-usb-net-rndis',
'kmod-usb-net-rtl8152',
'kmod-usb-net-sierrawireless',
'kmod-usb-net-smsc95xx',
}
local pkgs_pci = {
'pciutils'
}
local pkgs_pci_net = {
'kmod-bnx2'
}
if target('ath79') then
packages(pkgs_usb_serial)
end
if target('ipq40xx') then
packages(pkgs_usb_serial)
packages(pkgs_usb_storage)
end
if target('ipq806x') then
packages(pkgs_usb_serial)
packages(pkgs_usb_storage)
end
if target('mediatek') then
packages(pkgs_usb_serial)
packages(pkgs_usb_storage)
end
if target('mpc85xx') then
packages(pkgs_usb_serial)
packages(pkgs_usb_storage)
end
if target('ramips', 'mt7621') then
packages(pkgs_usb_serial)
end
if target('rockchip') then
-- No PCI / video
packages(pkgs_usb_net)
packages(pkgs_usb_serial)
packages(pkgs_usb_storage)
end
if target('sunxi') then
-- No PCI / video
packages(pkgs_usb_serial)
packages(pkgs_usb_storage)
end
-- Include all custom packages for RaspberryPi
if target('bcm27xx') then
packages(pkgs_pci)
packages(pkgs_usb_hid)
packages(pkgs_usb_net)
packages(pkgs_usb_serial)
packages(pkgs_usb_storage)
end
-- Include all custom packages for x86
if target('x86') then
packages(pkgs_pci)
packages(pkgs_pci_net)
packages(pkgs_usb_hid)
packages(pkgs_usb_net)
packages(pkgs_usb_serial)
packages(pkgs_usb_storage)
end
-- Network-activated setup-mode for NWA55AXE
if device({'zyxel-nwa55axe'}) then
packages({'ffda-network-setup-mode'})
broken(false)
end
-- OOM, high load without CT Firmware. Tested on AC Mesh Pro. Suspected also AC Mesh affected.
if device({'ubiquiti-unifi-ac-mesh', 'ubiquiti-unifi-ac-mesh-pro'}) then
packages({
'-kmod-ath10k',
'kmod-ath10k-ct-smallbuffers',
'-ath10k-firmware-qca988x-ct',
'-ath10k-firmware-qca988x',
'ath10k-firmware-qca988x-ct-full-htt',
})
end
if target('ramips', 'mt7621') then
-- reload wifi firmware twice a day
packages {
'ffac-mt7915-hotfix',
}
end
if target('mediatek', 'filogic') then
-- reload wifi firmware twice a day
packages {
'ffac-mt7915-hotfix',
}
end
GLUON_SITE_FEEDS='ffs'
GLUON_SITE_FEEDS='ffs community'
PACKAGES_FFS_REPO=https://github.com/freifunk-stuttgart/Gluon-Packages
PACKAGES_FFS_COMMIT=a63d3c042cde5af6f702d98bb89b6a0ccc4d1cb9
PACKAGES_FFS_REPO=https://gitlab.freifunk-stuttgart.de/firmware/gluon-packages.git
PACKAGES_FFS_COMMIT=30d7ca5999ac7f5e0e9a68afcbe7c9157c68dba1
PACKAGES_COMMUNITY_REPO=https://gitlab.freifunk-stuttgart.de/firmware/gluon-community-packages
PACKAGES_COMMUNITY_COMMIT=d8ef4f8e9ae5ccc91abd05853eefb650dc44c004
#!/bin/bash
set -eu
mydir=$(readlink -f "$(dirname "$0")/..")
make -s -C "$mydir/gluon" GLUON_SITEDIR="$mydir" list-targets | while read target; do
cat <<EOF
- TARGET: ${target}
EOF
done
#!/bin/bash
set -eu
readonly gluon_remote_upstream=https://github.com/freifunk-gluon/gluon.git
script_path=$(dirname $(readlink -f "$0"))
gluon_path=$(readlink -f "$script_path/../gluon")
tag_to_update_to="${1:-}"
if [ -z "$tag_to_update_to" ]; then
echo "Usage: $0 [tag to update to]"
exit 1
fi
verify_remotes() {
remote_upstream=$(git -C "$gluon_path" remote get-url upstream)
if [ "$remote_upstream" != "$gluon_remote_upstream" ]; then
echo "Upstream remote is not set up correctly. Please run:"
echo " git -C \"$gluon_path\" remote set-url upstream \"$gluon_remote_upstream\""
exit 1
fi
}
verify_remotes
git -C "$gluon_path" fetch origin --tags
git -C "$gluon_path" fetch upstream "$tag_to_update_to"
current_tag_name=$(git -C "$gluon_path" describe)
current_upstream_tag_name=${current_tag_name/-ffs*/}
git -C "$gluon_path" checkout -b "$tag_to_update_to-ffs"
git -C "$gluon_path" rebase -i "$current_upstream_tag_name" --onto FETCH_HEAD
fork_tagname="$tag_to_update_to-ffs0.1"
git -C "$gluon_path" tag -a "$fork_tagname" -m "Release $fork_tagname"
git -C "$gluon_path" push origin "$tag_to_update_to"
git -C "$gluon_path" push origin "$fork_tagname"
......@@ -11,20 +11,25 @@
ntp_servers = {
'fd21:b4dc:4b00::a38:1', -- gw01
'fd21:b4dc:4b00::123:1',
'fd21:b4dc:4b00::123:2',
'fd21:b4dc:4b00::123:3',
'fd21:b4dc:4b00::123:1',
'fd21:b4dc:4b00::123:2',
'fd21:b4dc:4b00::123:3',
},
opkg = {
extra = {
gluon = 'http://firmware.freifunk-stuttgart.de/gluon/archive/%GR/packages/gluon-%GS-%GR/%S',
},
},
regdom = 'DE',
wifi24 = {
channel = 1,
--disables 802.11b rates
supported_rates = {6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000},
basic_rate = {6000, 9000, 18000, 36000, 54000},
ap = {
ssid = 'Freifunk',
owe_ssid = 'owe.freifunk-stuttgart.de',
owe_transition_mode = false,
},
mesh = {
id = 'ffsmesh_batman',
......@@ -34,8 +39,11 @@
wifi5 = {
channel = 44,
outdoor_chanlist = "100-138",
ap = {
ssid = 'Freifunk',
owe_ssid = 'owe.freifunk-stuttgart.de',
owe_transition_mode = false,
},
mesh = {
id = 'ffsmesh_batman',
......@@ -43,17 +51,35 @@
},
},
ssid_changer = {
enabled = true,
switch_timeframe = 15,
first = 5,
prefix = 'FFS_Offline_',
suffix = 'nodename',
tq_limit_enabled = false,
tq_limit_max = 45,
tq_limit_min = 35
},
mesh = {
vxlan = false,
batman_adv = {
routing_algo = 'BATMAN_IV',
}
},
next_node = {
ip4 = '172.21.24.254',
ip6 = 'fd21:711::1',
mac = '02:00:0a:25:00:01',
},
mesh_vpn = {
enabled = true,
enabled = true,
mtu = 1340,
fastd = {
mtu = 1340,
configurable = true,
methods = {'salsa2012+umac'},
groups = {
......@@ -147,6 +173,9 @@
'4418436fe872b5746a6c86293afca7c6c9edba03eca3cac80fdfd82106092d7a', -- leonard
'0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are
'b7077095e9d3fc892db1c280b78b65d737700c9aea70a6998d6aad8b3146aaed', -- flip
'8cede21f8275b20add6cdff85fa1fbd710e0e4ccbd94faed43854a0533207a60', -- nrb
'6177c49629d26197f916c77fa7d7ba902500f20d6e4b02c621e3696d1ef10232', -- 0x4A6F
'b33f5356bf5bbbe5b2553d5c9ebec4732b8168ea9ffe63718b20fe6c8f513e29', -- Sid
},
},
beta = {
......@@ -159,6 +188,9 @@
'4418436fe872b5746a6c86293afca7c6c9edba03eca3cac80fdfd82106092d7a', -- leonard
'0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are
'b7077095e9d3fc892db1c280b78b65d737700c9aea70a6998d6aad8b3146aaed', -- flip
'8cede21f8275b20add6cdff85fa1fbd710e0e4ccbd94faed43854a0533207a60', -- nrb
'6177c49629d26197f916c77fa7d7ba902500f20d6e4b02c621e3696d1ef10232', -- 0x4A6F
'b33f5356bf5bbbe5b2553d5c9ebec4732b8168ea9ffe63718b20fe6c8f513e29', -- Sid
},
},
nightly = {
......@@ -171,8 +203,44 @@
'4418436fe872b5746a6c86293afca7c6c9edba03eca3cac80fdfd82106092d7a', -- leonard
'0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are
'b7077095e9d3fc892db1c280b78b65d737700c9aea70a6998d6aad8b3146aaed', -- flip
'8cede21f8275b20add6cdff85fa1fbd710e0e4ccbd94faed43854a0533207a60', -- nrb
'6177c49629d26197f916c77fa7d7ba902500f20d6e4b02c621e3696d1ef10232', -- 0x4A6F
'b33f5356bf5bbbe5b2553d5c9ebec4732b8168ea9ffe63718b20fe6c8f513e29', -- Sid
'4d4417f25702ca1dded74dde7510dab5c13fde3a105bb704bd2d2d250ece0109', -- gitlab runner 20200605
},
},
experimental = {
name = 'experimental',
mirrors = {
'http://[fd21:b4dc:4b00::a38:1]/gluon/experimental/sysupgrade', -- gw01
},
good_signatures = 1,
pubkeys = {
'4418436fe872b5746a6c86293afca7c6c9edba03eca3cac80fdfd82106092d7a', -- leonard
'0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are
'b7077095e9d3fc892db1c280b78b65d737700c9aea70a6998d6aad8b3146aaed', -- flip
'8cede21f8275b20add6cdff85fa1fbd710e0e4ccbd94faed43854a0533207a60', -- nrb
'6177c49629d26197f916c77fa7d7ba902500f20d6e4b02c621e3696d1ef10232', -- 0x4A6F
'b33f5356bf5bbbe5b2553d5c9ebec4732b8168ea9ffe63718b20fe6c8f513e29', -- Sid
'4d4417f25702ca1dded74dde7510dab5c13fde3a105bb704bd2d2d250ece0109', -- gitlab runner 20200605
},
},
},
},
usteer = {
network = {
enabled = true,
wireless = true,
wired = true,
update_interval = 5000,
update_timeout = 12
},
band_steering = {
enabled = true,
min_snr = -60,
interval = 40000
}
},
}
GLUON_FEATURES := \
autoupdater \
ebtables-filter-multicast \
ebtables-filter-ra-dhcp \
mesh-batman-adv-15 \
mesh-vpn-fastd \
radvd \
respondd \
alfred \
status-page \
web-advanced \
web-wizard
GLUON_SITE_PACKAGES := \
gluon-mesh-batman-adv-15 \
gluon-alfred \
gluon-respondd \
gluon-autoupdater \
gluon-config-mode-autoupdater \
gluon-config-mode-contact-info \
gluon-config-mode-core \
gluon-config-mode-geo-location \
gluon-config-mode-hostname \
gluon-config-mode-mesh-vpn \
gluon-config-mode-zip \
gluon-ebtables-filter-multicast \
gluon-ebtables-filter-ra-dhcp \
gluon-web-admin \
gluon-web-autoupdater \
gluon-web-wifi-config \
gluon-web-private-wifi \
gluon-web-mesh-vpn-fastd \
gluon-neighbour-info \
gluon-mesh-vpn-fastd \
gluon-radvd \
gluon-setup-mode \
gluon-status-page \
haveged \
iptables \
iwinfo \
ffs-set-segment \
ffs-watchdog
# add addition network drivers and usb support only to targes where disk space does not matter.
ifeq ($(GLUON_TARGET),x86-generic)
GLUON_SITE_PACKAGES += \
kmod-usb-core \
kmod-usb-ohci-pci \
kmod-usb2 \
kmod-usb-hid \
kmod-usb-net \
kmod-usb-net-asix \
kmod-usb-net-dm9601-ether \
kmod-sky2 \
kmod-r8169 \
kmod-forcedeth \
kmod-8139too \
kmod-atl2 \
kmod-igb
endif
DEFAULT_BUILD_DATE := $(shell date '+%Y-%m-%d')
BUILD_DATE ?= $(DEFAULT_BUILD_DATE)
FFS_BUILD_DATE ?= $(DEFAULT_BUILD_DATE)
DEFAULT_GLUON_RELEASE := 1.4+$(BUILD_DATE)-g.$(shell git -C $(GLUON_SITEDIR)/../ log --pretty=format:'%h' -n 1)-s.$(shell git -C $(GLUON_SITEDIR) log --pretty=format:'%h' -n 1)
DEFAULT_GLUON_RELEASE := 3.3+$(FFS_BUILD_DATE)-g.$(shell git -C $(GLUON_SITEDIR)/gluon log --pretty=format:'%h' -n 1)-s.$(shell git -C $(GLUON_SITEDIR) log --pretty=format:'%h' -n 1)
GLUON_LANGS := de en
......@@ -77,4 +16,7 @@ GLUON_REGION ?= eu
GLUON_PRIORITY ?= 0.1
#enable generation of images for ath10k devices with ibss mode
GLUON_ATH10K_MESH ?= 11s
GLUON_WLAN_MESH ?= 11s
# only build upgrade images for legacy devices
GLUON_DEPRECATED ?= upgrade