@@ -46,10 +46,7 @@ func NewGraphicsDiscoverer(logger *logrus.Logger, devices image.VisibleDevices,
4646
4747 drmByPathSymlinks := newCreateDRMByPathSymlinks (logger , drmDeviceNodes , cfg )
4848
49- xorg , err := newXorgDiscoverer (logger , driverRoot , cfg .NvidiaCTKPath )
50- if err != nil {
51- return nil , fmt .Errorf ("failed to create Xorg discoverer: %v" , err )
52- }
49+ xorg := optionalXorgDiscoverer (logger , driverRoot , cfg .NvidiaCTKPath )
5350
5451 discover := Merge (
5552 Merge (drmDeviceNodes , drmByPathSymlinks ),
@@ -259,6 +256,17 @@ type xorgHooks struct {
259256
260257var _ Discover = (* xorgHooks )(nil )
261258
259+ // optionalXorgDiscoverer creates a discoverer for Xorg libraries.
260+ // If the creation of the discoverer fails, a None discoverer is returned.
261+ func optionalXorgDiscoverer (logger * logrus.Logger , driverRoot string , nvidiaCTKPath string ) Discover {
262+ xorg , err := newXorgDiscoverer (logger , driverRoot , nvidiaCTKPath )
263+ if err != nil {
264+ logger .Warnf ("Failed to create Xorg discoverer: %v; skipping xorg libraries" , err )
265+ return None {}
266+ }
267+ return xorg
268+ }
269+
262270func newXorgDiscoverer (logger * logrus.Logger , driverRoot string , nvidiaCTKPath string ) (Discover , error ) {
263271 libCudaPaths , err := cuda .New (
264272 cuda .WithLogger (logger ),
0 commit comments