Fawkes のための Fedora のための ROS

Fawkes on FedoraのためにROS をいれたいのだが,古いFedora だと,サポートが打ち切られている感じがするので,それらのまとめ.

Fawkes が要求するROS のバージョンとしては,Indigo,Jade,Kinetix とあります.

Indigo とJadeは,patch の提供が止まっていて,新規インストールができませんでした.
Indigo (Tested for Fedora 23, 24 and 25)

curl -o stage-cpp11.patch https://patch-diff.githubusercontent.com/raw/rtv/Stage/pull/62.patch

上記が,「Sorry, this diff is unavailable.」とのことで,得られず, stage のコンパイルでコケます.

ROS(jade)のインストール(Fedora)でも,同じファイルを使っていますので,不可です.

stage.hh に対するパッチのようです.

wataru@fedoraMini:~/ros_catkin_ws/src$ find | grep stage.hh 
./stage/libstage/stage.hh

エラーを見てみると,625行目のマクロの定義が何かおかしいみたい.
引数m を使っているところが,どうやらmと見なしてもらえていないっぽい.

というわけで,mの前後にスペースを入れて,引数を明確にしてみました.

// 変更前
#define PRINT_ERR(m) fprintf( stderr, "\033[41merr\033[0m: "m" (%s %s)\n", __FILE__, __FUNCTION__)

// 変更後
define PRINT_ERR(m) fprintf( stderr, "\033[41merr\033[0m: " m " (%s %s)\n", __FILE__, __FUNCTION__)

マクロのところ全部,置換してみました.

とりあえず,これで行けそう!.

  // Error macros - output goes to stderr
#define PRINT_ERR(m) fprintf( stderr, "\033[41merr\033[0m: " m " (%s %s)\n", __FILE__, __FUNCTION__)
#define PRINT_ERR1(m,a) fprintf( stderr, "\033[41merr\033[0m: " m " (%s %s)\n", a, __FILE__, __FUNCTION__)
#define PRINT_ERR2(m,a,b) fprintf( stderr, "\033[41merr\033[0m: " m " (%s %s)\n", a, b, __FILE__, __FUNCTION__)
#define PRINT_ERR3(m,a,b,c) fprintf( stderr, "\033[41merr\033[0m: " m " (%s %s)\n", a, b, c, __FILE__, __FUNCTION__)
#define PRINT_ERR4(m,a,b,c,d) fprintf( stderr, "\033[41merr\033[0m: " m " (%s %s)\n", a, b, c, d, __FILE__, __FUNCTION__)
#define PRINT_ERR5(m,a,b,c,d,e) fprintf( stderr, "\033[41merr\033[0m: " m " (%s %s)\n", a, b, c, d, e, __FILE__, __FUNCTION__)

  // Warning macros
#define PRINT_WARN(m) printf( "\033[44mwarn\033[0m: " m " (%s %s)\n", __FILE__, __FUNCTION__)
#define PRINT_WARN1(m,a) printf( "\033[44mwarn\033[0m: " m " (%s %s)\n", a, __FILE__, __FUNCTION__)
#define PRINT_WARN2(m,a,b) printf( "\033[44mwarn\033[0m: " m " (%s %s)\n", a, b, __FILE__, __FUNCTION__)
#define PRINT_WARN3(m,a,b,c) printf( "\033[44mwarn\033[0m: " m " (%s %s)\n", a, b, c, __FILE__, __FUNCTION__)
#define PRINT_WARN4(m,a,b,c,d) printf( "\033[44mwarn\033[0m: " m " (%s %s)\n", a, b, c, d, __FILE__, __FUNCTION__)
#define PRINT_WARN5(m,a,b,c,d,e) printf( "\033[44mwarn\033[0m: " m " (%s %s)\n", a, b, c, d, e, __FILE__, __FUNCTION__)

  // Message macros
#ifdef DEBUG
#define PRINT_MSG(m) printf( "Stage: " m " (%s %s)\n", __FILE__, __FUNCTION__)
#define PRINT_MSG1(m,a) printf( "Stage: " m " (%s %s)\n", a, __FILE__, __FUNCTION__)
#define PRINT_MSG2(m,a,b) printf( "Stage: " m " (%s %s)\n", a, b, __FILE__, __FUNCTION__)
#define PRINT_MSG3(m,a,b,c) printf( "Stage: " m " (%s %s)\n", a, b, c, __FILE__, __FUNCTION__)
#define PRINT_MSG4(m,a,b,c,d) printf( "Stage: " m " (%s %s)\n", a, b, c, d, __FILE__, __FUNCTION__)
#define PRINT_MSG5(m,a,b,c,d,e) printf( "Stage: " m " (%s %s)\n", a, b, c, d, e,__FILE__, __FUNCTION__)
#else
#define PRINT_MSG(m) printf( "Stage: " m "\n" )
#define PRINT_MSG1(m,a) printf( "Stage: " m "\n", a)
#define PRINT_MSG2(m,a,b) printf( "Stage: " m "\n,", a, b )
#define PRINT_MSG3(m,a,b,c) printf( "Stage: " m "\n", a, b, c )
#define PRINT_MSG4(m,a,b,c,d) printf( "Stage: " m "\n", a, b, c, d )
#define PRINT_MSG5(m,a,b,c,d,e) printf( "Stage: " m "\n", a, b, c, d, e )
#endif

  // DEBUG macros
#ifdef DEBUG
#define PRINT_DEBUG(m) printf( "debug: " m " (%s %s)\n", __FILE__, __FUNCTION__)
#define PRINT_DEBUG1(m,a) printf( "debug: " m " (%s %s)\n", a, __FILE__, __FUNCTION__)
#define PRINT_DEBUG2(m,a,b) printf( "debug: " m " (%s %s)\n", a, b, __FILE__, __FUNCTION__)
#define PRINT_DEBUG3(m,a,b,c) printf( "debug: " m " (%s %s)\n", a, b, c, __FILE__, __FUNCTION__)
#define PRINT_DEBUG4(m,a,b,c,d) printf( "debug: " m " (%s %s)\n", a, b, c ,d, __FILE__, __FUNCTION__)
#define PRINT_DEBUG5(m,a,b,c,d,e) printf( "debug: " m " (%s %s)\n", a, b, c ,d, e, __FILE__, __FUNCTION__)
#else
#define PRINT_DEBUG(m)
#define PRINT_DEBUG1(m,a)
#define PRINT_DEBUG2(m,a,b)
#define PRINT_DEBUG3(m,a,b,c)
#define PRINT_DEBUG4(m,a,b,c,d)
#define PRINT_DEBUG5(m,a,b,c,d,e)
#endif

  class Block;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*