Skip to content

build falter images using precompiled openwrt imagebuilders.

Notifications You must be signed in to change notification settings

freifunk-berlin/falter-builter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overall Project Structure and Falter Repositories

The Falter project builds a modern OpenWrt-based firmware for Freifunk Berlin. We split our code on different repositories. For the beginning there are three main repositories you should know:

  • packages: This repo holds the source code for an OpenWrt package feed. All falter specific packets reside there, regardless if they are luci-apps or just command-line-apps. Everything should be bundled as a package. If you want to file an issue or fix a bug you probably want to go here.
  • repo_builder: In that repo there is a script which compiles the source codes from packages repo into a package feed. We use the dockerized OpenWrt-SDK for that.
  • builter: The builter assembles Freifunk images from the OpenWrt-imagebuilder and the pre-compiled package feed from repo-builder. If you want to include a new app into falter, you'd need to add it to the packagelists defined here.

falter-builter

This script packages falter-firmware from openwrt-imagebuilder and falter-feed. In comparison to the old buildsystem, it is almost insanely fast.

Utilisation

The script takes five positional arguments.

./build_falter [-p packageset] [-v version] [-t target] [-s subtarget] [-r router]

The parameters for packageset, version and target are mandatory. The other ones optional

If you give packageset, release and no subtarget, it will generate all subtargets of that certain target and so on.

If you like to build only one specific router-profile, you must give all the arguments before.

version takes the falter-version you would like to build. This maps to the feed-directories avaiable at buildbot.

After the buildprocess finished, you will find the images in firmwares/.

Quickstart: build your own image

Lets assume you'd like to build a stable-release-tunneldigger-image for your GL-AR150 router. To achieve that, you should invoke the buildscript in that way:

./build_falter -p packageset/1.2.2/tunneldigger.txt -v 1.2.2 -t ath79 -s generic -r glinet_gl-ar150

Find your routers profile

If you don't know the profile name for your router, you should use -l to find it. That option will show you a list of all routers with there profiles. Pick the profile-name there and give it to the script with the -r parameter.

./build_falter -p packageset/1.2.2/tunneldigger.txt -v 1.2.2 -t ath79 -s generic -l

In the router list you will find something similar like that:

glinet_gl-ar150:
    GL.iNet GL-AR150
    SupportedDevices: glinet,gl-ar150 gl-ar150

The profile name is at the first line. Omit the colon:

./build_falter -p packageset/1.2.2/tunneldigger.txt -v 1.2.2 -t ath79 -s generic -r glinet_gl-ar150

Use custom imagebuilder

You can use your custom imagebuilder with falter too. This comes in handy for development and for using features, that are not in regular OpenWrt yet. To get that you should call builter like that:

./build_falter -v snapshot -p packageset/snapshot/tunneldigger.txt -i openwrt-imagebuilder-21.02.0-rc3-octeon.Linux-x86_64.tar.xz -r ubnt_edgerouter

NOTE: The imagebuilder must be in the root of builter-directory. It ist not supported to have it anywhere else.

Use builter with buildbot

For the image generation with buildbot, builter should be invoked like this:

./build_falter -p all -v <release> -t <target>

The argument all will signalise builter to generate all three flavours of images. In firmwares/ the images get sorted by package-list. Below the packagelist-directorys, the regular hirachy $TARGET/$SUBTARGET applies.

CAUTION: Argument all will only work if at least release and target are specified.