74 lines
4.4 KiB
HTML
74 lines
4.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Kama repos — Keru OS</title>
|
|
<meta name="description" content="The kama repo split: the package manager (kama) and the recipe repository (kama-packages).">
|
|
<link rel="stylesheet" href="assets/css/style.css">
|
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>ける</text></svg>">
|
|
</head>
|
|
<body>
|
|
|
|
<nav class="top" data-nav></nav>
|
|
|
|
<header class="pagehead">
|
|
<p class="crumbs"><a href="index.html">home</a> / <a href="kama.html">kama</a> / repos</p>
|
|
<h1>The repo split</h1>
|
|
<p>Three small pieces, each with one job.</p>
|
|
</header>
|
|
|
|
<section>
|
|
<div class="wrap">
|
|
<div class="prose">
|
|
<p>Keru splits its world into three repositories so each stays small and legible. The package side of that is:</p>
|
|
|
|
<table>
|
|
<tr><th>Repo</th><th>Holds</th><th>Keeps</th></tr>
|
|
<tr><td><strong>kama</strong></td><td>The manager — the <code>kama</code> entry point and <code>lib/kama.sh</code> core.</td><td>The code.</td></tr>
|
|
<tr><td><strong>kama-packages</strong></td><td>The recipe repository — one <code>.sh</code> per package.</td><td>The knowledge.</td></tr>
|
|
<tr><td><strong>KeruOS</strong></td><td>The OS: installer, profile, build pipeline, live init, website.</td><td>The orchestration.</td></tr>
|
|
</table>
|
|
|
|
<h3>Where the repos live</h3>
|
|
<div class="code-block">github.com/AstralZX/kama # the manager (canonical)
|
|
github.com/AstralZX/kama-packages # the recipe repository (canonical)
|
|
github.com/AstralZX/KeruOS # the OS itself (canonical)
|
|
|
|
git.spectoria.dev/AstralZX/kama # mirror
|
|
git.spectoria.dev/AstralZX/kama-packages # mirror
|
|
git.spectoria.dev/AstralZX/KeruOS # mirror</div>
|
|
<p>The canonical host is <strong>GitHub</strong>. Mirrors of all three repos now live on <code>git.spectoria.dev</code>. They are read-mirrors — push and issues stay on GitHub, and the mirrors can fall behind by however long it's been since the last sync. A Codeberg mirror is also under consideration.</p>
|
|
|
|
<div class="callout">No package recipes ship on the ISO, in the installer, or anywhere else. The recipe repository on GitHub is how you get packages — clone it or install Keru, which fetches it at build time.</div>
|
|
|
|
<h3>Why separate</h3>
|
|
<ul class="features">
|
|
<li><strong>Independent cadence.</strong> The manager changes rarely; recipes change constantly. Mixing them couples an ossified core to churn.</li>
|
|
<li><strong>Clear ownership.</strong> "Which file builds busybox?" — the recipe repo. "How does kama decide to stage?" — the manager repo. No guessing where things live.</li>
|
|
<li><strong>Small repos, legible diffs.</strong> A PR adding a package touches exactly one file in one repo.</li>
|
|
<li><strong>Cross-repo defaults.</strong> Keru's scripts expect the three repos as siblings (<code>kama</code> next to <code>kama-packages</code> next to <code>KeruOS</code>), and every path is overridable via <code>KAMA_DIR</code> / <code>PKGS_DIR</code>.</li>
|
|
</ul>
|
|
|
|
<h3>How they fit together</h3>
|
|
<div class="code-block"># KeruOS build-root.sh drives kama against kama-packages
|
|
KAMA="$KAMA_DIR/kama" # the manager
|
|
PKGDIR="$PKGS_DIR" "$KAMA" make "$pkg" # a recipe, executed
|
|
# into $ROOT — a completed system, built from source.</div>
|
|
|
|
<p>The installer is the conductor: it writes your <code>make.conf</code>, then calls the build pipeline, which runs kama over recipes to produce exactly the system you chose.</p>
|
|
|
|
<div class="callout">This is Keru's answer to packaging sprawl: three tiny repos, each human-sized, instead of one monolith that swallowed everything.</div>
|
|
|
|
<p><a href="kama.html">← Kama overview</a> · <a href="build-pipeline.html">The build pipeline</a></p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<footer data-footer></footer>
|
|
|
|
<noscript><div style="text-align:center;padding:16px">See the <a href="sitemap.html">sitemap</a> for all pages.</div></noscript>
|
|
|
|
<script src="assets/js/include.js" data-base="."></script>
|
|
</body>
|
|
</html> |