Browse Source

CMake: Install config and logging directories

These directories are essential for apt to work, so we should
install them in the upstream build system and not just in the
debian packaging...
Julian Andres Klode 7 years ago
parent
commit
35d74be55f
2 changed files with 26 additions and 0 deletions
  1. 13 0
      CMake/Misc.cmake
  2. 13 0
      CMakeLists.txt

+ 13 - 0
CMake/Misc.cmake

@@ -86,3 +86,16 @@ function(path_join out path1 path2)
         set(${out} "${path1}/${path2}" PARENT_SCOPE)
     endif()
 endfunction()
+
+# install_empty_directories(path ...)
+#
+# Creates empty directories in the install destination dir. Paths may be
+# absolute or relative; in the latter case, the value of CMAKE_INSTALL_PREFIX
+# is prepended.
+function(install_empty_directories)
+    foreach(path ${ARGN})
+        path_join(full_path "${CMAKE_INSTALL_PREFIX}" "${path}")
+        INSTALL(CODE "MESSAGE(STATUS \"Creating directory: \$ENV{DESTDIR}${full_path}\")"
+                CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${full_path})")
+    endforeach()
+endfunction()

+ 13 - 0
CMakeLists.txt

@@ -143,3 +143,16 @@ add_subdirectory(test)
 
 # Link update-po4a into the update-po target
 add_dependencies(update-po update-po4a)
+
+# Create our directories.
+install_empty_directories(
+  ${CMAKE_INSTALL_FULL_SYSCONFDIR}/apt/apt.conf.d
+  ${CMAKE_INSTALL_FULL_SYSCONFDIR}/apt/preferences.d
+  ${CMAKE_INSTALL_FULL_SYSCONFDIR}/apt/sources.list.d
+  ${CMAKE_INSTALL_FULL_SYSCONFDIR}/apt/trusted.gpg.d
+  ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/cache/apt/archives/partial
+  ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/apt/lists/partial
+  ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/apt/mirrors/partial
+  ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/apt/periodic
+  ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/apt
+)