Ask Your Question
0

Build failed in Jenkins: sensor_msgs/NavSatFix.h: No such file or directory

asked 2021-01-17 01:50:42 -0600

qinyunchuan gravatar image

updated 2021-04-22 11:24:00 -0600

miura gravatar image

Hi there, I released a new ROS package. But, the Jenkins job failed with following error:

/tmp/binarydeb/ros-kinetic-dgps-ros-1.0.0/src/dgps_ros_node.cpp:2:35: fatal error: sensor_msgs/NavSatFix.h: No such file or directory compilation terminated.

I checked my package.xml and found the sensor_msgs dependency is missing, so I fixed the mistake with sensor_msgs dependency in the package.xml and find_package declaration in the CMakeList.txt . Then I deleted my old git tag and made a new tag with the same name.

But, the Jenkins job still failed with the same error.

edit retag flag offensive close merge delete

Comments

Your repository appears to be hosted on gitee. That's annoying, as it's impossible to do anything there without an account.

gvdhoorn gravatar image gvdhoorn  ( 2021-01-17 06:42:19 -0600 )edit

I have changed the upstream repository to github with a new PR.

qinyunchuan gravatar image qinyunchuan  ( 2021-01-17 07:38:16 -0600 )edit

1 Answer

Sort by » oldest newest most voted
0

answered 2021-01-17 06:40:32 -0600

gvdhoorn gravatar image

updated 2021-01-17 07:02:32 -0600

I fixed the mistake with sensor_msgs dependency in the package.xml and find_package declaration in the CMakeList.txt . Then I deleted my old git tag and made a new tag with the same name.

you cannot do this.

It's both not how tags are supposed to work, and doesn't solve the problem you're seeing.

But, the Jenkins job still failed with the same error.

The reason is that the buildfarm does not clone your source repository when it runs a binary job. Nor do source jobs.

Bloom commits the tagged version from your source repository to your release repository and that repository is then fetched by the various jobs on the buildfarm. They only run though when they notice you've (re)released your package. To figure out whether you've done that, the relevant distribution.yaml is checked (for a newer version number).

Right now, if the buildfarm needs to rebuild your package (because of a release of one of your dependencies for instance), it will fetch your current released version from your release repository (which still has the problem) and nothing will change.

The only proper way to fix the dependency issue is to release your package again.

Suggested steps:

  1. revert your changes to your 1.0.0 tag: let it point to whatever commit is was pointing to before you changed it. You should not change tags like that in any case
  2. follow the Releasing a new version of a catkin package tutorial. So (but make sure to follow the tutorial):
    1. update your changelog
    2. create a new tag
    3. run Bloom

After you submit the PR and it gets accepted, the source job will fetch your new version (with the fix) and the binary jobs will start building your new version.

edit flag offensive delete link more

Comments

Thanks for your reply. Thank you very much. But I am still a little confused. Why the Jenkins job runs everyday with the same error, with same code. And the we could do nothing except waiting for the PR to be acceped?

qinyunchuan gravatar image qinyunchuan  ( 2021-01-17 07:44:09 -0600 )edit

It would help if you could link to your Jenkins jobs. Right now we're just guessing.

gvdhoorn gravatar image gvdhoorn  ( 2021-01-17 07:46:46 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2021-01-17 01:50:42 -0600

Seen: 109 times

Last updated: Jan 17