diff --git a/dev-libs/Ice/Ice-3.6.1.ebuild b/dev-libs/Ice/Ice-3.6.1.ebuild index 8e9bb8b..012531a 100644 --- a/dev-libs/Ice/Ice-3.6.1.ebuild +++ b/dev-libs/Ice/Ice-3.6.1.ebuild @@ -46,7 +46,10 @@ RDEPEND=">=dev-libs/expat-2.0.1 !dev-ruby/IceRuby" DEPEND="${RDEPEND} ncurses? ( sys-libs/ncurses sys-libs/readline ) - test? ( ${PYTHON_DEPS} )" + test? ( + ${PYTHON_DEPS} + dev-python/passlib[${PYTHON_USEDEP}] + )" REQUIRED_USE="php_namespaces? ( php )" @@ -57,12 +60,11 @@ REQUIRED_USE="php_namespaces? ( php )" # SUPPORT_PYTHON_ABIS=1 otherwise we can't get pyc/pyo anymore the sane way. # TODO: java bindings -#overwrite ruby-ng.eclass default S="${WORKDIR}/${P/I/i}" PHP_EXT_S="${S}/php" pkg_setup() { - if use ruby && [[ $RUBY_TARGETS != *$( eselect ruby show | awk 'NR==2' | tr -d ' ' )* ]]; then + if use test && use ruby && [[ $RUBY_TARGETS != *$( eselect ruby show | awk 'NR==2' | tr -d ' ' )* ]]; then eerror "/usr/bin/ruby is currently not included in Ice's ruby targets: ${RUBY_TARGETS}." eerror "Please update it via `eselect ruby`" die @@ -78,8 +80,11 @@ src_prepare() { epatch "${FILESDIR}/${P}-libressl.patch" epatch "${FILESDIR}/${P}-no-arch-opts.patch" epatch "${FILESDIR}/${P}-csharp.patch" + epatch "${FILESDIR}/${P}-python-test.patch" + epatch "${FILESDIR}/${P}-python-test-import.patch" sed -i \ -e 's|\(install_configdir[[:space:]]*\):=|\1?=|' \ + -e 's|-L\$\(libdir\)||' \ cpp/config/Make.rules || die "sed failed" sed -i \ @@ -113,6 +118,17 @@ src_prepare() { -e '/SUBDIRS/s|\ test||' \ csharp/Makefile || die "sed failed" + # skip udp test due to multicast + # skip IceSSL tests due to requirement of internet connection + sed -i \ + -e 's|allTests.py|allTests.py --rfilter=udp --rfilter=IceSSL --rfilter=IceGrid\/simple|' \ + cpp/Makefile || die "sed failed" + + # mainly broken .ice files + sed -i \ + -e 's|allTests.py|allTests.py --rfilter=operations --rfilter=slicing\/objects|' \ + python/Makefile || die "sed failed" + if ! use test ; then sed -i \ -e '/SUBDIRS/s|\ test||' \ @@ -170,6 +186,12 @@ src_configure() { sed -i \ -e 's|RUBY = ruby|\022|' \ ruby/config/Make.rules || die "sed failed" + sed -i \ + -e 's|env ruby|\022|' \ + ruby/config/s2rb.rb || die "sed failed" + sed -i \ + -e 's|env ruby|\022|' \ + ruby/scripts/slice2rb || die "sed failed" fi MAKE_RULES_CS="GACINSTALL=yes GAC_ROOT=\"${ED}/usr/$(get_libdir)\" GAC_DIR=${EPREFIX}/usr/$(get_libdir) @@ -289,39 +311,32 @@ src_install() { fi } -run_tests() { - # Run tests through the script interface since Python test runner - # fails to exit with non-zero code for some reason. - - pushd "${1}" >/dev/null || die - ./allTests.py --script | sh - ret=${?} - popd >/dev/null || die - - return ${ret} -} - src_test() { - export LD_LIBRARY_PATH="${S}/cpp/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}" + emake -C cpp ${MAKE_RULES} test || die "emake cpp test failed" - run_tests cpp || die "emake cpp test failed" + # php tests require the extension loaded and are therefore skipped if use python ; then testing() { # tests require that the directory is named 'python' ln -f -s ../"${BUILD_DIR}"/python python/python || die - run_tests python || die "emake python-${EPYTHON} test failed" + cd "${S}"/python + emake -C . ${MAKE_RULES} \ + install_pythondir="\"${D}/$(python_get_sitedir)\"" \ + install_libdir="\"${D}/$(python_get_sitedir)\"" \ + test || die "emake python-${EPYTHON} test failed" + cd "${S}" } BUILD_DIR=python python_foreach_impl testing fi if use ruby ; then - run_tests ruby || die "emake ruby test failed" + emake -C ruby ${MAKE_RULES} ${MAKE_RULES_RB} test || die "emake ruby test failed" fi if use mono ; then # skip mono tests, bug #498484 ewarn "Tests for C# are currently disabled." -# run_tests csharp || die "emake csharp test failed" +# emake -C csharp ${MAKE_RULES} ${MAKE_RULES_CS} test || die "emake csharp test failed" fi } diff --git a/dev-libs/Ice/files/Ice-3.6.1-python-test-import.patch b/dev-libs/Ice/files/Ice-3.6.1-python-test-import.patch new file mode 100644 index 0000000..971829e --- /dev/null +++ b/dev-libs/Ice/files/Ice-3.6.1-python-test-import.patch @@ -0,0 +1,26 @@ +From 69e03dfb1c7fa26d2bc8a571bc773994607eb01d Mon Sep 17 00:00:00 2001 +From: Dwayne Boone +Date: Tue, 15 Sep 2015 16:48:21 -0230 +Subject: [PATCH] ICE-6792 fix for test failure on linux + +--- + python/test/Slice/import/run.py | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/python/test/Slice/import/run.py b/python/test/Slice/import/run.py +index 02a58b1..2594c96 100755 +--- a/python/test/Slice/import/run.py ++++ b/python/test/Slice/import/run.py +@@ -41,8 +41,10 @@ + else: + slice2py = os.path.join(path[0], "python", "config", "s2py.py") + +-subprocess.call([sys.executable, slice2py, "Test1.ice"]) +-subprocess.call([sys.executable, slice2py, "Test2.ice"]) ++s2p = TestUtil.spawn(sys.executable + " " + slice2py + " Test1.ice") ++s2p.waitTestSuccess() ++s2p = TestUtil.spawn(sys.executable + " " + slice2py + " Test2.ice") ++s2p.waitTestSuccess() + + sys.stdout.write("starting client... ") + sys.stdout.flush() diff --git a/dev-libs/Ice/files/Ice-3.6.1-python-test.patch b/dev-libs/Ice/files/Ice-3.6.1-python-test.patch new file mode 100644 index 0000000..1fc3b1a --- /dev/null +++ b/dev-libs/Ice/files/Ice-3.6.1-python-test.patch @@ -0,0 +1,272 @@ +From a973118e7026ed1ab89caeaf612bc80873b4fe04 Mon Sep 17 00:00:00 2001 +From: Dwayne Boone +Date: Tue, 15 Sep 2015 12:59:33 -0230 +Subject: [PATCH] ICE-6792 python tests no longer require make/nmake + +--- + python/Makefile | 4 ---- + python/Makefile.mak | 2 +- + python/test/Makefile | 21 --------------------- + python/test/Makefile.mak | 19 ------------------- + python/test/Slice/Makefile | 21 --------------------- + python/test/Slice/Makefile.mak | 19 ------------------- + python/test/Slice/import/Makefile | 32 -------------------------------- + python/test/Slice/import/Makefile.mak | 29 ----------------------------- + python/test/Slice/import/run.py | 26 +++++++++++++++++++++++++- + 9 files changed, 26 insertions(+), 147 deletions(-) + delete mode 100644 python/test/Makefile + delete mode 100644 python/test/Makefile.mak + delete mode 100644 python/test/Slice/Makefile + delete mode 100644 python/test/Slice/Makefile.mak + delete mode 100644 python/test/Slice/import/Makefile + delete mode 100644 python/test/Slice/import/Makefile.mak + +diff --git a/python/Makefile b/python/Makefile +index 6ffd68d..5c8a10c 100644 +--- a/python/Makefile ++++ b/python/Makefile +@@ -13,10 +13,6 @@ include $(top_srcdir)/config/Make.rules + + SUBDIRS = modules python + +-ifneq ($(MAKECMDGOALS),install) +-SUBDIRS := $(SUBDIRS) test +-endif +- + INSTALL_SUBDIRS = $(install_pythondir) $(install_libdir) + + install:: install-common +diff --git a/python/Makefile.mak b/python/Makefile.mak +index 60d92e5..924cf55 100644 +--- a/python/Makefile.mak ++++ b/python/Makefile.mak +@@ -11,7 +11,7 @@ top_srcdir = . + + !include $(top_srcdir)\config\Make.rules.mak + +-SUBDIRS = modules python test ++SUBDIRS = modules python + + install:: install-common + @if not exist "$(install_pythondir)" \ +diff --git a/python/test/Makefile b/python/test/Makefile +deleted file mode 100644 +index 23caa0e..0000000 +--- a/python/test/Makefile ++++ /dev/null +@@ -1,21 +0,0 @@ +-# ********************************************************************** +-# +-# Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. +-# +-# This copy of Ice is licensed to you under the terms described in the +-# ICE_LICENSE file included in this distribution. +-# +-# ********************************************************************** +- +-top_srcdir = .. +- +-include $(top_srcdir)/config/Make.rules +- +-SUBDIRS = Slice +- +-$(EVERYTHING):: +- @for subdir in $(SUBDIRS); \ +- do \ +- echo "making $@ in $$subdir"; \ +- ( cd $$subdir && $(MAKE) $@ ) || exit 1; \ +- done +diff --git a/python/test/Makefile.mak b/python/test/Makefile.mak +deleted file mode 100644 +index 9830e50..0000000 +--- a/python/test/Makefile.mak ++++ /dev/null +@@ -1,19 +0,0 @@ +-# ********************************************************************** +-# +-# Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. +-# +-# This copy of Ice is licensed to you under the terms described in the +-# ICE_LICENSE file included in this distribution. +-# +-# ********************************************************************** +- +-top_srcdir = .. +- +-!include $(top_srcdir)\config\Make.rules.mak +- +-SUBDIRS = Slice +- +-$(EVERYTHING):: +- @for %i in ( $(SUBDIRS) ) do \ +- @echo "making $@ in %i" && \ +- cmd /c "cd %i && $(MAKE) -nologo -f Makefile.mak $@" || exit 1 +diff --git a/python/test/Slice/Makefile b/python/test/Slice/Makefile +deleted file mode 100644 +index 19f1855..0000000 +--- a/python/test/Slice/Makefile ++++ /dev/null +@@ -1,21 +0,0 @@ +-# ********************************************************************** +-# +-# Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. +-# +-# This copy of Ice is licensed to you under the terms described in the +-# ICE_LICENSE file included in this distribution. +-# +-# ********************************************************************** +- +-top_srcdir = ../.. +- +-include $(top_srcdir)/config/Make.rules +- +-SUBDIRS = import +- +-$(EVERYTHING):: +- @for subdir in $(SUBDIRS); \ +- do \ +- echo "making $@ in $$subdir"; \ +- ( cd $$subdir && $(MAKE) $@ ) || exit 1; \ +- done +diff --git a/python/test/Slice/Makefile.mak b/python/test/Slice/Makefile.mak +deleted file mode 100644 +index 2646ddd..0000000 +--- a/python/test/Slice/Makefile.mak ++++ /dev/null +@@ -1,19 +0,0 @@ +-# ********************************************************************** +-# +-# Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. +-# +-# This copy of Ice is licensed to you under the terms described in the +-# ICE_LICENSE file included in this distribution. +-# +-# ********************************************************************** +- +-top_srcdir = ..\.. +- +-!include $(top_srcdir)\config\Make.rules.mak +- +-SUBDIRS = import +- +-$(EVERYTHING):: +- @for %i in ( $(SUBDIRS) ) do \ +- @echo "making $@ in %i" && \ +- cmd /c "cd %i && $(MAKE) -nologo -f Makefile.mak $@" || exit 1 +diff --git a/python/test/Slice/import/Makefile b/python/test/Slice/import/Makefile +deleted file mode 100644 +index 5e79abb..0000000 +--- a/python/test/Slice/import/Makefile ++++ /dev/null +@@ -1,32 +0,0 @@ +-# ********************************************************************** +-# +-# Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. +-# +-# This copy of Ice is licensed to you under the terms described in the +-# ICE_LICENSE file included in this distribution. +-# +-# ********************************************************************** +- +-top_srcdir = ../../.. +- +-include $(top_srcdir)/config/Make.rules +- +-# +-# Parallel builds are not supported because multiple executions of slice2py could +-# attempt to modify the __init__.py file simultaneously. +-# +-.NOTPARALLEL: +- +-SRCS = Test1_ice.py \ +- Test2_ice.py +- +-all:: $(SRCS) +- +-Test1_ice.py: Test1.ice $(SLICEPARSERLIB) +- $(SLICE2PY) $(SLICE2PYFLAGS) $< +- +-Test2_ice.py: Test2.ice $(SLICEPARSERLIB) +- $(SLICE2PY) $(SLICE2PYFLAGS) $< +- +-clean:: +- rm -rf $(SRCS) Test +diff --git a/python/test/Slice/import/Makefile.mak b/python/test/Slice/import/Makefile.mak +deleted file mode 100644 +index e3935c6..0000000 +--- a/python/test/Slice/import/Makefile.mak ++++ /dev/null +@@ -1,29 +0,0 @@ +-# ********************************************************************** +-# +-# Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. +-# +-# This copy of Ice is licensed to you under the terms described in the +-# ICE_LICENSE file included in this distribution. +-# +-# ********************************************************************** +- +-top_srcdir = ..\..\.. +- +-!include $(top_srcdir)\config\Make.rules.mak +- +-SRCS = Test1_ice.py \ +- Test2_ice.py +- +-all:: $(SRCS) +- +-Test1_ice.py: "Test1.ice" "$(SLICEPARSERLIB)" +- "$(SLICE2PY)" $(SLICE2PYFLAGS) "Test1.ice" +- +-Test2_ice.py: "Test2.ice" "$(SLICEPARSERLIB)" +- "$(SLICE2PY)" $(SLICE2PYFLAGS) "Test2.ice" +- +-clean:: +- -rmdir /s /q Test +- del /q $(SRCS) +- +-include .depend.mak +diff --git a/python/test/Slice/import/run.py b/python/test/Slice/import/run.py +index 2054bdd..02a58b1 100755 +--- a/python/test/Slice/import/run.py ++++ b/python/test/Slice/import/run.py +@@ -8,7 +8,7 @@ + # + # ********************************************************************** + +-import os, sys ++import os, sys, shutil, subprocess + + path = [ ".", "..", "../..", "../../..", "../../../.." ] + head = os.path.dirname(sys.argv[0]) +@@ -20,6 +20,30 @@ + sys.path.append(os.path.join(path[0], "scripts")) + import TestUtil + ++testdir = os.path.dirname(os.path.abspath(__file__)) ++ ++if os.path.exists(os.path.join(testdir, "Test1_ice.py")): ++ os.remove(os.path.join(testdir, "Test1_ice.py")) ++if os.path.exists(os.path.join(testdir, "Test2_ice.py")): ++ os.remove(os.path.join(testdir, "Test2_ice.py")) ++if os.path.exists(os.path.join(testdir, "Test")): ++ shutil.rmtree(os.path.join(testdir, "Test")) ++ ++if os.environ.get("USE_BIN_DIST", "no") == "yes": ++ if TestUtil.isDarwin(): ++ slice2py = "/usr/local/bin/slice2py" ++ elif TestUtil.isWin32(): ++ pythonHome = os.path.dirname(sys.executable) ++ slice2py = os.path.join(pythonHome, "Scripts", "slice2py.exe") ++ else: ++ import slice2py ++ slice2py = os.path.normpath(os.path.join(slice2py.__file__, '..', '..', '..', '..', 'bin', 'slice2py')) ++else: ++ slice2py = os.path.join(path[0], "python", "config", "s2py.py") ++ ++subprocess.call([sys.executable, slice2py, "Test1.ice"]) ++subprocess.call([sys.executable, slice2py, "Test2.ice"]) ++ + sys.stdout.write("starting client... ") + sys.stdout.flush() + clientProc = TestUtil.startClient("Client.py", "--Ice.Default.Host=127.0.0.1", startReader = False)