Some folders under /System/Settings not symlinked

Hi,
I have noticed that some folders are not symlinked to their corresponding Programs/*/Settings/ directory on my system:

$ ll --group-directories-first /System/Settings/
total 216
drwxr-xr-x 12 root root  4096 Oct 31 20:43 .
drwxr-xr-x  9 root root  4096 Feb  5  2021 ..
lrwxrwxrwx  1 root root    29 Feb 26  2020 acpi -> /Programs/Acpid/Settings/acpi
lrwxrwxrwx  1 root root    36 Feb  9  2021 asciidoc -> /Programs/AsciiDoc/Settings/asciidoc
lrwxrwxrwx  1 root root    30 Feb 26  2020 avahi -> /Programs/Avahi/Settings/avahi
drwxr-xr-x  2 root root  4096 May  8  2020 bash_completion.d
lrwxrwxrwx  1 root root    42 Feb  5  2021 BootScripts -> /Programs/BootScripts/Settings/BootScripts
lrwxrwxrwx  1 root root    34 May 24  2020 Compile -> /Programs/Compile/Settings/Compile
lrwxrwxrwx  1 root root    37 May 22  2020 completion -> /Programs/Scripts/Settings/completion
lrwxrwxrwx  1 root root    28 Feb 26  2020 cups -> /Programs/CUPS/Settings/cups
drwxr-xr-x  3 root root  4096 Feb 26  2020 dbus-1
lrwxrwxrwx  1 root root    33 Oct 25 00:06 default -> /Programs/Shadow/Settings/default
lrwxrwxrwx  1 root root    39 Feb 20  2020 dracut.conf.d -> /Programs/Dracut/Settings/dracut.conf.d
drwxr-xr-x  3 root root  4096 Feb 26  2020 fonts
drwxr-xr-x  2 root root  4096 May  8  2020 grub.d
lrwxrwxrwx  1 root root    31 Feb 10  2021 gtk-2.0 -> /Programs/GTK+/Settings/gtk-2.0
lrwxrwxrwx  1 root root    27 Feb 26  2020 hp -> /Programs/Hplip/Settings/hp
lrwxrwxrwx  1 root root    30 Oct 23 21:24 init.d -> /Programs/Fuse/Settings/init.d
lrwxrwxrwx  1 root root    36 Apr 13  2020 iproute2 -> /Programs/IPRoute2/Settings/iproute2
lrwxrwxrwx  1 root root    36 Mar 13  2021 luarocks -> /Programs/LuaRocks/Settings/luarocks
lrwxrwxrwx  1 root root    27 Feb 26  2020 lvm -> /Programs/LVM2/Settings/lvm
lrwxrwxrwx  1 root root    26 Oct 24 21:59 nim -> /Programs/Nim/Settings/nim
lrwxrwxrwx  1 root root    36 Feb 26  2020 openldap -> /Programs/OpenLDAP/Settings/openldap
drwxr-xr-x  2 root root  4096 Oct 25 00:06 pam.d
lrwxrwxrwx  1 root root    33 Feb 26  2020 pkcs11 -> /Programs/P11-Kit/Settings/pkcs11
lrwxrwxrwx  1 root root    26 Apr 13  2020 ppp -> /Programs/PPP/Settings/ppp
lrwxrwxrwx  1 root root    35 May  8  2020 pulse -> /Programs/PulseAudio/Settings/pulse
lrwxrwxrwx  1 root root    34 May 22  2020 Scripts -> /Programs/Scripts/Settings/Scripts
lrwxrwxrwx  1 root root    37 Oct 24 23:53 security -> /Programs/Linux-PAM/Settings/security
lrwxrwxrwx  1 root root    39 Apr  3  2020 sensors.d -> /Programs/LM-Sensors/Settings/sensors.d
drwxr-xr-x  2 root root  4096 Oct 25 00:06 skel
lrwxrwxrwx  1 root root    30 Apr 14  2020 srain -> /Programs/Srain/Settings/srain
lrwxrwxrwx  1 root root    30 Apr 14  2020 ssh -> /Programs/OpenSSH/Settings/ssh
drwxr-xr-x  3 root root  4096 Mar 13  2021 ssl
drwxr-xr-x  3 root root  4096 Oct 31 20:43 udev
drwxr-xr-x  2 root root  4096 Mar 30  2020 X11
drwxr-xr-x  3 root root  4096 Feb 26  2020 xdg
-rw-r--r--  1 root root    44 Oct 31 16:43 adjtime
lrwxrwxrwx  1 root root    33 May 22  2020 bashrc -> /Programs/Scripts/Settings/bashrc
lrwxrwxrwx  1 root root    50 Feb 26  2020 bindresvport.blacklist -> /Programs/LibTIRPC/Settings/bindresvport.blacklist
lrwxrwxrwx  1 root root    42 Feb  5  2021 BootOptions -> /Programs/BootScripts/Settings/BootOptions
lrwxrwxrwx  1 root root    43 Feb 26  2020 command.types -> /Programs/Gutenprint/Settings/command.types
lrwxrwxrwx  1 root root    42 May 22  2020 completion.bash -> /Programs/Scripts/Settings/completion.bash
lrwxrwxrwx  1 root root    49 Feb 26  2020 cups-browsed.conf -> /Programs/CUPS-Filters/Settings/cups-browsed.conf
lrwxrwxrwx  1 root root    37 Feb 26  2020 dhcpcd.conf -> /Programs/DHCPCD/Settings/dhcpcd.conf
lrwxrwxrwx  1 root root    43 Feb 26  2020 dircolors.conf -> /Programs/CoreUtils/Settings/dircolors.conf
lrwxrwxrwx  1 root root    37 Feb 20  2020 dracut.conf -> /Programs/Dracut/Settings/dracut.conf
lrwxrwxrwx  1 root root    41 May  8  2020 e2scrub.conf -> /Programs/E2FSProgs/Settings/e2scrub.conf
lrwxrwxrwx  1 root root    40 Oct 24 23:53 environment -> /Programs/Linux-PAM/Settings/environment
-rw-r--r--  1 root root  1242 Feb  5  2021 fstab
lrwxrwxrwx  1 root root    33 Oct 23 21:24 fuse.conf -> /Programs/Fuse/Settings/fuse.conf
-rw-r--r--  1 root root    26 Mar 20  2002 gobo
lrwxrwxrwx  1 root root    46 Apr  3  2017 gobohide.conf -> ../../Programs/GoboHide/Settings/gobohide.conf
-rw-r--r--  1 root root     4 May 17  2020 GoboLinuxVersion
-rw-r--r--  1 root root   687 Feb  5  2021 group
-rw-------  1 root root   679 Feb  5  2021 group-
-rw-r--r--  1 root root   547 Feb  5  2021 gshadow
-rw-------  1 root root   540 Feb  5  2021 gshadow-
-rw-r--r--  1 root root    48 Feb  5  2021 hosts
lrwxrwxrwx  1 root root    45 Apr  9  2020 hub.bash_completion.sh -> /Programs/Hub/Settings/hub.bash_completion.sh
lrwxrwxrwx  1 root root    42 Apr  9  2020 hub.fish_completion -> /Programs/Hub/Settings/hub.fish_completion
lrwxrwxrwx  1 root root    41 Apr  9  2020 hub.zsh_completion -> /Programs/Hub/Settings/hub.zsh_completion
lrwxrwxrwx  1 root root    38 Feb  5  2021 inittab -> /Programs/BootScripts/Settings/inittab
lrwxrwxrwx  1 root root    34 May 22  2020 inputrc -> /Programs/Scripts/Settings/inputrc
-rw-r--r--  1 root root     1 Oct 31 18:40 issue
-rw-r--r--  1 root root 95018 Oct 31 20:43 ld.so.cache
lrwxrwxrwx  1 root root    35 Feb 26  2020 ld.so.conf -> /Programs/Glibc/Settings/ld.so.conf
lrwxrwxrwx  1 root root    32 Oct 25 00:06 limits -> /Programs/Shadow/Settings/limits
lrwxrwxrwx  1 root root    39 Oct 25 00:06 limits.no_use -> /Programs/Shadow/Settings/limits.no_use
lrwxrwxrwx  1 root root    41 May  8  2020 listener.conf -> /Programs/Listener/Settings/listener.conf
lrwxrwxrwx  1 root root    33 Sep 10 20:44 localtime -> /usr/share/zoneinfo/Europe/Berlin
lrwxrwxrwx  1 root root    38 Oct 25 00:06 login.access -> /Programs/Shadow/Settings/login.access
lrwxrwxrwx  1 root root    45 Oct 25 00:06 login.access.no_use -> /Programs/Shadow/Settings/login.access.no_use
lrwxrwxrwx  1 root root    36 Oct 25 00:06 login.defs -> /Programs/Shadow/Settings/login.defs
lrwxrwxrwx  1 root root    32 May  8  2020 lynx.cfg -> /Programs/Lynx/Settings/lynx.cfg
lrwxrwxrwx  1 root root    32 May  8  2020 lynx.lss -> /Programs/Lynx/Settings/lynx.lss
lrwxrwxrwx  1 root root    54 May  8  2020 mke2fs.conf.e2fsprogs-new -> /Programs/E2FSProgs/Settings/mke2fs.conf.e2fsprogs-new
lrwxrwxrwx  1 root root    12 Oct 31 18:40 mtab -> /proc/mounts
lrwxrwxrwx  1 root root    37 Feb 26  2020 netconfig -> /Programs/LibTIRPC/Settings/netconfig
lrwxrwxrwx  1 root root    38 Feb 26  2020 nsswitch.conf -> /Programs/Glibc/Settings/nsswitch.conf
-rw-r--r--  1 root root  1010 Feb  5  2021 passwd
-rw-------  1 root root  1011 Feb  5  2021 passwd-
-rw-r--r--  1 root root  1011 Feb  5  2021 passwd.OLD
lrwxrwxrwx  1 root root    41 Feb 26  2020 passwdqc.conf -> /Programs/PasswdQC/Settings/passwdqc.conf
lrwxrwxrwx  1 root root    32 May  8  2020 pinforc -> /Programs/Pinfo/Settings/pinforc
-rw-r--r--  1 root root   147 Feb  5  2021 printcap
lrwxrwxrwx  1 root root    42 Apr  3  2017 protocols -> ../../Programs/IANA-etc/Settings/protocols
-rw-------  1 root root     0 Feb  5  2021 .pwd.lock
-rw-r--r--  1 root root   272 Oct 31 18:40 resolv.conf
-rw-r--r--  1 root root    91 Feb  5  2021 resolv.conf.tail
lrwxrwxrwx  1 root root    28 Feb 26  2020 rpc -> /Programs/Glibc/Settings/rpc
lrwxrwxrwx  1 root root    43 Apr  3  2020 sensors3.conf -> /Programs/LM-Sensors/Settings/sensors3.conf
lrwxrwxrwx  1 root root    41 Apr  3  2017 services -> ../../Programs/IANA-etc/Settings/services
-rw-r--r--  1 root root   288 Feb  5  2021 shadow
-rw-------  1 root root   250 Feb  5  2021 shadow-
lrwxrwxrwx  1 root root    32 Oct 25 00:06 shells -> /Programs/Shadow/Settings/shells
lrwxrwxrwx  1 root root    33 Mar 13  2021 sudo.conf -> /Programs/Sudo/Settings/sudo.conf
lrwxrwxrwx  1 root root    31 Mar 13  2021 sudoers -> /Programs/Sudo/Settings/sudoers
lrwxrwxrwx  1 root root    36 Mar 13  2021 sudoers.dist -> /Programs/Sudo/Settings/sudoers.dist
lrwxrwxrwx  1 root root    41 Mar 13  2021 sudo_logsrvd.conf -> /Programs/Sudo/Settings/sudo_logsrvd.conf
lrwxrwxrwx  1 root root    39 Apr 16  2020 syslog.conf -> /Programs/Sysklogd/Settings/syslog.conf
lrwxrwxrwx  1 root root    40 May 22  2020 UseFlags.conf -> /Programs/Scripts/Settings/UseFlags.conf
lrwxrwxrwx  1 root root    45 Apr 13  2020 vdpau_wrapper.cfg -> /Programs/LibVDPAU/Settings/vdpau_wrapper.cfg
lrwxrwxrwx  1 root root    30 Sep 10 00:03 wgetrc -> /Programs/Wget/Settings/wgetrc
lrwxrwxrwx  1 root root    34 Sep 10 00:03 wgetrc.new -> /Programs/Wget/Settings/wgetrc.new
lrwxrwxrwx  1 root root    53 Feb 26  2020 wpa_supplicant.conf -> /Programs/WPA_Supplicant/Settings/wpa_supplicant.conf
lrwxrwxrwx  1 root root    42 Feb 26  2020 WPATasks -> /Programs/WPA_Supplicant/Settings/WPATasks
lrwxrwxrwx  1 root root    34 Feb 26  2020 xattr.conf -> /Programs/ATTR/Settings/xattr.conf
lrwxrwxrwx  1 root root    35 May 22  2020 xprofile -> /Programs/Scripts/Settings/xprofile
lrwxrwxrwx  1 root root    32 May 22  2020 zshrc -> /Programs/Scripts/Settings/zshrc

For example I see there X11, ssl, udev, pam.d etc. which definitely should be linked to their counterpart directory?
Their contents are correctly symlinked mostly, e.g.

$ ll /System/Settings/X11 
total 8
drwxr-xr-x  2 root root 4096 Mar 30  2020 .
drwxr-xr-x 12 root root 4096 Oct 31 20:43 ..
lrwxrwxrwx  1 root root   34 Feb 26  2020 xinit -> /Programs/XInit/Settings/X11/xini

But again, subfolders arent e.g.

ll /etc/udev/       
total 12
drwxr-xr-x  3 root root 4096 Oct 31 20:43 .
drwxr-xr-x 12 root root 4096 Oct 31 22:29 ..
lrwxrwxrwx  1 root root   38 Oct 31 20:43 hwdb.bin -> /Programs/Eudev/Settings/udev/hwdb.bin
lrwxrwxrwx  1 root root   36 Oct 31 20:43 hwdb.d -> /Programs/Eudev/Settings/udev/hwdb.d
drwxr-xr-x  2 root root 4096 Oct 31 20:52 rules.d
lrwxrwxrwx  1 root root   39 Oct 31 20:43 udev.conf -> /Programs/Eudev/Settings/udev/udev.con

Which is causing problems for me with udev.

Is this something to fix in their corresponding recipes or is it something else?
Shouldn’t Compile do this automatically?

Thanks in advance

If multiple programs place files under the same Settings hierarchy, the /S/S directory is expanded and linking pushed down a layer, so /S/S/foo is a real directory and /S/S/foo/bar is a link to /P/Something/Settings/foo/bar. In some cases that may be forced eagerly, and it will persist in that directory even after the program that caused it is removed.

If there is a problem from a program not handling an expanded /S/S/foo directory then it’s probably a problem with that program itself that should be fixed there, rather than with the system, since it’s valid for another program to install something into /etc/foo and there’s no other way with the symlink tree to handle that. This is one of the complications that comes with this structure.

@mwh thank you for the detailed answer.

My current problem is that Eudev won’t process /System/Settings/udev/rules.d (/etc/udev/rules.d) while correctly processing /System/Index/lib/udev/rules.d/. So whatever rules I put into the first directory, they do not get applied.

Actually Hplip and Fuse put their udev rules into /etc/udev/rules.d:

ll /etc/udev/rules.d
total 8
drwxr-xr-x 2 root root 4096 Oct 31 20:52 .
drwxr-xr-x 3 root root 4096 Oct 31 20:43 ..
lrwxrwxrwx 1 root root   52 Feb 26  2020 56-hpmud.rules -> /Programs/Hplip/Settings/udev/rules.d/56-hpmud.rules
lrwxrwxrwx 1 root root   50 Oct 23 21:24 99-fuse.rules -> /Programs/Fuse/Settings/udev/rules.d/99-fuse.rules

But those rules will never be processed. Actually after talking to eudev devs those packages should put their rules under /lib/udev/rules.d instead, but that is a different topic.

And this is how I stumbled on the “missing” symlinks.

I am not actually sure why udev does not process /etc/udev/rules.d, I have moved the rules file manually to /Programs/Eudev/Settings/udev/rules.d but Eudev still does not find it.

I have talked to the Eudev devs and they say /etc/udev/rules.d should definitely get parsed, this is only adjustable during Compile time.