Authors Luca Ceresoli,
License CC-BY-SA-3.0
License compliance for embedded Linux
devices with Buildroot
Luca Ceresoli — AIM Sportline
luca@lucaceresoli.net
https://lucaceresoli.net
FOSDEM 2020
About me
• Embedded Linux engineer
at AIM Sportline
www.aim-sportline.com
• Develop products on
custom hardware
• Kernel, drivers,
bootloader, FPGA
• Integration, build system
• Open source enthusiast
• Contributor to the Linux
kernel, U-Boot, Buildroot
and others
1
Buildroot
Build system
Compiler
Linker Bootloader
Debugger Embedded
Kernel
Bootloader Device
Kernel Root FS
Libraries Buildroot
Applications Host tools
Tools
End user
2
Demo:
Buildroot basics
2
Open-source licensing
Typical license families
Permissive Copyleft
(BSD, MIT, X11…) (GPL, LGPL, AGPL…)
Use, modify, redistribute Use, modify, redistribute
Provide license text Provide license text
Provide source code
3
Caveats
• There are many variations
• License incompatibility
• Info on websites etc might be inaccurate
→ Check the license in the source code
4
So, what do I have to do?
• Provide license text
• Store source code archives (provide them on request)
• Including the “scripts used to control compilation and
installation”
• I.e. the entire buildsystem
5
Compliance tools in Buildroot
Compliance tools in Buildroot
Compiler
Linker Bootloader
Debugger Embedded
Kernel
Bootloader Device
Kernel Root FS
Libraries Buildroot
Applications Host tools
Tools
Legal info
License text
Source code End user
...
6
Demo:
make legal-info
6
Implementing legal-info
in Buildroot packages
Add license info to a package
package/vlc/vlc.mk
VLC_LICENSE = GPL-2.0+, LGPL-2.1+
VLC_LICENSE_FILES = COPYING COPYING.LIB
package/vlc/vlc.hash
sha256 8177f975...1b880643 COPYING
sha256 dc626520...032fe551 COPYING.LIB
7
Your own closed source program
package/myapp/myapp.mk
MYAPP_LICENSE = Proprietary
MYAPP_REDISTRIBUTE = NO
8
Source from unusual locations
• Source code is not saved when using
• <PKG>_OVERRIDE_SRCDIR
• <PKG>_SITE_METHOD = local
→ Avoid them when releasing
9
ACTUAL_SOURCES
• For some special packages:
• <PKG>_SOURCE contains binaries
• <PKG>_ACTUAL_SOURCE points to the tarball with the actual
sources
• Only used for pre-built external toolchains
10
Conclusions
References
• The Buildroot user manual
(https://buildroot.org/docs.html)
§ 12. Legal notice and licensing
§ 17.5. Infrastructure for packages with specific build systems
• License Compliance in Embedded Linux with the Yocto
Project, Paul Barker, ELCE 2019 ( slides , video )
• Mostly buildsystem-agnostic
11
Thank you for your attention!
Luca Ceresoli
Questions? luca@lucaceresoli.net
https://lucaceresoli.net
© Copyright 2020, Luca Ceresoli
Slides released under
Creative Commons Attribution - Share Alike 3.0 License
https://creativecommons.org/licenses/by-sa/3.0/
12
Extra slides
Typical license families
n i
oma
e
issiv
lic d
L
m
LGP
GPL
Pub
Per
✓ ✓ ✓ ✓ Can use, modify
✓ ✓ ✓ ✓ Can redistribute
Must provide license text
Must provide source code
Derived work becomes GPL