<!DOCTYPE html>
<html lang="en">
    <head>
        <meta content="width=device-width, initial-scale=1" charset="utf-8" />
        <title>Building blendOS (and its packages)</title>
        <link href="/style.css" type="text/css" rel="stylesheet" />
        <link href="/prism.css" type="text/css" rel="stylesheet" />
    </head>
    <body class="line-numbers">
        <h1 id="building-blendos-and-its-packages">Building blendOS (and
        its packages)</h1>
        <p>This one was pretty simple. First off, I just made <a
        href="https://git.askiiart.net/askiiart-blendos">an organization
        to hold all my blendOS code</a> on my Forgejo instance just to
        keep it organized. Then I just cloned all the relevant
        repositories from upstream (<em>blendOS · GitLab</em>), added my
        own code with some minor fixes and stuff, then pushed the
        updated code to my server.</p>
        <p>After that, it was just a matter of adding the actual
        packaging for the code. For the packages that were required for
        building the blendOS <code>iso</code> file, if I didn't have my
        own repository for them already, I just made a new branch,
        updated the packaging, and pushed the packaging to that
        branch.</p>
        <p>Looking at the <a
        href="https://git.blendos.co/blendOS/image-builder/-/blob/main/packages.x86_64">package
        list</a> from <code>image-builder</code> (<em>blendOS /
        image-builder · GitLab</em>), it seems the only blendOS-specific
        packages it uses are:</p>
        <div class="sourceCode" id="cb1"><pre
        class="language-txt"><code class="language-default"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>filesystem-blend</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a>blend-inst-git</span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a>jade-gui</span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a>blend-git</span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a>blend-settings-git</span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a>blend-web-store-git</span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a>akshara-git</span></code></pre></div>
        <p>At first, after a bit of minor troubleshooting, I got this
        all set up and working, pretty simple.</p>
        <h2 id="oops-it-didnt-work-actually">Oops it didn't work
        actually</h2>
        <p>I then realized that my <code>iso</code> file worked, but was
        not using my repo, and I had even forgotten to even add some of
        the packages.</p>
        <p>Turns out I had added my repo to the container's
        <code>pacman</code> configuration, but not to the
        <code>pacman</code> config for <code>archiso</code>, the tool
        used to generate the <code>iso</code> file, or the actual
        resulting <code>iso</code> image's <code>pacman</code> config
        either. So while I would have been able to install anything from
        my repo in the container, the repo was unused by
        <code>archiso</code>.</p>
        <p>I just added the missing packages needed to build the
        <code>iso</code> file, plus all the others on blendOS's GitLab,
        and rebuilt it. After a bit of troubleshooting (nothing
        interesting, just incompetency, wrong perms, stuff like that), I
        got it working perfectly.</p>
        <p>From the buid log:</p>
        <div class="sourceCode" id="cb2"><pre
        class="language-txt"><code class="language-default"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>[mkarchiso] INFO: Done!</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>2.3G /drone/src/image-builder/out/blendOS-2024.10.04-x86_64.iso</span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>0</span></code></pre></div>
        <p><img src="/assets/building-blendos/1.png"
        title="Screenshot from Drone CI/CD showing the build successfully completed in 6 minutes 48 seconds" alt="Screenshot from Drone CI/CD showing the build successfully completed in 6 minutes 48 seconds" /><br />
        <a
        href="https://drone.askiiart.net/askiiart-blendos/build-blendos-iso"><img
        src="https://drone.askiiart.net/api/badges/askiiart-blendos/build-blendos-iso/status.svg"
        title="Build Status" alt="Build Status" /></a></p>
        <h2 id="topology-of-my-blendos-repo">Topology of my blendOS
        repo</h2>
        <div class="sourceCode" id="cb3"><pre
        class="language-txt"><code class="language-default"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>        |-----------------|</span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>        |                 |</span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a>        | package builder |</span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a>        |                 |</span>
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a>        |-----------------|</span>
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a>                 |</span>
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true" tabindex="-1"></a>                 |</span>
<span id="cb3-8"><a href="#cb3-8" aria-hidden="true" tabindex="-1"></a>                 ↓</span>
<span id="cb3-9"><a href="#cb3-9" aria-hidden="true" tabindex="-1"></a>      |-----------------------------|</span>
<span id="cb3-10"><a href="#cb3-10" aria-hidden="true" tabindex="-1"></a>      |          ↓                  |</span>
<span id="cb3-11"><a href="#cb3-11" aria-hidden="true" tabindex="-1"></a>      |    |----------|             |</span>
<span id="cb3-12"><a href="#cb3-12" aria-hidden="true" tabindex="-1"></a>      |    | packages |             |</span>
<span id="cb3-13"><a href="#cb3-13" aria-hidden="true" tabindex="-1"></a>      |    |----------|             |</span>
<span id="cb3-14"><a href="#cb3-14" aria-hidden="true" tabindex="-1"></a>      |                             |</span>
<span id="cb3-15"><a href="#cb3-15" aria-hidden="true" tabindex="-1"></a>      | Arch/blendOS                |</span>
<span id="cb3-16"><a href="#cb3-16" aria-hidden="true" tabindex="-1"></a>      | repository                  |</span>
<span id="cb3-17"><a href="#cb3-17" aria-hidden="true" tabindex="-1"></a>      |                             |</span>
<span id="cb3-18"><a href="#cb3-18" aria-hidden="true" tabindex="-1"></a>      |           |-----------|     |</span>
<span id="cb3-19"><a href="#cb3-19" aria-hidden="true" tabindex="-1"></a>      |           | blendOS   |     |</span>
<span id="cb3-20"><a href="#cb3-20" aria-hidden="true" tabindex="-1"></a>      |           | iso files |←---←|←---←</span>
<span id="cb3-21"><a href="#cb3-21" aria-hidden="true" tabindex="-1"></a>      |           |-----------|     |    |</span>
<span id="cb3-22"><a href="#cb3-22" aria-hidden="true" tabindex="-1"></a>      |                             |    |</span>
<span id="cb3-23"><a href="#cb3-23" aria-hidden="true" tabindex="-1"></a>      |-----------------------------|    |</span>
<span id="cb3-24"><a href="#cb3-24" aria-hidden="true" tabindex="-1"></a>             |                           |</span>
<span id="cb3-25"><a href="#cb3-25" aria-hidden="true" tabindex="-1"></a>             |                           |</span>
<span id="cb3-26"><a href="#cb3-26" aria-hidden="true" tabindex="-1"></a>             |                           |</span>
<span id="cb3-27"><a href="#cb3-27" aria-hidden="true" tabindex="-1"></a>             ↓                           |</span>
<span id="cb3-28"><a href="#cb3-28" aria-hidden="true" tabindex="-1"></a>    |-------------------------|          |</span>
<span id="cb3-29"><a href="#cb3-29" aria-hidden="true" tabindex="-1"></a>    |                         |          |</span>
<span id="cb3-30"><a href="#cb3-30" aria-hidden="true" tabindex="-1"></a>    | Arch/blendOS            |          |</span>
<span id="cb3-31"><a href="#cb3-31" aria-hidden="true" tabindex="-1"></a>    | clients                 |          |</span>
<span id="cb3-32"><a href="#cb3-32" aria-hidden="true" tabindex="-1"></a>    |                         |          |</span>
<span id="cb3-33"><a href="#cb3-33" aria-hidden="true" tabindex="-1"></a>    |   |--------------|      |          |</span>
<span id="cb3-34"><a href="#cb3-34" aria-hidden="true" tabindex="-1"></a>    |   | blendOS iso  |-----→|→---------↑</span>
<span id="cb3-35"><a href="#cb3-35" aria-hidden="true" tabindex="-1"></a>    |   |   builder    |      |</span>
<span id="cb3-36"><a href="#cb3-36" aria-hidden="true" tabindex="-1"></a>    |   |--------------|      |</span>
<span id="cb3-37"><a href="#cb3-37" aria-hidden="true" tabindex="-1"></a>    |                         |</span>
<span id="cb3-38"><a href="#cb3-38" aria-hidden="true" tabindex="-1"></a>    |-------------------------|</span></code></pre></div>
        <h2 id="citations">Citations</h2>
        <p> - Saraswat, Rudra, et al. “blendOS · GitLab.”
        <em>GitLab</em>, <a
        href="https://git.blendos.co/blendOS">git.blendos.co/blendOS</a>.
        Accessed 2 Oct. 2024.<br />
         - Saraswat, Rudra, and Asterisk. “blendOS / image-builder ·
        GitLab.” <em>GitLab</em>, <a
        href="https://git.blendos.co/blendOS/image-builder">git.blendos.co/blendOS/image-builder</a>.
        Accessed 3 Oct. 2024.</p>
        <iframe src="https://john.citrons.xyz/embed?ref=askiiart.net" style="margin-left:auto;display:block;margin-right:auto;max-width:732px;width:100%;height:94px;border:none;"></iframe>
        <script src="/prism.js"></script>
    </body>
    <footer>
        <p><a href="https://git.askiiart.net/askiiart/engl-2311-blog">Source code</a>&ensp;|&ensp;<a href="/feed.xml">RSS</a>&ensp;|&ensp;<a href="/glossary.html">Glossary</a>&ensp;|&ensp;<a href="/about.html">About</a></p>
        <small>Image captions are the same as the alt text; assuming you're sighted, you can most likely ignore them.</small>
    </footer>
</html>