@@ -31,6 +31,7 @@ tmpdir=$(mktemp -d)
31
31
TEST_MODULES=(
32
32
" dkms_test"
33
33
" dkms_dependencies_test"
34
+ " dkms_dependencies_rebuild_test"
34
35
" dkms_circular_dependencies_test"
35
36
" dkms_replace_test"
36
37
" dkms_noautoinstall_test"
@@ -54,7 +55,9 @@ TEST_MODULES=(
54
55
)
55
56
TEST_TMPDIRS=(
56
57
" /usr/src/dkms_test-1.0"
58
+ " /usr/src/dkms_test-2.0"
57
59
" /usr/src/dkms_dependencies_test-1.0"
60
+ " /usr/src/dkms_dependencies_rebuild_test-1.0"
58
61
" /usr/src/dkms_circular_dependencies_test-1.0"
59
62
" /usr/src/dkms_replace_test-2.0"
60
63
" /usr/src/dkms_noautoinstall_test-1.0"
@@ -1809,6 +1812,272 @@ check_no_dkms_test
1809
1812
1810
1813
fi # dependencies tests
1811
1814
1815
+ if [[ ! $only || $only = rebuild_dependencies ]]; then
1816
+
1817
+ # ###########################################################################
1818
+ echo ' *** Testing dkms modules with dependencies and rebuild requirements'
1819
+ # ###########################################################################
1820
+
1821
+ set_signing_message " dkms_dependencies_rebuild_test" " 1.0"
1822
+ SIGNING_MESSAGE_dependencies=" $SIGNING_MESSAGE "
1823
+ set_signing_message " dkms_test" " 1.0"
1824
+
1825
+ echo ' Adding the prerequisite test module'
1826
+ run_with_expected_output dkms add test/dkms_test-1.0 << EOF
1827
+ Creating symlink /var/lib/dkms/dkms_test/1.0/source -> /usr/src/dkms_test-1.0
1828
+ EOF
1829
+ check_module_source_tree_created /usr/src/dkms_test-1.0
1830
+ run_status_with_expected_output ' dkms_test' << EOF
1831
+ dkms_test/1.0: added
1832
+ EOF
1833
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1834
+ EOF
1835
+
1836
+ echo ' Running dkms autoinstall'
1837
+ run_with_expected_output dkms autoinstall -k " ${KERNEL_VER} " << EOF
1838
+ ${SIGNING_PROLOGUE}
1839
+ Autoinstall of module dkms_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} )
1840
+ Building module(s)... done.${SIGNING_MESSAGE}
1841
+ Installing /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_test.ko${mod_compression_ext}
1842
+ Running depmod... done.
1843
+
1844
+ Autoinstall on ${KERNEL_VER} succeeded for module(s) dkms_test.
1845
+ EOF
1846
+ run_status_with_expected_output ' dkms_test' << EOF
1847
+ dkms_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
1848
+ EOF
1849
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1850
+ EOF
1851
+
1852
+ echo ' Adding test module with dependencies'
1853
+ run_with_expected_output dkms add test/dkms_dependencies_rebuild_test-1.0 << EOF
1854
+ Creating symlink /var/lib/dkms/dkms_dependencies_rebuild_test/1.0/source -> /usr/src/dkms_dependencies_rebuild_test-1.0
1855
+ EOF
1856
+ check_module_source_tree_created /usr/src/dkms_dependencies_rebuild_test-1.0
1857
+ run_status_with_expected_output ' dkms_test' << EOF
1858
+ dkms_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
1859
+ EOF
1860
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1861
+ dkms_dependencies_rebuild_test/1.0: added
1862
+ EOF
1863
+
1864
+ echo ' Running dkms autoinstall'
1865
+ run_with_expected_output dkms autoinstall -k " ${KERNEL_VER} " << EOF
1866
+ ${SIGNING_PROLOGUE}
1867
+ Autoinstall of module dkms_dependencies_rebuild_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} )
1868
+ Building module(s)... done.${SIGNING_MESSAGE_dependencies}
1869
+ Installing /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_dependencies_rebuild_test.ko${mod_compression_ext}
1870
+ Running depmod... done.
1871
+
1872
+ Autoinstall on ${KERNEL_VER} succeeded for module(s) dkms_test dkms_dependencies_rebuild_test.
1873
+ EOF
1874
+ run_status_with_expected_output ' dkms_test' << EOF
1875
+ dkms_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
1876
+ EOF
1877
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1878
+ dkms_dependencies_rebuild_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
1879
+ EOF
1880
+ run_with_expected_output cat /var/lib/dkms/dkms_dependencies_rebuild_test/kernel-${KERNEL_VER} -${KERNEL_ARCH} /.dep_dkms_test << EOF
1881
+ 1.0
1882
+ EOF
1883
+
1884
+ echo ' Running dkms kernel_prerm'
1885
+ run_with_expected_output dkms kernel_prerm -k " ${KERNEL_VER} " << EOF
1886
+ dkms: removing module dkms_dependencies_rebuild_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} )
1887
+ Module dkms_dependencies_rebuild_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} ):
1888
+ Before uninstall, this module version was ACTIVE on this kernel.
1889
+ Deleting /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_dependencies_rebuild_test.ko${mod_compression_ext}
1890
+
1891
+ dkms: removing module dkms_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} )
1892
+ Module dkms_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} ):
1893
+ Before uninstall, this module version was ACTIVE on this kernel.
1894
+ Deleting /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_test.ko${mod_compression_ext}
1895
+
1896
+ Running depmod... done.
1897
+ EOF
1898
+ run_status_with_expected_output ' dkms_test' << EOF
1899
+ dkms_test/1.0: added
1900
+ EOF
1901
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1902
+ dkms_dependencies_rebuild_test/1.0: added
1903
+ EOF
1904
+
1905
+ echo ' Running dkms kernel_prerm again'
1906
+ run_with_expected_output dkms kernel_prerm -k " ${KERNEL_VER} " << EOF
1907
+ EOF
1908
+ run_status_with_expected_output ' dkms_test' << EOF
1909
+ dkms_test/1.0: added
1910
+ EOF
1911
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1912
+ dkms_dependencies_rebuild_test/1.0: added
1913
+ EOF
1914
+
1915
+ echo ' Running dkms autoinstall'
1916
+ run_with_expected_output dkms autoinstall -k " ${KERNEL_VER} " << EOF
1917
+ ${SIGNING_PROLOGUE}
1918
+ Autoinstall of module dkms_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} )
1919
+ Building module(s)... done.${SIGNING_MESSAGE}
1920
+ Installing /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_test.ko${mod_compression_ext}
1921
+ Running depmod... done.
1922
+
1923
+ Autoinstall of module dkms_dependencies_rebuild_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} )
1924
+ Building module(s)... done.${SIGNING_MESSAGE_dependencies}
1925
+ Installing /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_dependencies_rebuild_test.ko${mod_compression_ext}
1926
+ Running depmod... done.
1927
+
1928
+ Autoinstall on ${KERNEL_VER} succeeded for module(s) dkms_test dkms_dependencies_rebuild_test.
1929
+ EOF
1930
+ run_status_with_expected_output ' dkms_test' << EOF
1931
+ dkms_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
1932
+ EOF
1933
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1934
+ dkms_dependencies_rebuild_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
1935
+ EOF
1936
+
1937
+ echo ' Running dkms autoinstall again'
1938
+ run_with_expected_output dkms autoinstall -k " ${KERNEL_VER} " << EOF
1939
+ EOF
1940
+ run_status_with_expected_output ' dkms_test' << EOF
1941
+ dkms_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
1942
+ EOF
1943
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1944
+ dkms_dependencies_rebuild_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
1945
+ EOF
1946
+
1947
+ echo ' Removing the test module with dependencies'
1948
+ run_with_expected_output dkms remove -k " ${KERNEL_VER} " -m dkms_dependencies_rebuild_test -v 1.0 << EOF
1949
+ Module dkms_dependencies_rebuild_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} ):
1950
+ Before uninstall, this module version was ACTIVE on this kernel.
1951
+ Deleting /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_dependencies_rebuild_test.ko${mod_compression_ext}
1952
+ Running depmod... done.
1953
+
1954
+ Deleting module dkms_dependencies_rebuild_test/1.0 completely from the DKMS tree.
1955
+ EOF
1956
+ run_status_with_expected_output ' dkms_test' << EOF
1957
+ dkms_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
1958
+ EOF
1959
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1960
+ EOF
1961
+
1962
+ echo ' Removing the prerequisite test module'
1963
+ run_with_expected_output dkms remove -k " ${KERNEL_VER} " -m dkms_test -v 1.0 << EOF
1964
+ Module dkms_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} ):
1965
+ Before uninstall, this module version was ACTIVE on this kernel.
1966
+ Deleting /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_test.ko${mod_compression_ext}
1967
+ Running depmod... done.
1968
+
1969
+ Deleting module dkms_test/1.0 completely from the DKMS tree.
1970
+ EOF
1971
+ run_status_with_expected_output ' dkms_test' << EOF
1972
+ EOF
1973
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1974
+ EOF
1975
+
1976
+ remove_module_source_tree /usr/src/dkms_test-1.0 /usr/src/dkms_dependencies_rebuild_test-1.0
1977
+
1978
+ echo ' Adding test module with unsatisfied dependencies'
1979
+ run_with_expected_output dkms add test/dkms_dependencies_rebuild_test-1.0 << EOF
1980
+ Creating symlink /var/lib/dkms/dkms_dependencies_rebuild_test/1.0/source -> /usr/src/dkms_dependencies_rebuild_test-1.0
1981
+ EOF
1982
+ check_module_source_tree_created /usr/src/dkms_dependencies_rebuild_test-1.0
1983
+ run_status_with_expected_output ' dkms_test' << EOF
1984
+ EOF
1985
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1986
+ dkms_dependencies_rebuild_test/1.0: added
1987
+ EOF
1988
+
1989
+ echo ' Building the test module with unsatisfied dependencies (expected error)'
1990
+ run_with_expected_error 13 dkms build -k " ${KERNEL_VER} " -m dkms_dependencies_rebuild_test -v 1.0 << EOF
1991
+ ${SIGNING_PROLOGUE}
1992
+
1993
+ Error! Aborting build of module dkms_dependencies_rebuild_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} ) due to missing BUILD_DEPENDS: dkms_test.
1994
+ You may override by specifying --force.
1995
+ EOF
1996
+ run_status_with_expected_output ' dkms_test' << EOF
1997
+ EOF
1998
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
1999
+ dkms_dependencies_rebuild_test/1.0: added
2000
+ EOF
2001
+
2002
+ # ########### WIP
2003
+
2004
+ echo ' Building the test module with unsatisfied dependencies by force'
2005
+ run_with_expected_output dkms build -k " ${KERNEL_VER} " -m dkms_dependencies_rebuild_test -v 1.0 --force << EOF
2006
+ ${SIGNING_PROLOGUE}
2007
+ Warning: Trying to build module dkms_dependencies_rebuild_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} ) despite of missing BUILD_DEPENDS: dkms_test.
2008
+ Building module(s)... done.${SIGNING_MESSAGE_dependencies}
2009
+ EOF
2010
+ run_status_with_expected_output ' dkms_test' << EOF
2011
+ EOF
2012
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
2013
+ dkms_dependencies_rebuild_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : built
2014
+ EOF
2015
+
2016
+ echo ' Installing the test module with unsatisfied dependencies'
2017
+ run_with_expected_output dkms install -k " ${KERNEL_VER} " -m dkms_dependencies_rebuild_test -v 1.0 << EOF
2018
+ Installing /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_dependencies_rebuild_test.ko${mod_compression_ext}
2019
+ Running depmod... done.
2020
+ EOF
2021
+ run_status_with_expected_output ' dkms_test' << EOF
2022
+ EOF
2023
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
2024
+ dkms_dependencies_rebuild_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
2025
+ EOF
2026
+
2027
+ echo " Running dkms autoinstall"
2028
+ run_with_expected_output dkms autoinstall -k " ${KERNEL_VER} " << EOF
2029
+ EOF
2030
+ run_status_with_expected_output ' dkms_test' << EOF
2031
+ EOF
2032
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
2033
+ dkms_dependencies_rebuild_test/1.0, ${KERNEL_VER} , ${KERNEL_ARCH} : installed
2034
+ EOF
2035
+
2036
+ echo ' Unbuilding the test module with unsatisfied dependencies'
2037
+ run_with_expected_output dkms unbuild -k " ${KERNEL_VER} " -m dkms_dependencies_rebuild_test -v 1.0 << EOF
2038
+ Module dkms_dependencies_rebuild_test/1.0 for kernel ${KERNEL_VER} (${KERNEL_ARCH} ):
2039
+ Before uninstall, this module version was ACTIVE on this kernel.
2040
+ Deleting /lib/modules/${KERNEL_VER} /${expected_dest_loc} /dkms_dependencies_rebuild_test.ko${mod_compression_ext}
2041
+ Running depmod... done.
2042
+ EOF
2043
+ run_status_with_expected_output ' dkms_test' << EOF
2044
+ EOF
2045
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
2046
+ dkms_dependencies_rebuild_test/1.0: added
2047
+ EOF
2048
+
2049
+ echo " Running dkms autoinstall (expected error)"
2050
+ run_with_expected_error 11 dkms autoinstall -k " ${KERNEL_VER} " << EOF
2051
+ dkms_dependencies_rebuild_test/1.0 autoinstall failed due to missing dependencies: dkms_test.
2052
+
2053
+ Error! One or more modules failed to install during autoinstall.
2054
+ Refer to previous errors for more information.
2055
+ EOF
2056
+ run_status_with_expected_output ' dkms_test' << EOF
2057
+ EOF
2058
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
2059
+ dkms_dependencies_rebuild_test/1.0: added
2060
+ EOF
2061
+
2062
+ echo ' Removing the test module with unsatisfied dependencies'
2063
+ run_with_expected_output dkms remove -k " ${KERNEL_VER} " -m dkms_dependencies_rebuild_test -v 1.0 << EOF
2064
+ Module dkms_dependencies_rebuild_test/1.0 is not installed for kernel ${KERNEL_VER} (${KERNEL_ARCH} ). Skipping...
2065
+ Module dkms_dependencies_rebuild_test/1.0 is not built for kernel ${KERNEL_VER} (${KERNEL_ARCH} ). Skipping...
2066
+
2067
+ Deleting module dkms_dependencies_rebuild_test/1.0 completely from the DKMS tree.
2068
+ EOF
2069
+ run_status_with_expected_output ' dkms_test' << EOF
2070
+ EOF
2071
+ run_status_with_expected_output ' dkms_dependencies_rebuild_test' << EOF
2072
+ EOF
2073
+
2074
+ remove_module_source_tree /usr/src/dkms_dependencies_rebuild_test-1.0
2075
+
2076
+ echo ' Checking that the environment is clean again'
2077
+ check_no_dkms_test
2078
+
2079
+ fi # rebuild_dependencies tests
2080
+
1812
2081
if [[ ! $only || $only = replace ]]; then
1813
2082
1814
2083
# ###########################################################################
0 commit comments