Skip to content

Commit

Permalink
Revert "PROTON-1798: Replace env.py with cmake -E env"
Browse files Browse the repository at this point in the history
CMake 2.8.12 does not support this feature.

This reverts commit 89e65bc.
  • Loading branch information
alanconway committed Jul 12, 2018
1 parent 89e65bc commit 18cc9e6
Show file tree
Hide file tree
Showing 10 changed files with 90 additions and 27 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
5 changes: 2 additions & 3 deletions c/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)

Expand Down
4 changes: 2 additions & 2 deletions c/examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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})
4 changes: 2 additions & 2 deletions c/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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})
Expand Down Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 ()
Expand Down
7 changes: 2 additions & 5 deletions cpp/examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down
2 changes: 1 addition & 1 deletion go/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand Down
16 changes: 7 additions & 9 deletions python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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/"
Expand All @@ -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/"
Expand Down Expand Up @@ -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)
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion ruby/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
70 changes: 70 additions & 0 deletions scripts/env.py
Original file line number Diff line number Diff line change
@@ -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())

0 comments on commit 18cc9e6

Please sign in to comment.