diff --git a/packages/games-strategy/0ad/0ad-0.0.17-alpha.exheres-0 b/packages/games-strategy/0ad/0ad-0.0.19-alpha.exheres-0 similarity index 59% rename from packages/games-strategy/0ad/0ad-0.0.17-alpha.exheres-0 rename to packages/games-strategy/0ad/0ad-0.0.19-alpha.exheres-0 index d372b73d..60a0b4a1 100644 --- a/packages/games-strategy/0ad/0ad-0.0.17-alpha.exheres-0 +++ b/packages/games-strategy/0ad/0ad-0.0.19-alpha.exheres-0 @@ -36,6 +36,8 @@ MYOPTIONS=" editor [[ description = [ Include Atlas scenario editor projects ] ]] lobby [[ description = [ Enable the multiplayer lobby ] ]] sound + ( providers: ijg-jpeg jpeg-turbo ) [[ number-selected = exactly-one ]] + platform: amd64 x86 " # nvtt (optional, mostly for 3rd party mods) @@ -58,10 +60,11 @@ DEPENDENCIES=" virtual/pkg-config build+run: dev-libs/boost - dev-libs/spidermonkey:24.0[-icu(+)] + dev-libs/icu:= dev-libs/libxml2:2.0 - media-libs/jpeg - media-libs/libogg + dev-libs/nspr + providers:ijg-jpeg? ( media-libs/jpeg ) + providers:jpeg-turbo? ( media-libs/libjpeg-turbo ) media-libs/libpng:= media-libs/SDL:2[X] net-libs/enet @@ -73,11 +76,31 @@ DEPENDENCIES=" " DEFAULT_SRC_PREPARE_PATCHES=( - -p0 "${FILES}"/${PNV}-respect-flags.patch - -p1 "${FILES}"/${PNV}-paths.patch + -p0 "${FILES}"/${PNV}-exherbo.patch ) +src_prepare() { + default + edo sed -i -e "s:pkg-config:${PKG_CONFIG}:" \ + libraries/source/spidermonkey/build.sh +} + src_configure() { + local myconf=( + --with-system-miniupnpc + --minimal-flags + --without-nvtt + --without-pch + --without-tests + $(option sound "" "--without-audio") + $(option editor "--atlas" "") + $(option lobby "" "--without-lobby") + --collada + --bindir="/usr/$(exhost --target)/bin" + --libdir="/usr/$(exhost --target)/lib/${PN}" + --datadir="/usr/share/${PN}" + ) + edo pushd "${WORK}"/build/premake/premake4 # The project uses an included version of premake (version 4.3.1), @@ -86,63 +109,59 @@ src_configure() { # premakes included version for now. emake -C build/gmake.unix - # regenerate scripts.c so our patch applies - edo ./bin/release/premake4 embed + # regenerate scripts.c so our patch applies + edo ./bin/release/premake4 embed edo popd - # rebuild premake again... - emake -C "${WORK}"/build/premake/premake4/build/gmake.unix clean - emake -C "${WORK}"/build/premake/premake4/build/gmake.unix + # rebuild premake again... + emake -C "${WORK}"/build/premake/premake4/build/gmake.unix clean + emake -C "${WORK}"/build/premake/premake4/build/gmake.unix - # run premake to create build scripts + # run premake to create build scripts edo pushd "${WORK}"/build/premake - edo ./premake4/bin/release/premake4 \ - --bindir=/usr/bin \ - --libdir=/usr/${LIBDIR} \ - --datadir=/usr/share/${PN} \ - --file=premake4.lua \ - --outpath=../workspaces/gcc/ \ - --minimal-flags \ - --sdl2 \ - --without-nvtt \ - $(option sound "" "--without-audio") \ - $(option editor "--atlas" "") \ - $(option lobby "" "--without-lobby") \ - --with-system-miniupnpc \ - --with-system-mozjs24 \ - --collada \ - --without-tests \ - --with-c++11 \ - --without-pch \ - gmake + edo ./premake4/bin/release/premake4 \ + --file="premake4.lua" \ + --outpath="../workspaces/gcc/" \ + --platform=$(option platform:amd64 "x64" "x32") \ + --os=linux \ + "${myconf[@]}" \ + gmake edo popd } src_compile() { - # build 3rd party fcollada - emake -C libraries/source/fcollada/src + export AR=$(exhost --tool-prefix)ar - # build 0ad - emake -C build/workspaces/gcc verbose=1 + edo pushd "${WORK}"/libraries/source/spidermonkey + edo ./build.sh + edo popd + + # build 3rd party fcollada + emake -C libraries/source/fcollada/src + + # build 0ad + emake -C build/workspaces/gcc verbose=1 } src_install() { if optionq editor ; then - dobin binaries/system/ActorEditor - dolib binaries/system/libAtlasUI.so + newbin binaries/system/ActorEditor 0ad-ActorEditor + exeinto /usr/$(exhost --target)/lib/${PN} + doexe binaries/system/libAtlasUI.so fi # TODO: Use system fonts newbin binaries/system/pyrogenesis 0ad - dolib binaries/system/libCollada.so + exeinto /usr/$(exhost --target)/lib/${PN} + doexe binaries/system/libCollada.so + doexe libraries/source/spidermonkey/lib/*.so insinto /usr/share/${PN} doins -r binaries/data/* insinto /usr/share/icons/hicolor/128x128/apps/ doins build/resources/${PN}.png - insinto /usr/share/applications doins build/resources/0ad.desktop diff --git a/packages/games-strategy/0ad/files/0ad-0.0.17-alpha-paths.patch b/packages/games-strategy/0ad/files/0ad-0.0.17-alpha-paths.patch deleted file mode 100644 index 0226dd3d..00000000 --- a/packages/games-strategy/0ad/files/0ad-0.0.17-alpha-paths.patch +++ /dev/null @@ -1,269 +0,0 @@ -From 97cf70148695df87154ad9fabb312037021a0d82 Mon Sep 17 00:00:00 2001 -From: hasufell -Date: Mon, 24 Nov 2014 21:20:43 +0100 -Subject: [PATCH] Query /proc for the executable path on Linux - -Author: leper -http://trac.wildfiregames.com/ticket/2086 -http://trac.wildfiregames.com/changeset/15996 - ---- - source/lib/sysdep/os/bsd/bsd.cpp | 46 +------------- - source/lib/sysdep/os/linux/linux.cpp | 62 +++++++----------- - .../sysdep/os/unix/unix_executable_pathname.cpp | 73 ++++++++++++++++++++++ - .../lib/sysdep/os/unix/unix_executable_pathname.h | 28 +++++++++ - 4 files changed, 124 insertions(+), 85 deletions(-) - create mode 100644 source/lib/sysdep/os/unix/unix_executable_pathname.cpp - create mode 100644 source/lib/sysdep/os/unix/unix_executable_pathname.h - -diff --git a/source/lib/sysdep/os/bsd/bsd.cpp b/source/lib/sysdep/os/bsd/bsd.cpp -index 34e1460..aa74b98 100644 ---- a/source/lib/sysdep/os/bsd/bsd.cpp -+++ b/source/lib/sysdep/os/bsd/bsd.cpp -@@ -23,51 +23,9 @@ - #include "precompiled.h" - - #include "lib/sysdep/sysdep.h" -- --#define GNU_SOURCE --#include "mocks/dlfcn.h" --#include "mocks/unistd.h" -- --#include -+#include "lib/sysdep/os/unix/unix_excecutable_pathname.h" - - OsPath sys_ExecutablePathname() - { -- // Find the executable's filename -- Dl_info dl_info; -- memset(&dl_info, 0, sizeof(dl_info)); -- if (!T::dladdr((void *)sys_ExecutablePathname, &dl_info) || !dl_info.dli_fname) -- return OsPath(); -- const char* path = dl_info.dli_fname; -- -- // If this looks like an absolute path, use realpath to get the normalized -- // path (with no '.' or '..') -- if (path[0] == '/') -- { -- char resolved[PATH_MAX]; -- if (!realpath(path, resolved)) -- return OsPath(); -- return resolved; -- } -- -- // If this looks like a relative path, resolve against cwd and use realpath -- if (strchr(path, '/')) -- { -- char cwd[PATH_MAX]; -- if (!T::getcwd(cwd, PATH_MAX)) -- return OsPath(); -- -- char absolute[PATH_MAX]; -- int ret = snprintf(absolute, PATH_MAX, "%s/%s", cwd, path); -- if (ret < 0 || ret >= PATH_MAX) -- return OsPath(); // path too long, or other error -- char resolved[PATH_MAX]; -- if (!realpath(absolute, resolved)) -- return OsPath(); -- return resolved; -- } -- -- // If it's not a path at all, i.e. it's just a filename, we'd -- // probably have to search through PATH to find it. -- // That's complex and should be uncommon, so don't bother. -- return OsPath(); -+ return unix_ExecutablePathname(); - } -diff --git a/source/lib/sysdep/os/linux/linux.cpp b/source/lib/sysdep/os/linux/linux.cpp -index da2a8ac..d2d47af 100644 ---- a/source/lib/sysdep/os/linux/linux.cpp -+++ b/source/lib/sysdep/os/linux/linux.cpp -@@ -23,51 +23,31 @@ - #include "precompiled.h" - - #include "lib/sysdep/sysdep.h" -+#include "lib/sysdep/os/unix/unix_executable_pathname.h" - --#define GNU_SOURCE --#include "mocks/dlfcn.h" --#include "mocks/unistd.h" -- --#include -- --OsPath sys_ExecutablePathname() -+static bool getPathFromProc(char* buffer, size_t length) - { -- // Find the executable's filename -- Dl_info dl_info; -- memset(&dl_info, 0, sizeof(dl_info)); -- if (!T::dladdr((void *)sys_ExecutablePathname, &dl_info) || !dl_info.dli_fname) -- return OsPath(); -- const char* path = dl_info.dli_fname; -+ int pos = readlink("/proc/self/exe", buffer, length-1); -+ if (pos <= 0) -+ return false; -+ buffer[pos] = '\0'; - -- // If this looks like an absolute path, use realpath to get the normalized -- // path (with no '.' or '..') -- if (path[0] == '/') -- { -- char resolved[PATH_MAX]; -- if (!realpath(path, resolved)) -- return OsPath(); -- return resolved; -- } -+ char* endOfPath = strrchr(buffer, '/'); -+ if (endOfPath == NULL) -+ return false; - -- // If this looks like a relative path, resolve against cwd and use realpath -- if (strchr(path, '/')) -- { -- char cwd[PATH_MAX]; -- if (!T::getcwd(cwd, PATH_MAX)) -- return OsPath(); -+ ++endOfPath; -+ *endOfPath = '\0'; - -- char absolute[PATH_MAX]; -- int ret = snprintf(absolute, PATH_MAX, "%s/%s", cwd, path); -- if (ret < 0 || ret >= PATH_MAX) -- return OsPath(); // path too long, or other error -- char resolved[PATH_MAX]; -- if (!realpath(absolute, resolved)) -- return OsPath(); -- return resolved; -- } -+ return true; -+} -+ -+OsPath sys_ExecutablePathname() -+{ -+ // Check /proc for the path -+ char pathBuffer[PATH_MAX]; -+ if (getPathFromProc(pathBuffer, sizeof(pathBuffer))) -+ return pathBuffer; - -- // If it's not a path at all, i.e. it's just a filename, we'd -- // probably have to search through PATH to find it. -- // That's complex and should be uncommon, so don't bother. -- return OsPath(); -+ return unix_ExecutablePathname(); - } -diff --git a/source/lib/sysdep/os/unix/unix_executable_pathname.cpp b/source/lib/sysdep/os/unix/unix_executable_pathname.cpp -new file mode 100644 -index 0000000..ae7b989 ---- /dev/null -+++ b/source/lib/sysdep/os/unix/unix_executable_pathname.cpp -@@ -0,0 +1,73 @@ -+/* Copyright (c) 2014 Wildfire Games -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#include "precompiled.h" -+ -+#include "lib/sysdep/sysdep.h" -+ -+#define GNU_SOURCE -+#include "mocks/dlfcn.h" -+#include "mocks/unistd.h" -+ -+#include -+ -+OsPath unix_ExecutablePathname() -+{ -+ // Find the executable's filename -+ Dl_info dl_info; -+ memset(&dl_info, 0, sizeof(dl_info)); -+ if (!T::dladdr((void *)sys_ExecutablePathname, &dl_info) || !dl_info.dli_fname) -+ return OsPath(); -+ const char* path = dl_info.dli_fname; -+ -+ // If this looks like an absolute path, use realpath to get the normalized -+ // path (with no '.' or '..') -+ if (path[0] == '/') -+ { -+ char resolved[PATH_MAX]; -+ if (!realpath(path, resolved)) -+ return OsPath(); -+ return resolved; -+ } -+ -+ // If this looks like a relative path, resolve against cwd and use realpath -+ if (strchr(path, '/')) -+ { -+ char cwd[PATH_MAX]; -+ if (!T::getcwd(cwd, PATH_MAX)) -+ return OsPath(); -+ -+ char absolute[PATH_MAX]; -+ int ret = snprintf(absolute, PATH_MAX, "%s/%s", cwd, path); -+ if (ret < 0 || ret >= PATH_MAX) -+ return OsPath(); // path too long, or other error -+ char resolved[PATH_MAX]; -+ if (!realpath(absolute, resolved)) -+ return OsPath(); -+ return resolved; -+ } -+ -+ // If it's not a path at all, i.e. it's just a filename, we'd -+ // probably have to search through PATH to find it. -+ // That's complex and should be uncommon, so don't bother. -+ return OsPath(); -+} -diff --git a/source/lib/sysdep/os/unix/unix_executable_pathname.h b/source/lib/sysdep/os/unix/unix_executable_pathname.h -new file mode 100644 -index 0000000..f87c340 ---- /dev/null -+++ b/source/lib/sysdep/os/unix/unix_executable_pathname.h -@@ -0,0 +1,28 @@ -+/* Copyright (c) 2014 Wildfire Games -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#ifndef INCLUDED_UNIX_EXECUTABLE_PATHNAME -+#define INCLUDED_UNIX_EXECUTABLE_PATHNAME -+ -+OsPath unix_ExecutablePathname(); -+ -+#endif // INCLUDED_UNIX_EXECUTABLE_PATHNAME --- -2.1.3 - diff --git a/packages/games-strategy/0ad/files/0ad-0.0.17-alpha-respect-flags.patch b/packages/games-strategy/0ad/files/0ad-0.0.19-alpha-exherbo.patch similarity index 53% rename from packages/games-strategy/0ad/files/0ad-0.0.17-alpha-respect-flags.patch rename to packages/games-strategy/0ad/files/0ad-0.0.19-alpha-exherbo.patch index 677349ef..5c48ec82 100644 --- a/packages/games-strategy/0ad/files/0ad-0.0.17-alpha-respect-flags.patch +++ b/packages/games-strategy/0ad/files/0ad-0.0.19-alpha-exherbo.patch @@ -2,42 +2,9 @@ From: Julian Ospald Date: Sun Jun 24 18:32:38 UTC 2012 Subject: build system -respect flags -let stripping be handled by the system +* respect flags +* disable debug build of spidermonkey -fix minimal-flags option: - leave -fvisibility=hidden active - ---- build/premake/premake4.lua -+++ build/premake/premake4.lua -@@ -177,7 +177,7 @@ - - function project_set_build_flags() - -- flags { "Symbols", "NoEditAndContinue" } -+ flags { "NoEditAndContinue" } - if cc ~= "icc" and (os.is("windows") or not _OPTIONS["minimal-flags"]) then - -- adds the -Wall compiler flag - flags { "ExtraWarnings" } -- this causes far too many warnings/remarks on ICC -@@ -366,13 +366,11 @@ - end - end - -- if not _OPTIONS["minimal-flags"] then -- buildoptions { -- -- Hide symbols in dynamic shared objects by default, for efficiency and for equivalence with -- -- Windows - they should be exported explicitly with __attribute__ ((visibility ("default"))) -- "-fvisibility=hidden" -- } -- end -+ buildoptions { -+ -- Hide symbols in dynamic shared objects by default, for efficiency and for equivalence with -+ -- Windows - they should be exported explicitly with __attribute__ ((visibility ("default"))) -+ "-fvisibility=hidden" -+ } - - if _OPTIONS["bindir"] then - defines { "INSTALLED_BINDIR=" .. _OPTIONS["bindir"] } --- libraries/source/fcollada/src/Makefile +++ libraries/source/fcollada/src/Makefile @@ -9,9 +9,9 @@ @@ -97,3 +64,38 @@ fix minimal-flags option: --include $(GCH:%.h.gch=%.h.d) \ No newline at end of file +-include $(GCH:%.h.gch=%.h.d) +--- libraries/source/spidermonkey/build.sh ++++ libraries/source/spidermonkey/build.sh +@@ -92,19 +92,7 @@ + cd mozjs31/js/src + + # Clean up data generated by previous builds that could cause problems +-rm -rf build-debug + rm -rf build-release +- +-# We want separate debug/release versions of the library, so we have to change +-# the LIBRARY_NAME for each build. +-# (We use perl instead of sed so that it works with MozillaBuild on Windows, +-# which has an ancient sed.) +-perl -i.bak -pe 's/(LIBRARY_NAME\s+=).*/$1 '\''mozjs31-ps-debug'\''/' moz.build +-mkdir -p build-debug +-cd build-debug +-CXXFLAGS="${TLCXXFLAGS}" ../configure ${CONF_OPTS} --with-nspr-libs="$NSPR_LIBS" --with-nspr-cflags="$NSPR_INCLUDES" --enable-debug --disable-optimize --enable-js-diagnostics --enable-gczeal # --enable-root-analysis +-${MAKE} ${MAKE_OPTS} +-cd .. + + perl -i.bak -pe 's/(LIBRARY_NAME\s+=).*/$1 '\''mozjs31-ps-release'\''/' moz.build + mkdir -p build-release +@@ -147,12 +135,9 @@ + mkdir -p ${INCLUDE_DIR_DEBUG} + mkdir -p ${INCLUDE_DIR_RELEASE} + cp -R -L mozjs31/js/src/build-release/dist/include/* ${INCLUDE_DIR_RELEASE}/ +-cp -R -L mozjs31/js/src/build-debug/dist/include/* ${INCLUDE_DIR_DEBUG}/ + + mkdir -p lib/ +-cp -L mozjs31/js/src/build-debug/dist/lib/${LIB_PREFIX}mozjs31-ps-debug${LIB_SRC_SUFFIX} lib/${LIB_PREFIX}mozjs31-ps-debug${LIB_DST_SUFFIX} + cp -L mozjs31/js/src/build-release/dist/lib/${LIB_PREFIX}mozjs31-ps-release${LIB_SRC_SUFFIX} lib/${LIB_PREFIX}mozjs31-ps-release${LIB_DST_SUFFIX} +-cp -L mozjs31/js/src/build-debug/dist/bin/${LIB_PREFIX}mozjs31-ps-debug${DLL_SRC_SUFFIX} ../../../binaries/system/${LIB_PREFIX}mozjs31-ps-debug${DLL_DST_SUFFIX} + cp -L mozjs31/js/src/build-release/dist/bin/${LIB_PREFIX}mozjs31-ps-release${DLL_SRC_SUFFIX} ../../../binaries/system/${LIB_PREFIX}mozjs31-ps-release${DLL_DST_SUFFIX} + + # Flag that it's already been built successfully so we can skip it next time