diff options
| author | aethrvmn <me@aethrvmn.gr> | 2025-11-11 00:17:15 +0000 |
|---|---|---|
| committer | aethrvmn <me@aethrvmn.gr> | 2025-11-11 00:17:15 +0000 |
| commit | fe6431180841d5f8450123929f264690a924918a (patch) | |
| tree | 7176a5892ce60ac6767c119836dca4057637f59c | |
| parent | new blog post (diff) | |
| -rw-r--r-- | content/blog/package-manager.md | 4 | ||||
| -rw-r--r-- | static/images/mosaic.jpg | bin | 0 -> 2500653 bytes |
2 files changed, 3 insertions, 1 deletions
diff --git a/content/blog/package-manager.md b/content/blog/package-manager.md index 358e3f5..061c2f0 100644 --- a/content/blog/package-manager.md +++ b/content/blog/package-manager.md @@ -20,6 +20,8 @@ In any case, `wget` is important because it is both how we will access the sourc Very importantly, and before we get into the weeds, let us change the distribution name from `Linux From Scratch` to `mosaic`, and the codename to `ravenna`. Let us also import a draft ascii logo and call neofetch (neofetch is a bash script, so its super easy to install) + + Now that LFS is installed, the first thing that a package manager should do is maintain itself, as well as the system. This will also allow me to build the skeleton of what the package manager will be. In my case, this means that I first started with building `git`, which would allow me to sync and keep track of my progress. This also "forced me" to come up immediately with the package definition scheme. Nim's power for this specific usecase is, as mentioned before, its powerful metaprogramming via macros (soon to be compiler plugins in nim 3), meaning that we can replicate and even simplify the package definitions for Arch Linux (`PKGBUILD`), or Alpine (`APKBUILD`). Let's see how a package is defined. @@ -78,7 +80,7 @@ Simple huh? We have declaratively defined everything needed to build `git`. But - `build: seq[string]` - `result: string` -and which, at compile time, unwraps into an iterative process. For anyone interested, lapis, the DSL definition is found [here](https://code.aethrvmn.gr/mosaic/tessera.git)[^3]. Suffice to say, it is my first take at a macro, and this is, once again, pre-alpha, so it will hopefully get better with time. +and which, at compile time, unwraps into an iterative process. For anyone interested, lapis, the DSL definition is found [here](https://code.aethrvmn.gr/mosaic/tesserae.git)[^3]. Suffice to say, it is my first take at a macro, and this is, once again, pre-alpha, so it will hopefully get better with time. Now that `git` is here, all we need to do is to follow the `dependencies` tree, in order to define evey package that `git` needs[^4], as per the BLFS book, and create a tessera for each. diff --git a/static/images/mosaic.jpg b/static/images/mosaic.jpg Binary files differnew file mode 100644 index 0000000..e66fd06 --- /dev/null +++ b/static/images/mosaic.jpg |
