Fix releasetools device_specific error case

When the specified device_specific code isn't found, handle the error
with a log statement rather than a NoneType exception.

Fixes: 390497895
Test: treehugger
Change-Id: Id5925f4e9ec9ae35d217823fc32f1ac7f06f1652
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index e9cb5bb..b6cbb15 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -3138,6 +3138,8 @@
         if not os.path.exists(path) and os.path.exists(path + ".py"):
           path = path + ".py"
         spec = importlib.util.spec_from_file_location("device_specific", path)
+        if not spec:
+          raise FileNotFoundError(path)
         logger.info("loaded device-specific extensions from %s", path)
         module = importlib.util.module_from_spec(spec)
         spec.loader.exec_module(module)
diff --git a/tools/releasetools/test_common.py b/tools/releasetools/test_common.py
index 89933a0..62f425a 100644
--- a/tools/releasetools/test_common.py
+++ b/tools/releasetools/test_common.py
@@ -2157,3 +2157,11 @@
         'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
         'ro.product.odm.device': 'coral',
     }, copied_props.build_props)
+
+
+class DeviceSpecificParamsTest(test_utils.ReleaseToolsTestCase):
+
+  def test_missingSource(self):
+    common.OPTIONS.device_specific = '/does_not_exist'
+    ds = DeviceSpecificParams()
+    self.assertIsNone(ds.module)