summaryrefslogtreecommitdiff
path: root/games-util/dfhack/dfhack-0.42.04_alpha2.ebuild
diff options
context:
space:
mode:
Diffstat (limited to 'games-util/dfhack/dfhack-0.42.04_alpha2.ebuild')
-rw-r--r--games-util/dfhack/dfhack-0.42.04_alpha2.ebuild247
1 files changed, 247 insertions, 0 deletions
diff --git a/games-util/dfhack/dfhack-0.42.04_alpha2.ebuild b/games-util/dfhack/dfhack-0.42.04_alpha2.ebuild
new file mode 100644
index 00000000..7ef7e0c3
--- /dev/null
+++ b/games-util/dfhack/dfhack-0.42.04_alpha2.ebuild
@@ -0,0 +1,247 @@
+# By eroen, 2012-2016
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# $Header: $
+
+EAPI=5
+
+# games.eclass only used for compatibility with dwarffortress install paths
+inherit base games eutils multilib git-r3 cmake-utils
+
+my_PV="${PV/_/-}" # _alphaN -> -alphaN
+
+DESCRIPTION="Memory hacking library for Dwarf Fortress and a set of tools that use it"
+HOMEPAGE="http://github.com/DFHack/dfhack"
+EGIT_REPO_URI="git://github.com/DFHack/dfhack.git"
+#EGIT_BRANCH=
+EGIT_COMMIT=${my_PV}
+
+# There is no 32-bit ruby in gentoo yet
+SRC_URI="http://cloud.github.com/downloads/jjyg/dfhack/libruby187.tar.gz"
+
+KEYWORDS="-* ~amd64" # ~x86
+
+CMAKE_MIN_VERSION=2.8.9
+CMAKE_REMOVE_MODULES_LIST="FindCurses FindDoxygen CMakeVS10FindMake"
+
+LICENSE="ZLIB MIT BSD-2"
+SLOT=${PV%%_*} # drop _suffixN
+IUSE="api dfusion doc egg isoworld minimal stonesense"
+
+HDEPEND="
+ >=sys-devel/gcc-4.5[multilib]
+ dev-perl/XML-LibXML
+ dev-perl/XML-LibXSLT
+ doc? ( app-doc/doxygen )
+ "
+LIBRARY_DEPEND="
+ sys-libs/zlib[abi_x86_32]
+ stonesense? ( media-libs/fontconfig[abi_x86_32]
+ app-emulation/emul-linux-x86-baselibs[development]
+ 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}
+ stonesense? ( app-emulation/emul-linux-x86-opengl
+ app-emulation/emul-linux-x86-xlibs
+ )
+ "
+# Circular dependency when building egg.
+PDEPEND="games-simulation/dwarffortress:$SLOT"
+
+## missing multilib
+#dev-lang/lua - binary bundled
+#dev-libs/protobuf - bundled
+
+pkg_setup() {
+ multilib_toolchain_setup x86
+
+ df_executable="dwarffortress-${SLOT}"
+ dfhack_datadir="${GAMES_DATADIR}/${P}"
+ dfhack_docdir="/usr/share/doc/${P}"
+ dfhack_statedir="${GAMES_STATEDIR}/${P}"
+
+ dfhack_libdir="$GAMES_PREFIX_OPT/dwarffortress-${SLOT}/libs"
+
+ QA_FLAGS_IGNORED=("${dfhack_libdir#/}"/libruby.so)
+ QA_PRESTRIPPED=("${dfhack_libdir#/}"/libruby.so)
+ QA_SONAME_NO_SYMLINK=("${dfhack_libdir#/}"/libruby.so)
+}
+
+src_unpack() {
+ git-r3_src_unpack
+
+ # prebuilt 32-bit libruby:
+ unpack ${A}
+ mv "${WORKDIR}"/libruby1.8.so.1.8.7 "${WORKDIR}"/libruby.so || die
+}
+
+src_prepare() {
+ # rm -r patches-master-$(date -I)/
+ # stg export -n -d patches-master-$(date -I) -e patch
+ # rm /usr/local/portage/games-util/dfhack/files/dfhack-0.40.06.9999/*
+ # cp patches-master-$(date -I)/* /usr/local/portage/games-util/dfhack/files/dfhack-0.40.06.9999/
+ epatch "${FILESDIR}"/${P}/*.patch
+
+# pushd "${S}"/depends/clsocket
+# epatch "${FILESDIR}"/clsocket/0001-Compile-static-library-as-PIC.patch
+# popd
+
+ #if use stonesense; then
+ # 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
+ #if use isoworld; then
+ # pushd "${S}"/plugins/isoworld
+ # epatch "${FILESDIR}"/isoworld-${PV}/01-missing-include-dir.patch
+ # popd
+ # ewarn "The isoworld plugin requires agui, and will probably fail to build"
+ #fi
+
+ # Fix other scripts
+# 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
+
+ ##Issues:
+ # - dfusion is strange. It's always been that, though.
+ # - prebuilt ruby
+ # - bundled lua
+ # - isoworld requires agui
+ # - prebuilt allegro for stonesense.
+ # - stonesense conf file: /usr/share/games/dfhack-9999/stonesense/init.txt
+ # Set in ./Config.cpp, installed together with the rest of the directory.
+ # - output files
+ # - - Make symlinks to (unversioned) /var
+
+# Doesn't build:
+# sed -e '/autolabor2/d' \
+# -e '/rprobe/d' \
+# -i plugins/devel/CMakeLists.txt || die
+:
+}
+
+src_configure() {
+ # cmake -Wno-dev -LA .. | grep -v '^--' | sed -e 's/:\S*=/=/' -e 's/.*/"-D&"/'
+ mycmakeargs=(
+ #"-DBUILD_DEVEL=OFF"
+ "$(cmake-utils_use_build api DEVEL)"
+ #"-DBUILD_DEV_PLUGINS=OFF"
+ "$(cmake-utils_use_build !minimal DEV_PLUGINS)"
+ #"-DBUILD_DFUSION=ON"
+ "$(cmake-utils_use_build dfusion DFUSION)"
+ #"-DBUILD_DOXYGEN=OFF"
+ "$(cmake-utils_use_build doc DOXYGEN)"
+ #"-DBUILD_DWARFEXPORT=ON"
+ "$(cmake-utils_use_build !minimal DWARFEXPORT)"
+ #"-DBUILD_EGGY=OFF"
+ "$(cmake-utils_use_build egg EGGY)"
+ #"-DBUILD_ISOWORLD=OFF"
+ "$(cmake-utils_use_build isoworld ISOWORLD)"
+ "-DBUILD_LIBRARY=ON"
+ #"-DBUILD_MAPEXPORT=ON"
+ "$(cmake-utils_use_build !minimal MAPEXPORT)"
+ "-DBUILD_PLUGINS=ON"
+ "-DBUILD_RUBY=ON"
+ "-DBUILD_SKELETON=OFF"
+ #"-DBUILD_SUPPORTED=ON"
+ "$(cmake-utils_use_build !minimal SUPPORTED)"
+ #"-DCMAKE_INSTALL_PREFIX=/usr/local"
+ "-DCMAKE_INSTALL_PREFIX=${GAMES_DATADIR}"
+ "-DCONSOLE_NO_CATCH=OFF"
+ #"-DDFHACK_BINARY_DESTINATION=."
+ "-DDFHACK_BINARY_DESTINATION=/usr/bin"
+ #"-DDFHACK_DATA_DESTINATION=hack"
+ "-DDFHACK_DATA_DESTINATION=${dfhack_datadir}"
+ #"-DDFHACK_DEVDOC_DESTINATION=hack"
+ "-DDFHACK_DEVDOC_DESTINATION=${dfhack_docdir}/dev"
+ #"-DDFHACK_EGGY_DESTINATION=libs"
+ "-DDFHACK_EGGY_DESTINATION=${dfhack_libdir}"
+ #"-DDFHACK_INCLUDES_DESTINATION=hack/include"
+ "-DDFHACK_INCLUDES_DESTINATION=${GAMES_PREFIX}/include"
+ #"-DDFHACK_LIBRARY_DESTINATION=hack"
+ "-DDFHACK_LIBRARY_DESTINATION=${dfhack_libdir}"
+ #"-DDFHACK_LUA_DESTINATION=hack/lua"
+ "-DDFHACK_LUA_DESTINATION=${dfhack_datadir}/lua"
+ #"-DDFHACK_PLUGIN_DESTINATION=hack/plugins"
+ "-DDFHACK_PLUGIN_DESTINATION=${dfhack_datadir}/plugins"
+ #"-DDFHACK_RUBY_DESTINATION=hack/ruby"
+ "-DDFHACK_RUBY_DESTINATION=${dfhack_datadir}/ruby"
+ #"-DDFHACK_STATEDIR=."
+ "-DDFHACK_STATEDIR=${GAMES_STATEDIR}/${P}"
+ #"-DDFHACK_USERDOC_DESTINATION=hack"
+ "-DDFHACK_USERDOC_DESTINATION=${dfhack_docdir}"
+ #"-DDF_EXECUTABLE=./libs/Dwarf_Fortress"
+ "-DDF_EXECUTABLE=${df_executable}"
+ "-DDL_RUBY=OFF"
+ "-DRUBYLIB=${WORKDIR}/libruby.so"
+ "-DINSTALL_NEW_LIBSTDCXX=OFF"
+ )
+
+ cmake-utils_src_configure
+}
+
+DOCS=""
+src_install() {
+ cmake-utils_src_install
+ mv "${ED%/}"/usr/bin/dfhack{,-${SLOT}} || die
+ mv "${ED%/}"/usr/bin/dfhack-run{,-${SLOT}} || die
+ ! use egg || mv "${ED%/}"/usr/bin/egghack{,-${SLOT}} || die
+ rm -f "${ED%/}/${dfhack_docdir}"/LICENSE.rst || die
+ dodir "${dfhack_statedir}"
+ if use stonesense; then
+ dodir "${GAMES_SYSCONFDIR#/}/${P}/stonesense"
+ mv "${ED%/}/${dfhack_datadir#/}/stonesense/init.txt" \
+ "${ED%/}/${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
+
+ fperms g+w "${dfhack_statedir}"
+ # userpriv: portage user needs to be able to link:
+# fperms o+rx "${dfhack_libdir}"
+ use egg && fperms o+rx "${dfhack_libdir}"/libegg.so
+}
+
+pkg_postinst() {
+ elog "Due to Dwarf Fortress' special needs regarding working directory,"
+ elog "specifying relative paths to DFHack plugins can give unintended results."
+ elog
+ elog "Your dfhack.init should be placed in \${HOME}/.dwarffortress-${SLOT}/ ,"
+ elog "otherwise the example configuration will be used."
+ elog
+ if ! use egg; then
+ elog "To start DFHack, please run dfhack-${SLOT}"
+ else
+ elog "To start DFHack, please run dwarffortress-${SLOT}"
+ fi
+}