-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add standalone executables Signed-off-by: ahcorde <ahcorde@gmail.com> * Added feedback and more tests Signed-off-by: ahcorde <ahcorde@gmail.com> * Add one more test Signed-off-by: ahcorde <ahcorde@gmail.com> * Fixed test Signed-off-by: ahcorde <ahcorde@gmail.com>
- Loading branch information
Showing
12 changed files
with
422 additions
and
319 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version='1.0'?> | ||
<ignition version='1.0'> | ||
<executable name='ls'> | ||
<command>ls</command> | ||
</executable> | ||
</ignition> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
# Collect source files into the "sources" variable and unit test files into the | ||
# "gtest_sources" variable. | ||
ign_get_libsources_and_unittests(sources gtest_sources) | ||
|
||
add_library(ign STATIC ign.cc) | ||
target_include_directories(ign PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) | ||
target_link_libraries(ign PUBLIC | ||
${PROJECT_LIBRARY_TARGET_NAME} | ||
ignition-common${IGN_COMMON_MAJOR_VER}::ignition-common${IGN_COMMON_MAJOR_VER} | ||
) | ||
|
||
set(launch_executable ign-launch) | ||
add_executable(${launch_executable} launch_main.cc) | ||
target_link_libraries(${launch_executable} | ||
ign | ||
ignition-utils${IGN_UTILS_VER}::cli | ||
ignition-common${IGN_COMMON_MAJOR_VER}::ignition-common${IGN_COMMON_MAJOR_VER} | ||
) | ||
|
||
install( | ||
TARGETS | ||
${launch_executable} | ||
DESTINATION | ||
${IGN_LIB_INSTALL_DIR}/ignition/${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}/ | ||
) | ||
|
||
# Build the unit tests. | ||
ign_build_tests(TYPE UNIT SOURCES ${gtest_sources} | ||
TEST_LIST test_list | ||
LIB_DEPS ${EXTRA_TEST_LIB_DEPS}) | ||
|
||
foreach(test ${test_list}) | ||
target_link_libraries(${test} ign) | ||
|
||
# Inform each test of its output directory so it knows where to call the | ||
# auxiliary files from. Using a generator expression here is useful for | ||
# multi-configuration generators, like Visual Studio. | ||
target_compile_definitions(${test} PRIVATE | ||
"DETAIL_IGN_TRANSPORT_TEST_DIR=\"$<TARGET_FILE_DIR:${test}>\"" | ||
"IGN_TEST_LIBRARY_PATH=\"$<TARGET_FILE_DIR:${PROJECT_LIBRARY_TARGET_NAME}>\"") | ||
|
||
endforeach() | ||
|
||
if (TARGET UNIT_ign_TEST) | ||
set_tests_properties( | ||
UNIT_ign_TEST | ||
PROPERTIES | ||
ENVIRONMENT | ||
"IGN_CONFIG_PATH=${CMAKE_BINARY_DIR}/test/conf/$<CONFIG>" | ||
) | ||
endif() | ||
|
||
#=============================================================================== | ||
# Generate the ruby script for internal testing. | ||
# Note that the major version of the library is included in the name. | ||
# Ex: cmdlaunch5.rb | ||
set(cmd_script_generated_test "${CMAKE_BINARY_DIR}/test/lib/ruby/ignition/cmd${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}.rb") | ||
set(cmd_script_configured_test "${CMAKE_CURRENT_BINARY_DIR}/test_cmd${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}.rb.configured") | ||
|
||
# Set the library_location variable to the full path of the library file within | ||
# the build directory. | ||
set(launch_exe_location "$<TARGET_FILE:${launch_executable}>") | ||
|
||
configure_file( | ||
"cmd${IGN_DESIGNATION}.rb.in" | ||
"${cmd_script_configured_test}" | ||
@ONLY | ||
) | ||
|
||
file(GENERATE | ||
OUTPUT "${cmd_script_generated_test}" | ||
INPUT "${cmd_script_configured_test}" | ||
) | ||
|
||
#=============================================================================== | ||
# Used for the installed version. | ||
# Generate the ruby script that gets installed. | ||
# Note that the major version of the library is included in the name. | ||
# Ex: cmdlaunch5.rb | ||
set(cmd_script_generated "${CMAKE_CURRENT_BINARY_DIR}/cmd${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}.rb") | ||
set(cmd_script_configured "${cmd_script_generated}.configured") | ||
|
||
# Set the library_location variable to the relative path to the library file | ||
# within the install directory structure. | ||
set(launch_exe_location "../../../${CMAKE_INSTALL_LIBDIR}/ignition/${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}/$<TARGET_FILE_NAME:${launch_executable}>") | ||
|
||
message("launch_exe_location " ${launch_exe_location}) | ||
|
||
configure_file( | ||
"cmd${IGN_DESIGNATION}.rb.in" | ||
"${cmd_script_configured}" | ||
@ONLY) | ||
|
||
file(GENERATE | ||
OUTPUT "${cmd_script_generated}" | ||
INPUT "${cmd_script_configured}") | ||
|
||
set(ign_library_path "${CMAKE_BINARY_DIR}/test/lib/ruby/ignition/cmd${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}") | ||
|
||
# Generate a configuration file for internal testing. | ||
# Note that the major version of the library is included in the name. | ||
# Ex: launch5.yaml | ||
configure_file( | ||
"${IGN_DESIGNATION}.yaml.in" | ||
"${CMAKE_CURRENT_BINARY_DIR}/${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}.yaml.configured" @ONLY) | ||
|
||
file(GENERATE | ||
OUTPUT "${CMAKE_BINARY_DIR}/test/conf/${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}.yaml" | ||
INPUT "${CMAKE_CURRENT_BINARY_DIR}/${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}.yaml.configured") | ||
|
||
# Used for the installed version. | ||
set(ign_library_path "${CMAKE_INSTALL_PREFIX}/lib/ruby/ignition/cmd${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}") | ||
|
||
# Generate the configuration file that is installed. | ||
# Note that the major version of the library is included in the name. | ||
# Ex: launch5.yaml | ||
configure_file( | ||
"${IGN_DESIGNATION}.yaml.in" | ||
"${CMAKE_CURRENT_BINARY_DIR}/${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}.yaml" @ONLY) | ||
|
||
# Install the yaml configuration files in an unversioned location. | ||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${IGN_DESIGNATION}${PROJECT_VERSION_MAJOR}.yaml | ||
DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/ignition/) | ||
|
||
# Install the ruby command line library in an unversioned location. | ||
install(FILES ${cmd_script_generated} DESTINATION lib/ruby/ignition) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
#!/usr/bin/env ruby | ||
|
||
# Copyright (C) 2014 Open Source Robotics Foundation | ||
# | ||
# Licensed 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. | ||
|
||
require 'open3' | ||
|
||
# Constants. | ||
LIBRARY_VERSION = '@PROJECT_VERSION_FULL@' | ||
COMMANDS = { | ||
"launch" => "@launch_exe_location@", | ||
} | ||
|
||
# | ||
# Class for the Ignition launch command line tools. | ||
# | ||
class Cmd | ||
def execute(args) | ||
command = args[0] | ||
exe_name = COMMANDS[command] | ||
|
||
if exe_name[0] == '/' | ||
# If the first character is a slash, we'll assume that we've been given an | ||
# absolute path to the executable. This is only used during test mode. | ||
else | ||
# We're assuming that the library path is relative to the current | ||
# location of this script. | ||
exe_name = File.expand_path(File.join(File.dirname(__FILE__), exe_name)) | ||
end | ||
conf_version = LIBRARY_VERSION | ||
exe_version = `#{exe_name} --version`.strip | ||
|
||
# Sanity check: Verify that the version of the yaml file matches the version | ||
# of the library that we are using. | ||
unless exe_version.eql? conf_version | ||
puts "Error: Version mismatch. Your configuration file version is | ||
[#{conf_version}] but #{exe_name} version is [#{exe_version}]." | ||
exit(-1) | ||
end | ||
|
||
# Drop command from list of arguments | ||
Open3.popen2e(exe_name, *args[1..-1]) do |_in, out_err, wait_thr| | ||
begin | ||
out_err.each do |line| | ||
print line | ||
end | ||
exit(wait_thr.value.exitstatus) | ||
rescue Interrupt => e | ||
print e.message | ||
exit(-1) | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.