Compare commits

..

No commits in common. "main" and "v2018.2.1.0" have entirely different histories.

11 changed files with 98 additions and 149 deletions

View file

@ -2,7 +2,7 @@
In the next two commands replace GLUON_VERSION and SITE_VERSION with the actual version numbers.
$ git clone -b GLUON_VERSION https://github.com/freifunk-gluon/gluon.git
$ git clone -b SITE_VERSION https://codeberg.org/freifunkhamburg/site-ffhh.git
$ git clone -b SITE_VERSION https://github.com/freifunkhamburg/site-ffhh.git
$ cd site-ffhh
To build the firmware into the subdirectory firmware:
@ -15,21 +15,6 @@ Please see [the official Gluon repository](https://github.com/freifunk-gluon/glu
#### Gluon versions used for specific Hamburg Freifunk Firmware builds
- v2023.2.5.0: site-ffhh: v2023.2.5.0, gluon: v2023.2.5
- v2023.2.4.0: site-ffhh: v2023.2.4.0, gluon: v2023.2.4
- v2023.2.2.1: site-ffhh: v2023.2.2.0, gluon: v2023.2.2 (add mediatek-filogic Routers)
- v2023.2.2.0: site-ffhh: v2023.2.2.0, gluon: v2023.2.2
- v2023.1.2.0: site-ffhh: v2023.1.2.0, gluon: v2023.1.2
- v2022.1.4.0: site-ffhh: v2022.1.4.0, gluon: v2022.1.4
- v2022.1.3.0: site-ffhh: v2022.1.3.0, gluon: v2022.1.3 (nur experimental verteilt)
- v2021.1.2.0: site-ffhh: v2021.1.2.0, gluon: v2021.1.2
- v2021.1.1.0: site-ffhh: v2021.1.1.0, gluon: v2021.1.1
- v2020.2.3.0: site-ffhh: v2020.2.3.0, gluon: v2020.2.3
- v2020.2.2.0: site-ffhh: v2020.2.2.0, gluon: v2020.2.2
- v2020.1.4.0: site-ffhh: v2020.1.4.0, gluon: v2020.1.4
- v2020.1.3.0: site-ffhh: v2020.1.3.0, gluon: v2020.1.3
- v2019.1.2.0: site-ffhh: v2019.1.2.0, gluon: v2019.1.2
- v2018.2.3.0: site-ffhh: v2018.2.3.0, gluon: v2018.2.3
- v2018.2.1.0: site-ffhh: v2018.2.1.0, gluon: v2018.2.1
- v2018.1.4.2: site-ffhh: v2018.1.4.2, gluon: v2018.1.4
- v2018.1.4.1: site-ffhh: v2018.1.4.1, gluon: v2018.1.4

View file

@ -1,5 +1,3 @@
GLUON_RELEASE="v2023.2.5.0"
targets="ath79-generic ath79-nand ath79-mikrotik bcm27xx-bcm2708 bcm27xx-bcm2709 ipq40xx-generic ipq40xx-mikrotik ipq806x-generic lantiq-xrx200 lantiq-xway mediatek-filogic mediatek-mt7622 mpc85xx-p1010 mpc85xx-p1020 ramips-mt7620 ramips-mt7621 ramips-mt76x8 rockchip-armv8 sunxi-cortexa7 x86-generic x86-geode x86-legacy x86-64"
broken_images=(
'*dir*615*d*'
)
GLUON_RELEASE="v2018.2.1.0"
GLUON_BRANCH="stable"
targets="ar71xx-generic ar71xx-nand ar71xx-tiny brcm2708-bcm2708 brcm2708-bcm2709 mpc85xx-generic ramips-mt7620 ramips-mt7621 ramips-mt76x8 ramips-rt305x sunxi-cortexa7 x86-64 x86-generic x86-geode"

View file

@ -2,16 +2,14 @@
set -e
function announce () {
echo '############################' "$@" >&2
echo '############################' $* >&2
}
function usage () {
echo "Usage: $0 -g GLUON_PATH" >&2
echo " -g GLUON_PATH Path to a checkout of the gluon repository." >&2
echo " -t TARGETS Comma separated list of gluon targets to build" >&2
echo " -a Automatically detect and build all targets." >&2
echo " -o OUT_PATH Path to the firmware output directory. Default: ${gluon_out}" >&2
echo " -s SIGNATURE Sign firmware with signature" >&2
echo " -stable Set GLUON_AUTOUPDATER_BRANCH=stable" >&2
echo " -b BROKEN=1" >&2
echo " -v verbose" >&2
echo " -j JOBS Run build with -jJOBS. Default: ${proc}" >&2
@ -22,9 +20,6 @@ gluon_out="${HOME}/firmware"
while [ $# -gt 0 ]; do
case "$1" in
-a)
auto_targets=1
;;
-g)
gluon_path="$2"
shift
@ -41,9 +36,6 @@ while [ $# -gt 0 ]; do
signature="$2"
shift
;;
-stable)
export GLUON_AUTOUPDATER_BRANCH=stable
;;
-b)
export BROKEN=1
;;
@ -68,66 +60,48 @@ if [ -z "$gluon_path" ]; then
exit 1
fi
gluon_path=$(realpath "$gluon_path")
gluon_out=$(realpath "$gluon_out")
site_path=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
gluon_path=$(realpath $gluon_path)
gluon_out=$(realpath $gluon_out)
site_path=$(realpath $(dirname $BASH_SOURCE))
announce GLUON: "$gluon_path" >&2
announce FFHH SITE PATH: "$site_path" >&2
announce GLUON: $gluon_path >&2
announce FFHH SITE PATH: $site_path >&2
pushd "$site_path"
# shellcheck source=/dev/null
pushd $site_path
. ./build.conf
GLUON_AUTOUPDATER_BRANCH="${GLUON_AUTOUPDATER_BRANCH:-experimental}"
[ "${GLUON_AUTOUPDATER_BRANCH}" = "experimental" ] && GLUON_RELEASE="${GLUON_RELEASE}~exp${BUILD_DATE:-$(date +%Y%m%d)}"
[ "${GLUON_BRANCH}" = "experimental" ] && GLUON_RELEASE="${GLUON_RELEASE}~exp$(date +%Y%m%d)"
export GLUON_RELEASE
export GLUON_AUTOUPDATER_BRANCH
export GLUON_SITEDIR="${site_path}"
export GLUON_OUTPUTDIR="${gluon_out}/${GLUON_RELEASE}/${GLUON_AUTOUPDATER_BRANCH}"
export GLUON_BRANCH
# if a list of build targets has been supplied, only build those
targets="$(echo "${build_targets:-$targets}" | sed -e 's_,_ _g')"
announce The following targets will be generated: $targets >&2
popd
announce GLUON Variables:
env | egrep '^GLUON' | sort
pushd "${gluon_path}"
announce Starting make update...
export GLUON_SITEDIR="${site_path}"
export GLUON_OUTPUTDIR="${gluon_out}/${GLUON_RELEASE}/${GLUON_BRANCH}"
rm -rf "${GLUON_OUTPUTDIR}"
mkdir -p "${GLUON_OUTPUTDIR}"
make update
# Try to install patches. I wasn't able to figure out how patches in gluon/site/patches work.
for p in "${site_path}"/patches/*.patch; do
if [ -e "$p" ] && [ ! -f "${gluon_path}/${p##*/}" ]; then
announce "Installing patch $p"
patch -p1 < "$p"
for p in ${site_path}/patches/*.patch; do
if [ -e "$p" -a ! -f "${gluon_path}/${p##*/}" ]; then
announce Installing patch $p
patch -p1 < $p
touch "${gluon_path}/${p##*/}"
fi
done
if [ "$auto_targets" = "1" ]; then
# detect available targets
targets="$(make list-targets | sort | xargs)"
else
# if a list of build targets has been supplied, only build those
targets="$(echo "${build_targets:-$targets}" | sed -e 's_,_ _g')"
fi
announce "The following targets will be generated: $targets" >&2
for t in $targets; do
announce "Starting build for $t..." >&2
make "-j$(nproc)" "GLUON_TARGET=$t" $verbose
done
# Remove known-broken images
# shellcheck disable=SC2154
for broken_image in "${broken_images[@]}"; do
announce "Removing broken image ${broken_image}..."
find "${GLUON_OUTPUTDIR}/images" -iname "${broken_image}" \( -type f -o -type l \) -ls -exec rm -f {} \;
announce Starting build for $t... >&2
make -j$(nproc) GLUON_TARGET=$t $verbose
done
# Generate the images.list
# shellcheck disable=SC2094
( cd "${GLUON_OUTPUTDIR}/images" && ( echo "RELEASE=${GLUON_RELEASE}"; find . -type f ! -iname '*.manifest' ! -iname images.list; find . -type l ! -iname '*.manifest' ) | sed -e 's!^\./\(.*\)$!\1!' -e 's!/! !g' | sort > images.list )
( cd "${GLUON_OUTPUTDIR}/images" && ( find -type f ! -iname '*.manifest' ! -iname images.list; find -type l ! -iname '*.manifest' ) | sed -e 's!^\./\(.*\)$!\1!' -e 's!/! !g' | sort > images.list )
announce Building manifest...
make manifest
if [ -n "${signature}" ]; then
if [ "$GLUON_AUTOUPDATER_BRANCH" == "experimental" ]; then
if [ "$GLUON_BRANCH" == "experimental" ]; then
announce Signing...
"${gluon_path}/contrib/sign.sh" "${signature}" "${GLUON_OUTPUTDIR}/images/sysupgrade/experimental.manifest"
else

View file

@ -33,9 +33,6 @@
mesh = {
vxlan = false,
batman_adv = {
routing_algo = "BATMAN_IV",
},
},
mesh_vpn = {
@ -45,27 +42,27 @@
peers = {
gateway01 = {
remotes = { '"gw01-new.hamburg.freifunk.net" port 10007' },
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
},
gateway02 = {
remotes = { '"gw02-new.hamburg.freifunk.net" port 10007' },
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
},
gateway03 = {
remotes = { '"gw03-new.hamburg.freifunk.net" port 10007' },
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
},
gateway04 = {
remotes = { '"gw04-new.hamburg.freifunk.net" port 10008' },
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
},
gateway05 = {
remotes = { '"gw05-new.hamburg.freifunk.net" port 10008' },
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
},
gateway06 = {
remotes = { '"gw06-new.hamburg.freifunk.net" port 10008' },
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
},
},
},

View file

@ -33,9 +33,6 @@
mesh = {
vxlan = false,
batman_adv = {
routing_algo = "BATMAN_IV",
},
},
mesh_vpn = {
@ -45,26 +42,26 @@
peers = {
gateway01 = {
remotes = { '"gw01-new.hamburg.freifunk.net" port 10009' },
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
},
gateway02 = {
remotes = { '"gw02-new.hamburg.freifunk.net" port 10009' },
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
},
gateway03 = {
remotes = { '"gw03-new.hamburg.freifunk.net" port 10009' },
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
},
gateway04 = {
remotes = { '"gw04-new.hamburg.freifunk.net" port 10010' },
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
},
gateway05 = {
remotes = { '"gw05-new.hamburg.freifunk.net" port 10010' },
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
},
gateway06 = {
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
remotes = { '"gw06-new.hamburg.freifunk.net" port 10010' },
},
},

View file

@ -33,9 +33,6 @@
mesh = {
vxlan = false,
batman_adv = {
routing_algo = "BATMAN_IV",
},
},
mesh_vpn = {
@ -45,27 +42,27 @@
peers = {
gateway01 = {
remotes = { '"gw01-new.hamburg.freifunk.net" port 10003' },
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
},
gateway02 = {
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
remotes = { '"gw02-new.hamburg.freifunk.net" port 10003' },
},
gateway03 = {
remotes = { '"gw03-new.hamburg.freifunk.net" port 10003' },
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
},
gateway04 = {
remotes = { '"gw04-new.hamburg.freifunk.net" port 10004' },
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
},
gateway05 = {
remotes = { '"gw05-new.hamburg.freifunk.net" port 10004' },
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
},
gateway06 = {
remotes = { '"gw06-new.hamburg.freifunk.net" port 10004' },
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
},
},
},

View file

@ -33,9 +33,6 @@
mesh = {
vxlan = false,
batman_adv = {
routing_algo = "BATMAN_IV",
},
},
mesh_vpn = {
@ -45,27 +42,27 @@
peers = {
gateway01 = {
remotes = { '"gw01-new.hamburg.freifunk.net" port 10005' },
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
},
gateway02 = {
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
remotes = { '"gw02-new.hamburg.freifunk.net" port 10005' },
},
gateway03 = {
remotes = { '"gw03-new.hamburg.freifunk.net" port 10005' },
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
},
gateway04 = {
remotes = { '"gw04-new.hamburg.freifunk.net" port 10006' },
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
},
gateway05 = {
remotes = { '"gw05-new.hamburg.freifunk.net" port 10006' },
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
},
gateway06 = {
remotes = { '"gw06-new.hamburg.freifunk.net" port 10006' },
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
},
},
},

View file

@ -1,37 +0,0 @@
features({
'autoupdater',
'config-mode-domain-select',
'ebtables-filter-multicast',
'ebtables-filter-ra-dhcp',
'mesh-batman-adv-15',
'mesh-vpn-fastd',
'web-private-wifi',
'radv-filterd',
'respondd',
'status-page',
'web-advanced',
'web-wizard',
})
if not device_class('tiny') then
features({
'wireless-encryption-wpa3',
})
end
packages({
'-gluon-config-mode-geo-location',
'-gluon-config-mode-contact-info',
'gluon-ebtables-source-filter',
'gluon-upgrade-static-interface-ffhh',
'gluon-web-mesh-vpn-fastd',
'iwinfo',
})
if target('x86') then
packages({
'nano',
'htop',
'ethtool',
})
end

View file

@ -1,4 +1,5 @@
GLUON_SITE_FEEDS='ffhh_packages'
PACKAGES_FFHH_PACKAGES_REPO=https://codeberg.org/freifunkhamburg/ffhh-packages.git
PACKAGES_FFHH_PACKAGES_COMMIT=eb99353a88b399583f46288485d05ca8d53cd1ac
PACKAGES_FFHH_PACKAGES_REPO=git://github.com/freifunkhamburg/ffhh-packages.git
PACKAGES_FFHH_PACKAGES_COMMIT=ef9fcc1222f74c3c045b1450537a4b8b80efb56c

View file

@ -12,6 +12,7 @@
default_domain = 'ffhh_nowe',
opkg = {
lede = 'http://lede.opkg.services.ffhh/snapshots/packages/%A',
extra = {
modules = 'http://updates.hamburg.freifunk.net/multi/archive/%GR/packages/gluon-%GS-%GR/%S',
},
@ -24,6 +25,9 @@
wifi24 = {
channel = 1,
supported_rates = {6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000},
basic_rate = {6000, 9000, 18000, 36000, 54000},
mesh = {
mcast_rate = 12000,
},
@ -31,7 +35,6 @@
wifi5 = {
channel = 44,
outdoor_chanlist = "100-140",
mesh = {
mcast_rate = 12000,
},
@ -39,9 +42,9 @@
mesh_vpn = {
enabled = true,
mtu = 1312,
fastd = {
configurable = true,
mtu = 1312,
methods = {'salsa2012+umac'},
groups = {
backbone = {

41
site.mk
View file

@ -1,7 +1,44 @@
GLUON_MULTIDOMAIN := 1
GLUON_DEPRECATED := upgrade
GLUON_AUTOUPDATER_ENABLED ?= 1
GLUON_SITE_PACKAGES := -gluon-config-mode-geo-location \
-gluon-config-mode-contact-info \
gluon-ebtables-source-filter \
gluon-web-mesh-vpn-fastd \
haveged \
iptables \
iwinfo
GLUON_FEATURES := \
autoupdater \
config-mode-domain-select \
ebtables-filter-multicast \
ebtables-filter-ra-dhcp \
ebtables-limit-arp \
mesh-batman-adv-15 \
mesh-vpn-fastd \
radvd \
respondd \
status-page \
web-advanced \
web-wizard
# EXTRA_SOFTWARE_TOOLS_01
EXTRA_SOFTWARE_TOOLS_01 := \
nano \
htop \
ethtool
# x86
ifeq ($(GLUON_TARGET),x86-generic)
GLUON_SITE_PACKAGES += \
$(EXTRA_SOFTWARE_TOOLS_01)
endif
# x86-64
ifeq ($(GLUON_TARGET),x86-64)
GLUON_SITE_PACKAGES += \
$(EXTRA_SOFTWARE_TOOLS_01)
endif
GLUON_PRIORITY ?= 7