Repository: qpid-proton Updated Branches: refs/heads/master 89e65bc15 -> 18cc9e6ae
Revert "PROTON-1798: Replace env.py with `cmake -E env`" CMake 2.8.12 does not support this feature. This reverts commit 89e65bc15862bdc63c6a7abb3e37ed73d9d0f4b7. Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/18cc9e6a Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/18cc9e6a Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/18cc9e6a Branch: refs/heads/master Commit: 18cc9e6ae317362625a65b5a16ac429726caf85e Parents: 89e65bc Author: Alan Conway <acon...@redhat.com> Authored: Thu Jul 12 11:02:27 2018 -0400 Committer: Alan Conway <acon...@redhat.com> Committed: Thu Jul 12 11:02:27 2018 -0400 ---------------------------------------------------------------------- CMakeLists.txt | 2 +- c/CMakeLists.txt | 5 ++- c/examples/CMakeLists.txt | 4 +-- c/tests/CMakeLists.txt | 4 +-- cpp/CMakeLists.txt | 5 ++- cpp/examples/CMakeLists.txt | 7 ++-- go/CMakeLists.txt | 2 +- python/CMakeLists.txt | 16 ++++----- ruby/CMakeLists.txt | 2 +- scripts/env.py | 70 ++++++++++++++++++++++++++++++++++++++++ 10 files changed, 90 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index 035c300..b7ea06c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,7 @@ enable_testing () ## Variables used across components -set (WITH_ENV "${CMAKE_COMMAND}" -E env) +set (PN_ENV_SCRIPT "${PYTHON_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/scripts/env.py") set (PN_C_INCLUDE_DIR "${CMAKE_BINARY_DIR}/c/include") set (PN_C_LIBRARY_DIR "${CMAKE_BINARY_DIR}/c") set (PN_C_SOURCE_DIR "${CMAKE_BINARY_DIR}/c/src") http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/c/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/c/CMakeLists.txt b/c/CMakeLists.txt index 7c87c21..df9ff62 100644 --- a/c/CMakeLists.txt +++ b/c/CMakeLists.txt @@ -65,14 +65,13 @@ include_directories ( add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/encodings.h - COMMAND ${WITH_ENV} PYTHONPATH=${CMAKE_SOURCE_DIR}/tools/python ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/src/encodings.h.py > ${CMAKE_CURRENT_BINARY_DIR}/src/encodings.h + COMMAND ${PN_ENV_SCRIPT} PYTHONPATH=${CMAKE_SOURCE_DIR}/tools/python ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/src/encodings.h.py > ${CMAKE_CURRENT_BINARY_DIR}/src/encodings.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/encodings.h.py ) add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/protocol.h - COMMAND ${WITH_ENV} PYTHONPATH=${CMAKE_SOURCE_DIR}/tools/python - ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/src/protocol.h.py > ${CMAKE_CURRENT_BINARY_DIR}/src/protocol.h + COMMAND ${PN_ENV_SCRIPT} PYTHONPATH=${CMAKE_SOURCE_DIR}/tools/python ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/src/protocol.h.py > ${CMAKE_CURRENT_BINARY_DIR}/src/protocol.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/protocol.h.py ) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/c/examples/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/c/examples/CMakeLists.txt b/c/examples/CMakeLists.txt index a0e172d..6128f62 100644 --- a/c/examples/CMakeLists.txt +++ b/c/examples/CMakeLists.txt @@ -45,6 +45,6 @@ endif() add_test( NAME c-example-tests - COMMAND ${WITH_ENV} "PATH=${test_path}" ${VALGRIND_ENV} - ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example_test.py -v + COMMAND ${PN_ENV_SCRIPT} "PATH=${test_path}" ${VALGRIND_ENV} -- + ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example_test.py -v WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/c/tests/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/c/tests/CMakeLists.txt b/c/tests/CMakeLists.txt index 61adc98..c79cda4 100644 --- a/c/tests/CMakeLists.txt +++ b/c/tests/CMakeLists.txt @@ -30,7 +30,7 @@ macro (pn_build_c_test test) endif (BUILD_WITH_CXX) endmacro() -set(test_env ${WITH_ENV} "PATH=$<TARGET_FILE_DIR:qpid-proton-core>") +set(test_env ${PN_ENV_SCRIPT} -- "PATH=$<TARGET_FILE_DIR:qpid-proton-core>") macro (pn_add_c_test test) pn_build_c_test(${test} ${ARGN}) @@ -79,7 +79,7 @@ if(HAS_PROACTOR) set(path "$<TARGET_FILE_DIR:c-broker>:$ENV{PATH}") endif(WIN32) - add_test(NAME c-fdlimit-tests COMMAND ${WITH_ENV} "PATH=${path}" "PYTHONPATH=${pypath}" ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/fdlimit.py) + add_test(NAME c-fdlimit-tests COMMAND ${PN_ENV_SCRIPT} -- "PATH=${path}" "PYTHONPATH=${pypath}" ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/fdlimit.py) endif(HAS_PROACTOR) # fuzz tests: tests/fuzz http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/cpp/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 00baa39..71b0a29 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -239,10 +239,9 @@ macro(add_cpp_test test) target_link_libraries (${test} qpid-proton-cpp ${PLATFORM_LIBS}) if (CMAKE_SYSTEM_NAME STREQUAL Windows) add_test (NAME cpp-${test} - COMMAND ${WITH_ENV} + COMMAND ${PN_ENV_SCRIPT} "PATH=$<TARGET_FILE_DIR:qpid-proton>" - "$<TARGET_FILE:${test}>" - ${ARGN}) + $<TARGET_FILE:${test}> ${ARGN}) else () add_test (NAME cpp-${test} COMMAND ${memcheck-cmd} ${CMAKE_CURRENT_BINARY_DIR}/${test} ${ARGN}) endif () http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/cpp/examples/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/cpp/examples/CMakeLists.txt b/cpp/examples/CMakeLists.txt index 4c58a72..18d922e 100644 --- a/cpp/examples/CMakeLists.txt +++ b/cpp/examples/CMakeLists.txt @@ -112,11 +112,8 @@ macro(add_cpp_test name) endif(WIN32) add_test( NAME ${name} - COMMAND ${WITH_ENV} - "PATH=${test_path}" - ${VALGRIND_ENV} - "HAS_CPP11=$<$<BOOL:${HAS_ENOUGH_CPP11}>:1>" - ${ARGN} + COMMAND ${PN_ENV_SCRIPT} "PATH=${test_path}" ${VALGRIND_ENV} + "HAS_CPP11=$<$<BOOL:${HAS_ENOUGH_CPP11}>:1>" -- ${ARGN} ) endmacro() http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/go/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/go/CMakeLists.txt b/go/CMakeLists.txt index 771730a..951f8a3 100644 --- a/go/CMakeLists.txt +++ b/go/CMakeLists.txt @@ -48,7 +48,7 @@ add_custom_target(go-src-link ALL COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/src ${GOPATH}/src) # Following are CACHE INTERNAL so examples/CMakeLists.txt can see them. -set(GO_ENV ${WITH_ENV} +set(GO_ENV ${PN_ENV_SCRIPT} -- "GOPATH=${GOPATH}" "CGO_CFLAGS=-I${PN_C_INCLUDE_DIR}" "CGO_LDFLAGS=-L${PN_C_LIBRARY_DIR}" http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/python/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 282f236..31fcfba 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -113,9 +113,8 @@ if (EPYDOC_EXE) list(APPEND PY_DOC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${py_src_doc}") endforeach(py_src_doc) add_custom_target(docs-py - COMMAND ${WITH_ENV} - PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_SOURCE_DIR} - ${EPYDOC_EXE} -v --no-private --html -o ${CMAKE_CURRENT_BINARY_DIR}/html ${PY_DOC_FILES} + COMMAND ${PN_ENV_SCRIPT} -- PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_SOURCE_DIR} + ${EPYDOC_EXE} -v --no-private --html -o ${CMAKE_CURRENT_BINARY_DIR}/html ${PY_DOC_FILES} DEPENDS ${SWIG_MODULE_${cproton}_REAL_NAME}) add_dependencies(docs docs-py) install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html/" @@ -128,8 +127,7 @@ find_program(SPHINX_EXE sphinx-build) mark_as_advanced (SPHINX_EXE) if (SPHINX_EXE) add_custom_target(tutorial-py - COMMAND ${WITH_ENV} - PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ${PN_ENV_SCRIPT} -- PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_SOURCE_DIR} ${SPHINX_EXE} -b html ${CMAKE_CURRENT_SOURCE_DIR}/docs ${CMAKE_CURRENT_BINARY_DIR}/tutorial) add_dependencies(docs tutorial-py) install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/tutorial/" @@ -204,11 +202,11 @@ if (CMAKE_BUILD_TYPE MATCHES "Coverage") endif(CMAKE_BUILD_TYPE MATCHES "Coverage") add_test (NAME python-test - COMMAND ${WITH_ENV} + COMMAND ${PN_ENV_SCRIPT} "PATH=${py_path}" "PYTHONPATH=${py_pythonpath}" "SASLPASSWD=${CyrusSASL_Saslpasswd_EXECUTABLE}" ${VALGRIND_ENV} - ${PYTHON_EXECUTABLE} ${python_coverage_options} "${py_tests}/proton-test") + ${PYTHON_EXECUTABLE} -- ${python_coverage_options} "${py_tests}/proton-test") set_tests_properties(python-test PROPERTIES PASS_REGULAR_EXPRESSION "Totals: .* 0 failed") check_python_module("tox" TOX_MODULE_FOUND) @@ -232,11 +230,11 @@ else () "${CMAKE_CURRENT_SOURCE_DIR}/tox.ini.in" "${CMAKE_CURRENT_BINARY_DIR}/tox.ini") add_test (NAME python-tox-test - COMMAND ${WITH_ENV} + COMMAND ${PN_ENV_SCRIPT} "PATH=${py_path}" "SASLPASSWD=${CyrusSASL_Saslpasswd_EXECUTABLE}" "SWIG=${SWIG_EXECUTABLE}" - ${VALGRIND_ENV} + ${VALGRIND_ENV} -- ${PYTHON_EXECUTABLE} -m tox) set_tests_properties(python-tox-test PROPERTIES http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/ruby/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/ruby/CMakeLists.txt b/ruby/CMakeLists.txt index 09fa49f..59486f9 100644 --- a/ruby/CMakeLists.txt +++ b/ruby/CMakeLists.txt @@ -122,7 +122,7 @@ to_native_path("${bin};${c_lib_dir};$ENV{PATH}" PATH) execute_process(COMMAND ${RUBY_EXECUTABLE} -r minitest -e "" RESULT_VARIABLE result OUTPUT_QUIET ERROR_QUIET) if (result EQUAL 0) # Have minitest - set(test_env ${WITH_ENV} "PATH=${PATH}" "RUBYLIB=${RUBYLIB}" "SASLPASSWD=${CyrusSASL_Saslpasswd_EXECUTABLE}") + set(test_env ${PN_ENV_SCRIPT} -- "PATH=${PATH}" "RUBYLIB=${RUBYLIB}" "SASLPASSWD=${CyrusSASL_Saslpasswd_EXECUTABLE}") macro(add_ruby_test script) get_filename_component(name ${script} NAME_WE) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/18cc9e6a/scripts/env.py ---------------------------------------------------------------------- diff --git a/scripts/env.py b/scripts/env.py new file mode 100644 index 0000000..04fa8bb --- /dev/null +++ b/scripts/env.py @@ -0,0 +1,70 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# +# A platform-agnostic tool for running a program in a modified environment. +# + +import sys +import os +import subprocess +from optparse import OptionParser + +def main(argv=None): + + parser = OptionParser(usage="Usage: %prog [options] [--] VAR=VALUE... command [options] arg1 arg2...") + parser.add_option("-i", "--ignore-environment", + action="store_true", default=False, + help="Start with an empty environment (do not inherit current environment)") + + (options, args) = parser.parse_args(args=argv) + + if options.ignore_environment: + new_env = {} + else: + new_env = os.environ.copy() + + # pull out each name value pair + while (len(args)): + z = args[0].split("=",1) + if len(z) != 2: + break; # done with env args + if len(z[0]) == 0: + raise Exception("Error: incorrect format for env var: '%s'" % str(args[x])) + del args[0] + if len(z[1]) == 0: + # value is not present, so delete it + if z[0] in new_env: + del new_env[z[0]] + else: + new_env[z[0]] = z[1] + + if len(args) == 0 or len(args[0]) == 0: + raise Exception("Error: syntax error in command arguments") + + if new_env.get("VALGRIND") and new_env.get("VALGRIND_ALL"): + # Python generates a lot of possibly-lost errors that are not errors, don't show them. + args = [new_env.get("VALGRIND"), "--show-reachable=no", "--show-possibly-lost=no", + "--error-exitcode=42"] + args + + p = subprocess.Popen(args, env=new_env) + return p.wait() + +if __name__ == "__main__": + sys.exit(main()) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org