-
Notifications
You must be signed in to change notification settings - Fork 81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rosdep cannot install package if manifest.xml has <rosdep> and <depend> #301
Comments
If we use a script like below, it is solved however ... #!/bin/bash
packages=`rospack depends opt_camera`
db_packages=`rosdep db`
for pkg in $packages
do
if [ "`echo $db_packages | grep -c $pkg`" != "0" ]; then
sudo apt-get install `rosdep db | grep $pkg | cut -d" " -f3`
fi
done |
rosdepを直すべきか |
いくつかの問題がごっちゃになってますね
|
とりあえずの解決案として、
というのが良いのではと思いますがどうでしょうか @k-okada |
rosdep的な解決は上の経緯でなさそうです manifest.xmlをリネームしておいてインストールしちゃうかどうかが判断になりそうですが リネームしないなら
リネームしちゃうなら
後者でしょうか? |
こんなかんじのスクリプトで対応するのはなしでしょうか? find . -name manifest.xml | xargs -n 1 dirname | xargs -n 1 basename | xargs -n 1 rospack rosdep | cut -f2 -d" " | xargs -n 1 rosdep resolve | sed -e "s/^#.*//g" | xargs -n 1 sudo apt-get install |
jsk.rosbuildだけではなくて、.travis.ymlの話もありますね。 jsk.rosbuildではリネーム作戦ありだとおもいます。 ですがそのいっぽうで、何も考えずにcatkinとしてコンパイルしたい人もいるかもですが... 結局manifest.xmlをディレクトリに存在させる限り、
のどちらかしかないですね |
逆に、manifest.xmlをデフォルトではmanifest.xml.deprecatedとかにしておく、という作戦もありそうな気がします(まだ早いですが) |
とりあえず、各レポジトリのtravis.ymlはrename作戦でいくことにします。 |
はい。僕の意見はこれです。rosmakeメインユーザからは反論があるかもしれません。 |
rosmakeされたときに 二回目にrosdepしたときにのみ動かない、という奇妙なことになりますが、そこは旧バージョンを使っているので消す手間を取るか移行してくださいということでどうでしょうか。 |
今後、rosbuildを使っていくのはどうあっても無理なので、以下の手順で進めるのがgithub/travisに移行した利点が生かせるのではないでしょうか
|
@tnaka rosmakeのcmakeが走る前にrospackとか走って問題にならないでしょうか? |
いや、rosbuildでやるひとは一番初めに一回だけln -sf manifest.xml.deprecated manifest.xml |
なるほど、rosmakeは各ディレクトリでcmakeする前にパッケージの依存関係を調べるのでrosmake時にはmanifest.xmlは必要そうですね。 ところで、fuerteなどで古いrosdepを使っている人はmanifest.xmlに書く方法で問題ないですよね? |
メモ manifest.xmlとpackage.xmlを両方持ってるパッケージ一覧 $ find . -name package.xml -exec dirname {} \; | xargs -n 1 -i find {} -name manifest.xml -exec basename {} \; manifest.xmlとpackage.xmlを両方持ってたらmanifest.xml.deprecatedにrename $ find . -name package.xml -exec dirname {} \; | xargs -n 1 -i find {} -name manifest.xml | xargs -n 1 -i mv {} {}.deprecated manifest.xml.deprecatedをmanifest.xmlにln $ find . -name manifest.xml.deprecated | xargs -n 1 -i dirname {} | xargs -n 1 -i ln -sf `pwd`/{}/manifest.xml.deprecated `pwd`/{}/manifest.xml |
rosdepはいつのバージョンからか、 https://github.com/ros/rosdistro/ をみるようになってるので、古いバージョンにしてもそれが参照するパッケージのリストは最新のものになる気がします |
manifest.xmlにrosdepとdependタグの両方を書くと、rosdepでパッケージがインストールされない気がします
たとえばmanifest.xmlを以下のようにすると
いっぽうで以下のようにすると
The text was updated successfully, but these errors were encountered: