mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 08:41:13 -07:00
Added SPDX
This commit is contained in:
@@ -5,5 +5,14 @@ the associated recipe (.bb file) unless otherwise stated.
|
|||||||
See:
|
See:
|
||||||
COPYING.MIT (MIT)
|
COPYING.MIT (MIT)
|
||||||
|
|
||||||
|
The code in this repository that is not layer metadata is MIT licensed:
|
||||||
|
|
||||||
|
forgetest/ the release acceptance tool (see forgetest/LICENSE)
|
||||||
|
scripts/ the release, install and bench scripts
|
||||||
|
fixture/ the bench actuator firmware, excluding
|
||||||
|
fixture/managed_components/, which carries its own licenses
|
||||||
|
|
||||||
|
Every file in those directories states MIT in its own header.
|
||||||
|
|
||||||
License information for any other files is either explicitly stated
|
License information for any other files is either explicitly stated
|
||||||
or defaults to GPL version 2.
|
or defaults to GPL version 2.
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
# forgefixture: build, flash and watch the bench actuator's firmware.
|
# forgefixture: build, flash and watch the bench actuator's firmware.
|
||||||
#
|
#
|
||||||
# ./fixture.sh env fixture.env from the example, with a fresh API key
|
# ./fixture.sh env fixture.env from the example, with a fresh API key
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
* Written by Scott Wiederhold
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*/
|
||||||
/* forgefixture firmware version, reported by GET /. */
|
/* forgefixture firmware version, reported by GET /. */
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
# The host test of the fixture's policy: needs only a C compiler.
|
# The host test of the fixture's policy: needs only a C compiler.
|
||||||
set -e
|
set -e
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
ForgeFIRM release acceptance tool (forgetest/) and the bench scripts it
|
||||||
|
drives (scripts/bench/).
|
||||||
|
|
||||||
|
Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
Written by Scott Wiederhold
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished
|
||||||
|
to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: forgetest
|
# Provides: forgetest
|
||||||
# Required-Start: $network forgectrl
|
# Required-Start: $network forgectrl
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""forgetest - the ForgeFIRM release acceptance tool.
|
"""forgetest - the ForgeFIRM release acceptance tool.
|
||||||
|
|
||||||
A daemon on the dev image (HTTP :8090) that runs the acceptance catalog
|
A daemon on the dev image (HTTP :8090) that runs the acceptance catalog
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""forgetest daemon entry point.
|
"""forgetest daemon entry point.
|
||||||
|
|
||||||
python3 -m forgetest [--port 8090] [--host ::] [--manifest PATH]
|
python3 -m forgetest [--port 8090] [--host ::] [--manifest PATH]
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The release artifact (acceptance.json / acceptance.md) and its verification.
|
"""The release artifact (acceptance.json / acceptance.md) and its verification.
|
||||||
|
|
||||||
The exporter serializes the campaign state with, for every catalog test,
|
The exporter serializes the campaign state with, for every catalog test,
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The fresh-boot idle state: what every test starts from and leaves behind.
|
"""The fresh-boot idle state: what every test starts from and leaves behind.
|
||||||
|
|
||||||
The runner checks the machine against this baseline before a run and
|
The runner checks the machine against this baseline before a run and
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The bench diagnostics page: registry of the bench tools and the
|
"""The bench diagnostics page: registry of the bench tools and the
|
||||||
subprocess runner behind the #bench tab.
|
subprocess runner behind the #bench tab.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""Campaign rules: which results apply, what is required, and whether a
|
"""Campaign rules: which results apply, what is required, and whether a
|
||||||
release is authorized.
|
release is authorized.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The acceptance catalog: test definitions and the registry.
|
"""The acceptance catalog: test definitions and the registry.
|
||||||
|
|
||||||
A test is a function decorated with @test(...). The decorator records
|
A test is a function decorated with @test(...). The decorator records
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""Coverage lint: every source path in the manifest must be selected by
|
"""Coverage lint: every source path in the manifest must be selected by
|
||||||
some test's coverage globs, except the allowlisted non-behavioral paths,
|
some test's coverage globs, except the allowlisted non-behavioral paths,
|
||||||
and every coverage glob must select at least one path of its component.
|
and every coverage glob must select at least one path of its component.
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The bench actuator (forgefixture): the box on the bench network that
|
"""The bench actuator (forgefixture): the box on the bench network that
|
||||||
opens the lid loop, pulls the interlock loop and presses the button on
|
opens the lid loop, pulls the interlock loop and presses the button on
|
||||||
request, so an operator test can run with nobody in the room.
|
request, so an operator test can run with nobody in the room.
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""Hardware and service access for the suite: forgectrl's HTTP API, the
|
"""Hardware and service access for the suite: forgectrl's HTTP API, the
|
||||||
kernel module's sysfs, the init scripts, and the Grbl TCP port.
|
kernel module's sysfs, the init scripts, and the Grbl TCP port.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The append-only result log (JSONL) and the export helpers.
|
"""The append-only result log (JSONL) and the export helpers.
|
||||||
|
|
||||||
One JSON object per line under the data directory (default
|
One JSON object per line under the data directory (default
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The image manifest and the domain fingerprint.
|
"""The image manifest and the domain fingerprint.
|
||||||
|
|
||||||
/etc/forgefirm-manifest.json (written by forgefirm-image-manifest.bbclass)
|
/etc/forgefirm-manifest.json (written by forgefirm-image-manifest.bbclass)
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The single page: acceptance tab + bench tab, assembled from ui/ into
|
"""The single page: acceptance tab + bench tab, assembled from ui/ into
|
||||||
one self-contained response (no external assets). Bootstrap and the
|
one self-contained response (no external assets). Bootstrap and the
|
||||||
OpenGlow theme are inlined; theme.css and the vendor/ files are the same
|
OpenGlow theme are inlined; theme.css and the vendor/ files are the same
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""Pulse files for the offline cloud service: a job the machine will run
|
"""Pulse files for the offline cloud service: a job the machine will run
|
||||||
without the service having cut it.
|
without the service having cut it.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The runner: executes one acceptance test or one bench tool at a time.
|
"""The runner: executes one acceptance test or one bench tool at a time.
|
||||||
|
|
||||||
Acceptance tests run in a worker thread with a Context: log lines, an
|
Acceptance tests run in a worker thread with a Context: log lines, an
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""HTTP: the page, the JSON API, and the access rules.
|
"""HTTP: the page, the JSON API, and the access rules.
|
||||||
|
|
||||||
Access follows forgectrl's panel (auth.c): the Host header must be an
|
Access follows forgectrl's panel (auth.c): the Host header must be an
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The acceptance suite: one module per subsystem, imported in display
|
"""The acceptance suite: one module per subsystem, imported in display
|
||||||
order. Each module registers its tests with @catalog.test."""
|
order. Each module registers its tests with @catalog.test."""
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""camera.* - the lid camera pipeline through forgectrl."""
|
"""camera.* - the lid camera pipeline through forgectrl."""
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""cloud.* - the controller mode switch and the optional Glowforge web-service
|
"""cloud.* - the controller mode switch and the optional Glowforge web-service
|
||||||
mode (gfcloud daemon, gfhome homing runner). The mode-switch test makes the
|
mode (gfcloud daemon, gfhome homing runner). The mode-switch test makes the
|
||||||
grbl -> cloud -> grbl round trip with the connect-time hunt run lid-open and
|
grbl -> cloud -> grbl round trip with the connect-time hunt run lid-open and
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""cooling.* - the cooling engine: flow verification through forgectrl's
|
"""cooling.* - the cooling engine: flow verification through forgectrl's
|
||||||
diagnostics runner (the same check the fire gate runs), the fan profile
|
diagnostics runner (the same check the fire gate runs), the fan profile
|
||||||
returning to idle after motion, the gate settings (a value inside the
|
returning to idle after motion, the gate settings (a value inside the
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""forgectrl.* - the machine-services daemon's API, access control, and panel."""
|
"""forgectrl.* - the machine-services daemon's API, access control, and panel."""
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""image.* - the post-flash health of the running image (always-required)."""
|
"""image.* - the post-flash health of the running image (always-required)."""
|
||||||
import glob
|
import glob
|
||||||
import gzip
|
import gzip
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""kernel.* - glowforge.ko safety readbacks and the pulse-engine drills.
|
"""kernel.* - glowforge.ko safety readbacks and the pulse-engine drills.
|
||||||
|
|
||||||
The drills are the bench scripts `scripts/bench/gate_a_kernel_drills.py`
|
The drills are the bench scripts `scripts/bench/gate_a_kernel_drills.py`
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""laser.* - LIVE laser tests, ported from `scripts/bench/live_fire_drills.py`.
|
"""laser.* - LIVE laser tests, ported from `scripts/bench/live_fire_drills.py`.
|
||||||
|
|
||||||
Every test here can emit, except `laser.power-floor`, which only reads
|
Every test here can emit, except `laser.power-floor`, which only reads
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""logs.* - unified logging: the log tree, tail, and the sanitized export;
|
"""logs.* - unified logging: the log tree, tail, and the sanitized export;
|
||||||
the routing path (emitters, relays, rendered rules); the level settings."""
|
the routing path (emitters, relays, rendered rules); the level settings."""
|
||||||
import gzip
|
import gzip
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""motion.* - the motion controller under grblHAL: dry motion, no emission.
|
"""motion.* - the motion controller under grblHAL: dry motion, no emission.
|
||||||
|
|
||||||
Ported from `scripts/bench/pacing_test.py` (protocol-loop pacing) and
|
Ported from `scripts/bench/pacing_test.py` (protocol-loop pacing) and
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""setup.* - the first-run setup: the record and the
|
"""setup.* - the first-run setup: the record and the
|
||||||
controller gate, the advisories, the account and its login, the HTTPS
|
controller gate, the advisories, the account and its login, the HTTPS
|
||||||
boundary, SSH, the cloud switch, the machine's name, and the factory
|
boundary, SSH, the cloud switch, the machine's name, and the factory
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""setup.check-* - the setup's checks (the dark wizards), driven the
|
"""setup.check-* - the setup's checks (the dark wizards), driven the
|
||||||
way the page drives them: POST /wiz/<id>/start, GET /wiz/dark polled,
|
way the page drives them: POST /wiz/<id>/start, GET /wiz/dark polled,
|
||||||
the prompts answered from here (the bench fixture works the lid and the
|
the prompts answered from here (the bench fixture works the lid and the
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""setup.sheet - the setup's sheet (the live wizards) in one run,
|
"""setup.sheet - the setup's sheet (the live wizards) in one run,
|
||||||
driven the way the page drives them: POST /wiz/<id>/start, GET /wiz/dark
|
driven the way the page drives them: POST /wiz/<id>/start, GET /wiz/dark
|
||||||
polled, the prompts answered from here, each burn armed by a press, the
|
polled, the prompts answered from here, each burn armed by a press, the
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""update.* - the A/B slot inventory and the firmware verification path."""
|
"""update.* - the A/B slot inventory and the firmware verification path."""
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""Shared fixtures for the forgetest unit tests: synthetic manifests and
|
"""Shared fixtures for the forgetest unit tests: synthetic manifests and
|
||||||
catalog entries that never touch hardware."""
|
catalog entries that never touch hardware."""
|
||||||
import hashlib
|
import hashlib
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
import unittest
|
import unittest
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The baseline: fixed resting values are restored, preserved values are
|
"""The baseline: fixed resting values are restored, preserved values are
|
||||||
handed back, every deviation is a recorded leftover. Runs against a fake
|
handed back, every deviation is a recorded leftover. Runs against a fake
|
||||||
sysfs tree; forgectrl is unreachable (service-side checks skip)."""
|
sysfs tree; forgectrl is unreachable (service-side checks skip)."""
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The bench registry against scripts/bench: every python tool is
|
"""The bench registry against scripts/bench: every python tool is
|
||||||
registered (or named as not-a-tool), every registered script exists,
|
registered (or named as not-a-tool), every registered script exists,
|
||||||
every argument spec builds a command line, every script compiles, and
|
every argument spec builds a command line, every script compiles, and
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import helpers
|
import helpers
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""Every phrase the cloud suite greps for in the gfcloud log must be a
|
"""Every phrase the cloud suite greps for in the gfcloud log must be a
|
||||||
phrase the pinned cloud app can actually log.
|
phrase the pinned cloud app can actually log.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The cloud.* job-behavior tests against a fake forgectrl and a replayed
|
"""The cloud.* job-behavior tests against a fake forgectrl and a replayed
|
||||||
gfcloud log: the real test functions run under the real runner Context,
|
gfcloud log: the real test functions run under the real runner Context,
|
||||||
the operator prompts answered - and the standing notices of the machine
|
the operator prompts answered - and the standing notices of the machine
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""cooling.aa-offset-calibrate is registered before the heater tools, so
|
"""cooling.aa-offset-calibrate is registered before the heater tools, so
|
||||||
a queue runs it first: a heater trial leaves a warm slug circulating past
|
a queue runs it first: a heater trial leaves a warm slug circulating past
|
||||||
the coolant sensors for minutes, and the tool's edges read it as
|
the coolant sensors for minutes, and the tool's edges read it as
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""cooling.fans-quiet-after-motion and cooling.gate-off replayed host-side
|
"""cooling.fans-quiet-after-motion and cooling.gate-off replayed host-side
|
||||||
under the real runner Context against a scripted machine: a fake
|
under the real runner Context against a scripted machine: a fake
|
||||||
forgectrl (/status fans, /cool/status phase and verdict, /settings with
|
forgectrl (/status fans, /cool/status phase and verdict, /settings with
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The bench actuator as the tool sees it.
|
"""The bench actuator as the tool sees it.
|
||||||
|
|
||||||
The fixture is a box on the network that opens the lid loop, pulls the
|
The fixture is a box on the network that opens the lid loop, pulls the
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from forgetest.suite import image
|
from forgetest.suite import image
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""wait_hv_off against a scripted charge-pump readback: a chain that
|
"""wait_hv_off against a scripted charge-pump readback: a chain that
|
||||||
releases inside the window passes, a chain held past it is the refusal,
|
releases inside the window passes, a chain held past it is the refusal,
|
||||||
and a chain already off costs no wait."""
|
and a chain already off costs no wait."""
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The dwell-gap verdict of laser.emission-witness over synthetic trails:
|
"""The dwell-gap verdict of laser.emission-witness over synthetic trails:
|
||||||
the button latch judged from the first emission through every sample
|
the button latch judged from the first emission through every sample
|
||||||
whose readback word shows the laser latch unlocked, both bits from that
|
whose readback word shows the laser latch unlocked, both bits from that
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The controller mode a test declares: the runner puts the machine there
|
"""The controller mode a test declares: the runner puts the machine there
|
||||||
before the test and the baseline keeps it there afterward.
|
before the test and the baseline keeps it there afterward.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The operator channel: notices, `ready`, `act`, and the precheck.
|
"""The operator channel: notices, `ready`, `act`, and the precheck.
|
||||||
|
|
||||||
A test asks for the operator's part in a way the page can show before
|
A test asks for the operator's part in a way the page can show before
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The page assembly: the ui/ files inlined in order, the gzipped install
|
"""The page assembly: the ui/ files inlined in order, the gzipped install
|
||||||
(what the dev image carries) assembling to the same bytes as a checkout,
|
(what the dev image carries) assembling to the same bytes as a checkout,
|
||||||
the token placeholder carried exactly once, and a missing marker refused
|
the token placeholder carried exactly once, and a missing marker refused
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The two queues: what they select, the order they run in, and where
|
"""The two queues: what they select, the order they run in, and where
|
||||||
they stop.
|
they stop.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""What keeps the page answering the operator instead of the timer.
|
"""What keeps the page answering the operator instead of the timer.
|
||||||
|
|
||||||
Two things went wrong on the bench and are pinned here:
|
Two things went wrong on the bench and are pinned here:
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""Runner + HTTP API end to end on localhost with a fake catalog and a
|
"""Runner + HTTP API end to end on localhost with a fake catalog and a
|
||||||
fake bench tool. No hardware, no forgectrl."""
|
fake bench tool. No hardware, no forgectrl."""
|
||||||
import json
|
import json
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The setup's checks in the catalog: registered as automatic tests with
|
"""The setup's checks in the catalog: registered as automatic tests with
|
||||||
no precheck, the takeover ones marked so, every covers map naming the
|
no precheck, the takeover ones marked so, every covers map naming the
|
||||||
check runner; and the check driver itself against the fake daemon: a
|
check runner; and the check driver itself against the fake daemon: a
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The setup's sheet in the catalog: one live test on the button with a
|
"""The setup's sheet in the catalog: one live test on the button with a
|
||||||
piece of wood at hand, its covers map naming the live runner, the
|
piece of wood at hand, its covers map naming the live runner, the
|
||||||
renderer, the sender, the page, and the driver's laser module; and the
|
renderer, the sender, the page, and the driver's laser module; and the
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""The setup.* suite on the host: the registration (ids, kinds, the
|
"""The setup.* suite on the host: the registration (ids, kinds, the
|
||||||
takeover tests, the operator tests' hands), the record builders, the
|
takeover tests, the operator tests' hands), the record builders, the
|
||||||
machine's name, the cookie parsing, the LED cue, the settle rule for a
|
machine's name, the cookie parsing, the LED cue, the settle rule for a
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""scripts/source-bundle.py - the source that a release publishes.
|
"""scripts/source-bundle.py - the source that a release publishes.
|
||||||
|
|
||||||
The bundle must hold the source of every recipe of the image whose license
|
The bundle must hold the source of every recipe of the image whose license
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""scripts/manifest-from-tree.py - the workstation/CI mirror of the image
|
"""scripts/manifest-from-tree.py - the workstation/CI mirror of the image
|
||||||
manifest: recipe pins are read through their pin files, and a layer's
|
manifest: recipe pins are read through their pin files, and a layer's
|
||||||
content hash leaves the pin files out (a component bump is not a platform
|
content hash leaves the pin files out (a component bump is not a platform
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# forgefirm-image-manifest.bbclass - assemble /etc/forgefirm-manifest.json
|
# forgefirm-image-manifest.bbclass - assemble /etc/forgefirm-manifest.json
|
||||||
#
|
#
|
||||||
# Inherited by the ForgeFIRM images. At rootfs postprocess it collects the
|
# Inherited by the ForgeFIRM images. At rootfs postprocess it collects the
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# forgefirm-manifest.bbclass - source fingerprint of one ForgeFIRM component
|
# forgefirm-manifest.bbclass - source fingerprint of one ForgeFIRM component
|
||||||
#
|
#
|
||||||
# A component recipe that inherits this class records what source it was
|
# A component recipe that inherits this class records what source it was
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
require conf/distro/include/fslc-base.inc
|
require conf/distro/include/fslc-base.inc
|
||||||
|
|
||||||
DISTRO = "forgefirm"
|
DISTRO = "forgefirm"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# We have a conf and classes directory, add to BBPATH
|
# We have a conf and classes directory, add to BBPATH
|
||||||
BBPATH .= ":${LAYERDIR}"
|
BBPATH .= ":${LAYERDIR}"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# NXP distributes the i.MX VPU/EPDC firmware blobs under its firmware EULA
|
# NXP distributes the i.MX VPU/EPDC firmware blobs under its firmware EULA
|
||||||
# (accepted with ACCEPT_FSL_EULA), so an image carrying those blobs has to
|
# (accepted with ACCEPT_FSL_EULA), so an image carrying those blobs has to
|
||||||
# carry the license text with them.
|
# carry the license text with them.
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# ForgeFIRM SSH policy, set in the installed files so the release image
|
# ForgeFIRM SSH policy, set in the installed files so the release image
|
||||||
# carries it as built:
|
# carries it as built:
|
||||||
# PermitRootLogin no root logs in at the serial console only
|
# PermitRootLogin no root logs in at the serial console only
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# ForgeFIRM image manifest: source fingerprint of the hardware library
|
# ForgeFIRM image manifest: source fingerprint of the hardware library
|
||||||
# (forgefirm-manifest.bbclass in this layer).
|
# (forgefirm-manifest.bbclass in this layer).
|
||||||
inherit forgefirm-manifest
|
inherit forgefirm-manifest
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# ForgeFIRM image manifest: source fingerprint of the cloud-mode service
|
# ForgeFIRM image manifest: source fingerprint of the cloud-mode service
|
||||||
# layer (forgefirm-manifest.bbclass in this layer).
|
# layer (forgefirm-manifest.bbclass in this layer).
|
||||||
inherit forgefirm-manifest
|
inherit forgefirm-manifest
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# urllib3's optional pyOpenSSL/cryptography backend is not used here: the cloud
|
# urllib3's optional pyOpenSSL/cryptography backend is not used here: the cloud
|
||||||
# client and the machine glue talk TLS through the standard library's ssl
|
# client and the machine glue talk TLS through the standard library's ssl
|
||||||
# module (nothing imports OpenSSL or cryptography). Dropping the two runtime
|
# module (nothing imports OpenSSL or cryptography). Dropping the two runtime
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
SUMMARY = "Configurable embedded Linux firmware update creator and runner"
|
SUMMARY = "Configurable embedded Linux firmware update creator and runner"
|
||||||
DESCRIPTION = "Applies and creates signed .fw firmware archives. ForgeFIRM \
|
DESCRIPTION = "Applies and creates signed .fw firmware archives. ForgeFIRM \
|
||||||
uses the factory's own update format: fwup applies ForgeFIRM upgrades and \
|
uses the factory's own update format: fwup applies ForgeFIRM upgrades and \
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
DESCRIPTION = "Potluck with different functions for C programs (babelouest base library)"
|
DESCRIPTION = "Potluck with different functions for C programs (babelouest base library)"
|
||||||
HOMEPAGE = "https://github.com/babelouest/orcania"
|
HOMEPAGE = "https://github.com/babelouest/orcania"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# /etc/rsyslog.conf - ForgeFIRM
|
# /etc/rsyslog.conf - ForgeFIRM
|
||||||
#
|
#
|
||||||
# rsyslog is the only log writer on the machine. Every ForgeFIRM process
|
# rsyslog is the only log writer on the machine. Every ForgeFIRM process
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# rsyslog is the ForgeFIRM system logger: the only log writer, one
|
# rsyslog is the ForgeFIRM system logger: the only log writer, one
|
||||||
# directory per logger under /data/log/forgefirm. This appends the
|
# directory per logger under /data/log/forgefirm. This appends the
|
||||||
# ForgeFIRM /etc/rsyslog.conf (inputs, line format, and the include of
|
# ForgeFIRM /etc/rsyslog.conf (inputs, line format, and the include of
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
DESCRIPTION = "Web Framework to build REST APIs, Webservices or any HTTP endpoint in C"
|
DESCRIPTION = "Web Framework to build REST APIs, Webservices or any HTTP endpoint in C"
|
||||||
HOMEPAGE = "https://github.com/babelouest/ulfius"
|
HOMEPAGE = "https://github.com/babelouest/ulfius"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
DESCRIPTION = "Logging library for C applications (babelouest)"
|
DESCRIPTION = "Logging library for C applications (babelouest)"
|
||||||
HOMEPAGE = "https://github.com/babelouest/yder"
|
HOMEPAGE = "https://github.com/babelouest/yder"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
SUMMARY = "Boot-slot selection and inventory for Glowforge factory hardware"
|
SUMMARY = "Boot-slot selection and inventory for Glowforge factory hardware"
|
||||||
DESCRIPTION = "Inventories the bootable partitions (ffboot -l) and switches \
|
DESCRIPTION = "Inventories the bootable partitions (ffboot -l) and switches \
|
||||||
the boot target by rewriting the saved U-Boot environment with read-back \
|
the boot target by rewriting the saved U-Boot environment with read-back \
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# forgectrl pin. Bump deliberately after pushing forgectrl changes; keep
|
# forgectrl pin. Bump deliberately after pushing forgectrl changes; keep
|
||||||
# only SRCREV and PV here - the image manifest leaves *-pin.inc out of the
|
# only SRCREV and PV here - the image manifest leaves *-pin.inc out of the
|
||||||
# layer content hash because the component entry already identifies the
|
# layer content hash because the component entry already identifies the
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
DESCRIPTION = "System Control Daemon for ForgeFIRM powered Glowforge"
|
DESCRIPTION = "System Control Daemon for ForgeFIRM powered Glowforge"
|
||||||
HOMEPAGE = "https://github.com/openglow-org/forgectrl"
|
HOMEPAGE = "https://github.com/openglow-org/forgectrl"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# forgefirm-app pin (python3-gfhardware repository, forgefirm-app/ tree).
|
# forgefirm-app pin (python3-gfhardware repository, forgefirm-app/ tree).
|
||||||
# Bump deliberately (AUTOREV is not reproducible); keep only SRCREV and PV
|
# Bump deliberately (AUTOREV is not reproducible); keep only SRCREV and PV
|
||||||
# here - the image manifest leaves *-pin.inc out of the layer content hash
|
# here - the image manifest leaves *-pin.inc out of the layer content hash
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# Shared fetch for the ForgeFIRM web-service apps (gfhome, python3-ffmachine,
|
# Shared fetch for the ForgeFIRM web-service apps (gfhome, python3-ffmachine,
|
||||||
# gfcloud). Their sources live in the forgefirm-app/ directory of the
|
# gfcloud). Their sources live in the forgefirm-app/ directory of the
|
||||||
# python3-gfhardware repository.
|
# python3-gfhardware repository.
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
DESCRIPTION = "Full Glowforge web-service controller daemon for ForgeFIRM (cloud mode)"
|
DESCRIPTION = "Full Glowforge web-service controller daemon for ForgeFIRM (cloud mode)"
|
||||||
|
|
||||||
require forgefirm-app.inc
|
require forgefirm-app.inc
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
DESCRIPTION = "One-shot Glowforge web-service homing for ForgeFIRM"
|
DESCRIPTION = "One-shot Glowforge web-service homing for ForgeFIRM"
|
||||||
|
|
||||||
require forgefirm-app.inc
|
require forgefirm-app.inc
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
DESCRIPTION = "Shared ForgeFIRM web-service hardware-machine glue (gfhome + gfcloud)"
|
DESCRIPTION = "Shared ForgeFIRM web-service hardware-machine glue (gfhome + gfcloud)"
|
||||||
|
|
||||||
require forgefirm-app.inc
|
require forgefirm-app.inc
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: forgefirm-banner
|
# Provides: forgefirm-banner
|
||||||
# Required-Start: $network
|
# Required-Start: $network
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
SUMMARY = "ForgeFIRM console banner: the control panel addresses in /etc/issue"
|
SUMMARY = "ForgeFIRM console banner: the control panel addresses in /etc/issue"
|
||||||
DESCRIPTION = "Keeps an address block in the serial-console login banner \
|
DESCRIPTION = "Keeps an address block in the serial-console login banner \
|
||||||
(/etc/issue): one control panel URL per global address of wlan0 and eth0. \
|
(/etc/issue): one control panel URL per global address of wlan0 and eth0. \
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: forgefirm-hostname
|
# Provides: forgefirm-hostname
|
||||||
# Required-Start: $local_fs
|
# Required-Start: $local_fs
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
SUMMARY = "ForgeFIRM hostname: forgefirm-<xxxx> from the MAC address"
|
SUMMARY = "ForgeFIRM hostname: forgefirm-<xxxx> from the MAC address"
|
||||||
DESCRIPTION = "Names the machine forgefirm-<xxxx>, where xxxx is the last \
|
DESCRIPTION = "Names the machine forgefirm-<xxxx>, where xxxx is the last \
|
||||||
four hex digits of the wlan0 MAC address (eth0 on a machine with no WiFi). \
|
four hex digits of the wlan0 MAC address (eth0 on a machine with no WiFi). \
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
SUMMARY = "Firmware verification public keys"
|
SUMMARY = "Firmware verification public keys"
|
||||||
DESCRIPTION = "Trust anchors for firmware archive verification: the \
|
DESCRIPTION = "Trust anchors for firmware archive verification: the \
|
||||||
ForgeFIRM release-signing public key (verifies release downloads and \
|
ForgeFIRM release-signing public key (verifies release downloads and \
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: forgefirm-logging
|
# Provides: forgefirm-logging
|
||||||
# Required-Start: $local_fs
|
# Required-Start: $local_fs
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
SUMMARY = "ForgeFIRM logging tree: rsyslog rules at boot, rotation"
|
SUMMARY = "ForgeFIRM logging tree: rsyslog rules at boot, rotation"
|
||||||
DESCRIPTION = "Boot-time glue for the ForgeFIRM logging tree \
|
DESCRIPTION = "Boot-time glue for the ForgeFIRM logging tree \
|
||||||
(/data/log/forgefirm/<logger>/): renders the per-logger rsyslog rules \
|
(/data/log/forgefirm/<logger>/): renders the per-logger rsyslog rules \
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
SUMMARY = "ForgeFIRM boot state on /data: the timestamp and the random seed"
|
SUMMARY = "ForgeFIRM boot state on /data: the timestamp and the random seed"
|
||||||
DESCRIPTION = "The two files the poky init scripts keep across boots, \
|
DESCRIPTION = "The two files the poky init scripts keep across boots, \
|
||||||
pointed at /data/forgefirm because the rootfs is read-only: the boot \
|
pointed at /data/forgefirm because the rootfs is read-only: the boot \
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# ForgeFIRM: an interactive root shell (the serial console, or SSH on
|
# ForgeFIRM: an interactive root shell (the serial console, or SSH on
|
||||||
# the dev image) starts with a warning. Non-interactive shells (scp,
|
# the dev image) starts with a warning. Non-interactive shells (scp,
|
||||||
# rsync, ssh with a command) print nothing.
|
# rsync, ssh with a command) print nothing.
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: forgefirm-users
|
# Provides: forgefirm-users
|
||||||
# Required-Start: $local_fs
|
# Required-Start: $local_fs
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
SUMMARY = "ForgeFIRM operator accounts: record render and the root shell warning"
|
SUMMARY = "ForgeFIRM operator accounts: record render and the root shell warning"
|
||||||
DESCRIPTION = "Renders the account record (/data/forgefirm/users, written \
|
DESCRIPTION = "Renders the account record (/data/forgefirm/users, written \
|
||||||
by forgectrl) into the system account files at boot and on reload. The \
|
by forgectrl) into the system account files at boot and on reload. The \
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
SUMMARY = "ForgeFIRM release acceptance tool (dev image)"
|
SUMMARY = "ForgeFIRM release acceptance tool (dev image)"
|
||||||
DESCRIPTION = "Runs the release acceptance catalog against the machine from a \
|
DESCRIPTION = "Runs the release acceptance catalog against the machine from a \
|
||||||
self-contained web page (HTTP :8090), keeps the append-only result log under \
|
self-contained web page (HTTP :8090), keeps the append-only result log under \
|
||||||
@@ -5,7 +7,7 @@ self-contained web page (HTTP :8090), keeps the append-only result log under \
|
|||||||
carries the bench diagnostics page. Installed only on the dev image."
|
carries the bench diagnostics page. Installed only on the dev image."
|
||||||
HOMEPAGE = "https://github.com/openglow-org/forgefirm"
|
HOMEPAGE = "https://github.com/openglow-org/forgefirm"
|
||||||
LICENSE = "MIT"
|
LICENSE = "MIT"
|
||||||
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
|
LIC_FILES_CHKSUM = "file://forgetest/LICENSE;md5=6657cce322ff8bed163c02ceffb4c60c"
|
||||||
|
|
||||||
# The tool's canonical home is forgetest/ in this repo; the bench scripts
|
# The tool's canonical home is forgetest/ in this repo; the bench scripts
|
||||||
# it drives live in scripts/bench/. Both are packaged from the same tree
|
# it drives live in scripts/bench/. Both are packaged from the same tree
|
||||||
@@ -16,6 +18,7 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/../../../:"
|
|||||||
# host unit tests and their caches would otherwise enter the fetch checksum
|
# host unit tests and their caches would otherwise enter the fetch checksum
|
||||||
# and rebuild the dev image after a workstation test run.
|
# and rebuild the dev image after a workstation test run.
|
||||||
SRC_URI = " \
|
SRC_URI = " \
|
||||||
|
file://forgetest/LICENSE \
|
||||||
file://forgetest/forgetest/ \
|
file://forgetest/forgetest/ \
|
||||||
file://forgetest/forgetest.init \
|
file://forgetest/forgetest.init \
|
||||||
file://scripts/bench/ \
|
file://scripts/bench/ \
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# grblHAL-glowforge pin. Bump deliberately after pushing grblHAL-glowforge
|
# grblHAL-glowforge pin. Bump deliberately after pushing grblHAL-glowforge
|
||||||
# changes; keep only SRCREV and PV here - the image manifest leaves
|
# changes; keep only SRCREV and PV here - the image manifest leaves
|
||||||
# *-pin.inc out of the layer content hash because the component entry
|
# *-pin.inc out of the layer content hash because the component entry
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
DESCRIPTION = "grblHAL motion controller for the Glowforge factory board"
|
DESCRIPTION = "grblHAL motion controller for the Glowforge factory board"
|
||||||
HOMEPAGE = "https://github.com/openglow-org/grblHAL-glowforge"
|
HOMEPAGE = "https://github.com/openglow-org/grblHAL-glowforge"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# Copyright 2026 514 LLC d/b/a OpenGlow
|
||||||
|
# Written by Scott Wiederhold
|
||||||
|
# https://community.openglow.org
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: grblhal
|
# Provides: grblhal
|
||||||
# Required-Start: $local_fs
|
# Required-Start: $local_fs
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
require forgefirm-image.bb
|
require forgefirm-image.bb
|
||||||
|
|
||||||
DESCRIPTION = "OpenGlow/ForgeFIRM development image for Glowforge"
|
DESCRIPTION = "OpenGlow/ForgeFIRM development image for Glowforge"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user