diff --git a/CMakeModules/OsgCPack.cmake b/CMakeModules/OsgCPack.cmake index 706487231..4bd2c2e76 100644 --- a/CMakeModules/OsgCPack.cmake +++ b/CMakeModules/OsgCPack.cmake @@ -57,7 +57,7 @@ ENDIF() SET(CPACK_SOURCE_GENERATOR "TGZ") -# for ms visual studio we use it's internally defined variable to get the configuration (debug,release, ...) +# for ms visual studio we use it's internally defined variable to get the configuration (debug,release, ...) IF(MSVC_IDE) SET(OSG_CPACK_CONFIGURATION "$(OutDir)") SET(PACKAGE_TARGET_PREFIX "Package ") @@ -84,9 +84,87 @@ ENDIF() SET(PACKAGE_ALL_TARGETNAME "${PACKAGE_TARGET_PREFIX}ALL") ADD_CUSTOM_TARGET(${PACKAGE_ALL_TARGETNAME}) + # cpack configuration for debian packages +IF(${CPACK_GENERATOR} STREQUAL "DEB") + SET(OPENSCENEGRAPH_PACKAGE_MAINTAINER + "" + CACHE STRING + "Name and email address of the package maintainer, e.g., 'Jon Doe '" + ) + SET(CPACK_LIBOPENSCENEGRAPH_DEPENDENCIES + "libopenthreads" + CACHE STRING + "Dependend packages for the openscenegraph library package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_LIBOPENSCENEGRAPH-DEV_DEPENDENCIES + "libopenscenegraph" + CACHE STRING + "Dependend packages for the openscenegraph development package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_LIBOPENTHREADS_DEPENDENCIES + "" + CACHE STRING + "Dependend packages for the openthreads library package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_LIBOPENTHREADS-DEV_DEPENDENCIES + "libopenthreads" + CACHE STRING + "Dependend packages for the openthreads development package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_OPENSCENEGRAPH_DEPENDENCIES + "libopenscenegraph" + CACHE STRING + "Dependend packages for the openscenegraph main package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_OPENSCENEGRAPH-ALL_DEPENDENCIES + "" + CACHE STRING + "Dependend packages for the openscenegraph package with all components (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + + SET(CPACK_LIBOPENSCENEGRAPH_CONFLICTS + "" + CACHE STRING + "Conflicting packages for the openscenegraph library package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_LIBOPENSCENEGRAPH-DEV_CONFLICTS + "" + CACHE STRING + "Conflicting packages for the openscenegraph development package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_LIBOPENTHREADS_CONFLICTS + "" + CACHE STRING + "Conflicting packages for the openthreads library package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_LIBOPENTHREADS-DEV_CONFLICTS + "" + CACHE STRING + "Conflicting packages for the openthreads development package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_OPENSCENEGRAPH_CONFLICTS + "" + CACHE STRING + "Conflicting packages for the openscenegraph main package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_OPENSCENEGRAPH-ALL_CONFLICTS + "" + CACHE STRING + "Conflicting packages for the openscenegraph package with all components (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) +ENDIF() + MACRO(GENERATE_PACKAGING_TARGET package_name) SET(CPACK_PACKAGE_NAME ${package_name}) + # set debian dependencies AND conflicts + IF(${CPACK_GENERATOR} STREQUAL "DEB") + STRING(TOUPPER CPACK_${package_name}_DEPENDENCIES DEPENDENCIES_VAR) + STRING(TOUPPER CPACK_${package_name}_CONFLICTS CONFLICTS_VAR) + SET(OSG_PACKAGE_DEPENDS "${${DEPENDENCIES_VAR}}") + SET(OSG_PACKAGE_CONFLICTS "${${CONFLICTS_VAR}}") + ENDIF() + # the doc packages don't need a system-arch specification IF(${package} MATCHES -doc) SET(OSG_PACKAGE_FILE_NAME ${package_name}-${OPENSCENEGRAPH_VERSION}) @@ -114,7 +192,7 @@ MACRO(GENERATE_PACKAGING_TARGET package_name) ELSE() SET(ARCHIVE_EXT "tar.gz") ENDIF() - + # Create a target that creates the current package # and rename the package to give it proper filename ADD_CUSTOM_TARGET(${PACKAGE_TARGETNAME}) @@ -124,7 +202,7 @@ MACRO(GENERATE_PACKAGING_TARGET package_name) COMMAND ${CMAKE_CPACK_COMMAND} -C ${OSG_CPACK_CONFIGURATION} --config ${OpenSceneGraph_BINARY_DIR}/CPackConfig-${package_name}.cmake COMMENT "Run CPack packaging for ${package_name}..." ) - # Add the exact same custom command to the all package generating target. + # Add the exact same custom command to the all package generating target. # I can't use add_dependencies to do this because it would allow parallell building of packages so am going brute here ADD_CUSTOM_COMMAND(TARGET ${PACKAGE_ALL_TARGETNAME} COMMAND ${CMAKE_CPACK_COMMAND} -C ${OSG_CPACK_CONFIGURATION} --config ${OpenSceneGraph_BINARY_DIR}/CPackConfig-${package_name}.cmake diff --git a/CMakeModules/OsgCPackConfig.cmake.in b/CMakeModules/OsgCPackConfig.cmake.in index 0ab151d09..376b4d6d9 100644 --- a/CMakeModules/OsgCPackConfig.cmake.in +++ b/CMakeModules/OsgCPackConfig.cmake.in @@ -53,7 +53,7 @@ SET(CPACK_NSIS_INSTALLER_ICON_CODE "") SET(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") SET(CPACK_OUTPUT_CONFIG_FILE "${PROJECT_BINARY_DIR}/CPackConfig-${OSG_CPACK_COMPONENT}.cmake") SET(CPACK_PACKAGE_DEFAULT_LOCATION "/") -SET(CPACK_PACKAGE_DESCRIPTION_FILE "${OpenSceneGraph_SOURCE_DIR}/README.txt") +SET(CPACK_PACKAGE_DESCRIPTION_FILE "${OpenSceneGraph_SOURCE_DIR}/README.md") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The OpenSceneGraph is an open source high performance 3d graphics toolkit") SET(CPACK_PACKAGE_FILE_NAME "${OSG_PACKAGE_FILE_NAME}") SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_INSTALL_DIRECTORY}") @@ -66,6 +66,16 @@ SET(CPACK_PACKAGE_VERSION_MAJOR "${OPENSCENEGRAPH_MAJOR_VERSION}") SET(CPACK_PACKAGE_VERSION_MINOR "${OPENSCENEGRAPH_MINOR_VERSION}") SET(CPACK_PACKAGE_VERSION_PATCH "${OPENSCENEGRAPH_PATCH_VERSION}") SET(CPACK_RESOURCE_FILE_LICENSE "${OpenSceneGraph_SOURCE_DIR}/LICENSE.txt") -SET(CPACK_RESOURCE_FILE_README "${OpenSceneGraph_SOURCE_DIR}/README.txt") +SET(CPACK_RESOURCE_FILE_README "${OpenSceneGraph_SOURCE_DIR}/README.md") SET(CPACK_RESOURCE_FILE_WELCOME "${OpenSceneGraph_SOURCE_DIR}/NEWS.txt") SET(CPACK_STRIP_FILES "ON") + +# DEBIAN OPTIONS +IF(${CPACK_GENERATOR} STREQUAL "DEB") + SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "${OPENSCENEGRAPH_PACKAGE_MAINTAINER}") + SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://www.openscenegraph.org") + SET(CPACK_DEBIAN_PACKAGE_SECTION "Development") + SET(CPACK_DEBIAN_PACKAGE_DEPENDS "${OSG_PACKAGE_DEPENDS}") + SET(CPACK_DEBIAN_PACKAGE_CONFLICTS "${OSG_PACKAGE_CONFLICTS}") + SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${OpenSceneGraph_SOURCE_DIR}/debian_scripts/postinst;") +ENDIF() diff --git a/CMakeModules/OsgMacroUtils.cmake b/CMakeModules/OsgMacroUtils.cmake index 21f7560f2..8c7967cb5 100644 --- a/CMakeModules/OsgMacroUtils.cmake +++ b/CMakeModules/OsgMacroUtils.cmake @@ -266,6 +266,23 @@ MACRO(SETUP_PLUGIN PLUGIN_NAME) ## plugins gets put in libopenscenegraph by default IF(${ARGC} GREATER 1) SET(PACKAGE_COMPONENT libopenscenegraph-${ARGV1}) + + # add cpack config variables for plugin with own package + IF(BUILD_OSG_PACKAGES) + IF(${CPACK_GENERATOR} STREQUAL "DEB") + STRING(TOUPPER ${PACKAGE_COMPONENT} UPPER_PACKAGE_COMPONENT) + SET(CPACK_${UPPER_PACKAGE_COMPONENT}_DEPENDENCIES + "libopenscenegraph" + CACHE STRING + "Dependend packages for the ${PACKAGE_COMPONENT} package with all components (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + SET(CPACK_${UPPER_PACKAGE_COMPONENT}_CONFLICTS + "" + CACHE STRING + "Conflicting packages for the ${PACKAGE_COMPONENT} package (uses deb dependecy format), e.g., 'libc6, libcurl3-gnutls, libgif4, libjpeg8, libpng12-0'" + ) + ENDIF() + ENDIF() ELSE(${ARGC} GREATER 1) SET(PACKAGE_COMPONENT libopenscenegraph) ENDIF(${ARGC} GREATER 1) diff --git a/debian_scripts/postinst b/debian_scripts/postinst new file mode 100755 index 000000000..762f47445 --- /dev/null +++ b/debian_scripts/postinst @@ -0,0 +1 @@ +ldconfig