diff --git a/cmake/InstallAndPackage.cmake b/cmake/InstallAndPackage.cmake index b67a370e46..b1dfda8311 100644 --- a/cmake/InstallAndPackage.cmake +++ b/cmake/InstallAndPackage.cmake @@ -191,17 +191,26 @@ elseif(UNIX) set(PLATFORM "unknown") else() if(EXISTS "/etc/os-release") - file(STRINGS "/etc/os-release" OS_RELEASE_CONTENTS REGEX "^ID=") - string(REGEX MATCH "ID=(.*)" _ ${OS_RELEASE_CONTENTS}) - set(DISTRO_ID ${CMAKE_MATCH_1}) - if(DISTRO_ID STREQUAL "arch") + file(STRINGS "/etc/os-release" OS_RELEASE_LIKE_CONTENTS REGEX "^ID_LIKE=") + if (OS_RELEASE_LIKE_CONTENTS) + string(REGEX MATCH "ID_LIKE=\\\"?([^\\\"]+)" _ ${OS_RELEASE_LIKE_CONTENTS}) + string(REGEX MATCHALL "([^ ]+)" DISTRO_LIKE_IDS ${CMAKE_MATCH_1}) + endif() + if (DISTRO_LIKE_IDS) + set(DISTRO_IDS ${DISTRO_LIKE_IDS}) + else() + file(STRINGS "/etc/os-release" OS_RELEASE_CONTENTS REGEX "^ID=") + string(REGEX MATCH "ID=(.*)" _ ${OS_RELEASE_CONTENTS}) + set(DISTRO_IDS ${CMAKE_MATCH_1}) + endif() + if("arch" IN_LIST DISTRO_IDS) set(PLATFORM "arch") set(CPACK_GENERATOR "TXZ") - elseif(DISTRO_ID STREQUAL "fedora" OR DISTRO_ID STREQUAL "rhel") + elseif("fedora" IN_LIST DISTRO_IDS OR "rhel" IN_LIST DISTRO_IDS) set(PLATFORM "fedora") set(CPACK_GENERATOR "RPM") include(PackageRPM) - elseif(DISTRO_ID STREQUAL "ubuntu" OR DISTRO_ID STREQUAL "debian" OR DISTRO_ID STREQUAL "linuxmint") + elseif("debian" IN_LIST DISTRO_IDS OR "ubuntu" IN_LIST DISTRO_IDS OR "linuxmint" IN_LIST DISTRO_IDS) file(STRINGS "/etc/os-release" OS_RELEASE_CODENAME REGEX "^VERSION_CODENAME=") string(REGEX MATCH "VERSION_CODENAME=(.*)" _ ${OS_RELEASE_CODENAME}) set(RELEASE_CODENAME ${CMAKE_MATCH_1})