engl-2311-blog/blog/building-blendos.md
2024-11-12 15:34:14 -06:00

86 lines
4 KiB
Markdown

# Building blendOS (and its packages)
This one was pretty simple. First off, I just made [an organization to hold all my blendOS code](https://git.askiiart.net/askiiart-blendos) on my Forgejo instance just to keep it organized. Then I just cloned all the relevant repositories from upstream (*blendOS · GitLab*), added my own code with some minor fixes and stuff, then pushed the updated code to my server.
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 `iso` 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.
Looking at the [package list](https://git.blendos.co/blendOS/image-builder/-/blob/main/packages.x86_64) from `image-builder` (*blendOS / image-builder · GitLab*), it seems the only blendOS-specific packages it uses are:
```txt
filesystem-blend
blend-inst-git
jade-gui
blend-git
blend-settings-git
blend-web-store-git
akshara-git
```
At first, after a bit of minor troubleshooting, I got this all set up and working, pretty simple.
## Oops it didn't work actually
I then realized that my `iso` file worked, but was not using my repo, and I had even forgotten to even add some of the packages.
Turns out I had added my repo to the container's `pacman` configuration, but not to the `pacman` config for `archiso`, the tool used to generate the `iso` file, or the actual resulting `iso` image's `pacman` config either. So while I would have been able to install anything from my repo in the container, the repo was unused by `archiso`.
I just added the missing packages needed to build the `iso` 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.
From the buid log:
```txt
[mkarchiso] INFO: Done!
2.3G /drone/src/image-builder/out/blendOS-2024.10.04-x86_64.iso
0
```
![Screenshot from Drone CI/CD showing the build successfully completed in 6 minutes 48 seconds](/assets/building-blendos/1.png)\
[![Build Status](https://drone.askiiart.net/api/badges/askiiart-blendos/build-blendos-iso/status.svg)](https://drone.askiiart.net/askiiart-blendos/build-blendos-iso)
## Topology of my blendOS repo
```txt
|-----------------|
| |
| package builder |
| |
|-----------------|
|
|
|-----------------------------|
| ↓ |
| |----------| |
| | packages | |
| |----------| |
| |
| Arch/blendOS |
| repository |
| |
| |-----------| |
| | blendOS | |
| | iso files |←---←|←---←
| |-----------| | |
| | |
|-----------------------------| |
| |
| |
| |
↓ |
|-------------------------| |
| | |
| Arch/blendOS | |
| clients | |
| | |
| |--------------| | |
| | blendOS iso |-----→|→---------↑
| | builder | |
| |--------------| |
| |
|-------------------------|
```
## Citations
 Saraswat, Rudra, et al. “blendOS · GitLab.” *GitLab*, [git.blendos.co/blendOS](https://git.blendos.co/blendOS). Accessed 2 Oct. 2024.\
 Saraswat, Rudra, and Asterisk. “blendOS / image-builder · GitLab.” *GitLab*, [git.blendos.co/blendOS/image-builder](https://git.blendos.co/blendOS/image-builder). Accessed 3 Oct. 2024.