[dev-libs/Ice] apply patches from upstream to fix python tests, remove custom test handler, add passlib to test deps, skip some tests due to sandboxing / broken source files

This commit is contained in:
Robert Förster 2016-03-13 15:05:35 +01:00
parent 298f146a79
commit e8dbcd4a00
3 changed files with 333 additions and 20 deletions

View File

@ -46,7 +46,10 @@ RDEPEND=">=dev-libs/expat-2.0.1
!dev-ruby/IceRuby" !dev-ruby/IceRuby"
DEPEND="${RDEPEND} DEPEND="${RDEPEND}
ncurses? ( sys-libs/ncurses sys-libs/readline ) ncurses? ( sys-libs/ncurses sys-libs/readline )
test? ( ${PYTHON_DEPS} )" test? (
${PYTHON_DEPS}
dev-python/passlib[${PYTHON_USEDEP}]
)"
REQUIRED_USE="php_namespaces? ( php )" 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. # SUPPORT_PYTHON_ABIS=1 otherwise we can't get pyc/pyo anymore the sane way.
# TODO: java bindings # TODO: java bindings
#overwrite ruby-ng.eclass default
S="${WORKDIR}/${P/I/i}" S="${WORKDIR}/${P/I/i}"
PHP_EXT_S="${S}/php" PHP_EXT_S="${S}/php"
pkg_setup() { 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 "/usr/bin/ruby is currently not included in Ice's ruby targets: ${RUBY_TARGETS}."
eerror "Please update it via `eselect ruby`" eerror "Please update it via `eselect ruby`"
die die
@ -78,8 +80,11 @@ src_prepare() {
epatch "${FILESDIR}/${P}-libressl.patch" epatch "${FILESDIR}/${P}-libressl.patch"
epatch "${FILESDIR}/${P}-no-arch-opts.patch" epatch "${FILESDIR}/${P}-no-arch-opts.patch"
epatch "${FILESDIR}/${P}-csharp.patch" epatch "${FILESDIR}/${P}-csharp.patch"
epatch "${FILESDIR}/${P}-python-test.patch"
epatch "${FILESDIR}/${P}-python-test-import.patch"
sed -i \ sed -i \
-e 's|\(install_configdir[[:space:]]*\):=|\1?=|' \ -e 's|\(install_configdir[[:space:]]*\):=|\1?=|' \
-e 's|-L\$\(libdir\)||' \
cpp/config/Make.rules || die "sed failed" cpp/config/Make.rules || die "sed failed"
sed -i \ sed -i \
@ -113,6 +118,17 @@ src_prepare() {
-e '/SUBDIRS/s|\ test||' \ -e '/SUBDIRS/s|\ test||' \
csharp/Makefile || die "sed failed" 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 if ! use test ; then
sed -i \ sed -i \
-e '/SUBDIRS/s|\ test||' \ -e '/SUBDIRS/s|\ test||' \
@ -170,6 +186,12 @@ src_configure() {
sed -i \ sed -i \
-e 's|RUBY = ruby|\022|' \ -e 's|RUBY = ruby|\022|' \
ruby/config/Make.rules || die "sed failed" 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 fi
MAKE_RULES_CS="GACINSTALL=yes GAC_ROOT=\"${ED}/usr/$(get_libdir)\" GAC_DIR=${EPREFIX}/usr/$(get_libdir) MAKE_RULES_CS="GACINSTALL=yes GAC_ROOT=\"${ED}/usr/$(get_libdir)\" GAC_DIR=${EPREFIX}/usr/$(get_libdir)
@ -289,39 +311,32 @@ src_install() {
fi 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() { 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 if use python ; then
testing() { testing() {
# tests require that the directory is named 'python' # tests require that the directory is named 'python'
ln -f -s ../"${BUILD_DIR}"/python python/python || die 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 BUILD_DIR=python python_foreach_impl testing
fi fi
if use ruby ; then 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 fi
if use mono ; then if use mono ; then
# skip mono tests, bug #498484 # skip mono tests, bug #498484
ewarn "Tests for C# are currently disabled." 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 fi
} }

View File

@ -0,0 +1,26 @@
From 69e03dfb1c7fa26d2bc8a571bc773994607eb01d Mon Sep 17 00:00:00 2001
From: Dwayne Boone <dwayne@zeroc.com>
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()

View File

@ -0,0 +1,272 @@
From a973118e7026ed1ab89caeaf612bc80873b4fe04 Mon Sep 17 00:00:00 2001
From: Dwayne Boone <dwayne@zeroc.com>
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)