From 1481b07b6bd23bf336d7cba8dfc6e95f73ed32b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 19 Mar 2011 23:26:32 +0100 Subject: [PATCH] Ubuntu packaging magic, forgotten header files, an icon. --- CMakeLists.txt | 89 +++++++++++++++++++++++++++- dfhack-icon.png | Bin 0 -> 2467 bytes library/private/ModuleFactory.h | 44 ++++++++++++++ package/ubuntu-10.10/99-dfhack.conf | 6 ++ package/ubuntu-10.10/postinst | 3 + package/ubuntu-10.10/postrm | 2 + package/ubuntu-10.10/preinst | 3 + 7 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 dfhack-icon.png create mode 100644 library/private/ModuleFactory.h create mode 100644 package/ubuntu-10.10/99-dfhack.conf create mode 100755 package/ubuntu-10.10/postinst create mode 100755 package/ubuntu-10.10/postrm create mode 100755 package/ubuntu-10.10/preinst diff --git a/CMakeLists.txt b/CMakeLists.txt index 293dde426..9c3b2d5da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,8 +17,23 @@ endif() set(CPACK_PACKAGE_VERSION_MAJOR "0") set(CPACK_PACKAGE_VERSION_MINOR "5") set(CPACK_PACKAGE_VERSION_PATCH "8") +set(DFHACK_REVISION "1") + set(DFHACK_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +set(CPACK_PACKAGE_VERSION ${DFHACK_VERSION}) + set(CPACK_PACKAGE_NAME "dfhack") +SET(CPACK_PACKAGE_VENDOR "dethware.org") +SET(CPACK_PACKAGE_CONTACT "peterix@dethware.org") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Memory hacks for Dwarf Fortress") +SET(CPACK_PACKAGE_DESCRIPTION +"DFHack is a Dwarf Fortress memory access library and a set of basic +tools using this library. The library is a work in progress, so things +might change as more tools are written for it. +. +It is an attempt to unite the various ways tools access DF memory and +allow for easier development of new tools.") + ## setting the build type IF(NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "") @@ -35,8 +50,14 @@ IF(WIN32) ELSE() set (DFHACK_INST_DEFAULT "linux") ENDIF() -SET( DFHACK_INSTALL ${DFHACK_INST_DEFAULT} CACHE STRING "Choose the install type: 'portable' for a portable zip or tar.gz package (windows default), 'linux' for packaging and system installs on linux (linux default).") -SET( MEMXML_DATA_PATH . CACHE PATH "Path to a valid Memory.xml file. This is baked into the library, so when you package DFHack for linux, set it to the right path.") +SET( DFHACK_INSTALL ${DFHACK_INST_DEFAULT} CACHE STRING +"Choose the install type: +'portable' for a portable zip or tar.gz package (windows default) +'linux' for generic packaging and system installs on linux (linux default) +'ubuntu-10.10' for ubuntu maverick package.") +SET( MEMXML_DATA_PATH . CACHE PATH +"Path to a valid Memory.xml file. +This is baked into the library, so when you package DFHack for linux, set it to the right path.") IF(${DFHACK_INSTALL} STREQUAL "portable") # the dfhack libraries will be installed here: @@ -82,6 +103,31 @@ IF(${DFHACK_INSTALL} STREQUAL "linux") SET(DFHACK_DOXYGEN_DESTINATION share/dfhack/doc/doxygen) ENDIF() +IF(${DFHACK_INSTALL} STREQUAL "ubuntu-10.10") + if(WIN32) + MESSAGE(FATAL_ERROR "WTF are you doing?") + endif() + # set RPATH to always point at the dfhack lib using relative path. + SET(CMAKE_INSTALL_RPATH "$ORIGIN/../lib/") + # the dfhack libraries will be installed here: + SET(DFHACK_LIBRARY_DESTINATION usr/lib) + # the dfhack tools will be installed here: + SET(DFHACK_BINARY_DESTINATION usr/bin) + # Memory.xml goes here: + SET(DFHACK_DATA_DESTINATION usr/share/dfhack) + # Includes go here: + SET(DFHACK_INCLUDES_DESTINATION usr/include) + # documentation goes here: + SET(DFHACK_USERDOC_DESTINATION usr/share/dfhack/doc) + SET(DFHACK_DEVDOC_DESTINATION usr/share/dfhack/doc) + SET(DFHACK_DOXYGEN_DESTINATION usr/share/dfhack/doc/doxygen) + INSTALL(FILES + "${CMAKE_CURRENT_SOURCE_DIR}/package/ubuntu-10.10/99-dfhack.conf" + DESTINATION etc/sysctl.d) +ENDIF() + + + ## some options for the user/developer to play with OPTION(BUILD_DFHACK_LIBRARY "Build the library. Needed for all the tools." ON) OPTION(BUILD_DFHACK_C_BINDINGS "Build the C portion of the library." ON) @@ -153,4 +199,43 @@ IF(${DFHACK_INSTALL} STREQUAL "portable") ENDIF() set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${DFHACK_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") INCLUDE(CPack) +ENDIF() + +#------------------------------------------------------------------------------- +# Figure out debian architecture +#------------------------------------------------------------------------------- + +FUNCTION(GET_DEBIAN_ARCHITECTURE arch) + SET(dpkgarch) + + FIND_PROGRAM(DPKG_CMD dpkg) + IF(NOT DPKG_CMD) + MESSAGE(STATUS "Can not find dpkg in your path, default to i386.") + SET(${arch} i386 PARENT_SCOPE) + ENDIF() + EXECUTE_PROCESS(COMMAND "${DPKG_CMD}" --print-architecture + OUTPUT_VARIABLE dpkgarch + OUTPUT_STRIP_TRAILING_WHITESPACE ) + SET(${arch} ${dpkgarch} PARENT_SCOPE) +ENDFUNCTION() + +IF(${DFHACK_INSTALL} STREQUAL "ubuntu-10.10") + SET(CPACK_GENERATOR "DEB") + + #wtf, wtf, wtf. force them to be empty + set(CMAKE_INSTALL_PREFIX "" FORCE) + set(CPACK_INSTALL_PREFIX "") + SET(CPACK_PACKAGING_INSTALL_PREFIX "") + set(CPACK_SET_DESTDIR true) + + SET(CPACK_DEBIAN_PACKAGE_SECTION "Games") # yep. magma. + SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") # very. + SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) # find deps automatically! hopefully... maybe... + SET(INSTSCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/package/ubuntu-10.10") + SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${INSTSCRIPT}/postinst;${INSTSCRIPT}/preinst;${INSTSCRIPT}/postrm") + + GET_DEBIAN_ARCHITECTURE(PKG_ARCHITECTURE) + + set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${DFHACK_VERSION}-${DFHACK_REVISION}_${PKG_ARCHITECTURE}") + INCLUDE(CPack) ENDIF() \ No newline at end of file diff --git a/dfhack-icon.png b/dfhack-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0de50b193471f591995abb156db64ddbdb29b6 GIT binary patch literal 2467 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