-
Notifications
You must be signed in to change notification settings - Fork 31
Description
SYSTEMD_UNIT_SYMLINK are currently marked as has_path and is_symlink
{ ENTRY(SYSTEMD_UNIT_SYMLINK, F, F, T, T, F, F, F, F, F) },is_symlink implies there's a target:
/* some file types have a path field, or inherit their paths */
if (entry.caps.has_path) {
entry.path = read_next_word(c, &c);
if (!entry.path) goto invalid_manifest_file;
}
...
/* symlinks have a target */
if (entry.caps.is_symlink) {
entry.target = read_next_word(c, &c);
if (!entry.target) goto invalid_manifest_file;
} else {
entry.target = NULL;
}However the manifest files i've seen in the 465*.run files have only a "path" and no target
vfazio@vfazio2 ~/Downloads :( $ head -n2 /tmp/465.31/.manifest && grep SYSTEMD_UNIT_SYMLINK /tmp/465.31/.manifest
NVIDIA Accelerated Graphics Driver for Linux-x86_64
465.31
nvidia-suspend.service 0000 SYSTEMD_UNIT_SYMLINK systemd-suspend.service.requires MODULE:installer
nvidia-hibernate.service 0000 SYSTEMD_UNIT_SYMLINK systemd-hibernate.service.requires MODULE:installer
nvidia-resume.service 0000 SYSTEMD_UNIT_SYMLINK systemd-suspend.service.requires MODULE:installer
nvidia-resume.service 0000 SYSTEMD_UNIT_SYMLINK systemd-hibernate.service.requires MODULE:installer
vfazio@vfazio2 ~/Downloads $ head -n2 /tmp/465.19.01/.manifest && grep SYSTEMD_UNIT_SYMLINK /tmp/465.19.01/.manifest
NVIDIA Accelerated Graphics Driver for Linux-x86_64
465.19.01
nvidia-suspend.service 0000 SYSTEMD_UNIT_SYMLINK systemd-suspend.service.requires MODULE:installer
nvidia-hibernate.service 0000 SYSTEMD_UNIT_SYMLINK systemd-hibernate.service.requires MODULE:installer
nvidia-resume.service 0000 SYSTEMD_UNIT_SYMLINK systemd-suspend.service.requires MODULE:installer
nvidia-resume.service 0000 SYSTEMD_UNIT_SYMLINK systemd-hibernate.service.requires MODULE:installer
The *.requires is presumably a directory in systemd_sysconf_prefix but it would seem there probably should be another field specifying the *.service file as the target between the path and the module based on how these entries get parsed. I'm not sure exactly how these manifests aren't "invalid"... Chances are it's actually reading the module assignment as the target and it's not breaking anything because the target for these symlinks gets completely overwritten based on the entry's name and not its target field.
All other symlinks in the manifest appear to have a target making the SYSTEMD ones odd-person-out.
vfazio@vfazio2 ~/Downloads $ head -n2 /tmp/465.31/.manifest && grep SYMLINK /tmp/465.31/.manifest | egrep -v SYSTEMD
NVIDIA Accelerated Graphics Driver for Linux-x86_64
465.31
libGLX_nvidia.so.0 0000 OPENGL_SYMLINK NATIVE libGLX_nvidia.so.465.31 MODULE:opengl
libGLX_indirect.so.0 0000 OPENGL_SYMLINK NATIVE libGLX_nvidia.so.465.31 MODULE:opengl
libOpenGL.so 0000 GLVND_SYMLINK NATIVE libOpenGL.so.0 MODULE:opengl
libGLESv1_CM.so.1 0000 GLVND_SYMLINK NATIVE libGLESv1_CM.so.1.2.0 MODULE:opengl
libGLESv1_CM.so 0000 GLVND_SYMLINK NATIVE libGLESv1_CM.so.1 MODULE:opengl
libGLESv2.so.2 0000 GLVND_SYMLINK NATIVE libGLESv2.so.2.1.0 MODULE:opengl
libGLESv2.so 0000 GLVND_SYMLINK NATIVE libGLESv2.so.2 MODULE:opengl
libGLX.so 0000 GLX_CLIENT_SYMLINK NATIVE libGLX.so.0 MODULE:opengl
libGL.so.1 0000 GLX_CLIENT_SYMLINK NATIVE libGL.so.1.7.0 MODULE:opengl
libGL.so 0000 GLX_CLIENT_SYMLINK NATIVE libGL.so.1 MODULE:opengl
libEGL.so.1 0000 EGL_CLIENT_SYMLINK NATIVE libEGL.so.1.1.0 MODULE:opengl
libEGL.so 0000 EGL_CLIENT_SYMLINK NATIVE libEGL.so.1 MODULE:opengl
libglxserver_nvidia.so 0000 GLX_MODULE_SYMLINK extensions/ libglxserver_nvidia.so.465.31 MODULE:opengl
libnvidia-cfg.so.1 0000 UTILITY_LIB_SYMLINK NATIVE libnvidia-cfg.so.465.31 MODULE:xutils
libnvidia-cfg.so 0000 UTILITY_LIB_SYMLINK NATIVE libnvidia-cfg.so.1 MODULE:xutils
nvidia-uninstall 0000 UTILITY_BIN_SYMLINK nvidia-installer MODULE:installer
libnvidia-ml.so.1 0000 CUDA_SYMLINK NATIVE / libnvidia-ml.so.465.31 MODULE:nvml
libnvidia-ml.so 0000 CUDA_SYMLINK NATIVE / libnvidia-ml.so.1 MODULE:nvml
libvdpau_nvidia.so.1 0000 VDPAU_SYMLINK NATIVE vdpau/ libvdpau_nvidia.so.465.31 MODULE:vdpau
libvdpau_nvidia.so 0000 VDPAU_SYMLINK NATIVE / vdpau/libvdpau_nvidia.so.465.31 MODULE:vdpau
libcuda.so.1 0000 CUDA_SYMLINK NATIVE / libcuda.so.465.31 MODULE:gpgpu
libcuda.so 0000 CUDA_SYMLINK NATIVE / libcuda.so.1 MODULE:gpgpu
libnvidia-opencl.so.1 0000 OPENCL_LIB_SYMLINK NATIVE / libnvidia-opencl.so.465.31 MODULE:gpgpu
libOpenCL.so.1.0 0000 OPENCL_WRAPPER_SYMLINK NATIVE / libOpenCL.so.1.0.0 MODULE:gpgpu
libOpenCL.so.1 0000 OPENCL_WRAPPER_SYMLINK NATIVE / libOpenCL.so.1.0 MODULE:gpgpu
libOpenCL.so 0000 OPENCL_WRAPPER_SYMLINK NATIVE / libOpenCL.so.1 MODULE:gpgpu
libnvidia-ptxjitcompiler.so.1 0000 CUDA_SYMLINK NATIVE / libnvidia-ptxjitcompiler.so.465.31 MODULE:gpgpucomp
libnvidia-ptxjitcompiler.so 0000 CUDA_SYMLINK NATIVE / libnvidia-ptxjitcompiler.so.1 MODULE:gpgpucomp
libnvcuvid.so.1 0000 NVCUVID_LIB_SYMLINK NATIVE libnvcuvid.so.465.31 MODULE:nvcuvid
libnvcuvid.so 0000 NVCUVID_LIB_SYMLINK NATIVE libnvcuvid.so.1 MODULE:nvcuvid
libnvidia-encode.so.1 0000 ENCODEAPI_LIB_SYMLINK NATIVE libnvidia-encode.so.465.31 MODULE:encodeapi
libnvidia-encode.so 0000 ENCODEAPI_LIB_SYMLINK NATIVE libnvidia-encode.so.1 MODULE:encodeapi
libnvidia-ifr.so.1 0000 NVIFR_LIB_SYMLINK NATIVE libnvidia-ifr.so.465.31 MODULE:nvifr
libnvidia-ifr.so 0000 NVIFR_LIB_SYMLINK NATIVE libnvidia-ifr.so.1 MODULE:nvifr
libnvidia-fbc.so.1 0000 UTILITY_LIB_SYMLINK NATIVE libnvidia-fbc.so.465.31 MODULE:nvfbc
libnvidia-fbc.so 0000 UTILITY_LIB_SYMLINK NATIVE libnvidia-fbc.so.1 MODULE:nvfbc
libEGL_nvidia.so.0 0000 OPENGL_SYMLINK NATIVE libEGL_nvidia.so.465.31 MODULE:egl
libGLESv2_nvidia.so.2 0000 OPENGL_SYMLINK NATIVE libGLESv2_nvidia.so.465.31 MODULE:egl
libGLESv1_CM_nvidia.so.1 0000 OPENGL_SYMLINK NATIVE libGLESv1_CM_nvidia.so.465.31 MODULE:egl
libnvidia-allocator.so.1 0000 UTILITY_LIB_SYMLINK NATIVE libnvidia-allocator.so.465.31 MODULE:nvalloc
libnvidia-allocator.so 0000 UTILITY_LIB_SYMLINK NATIVE libnvidia-allocator.so.1 MODULE:nvalloc
libnvoptix.so.1 0000 OPENGL_SYMLINK NATIVE libnvoptix.so.465.31 MODULE:optix
libnvidia-opticalflow.so.1 0000 NVCUVID_LIB_SYMLINK NATIVE libnvidia-opticalflow.so.465.31 MODULE:opticalflow
libnvidia-opticalflow.so 0000 NVCUVID_LIB_SYMLINK NATIVE libnvidia-opticalflow.so.1 MODULE:opticalflow
Preferrably the manifest files would be "fixed" so the generic parser logic can still assume that all symlinks have a valid target specified.