diff options
| author | eroen | 2013-06-17 02:49:50 +0200 |
|---|---|---|
| committer | eroen | 2013-06-17 02:49:50 +0200 |
| commit | 38151a937b22b93e0b8d8876bada3365d113a4dc (patch) | |
| tree | 3624184abaf66bbcec7e93debecc402688a28a6b /games-util | |
| parent | 04a6bb8f0fa9428bd0f0a4023b3e9202b570fdb3 (diff) | |
| download | eroen-overlay-38151a937b22b93e0b8d8876bada3365d113a4dc.tar.gz eroen-overlay-38151a937b22b93e0b8d8876bada3365d113a4dc.tar.bz2 eroen-overlay-38151a937b22b93e0b8d8876bada3365d113a4dc.tar.xz | |
dfhack-9999 - working egg
Diffstat (limited to 'games-util')
| -rw-r--r-- | games-util/dfhack/Manifest | 7 | ||||
| -rw-r--r-- | games-util/dfhack/dfhack-9999.ebuild | 20 | ||||
| -rw-r--r-- | games-util/dfhack/files/dfhack-9999/07-startup-scripts-configurable.patch | 69 | ||||
| -rw-r--r-- | games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch | 525 | ||||
| -rw-r--r-- | games-util/dfhack/files/dfhack-9999/series | 1 |
5 files changed, 590 insertions, 32 deletions
diff --git a/games-util/dfhack/Manifest b/games-util/dfhack/Manifest index 3704a094..9a48ee0a 100644 --- a/games-util/dfhack/Manifest +++ b/games-util/dfhack/Manifest @@ -10,8 +10,9 @@ AUX dfhack-9999/03-configurable-install-paths.patch 3975 SHA256 bdfd0d8285089a51 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/07-startup-scripts-configurable.patch 8154 SHA256 b7669577715f3c3fe000b951bb9071359fe6bdf41e2ea56351a0fa3a76e10bc3 SHA512 1271050439a9dcea525fb9555d1c43e2e76c99544db9789dbea22cae217826391ff5e31f9d08029e777e121e8b658e67e9cbdeb6edbbbcf28cc54afe737903e6 WHIRLPOOL af71902548542259a4103a3c156e6bbbf85607226c2a7f5e0638f872bf55dd1304283460e59f17e3975574329b80b04dd252df2e7d00819f62a8b41d75656139 -AUX dfhack-9999/series 333 SHA256 9f6dc3e87b5fe9c19ee6e4c9a83ec99751975ebab26da58c1e8899bb8f31e304 SHA512 d1ba58776c80b86f847f6c2ddf11ab9002a8c15c978eb25f15f8a3807b70ebb182e5c75fcf92c06507365a53058e43f3b7841a60fc404b7cefd79a0e4079579b WHIRLPOOL de03a18cc24bcd54dde05efe202ddfb2955812283813808b0b9f8c713b5be5641869d51785d63f41d3cbb32caeaf48621740dded238be9d5f2d9add156caf668 +AUX dfhack-9999/07-startup-scripts-configurable.patch 9738 SHA256 a107a4693ed5c8f156c2dd9718c3c83b6c6802bd39d8a41fb15b604bdd2d7908 SHA512 c833b81a0bf7be6d15bc6149e43ae4bcd37bdbe42890ea73ebe950bef416732d9c807c9268031568e08c3f3de9130fc6759d32dd236c830abfa0c3dfddc0f73f WHIRLPOOL 58c7e9891f72819782be79eb9388bd7650a18df2816f4d75f4708fcbdc72d882b0aa18f30af0a91f052cc83f8bf972a6e6df6a64845dbf4521689ba95f8094e4 +AUX dfhack-9999/08-ruby-plugin-configurable-paths.patch 19636 SHA256 2a24c35f5e4b1cf060fd6f11a5ff4b438b1fafea6a7ece9b5e0f018d1dfcad46 SHA512 00130cc96695e40e47763e858dd73b739d083808b7f0bb1a097a8120c0b7c8d10306a3da0700aa42b69422a32b7814d40290228f26da4e486c5cbb507bdf139d WHIRLPOOL 80aaf69a4c4139096c120f837bcf25a37076269f0f0d3a6ae272fd95124a59c163595827ddb22361f37b79f15d0a3853601dd2c3fdc9682826679aea9fdf3098 +AUX dfhack-9999/series 373 SHA256 db1b6ef38578430ecc658c8477299e59ce0124ed1e1c65690b2c3b4ac2e807c4 SHA512 a4940fa27bb9346534d2f4e242415593d7dfb5e0bb3fa84d1ebeca38860ae8c29e010b06a3eadba6de4ca27df46030e78daaec9c46b7584f3ea2ecd14a9fee62 WHIRLPOOL abf5987a2f98f34bc4a75f2cecde356f1e30c164775bc35d350d6c601f10db3d36fe27fecc270ec0a7daf2062e1951a03476aa554bc614b55734e5d188f80ea7 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 @@ -26,5 +27,5 @@ AUX stonesense/0002-compile-time-configuration-of-magic-cwd.patch 7753 SHA256 79 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 8268 SHA256 018bd1b3964b30cf1aee98dba465ad39d4d39097b3591b3ed310d51b08522a15 SHA512 ac7de2e601562232b57a98907ce512babd4ba5b736d20b21dee47f1fef0bf5f3bca58fde02cf77b42144d7a4eb347482f56a116fa833bf6f85e7d4f3abc87022 WHIRLPOOL a9be423a7aada29d1eed6cde7b5b9f8c1906bf784a1180e39d5113f88d936ddc536952f7fec7f625f6889081d9316e0c9dc143ca26cf3f651fbd1a2c1a61b4c9 +EBUILD dfhack-9999.ebuild 8033 SHA256 7415763c5817ab1d866bfe98a2fc2ec1a4bcc24f85b711331336a97599d9ff78 SHA512 5225221a30b3f33cc83c38c0563b2b3cdd9bc3a246d0b95c66d70027bdaa04ab37b736dd59fb7d4148710796fdfbe245355c9bbf8be0571a926add0b840f9a58 WHIRLPOOL 493f98a0493630381b09b8dfd48ce4b08a5f81d129ad7a9b34e44f52dad7c040f72f66c81f11e0d364ae749b61cb18b487c705ff038fc61f10fbfcab480e1c65 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 46db9316..41e47446 100644 --- a/games-util/dfhack/dfhack-9999.ebuild +++ b/games-util/dfhack/dfhack-9999.ebuild @@ -23,6 +23,7 @@ if [[ ! ${PV} == "9999" ]]; then EGIT_COMMIT="${MY_PV}" fi +CMAKE_MIN_VERSION=2.8.9 CMAKE_REMOVE_MODULES_LIST="FindCurses FindDoxygen CMakeVS10FindMake" LICENSE="ZLIB MIT BSD-2" @@ -52,6 +53,8 @@ RDEPEND="${LIBRARY_DEPEND} ssense? ( app-emulation/emul-linux-x86-opengl app-emulation/emul-linux-x86-xlibs )" +QA_PREBUILT+="${dfhack_libdir}"/libruby.so + ## missing multilib #dev-lang/lua - binary bundled #dev-libs/protobuf - bundled @@ -83,8 +86,7 @@ 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)" + dfhack_libdir="$(games_get_libdir)/${P}" fi pkg_setup() { @@ -102,6 +104,7 @@ src_prepare() { epatch "${FILESDIR}"/${P}/05-compile-time-configurable-0.patch epatch "${FILESDIR}"/${P}/06-compile-time-configurable-1.patch epatch "${FILESDIR}"/${P}/07-startup-scripts-configurable.patch + epatch "${FILESDIR}"/${P}/08-ruby-plugin-configurable-paths.patch pushd "${S}"/depends/clsocket epatch "${FILESDIR}"/clsocket/0001-Compile-static-library-as-PIC.patch @@ -123,9 +126,6 @@ src_prepare() { fi # 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/: @@ -134,15 +134,7 @@ src_prepare() { # 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: - # - libdir should be hidden - # - egg # - df version # - dfusion is strange. It's always been that, though. # - prebuilt ruby @@ -209,8 +201,6 @@ src_compile() { cmake-utils_src_compile } -QA_PREBUILT+="${dfhack_libdir}"/libruby.so - src_install() { cmake-utils_src_install mv "${D}/${GAMES_BINDIR}/dfhack" \ diff --git a/games-util/dfhack/files/dfhack-9999/07-startup-scripts-configurable.patch b/games-util/dfhack/files/dfhack-9999/07-startup-scripts-configurable.patch index 73fb4c54..28fbf71f 100644 --- a/games-util/dfhack/files/dfhack-9999/07-startup-scripts-configurable.patch +++ b/games-util/dfhack/files/dfhack-9999/07-startup-scripts-configurable.patch @@ -5,16 +5,20 @@ From: eroen <eroen@occam.eroen.eu> --- CMakeLists.txt | 3 ++ - library/CMakeLists.txt | 6 +++ + library/CMakeLists.txt | 13 +++++++ package/linux/dfhack | 79 ------------------------------------------- package/linux/dfhack-run | 8 ---- package/linux/dfhack-run.in | 8 ++++ package/linux/dfhack.in | 79 +++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 96 insertions(+), 87 deletions(-) + package/linux/egghack | 7 ---- + package/linux/egghack.in | 7 ++++ + 8 files changed, 110 insertions(+), 94 deletions(-) delete mode 100755 package/linux/dfhack delete mode 100755 package/linux/dfhack-run create mode 100755 package/linux/dfhack-run.in create mode 100755 package/linux/dfhack.in + delete mode 100755 package/linux/egghack + create mode 100755 package/linux/egghack.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 73a4ac1..031a2cd 100644 @@ -31,10 +35,10 @@ index 73a4ac1..031a2cd 100644 # the dfhack libraries will be installed here: IF(UNIX) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt -index 18635ed..6979f0a 100644 +index 18635ed..11a17ff 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt -@@ -301,6 +301,12 @@ IF(UNIX) +@@ -301,10 +301,23 @@ IF(UNIX) DESTINATION .) else() # On linux, copy our version of the df launch script which sets LD_PRELOAD @@ -44,9 +48,20 @@ index 18635ed..6979f0a 100644 + configure_file(${dfhack_SOURCE_DIR}/package/linux/dfhack-run.in + ${dfhack_SOURCE_DIR}/package/linux/dfhack-run + @ONLY) ++ configure_file(${dfhack_SOURCE_DIR}/package/linux/egghack.in ++ ${dfhack_SOURCE_DIR}/package/linux/egghack ++ @ONLY) install(PROGRAMS ${dfhack_SOURCE_DIR}/package/linux/dfhack DESTINATION ${DFHACK_BINARY_DESTINATION}) install(PROGRAMS ${dfhack_SOURCE_DIR}/package/linux/dfhack-run + DESTINATION ${DFHACK_BINARY_DESTINATION}) ++ if(BUILD_EGGY) ++ install(PROGRAMS ${dfhack_SOURCE_DIR}/package/linux/egghack ++ DESTINATION ${DFHACK_BINARY_DESTINATION}) ++ endif() + endif() + ELSE() + if(NOT BUILD_EGGY) diff --git a/package/linux/dfhack b/package/linux/dfhack deleted file mode 100755 index 5ddd2a1..0000000 @@ -148,7 +163,7 @@ index 55001cf..0000000 -exec hack/dfhack-run "$@" diff --git a/package/linux/dfhack-run.in b/package/linux/dfhack-run.in new file mode 100755 -index 0000000..8dc3ea7 +index 0000000..f013053 --- /dev/null +++ b/package/linux/dfhack-run.in @@ -0,0 +1,8 @@ @@ -157,12 +172,12 @@ index 0000000..8dc3ea7 +DF_DIR=$(dirname "$0") +cd "${DF_DIR}" + -+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@DFHACK_LIBRARY_DESTINATION@"/libs:"@DFHACK_LIBRARY_DESTINATION@" ++export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":"@DFHACK_LIBRARY_DESTINATION@"/libs:"@DFHACK_LIBRARY_DESTINATION@" + -+exec "@DFHACK_LIBRARY_DESTINATION@"/dfhack-run "$@" ++exec "@DFHACK_LIBRARY_DESTINATION@"/dfhack-run "${@}" diff --git a/package/linux/dfhack.in b/package/linux/dfhack.in new file mode 100755 -index 0000000..7b32e1a +index 0000000..a969708 --- /dev/null +++ b/package/linux/dfhack.in @@ -0,0 +1,79 @@ @@ -204,34 +219,34 @@ index 0000000..7b32e1a + +# Now run + -+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@DFHACK_LIBRARY_DESTINATION@"/libs:"@DFHACK_LIBRARY_DESTINATION@" ++export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":"@DFHACK_LIBRARY_DESTINATION@"/libs:"@DFHACK_LIBRARY_DESTINATION@" + +case "$1" in + -g | --gdb) + shift + echo "set environment LD_PRELOAD=@DFHACK_LIBRARY_DESTINATION@/libdfhack.so" > gdbcmd.tmp + echo "set environment MALLOC_PERTURB_=45" >> gdbcmd.tmp -+ gdb $DF_GDB_OPTS -x gdbcmd.tmp "@DF_EXECUTABLE@" "$@" ++ gdb ${DF_GDB_OPTS} -x gdbcmd.tmp "@DF_EXECUTABLE@" "${@}" + rm gdbcmd.tmp + ret=$? + ;; + -h | --helgrind) + shift -+ LD_PRELOAD="@DFHACK_LIBRARY_DESTINATION@"/libdfhack.so setarch i386 -R valgrind $DF_HELGRIND_OPTS --tool=helgrind --log-file=helgrind.log "@DF_EXECUTABLE@" "$@" ++ LD_PRELOAD="@DFHACK_LIBRARY_DESTINATION@"/libdfhack.so setarch i386 -R valgrind ${DF_HELGRIND_OPTS} --tool=helgrind --log-file=helgrind.log "@DF_EXECUTABLE@" "${@}" + ret=$? + ;; + -v | --valgrind) + shift -+ LD_PRELOAD="@DFHACK_LIBRARY_DESTINATION@"/libdfhack.so setarch i386 -R valgrind $DF_VALGRIND_OPTS --log-file=valgrind.log "@DF_EXECUTABLE@" "$@" ++ LD_PRELOAD="@DFHACK_LIBRARY_DESTINATION@"/libdfhack.so setarch i386 -R valgrind ${DF_VALGRIND_OPTS} --log-file=valgrind.log "@DF_EXECUTABLE@" "${@}" + ret=$? + ;; + -c | --callgrind) + shift -+ LD_PRELOAD="@DFHACK_LIBRARY_DESTINATION@"/libdfhack.so setarch i386 -R valgrind $DF_CALLGRIND_OPTS --tool=callgrind --separate-threads=yes --dump-instr=yes --instr-atstart=no --log-file=callgrind.log "@DF_EXECUTABLE@" "$@" ++ LD_PRELOAD="@DFHACK_LIBRARY_DESTINATION@"/libdfhack.so setarch i386 -R valgrind ${DF_CALLGRIND_OPTS} --tool=callgrind --separate-threads=yes --dump-instr=yes --instr-atstart=no --log-file=callgrind.log "@DF_EXECUTABLE@" "${@}" + ret=$? + ;; + *) -+ setarch i386 -R env LD_PRELOAD="@DFHACK_LIBRARY_DESTINATION@"/libdfhack.so "@DF_EXECUTABLE@" "$@" ++ setarch i386 -R env LD_PRELOAD="@DFHACK_LIBRARY_DESTINATION@"/libdfhack.so "@DF_EXECUTABLE@" "${@}" + ret=$? + ;; +esac @@ -245,3 +260,29 @@ index 0000000..7b32e1a +fi + +exit $ret +diff --git a/package/linux/egghack b/package/linux/egghack +deleted file mode 100755 +index 5b3b03b..0000000 +--- a/package/linux/egghack ++++ /dev/null +@@ -1,7 +0,0 @@ +-#!/bin/sh +-DF_DIR=$(dirname "$0") +-cd "${DF_DIR}" +-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"./hack/libs":"./hack" +-export SDL_DISABLE_LOCK_KEYS=1 # Work around for bug in Debian/Ubuntu SDL patch. +-#export SDL_VIDEO_CENTERED=1 # Centre the screen. Messes up resizing. +-./libs/Dwarf_Fortress $* # Go, go, go! :) +diff --git a/package/linux/egghack.in b/package/linux/egghack.in +new file mode 100755 +index 0000000..4bf4c9d +--- /dev/null ++++ b/package/linux/egghack.in +@@ -0,0 +1,7 @@ ++#!/bin/sh ++DF_DIR=$(dirname "$0") ++cd "${DF_DIR}" ++export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":"@DFHACK_LIBRARY_DESTINATION@"/libs:"@DFHACK_LIBRARY_DESTINATION@" ++export SDL_DISABLE_LOCK_KEYS=1 # Work around for bug in Debian/Ubuntu SDL patch. ++#export SDL_VIDEO_CENTERED=1 # Centre the screen. Messes up resizing. ++"@DF_EXECUTABLE@" ${*} # Go, go, go! :) diff --git a/games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch b/games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch new file mode 100644 index 00000000..47531337 --- /dev/null +++ b/games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch @@ -0,0 +1,525 @@ +ruby plugin - configurable paths + +From: eroen <eroen@occam.eroen.eu> + + +--- + plugins/ruby/CMakeLists.txt | 4 + + plugins/ruby/ruby.rb | 239 ------------------------------------------- + plugins/ruby/ruby.rb.in | 239 +++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 243 insertions(+), 239 deletions(-) + delete mode 100644 plugins/ruby/ruby.rb + create mode 100644 plugins/ruby/ruby.rb.in + +diff --git a/plugins/ruby/CMakeLists.txt b/plugins/ruby/CMakeLists.txt +index e6d3eff..b282751 100644 +--- a/plugins/ruby/CMakeLists.txt ++++ b/plugins/ruby/CMakeLists.txt +@@ -27,6 +27,8 @@ ADD_CUSTOM_COMMAND( + ) + ADD_CUSTOM_TARGET(ruby-autogen-rb DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ruby-autogen.rb) + ++CONFIGURE_FILE(ruby.rb.in ruby.rb @ONLY) ++ + INCLUDE_DIRECTORIES("${dfhack_SOURCE_DIR}/depends/tthread") + + DFHACK_PLUGIN(ruby ruby.cpp LINK_LIBRARIES dfhack-tinythread) +@@ -34,6 +36,8 @@ ADD_DEPENDENCIES(ruby ruby-autogen-rb) + + INSTALL(FILES ${RUBYLIB} DESTINATION ${DFHACK_LIBRARY_DESTINATION}) + ++INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ruby.rb DESTINATION ${DFHACK_RUBY_DESTINATION}) ++ + INSTALL(DIRECTORY . + DESTINATION ${DFHACK_RUBY_DESTINATION} + FILES_MATCHING PATTERN "*.rb") +diff --git a/plugins/ruby/ruby.rb b/plugins/ruby/ruby.rb +deleted file mode 100644 +index 47924dc..0000000 +--- a/plugins/ruby/ruby.rb ++++ /dev/null +@@ -1,239 +0,0 @@ +-# redefine standard i/o methods to use the dfhack console +-module Kernel +- def puts(*a) +- a.flatten.each { |l| +- DFHack.print_str(l.to_s.chomp + "\n") +- } +- nil +- end +- +- def puts_err(*a) +- a.flatten.each { |l| +- DFHack.print_err(l.to_s.chomp + "\n") +- } +- nil +- end +- +- def p(*a) +- a.each { |e| +- puts_err e.inspect +- } +- nil +- end +-end +- +-module DFHack +- VERSION = version +- +- class OnupdateCallback +- attr_accessor :callback, :timelimit, :minyear, :minyeartick, :description +- def initialize(descr, cb, tl, initdelay=0) +- @description = descr +- @callback = cb +- @ticklimit = tl +- @minyear = (tl ? df.cur_year : 0) +- @minyeartick = (tl ? df.cur_year_tick+initdelay : 0) +- end +- +- # run callback if timedout +- def check_run(year, yeartick, yearlen) +- if @ticklimit +- return unless year > @minyear or (year == @minyear and yeartick >= @minyeartick) +- @minyear = year +- @minyeartick = yeartick + @ticklimit +- if @minyeartick > yearlen +- @minyear += 1 +- @minyeartick -= yearlen +- end +- end +- # t0 = Time.now +- @callback.call +- # dt = Time.now - t0 ; puts "rb cb #@description took #{'%.02f' % dt}s" if dt > 0.1 +- rescue Exception +- df.onupdate_unregister self +- puts_err "onupdate #@description unregistered: #$!", $!.backtrace +- end +- +- def <=>(o) +- [@minyear, @minyeartick] <=> [o.minyear, o.minyeartick] +- end +- end +- +- class << self +- attr_accessor :onupdate_list, :onstatechange_list +- +- # register a callback to be called every gframe or more +- # ex: DFHack.onupdate_register('fastdwarf') { DFHack.world.units[0].counters.job_counter = 0 } +- # if ticklimit is given, do not call unless this much game ticks have passed. Handles advmode time stretching. +- def onupdate_register(descr, ticklimit=nil, initialtickdelay=0, &b) +- raise ArgumentError, 'need a description as 1st arg' unless descr.kind_of?(::String) +- @onupdate_list ||= [] +- @onupdate_list << OnupdateCallback.new(descr, b, ticklimit, initialtickdelay) +- DFHack.onupdate_active = true +- if onext = @onupdate_list.sort.first +- DFHack.onupdate_minyear = onext.minyear +- DFHack.onupdate_minyeartick = onext.minyeartick +- end +- @onupdate_list.last +- end +- +- # delete the callback for onupdate ; use the value returned by onupdate_register or the description +- def onupdate_unregister(b) +- b = @onupdate_list.find { |bb| bb.description == b } if b.kind_of?(String) +- @onupdate_list.delete b +- if @onupdate_list.empty? +- DFHack.onupdate_active = false +- DFHack.onupdate_minyear = DFHack.onupdate_minyeartick = DFHack.onupdate_minyeartickadv = -1 +- end +- end +- +- # same as onupdate_register, but remove the callback once it returns true +- def onupdate_register_once(*a) +- handle = onupdate_register(*a) { +- onupdate_unregister(handle) if yield +- } +- end +- +- TICKS_PER_YEAR = 1200*28*12 +- # this method is called by ruby.cpp if df.onupdate_active is true +- def onupdate +- @onupdate_list ||= [] +- +- y = cur_year +- ytmax = TICKS_PER_YEAR +- if df.gamemode == :ADVENTURE and df.respond_to?(:cur_year_tick_advmode) +- yt = cur_year_tick_advmode +- ytmax *= 144 +- else +- yt = cur_year_tick +- end +- +- @onupdate_list.each { |o| +- o.check_run(y, yt, ytmax) +- } +- +- if onext = @onupdate_list.sort.first +- DFHack.onupdate_minyear = onext.minyear +- if ytmax > TICKS_PER_YEAR +- DFHack.onupdate_minyeartick = -1 +- DFHack.onupdate_minyeartickadv = onext.minyeartick +- else +- DFHack.onupdate_minyeartick = onext.minyeartick +- DFHack.onupdate_minyeartickadv = -1 +- end +- end +- end +- +- # register a callback to be called every gframe or more +- # ex: DFHack.onstatechange_register { |newstate| puts "state changed to #{newstate}" } +- def onstatechange_register(&b) +- @onstatechange_list ||= [] +- @onstatechange_list << b +- @onstatechange_list.last +- end +- +- # delete the callback for onstatechange ; use the value returned by onstatechange_register +- def onstatechange_unregister(b) +- @onstatechange_list.delete b +- end +- +- # same as onstatechange_register, but auto-unregisters if the block returns true +- def onstatechange_register_once +- handle = onstatechange_register { |st| +- onstatechange_unregister(handle) if yield(st) +- } +- end +- +- +- # this method is called by dfhack every 'onstatechange' +- def onstatechange(newstate) +- @onstatechange_list ||= [] +- @onstatechange_list.each { |cb| cb.call(newstate) } +- end +- +- # return true if the argument is under the cursor +- def at_cursor?(obj) +- same_pos?(obj, cursor) +- end +- +- # returns true if both arguments are at the same x/y/z +- def same_pos?(pos1, pos2) +- pos1 = pos1.pos if pos1.respond_to?(:pos) +- pos2 = pos2.pos if pos2.respond_to?(:pos) +- pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z +- end +- +- # try to match a user-specified name to one from the raws +- # uses case-switching and substring matching +- # eg match_rawname('coal', ['COAL_BITUMINOUS', 'BAUXITE']) => 'COAL_BITUMINOUS' +- def match_rawname(name, rawlist) +- rawlist.each { |r| return r if name == r } +- rawlist.each { |r| return r if name.downcase == r.downcase } +- may = rawlist.find_all { |r| r.downcase.index(name.downcase) } +- may.first if may.length == 1 +- end +- +- def translate_name(name, english=true, onlylastpart=false) +- out = [] +- +- if not onlylastpart +- out << name.first_name if name.first_name != '' +- if name.nickname != '' +- case respond_to?(:d_init) && d_init.nickname_dwarf +- when :REPLACE_ALL; return "`#{name.nickname}'" +- when :REPLACE_FIRST; out.pop +- end +- out << "`#{name.nickname}'" +- end +- end +- return out.join(' ') unless name.words.find { |w| w >= 0 } +- +- if not english +- tsl = world.raws.language.translations[name.language] +- if name.words[0] >= 0 or name.words[1] >= 0 +- out << '' +- out.last << tsl.words[name.words[0]] if name.words[0] >= 0 +- out.last << tsl.words[name.words[1]] if name.words[1] >= 0 +- end +- if name.words[5] >= 0 +- out << '' +- (2..5).each { |i| out.last << tsl.words[name.words[i]] if name.words[i] >= 0 } +- end +- if name.words[6] >= 0 +- out << tsl.words[name.words[6]] +- end +- else +- wl = world.raws.language +- if name.words[0] >= 0 or name.words[1] >= 0 +- out << '' +- out.last << wl.words[name.words[0]].forms[name.parts_of_speech[0]] if name.words[0] >= 0 +- out.last << wl.words[name.words[1]].forms[name.parts_of_speech[1]] if name.words[1] >= 0 +- end +- if name.words[5] >= 0 +- out << 'the ' +- out.last.capitalize! if out.length == 1 +- (2..5).each { |i| out.last << wl.words[name.words[i]].forms[name.parts_of_speech[i]] if name.words[i] >= 0 } +- end +- if name.words[6] >= 0 +- out << 'of' +- out.last.capitalize! if out.length == 1 +- out << wl.words[name.words[6]].forms[name.parts_of_speech[6]] +- end +- end +- +- out.join(' ') +- end +- end +-end +- +-# global alias so we can write 'df.world.units.all[0]' +-def df +- DFHack +-end +- +-# load autogenned file +-require './hack/ruby/ruby-autogen-defs' +-require './hack/ruby/ruby-autogen' +- +-# load all modules +-Dir['./hack/ruby/*.rb'].each { |m| require m.chomp('.rb') } +diff --git a/plugins/ruby/ruby.rb.in b/plugins/ruby/ruby.rb.in +new file mode 100644 +index 0000000..2ae169c +--- /dev/null ++++ b/plugins/ruby/ruby.rb.in +@@ -0,0 +1,239 @@ ++# redefine standard i/o methods to use the dfhack console ++module Kernel ++ def puts(*a) ++ a.flatten.each { |l| ++ DFHack.print_str(l.to_s.chomp + "\n") ++ } ++ nil ++ end ++ ++ def puts_err(*a) ++ a.flatten.each { |l| ++ DFHack.print_err(l.to_s.chomp + "\n") ++ } ++ nil ++ end ++ ++ def p(*a) ++ a.each { |e| ++ puts_err e.inspect ++ } ++ nil ++ end ++end ++ ++module DFHack ++ VERSION = version ++ ++ class OnupdateCallback ++ attr_accessor :callback, :timelimit, :minyear, :minyeartick, :description ++ def initialize(descr, cb, tl, initdelay=0) ++ @description = descr ++ @callback = cb ++ @ticklimit = tl ++ @minyear = (tl ? df.cur_year : 0) ++ @minyeartick = (tl ? df.cur_year_tick+initdelay : 0) ++ end ++ ++ # run callback if timedout ++ def check_run(year, yeartick, yearlen) ++ if @ticklimit ++ return unless year > @minyear or (year == @minyear and yeartick >= @minyeartick) ++ @minyear = year ++ @minyeartick = yeartick + @ticklimit ++ if @minyeartick > yearlen ++ @minyear += 1 ++ @minyeartick -= yearlen ++ end ++ end ++ # t0 = Time.now ++ @callback.call ++ # dt = Time.now - t0 ; puts "rb cb #@description took #{'%.02f' % dt}s" if dt > 0.1 ++ rescue Exception ++ df.onupdate_unregister self ++ puts_err "onupdate #@description unregistered: #$!", $!.backtrace ++ end ++ ++ def <=>(o) ++ [@minyear, @minyeartick] <=> [o.minyear, o.minyeartick] ++ end ++ end ++ ++ class << self ++ attr_accessor :onupdate_list, :onstatechange_list ++ ++ # register a callback to be called every gframe or more ++ # ex: DFHack.onupdate_register('fastdwarf') { DFHack.world.units[0].counters.job_counter = 0 } ++ # if ticklimit is given, do not call unless this much game ticks have passed. Handles advmode time stretching. ++ def onupdate_register(descr, ticklimit=nil, initialtickdelay=0, &b) ++ raise ArgumentError, 'need a description as 1st arg' unless descr.kind_of?(::String) ++ @onupdate_list ||= [] ++ @onupdate_list << OnupdateCallback.new(descr, b, ticklimit, initialtickdelay) ++ DFHack.onupdate_active = true ++ if onext = @onupdate_list.sort.first ++ DFHack.onupdate_minyear = onext.minyear ++ DFHack.onupdate_minyeartick = onext.minyeartick ++ end ++ @onupdate_list.last ++ end ++ ++ # delete the callback for onupdate ; use the value returned by onupdate_register or the description ++ def onupdate_unregister(b) ++ b = @onupdate_list.find { |bb| bb.description == b } if b.kind_of?(String) ++ @onupdate_list.delete b ++ if @onupdate_list.empty? ++ DFHack.onupdate_active = false ++ DFHack.onupdate_minyear = DFHack.onupdate_minyeartick = DFHack.onupdate_minyeartickadv = -1 ++ end ++ end ++ ++ # same as onupdate_register, but remove the callback once it returns true ++ def onupdate_register_once(*a) ++ handle = onupdate_register(*a) { ++ onupdate_unregister(handle) if yield ++ } ++ end ++ ++ TICKS_PER_YEAR = 1200*28*12 ++ # this method is called by ruby.cpp if df.onupdate_active is true ++ def onupdate ++ @onupdate_list ||= [] ++ ++ y = cur_year ++ ytmax = TICKS_PER_YEAR ++ if df.gamemode == :ADVENTURE and df.respond_to?(:cur_year_tick_advmode) ++ yt = cur_year_tick_advmode ++ ytmax *= 144 ++ else ++ yt = cur_year_tick ++ end ++ ++ @onupdate_list.each { |o| ++ o.check_run(y, yt, ytmax) ++ } ++ ++ if onext = @onupdate_list.sort.first ++ DFHack.onupdate_minyear = onext.minyear ++ if ytmax > TICKS_PER_YEAR ++ DFHack.onupdate_minyeartick = -1 ++ DFHack.onupdate_minyeartickadv = onext.minyeartick ++ else ++ DFHack.onupdate_minyeartick = onext.minyeartick ++ DFHack.onupdate_minyeartickadv = -1 ++ end ++ end ++ end ++ ++ # register a callback to be called every gframe or more ++ # ex: DFHack.onstatechange_register { |newstate| puts "state changed to #{newstate}" } ++ def onstatechange_register(&b) ++ @onstatechange_list ||= [] ++ @onstatechange_list << b ++ @onstatechange_list.last ++ end ++ ++ # delete the callback for onstatechange ; use the value returned by onstatechange_register ++ def onstatechange_unregister(b) ++ @onstatechange_list.delete b ++ end ++ ++ # same as onstatechange_register, but auto-unregisters if the block returns true ++ def onstatechange_register_once ++ handle = onstatechange_register { |st| ++ onstatechange_unregister(handle) if yield(st) ++ } ++ end ++ ++ ++ # this method is called by dfhack every 'onstatechange' ++ def onstatechange(newstate) ++ @onstatechange_list ||= [] ++ @onstatechange_list.each { |cb| cb.call(newstate) } ++ end ++ ++ # return true if the argument is under the cursor ++ def at_cursor?(obj) ++ same_pos?(obj, cursor) ++ end ++ ++ # returns true if both arguments are at the same x/y/z ++ def same_pos?(pos1, pos2) ++ pos1 = pos1.pos if pos1.respond_to?(:pos) ++ pos2 = pos2.pos if pos2.respond_to?(:pos) ++ pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z ++ end ++ ++ # try to match a user-specified name to one from the raws ++ # uses case-switching and substring matching ++ # eg match_rawname('coal', ['COAL_BITUMINOUS', 'BAUXITE']) => 'COAL_BITUMINOUS' ++ def match_rawname(name, rawlist) ++ rawlist.each { |r| return r if name == r } ++ rawlist.each { |r| return r if name.downcase == r.downcase } ++ may = rawlist.find_all { |r| r.downcase.index(name.downcase) } ++ may.first if may.length == 1 ++ end ++ ++ def translate_name(name, english=true, onlylastpart=false) ++ out = [] ++ ++ if not onlylastpart ++ out << name.first_name if name.first_name != '' ++ if name.nickname != '' ++ case respond_to?(:d_init) && d_init.nickname_dwarf ++ when :REPLACE_ALL; return "`#{name.nickname}'" ++ when :REPLACE_FIRST; out.pop ++ end ++ out << "`#{name.nickname}'" ++ end ++ end ++ return out.join(' ') unless name.words.find { |w| w >= 0 } ++ ++ if not english ++ tsl = world.raws.language.translations[name.language] ++ if name.words[0] >= 0 or name.words[1] >= 0 ++ out << '' ++ out.last << tsl.words[name.words[0]] if name.words[0] >= 0 ++ out.last << tsl.words[name.words[1]] if name.words[1] >= 0 ++ end ++ if name.words[5] >= 0 ++ out << '' ++ (2..5).each { |i| out.last << tsl.words[name.words[i]] if name.words[i] >= 0 } ++ end ++ if name.words[6] >= 0 ++ out << tsl.words[name.words[6]] ++ end ++ else ++ wl = world.raws.language ++ if name.words[0] >= 0 or name.words[1] >= 0 ++ out << '' ++ out.last << wl.words[name.words[0]].forms[name.parts_of_speech[0]] if name.words[0] >= 0 ++ out.last << wl.words[name.words[1]].forms[name.parts_of_speech[1]] if name.words[1] >= 0 ++ end ++ if name.words[5] >= 0 ++ out << 'the ' ++ out.last.capitalize! if out.length == 1 ++ (2..5).each { |i| out.last << wl.words[name.words[i]].forms[name.parts_of_speech[i]] if name.words[i] >= 0 } ++ end ++ if name.words[6] >= 0 ++ out << 'of' ++ out.last.capitalize! if out.length == 1 ++ out << wl.words[name.words[6]].forms[name.parts_of_speech[6]] ++ end ++ end ++ ++ out.join(' ') ++ end ++ end ++end ++ ++# global alias so we can write 'df.world.units.all[0]' ++def df ++ DFHack ++end ++ ++# load autogenned file ++require '@DFHACK_RUBY_DESTINATION@/ruby-autogen-defs' ++require '@DFHACK_RUBY_DESTINATION@/ruby-autogen' ++ ++# load all modules ++Dir['@DFHACK_RUBY_DESTINATION@/*.rb'].each { |m| require m.chomp('.rb') } diff --git a/games-util/dfhack/files/dfhack-9999/series b/games-util/dfhack/files/dfhack-9999/series index d1dc79d4..742a16d7 100644 --- a/games-util/dfhack/files/dfhack-9999/series +++ b/games-util/dfhack/files/dfhack-9999/series @@ -6,3 +6,4 @@ 05-compile-time-configurable-0.patch 06-compile-time-configurable-1.patch 07-startup-scripts-configurable.patch +08-ruby-plugin-configurable-paths.patch |
