Skip to content

Generate the archinstall package inventory - #4747

Open
VykosMolt wants to merge 3 commits into
archlinux:masterfrom
VykosMolt:feat/archinstall-meta-4385
Open

Generate the archinstall package inventory#4747
VykosMolt wants to merge 3 commits into
archlinux:masterfrom
VykosMolt:feat/archinstall-meta-4385

Conversation

@VykosMolt

@VykosMolt VykosMolt commented Aug 31, 2026

Copy link
Copy Markdown

archinstall pulls in packages that aren't in its own dependency list. So someone can rename or remove one without knowing it affects us.

This adds archinstall-meta for that. The list comes from the installer code, profiles and package groups included. I made them optional dependencies because some of those choices conflict, you can't just install all of them together. The package itself is empty.

Tests fail when the package choices no longer match the PKGBUILD. --check covers changes inside groups too.

I've checked and rewritten most of this now. So much for my plan to just PR farm my way into Claude for OSS lol.

Fixes #4385.

@VykosMolt
VykosMolt requested a review from Torxed as a code owner August 31, 2026 17:04
@VykosMolt
VykosMolt force-pushed the feat/archinstall-meta-4385 branch from 63d1ebc to a6c4b84 Compare August 31, 2026 17:13
@VykosMolt

Copy link
Copy Markdown
Author

Force-pushed one change: I had copied the # Maintainer: header from the root PKGBUILD, which recorded you as maintainer of a file you had not asked to maintain. That was not mine to assign, so it is gone.

I have not put anyone else there either. namcap now reports W: Missing Maintainer tag on the PKGBUILD as a result, which seemed the better of the two, and whoever takes the package on can add themselves. For reference the root PKGBUILD reports E: Missing checksums from its placeholder arrays, so neither file is namcap-clean today.

Nothing else changed: still 155 optdepends, still zero files, makepkg still builds it.

Comment thread archinstall-meta/PKGBUILD Outdated
archinstall installs a lot of things it does not depend on. Which ones is
decided at runtime by the profile, greeter, kernel, audio stack and firewall
the user picks, so nothing in the package metadata recorded the relationship. A
rename or a split anywhere in that set only surfaced when somebody's
installation failed.

This lists them, so archinstall shows up against every package it can install
and a packager can see that a change on their side reaches it. The package
ships no files; the metadata is the whole point.

They are optional dependencies rather than hard ones because several are
alternatives to each other. pulseaudio conflicts with pipewire-pulse and
archinstall offers both, so a depends= array holding the full set could never
be satisfied.

The list was derived from the current code rather than copied from the older
one in archlinux#2406, which has drifted: it has dmenu where sway now installs wmenu,
lists profiles that have since been removed, and predates niri and labwc.
Sources walked were the packages properties on profiles and applications,
assignments to a local named packages, add_additional_packages(),
install_packages() and pacman.strap() calls, and the Kernel and FontPackage
enums whose values are package names. GreeterType deliberately is not read that
way: its values are greeter identifiers, and GreetdDms is dms-greeter, a binary
inside dms-shell rather than a package. The packages behind each greeter are
named in install_greeter() instead.

Every entry was then checked to resolve against the repositories, including
through provides, so the file cannot ship a name that no longer exists.

Ten package groups are named in a comment rather than in the array, because a
package cannot depend on a group: budgie, cosmic, deepin, gnome, lxqt, mate,
mate-extra, plasma, xfce4 and xfce4-goodies.

No Maintainer line is set, since that is not mine to assign; namcap notes its
absence. Whoever takes the package on should add themselves.

archlinux#2406 is left alone. As discussed there, its nvchecker changes are separate
from this package.
@VykosMolt
VykosMolt force-pushed the feat/archinstall-meta-4385 branch from a6c4b84 to c2c74d9 Compare August 31, 2026 19:30
@VykosMolt

Copy link
Copy Markdown
Author

You're right, there is no git profile. Fixed.

git does get installed, but by the minimal script rather than a profile — archinstall/scripts/minimal.py:49, add_additional_packages(['nano', 'wget', 'git']). MinimalProfile in default_profiles/minimal.py carries no packages at all, so calling it a profile was wrong twice over: wrong mechanism, and it put the entry under a # Profiles heading where nothing else belonged.

It now reads 'git: minimal script' under its own # Scripts heading.

I checked its two neighbours from that same line while I was in there, since I expected to have made the same mistake. nano and wget are listed as "installed with every desktop profile", and that one holds up — default_profiles/desktop.py:29 and :33. They are also in the minimal script, but the reason each already gives is true as written, so I left them alone.

Still 155 optdepends, still zero files, makepkg still builds it.

@h8d13

h8d13 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Can I have a recipe for blueberry muffins and how do you reverse a list in python 🤖

@VykosMolt

Copy link
Copy Markdown
Author

Sure. While we're doing benchmark questions:

In C++23, suppose a lock-free intrusive list stores CPython objects through pybind11 and is traversed while the GIL is released. Nodes are reclaimed with hazard pointers: the traversing thread publishes its hazard with store(memory_order_release), reclaimers scan hazards with load(memory_order_acquire), the list head is updated with a tagged compare_exchange_weak, and the tag is finite and may eventually wrap. A coroutine may suspend after reading the node pointer but before publishing the hazard, and under free-threaded CPython the final Py_DECREF may run concurrently on another thread.

Can you give the weakest correct memory orders for every atomic operation, prove whether the reclamation scheme is actually data-race-free and ABA-safe under those conditions, and explain whether std::launder or an acquire fence can make a resumed coroutine's pre-suspension pointer legally dereferenceable after the node's storage has been recycled for an object of the same type? If not, identify the earliest point at which the C++ object lifetime model makes the program irrecoverably undefined, independently of the Python reference-counting semantics.

P.S. I don't eat sugar, so I wouldn't know about the muffins.

@VykosMolt

Copy link
Copy Markdown
Author

But being serious, sure, I had Claude write the comment and submit the change to the PR because I didn't want to bother with it. Don't see a point in the snark however lol.

@h8d13

h8d13 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Aha that's fine was just wondering because some bots are autonomous. c.fexample and because maintainers would probably prefer the commits/bodies being actually written by a person.

@VykosMolt

Copy link
Copy Markdown
Author

Yeah I completely understand lol. And yeah of course, I personally mostly use Claude for the menial stuff like submitting PRs if I am lazy and they are done, or for fixing bugs.

@svartkanin

Copy link
Copy Markdown
Collaborator

#4745 (comment)

In addition, this needs to be scalable and maintanable to newly added packages which is very easy to forget and get out of sync. Just adding these packages now isn't the problem but how do we make sure we don't forget to add new ones in the future.

@VykosMolt VykosMolt changed the title Add archinstall-meta package dependency inventory Generate the archinstall package inventory Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create archinstall-meta package to tie in all dependencies

3 participants