diff options
| author | eroen | 2013-06-15 22:45:10 +0200 |
|---|---|---|
| committer | eroen | 2013-06-15 22:54:39 +0200 |
| commit | c40eb8df1970c851f3af4e6f1602f8783fc09ed8 (patch) | |
| tree | 60fc10d8e18903ff3dfd210c9fe4b198c16aab86 /games-util | |
| parent | 9da7ed08bb111abfc4d0391dcf1ec5fd44cdbb70 (diff) | |
| download | eroen-overlay-c40eb8df1970c851f3af4e6f1602f8783fc09ed8.tar.gz eroen-overlay-c40eb8df1970c851f3af4e6f1602f8783fc09ed8.tar.bz2 eroen-overlay-c40eb8df1970c851f3af4e6f1602f8783fc09ed8.tar.xz | |
dfhack-9999 - intermediate commit
Diffstat (limited to 'games-util')
18 files changed, 1267 insertions, 94 deletions
diff --git a/games-util/dfhack/Manifest b/games-util/dfhack/Manifest index 46810c37..84ba952a 100644 --- a/games-util/dfhack/Manifest +++ b/games-util/dfhack/Manifest @@ -4,10 +4,26 @@ AUX dfhack-0.34.11-r2/0002-removed-magic-flags-and-paths-from-build-system.patch AUX dfhack-0.34.11-r2/0003-tell-various-components-about-non-magic-paths.patch 5346 SHA256 9b50aee749944915594f4a5034a33198d00a0a3ac0e17e5c099edf01537154a5 SHA512 0587fcda003a1c6212751761f04b059399d4ff045b3c4d15c7fb9203dcf59e87d96fef996762078ee4de1e00c9d135bb914887e3fec81cfb7e0f3add8e2362d9 WHIRLPOOL 1462a7b93cdb16a87eca89fbbfe02f9e3cd48287b89cd46449a4cee02c09b33366e8eb4f294c7b439382ff5ad9539f6c8ecb030da9cbe82aa1ba59c785f8bcf0 AUX dfhack-0.34.11-r2/0004-compile-time-configurable-statedir.patch 3337 SHA256 8d4a1a67e6a2c1e6a311ea17e099e8c60c93b911d6ab46399ab31b30eb01cf0f SHA512 1a03b601f16846a0394476df09de5d3c456837dc8cfe6e021204b2fc145bb8a52c9aa0647799c5cb886209ce87b1120f2eeea3477189e7ba8666f71e5cc53ee5 WHIRLPOOL 77b17bc66f365f5b9829df44327ffc269f350b01709f72ba3c5345da534deea0915f58a7a3257844048b13eba5bf4f56941455a359f6966d19e9121182f335d8 AUX dfhack-0.34.11-r2/0005-remove-annoying-banner.patch 1394 SHA256 7db8259c2e6d473db0f1af3ad98f0b55272f2fdab3c56e9a1198a6cb0848c58f SHA512 d4b5e801deb04f11080cda61b4da80192172e75548978272976c23d9168d443bd274ccb53c39f701df45f73032ee126d04aa2fb8a86816c2003d8635afdf7857 WHIRLPOOL 9dc6fb52b3f65f5696470d2a8482e693702f72382cf1d71d22f053a536d20b438a1b2a584249738f134bd4f9a08d67c7f19f4db2a909a3c929316a2f45e650b8 +AUX dfhack-9999/01-compile-static-libraries-as.patch 2418 SHA256 2d13b801026ed0484e9d8db7aa68ac7ee9be2009391a1ddbfff8824bad6cf38e SHA512 a52b49e0d479bddb89d4cc49f9de24c0caa5f5ff3bea9cf6dffed12311adbc4414296eccb92f693af38694ed06eca117ef043947ccb1cc6fa6aaadf83fd21e63 WHIRLPOOL c16d3e117a1ff2a7de53e36a9128329f7902dd6849dcf93f2a9e53890014512e4084cffe44b4d4fd39286061798b846276e99d0cac1d7f518ddc75cf4b375e65 +AUX dfhack-9999/02-drop-strange-build-options.patch 2038 SHA256 dd52200e6106b034ac22c308062dd2ef8de4c9a54ddd877e07737e4dbaeb59ee SHA512 fcd81edce8548cc1a830f92c97dc35a33f0a52cf778c6d50f55249696d90adcfa27ac08a9dca0913d671c09829e6e289361770f1fc5648a74367fa4a3509281f WHIRLPOOL 1b139665f085e8e99c5535c063348cd6dab28936a10d72892e898e463c17fd40824194df155855859142ef4092deb096ae004bedd9608b8712c339fbcbc0375a +AUX dfhack-9999/03-configurable-install-paths.patch 3975 SHA256 bdfd0d8285089a51043ea08e2db78ae47cf7e11235230b0b23760211afff86e4 SHA512 82a303a5392971010e0c80138c3a2ba178bbbd7a9d69f3dc90a87698e5f8b630014cfd867e1cfeefbf14ce73978f56f1068e9be88e0bdc9eba6b46748b2bceca WHIRLPOOL 0b0d92af256cd88c6cec5ad1efb4951e48ec944aaf8882b4cac68d2059652080dd05137f537376844c2a5f066345f5b13711c5269d3dffa007601d14caeeb979 +AUX dfhack-9999/04-compile-time-configurable.patch 5252 SHA256 89f8396c8709a2d72f55f364b73d129e05f65caa32b8c145741d841281f7a71a SHA512 6a613fb00748f22938bf8fdbf55a1acfb141e48c85185c71fd08cc934ab9dd0089431f3942f2bce726d0e71cfd660ece4866026335ca03f75370565c190d330b WHIRLPOOL 7d3e6fe729f61ce5e61e6843c1219e19cba5b77d7558371044c2bb3e60c071d6a13af2e051d3978704b7ee43523ac029833d18e47830ab688ef8af7208bb7edb +AUX dfhack-9999/05-compile-time-configurable-0.patch 1562 SHA256 16810214a14c585a7f99f3939f52c66aaab7d388f4854c1d684032df4e3ddf80 SHA512 a2797092215b61765cfee6654a45f0c1f890e6d537e370d038907e25e9e916d54e140635b57012b892039467027e62505045287f3d6a06a2f6d0e6dac83fe256 WHIRLPOOL 49c95f1adb62d1997adea7521e550ffb1bdf38b22e2ca699fd8314b0f96b32de6ee042218d0053f9da0827fecd81d923d078cb9f37447bc4c3211226d9ea0eff +AUX dfhack-9999/06-compile-time-configurable-1.patch 3578 SHA256 ead1019a14dbdab2fb0ac097073c7f2a22fa24f426eb031615cd79a5a28b1a54 SHA512 fae5f28c20364a6032f329115a8d1630e17fb1e5e7888c058c94218824616f1b807e7471330fdb7e6d1f29d3960a85f1469edbf1d270cc44ed9a707295bf8c90 WHIRLPOOL 5c8e9a113fc0a4972e54df0871fa6cce4074ef0b4cca33cf2d26cffab3d75863d8aace3423d14d2110a00a5ba79ca39b680e1838889e9ac390f4ea95d06c6784 +AUX dfhack-9999/series 295 SHA256 9ffb7300e169f2cb49a6508bb1f9905fdcdcafb0b462db0d077c365c2412444e SHA512 29d25cfd8d43d4bb8931043845f918c74f154992938c696d18d2c1b1fec079f86063ed8689de9b68608a40cca8329b95385ed46f1d521900e4fb75672fdf7f3c WHIRLPOOL d3a044b754dfff9ad87616e107d78a50dbe9af8a5437490449a6a8fe492b519110c524a237c136bf1b4b46e6cc52ac12732ae1278767b09762083871e96d3658 +AUX stonesense-9999/01-null-isn-t-an-int32.patch 2293 SHA256 c140f17f9ad485b43ab2b6de8e1ab88ff8e3f6748a233d7d34d63e79a9f8074e SHA512 84ab7ebd25505515085c3c6c2c903d4aa51d8432b8c750a4f66d436426ad9963c07fa5019e24f0ca6d5618be329b35673a819443d092460e55bb6bb829dd4760 WHIRLPOOL 3beb7cc546b1f5eba970628e3a263e2536f881ae1e21115df19c4979b9c267d66ba060bf16f78a46675fe96b2f18fb7281ba1a9dd1695e3e5f0df4147bcb78b7 +AUX stonesense-9999/02-configurable-install-paths.patch 1388 SHA256 03ac914c0fbee6d27b68c075d91b8b315179d9cb91944da731006241e0589dbb SHA512 b7b75f33b9aefe91081f4cede21b79b7583374ea5f5608cd4982a6ba5ad35006986ede06985bac70f5260610f2b32ac05cc06e90a983dbc6e85e7346da084d96 WHIRLPOOL 677942b840640ce40a3e93d28265a5f39c778fe369c4de27eee382d8a83e063a775477f5434f754173de88c2a0bf46750006ca11294b244fffe4f3ec5ba80d5f +AUX stonesense-9999/03-don-t-segfault-if-logfile-is.patch 817 SHA256 7fd33d13206ef38bca971856d9cfff0fbef88f1e7685111e00fa13b780cc9ecb SHA512 2ff023f34a1cf8718a3954e3a7584d07a1716b67756473d0852863f182c55bcde209921a9e26e1efeffde17ae42ab87c322915d74f2661b79ec49dd158df7cd1 WHIRLPOOL 1c88b645f01d651896b951acbc97d610d986a7d756cb0d58cc9c3c9caaa3873c18d191c46238ad13e050047476cc2589ae7f40614f0b8d3a52bb24fa58325976 +AUX stonesense-9999/04-compile-time-configuration-of.patch 7408 SHA256 2a5cada5aaffa02feb7344646d7d781a02efd48814dc9bd49804bfd604794a7c SHA512 2158737598af4faac3ae3680f0c41206150e57164b3313af492e7848414774768131acae4afc3093fea6361c3acfb4ad52f841d420fac92ff7b98049c89f7219 WHIRLPOOL 94ee56857a2558b1cb669cca632b79d6cd1cb51735e3a356253f5229118f527a6108d9d1a26340aac0fecc0a67d8cd5e9fe23e9ef7355c3b1b5b66454007ca47 +AUX stonesense-9999/05-compile-time-configurable-log.patch 1000 SHA256 48994c657edeaa5d29f2ef6e016503bfddf980bfe924ec847994f44a86a5b35d SHA512 579c28c907a490de5cf8fad5ed6b0b74abf51c967994b0888af8dab432157f1bc4ba20a73bb03f59b3cc3736c69079a9efb2c3d203eeecdcc33e9a44b4bda6bd WHIRLPOOL 08899e1bf50d7a621b56683519577d53ebb8b59d08273af7124a86fe6e1fca2338afd654e93477a6ca58b9482e78ac00e2a39e997586e78d6f67649bd6fc14dc +AUX stonesense-9999/06-fix-b0rked-xml-file.patch 1079 SHA256 d45d2e9f4c4707afdb5de1f9bded8a6bfebd4e9a530f7f50fae0d17fba1175ec SHA512 eca7dea452208b457730432f11d3206bd3cd7d440a7d1407d30381298621ac795ac7329a43b56d7d9b3a38ff8b0fb724d2a7f3469db4f5754fcc432e8f444dd6 WHIRLPOOL 28303997fe25b1fc7f1c7c0a2405c03ca053263d85d2cb4343e7d53d783de15132b1e400d2b920a71f9731b9da13cebc8480f15f9f2ebaf94c93ff6b33601de2 +AUX stonesense-9999/07-compile-time-configurable-dump.patch 4364 SHA256 c4b6e94399afd07aac3595c6dc2865b9e8965faae68a7e445d89371fdbe2e69e SHA512 27b86a0530be876d5d8712cef89786b5d35c1fe7d441155fcd804d71ac797fc8cb2d76688f4c0b7fe2341a2f0b1085ec0a035acfe7cb3e3879b614f8e2bf5c9d WHIRLPOOL be375a3af6e4c427a1f0b1c5fa9c15a837849422c0b3a9ab6048a6bad189771a75cf9ae25e5da9f3dff4fc988c61ba497070d406d70fd5e342685da8e2f18b91 +AUX stonesense-9999/08-compile-time-configurable.patch 517 SHA256 ae777e95df2a6222cc5b5b011a2be2d4377b658bafc67818cd45fa2f440b19d6 SHA512 59b60293c7db910cbe32aff5850b1bb2deb8eea40f543806033ca35d357f1b42ed2ac955106c24ac8a787cd6a88992647228becbc143a544ec55a3613f47aa3e WHIRLPOOL d9a61b9897b405b9a9dc9026fd5d29cc2502b9378ecb24fa7a220ce95c01666925b91165eba6d393bc5975624a6703a205b750d5641ddd7a8f5fb7d1c7576f8d +AUX stonesense-9999/series 362 SHA256 46867ba655615440c4a1c04a1022033df110d134e11afff3ca59e5f5355aabc2 SHA512 4c791888240e965c86dd5899870b10ac0e16fdd19fb79ce4a4bd8a4e531c5a866553d568578a723b2856767cecf30e5400fb5fb99f926f00119f37621108770c WHIRLPOOL ec5b6ee427e9851abca3aa6b0142fdd8f27a2543c13d0645cb6e2ede1eba6386616533ee11ce3a83d541b48236cdc6ba80555549625d17319278d7f58d1f190a AUX stonesense/0001-dont-segfault-if-logfile-is-unwritable.patch 1064 SHA256 6e9fc52b4a7779c50332e98d3d0a5949197dea352639e6c0aa9f2c170d1558d7 SHA512 0a6e5113d7fcb8fe241e6cb2eb58b8428b871675fdcc3f7234c5fc953820eac3c7efa088eca5bfc1062c439577800a8b6c38b7d22e8ba34cfb00806bb285b783 WHIRLPOOL 73ab1749346ab2f889fb16c9ec91b96dcbecc1607ac8e42c586fa407a3186e042fa74c7086dd7f2b1fc0812c524e7c309fb0f16a2a35f7c782eb182bd2fe7ea3 AUX stonesense/0002-compile-time-configuration-of-magic-cwd.patch 7753 SHA256 79e024cbcf34998866dee56b7e27b1cad3a8d3da152bbc43b329723109d58d51 SHA512 b892aa4a94eefefe63d52352f2f01a76327fdcdf99cce5c565738f82b7b45de8536128dc7529df52bb4a465d5e198e0c774d0690f5577e8533b8f08221b6e377 WHIRLPOOL ce9507bb7f67666f87a8463cab941ad2ba1b14e8ec3000d587855a2922ca5a186dffd062c752bb313ac111d9645c979421b0657082c44c3ac000c3e8c787b25e AUX stonesense/0003-screenshots-in-home-dir.patch 2578 SHA256 88bc1a28442dfe8e5ff08e27e82de6443a3c5bccf49d7bcb2a26637a71ae3e18 SHA512 988efaba82e96149641e8dd6d8769b3ac1d890ebaa35128507a8f0d633af947ad9d8090758e1734a2f9b118c5404e4d712e2abb9a4e971f980f4163c0b646f5b WHIRLPOOL f3f03c297fbd39f27b5957cca0073a3420a10ba0a1741cf73f210cf680c2083c761cb68a637663281e69d1fee9e7b5049c3074f18fed394f48888bc377f5bb70 AUX stonesense/0004-create-various-output-files-in-HOME-not-cwd.patch 5217 SHA256 3ac09c948cc36b04058a82cb9f04e0ff26ffee765bf2300a46eac09cebc867de SHA512 9f0c2c5f4a2d15c99e06d30e1d3825527449f63de4d370533f07ce4324d0afbd1a2190dcf9589cbd326fd0f9705333bb436bed74e72ac4a7485f002fa3600639 WHIRLPOOL cbe81a086301a3dc218f31e3b1edb837bd81a25d151e5d46c0988d080165e95faac8ab14a97995a7092262542cbb8b29a2a540fe45a5c74b520e47ec5ab0f420 EBUILD dfhack-0.34.11.2.ebuild 5523 SHA256 c126fc718aaddcfd1f62c04a5ce37add8c6ecfb72e0fa73d8048383e02d048f0 SHA512 ab671faa41ab7cff26b933ef816fba8f5c86389769f5dcf1da6a5ee7413324d50ebcd7e60812935fd0ddd70688461ca23d55edf499ffffec89e3ff3ad321c2e8 WHIRLPOOL 11246c870f497929299ccf75c91f77481a6d3faccc9a8646c668836b22906d089e04826b3f67f5dcc8640b918a9e3a0e1fa9821d7d17664ec58f8a88db498170 -EBUILD dfhack-9999.ebuild 5247 SHA256 3c1d011b03a81b42a27e905d8edd111670863adf424b267d49052c1b256024e5 SHA512 50702fddc31cda43c2ffaf72bd204b1a42959fcb60aba79538470f4d8daec9f41263f004b722178e537b66a919d7f8a900c552a3ceca971db7e1a3cbdd781c14 WHIRLPOOL e00c37113c909e8d2cec041f80b994ab8236de3748ae2ec8112d4c90f7e653373b72a29b5e947c73c96263a8f0cc265bbcd53df273dd046fb8b0316cbbdf303d +EBUILD dfhack-9999.ebuild 8657 SHA256 10571028dd113d9b4c86aa1dda06be355eb59382754c07b27ef7e95380e9f038 SHA512 a782622a8b6f3ccce0d289559083167a37c67d2066d729b5d149a8e0ecfeb9aec3327df74688fe824a99755251ee8daced21a609abb5dd3c846a6cc35aaed947 WHIRLPOOL 34b80108d46df707225040253a2205dc6f2de7a19485947814ee3d5f8c2f564c3fe743d0f68423fae4ec141ec1c68c8ee582c468de39cdd4718061590025419d MISC metadata.xml 663 SHA256 55a12d4c9666a995d266a30d607c232114db139aafa462b02db6f657eb39fa8a SHA512 9a9eede0ad1fed3f735bb08e6f0e9911cc5de7310bc57be987b42842bcaff05becad270d7414da2bca9b40531a69eefb5dff725a61d5b9bfcd3cb84c41847d3c WHIRLPOOL 28e63c07f1470f7bdb56d9c0a7838a501bf94585ed1446e2a107dc5669e0aefc48a6b227c5c55e1e33d0ed2a9be1bff8e2437381496e278b598e542950f43e42 diff --git a/games-util/dfhack/dfhack-9999.ebuild b/games-util/dfhack/dfhack-9999.ebuild index eea611a7..ba9989e4 100644 --- a/games-util/dfhack/dfhack-9999.ebuild +++ b/games-util/dfhack/dfhack-9999.ebuild @@ -1,10 +1,10 @@ -# Copyright 1999-2012 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 +# By eroen, 2012-2013 +# Distributed under the terms of the ISC licence # $Header: $ EAPI=5 -inherit games versionator git-2 multilib cmake-utils +inherit base eutils versionator multilib git-2 cmake-utils games if [[ ${PV} == "9999" ]]; then MY_PV="0.34.11-r2" @@ -12,6 +12,7 @@ else MY_PV="$(replace_version_separator 3 '-r')" fi MY_P="${PN}-${MY_PV}" +df_PV="34.11" DESCRIPTION="Memory hacking library for Dwarf Fortress and a set of tools that use it" @@ -21,7 +22,6 @@ EGIT_REPO_URI="git://github.com/peterix/dfhack.git" if [[ ! ${PV} == "9999" ]]; then EGIT_COMMIT="${MY_PV}" fi -EGIT_REPO_URI="/home/eroen/dfhack-repo/dfhack" CMAKE_REMOVE_MODULES_LIST="FindCurses FindDoxygen CMakeVS10FindMake" @@ -30,140 +30,231 @@ SLOT="0" KEYWORDS="~amd64" IUSE="doc api minimal dfusion ssense egg" -COMMON_DEPEND="" -DEPEND="${COMMON_DEPEND} - dev-vcs/git - dev-util/cmake +HDEPEND=" dev-perl/XML-LibXML dev-perl/XML-LibXSLT - doc? ( - app-doc/doxygen - ) - " -RDEPEND="${COMMON_DEPEND} + doc? ( app-doc/doxygen )" +LIBRARY_DEPEND=" + app-emulation/emul-linux-x86-baselibs[development] + ssense? ( media-libs/fontconfig[abi_x86_32] + media-libs/freetype[abi_x86_32] + x11-libs/libICE[abi_x86_32] + x11-libs/libSM[abi_x86_32] + x11-libs/libX11[abi_x86_32] + x11-libs/libXcursor[abi_x86_32] + x11-libs/libXext[abi_x86_32] + x11-libs/libXinerama[abi_x86_32] + x11-libs/libXrandr[abi_x86_32] )" +DEPEND="${LIBRARY_DEPEND} + ${HDEPEND}" +RDEPEND="${LIBRARY_DEPEND} games-simulation/dwarffortress - app-emulation/emul-linux-x86-baselibs - ssense? ( - app-emulation/emul-linux-x86-baselibs - app-emulation/emul-linux-x86-opengl - app-emulation/emul-linux-x86-xlibs - ) - " - #games-simulation/dwarffortress[egg=] + ssense? ( app-emulation/emul-linux-x86-opengl + app-emulation/emul-linux-x86-xlibs )" + +## missing multilib +#dev-lang/lua - binary bundled +#dev-libs/protobuf - bundled +# sys-libs/zlib (libz.so.1) - baselibs +## ssense +#allegro +# dev-libs/atk (libatk-1.0.so.0) - gtklibs +# dev-libs/glib (libgthread-2.0.so.0,libglib-2.0.so.0,libgobject-2.0.so.0,libgmodule-2.0.so.0,libgio-2.0.so.0) - baselibs +# media-libs/fontconfig (libfontconfig.so.1) +# media-libs/freetype (libfreetype.so.6) +# media-libs/jpeg:62 (libjpeg.so.62) - baselibs +# virtual/glu (libGLU.so.1) - opengl +# media-libs/libpng:1.2 (libpng12.so.0) - baselibs +# virtual/opengl (libGL.so.1) +# sys-libs/zlib (libz.so.1) - baselibs +# x11-libs/cairo (libcairo.so.2) - gtklibs +# x11-libs/gdk-pixbuf (libgdk_pixbuf) - gtklibs +# x11-libs/gtk+ (libgdk-x11-2.0.so.0,libgtk-x11-2.0.so.0) - gtklibs +# x11-libs/libICE (libICE.so.6) +# x11-libs/libSM (libSM.so.6) +# x11-libs/libX11 (libX11.so.6) +# x11-libs/libXcursor (libXcursor.so.1) +# x11-libs/libXext (libXext.so.6) +# x11-libs/libXinerama (libXinerama.so.1) +# x11-libs/libXrandr (libXrandr.so.2) +# x11-libs/pango (libpangocairo-1.0.so.0,libpango-1.0.so.0,libpangoft2-1.0.so.0) - gtklibs + +multilib_toolchain_setup x86 +if use egg; then + dfhack_libdir="$(games_get_libdir)" +else + #dfhack_libdir="$(games_get_libdir)/${P}" + dfhack_libdir="$(games_get_libdir)" +fi + +pkg_setup() { + dfhack_datadir="${GAMES_DATADIR}/${P}" + dfhack_docdir="/usr/share/doc/${P}" + dfhack_statedir="${GAMES_STATEDIR}/${P}" +} src_prepare() { - multilib_toolchain_setup x86 + epatch "${FILESDIR}"/${P}/01-compile-static-libraries-as.patch + epatch "${FILESDIR}"/${P}/02-drop-strange-build-options.patch + epatch "${FILESDIR}"/${P}/03-configurable-install-paths.patch + epatch "${FILESDIR}"/${P}/04-compile-time-configurable.patch + epatch "${FILESDIR}"/${P}/05-compile-time-configurable-0.patch + epatch "${FILESDIR}"/${P}/06-compile-time-configurable-1.patch - local datadir="${GAMES_DATADIR}/${P}" - local dfhack_libdir="${datadir}/lib32" + pushd "${S}"/depends/clsocket + epatch "${FILESDIR}"/clsocket/0001-Compile-static-library-as-PIC.patch + popd - if [[ ! "${PV}" == "9999" ]]; then - #epatch "${FILESDIR}/dfhack-${MY_PV}/*.patch" - epatch "${FILESDIR}/dfhack-${MY_PV}" - fi - cd "${S}/depends/clsocket" - epatch "${FILESDIR}/clsocket/0001-build-library-with-pic.patch" - cd "${S}" if use ssense; then - cd "${S}/plugins/stonesense" - epatch "${FILESDIR}/ssense/*.patch" - cd "${S}" + pushd "${S}"/plugins/stonesense + epatch "${FILESDIR}"/stonesense-${PV}/01-null-isn-t-an-int32.patch + epatch "${FILESDIR}"/stonesense-${PV}/02-configurable-install-paths.patch + epatch "${FILESDIR}"/stonesense-${PV}/03-don-t-segfault-if-logfile-is.patch + epatch "${FILESDIR}"/stonesense-${PV}/04-compile-time-configuration-of.patch + epatch "${FILESDIR}"/stonesense-${PV}/05-compile-time-configurable-log.patch + epatch "${FILESDIR}"/stonesense-${PV}/06-fix-b0rked-xml-file.patch + epatch "${FILESDIR}"/stonesense-${PV}/07-compile-time-configurable-dump.patch + epatch "${FILESDIR}"/stonesense-${PV}/08-compile-time-configurable.patch + # Patches that no longer fit upstream, not updated yet. + #epatch "${FILESDIR}"/stonesense/0003-screenshots-in-home-dir.patch + popd fi # Fix up the startup scripts - sed -f - -i "package/linux/dfhack" "package/linux/dfhack-run" <<- EOF || die - s%"\./stonesense/deplibs"%"${datadir}/stonesense/deplibs"% - s%"\./hack"%"${dfhack_libdir}"% - s%\./hack/libdfhack.so%"${dfhack_libdir}/libdfhack.so"% - s%\./libs/Dwarf_Fortress%"df-34.11"% - s%hack/dfhack-run%"${dfhack_libdir}/dfhack-run"% - EOF - - sed -i "s:\./hack/ruby/:${GAMES_DATADIR}/${P}/ruby/:" \ - "./plugins/ruby/ruby.rb" || die - if use dfusion; then - sed -f - -i plugins/Dfusion/luafiles/{init.lua,friendship/{init.lua,plugin.lua,install.lua},triggers/{plugin.lua,functions_menu.lua},friendship_civ/init.lua,common.lua,embark/{init.lua,plugin.lua},migrants/{init.lua,plugin.lua},xml_struct.lua,xml_types.lua} <<- EOF || die - s:("dfusion/:("${datadir}/dfusion/: - s:('dfusion/:('${datadir}/dfusion/: - EOF - sed -i "s:libs/Dwarf_Fortress:Dwarf_Fortress:" plugins/Dfusion/luafiles/common.lua - fi + sed -i "package/linux/dfhack" \ + -e "s%\"\./hack\"%\"${dfhack_libdir}\"%" \ + -e "s%\"\./hack/libs\"%\"${dfhack_libdir}/libs\"%" \ + -e "s%\./hack/libdfhack.so%\"${dfhack_libdir}/libdfhack.so\"%" \ + -e "s%\./libs/Dwarf_Fortress%df-${df_PV}%" \ + || die "dfhack sed" - if use egg; then - sed -f - -i ./library/Hooks-egg.cpp <<- EOF || die - s/SDL_Event\* event/SDL::Event\* event/ - EOF - fi + sed -i "package/linux/dfhack-run" \ + -e "s%\"\./hack"%"${dfhack_libdir}\"%" \ + -e "s%\"\./hack/libs"%"${dfhack_libdir/libs}\"%" \ + -e "s%hack/dfhack-run%\"${dfhack_libdir}/dfhack-run\"%" \ + || die "dfhack-run sed" + + # Fix other scripts + sed -i "plugins/ruby/ruby.rb" \ + -e "s%\./hack/ruby/%${GAMES_DATADIR}/${P}/ruby/%" \ + || die "ruby/ruby.rb sed failed" +# if use dfusion; then +# sed -f - -i plugins/Dfusion/luafiles/{init.lua,friendship/{init.lua,plugin.lua,install.lua},triggers/{plugin.lua,functions_menu.lua},friendship_civ/init.lua,common.lua,embark/{init.lua,plugin.lua},migrants/{init.lua,plugin.lua},xml_struct.lua,xml_types.lua} <<- EOF || die +# s:("dfusion/:("${datadir}/dfusion/: +# s:('dfusion/:('${datadir}/dfusion/: +# EOF +# sed -i "s:libs/Dwarf_Fortress:Dwarf_Fortress:" plugins/Dfusion/luafiles/common.lua +# fi + + #if use egg; then +# sed -f - -i ./library/Hooks-egg.cpp <<- EOF || die +# s/SDL_Event\* event/SDL::Event\* event/ +# EOF + #fi ##Issues: - # - /plugins/df2mc/source/df2minecraft.cpp # Also abandoned - # - custom raws (with diffs). Make a message. - # - Due to dwarffortress' special needs wrt. working directory, - # specifying relative file paths to dfhack plugins will give sub-optimal - # results. Message. + # - libdir should be hidden + # - egg + # - df version # - dfusion is strange. It's always been that, though. # - prebuilt ruby # - prebuilt allegro for stonesense. - # - ssense fails when reloaded, does not in old setup. Well, sometimes it - # does. I don't know anymore. I'll ignore it for now. # - stonesense conf file: /usr/share/games/dfhack-9999/stonesense/init.txt # Set in ./Config.cpp, installed together with the rest of the directory. - # - egg # - output files # - - Make symlinks to (unversioned) /var - # - #Ssense functions that fopen filenames: - #-DumpMaterialNamesToDisk - No users - #-DumpItemNamesToDisk - 1 user, called on start - #-DumpPrefessionNamesToDisk - No users } src_configure() { - MY_DOCDIR="/usr/share/doc/${P}" mycmakeargs=( - "-DCMAKE_INSTALL_PREFIX=${GAMES_DATADIR}" - "-DDFHACK_BINARY_DESTINATION=${GAMES_BINDIR}" - #"-DDFHACK_LIBRARY_DESTINATION=$(games_get_libdir)" - # We install interesting libs, let's not infect the rest of the system. - "-DDFHACK_LIBRARY_DESTINATION=${GAMES_DATADIR}/${P}/lib32" - "-DDFHACK_EGGY_DESTINATION=$(games_get_libdir)" - "-DDFHACK_DATA_DESTINATION=${GAMES_DATADIR}/${P}" - "-DDFHACK_PLUGIN_DESTINATION=${GAMES_DATADIR}/${P}/plugins" - "-DDFHACK_LUA_DESTINATION=${GAMES_DATADIR}/${P}/lua" - "-DDFHACK_INCLUDES_DESTINATION=/usr/games/include" # Will break slotting - "-DDFHACK_DEVLIB_DESTINATION=${GAMES_DATADIR}/${P}/devlib" - "-DDFHACK_USERDOC_DESTINATION=${MY_DOCDIR}" - "-DDFHACK_DEVDOC_DESTINATION=${MY_DOCDIR}/dev" - "-DBUILD_LIBRARY=ON" + "$(cmake-utils_use api BUILD_DEVEL)" + "$(cmake-utils_use dfusion BUILD_DFUSION)" + "$(cmake-utils_use doc BUILD_DOXYGEN)" "$(cmake-utils_use egg BUILD_EGGY)" + "-DBUILD_ISOWORLD=OFF" + "-DBUILD_LIBRARY=ON" "-DBUILD_PLUGINS=ON" "-DBUILD_RUBY=ON" - "-DDL_RUBY=ON" # W/o this, libruby.so will be missing => breakage - "$(cmake-utils_use dfusion BUILD_DFUSION)" - "$(cmake-utils_use ssense BUILD_STONESENSE)" - "$(cmake-utils_use doc BUILD_DOXYGEN)" - # Will break slotting, use flag. - "$(cmake-utils_use api BUILD_DEVEL)" "-DBUILD_SKELETON=OFF" + "$(cmake-utils_use ssense BUILD_STONESENSE)" + "-DCMAKE_INSTALL_PREFIX=${GAMES_DATADIR}" "-DCONSOLE_NO_CATCH=OFF" + "-DDL_RUBY=ON" + + "-DDFHACK_STATEDIR=${GAMES_STATEDIR}/${P}" + "-DDFHACK_BINARY_DESTINATION=${GAMES_BINDIR}" + "-DDFHACK_LIBRARY_DESTINATION=${dfhack_libdir}" + "-DDFHACK_EGGY_DESTINATION=${dfhack_libdir}" + "-DDFHACK_DATA_DESTINATION=${dfhack_datadir}" + "-DDFHACK_PLUGIN_DESTINATION=${dfhack_datadir}/plugins" + "-DDFHACK_LUA_DESTINATION=${dfhack_datadir}/lua" + "-DDFHACK_RUBY_DESTINATION=${dfhack_datadir}/ruby" + "-DDFHACK_INCLUDES_DESTINATION=/usr/games/include" + "-DDFHACK_DEVLIB_DESTINATION=${dfhack_datadir}/devlib" + "-DDFHACK_USERDOC_DESTINATION=${dfhack_docdir}" + "-DDFHACK_DEVDOC_DESTINATION=${dfhack_docdir}/dev" + "-DSSENSE_ALLEGRO_DESTINATION=${dfhack_libdir}" + "-DSSENSE_RES_DESTINATION=${dfhack_datadir}/stonesense" + "-DSSENSE_DOC_DESTINATION=${dfhack_docdir}/stonesense" ) if use minimal; then mycmakeargs+=( "-DBUILD_DEV_PLUGINS=OFF" - "-DBUILD_SUPPORTED=OFF" "-DBUILD_DWARFEXPORT=OFF" "-DBUILD_MAPEXPORT=OFF" + "-DBUILD_SUPPORTED=OFF" ) else mycmakeargs+=( "-DBUILD_DEV_PLUGINS=ON" - "-DBUILD_SUPPORTED=ON" "-DBUILD_DWARFEXPORT=ON" "-DBUILD_MAPEXPORT=ON" + "-DBUILD_SUPPORTED=ON" ) fi cmake-utils_src_configure } -QA_PREBUILT+="${GAMES_DATADIR#/}/${P}/lib32/libruby.so" +src_compile() { + cmake-utils_src_compile +} + +QA_PREBUILT+="${dfhack_libdir}"/libruby.so + +src_install() { + cmake-utils_src_install + mv "${D}/${GAMES_BINDIR}/dfhack" \ + "${D}/${GAMES_BINDIR}/dfhack-${PV}" || die + mv "${D}/${GAMES_BINDIR}/dfhack-run" \ + "${D}/${GAMES_BINDIR}/dfhack-run-${PV}" || die + dodir "${dfhack_statedir}" + if use ssense; then + dodir "${GAMES_SYSCONFDIR#/}/${P}/stonesense" + mv "${D}/${dfhack_datadir#/}/stonesense/init.txt" \ + "${D}/${GAMES_SYSCONFDIR#/}/${P}/stonesense/init.txt" || die + dosym "${ROOT}${GAMES_SYSCONFDIR#/}/${P}/stonesense/init.txt" \ + "${dfhack_datadir#/}/stonesense/init.txt" + elog + elog "The Stonesense configuration file can be found at" + elog "${GAMES_SYSCONFDIR#/}/${P}/stonesense/init.txt" + fi + prepgamesdirs + fperms g+w "${dfhack_statedir}" || die + # portage user needs to be able to link: + ( ! use egg || fperms o+rx "$(games_get_libdir)"/libegg.so ) || die +} + +pkg_postinst() { + games_pkg_postinst + elog + elog "Due to Dwarf Fortress' special needs regarding working directory," + elog "specifying relative paths to DFHack plugins can give unintended" + elog "results." + elog + elog "DFHack installs custom raw files for dwarffortress in" + elog "${dfhack_datadir}/raw" + elog "To use them, copy them into your raw folder and apply the diffs." + elog + elog "To start DFHack, please run dfhack-${PV}" +} diff --git a/games-util/dfhack/files/dfhack-9999/01-compile-static-libraries-as.patch b/games-util/dfhack/files/dfhack-9999/01-compile-static-libraries-as.patch new file mode 100644 index 00000000..2166a50a --- /dev/null +++ b/games-util/dfhack/files/dfhack-9999/01-compile-static-libraries-as.patch @@ -0,0 +1,65 @@ +Compile static libraries as PIC. + +From: eroen <eroen@occam.eroen.eu> + +Otherwise, we get position dependent textrels in the shared libraries +that link against them, which is slightly bad for performance (and very +bad for portability). + +Cross-platform support for handling this was added in cmake 2.8.9. +--- + CMakeLists.txt | 2 +- + depends/md5/CMakeLists.txt | 3 ++- + depends/tinyxml/CMakeLists.txt | 3 ++- + depends/tthread/CMakeLists.txt | 3 ++- + 4 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c7c84e8..abff6a8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -11,7 +11,7 @@ else(CMAKE_CONFIGURATION_TYPES) + endif(CMAKE_CONFIGURATION_TYPES) + + ## some generic CMake magic +-cmake_minimum_required(VERSION 2.8 FATAL_ERROR) ++cmake_minimum_required(VERSION 2.8.9 FATAL_ERROR) + project(dfhack) + + if(MSVC) +diff --git a/depends/md5/CMakeLists.txt b/depends/md5/CMakeLists.txt +index 69e0cf0..df14e3c 100644 +--- a/depends/md5/CMakeLists.txt ++++ b/depends/md5/CMakeLists.txt +@@ -1,3 +1,4 @@ + project(dfhack-md5) + ADD_LIBRARY(dfhack-md5 STATIC EXCLUDE_FROM_ALL md5.cpp md5wrapper.cpp) +-IDE_FOLDER(dfhack-md5 "Depends") +\ No newline at end of file ++set_target_properties(dfhack-md5 PROPERTIES POSITION_INDEPENDENT_CODE True) ++IDE_FOLDER(dfhack-md5 "Depends") +diff --git a/depends/tinyxml/CMakeLists.txt b/depends/tinyxml/CMakeLists.txt +index 7d92492..f97f4bc 100644 +--- a/depends/tinyxml/CMakeLists.txt ++++ b/depends/tinyxml/CMakeLists.txt +@@ -1,3 +1,4 @@ + project(dfhack-tinyxml) + ADD_LIBRARY(dfhack-tinyxml STATIC EXCLUDE_FROM_ALL tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp) +-IDE_FOLDER(dfhack-tinyxml "Depends") +\ No newline at end of file ++set_target_properties(dfhack-tinyxml PROPERTIES POSITION_INDEPENDENT_CODE True) ++IDE_FOLDER(dfhack-tinyxml "Depends") +diff --git a/depends/tthread/CMakeLists.txt b/depends/tthread/CMakeLists.txt +index d34c19c..2757a6e 100644 +--- a/depends/tthread/CMakeLists.txt ++++ b/depends/tthread/CMakeLists.txt +@@ -1,6 +1,7 @@ + PROJECT(dfhack-tinythread) + ADD_LIBRARY(dfhack-tinythread STATIC EXCLUDE_FROM_ALL tinythread.cpp) ++set_target_properties(dfhack-tinythread PROPERTIES POSITION_INDEPENDENT_CODE True) + if(UNIX) + target_link_libraries(dfhack-tinythread pthread) + endif() +-IDE_FOLDER(dfhack-tinythread "Depends") +\ No newline at end of file ++IDE_FOLDER(dfhack-tinythread "Depends") diff --git a/games-util/dfhack/files/dfhack-9999/02-drop-strange-build-options.patch b/games-util/dfhack/files/dfhack-9999/02-drop-strange-build-options.patch new file mode 100644 index 00000000..cedac0f2 --- /dev/null +++ b/games-util/dfhack/files/dfhack-9999/02-drop-strange-build-options.patch @@ -0,0 +1,52 @@ +drop strange build options + +From: eroen <eroen@occam.eroen.eu> + + +--- + CMakeLists.txt | 4 ++-- + depends/lua/CMakeLists.txt | 2 +- + library/CMakeLists.txt | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index abff6a8..194eec7 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -105,8 +105,8 @@ OPTION(BUILD_PLUGINS "Build the plugins." ON) + IF(UNIX) + add_definitions(-DLINUX_BUILD) + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -Wall -Wno-unused-variable") +- SET(CMAKE_CXX_FLAGS "-fvisibility=hidden -m32 -march=i686 -mtune=generic -std=c++0x") +- SET(CMAKE_C_FLAGS "-fvisibility=hidden -m32 -march=i686 -mtune=generic") ++ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -std=c++0x") ++ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") + ELSEIF(MSVC) + # for msvc, tell it to always use 8-byte pointers to member functions to avoid confusion + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /vmg /vmm /MP") +diff --git a/depends/lua/CMakeLists.txt b/depends/lua/CMakeLists.txt +index b77bce6..e39eb04 100644 +--- a/depends/lua/CMakeLists.txt ++++ b/depends/lua/CMakeLists.txt +@@ -12,7 +12,7 @@ ENDIF() + + IF(UNIX) + add_definitions(-DLINUX_BUILD) +- SET(CMAKE_C_FLAGS "-m32") ++ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + ENDIF() + + SET (HDR_LIBLUA +diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt +index 64dafd5..2538360 100644 +--- a/library/CMakeLists.txt ++++ b/library/CMakeLists.txt +@@ -216,7 +216,7 @@ ADD_CUSTOM_TARGET(generate_headers DEPENDS ${dfapi_SOURCE_DIR}/include/df/codege + IF(UNIX) + # Don't produce debug info for generated stubs + SET_SOURCE_FILES_PROPERTIES(DataStatics.cpp DataStaticsCtor.cpp DataStaticsFields.cpp +- PROPERTIES COMPILE_FLAGS "-g0 -O1") ++ PROPERTIES COMPILE_FLAGS "-g0") + ELSE(WIN32) + SET_SOURCE_FILES_PROPERTIES(DataStatics.cpp DataStaticsCtor.cpp DataStaticsFields.cpp + PROPERTIES COMPILE_FLAGS "/O1 /bigobj") diff --git a/games-util/dfhack/files/dfhack-9999/03-configurable-install-paths.patch b/games-util/dfhack/files/dfhack-9999/03-configurable-install-paths.patch new file mode 100644 index 00000000..35c957e2 --- /dev/null +++ b/games-util/dfhack/files/dfhack-9999/03-configurable-install-paths.patch @@ -0,0 +1,96 @@ +configurable install paths + +From: eroen <eroen@occam.eroen.eu> + + +--- + CMakeLists.txt | 20 +++++++++++--------- + library/CMakeLists.txt | 6 +++--- + plugins/ruby/CMakeLists.txt | 4 ++-- + 3 files changed, 16 insertions(+), 14 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 194eec7..4f196c9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -68,30 +68,32 @@ add_definitions(-DDFHACK_VERSION="${DFHACK_VERSION}") + # the dfhack libraries will be installed here: + IF(UNIX) + # put the lib into DF/hack +- SET(DFHACK_LIBRARY_DESTINATION hack) +- SET(DFHACK_EGGY_DESTINATION libs) ++ SET(DFHACK_LIBRARY_DESTINATION hack CACHE PATH "DFHACK_LIBRARY_DESTINATION") ++ SET(DFHACK_EGGY_DESTINATION libs CACHE PATH "DFHACK_EGGY_DESTINATION") + ELSE() + # windows is crap, therefore we can't do nice things with it. leave the libs on a nasty pile... + SET(DFHACK_LIBRARY_DESTINATION .) + SET(DFHACK_EGGY_DESTINATION .) + ENDIF() + # external tools will be installed here: +-SET(DFHACK_BINARY_DESTINATION .) ++SET(DFHACK_BINARY_DESTINATION . CACHE PATH "DFHACK_BINARY_DESTINATION") + # dfhack data goes here: +-SET(DFHACK_DATA_DESTINATION hack) ++SET(DFHACK_DATA_DESTINATION hack CACHE PATH "DFHACK_DATA_DESTINATION") + # plugin libs go here: +-SET(DFHACK_PLUGIN_DESTINATION hack/plugins) ++SET(DFHACK_PLUGIN_DESTINATION hack/plugins CACHE PATH "DFHACK_PLUGIN_DESTINATION") + # dfhack header files go here: +-SET(DFHACK_INCLUDES_DESTINATION hack/include) ++SET(DFHACK_INCLUDES_DESTINATION hack/include CACHE PATH "DFHACK_INCLUDES_DESTINATION") + # dfhack lua files go here: +-SET(DFHACK_LUA_DESTINATION hack/lua) ++SET(DFHACK_LUA_DESTINATION hack/lua CACHE PATH "DFHACK_LUA_DESTINATION") ++# dfhack ruby files go here: ++SET(DFHACK_RUBY_DESTINATION hack/ruby CACHE PATH "DFHACK_RUBY_DESTINATION") + # the windows .lib file goes here: + SET(DFHACK_DEVLIB_DESTINATION hack) + + # user documentation goes here: +-SET(DFHACK_USERDOC_DESTINATION hack) ++SET(DFHACK_USERDOC_DESTINATION hack CACHE PATH "DFHACK_USERDOC_DESTINATION") + # developer documentation goes here: +-SET(DFHACK_DEVDOC_DESTINATION hack) ++SET(DFHACK_DEVDOC_DESTINATION hack CACHE PATH "DFHACK_DEVDOC_DESTINATION") + + ## some options for the user/developer to play with + OPTION(BUILD_LIBRARY "Build the library that goes into DF." ON) +diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt +index 2538360..18635ed 100644 +--- a/library/CMakeLists.txt ++++ b/library/CMakeLists.txt +@@ -302,9 +302,9 @@ IF(UNIX) + else() + # On linux, copy our version of the df launch script which sets LD_PRELOAD + install(PROGRAMS ${dfhack_SOURCE_DIR}/package/linux/dfhack +- DESTINATION .) ++ DESTINATION ${DFHACK_BINARY_DESTINATION}) + install(PROGRAMS ${dfhack_SOURCE_DIR}/package/linux/dfhack-run +- DESTINATION .) ++ DESTINATION ${DFHACK_BINARY_DESTINATION}) + endif() + ELSE() + if(NOT BUILD_EGGY) +@@ -330,7 +330,7 @@ install(FILES xml/symbols.xml + DESTINATION ${DFHACK_DATA_DESTINATION}) #linux: share/dfhack + #install the example autoexec file + install(FILES ../dfhack.init-example +- DESTINATION ${DFHACK_BINARY_DESTINATION}) ++ DESTINATION ${DFHACK_USERDOC_DESTINATION}) + + install(TARGETS dfhack-run dfhack-client binpatch + LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION} +diff --git a/plugins/ruby/CMakeLists.txt b/plugins/ruby/CMakeLists.txt +index 9d821f9..e6d3eff 100644 +--- a/plugins/ruby/CMakeLists.txt ++++ b/plugins/ruby/CMakeLists.txt +@@ -35,7 +35,7 @@ ADD_DEPENDENCIES(ruby ruby-autogen-rb) + INSTALL(FILES ${RUBYLIB} DESTINATION ${DFHACK_LIBRARY_DESTINATION}) + + INSTALL(DIRECTORY . +- DESTINATION hack/ruby ++ DESTINATION ${DFHACK_RUBY_DESTINATION} + FILES_MATCHING PATTERN "*.rb") + +-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ruby-autogen.rb DESTINATION hack/ruby) ++INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ruby-autogen.rb DESTINATION ${DFHACK_RUBY_DESTINATION}) diff --git a/games-util/dfhack/files/dfhack-9999/04-compile-time-configurable.patch b/games-util/dfhack/files/dfhack-9999/04-compile-time-configurable.patch new file mode 100644 index 00000000..1c12d3b0 --- /dev/null +++ b/games-util/dfhack/files/dfhack-9999/04-compile-time-configurable.patch @@ -0,0 +1,142 @@ +compile-time configurable paths + +From: eroen <eroen@occam.eroen.eu> + +./hack/symbols.xml +- Breaks startup + +./hack/lua +./hack/ruby +- Make noise on startup +--- + CMakeLists.txt | 4 ++++ + depends/lua/include/luaconf.h | 8 ++++++++ + library/Core.cpp | 6 +++++- + plugins/ruby/ruby.cpp | 8 ++++++++ + plugins/sort.cpp | 8 ++++++++ + 5 files changed, 33 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4f196c9..77a8d97 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -69,6 +69,7 @@ add_definitions(-DDFHACK_VERSION="${DFHACK_VERSION}") + IF(UNIX) + # put the lib into DF/hack + SET(DFHACK_LIBRARY_DESTINATION hack CACHE PATH "DFHACK_LIBRARY_DESTINATION") ++ ADD_DEFINITIONS(-DDFHACK_LIBRARY_DESTINATION="${DFHACK_LIBRARY_DESTINATION}") + SET(DFHACK_EGGY_DESTINATION libs CACHE PATH "DFHACK_EGGY_DESTINATION") + ELSE() + # windows is crap, therefore we can't do nice things with it. leave the libs on a nasty pile... +@@ -79,14 +80,17 @@ ENDIF() + SET(DFHACK_BINARY_DESTINATION . CACHE PATH "DFHACK_BINARY_DESTINATION") + # dfhack data goes here: + SET(DFHACK_DATA_DESTINATION hack CACHE PATH "DFHACK_DATA_DESTINATION") ++ADD_DEFINITIONS(-DDFHACK_DATA_DESTINATION="${DFHACK_DATA_DESTINATION}") + # plugin libs go here: + SET(DFHACK_PLUGIN_DESTINATION hack/plugins CACHE PATH "DFHACK_PLUGIN_DESTINATION") + # dfhack header files go here: + SET(DFHACK_INCLUDES_DESTINATION hack/include CACHE PATH "DFHACK_INCLUDES_DESTINATION") + # dfhack lua files go here: + SET(DFHACK_LUA_DESTINATION hack/lua CACHE PATH "DFHACK_LUA_DESTINATION") ++ADD_DEFINITIONS(-DDFHACK_LUA_DESTINATION="${DFHACK_LUA_DESTINATION}") + # dfhack ruby files go here: + SET(DFHACK_RUBY_DESTINATION hack/ruby CACHE PATH "DFHACK_RUBY_DESTINATION") ++ADD_DEFINITIONS(-DDFHACK_RUBY_DESTINATION="${DFHACK_RUBY_DESTINATION}") + # the windows .lib file goes here: + SET(DFHACK_DEVLIB_DESTINATION hack) + +diff --git a/depends/lua/include/luaconf.h b/depends/lua/include/luaconf.h +index 766752f..c73e094 100644 +--- a/depends/lua/include/luaconf.h ++++ b/depends/lua/include/luaconf.h +@@ -98,8 +98,16 @@ + + #else /* }{ */ + ++#ifdef DFHACK_LUA_DESTINATION ++#define LUA_LDIR DFHACK_LUA_DESTINATION "/" ++#else + #define LUA_LDIR "./hack/lua/" ++#endif ++#ifdef DFHACK_DATA_DESTINATION ++#define LUA_CDIR DFHACK_DATA_DESTINATION "/" ++#else + #define LUA_CDIR "./hack/" ++#endif + #define LUA_PATH_DEFAULT \ + LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" "./?.lua" + #define LUA_CPATH_DEFAULT \ +diff --git a/library/Core.cpp b/library/Core.cpp +index 2021a8b..e72decd 100644 +--- a/library/Core.cpp ++++ b/library/Core.cpp +@@ -879,7 +879,11 @@ bool Core::Init() + + // find out what we are... + #ifdef LINUX_BUILD +- const char * path = "hack/symbols.xml"; ++ #ifdef DFHACK_DATA_DESTINATION ++ const char * path = DFHACK_DATA_DESTINATION "/symbols.xml"; ++ #else ++ const char * path = "hack/symbols.xml"; ++ #endif + #else + const char * path = "hack\\symbols.xml"; + #endif +diff --git a/plugins/ruby/ruby.cpp b/plugins/ruby/ruby.cpp +index 69b9b15..534ad9f 100644 +--- a/plugins/ruby/ruby.cpp ++++ b/plugins/ruby/ruby.cpp +@@ -315,7 +315,11 @@ static int df_loadruby(void) + #elif defined(__APPLE__) + "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib"; + #else ++ #ifdef DFHACK_LIBRARY_DESTINATION ++ DFHACK_LIBRARY_DESTINATION "/libruby.so"; ++ #else + "hack/libruby.so"; ++ #endif + #endif + + libruby_handle = OpenPlugin(libpath); +@@ -418,7 +422,11 @@ static void df_rubythread(void *p) + + // load the default ruby-level definitions in the background + state=0; ++ #ifdef DFHACK_RUBY_DESTINATION ++ rb_eval_string_protect("require '" DFHACK_RUBY_DESTINATION "/ruby'", &state); ++ #else + rb_eval_string_protect("require './hack/ruby/ruby'", &state); ++ #endif + if (state) + dump_rb_error(); + +diff --git a/plugins/sort.cpp b/plugins/sort.cpp +index 95ae109..510e288 100644 +--- a/plugins/sort.cpp ++++ b/plugins/sort.cpp +@@ -64,7 +64,11 @@ DFhackCExport command_result plugin_init (color_ostream &out, std::vector <Plugi + " The '>' prefix reverses the sort order for defined values.\n" + " Unit order examples:\n" + " name, age, arrival, squad, squad_position, profession\n" ++ #ifdef DFHACK_LUA_DESTINATION ++ "The orderings are defined in " DFHACK_LUA_DESTINATION "/plugins/sort/*.lua\n" ++ #else + "The orderings are defined in hack/lua/plugins/sort/*.lua\n" ++ #endif + )); + commands.push_back(PluginCommand( + "sort-items", "Sort the visible item list.", sort_items, item_list_hotkey, +@@ -74,7 +78,11 @@ DFhackCExport command_result plugin_init (color_ostream &out, std::vector <Plugi + " The '>' prefix reverses the sort order for defined values.\n" + " Item order examples:\n" + " description, material, wear, type, quality\n" ++ #ifdef DFHACK_LUA_DESTINATION ++ "The orderings are defined in " DFHACK_LUA_DESTINATION "/plugins/sort/*.lua\n" ++ #else + "The orderings are defined in hack/lua/plugins/sort/*.lua\n" ++ #endif + )); + return CR_OK; + } diff --git a/games-util/dfhack/files/dfhack-9999/05-compile-time-configurable-0.patch b/games-util/dfhack/files/dfhack-9999/05-compile-time-configurable-0.patch new file mode 100644 index 00000000..c35d8e37 --- /dev/null +++ b/games-util/dfhack/files/dfhack-9999/05-compile-time-configurable-0.patch @@ -0,0 +1,54 @@ +compile-time configurable paths + +From: eroen <eroen@occam.eroen.eu> + +hack/ +./ +--- + library/Core.cpp | 8 ++++++++ + plugins/zone.cpp | 2 ++ + 2 files changed, 10 insertions(+) + +diff --git a/library/Core.cpp b/library/Core.cpp +index e72decd..89130a9 100644 +--- a/library/Core.cpp ++++ b/library/Core.cpp +@@ -317,7 +317,11 @@ static command_result runRubyScript(color_ostream &out, PluginManager *plug_mgr, + rbcmd += "'" + args[i] + "', "; + rbcmd += "]\n"; + ++#ifdef DFHACK_DATA_DESTINATION ++ rbcmd += "catch(:script_finished) { load '" DFHACK_DATA_DESTINATION "/scripts/" + name + ".rb' }"; ++#else + rbcmd += "catch(:script_finished) { load './hack/scripts/" + name + ".rb' }"; ++#endif + + return plug_mgr->eval_ruby(out, rbcmd.c_str()); + } +@@ -862,7 +866,11 @@ void Core::fatal (std::string output, bool deactivate) + std::string Core::getHackPath() + { + #ifdef LINUX_BUILD ++ #ifdef DFHACK_DATA_DESTINATION ++ return DFHACK_DATA_DESTINATION "/"; ++ #else + return p->getPath() + "/hack/"; ++ #endif + #else + return p->getPath() + "\\hack\\"; + #endif +diff --git a/plugins/zone.cpp b/plugins/zone.cpp +index 5649da2..e89419a 100644 +--- a/plugins/zone.cpp ++++ b/plugins/zone.cpp +@@ -3177,8 +3177,10 @@ command_result df_autobutcher(color_ostream &out, vector <string> & parameters) + { + string run = "dfhack-run autobutcher "; + #ifdef LINUX_BUILD ++#ifndef DFHACK_DATA_DESTINATION + run = "./dfhack-run autobutcher "; + #endif ++#endif + // force creation of config + out << run << "start" << endl; + diff --git a/games-util/dfhack/files/dfhack-9999/06-compile-time-configurable-1.patch b/games-util/dfhack/files/dfhack-9999/06-compile-time-configurable-1.patch new file mode 100644 index 00000000..084059b7 --- /dev/null +++ b/games-util/dfhack/files/dfhack-9999/06-compile-time-configurable-1.patch @@ -0,0 +1,104 @@ +compile-time configurable state directory + +From: eroen <eroen@occam.eroen.eu> + +It'd be nice to write stuff somewhere writeable. +--- + CMakeLists.txt | 4 ++++ + library/Console-linux.cpp | 4 ++++ + library/Core.cpp | 8 ++++++++ + library/Hooks-egg.cpp | 4 ++++ + library/Hooks-linux.cpp | 4 ++++ + 5 files changed, 24 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 77a8d97..73a4ac1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -64,6 +64,10 @@ SET(DFHACK_RELEASE "r3" CACHE STRING "Current release revision.") + set(DFHACK_VERSION "${DF_VERSION}-${DFHACK_RELEASE}") + add_definitions(-DDFHACK_VERSION="${DFHACK_VERSION}") + ++## where persistent things are written (and read) at runtime ++SET(DFHACK_STATEDIR "." CACHE PATH "DFHACK_STATEDIR") ++ADD_DEFINITIONS(-DDFHACK_STATEDIR="${DFHACK_STATEDIR}") ++ + ## where to install things (after the build is done, classic 'make install' or package structure) + # the dfhack libraries will be installed here: + IF(UNIX) +diff --git a/library/Console-linux.cpp b/library/Console-linux.cpp +index f32fa1c..be8d13b 100644 +--- a/library/Console-linux.cpp ++++ b/library/Console-linux.cpp +@@ -658,7 +658,11 @@ bool Console::init(bool sharing) + inited = false; + return false; + } ++ #ifdef DFHACK_STATEDIR ++ if (!freopen(DFHACK_STATEDIR "/stdout.log", "w", stdout)) ++ #else + if (!freopen("stdout.log", "w", stdout)) ++ #endif + ; + d = new Private(); + // make our own weird streams so our IO isn't redirected +diff --git a/library/Core.cpp b/library/Core.cpp +index 89130a9..978fccd 100644 +--- a/library/Core.cpp ++++ b/library/Core.cpp +@@ -769,7 +769,11 @@ void fIOthread(void * iodata) + PluginManager * plug_mgr = ((IODATA*) iodata)->plug_mgr; + + CommandHistory main_history; ++ #ifdef DFHACK_STATEDIR ++ main_history.load(DFHACK_STATEDIR "/dfhack.history"); ++ #else + main_history.load("dfhack.history"); ++ #endif + + Console & con = core->getConsole(); + if(plug_mgr == 0 || core == 0) +@@ -802,7 +806,11 @@ void fIOthread(void * iodata) + { + // a proper, non-empty command was entered + main_history.add(command); ++ #ifdef DFHACK_STATEDIR ++ main_history.save(DFHACK_STATEDIR "/dfhack.history"); ++ #else + main_history.save("dfhack.history"); ++ #endif + } + + auto rv = core->runCommand(con, command); +diff --git a/library/Hooks-egg.cpp b/library/Hooks-egg.cpp +index c98cf5d..90df6af 100644 +--- a/library/Hooks-egg.cpp ++++ b/library/Hooks-egg.cpp +@@ -37,7 +37,11 @@ distribution. + DFhackCExport int egg_init(void) + { + // reroute stderr ++ #ifdef DFHACK_STATEDIR ++ freopen(DFHACK_STATEDIR "/stderr.log", "w", stderr); ++ #else + freopen("stderr.log", "w", stderr); ++ #endif + // we don't reroute stdout until we figure out if this should be done at all + // See: Console-linux.cpp + fprintf(stderr,"dfhack: hooking successful\n"); +diff --git a/library/Hooks-linux.cpp b/library/Hooks-linux.cpp +index 31c0323..42d86f3 100644 +--- a/library/Hooks-linux.cpp ++++ b/library/Hooks-linux.cpp +@@ -114,7 +114,11 @@ static int (*_SDL_Init)(uint32_t flags) = 0; + DFhackCExport int SDL_Init(uint32_t flags) + { + // reroute stderr ++ #ifdef DFHACK_STATEDIR ++ freopen(DFHACK_STATEDIR "/stderr.log", "w", stderr); ++ #else + freopen("stderr.log", "w", stderr); ++ #endif + // we don't reroute stdout until we figure out if this should be done at all + // See: Console-linux.cpp + diff --git a/games-util/dfhack/files/dfhack-9999/series b/games-util/dfhack/files/dfhack-9999/series new file mode 100644 index 00000000..1a08fe19 --- /dev/null +++ b/games-util/dfhack/files/dfhack-9999/series @@ -0,0 +1,7 @@ +# This series applies on GIT commit 18a91ef221f531307ac5ddbe29532a3d6e0a04ec +01-compile-static-libraries-as.patch +02-drop-strange-build-options.patch +03-configurable-install-paths.patch +04-compile-time-configurable.patch +05-compile-time-configurable-0.patch +06-compile-time-configurable-1.patch diff --git a/games-util/dfhack/files/stonesense-9999/01-null-isn-t-an-int32.patch b/games-util/dfhack/files/stonesense-9999/01-null-isn-t-an-int32.patch new file mode 100644 index 00000000..f3acc8a1 --- /dev/null +++ b/games-util/dfhack/files/stonesense-9999/01-null-isn-t-an-int32.patch @@ -0,0 +1,46 @@ +NULL isn't int32_t + +From: eroen <eroen@occam.eroen.eu> + +ContentLoader.h declares +vector<vector<int32_t>*> position_Indices; + +Thus, it is not appropriate to set +position_Indices[ent_id]->resize(pos_id+1, NULL); + +Rather, 0s will do nicely. +--- + ContentLoader.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ContentLoader.cpp b/ContentLoader.cpp +index 9e305a3..c4ffdb1 100644 +--- a/ContentLoader.cpp ++++ b/ContentLoader.cpp +@@ -150,7 +150,7 @@ bool ContentLoader::Load() + if(!position_Indices[ent_id]) + position_Indices[ent_id] = new vector<int32_t>; + if(pos_id >= position_Indices[ent_id]->size()) +- position_Indices[ent_id]->resize(pos_id+1, NULL); ++ position_Indices[ent_id]->resize(pos_id+1, 0); + position_Indices[ent_id]->at(pos_id) = found; + //LogError("%d(%d):%s->%d(%d):%s = %d\n", i, currentity->id, currentity->entity_raw->code.c_str(), j,currentpos->id, currentpos->code.c_str(), found); + } +@@ -175,7 +175,7 @@ bool ContentLoader::Load() + if(!position_Indices[ent_id]) + position_Indices[ent_id] = new vector<int32_t>; + if(pos_id >= position_Indices[ent_id]->size()) +- position_Indices[ent_id]->resize(pos_id+1, NULL); ++ position_Indices[ent_id]->resize(pos_id+1, 0); + position_Indices[ent_id]->at(pos_id) = found; + //LogError("%d(%d):%s->%d(%d):%s = %d\n", i, currentity->id, currentity->entity_raw->code.c_str(), j,currentpos->id, currentpos->code.c_str(), found); + } +@@ -200,7 +200,7 @@ bool ContentLoader::Load() + if(!position_Indices[ent_id]) + position_Indices[ent_id] = new vector<int32_t>; + if(pos_id >= position_Indices[ent_id]->size()) +- position_Indices[ent_id]->resize(pos_id+1, NULL); ++ position_Indices[ent_id]->resize(pos_id+1, 0); + position_Indices[ent_id]->at(pos_id) = found; + //LogError("%d(%d):%s->%d(%d):%s = %d\n", i, currentity->id, currentity->entity_raw->code.c_str(), j,currentpos->id, currentpos->code.c_str(), found); + } diff --git a/games-util/dfhack/files/stonesense-9999/02-configurable-install-paths.patch b/games-util/dfhack/files/stonesense-9999/02-configurable-install-paths.patch new file mode 100644 index 00000000..6ae9a0ae --- /dev/null +++ b/games-util/dfhack/files/stonesense-9999/02-configurable-install-paths.patch @@ -0,0 +1,38 @@ +configurable install paths + +From: eroen <eroen@occam.eroen.eu> + + +--- + CMakeLists.txt | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ad5796a..dabd741 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -93,8 +93,9 @@ IF(UNIX) + ${include_directories}
+ ${stonesense_SOURCE_DIR}/allegro/include
+ )
++ SET(SSENSE_ALLEGRO_DESTINATION "hack/libs" CACHE PATH "SSENSE_ALLEGRO_DESTINATION")
+ install(DIRECTORY allegro/lib/
+- DESTINATION "hack/libs"
++ DESTINATION ${SSENSE_ALLEGRO_DESTINATION}
+ PATTERN "CVS" EXCLUDE
+ PATTERN ".svn" EXCLUDE)
+ ELSE()
+@@ -155,9 +156,11 @@ IF(APPLE) + add_custom_command(TARGET stonesense POST_BUILD COMMAND ${stonesense_SOURCE_DIR}/fix-libs-stonesense.sh WORKING_DIRECTORY . COMMENT "Fixing Stonesense library dependencies...")
+ ENDIF(APPLE)
+ #install resources into DF/stonesense
++SET(SSENSE_RES_DESTINATION "stonesense" CACHE PATH "SSENSE_RES_DESTINATION")
+ install(DIRECTORY resources/
+- DESTINATION "stonesense"
++ DESTINATION ${SSENSE_RES_DESTINATION}
+ PATTERN "CVS" EXCLUDE
+ PATTERN ".svn" EXCLUDE)
+ # install readme
+-install(FILES README.txt DESTINATION stonesense)
++SET(SSENSE_DOC_DESTINATION "stonesense" CACHE PATH "SSENSE_DOC_DESTINATION")
++install(FILES README.txt DESTINATION ${SSENSE_DOC_DESTINATION})
diff --git a/games-util/dfhack/files/stonesense-9999/03-don-t-segfault-if-logfile-is.patch b/games-util/dfhack/files/stonesense-9999/03-don-t-segfault-if-logfile-is.patch new file mode 100644 index 00000000..915c63e8 --- /dev/null +++ b/games-util/dfhack/files/stonesense-9999/03-don-t-segfault-if-logfile-is.patch @@ -0,0 +1,37 @@ +don't segfault if logfile is unwritable + +From: eroen <eroen@occam.eroen.eu> + + +--- + main.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/main.cpp b/main.cpp +index 32fd9b9..9fa513d 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -91,10 +91,10 @@ void LogError(const char* msg, ...) + FILE* fp = fopen( "Stonesense.log", "a"); + if(fp) { + vfprintf( fp, msg, arglist ); ++ fclose(fp); + } + // Core::printerr(msg, arglist); + va_end(arglist); +- fclose(fp); + } + + +@@ -121,10 +121,10 @@ void LogVerbose(const char* msg, ...) + FILE* fp = fopen( "Stonesense.log", "a"); + if(fp) { + vfprintf( fp, msg, arglist ); ++ fclose(fp); + } + // Core::printerr(msg, arglist); + va_end(arglist); +- fclose(fp); + } + + void SetTitle(const char *format, ...) diff --git a/games-util/dfhack/files/stonesense-9999/04-compile-time-configuration-of.patch b/games-util/dfhack/files/stonesense-9999/04-compile-time-configuration-of.patch new file mode 100644 index 00000000..8291ee0a --- /dev/null +++ b/games-util/dfhack/files/stonesense-9999/04-compile-time-configuration-of.patch @@ -0,0 +1,188 @@ +compile time configuration of magic cwd + +From: eroen <eroen@occam.eroen.eu> + + +--- + Config.cpp | 4 ++++ + ContentBuildingReader.cpp | 4 ++++ + ContentLoader.cpp | 8 ++++++++ + GUI.cpp | 4 ++++ + Keybinds.cpp | 4 ++++ + OcclusionTest.cpp | 5 +++++ + Tile.cpp | 8 ++++++++ + main.cpp | 12 ++++++++++++ + 8 files changed, 49 insertions(+) + +diff --git a/Config.cpp b/Config.cpp +index 2c431a8..76d3bd7 100644 +--- a/Config.cpp ++++ b/Config.cpp +@@ -789,7 +789,11 @@ void parseConfigLine( string line ) + bool loadConfigFile()
+ {
+ string line;
++ #ifdef DFHACK_DATA_DESTINATION
++ ALLEGRO_PATH * p =al_create_path(DFHACK_DATA_DESTINATION "/stonesense/init.txt");
++ #else
+ ALLEGRO_PATH * p =al_create_path("stonesense/init.txt");
++ #endif
+ const char * path = al_path_cstr(p,ALLEGRO_NATIVE_PATH_SEP);
+ ifstream myfile (path);
+ if (myfile.is_open() == false) {
+diff --git a/ContentBuildingReader.cpp b/ContentBuildingReader.cpp +index cf62502..b092611 100644 +--- a/ContentBuildingReader.cpp ++++ b/ContentBuildingReader.cpp +@@ -436,7 +436,11 @@ void flushBuildingConfig( vector<BuildingConfiguration>* knownBuildings ) + /*
+ bool LoadBuildingConfiguration( vector<BuildingConfiguration>* knownBuildings ){
+ string line;
++ #ifdef DFHACK_DATA_DESTINATION
++ ifstream myfile (DFHACK_DATA_DESTINATION "/buildings/index.txt");
++ #else
+ ifstream myfile ("buildings/index.txt");
++ #endif
+ if (myfile.is_open() == false){
+ WriteErr("Unable to load building config index file!\n");
+ return false;
+diff --git a/ContentLoader.cpp b/ContentLoader.cpp +index c4ffdb1..19e2cff 100644 +--- a/ContentLoader.cpp ++++ b/ContentLoader.cpp +@@ -227,7 +227,11 @@ bool ContentLoader::Load() + contentLoader->obsidian = lookupMaterialIndex(INORGANIC, "OBSIDIAN"); + + loadGraphicsFromDisk(); //these get destroyed when flushImgFiles is called. ++ #ifdef DFHACK_DATA_DESTINATION ++ ALLEGRO_PATH * p = al_create_path(DFHACK_DATA_DESTINATION "/stonesense/index.txt"); ++ #else + ALLEGRO_PATH * p = al_create_path("stonesense/index.txt"); ++ #endif + bool overallResult = parseContentIndexFile( al_path_cstr(p, ALLEGRO_NATIVE_PATH_SEP) ); + al_destroy_path(p); + translationComplete = false; +@@ -249,7 +253,11 @@ bool ContentLoader::reload_configs() + flushImgFiles(); + + loadGraphicsFromDisk(); //these get destroyed when flushImgFiles is called. ++ #ifdef DFHACK_DATA_DESTINATION ++ ALLEGRO_PATH * p = al_create_path(DFHACK_DATA_DESTINATION "/stonesense/index.txt"); ++ #else + ALLEGRO_PATH * p = al_create_path("stonesense/index.txt"); ++ #endif + bool overallResult = parseContentIndexFile( al_path_cstr(p, ALLEGRO_NATIVE_PATH_SEP) ); + al_destroy_path(p); + +diff --git a/GUI.cpp b/GUI.cpp +index 1c45abf..a872df5 100644 +--- a/GUI.cpp ++++ b/GUI.cpp +@@ -1058,7 +1058,11 @@ bool load_from_path (ALLEGRO_PATH * p, const char * filename, ALLEGRO_BITMAP *& + + void loadGraphicsFromDisk() + { ++ #ifdef DFHACK_DATA_DESTINATION ++ ALLEGRO_PATH * p = al_create_path_for_directory(DFHACK_DATA_DESTINATION "/stonesense"); ++ #else + ALLEGRO_PATH * p = al_create_path_for_directory("stonesense"); ++ #endif + if(!load_from_path(p, "objects.png", IMGObjectSheet)) { + return; + } +diff --git a/Keybinds.cpp b/Keybinds.cpp +index 94cab94..ec67b6a 100644 +--- a/Keybinds.cpp ++++ b/Keybinds.cpp +@@ -268,7 +268,11 @@ void parseKeymapLine( string line ) +
+ bool loadKeymapFile(){
+ string line;
++ #ifdef DFHACK_DATA_DESTINATION
++ ALLEGRO_PATH * p =al_create_path(DFHACK_DATA_DESTINATION "/stonesense/keybinds.txt");
++ #else
+ ALLEGRO_PATH * p =al_create_path("stonesense/keybinds.txt");
++ #endif
+ const char * path = al_path_cstr(p,ALLEGRO_NATIVE_PATH_SEP);
+ ifstream myfile (path);
+ if (myfile.is_open() == false) {
+diff --git a/OcclusionTest.cpp b/OcclusionTest.cpp +index 36b4c7c..16ab0c3 100644 +--- a/OcclusionTest.cpp ++++ b/OcclusionTest.cpp +@@ -118,8 +118,13 @@ void init_masks() + //load up some mask files + int flags = al_get_new_bitmap_flags(); + al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP); ++ #ifdef DFHACK_DATA_DESTINATION ++ ALLEGRO_BITMAP * wall = load_bitmap_withWarning(DFHACK_DATA_DESTINATION "/stonesense/mask_wall.png"); ++ ALLEGRO_BITMAP * floor = load_bitmap_withWarning(DFHACK_DATA_DESTINATION "/stonesense/mask_floor.png"); ++ #else + ALLEGRO_BITMAP * wall = load_bitmap_withWarning("stonesense/mask_wall.png"); + ALLEGRO_BITMAP * floor = load_bitmap_withWarning("stonesense/mask_floor.png"); ++ #endif + al_set_new_bitmap_flags(flags); + + //copy the mask to the bitsets. Each half is seperate to simplify things. +diff --git a/Tile.cpp b/Tile.cpp +index 419e4b9..bfab1f5 100644 +--- a/Tile.cpp ++++ b/Tile.cpp +@@ -636,9 +636,17 @@ void createEffectSprites() + sprite_dust = CreateSpriteFromSheet( 182, IMGObjectSheet); + sprite_magma = CreateSpriteFromSheet( 185, IMGObjectSheet); + sprite_smoke = CreateSpriteFromSheet( 186, IMGObjectSheet); ++ #ifdef DFHACK_DATA_DESTINATION ++ sprite_dragonfire = load_bitmap_withWarning(DFHACK_DATA_DESTINATION "/stonesense/Effect_flames.png"); ++ #else + sprite_dragonfire = load_bitmap_withWarning("stonesense/Effect_flames.png"); ++ #endif + sprite_fire = CreateSpriteFromSheet( 188, IMGObjectSheet); ++ #ifdef DFHACK_DATA_DESTINATION ++ sprite_webing = load_bitmap_withWarning(DFHACK_DATA_DESTINATION "/stonesense/Effect_web.png"); ++ #else + sprite_webing = load_bitmap_withWarning("stonesense/Effect_web.png"); ++ #endif + sprite_boiling = CreateSpriteFromSheet( 190, IMGObjectSheet); + sprite_oceanwave = CreateSpriteFromSheet( 191, IMGObjectSheet); + } +diff --git a/main.cpp b/main.cpp +index 9fa513d..090c0d2 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -161,7 +161,11 @@ void correctTileForDisplayedOffset(int32_t& x, int32_t& y, int32_t& z) + + bool loadfont(DFHack::color_ostream & output) + { ++ #ifdef DFHACK_DATA_DESTINATION ++ ALLEGRO_PATH * p = al_create_path_for_directory(DFHACK_DATA_DESTINATION "/stonesense"); ++ #else + ALLEGRO_PATH * p = al_create_path_for_directory("stonesense"); ++ #endif + if(!al_join_paths(p, ssConfig.font)) { + al_destroy_path(p); + return false; +@@ -217,7 +221,11 @@ void drawcredits() + //centred splash image + { + if(!SplashImage) { ++ #ifdef DFHACK_DATA_DESTINATION ++ ALLEGRO_PATH * p = al_create_path(DFHACK_DATA_DESTINATION "/stonesense/splash.png"); ++ #else + ALLEGRO_PATH * p = al_create_path("stonesense/splash.png"); ++ #endif + SplashImage = load_bitmap_withWarning(al_path_cstr(p, ALLEGRO_NATIVE_PATH_SEP)); + al_destroy_path(p); + } +@@ -448,7 +456,11 @@ static void * stonesense_thread(ALLEGRO_THREAD * main_thread, void * parms) + al_set_new_bitmap_flags(ALLEGRO_MIN_LINEAR|ALLEGRO_MIPMAP); + } + ++ #ifdef DFHACK_DATA_DESTINATION ++ ALLEGRO_PATH * p = al_create_path(DFHACK_DATA_DESTINATION "/stonesense/stonesense.png"); ++ #else + ALLEGRO_PATH * p = al_create_path("stonesense/stonesense.png"); ++ #endif + IMGIcon = load_bitmap_withWarning(al_path_cstr(p, ALLEGRO_NATIVE_PATH_SEP)); + al_destroy_path(p); + if(!IMGIcon) { diff --git a/games-util/dfhack/files/stonesense-9999/05-compile-time-configurable-log.patch b/games-util/dfhack/files/stonesense-9999/05-compile-time-configurable-log.patch new file mode 100644 index 00000000..6847a1eb --- /dev/null +++ b/games-util/dfhack/files/stonesense-9999/05-compile-time-configurable-log.patch @@ -0,0 +1,37 @@ +compile-time configurable log file destination + +From: eroen <eroen@occam.eroen.eu> + + +--- + main.cpp | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/main.cpp b/main.cpp +index 090c0d2..54a45e8 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -88,7 +88,11 @@ void LogError(const char* msg, ...) + char buf[512] = {0}; + vsprintf(buf, msg, arglist); + Core::printerr(buf); ++ #ifdef DFHACK_STATEDIR ++ FILE* fp = fopen( DFHACK_STATEDIR "/Stonesense.log", "a"); ++ #else + FILE* fp = fopen( "Stonesense.log", "a"); ++ #endif + if(fp) { + vfprintf( fp, msg, arglist ); + fclose(fp); +@@ -118,7 +122,11 @@ void LogVerbose(const char* msg, ...) + char buf[512] = {0}; + vsprintf(buf, msg, arglist); + Core::printerr(buf); ++ #ifdef DFHACK_STATEDIR ++ FILE* fp = fopen( DFHACK_STATEDIR "/Stonesense.log", "a"); ++ #else + FILE* fp = fopen( "Stonesense.log", "a"); ++ #endif + if(fp) { + vfprintf( fp, msg, arglist ); + fclose(fp); diff --git a/games-util/dfhack/files/stonesense-9999/06-fix-b0rked-xml-file.patch b/games-util/dfhack/files/stonesense-9999/06-fix-b0rked-xml-file.patch new file mode 100644 index 00000000..47e31051 --- /dev/null +++ b/games-util/dfhack/files/stonesense-9999/06-fix-b0rked-xml-file.patch @@ -0,0 +1,34 @@ +fix b0rked xml file + +From: eroen <eroen@occam.eroen.eu> + +it breaks loading the file. + + File load failed: /usr/share/games/dfhack-9999/stonesense/terrain/block_walls.xml + Failure in reading /usr/share/games/dfhack-9999/stonesense/terrain/block_walls.xml +--- + resources/terrain/block_walls.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/resources/terrain/block_walls.xml b/resources/terrain/block_walls.xml +index d48c5af..662b63a 100644 +--- a/resources/terrain/block_walls.xml ++++ b/resources/terrain/block_walls.xml +@@ -1,7 +1,7 @@ + <?xml version="1.0"?>
+ <walls file="block_walls.png">
+ <!-- construct -->
+- <walls sheetIndex="0" color="material" halftile="no">
++ <wall sheetIndex="0" color="material" halftile="no">
+ <form value="block" />
+ <material value="Inorganic" />
+ <!-- pillar -->
+@@ -53,7 +53,7 @@ + />
+ </wall>
+ </walls>
+-<floors file="block_floors.png"> ++<floors file="block_floors.png">
+ <!-- construct -->
+ <floor sheetIndex="0" color="material" halftile="no">
+ <form value="block" />
diff --git a/games-util/dfhack/files/stonesense-9999/07-compile-time-configurable-dump.patch b/games-util/dfhack/files/stonesense-9999/07-compile-time-configurable-dump.patch new file mode 100644 index 00000000..b1ed23c7 --- /dev/null +++ b/games-util/dfhack/files/stonesense-9999/07-compile-time-configurable-dump.patch @@ -0,0 +1,132 @@ +compile time configurable dump location + +From: eroen <eroen@occam.eroen.eu> + + +--- + BuildingConfiguration.cpp | 4 ++++ + ContentLoader.cpp | 6 +++++- + DumpInfo.cpp | 24 ++++++++++++++++++++++-- + GroundMaterialConfiguration.cpp | 4 ++++ + 4 files changed, 35 insertions(+), 3 deletions(-) + +diff --git a/BuildingConfiguration.cpp b/BuildingConfiguration.cpp +index 6a74246..2519322 100644 +--- a/BuildingConfiguration.cpp ++++ b/BuildingConfiguration.cpp +@@ -38,7 +38,11 @@ BuildingConfiguration::~BuildingConfiguration(void) + void DumpBuildingNamesToDisk() + { + /* ++ #ifdef DFHACK_STATEDIR ++ FILE* fp = fopen(DFHACK_STATEDIR "/buildingdump.txt", "w"); ++ #else + FILE* fp = fopen("buildingdump.txt", "w"); ++ #endif + if(!fp) return; + for(uint32_t j=0; j < contentLoader->classIdStrings.size(); j++){ + fprintf(fp, "%i:%s\n",j, contentLoader->classIdStrings[j].c_str()); +diff --git a/ContentLoader.cpp b/ContentLoader.cpp +index 19e2cff..e889891 100644 +--- a/ContentLoader.cpp ++++ b/ContentLoader.cpp +@@ -206,7 +206,11 @@ bool ContentLoader::Load() + } + } + } ++ #ifdef DFHACK_STATEDIR ++ //DumpStringVector(DFHACK_STATEDIR "/professiondump.txt", &professionStrings); ++ #else + //DumpStringVector("professiondump.txt", &professionStrings); ++ #endif + gatherStyleIndices(&df::global::world->raws); + /* + if(classIdStrings.empty()) +@@ -953,4 +957,4 @@ ShadeBy getShadeType(const char* Input) + return ShadeItem; + } + return ShadeNone; +-} +\ No newline at end of file ++} +diff --git a/DumpInfo.cpp b/DumpInfo.cpp +index 2184f43..9779ff2 100644 +--- a/DumpInfo.cpp ++++ b/DumpInfo.cpp +@@ -133,7 +133,11 @@ void dumpSegment() + //} + // + //void DumpCreatureNamesToDisk(){ +-// /*FILE* fp = fopen("dump.txt", "w"); ++// /*#ifdef DFHACK_STATEDIR ++// FILE* fp = fopen(DFHACK_STATEDIR "/dump.txt", "w"); ++// #else ++// FILE* fp = fopen("dump.txt", "w"); ++// #endif + // if(!fp) return; + // for(uint32_t j=0; j < v_creatureNames.size(); j++){ + // fprintf(fp, "%i:%s\n",j, v_creatureNames[j].id); +@@ -141,7 +145,11 @@ void dumpSegment() + // fclose(fp);*/ + //} + //void DumpProfessionsToDisk(){ ++// #ifdef DFHACK_STATEDIR ++// FILE* fp = fopen(DFHACK_STATEDIR "/dump.txt", "w"); ++// #else + // FILE* fp = fopen("dump.txt", "w"); ++// #endif + // if(!fp) return; + // string proffStr; + // for(int j=0; (proffStr = contentLoader->professionStrings[j]) != "" ; j++){ +@@ -248,16 +256,28 @@ void DumpInfo(color_ostream & out, std::vector<std::string> & params) + string & p1 = params[0]; + if(p1 == "dumpitems") { + out.print("dumping equippable item names to 'itemdump.txt'...\n"); ++ #ifdef DFHACK_STATEDIR ++ DumpItemNamesToDisk(DFHACK_STATEDIR "/itemdump.txt"); ++ #else + DumpItemNamesToDisk("itemdump.txt"); ++ #endif + out.print("...done\n"); + } else if(p1 == "dumptiles") { + out.print("dumping equippable item names to 'tiledump.txt'...\n"); ++ #ifdef DFHACK_STATEDIR ++ DumpTileTypes(DFHACK_STATEDIR "/tiledump.txt"); ++ #else + DumpTileTypes("tiledump.txt"); ++ #endif + out.print("...done\n"); + } else if(p1 == "genterrain") { + if(params.size() > 1) { + out.print("generating 'terrain.xml'...\n"); ++ #ifdef DFHACK_STATEDIR ++ GenerateTerrainXml(DFHACK_STATEDIR "/terrain.xml", params[1], GetBasicShape(params[1])); ++ #else + GenerateTerrainXml("terrain.xml", params[1], GetBasicShape(params[1])); ++ #endif + out.print("...done\n"); + } else { + out.printerr("invalid argument\n"); +@@ -266,4 +286,4 @@ void DumpInfo(color_ostream & out, std::vector<std::string> & params) + out.printerr("invalid argument\n"); + } + +-} +\ No newline at end of file ++} +diff --git a/GroundMaterialConfiguration.cpp b/GroundMaterialConfiguration.cpp +index 8b9a0d9..acd3e10 100644 +--- a/GroundMaterialConfiguration.cpp ++++ b/GroundMaterialConfiguration.cpp +@@ -40,7 +40,11 @@ TerrainConfiguration::~TerrainConfiguration() +
+ void DumpInorganicMaterialNamesToDisk()
+ {
++ #ifdef DFHACK_STATEDIR
++ FILE* fp = fopen(DFHACK_STATEDIR "/dump.txt", "w");
++ #else
+ FILE* fp = fopen("dump.txt", "w");
++ #endif
+ if(!fp) {
+ return;
+ }
diff --git a/games-util/dfhack/files/stonesense-9999/08-compile-time-configurable.patch b/games-util/dfhack/files/stonesense-9999/08-compile-time-configurable.patch new file mode 100644 index 00000000..ff7f80ed --- /dev/null +++ b/games-util/dfhack/files/stonesense-9999/08-compile-time-configurable.patch @@ -0,0 +1,25 @@ +compile time configurable benchmark location + +From: eroen <eroen@occam.eroen.eu> + + +--- + main.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/main.cpp b/main.cpp +index 54a45e8..def4fe4 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -200,7 +200,11 @@ void benchmark() + reloadDisplayedSegment(); + } + ++ #ifdef DFHACK_STATEDIR ++ FILE* fp = fopen(DFHACK_STATEDIR "/benchmark.txt", "w" ); ++ #else + FILE* fp = fopen("benchmark.txt", "w" ); ++ #endif + if(!fp) { + return; + } diff --git a/games-util/dfhack/files/stonesense-9999/series b/games-util/dfhack/files/stonesense-9999/series new file mode 100644 index 00000000..a0285561 --- /dev/null +++ b/games-util/dfhack/files/stonesense-9999/series @@ -0,0 +1,9 @@ +# This series applies on GIT commit 0d41614ff3dae9245e786ad667b0e463fe0dea3e +01-null-isn-t-an-int32.patch +02-configurable-install-paths.patch +03-don-t-segfault-if-logfile-is.patch +04-compile-time-configuration-of.patch +05-compile-time-configurable-log.patch +06-fix-b0rked-xml-file.patch +07-compile-time-configurable-dump.patch +08-compile-time-configurable.patch |
