1
0
Fork 0
mirror of https://github.com/pygos/build.git synced 2024-11-25 12:20:42 +01:00
No description
Find a file
David Oberhollenzer 2fb62ec2f1 Update unfuck_libtool function
We tell the autoconf configure script that we are going to install stuff
to prefix "/" with libdir being set to "/lib", so the script ends up writing
"libdir='/lib'" to the libtool *.la scripts.

This is all fine and dandy until we do a 'make install' with DESTDIR set to
our actual package deploy directory. Libtool goes "OMG WTF we aren't
instaling to / afterall" and thinks it needs to do a relinking phase.

During relinking, it passes "-L$libdir" to gcc, which ends up as "-L/lib".
Now, gcc tries to link against local system libraries. Best case, the build
breaks and we know something stupid happened. It really bites us if we try
to cross compile from e.g. x86 to x86.

Until now, it worked to simply patch the *.la scripts before 'make install',
like other distros do, but recent versions of util-linux now ship with a
newer version of the libtool script which simply regenerates the *.la files.

This commit adds an extension to the patch script that patches the actuall
libtool script itself.

Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
2019-01-17 19:55:32 +01:00
docs Add extra config flags for binutils 2019-01-13 02:39:05 +01:00
layer Fix toolchain configuration for alix bsp 2019-01-13 02:39:49 +01:00
pkg Fix typo in OpenSSL build script, propperly add hardening flags 2019-01-14 09:05:41 +01:00
product Add configuration for testing with qemu 2018-09-30 01:28:33 +02:00
util Update unfuck_libtool function 2019-01-17 19:55:32 +01:00
.gitignore Initial commit 2018-01-29 10:17:30 +01:00
check_update.sh Fix missing LAYERCONF in check_update script 2018-09-27 23:51:15 +02:00
LICENSE Add license file 2018-03-24 21:14:29 +01:00
mk.sh Restructure build system configuration 2018-09-23 16:19:52 +02:00
README.md Update documentation 2018-10-07 16:35:25 +02:00

Pygos GNU/Linux

Overview

This directory contains the build system for Pygos GNU/Linux, a small, heavily customizable operating system for embedded devices and other special purpose systems.

The build system generates a compressed, read only root filesystem image, boot loader, kernel binary and a setup script for installing the system on the target board, all bundled up in a release tar ball.

An additional disk partition or UBI volume is created for mutable configuration files with overlay mount points for directories like /etc or /var/lib.

For details on the Pygos file system layout, see docs/filesystem.md.

An automated firmware update mechanism is currently still in development. For details, see docs/update.md.

The build system in this directory downloads the necessary source packages, builds a cross compiler toolchain and compiles the entire system from scratch for the intended target.

For details on how the build system works or how to add or configure packages, see docs/build.md.

For an overview of the available documentation see docs/index.md.

By the way, before you ask: the default root password for the demo setup is reindeerflotilla. The baud rate on the ALIX board is set to 38400 and on all other boards to 115200.

The wireless network is called Pygos Demo Net and the password is righteous.

Target configuration

The Pygos build system is driven by toolchain and package configurations that are split across multiple layers.

From the product name, a layer configuration file in the product sub directory is read, specifying what configuration layers to use and in what order (later layers can override earlier layers).

The actual configuration for the build system is in the coresponding sub directories in layer/<name>.

For details on the configuration layers see docs/layers.md.

Demo configuration

The system currently contains configurations for the following products:

  • qemu-test - A simple target for testing with Qemu (64 bit x86). The boot partition is a directory that is exposed as VFAT formated virtio drive. The overlay partition is a local directory mounted via 9PFS via virtio.

  • router-alix - A pc-engines ALIX board based router (32 bit x86). A DHCP server serves IP addresses on the first two interfaces and configures the board as default gateway and DNS server. DNS queries are resulved using a local unbound resolver. The remaining interface is configured via DHCP and packets from the first two are NAT translated and forwarded. The two ports have different IP subnets and are not allowed to talk to each other. A local SSH server can be reached via the first two ports. A user has to be added first, since root login is disabled. A local Nginx web server can be reached via the first two ports that serves a simple demo landing page.

  • router-rpi3 - A Raspberry Pi 3 based wireless access point (32 bit ARM). A DHPC server serves IP addresses and configures the board as default gateway and DNS server. DNS queries are resolved using a local unbound resolver. The ethernet interface is configured via DHCP and packets are NAT translated and forwarded. A local SSH server can be reached on the WLAN interface. A user has to be added first, since root login is disabled. A local Nginx web server can be reached on the WLAN interface that serves a simple demo landing page.

How to build the system

The system can be built by running the mk.sh script as follows:

mk.sh <product>

This will start to download and build the cross toolchain and system in the current working directory. The command can (and should) be run from somewhere outside the source tree.

Once the script is done, the final release package is stored in the following location (relative to the build directory):

<product>/deploy/release-<board>/release-<board>.tar.gz

Directory overview

The build system directory contains the following files and sub directories:

  • docs/ Contains further documentation that goes into more detailed aspects of the build system and the final Pygos installation itself.
  • layer/ Contains the layer specific configuration files. E.g. layer/bsp-alix/ contains a base configuration for building images for the ALIX board.
  • pkg/ Contains package build scripts. Each package occupies a sub directory with a script named "build" that is used to download, compile and install the package.
  • product/ Contains product configurations. E.g. product/router-alix.layers holds the list of layers to apply to build the router-alix product.
  • util/ Contains utility scripts used by mk.sh
  • LICENSE A copy of the GNU GPLv3
  • mk.sh The main build script that builds the entire system
  • README.md This file