diff -Nru ubuntu-drivers-common-0.9.7.1.1/debian/changelog ubuntu-drivers-common-0.9.7.1.2/debian/changelog --- ubuntu-drivers-common-0.9.7.1.1/debian/changelog 2023-06-16 10:28:43.000000000 +0000 +++ ubuntu-drivers-common-0.9.7.1.2/debian/changelog 2023-08-31 04:21:20.000000000 +0000 @@ -1,3 +1,10 @@ +ubuntu-drivers-common (1:0.9.7.1.2) lunar; urgency=medium + + * UbuntuDrivers/detect.py: + - Skip modalias checking if id in force install list (LP: #1990341) + + -- Dirk Su Thu, 31 Aug 2023 12:21:20 +0800 + ubuntu-drivers-common (1:0.9.7.1.1) lunar; urgency=medium * ubuntu-drivers: diff -Nru ubuntu-drivers-common-0.9.7.1.1/tests/test_ubuntu_drivers.py ubuntu-drivers-common-0.9.7.1.2/tests/test_ubuntu_drivers.py --- ubuntu-drivers-common-0.9.7.1.1/tests/test_ubuntu_drivers.py 2023-04-26 09:55:12.000000000 +0000 +++ ubuntu-drivers-common-0.9.7.1.2/tests/test_ubuntu_drivers.py 2023-08-31 04:21:20.000000000 +0000 @@ -41,6 +41,7 @@ # modalias of an nvidia card covered by our nvidia-* packages modalias_nv = 'pci:v000010DEd000010C3sv00003842sd00002670bc03sc03i00' +modalias_nv_2 = 'pci:v000010DEd00002777sv00003842sd00002670bc03sc03i00' def gen_fakehw(): @@ -53,6 +54,7 @@ t.add_device('usb', 'black', None, ['modalias', 'usb:v9876dABCDsv01sd02bc00sc01i05'], []) # covered by nvidia-*.deb t.add_device('pci', 'graphics', None, ['modalias', modalias_nv], []) + t.add_device('pci', 'graphics_2', None, ['modalias', modalias_nv_2], []) # not covered by any driver package t.add_device('pci', 'grey', None, ['modalias', 'pci:vDEADBEEFd00'], []) t.add_device('ssb', 'yellow', None, [], ['MODALIAS', 'pci:vDEADBEEFd00']) @@ -172,7 +174,8 @@ 'pci:v98761234d00sv00000001sd00bc00sc00i00', 'pci:v67891234d00sv00000001sd00bc00sc00i00', 'dmi:aaapnXPS137390:a', - modalias_nv])) + modalias_nv, + modalias_nv_2])) self.assertTrue(res['pci:vDEADBEEFd00'].endswith('/sys/devices/grey')) def test_system_driver_packages_performance(self): @@ -1448,6 +1451,23 @@ }''') res_470_no_490 = UbuntuDrivers.detect.system_driver_packages(cache, sys_path=self.umockdev.get_sys_dir()) + + # point to a specific version from ubuntu-archive (source list) which ID + # doesn't exist in any other old version + with open(csg_file, 'w') as csg: + csg.write('''{ + "chips": [ + { + "devid": "0x2777", + "name": "TEST 2777", + "branch": "520", + "features": [ + "runtimepm" + ] + } + ] +}''') + res_520_only = UbuntuDrivers.detect.system_driver_packages(cache, sys_path=self.umockdev.get_sys_dir()) finally: chroot.remove() @@ -1472,9 +1492,12 @@ self.assertTrue('nvidia-driver-470' in res_470_no_490) self.assertFalse('nvidia-driver-490' in res_470_no_490) packages = UbuntuDrivers.detect.gpgpu_install_filter(res_470_no_490, 'nvidia') - print(set(packages)) self.assertEqual(set(packages), set(['nvidia-driver-470'])) + self.assertTrue('nvidia-driver-520' in res_520_only) + packages = UbuntuDrivers.detect.gpgpu_install_filter(res_520_only, 'nvidia') + self.assertEqual(set(packages), set(['nvidia-driver-520'])) + def test_system_gpgpu_driver_packages_chroot1(self): '''system_gpgpu_driver_packages() for test package repository''' diff -Nru ubuntu-drivers-common-0.9.7.1.1/UbuntuDrivers/detect.py ubuntu-drivers-common-0.9.7.1.2/UbuntuDrivers/detect.py --- ubuntu-drivers-common-0.9.7.1.1/UbuntuDrivers/detect.py 2023-04-26 09:56:19.000000000 +0000 +++ ubuntu-drivers-common-0.9.7.1.2/UbuntuDrivers/detect.py 2023-08-31 04:21:20.000000000 +0000 @@ -294,8 +294,6 @@ packages_for_modalias.cache_maps[apt_cache_hash] = cache_map pat, bus_map = cache_map.get(modalias.split(':', 1)[0], (None, {})) - if pat is None or not pat.match(modalias): - return [] vid, did = _get_vendor_model_from_alias(modalias) nvamd = None found = 0 @@ -310,6 +308,10 @@ if nvamd is not None and not found: logging.debug('%s is not in the package pool.' % nvamdn) + if not found: + if pat is None or not pat.match(modalias): + return [] + for alias in bus_map: if fnmatch.fnmatchcase(modalias.lower(), alias.lower()): for p in bus_map[alias]: