Various general configurations I use
First I updated the kernel to 6.2 (not that it really helped):
sudo pacman -Syu base-devel git --needed
git clone https://gitlab.manjaro.org/packages/core/linux62
cd linux62
updpkgsums
makepkg --syncdeps --installThen I removed the shiboken6 package (for generating documentation for python), because it blocked the upgrade of the LLVM package beyond what is found in pacman (why would you ever hardcode a dependency version instead of just statically linking it at that point?)
sudo pacman -Rd --nodeps shiboken6(Note that it wants you to specify that you wish to ignore dependenices twice, hence I supplied both -d and --nodeps.)
Also LLDB is a dependency for the install, which could be installed from pacman (even though LLDB then ended up being version 14, while the llvm I made was supposed to end up as version 16).
sudo pacman -S lldbThen I could install the newer llvm version from source using aur
yay -S llvm-gitNote that this replaces a lot of things, including clang should you have that previously installed.
Before I could install mesa from source, I had to remove lib32-vulkan-mesa-layers, because it depends on mesa, and would not let the build/install procede (because it would replace mesa).
sudo pacman -R lib32-vulkan-mesa-layersThen I could install mesa from source. First I had to get the repo
cd Build
git clone https://aur.archlinux.org/mesa-git.git
cd mesa-gitThen I had to update the PKGBUILD file to use the LLVM version I built from AUR rather than the default.
To achieve this, I updated the MESA_WHICH_LLVM variable to use the llvm-git version (changed line 56 to MESA_WHICH_LLVM=3).
After that I could update the checksums, build, install, and finally reboot to see if I could get it all working.
updpkgsums
makepkg --syncdeps --installThis final step replaced a lot of the built in mesa pacakges.
At the end, find a list of all installed packages related to llvm and/or mesa:
pacman -Qs "mesa|llvm"So that you can add them to /etc/pacman.conf with their own ignore-lines like
IgnorePkg = mesa-git and IgnorePkg = llvm-git.
This prevents pacman or yay from picking them up and upgrading them, because they need to be kept somewhat in sync, meaning that you should have to update them explicitly manually by hand once you've started making and installing them by hand like this.
Also note that the pacman regex search for installed packages pacman -Qs "regex" works better to get a complete list of packages than running the output from the pacman search thorugh grep, for instance with pacman -Qe | grep -E "llvm|mesa", because you now have to repeatedly search or make complex sets (for instance pacman -Qe lists explicitly installed packages, pacman -Qm gives foreign packages, and so on).
Also the pacman regex search appears to not only searches the package names, but also descriptions.
Useful if you are stuck in a limmited environment (such as git-bash [cygwin] on windows), or have to be very speciffic and not leave stuff up to the goodness of the magical parser:
grep --include="*.extension" -nri "my query" ./relative/or/absolute/path/to/root/directory/of/searchAlternative example:
grep --include="*.cs" -nri ToDo .