Rsync installspace overhaul
stonier opened this issue · comments
Installpace Targets
Thinking about moving from a single /opt/yujin/indigo
install spaces to multiple, one for each target - e.g. groot, concert, waiterbot, etc.
- Put into
/opt/yujin/<target>/indigo
- Put core libraries (e.g. ecl) into
/opt/yujin/core/indigo
- These should have deps that are installable on pretty much any pc or intel embedded pc we own
- Q) split this into
base
anddesktop
for non-gui and gui? - Advantage - nicely splits things and parrallels ros groupings
- Disadvantage - not necessary right now and is an extra step.
- Other more specific targets can of course, rely on our core installspace.
Setting up a workspace root
I just set up a basic workspace on my pc. e.g. for a 'groot' target:
- /opt/groot/ecl_ws
- /opt/groot/dslam_ws
....
The only magic here is that you set CMAKE_INSTALL_PREFIX in every config.cmake to where you want it to install to.
** Yujin Tools **
Right now it only works on the one installspace, we need to ugprade yujin tools to handle the concept of targets so we can do something like:
# To send an installspace to the server:
> yujin_rsync_installspace gopher --push
# or to pull
> yujin_rsync_installspace gopher
# To see what's available
> yujin_rsync_installspace --list
Maybe we need a github file like the rosinstalls which list all the different installspaces we have.
yujin_rsync_installspace would then do a lookup.
Buildspace Script
Same thing here, this needs an upgrade, but it is how I currently do it for our single target. Note this has two modes. Default is to build. The non-default requires --push and uses
yujin_rsync_installspace to rysnc with our fileserver.
#!/bin/bash
if [ "$1" == "--push" ]; then
yujin_rsync_installspace --push
exit 0
fi
if [ $# -gt 0 ]; then
echo ""
echo "This builds and installs the groot workspace into /opt/yujin/indigo."
echo ""
echo " Options:"
echo " --pre-clean : pre-cleans with yujin_make each source workspace"
echo " --push : do not build, just rsync to the file server"
echo ""
echo " Current workspaces:"
echo " ecto"
echo " ecl"
echo " navi"
echo " dslam"
echo " gopher"
echo ""
exit 0
fi
OPTIONS=
if [ "$1" == "--pre-clean" ]; then
OPTIONS=--pre-clean
fi
GROOT=/opt/groot
REPOS=(ecto ecl navi dslam gopher)
#rm -rf /opt/yujin/indigo
for ws in "${REPOS[@]}"; do
WS_ROOT=${GROOT}/${ws}_ws
WS_SRC=${WS_ROOT}/src
cd ${WS_SRC}
wstool update -j5
cd ${WS_ROOT}
yujin_make ${OPTIONS}
yujin_make --install
done
Jenkins
Be good to get this running on jenkins. However our jenkins is on precise, so we'd need to do it as a ssh job.
@jihoonl bump
This is all working, from jenkins as well. All workspaces contribute directly to /opt/yujin/indigo
.
One binary source for yujin I think is the best idea. We don't have the resources to maintain many parallel developments. If there are special cases, there are ways to work around it.