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 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?Fean z!SMfol2itJ07x5%tr(`LtgOt=%*<@h%*?Dj$v~KynOQz$PIqJD!+Zb#|CbNC+RDPf zz`*eTf5|07u0sJLE*C%dD9jM)YVz17Xr8=na_>$N?rg=(*7S$}n_4gXl&7<)y=ql@ z)Wzs7vq7IV{6*on=zsI&B#b|QmO_HKDg_Lm~7OZ4GG7DgVXNa z2iuYK=vHtYPE0|yLx8}^A79Cx(YC(u2s)xek$ zV$*>nPYXuwGD8D{0*A?mqnWZ!OG-#cTs-qUB_W}r$=zQ<%)HXjz`({W=rO}&X0V<^ z&lokC`cAn8y*_^6z=!UJDt4W+H%AxS@x|JP^fNFsJM%L$J8Km!fH>(;07vK_(SFvz zjI3~>4+rXWo+W#W8O&)o>$?LKQUCuR3gw>=B%)?uU?6i``TcSm2vi0nF+l~ zgBtOau|}*wx%l7z|NrMUHZGjo*!WOi&URr&P0iPSCOJ!}=MSY`(6_0oTg3h6|NnYp zW#z{zY;0{#GF4rYl9K6v|Ns9lI%R#=@jpdwZf?eGY;A{mCa4@`FFkM0#@5!)!^5-r z|NsC0nU_gG{5X~UnZX0U#fBDNW<0$3d46M~qLAm?G^VVNiLNQtkgz*6wMFj%r=qRQ zqyCRC5)&Gx$QgW?-*D?P4-ZfKh85Po{{R2~`veo*3&A#RpC1X-dmjjl@pzM7apmo= z|Nr;j{Qv*|TS*BC9!Uv_IHi-mj^QBB{QrOGDPxVKP`2jB|NsBT^Gq=5;=bdQ)cq*% zyUfWm-8?)z?|684%q1iwmKhlstbuEq+8OyVqGA1v>LUjZEa-OT+nMp~NOGHy(ewZR z|BFjXN|yfn|G(cf0P1{E<{wdWV{WiWN=mX`)OBYLpKwF`!-~TUJ7mruIB)>sZY6cj zhh1|`*tS?PaqdY^NVw5)q`vWZO^vGsG#e=$XO`$oNlAHm8(S^fDu4-ZeetJev=Q(#s(ZI0^iqn^mKaUypX*X{t0~@Ps^>A+JXJu#J`#+6k@HE zkaBTPPme`3G~A^E_zjGVx{QpB&ZVZL^c-L8*4xhn(|Ui1K~nC|c?M01I)#;*X$c7#&X%xl_O8>{^J& z4#npT2Go4&og0TK#J`e z9v&Vko(X*CLfB+;#;x{@&;)TP-dFk3%X~IAHh(s@HZeAr zDeIb7Jxp*|yBCzPzbSmYDj^}UP5EQ=f?wMletJtvNbFdcbb|TVeaV31&gsd;%8F!9xqO)x;o*=BMC`KZwU#BGZT+kNJvOrQ~GEsDJi)z+-pLcBF_fH1!}f- zIZ}|=Q8GEnF74E~^7k2rk0Q#<%!lPO>?S${#kU^iQDZw{@!X%yV@;>ALs!ffo1+I9 zJQtn#^-tmB#$BQiSBo%j=sA4m0E7I!hJGoBWL8Vb3IhkH8tq9lE`Z|P$iYimA|ov& z<;XLICo?7{ImpHwxb+%Z(!6AJb91v}b9p|mdE&&26DCd+yvCp4U?j7X`vjx!^%Gwi zbOfp<9O;pekk~bGvXHW}GCwnOv)Lr6ST>iBXAU$ZoA86(a47Vjv5|p6is1q?PCdf~ z=Z=92&yJLaEu9HT!V7(?bgD?l$4U>2A^-W?Nw}M?!RX-1|8}!bTFDK!OVP^k?q8efwi6{+N_X;*o8coYMc zPyPG<|9