Establish MOUSE ports collection
This commit is contained in:
@@ -0,0 +1,21 @@
|
|||||||
|
# MOUSE ports
|
||||||
|
|
||||||
|
This repository is the independently versioned source-port collection for
|
||||||
|
MOUSE. It contains third-party recipes and patches only; the `mouse-port`
|
||||||
|
implementation, ports contract, base-system manifest, and release integration
|
||||||
|
belong to `mouse-src`.
|
||||||
|
|
||||||
|
Each port lives below `ports/NAME` and follows the recipe contract shipped by
|
||||||
|
the compatible MOUSE base release. A MOUSE release pins one tested commit from
|
||||||
|
this repository, while installed systems may move to later compatible ports
|
||||||
|
revisions without replacing the base system.
|
||||||
|
|
||||||
|
The adversarial and demonstration recipes used by the base-system acceptance
|
||||||
|
suite are deliberately not part of this collection. They live in
|
||||||
|
`mouse-src/tests/fixtures/ports`.
|
||||||
|
|
||||||
|
Run the collection checks with:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make check
|
||||||
|
```
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
# Infrastructure
|
||||||
|
|
||||||
|
Collection-wide generation, lint, and publication tooling belongs here. Base
|
||||||
|
image assembly and the `mouse-port` implementation remain in `mouse-src`.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Ports collection
|
||||||
|
|
||||||
|
Each immediate child directory is one port named `[a-z][a-z0-9-]*` and contains
|
||||||
|
one `port.conf` plus its trusted `build.sh` and any port-owned patches or files.
|
||||||
|
|
||||||
|
The collection is intentionally empty until the first real third-party port is
|
||||||
|
accepted. Test-only recipes do not belong here.
|
||||||
Executable
+33
@@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
||||||
|
found=0
|
||||||
|
|
||||||
|
for directory in "$root"/ports/*; do
|
||||||
|
[ -d "$directory" ] || continue
|
||||||
|
[ "${directory##*/}" != README.md ] || continue
|
||||||
|
found=1
|
||||||
|
name=${directory##*/}
|
||||||
|
case "$name" in
|
||||||
|
""|[!a-z]*|*[!a-z0-9-]*)
|
||||||
|
printf '%s\n' "invalid port directory name: $name" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
[ -f "$directory/port.conf" ] || {
|
||||||
|
printf '%s\n' "missing recipe: ports/$name/port.conf" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
[ -x "$directory/build.sh" ] || {
|
||||||
|
printf '%s\n' "missing executable build script: ports/$name/build.sh" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
sh -n "$directory/build.sh"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$found" -eq 0 ]; then
|
||||||
|
printf '%s\n' "ports collection is empty"
|
||||||
|
else
|
||||||
|
printf '%s\n' "ports layout check passed"
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user