Skip to content

Commit

Permalink
Merge branch 'master' of git://github.com/willowgarage/catkin
Browse files Browse the repository at this point in the history
  • Loading branch information
ethanrublee committed Jan 9, 2012
2 parents e4be159 + 6c7766a commit 08704b0
Show file tree
Hide file tree
Showing 18 changed files with 405 additions and 119 deletions.
5 changes: 5 additions & 0 deletions 00.catkin.buildspace.sh.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#
# Dummy buildspace file containing nothing of interest
#


4 changes: 4 additions & 0 deletions 00.catkin.sh.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#
# Dummy installspace file containing nothing of interest.
#

9 changes: 7 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ set(catkin_EXTRAS_DIR ${catkin_EXTRAS_DIR_VALUE} CACHE FILEPATH "catkin extras")

include(${catkin_EXTRAS_DIR}/all.cmake)

catkin_add_env_hooks(00.catkin.buildspace.sh 00.catkin.sh)

catkin_project(catkin)

install_cmake_config_version(ROS 12.04)
Expand All @@ -28,8 +30,10 @@ configure_file(ros-config.buildspace.cmake.in
install(FILES ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/ros-config.cmake
DESTINATION share/ros/cmake)

install(DIRECTORY cmake/
DESTINATION share/catkin/cmake #to be consistent, all catkin specific cmake should live under catkin.
install(DIRECTORY cmake
#to be consistent, all catkin specific cmake should live under catkin.
#NOTE the trailing slash here. You need it.
DESTINATION share/catkin/
USE_SOURCE_PERMISSIONS
)

Expand All @@ -55,3 +59,4 @@ catkin_export_python(python)
stamp(cmake/stack_get.py)

sphinx(${CMAKE_CURRENT_SOURCE_DIR}/doc ${CMAKE_CURRENT_BINARY_DIR}/doc)

23 changes: 23 additions & 0 deletions bin/catkin_install_parse
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/env python

import yaml
import argparse
import sys

def parse_args(argv=None):
parser = argparse.ArgumentParser(description="Parse a rosinstall file, and output fields in a CSV format.")
parser.add_argument('ri_file',help='The rosinstall file to parse.')
parser.add_argument('vcs_type',help='The vcs type')
parser.add_argument('FIELD',nargs='*',help='The field to extract from the ros install file per entry.')
return parser.parse_args(args=argv)

args = parse_args()
ri_file = yaml.load(open(args.ri_file))
for info in [ x[args.vcs_type] for x in ri_file if args.vcs_type in x] :
infos = []
for x in args.FIELD:
val = info.get(x,None)
if val:
infos.append(val)
if infos:
sys.stdout.write(','.join(infos)+'\n')
6 changes: 6 additions & 0 deletions bin/catkin_util.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ initializeANSI()

initializeANSI

find_workspace() {
VAR=$1
pushd .

}

maybe_continue () {
DEFAULT=$1
shift
Expand Down
186 changes: 145 additions & 41 deletions bin/git-catkin
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
#!/bin/bash
#!/bin/bash -e

WORKSPACE=$(cd `dirname $0`/../..; pwd)
#
# Possibly lousy assumption: workspace is two directories up.
#
TOP=$(cd `dirname $0`; /bin/pwd)
. $TOP/catkin_util.sh

#SUBDIRECTORY_OK=1
#. $(git --exec-path)/git-sh-setup

echo $USAGE

help ()
{
cat <<EOF
gc_help() {

cat <<EOF
Usage: git catkin [command] ..
commands:
Expand All @@ -35,6 +34,7 @@ commands:
git pull
hg pull -u
svn update
fetch
Expand All @@ -48,31 +48,65 @@ commands:
hg status
svn status
install ROSINSTALL_FILE
This updates the current directory with the given rosinstall yaml
file.
EOF
}

USAGE=$(gc_help)


# set -x

search_up ()
{
FNAME=$1
DESTVAR=$2
if [ -n "$WORKSPACE" ] ; then
return 0
fi
if [ $# -gt 2 ] ; then
SEARCHDIR=$3
else
SEARCHDIR=$(/bin/pwd)
fi
while [ 1 ] ; do
/bin/echo "searchdir=$SEARCHDIR"
if [ -e $SEARCHDIR/$FNAME ] ; then
eval $DESTVAR=$SEARCHDIR
status "Workspace is ${boldon}${yellowf}$WORKSPACE${reset}"
return 0
fi
if [ $SEARCHDIR = "/" ] ; then
return 1
fi
SEARCHDIR=$(dirname $SEARCHDIR)
done
}

examine_workspace ()
{
search_up .rosinstall WORKSPACE
[ -z "$ALLDIRS" ] || return 0
for gitdir in $WORKSPACE/*/.git
do
GITDIRS="$GITDIRS $(dirname $gitdir)"
done
for svndir in $WORKSPACE/*/.svn
do
SVNDIRS="$SVNDIRS $(dirname $svndir)"
done
for hgdir in $WORKSPACE/*/.hg
for dir in $WORKSPACE/*
do
HGDIRS="$HGDIRS $(dirname $hgdir)"
if [ -d $dir ] ; then
if [ -e $dir/.git ] ; then
GITDIRS="$GITDIRS $dir"
elif [ -e $dir/.hg ] ; then
HGDIRS="$HGDIRS $dir"
elif [ -e $dir/.svn ] ; then
SVNDIRS="$SVNDIRS $dir"
fi
fi
done
ALLDIRS="$GITDIRS $SVNDIRS $HGDIRS"
}

foreach ()
gc_foreach ()
{
examine_workspace
type=${1}
Expand All @@ -81,38 +115,103 @@ foreach ()
DIRS=${!TYPE}
for d in $DIRS
do
/bin/echo "=== $type: $(basename $d) ==="
/bin/echo "${boldon}${whitef}=== ${greeni}$type: ${cyanf}$(basename $d)${whitef} ===${reset}"
cd $d
eval $JUSTECHO $*
done
}

status () {
foreach git git status
foreach hg hg status
foreach svn svn status
gc_status () {
gc_foreach git git status
gc_foreach hg hg status
gc_foreach svn svn status
}

gc_fetch () {
gc_foreach git git fetch --all
gc_foreach hg hg pull
gc_foreach svn svn update
}

fetch () {
foreach git git fetch --all
foreach hg hg pull
foreach svn svn update
gc_pull () {
gc_foreach git git pull
gc_foreach hg hg pull -u
gc_foreach svn svn update
}

pull () {
foreach git git pull
foreach hg hg pull -u
gc_difforigin () {
gc_foreach git git diff --stat origin/master
gc_foreach hg hg outgoing --stat
gc_foreach svn svn diff
}

difforigin () {
foreach git git diff --stat origin/master
foreach hg hg outgoing --stat
gc_remotes () {
gc_foreach git git remote -v
gc_foreach hg hg paths
gc_foreach svn "svn info | grep URL"
}

remotes () {
foreach git git remote -v
foreach hg hg paths
foreach svn "svn info | grep URL"
ri_svn()
{
repo_uri=$1
local_name=$2
version=$3
if [ ! -e $local_name/.svn ] ; then
(set -x && svn checkout $repo_uri $local_name)
fi
}

ri_hg()
{
repo_uri=$1
local_name=$2
version=$3
if [ ! -e $local_name/.hg ] ; then
(set -x && hg clone $repo_uri $local_name)
fi
}

ri_git()
{
repo_uri=$1
local_name=$2
version=$3
if [ ! -e $local_name/.git ] ; then
(set -x && git clone $repo_uri $local_name)
(set -x && cd $local_name && git checkout $version)
fi
}

ri_foreach()
{
ri=$($TOP/catkin_install_parse $1 $2 uri local-name version)
for i in $ri
do
arr=($(echo $i | tr "," "\n"))
repo_uri=${arr[0]}
local_name=${arr[1]}
version=${arr[2]}
status "${boldon}${whitef}=== ${greeni}$2: ${cyanf}${local_name}${whitef} ===${reset}"
ri_$2 $repo_uri $local_name $version
done

if [ "$1" != ".rosinstall" ] ; then
cp $1 .rosinstall
fi
}

gc_install()
{
if [ ! -e $1 ] ; then
status "Please supply a rosinstall style yaml file"
status "usage: git catkin install <rosinstal file>"
exit -1
fi
status "Will install workspace to ${cyanf}$(pwd)${reset}"
status "Using ${boldon}$1${reset}"
ri_foreach $1 git
ri_foreach $1 hg
ri_foreach $1 svn
}

CMD=$1
Expand All @@ -124,5 +223,10 @@ else
JUSTECHO=""
fi

eval $CMD $*

if eval gc_$CMD $* ;then
exit 0
else
status "try :"
status "${boldon} git catkin help${reset}"
exit -1
fi
1 change: 1 addition & 0 deletions cmake/all.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ foreach(f
catkin_project
catkin_workspace
catkin_export_python
catkin_add_env_hooks
langs
rosbuild_compat
tools/doxygen
Expand Down
15 changes: 15 additions & 0 deletions cmake/catkin_add_env_hooks.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
if (NOT IS_DIRECTORY ${CMAKE_BINARY_DIR}/etc/catkin/profile.d)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/etc/catkin/profile.d)
endif()

function(catkin_add_env_hooks BUILDSPACE INSTALLSPACE)

configure_file(${BUILDSPACE}.in ${CMAKE_BINARY_DIR}/etc/catkin/profile.d/${BUILDSPACE})
configure_file(${INSTALLSPACE}.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${INSTALLSPACE})

install(FILES ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${INSTALLSPACE}
DESTINATION
etc/catkin/profile.d)

endfunction()

11 changes: 8 additions & 3 deletions cmake/catkin_project.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,12 @@ function(catkin_project PACKAGE_NAME)
set(PACKAGE_LIBRARIES ${PACKAGE_LIBRARIES})
set(PACKAGE_CFG_EXTRAS ${PACKAGE_CFG_EXTRAS})
set(PACKAGE_CMAKE_CONFIG_FILES_DIR ${CMAKE_INSTALL_PREFIX}/share/${PACKAGE_NAME}/cmake)
set(PACKAGE_MSG_DIRS ${PACKAGE_MSG_DIRS})
# set(PACKAGE_MSG_DIRS ${PACKAGE_MSG_DIRS})

#
# Default executable output location to "private".
#
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin PARENT_SCOPE)

#
# Versions find_packageable from the buildspace
Expand All @@ -39,7 +44,7 @@ function(catkin_project PACKAGE_NAME)
# in source
set(PKG_INCLUDE_PREFIX ${CMAKE_CURRENT_SOURCE_DIR})
set(PKG_LIB_PREFIX ${CMAKE_CURRENT_BINARY_DIR})
set(PKG_MSG_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/msg)
# set(PKG_MSG_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/msg)
set(PKG_CMAKE_DIR ${_cfgdir})
set(PKG_CMAKE_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(PKG_BIN_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/scripts
Expand Down Expand Up @@ -93,7 +98,7 @@ function(catkin_project PACKAGE_NAME)
# installable
set(PKG_INCLUDE_PREFIX ${CMAKE_INSTALL_PREFIX})
set(PKG_LIB_PREFIX ${CMAKE_INSTALL_PREFIX})
set(PKG_MSG_DIRS ${CMAKE_INSTALL_PREFIX}/share/${PACKAGE_NAME}/msg)
# set(PKG_MSG_DIRS ${CMAKE_INSTALL_PREFIX}/share/${PACKAGE_NAME}/msg)
set(PKG_CMAKE_DIR ${CMAKE_INSTALL_PREFIX}/share/${PACKAGE_NAME}/cmake)
set(PKG_CMAKE_SRC_DIR ${PKG_CMAKE_DIR})
set(PKG_BIN_DIRS ${CMAKE_INSTALL_PREFIX}/bin)
Expand Down
11 changes: 7 additions & 4 deletions cmake/templates/setup.sh.buildspace.in
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
export ROS_ROOT=@CMAKE_SOURCE_DIR@/ros
export PYTHONPATH=@CMAKE_BINARY_DIR@/gen/py:@CMAKE_BINARY_DIR@/lib:$PYTHONPATH
export PATH=@CMAKE_BINARY_DIR@/bin:@catkin_SOURCE_DIR@/bin:@CMAKE_SOURCE_DIR@/ros/bin:$PATH
export PATH=@CMAKE_BINARY_DIR@/bin:@catkin_SOURCE_DIR@/bin:$PATH
export CATKIN_BINARY_DIR=@CMAKE_BINARY_DIR@
export CATKIN_SOURCE_DIR=@CMAKE_SOURCE_DIR@
export ROS_PACKAGE_PATH=@CMAKE_SOURCE_DIR@:$ROS_PACKAGE_PATH
export ROS_TEST_RESULTS_DIR=@CMAKE_BINARY_DIR@/test_results

for envfile in $CATKIN_BINARY_DIR/etc/catkin/profile.d/*
do
. $envfile
done

Loading

0 comments on commit 08704b0

Please sign in to comment.