No description
  • BitBake 87.8%
  • Python 4.6%
  • C++ 4.3%
  • HTML 1.1%
  • JavaScript 0.9%
  • Other 1.3%
Find a file
Daniel F. Dickinson 7a02a0b54d
docs: add note about Yocto-Doky
Signed-off-by: Daniel F. Dickinson <dfdpublic@wildtechgarden.ca>
2025-06-23 01:37:38 -04:00
.cspell docs: add note about Yocto-Doky 2025-06-23 01:37:38 -04:00
electron-test repo: add initial commit 2025-04-28 19:41:22 -04:00
meta-addons repo: add initial commit 2025-04-28 19:41:22 -04:00
meta-clang@eaa08939ea repo: add initial commit 2025-04-28 19:41:22 -04:00
meta-lts-mixins@65b35821c8 repo: add initial commit 2025-04-28 19:41:22 -04:00
meta-miscfix-mixins repo: add initial commit 2025-04-28 19:41:22 -04:00
meta-openembedded@e92d0173a8 repo: add initial commit 2025-04-28 19:41:22 -04:00
meta-raspberrypi@3b27c95c16 repo: add initial commit 2025-04-28 19:41:22 -04:00
poky@c162696dae repo: add initial commit 2025-04-28 19:41:22 -04:00
xorg-conf/etc/x11/xorg.conf.d repo: add initial commit 2025-04-28 19:41:22 -04:00
yocto-conf repo: add initial commit 2025-04-28 19:41:22 -04:00
.gitignore repo: add initial commit 2025-04-28 19:41:22 -04:00
.gitmodules repo: add initial commit 2025-04-28 19:41:22 -04:00
.markdownlint2.jsonc repo: add initial commit 2025-04-28 19:41:22 -04:00
awk-gpl-3 repo: add initial commit 2025-04-28 19:41:22 -04:00
bblayers.conf.old repo: add sample bblayers.conf file 2025-04-28 20:41:40 -04:00
cspell.json repo: add initial commit 2025-04-28 19:41:22 -04:00
LICENSE repo: add LICENSE 2025-04-28 19:56:53 -04:00
local.conf.old repo: add initial commit 2025-04-28 19:41:22 -04:00
README.md docs: add note about Yocto-Doky 2025-06-23 01:37:38 -04:00
yocto-failed-electron.code-workspace repo: add initial commit 2025-04-28 19:41:22 -04:00

Yocto Test

Description

This project is a failed attempt to get ElectronJS working inside a Yocto project.

However, it resulted in some useful bits, describe below. Since then the author has started a new project called Yocto-Doky, which is a more complete and better done Yocto framework.

Results

It turns out Electron is huge and has a very large number of dependencies that have been modified from upstream and are therefore must also be downloaded and managed in order to build Electron.

In addition Electron's developers actively discourage building from source and are not supportive of attempts to build from source.

Further, attempting track the licenses of the myriad dependencies in an automated fashion, as is built into Yocto, is time-consuming and not supported.

This makes ElectronJS an unsuitable project for embedded development, where there tends to be per-device configuration, and therefore limited or no ability to use the prebuilt binaries supplied by the ElectronJS project.

But some useful bits

Fixes and tweaks for building mixed open source / proprietary firmware

In the process of making this attempt, the author Daniel F. Dickinson created a meta-miscfix-mixins layer which makes it easier to create a Yocto-based firmware that does not have any GPLv3 or LGPLv3 code. This is important (along with avoiding similar licenses) because those licenses include the condition that all the code which in the firmware has to be released under the same license. This is problematic when the code is intended to be proprietary.

Parts of the project (like this repository) which are derivatives of the original open source code are not a problem to release, and in fact doing so continues to be a requirement of much of the code base's licensing.

Some interesting code to pre-patch a codebase with supplied patches

Electron includes a number of patches on upstream projects, and these need to be applied in order for the upstream project to be usable for Electron's purposes. So we develop a means to apply Electron's patches to it's upstream sources (pre-patch) that is reliable and doesn't require pulling the patches into the Yocto build. (That would create a huge patch maintenance burden).

This method also maintains the ability to apply Yocto-specific patches on top of Electron's patches and code.

Build prerequisites

See Yocto Project Quick Build

sudo apt install build-essential chrpath cpio debianutils diffstat file gawk gcc git iputils-ping libacl1 liblz4-tool locales python3 python3-git python3-jinja2 python3-pexpect python3-pip python3-subunit socat texinfo unzip wget xz-utils zstd python3-websockets

Target machine

Currently configured with Raspberry Pi 5 as target

Electron is not built

The electron code is currently not included in the image as the build of Electron currently fails due to not having the code for most of the dependencies in the project either included in the project, or as part of the download process.

Builds a modified Poky reference image

Building core-image-x11 results in the build of a Poky reference image which launches a rootless X server with xterm pretending to be matchbox-terminal, and busybox ash pretending to be bash.

This is done since matchbox-terminal and bash are both GPLv3 licensed, and we want to avoid that.

TODO: Repo configuration and building

To be added.