Giter VIP home page Giter VIP logo

buildbot-ros's Introduction

Buildbot-ROS

This is a project for building ROS components using Buildbot. This is not aimed to be a replacement for the ROS buildfarm, but rather a (hopefully) easier to setup system for developers wishing to build their own packages, run continuous integration testing, and build docs.

Please see the mailing list for discussions about setup, usage, and new features: https://groups.google.com/forum/#!forum/buildbot-ros-sig

Release Notes

  • 0.3.0 (forthcoming) - will support REP-143
  • 0.2.0 (02/20/2016) - supports Trusty, adds github pull request builders
  • 0.1.0 (09/13/2014) - first tagged release, does not support Trusty.

Design Overview

Buildbot uses a single master, and possibly multiple machines building. At present, the setup described below will do all builds on the same machine as the master. All of the setup is done under a 'buildbot' user account, and we use virtualenv and cowbuilder so that your machine setup is not affected.

There are several 'builder' types available:

  • Debbuild - turns a gbp repository into a set of source and binary debs for a specific ROS distro and Ubuntu release. This is currently run in a nightly build.
  • Testbuild - this is a standard continuous integration testing setup. Checks out a branch of a repository, builds, and runs tests using catkin. Triggered by a commit to the watched branch of the repository. In the future, this could also be triggered by a post commit hook giving even faster response time to let you know that you broke the build or tests (buildbot already has nice GitHub post-commit hooks available). Test builds can also be done on pull requests.
  • Docbuild - are built and uploaded to the master. Currently triggered nightly and generating only the doxygen/epydoc/sphinx documentation (part of the docs you find on ros.org). Uses rosdoc_lite. Documentation builds can only be run on released repositories. Presently, I do a soft link from my Apache server install to the /home/buildbot/buildbot-ros/docs directory, but in the future, a more elegant solution to this should be implemented.

There are also several builders that are not directly related to ROS, but generally useful:

  • Launchpad - sometimes you need a regular old debian that just happens to not be available. This builder is called 'launchpad_debbuild' because I mainly use it to build sourcedebs from Launchpad into binaries, however, it can be used with any sourcedeb source.

Clearly, this is still a work in progress, but setup is fairly quick for a small set of projects.

Comparison with ROS buildfarm

Buildbot-ROS uses mostly the same underlying tools as the ROS buildfarm. Bloom is still used to create gbp releases. git-buildpackage is used to generate debians from the Bloom releases, using cowbuilder to build in a chroot rather than pbuilder. reprepro is used to update the APT repository. Docs are generated using rosdoc_lite. The build is defined by a rosdistro repository, and we use the python-rosdistro package to parse it.

Major differences from the ROS buildfarm:

  • Buildbot is completely configured in Python. Thus, the configuration for any build is simply a Python script, which I found to be more approachable than scripting Jenkins.
  • Source and binary debians for an entire repository, which can consist of several packages and a metapackage, are built as one job per ROS/Ubuntu distribution combination.

Known Limitations:

  • While jobs are configured from a rosdistro, there currently isn't a scheduler that updates based on rosdistro updates (See #3). This is planned, but not implemented. Currently, you can make do by having a nightly cronjob that runs 'restart' on the buildbot instance.
  • file:/// repositories are not yet actually being bind-mounted (#10)
  • Test and doc jobs only work on git repositories.

Setup of ROSdistro

Before you can build jobs, you will need a rosdistro repository. The rosdistro format is specified in REP137. You'll need an index.yaml and at least one set of distribution files (release.yaml, source.yaml, doc.yaml, *-build.yaml). A complete example of a simple build configuration for a single repository can be found in https://github.com/mikeferguson/rosdistro-buildbot-example.

In addition to the usual aspects of the files, we extensively use apt_mirrors, and a new key apt_keys. These should be setup to a list of APT mirrors and set of keys to pull for these mirrors. The mirrors will be passed to the cowbuilder using the --othermirror option, while the keys will be fetched and stored during the cowbuilder setup step. The format of the apt_mirrors is important, the format should be:

http://location DISTRO main othersections

The DISTRO will be replaced by the actual building distribution at build time. At a minimum, you will want an Ubuntu archive, the ROS archive, and your building archive. The Ubuntu archive should include the universe section if you want to run docbuilders.

The rosdistro tools need a path to cache. While buildbot-ros does not require a cache to operate, creating one can greatly speed up startup of the buildbot master. To create the cache, you can use:

rosdistro_build_cache path_to_index.yaml

And then upload this to the destination of the cache. Currently, buildbot-ros does not update the cache automatically.

Setup for Buildbot Master

Install prerequisites:

sudo apt-get install python-virtualenv python-dev

Create a user 'buildbot'. Make sure you don't leave the Name field blank - if you do you'll end up with incorrect syntax in the deb changelogs, because git-dch uses the user's actual name in the changelog. Log in as the buildbot user, and do the following:

cd ~
virtualenv --no-site-packages buildbot-env
source buildbot-env/bin/activate
echo "export PATH=/home/buildbot/buildbot-ros/scripts:${PATH}" >> buildbot-env/bin/activate
easy_install buildbot==0.8.12 requests
pip install rosdistro
git clone https://github.com/mikeferguson/buildbot-ros.git
buildbot create-master buildbot-ros

If using the Pull Request builder, you will also need to:

sudo apt-get install libffi-dev libssl-dev
easy_install txgithub

At this point, you have a master, with the default configuration. You will almost certainly want to edit buildbot-ros/buildbot.tac and set the line 'umask=None' to 'umask=0022' so that uploaded debs can be found by your webserver. You'll also want to edit buildbot-ros/master.cfg to add your own project settings (such as which rosdistro file to use), and then start the buildbot:

buildbot start buildbot-ros

To actually have debbuilders succeed, you'll need to create the APT repository for debs to be installed into, as 'buildbot':

cd buildbot-ros/scripts
./aptrepo-create.bash YourOrganizationName

By default, this script sets up a repository for amd64 and i386 on trusty only. You can fully specify what you want though:

./aptrepo-create.bash YourOrganizationName "amd64 i386 armel" precise oneiric hardy yeahright

If you want to sign your repository, you need to generate a GPG key for reprepro to use:

gpg --gen-key

Use gpg --list-keys to find the key identifier (for instance AAAABBBB) and add a line in the /var/www/building/ubuntu/conf/distributions file with:

SignWith: AAAABBBB

You'll likely want to export the public key:

gpg --output /var/www/public.key --armor --export AAAABBBB

When everything is working, buildbot can be added as a startup, by adding to the buildbot user's crontab. Open up the crontab for the buildbot user by typing crontab -e, then you can use this line to restart the buildbot instance every day at 11pm for example. The second line added to the crontab is optional, it reloads the cache before restarting the buildbot instance. If you use it, don't forget to replace /path/to/index.yaml with the real path to you index.yaml distribution file.

0 23 * * * cd /home/buildbot && buildbot restart buildbot-ros
55 22 * * * cd /var/www/html/rosdistro && rosdistro_build_cache /path/to/index.yaml

Setup for Pull Requests

To enable pull requests, the oauth_tokens must be configured. To create an oauth token, go to settings under your github account, go to "Personal access tokens" and generate a new token for the buildbot, then update the oauth_tokens in master.cfg:

# Pull request builder tokens (should not be stored in rosdistro)
# This is a mapping of "repo" -> "token"
# If a repo has no entry, then pull request builder will not be started
oauth_tokens = dict()
oauth_tokens["first_repo"] = "1251511615134513413541351acea1ave"
oauth_tokens["second_repo"] = "1251511615134513413541351acea1ave"

Setup for Buildbot Slave

We need a few things installed (remember, buildbot is not in the sudoers, so you should do this under your own account):

sudo apt-get install reprepro cowbuilder debootstrap devscripts git git-buildpackage debhelper

If you are on a different machine, you'll have to create the buildbot user and virtualenv as done for the master. Once you have a buildbot user and virtualenv, do the following as 'buildbot':

source buildbot-env/bin/activate
easy_install buildbot-slave
echo "export PATH=/home/buildbot/buildbot-ros/scripts:${PATH}" >> buildbot-env/bin/activate
buildslave create-slave rosbuilder1 localhost:9989 rosbuilder1 mebuildslotsaros

If you are on a diffent machine then you will need to clone the buildbot-ros repo on it as well. Again as the buildbot user:

git clone https://github.com/mikeferguson/buildbot-ros.git

As with the master, change umask to be 0022 in the .tac file. It is probably a good idea to change the password (mebuildslotsaros), in both this command and the master/master.cfg. You can also define additional slaves in the master/master.cfg file, currently we define rosbuilder1 and 2. To start the slave:

buildslave start rosbuilder1

For builds to succeed, you'll probably need to make it so the buildbot can run cowbuilder as root. The best way around this is to allow the 'buildbot' user to execute git-buildpackage and pbuilder/cowbuilder without a password, by adding the following to your /etc/sudoers file (be sure to use visudo):

buildbot    ALL= NOPASSWD: SETENV: /usr/bin/git-*, /usr/sbin/*builder

Note that there is a TAB between buildbot and ALL.

Known Issues, Hacks, Tricks and Workarounds

I need to move my gpg key (also known as 'my server has all the entropy of a dead cow!')

While this has been seen on mainly idle servers, this is most commonly an issue on Virtual Machines (See these links for more details).

On the machine with the key

gpg --output key.gpg --armor --export AAAABBBB
gpg --output secret.gpg --armor --export-secret-key AAAABBBB

On the other machine:

gpg --import key.gpg
gpg --allow-secret-key-import --import secret.gpg

buildbot will only allow 1000 unique jobs

This will prevent you from loading the entire ROS farm as is, unless different arch/code-name combinations are restricted to different buildbots. There is a monkey-patch available here: http://trac.buildbot.net/ticket/2045

private repositories and dependencies

See https://github.com/mikeferguson/buildbot-ros/blob/master/documentation/private_repositories.md

buildbot-ros's People

Contributors

asmodehn avatar ipa-nhg avatar jonbinney avatar mehwang avatar mikeferguson avatar rohbotics avatar ugocupcic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

buildbot-ros's Issues

Can't start up the master? Does someone have the same problem?

buildbot-ros/twistd.log:

2018-03-18 08:27:09-0700 [-] Loading buildbot.tac...
2018-03-18 08:27:09-0700 [-] Loaded.
2018-03-18 08:27:09-0700 [-] twistd 17.9.0 (/home/zcm/buildbot-env/bin/python2 2.7.12) starting up.
2018-03-18 08:27:09-0700 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2018-03-18 08:27:09-0700 [-] Starting BuildMaster -- buildbot.version: 0.8.12
2018-03-18 08:27:09-0700 [-] Loading configuration from '/home/zcm/buildbot-ros/master.cfg'
2018-03-18 08:27:10-0700 [-] ['arbotix', 'arbotix_msgs', 'arbotix_firmware', 'arbotix_python', 'arbotix_sensors', 'arbotix_controllers']
2018-03-18 08:27:25-0700 [-] # rosdistro.get_release_build_files() has been deprecated and its functionality is now handled by the 'ros_buildfarm.config' module
2018-03-18 08:27:25-0700 [-] # rosdistro.get_source_build_files() has been deprecated and its functionality is now handled by the 'ros_buildfarm.config' module
2018-03-18 08:27:25-0700 [-] # rosdistro.get_doc_build_files() has been deprecated and its functionality is now handled by the 'ros_buildfarm.config' module
2018-03-18 08:27:25-0700 [-] # rosdistro.get_doc_file() has been deprecated in favor of the new function rosdistro.get_distribution_file() - please check that you have the latest versions of the Python tools (e.g. on Ubuntu/Debian use: sudo apt-get update && sudo apt-get install --only-upgrade python-bloom python-rosdep python-rosinstall python-rosinstall-generator)
2018-03-18 08:27:25-0700 [-] Starting to setup jobs...
2018-03-18 08:27:25-0700 [-]
2018-03-18 08:27:25-0700 [-] Configuring for indigo
2018-03-18 08:27:25-0700 [-] # rosdistro.get_release_file() has been deprecated in favor of the new function rosdistro.get_distribution_file() - please check that you have the latest versions of the Python tools (e.g. on Ubuntu/Debian use: sudo apt-get update && sudo apt-get install --only-upgrade python-bloom python-rosdep python-rosinstall python-rosinstall-generator)
2018-03-18 08:27:25-0700 [-] # rosdistro.get_release_build_files() has been deprecated and its functionality is now handled by the 'ros_buildfarm.config' module
2018-03-18 08:27:25-0700 [-] Configuring ros_debbuild job for: arbotix_trusty_amd64
2018-03-18 08:27:25-0700 [-] # rosdistro.get_source_file() has been deprecated in favor of the new function rosdistro.get_distribution_file() - please check that you have the latest versions of the Python tools (e.g. on Ubuntu/Debian use: sudo apt-get update && sudo apt-get install --only-upgrade python-bloom python-rosdep python-rosinstall python-rosinstall-generator)
2018-03-18 08:27:25-0700 [-] # rosdistro.get_source_build_files() has been deprecated and its functionality is now handled by the 'ros_buildfarm.config' module
2018-03-18 08:27:26-0700 [-] Configuring ros_testbuild job for: arbotix_trusty_amd64
2018-03-18 08:27:26-0700 [-] Not adding Pull Request builder for arbotix
2018-03-18 08:27:26-0700 [-] # rosdistro.get_doc_file() has been deprecated in favor of the new function rosdistro.get_distribution_file() - please check that you have the latest versions of the Python tools (e.g. on Ubuntu/Debian use: sudo apt-get update && sudo apt-get install --only-upgrade python-bloom python-rosdep python-rosinstall python-rosinstall-generator)
2018-03-18 08:27:26-0700 [-] # rosdistro.get_doc_build_files() has been deprecated and its functionality is now handled by the 'ros_buildfarm.config' module
2018-03-18 08:27:26-0700 [-] Configuring ros_docbuild job for: arbotix_trusty_amd64
2018-03-18 08:27:26-0700 [-] Setting up database with URL 'sqlite:///state.sqlite'
2018-03-18 08:27:26-0700 [-] setting database journal mode to 'wal'
2018-03-18 08:27:26-0700 [-] The Buildmaster database needs to be upgraded before this version of
2018-03-18 08:27:26-0700 [-] buildbot can run. Use the following command-line
2018-03-18 08:27:26-0700 [-]
2018-03-18 08:27:26-0700 [-] buildbot upgrade-master path/to/master
2018-03-18 08:27:26-0700 [-]
2018-03-18 08:27:26-0700 [-] to upgrade the database, and try starting the buildmaster again. You may
2018-03-18 08:27:26-0700 [-] want to make a backup of your buildmaster before doing so.

docbuild.py fails for packages which are in root of git repository

Currently failing trying to build graft:

Retrieve the ROS build environment by sourcing /opt/ros/hydro/setup.bash
Considering /tmp/graft_hydro_docbuild/src/src/package.xml
Considering /tmp/graft_hydro_docbuild/src/test_attitude.launch/package.xml
Considering /tmp/graft_hydro_docbuild/src/include/package.xml
Considering /tmp/graft_hydro_docbuild/src/.git/package.xml
Considering /tmp/graft_hydro_docbuild/src/CMakeLists.txt/package.xml
Considering /tmp/graft_hydro_docbuild/src/msg/package.xml
Considering /tmp/graft_hydro_docbuild/src/package.xml/package.xml
Considering /tmp/graft_hydro_docbuild/src/test_absolute.launch/package.xml
Considering /tmp/graft_hydro_docbuild/src/config/package.xml
Considering /tmp/graft_hydro_docbuild/src/README.md/package.xml
Considering /tmp/graft_hydro_docbuild/src/test_graft.launch/package.xml
Generating docs for: 
Executing command "chmod -R 777 /tmp/graft_hydro_docbuild/docs"
chmod: cannot access `/tmp/graft_hydro_docbuild/docs': No such file or directory
/!\ Failed to execute command "['chmod', '-R', '777', '/tmp/graft_hydro_docbuild/docs']" with return code 1
Traceback (most recent call last):
  File "/runscript", line 91, in <module>
    run_docbuild(sys.argv[1], sys.argv[2])
  File "/runscript", line 43, in run_docbuild
    call(['chmod', '-R', '777', os.path.join(workspace, 'docs')])
  File "/runscript", line 60, in call
    raise BuildException(msg)
__main__.BuildException

Example Docker config improvements

Heyβ€” so, I've mucked about with things a bit in my own repo, and I just want to describe them a bit before I prepare a PR for it. The Dockerfile is somewhat shorter and simpler:

FROM ubuntu:trusty
MAINTAINER Mike Purvis

ENV DEBIAN_FRONTEND noninteractive
ENV BUILDBOT_CREATED nov_7_2014

# Install build stuff.
RUN apt-get update
RUN apt-get install -q -y python-virtualenv python-dev
RUN apt-get install -q -y reprepro cowbuilder debootstrap devscripts git git-buildpackage debhelper
RUN apt-get install -q -y debmirror

RUN virtualenv --no-site-packages /root/buildbot-env
RUN echo "export PATH=/root/buildbot-ros/scripts:${PATH}" >> /root/buildbot-env/bin/activate
RUN . /root/buildbot-env/bin/activate
RUN pip install rosdistro buildbot buildbot-slave

# Pick up the buildbot configuration
ADD . /root/buildbot-ros

# Create Buildbot.
RUN buildbot create-master /root/buildbot-ros
RUN buildslave create-slave /root/rosbuilder1 localhost:9989 rosbuilder1 [pw1]
RUN buildslave create-slave /root/rosbuilder2 localhost:9989 rosbuilder2 [pw2]

# Fix the file creation defaults.
RUN sed --in-place=.bak 's/umask = None/umask = 0022/' /root/buildbot-ros/buildbot.tac
RUN sed --in-place=.bak 's/umask = None/umask = 0022/' /root/rosbuilder1/buildbot.tac

EXPOSE 8010
CMD /root/buildbot-ros/run_server

And the build/run is now a two-parter, including the webserver for the resultant packages:

docker build -t buildbot-ros .
docker run -d -p 8000:80 -v /var/www:/usr/share/nginx/html:ro --name="packages" nginx
docker run -d --privileged -p 8010:8010 -v /var/www:/var/www:rw \
              --link=packages:packages --name="buildbot-ros" buildbot-ros

The major changes to watch out for here are:

  • The buildbot-ros configuration files are being added in, rather than git-cloned in. This is better because docker can tell when you've changed the directory and it needs to rebuild. It also allows us to defer the key setup stuff until we're inside run_server.
  • Because of this, the Dockerfile is in the root directory of the repo.
  • The buildbot is able to access the built packages at http://packages/building; you can access them at http://[dockerd ip]:8000.

My proposal would be that the buildbot-ros repo (this one) gain an example signing key and Dockerfile in the root directory, with the idea that it can be deployed unmodified to inspect and play with, and that users deploying their own instances of buildbot-ros would clone this repo, create new keys, change the rosdistro url, and make any other changes needed for their use, and then build and deploy their own variant of the container.

For clarity, the run_server command (which now also handles the key stuff) would move to scripts/run_docker_container or similar.

Does this seem reasonable?

Building only with doc and source does not seem possible

Is this supposed to work ?

I tried it this way to avoid having to do a full bloom-release before building. Just to check buildbot could build the source and doc before doing the first release.

the rosdistro at that time was yujinrobot/rosdistro@66bfc4e

However It failed with :

2015-10-12 12:24:35+0900 [-] error while parsing config file:
    Traceback (most recent call last):
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 588, in _runCallbacks
        current.result = callback(current.result, *args, **kw)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 1184, in gotResult
        _inlineCallbacks(r, g, deferred)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 1128, in _inlineCallbacks
        result = g.send(result)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/buildbot/master.py", line 189, in startService
        self.configFileName)
    --- <exception caught here> ---
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/buildbot/config.py", line 156, in loadConfig
        exec f in localDict
      File "/home/buildbot/buildbot-ros/master.cfg", line 88, in <module>
        DOC_JOBS = docbuilders_from_rosdistro(c, oracle, dist, BUILDERS)
      File "/home/buildbot/buildbot-ros/buildbot_ros_cfg/distro.py", line 313, in docbuilders_from_rosdistro
        oracle.getDocTrigger(name, distro)))
      File "/home/buildbot/buildbot-ros/buildbot_ros_cfg/distro.py", line 113, in getDocTrigger
        i = self.build_order[dist_name]['doc_jobs'].index(repo_name)
    exceptions.ValueError: 'gopher_msgs' is not in list

2015-10-12 12:24:35+0900 [-] Configuration Errors:
2015-10-12 12:24:35+0900 [-]   error while parsing config file: 'gopher_msgs' is not in list (traceback in logfile)
2015-10-12 12:24:35+0900 [-] Halting master.
2015-10-12 12:24:35+0900 [-] Unhandled Error
    Traceback (most recent call last):
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/application/app.py", line 364, in startReactor
        self.config, oldstdout, oldstderr, self.profiler, reactor)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/application/app.py", line 285, in runReactorWithLogging
        reactor.run()
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/base.py", line 1194, in run
        self.mainLoop()
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/base.py", line 1203, in mainLoop
        self.runUntilCurrent()
    --- <exception caught here> ---
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/base.py", line 798, in runUntilCurrent
        f(*a, **kw)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/base.py", line 581, in stop
        "Can't stop reactor that isn't running.")
    twisted.internet.error.ReactorNotRunning: Can't stop reactor that isn't running.

2015-10-12 12:24:35+0900 [-] Main loop terminated.
2015-10-12 12:24:35+0900 [-] Server Shut Down.

So I m thinking the docbuild job depends on a release to be there already ?

Buildbot's OTHERMIRROR is ignored by pbuilder

I am building a custom rosdistro with buildbot-ros and recently added an apt_mirrors in the source and binary build configurations. This is correctly parsed by buildbot-ros and the repository appears in the OTHERMIRROR environmental variable during the build. However, none of the packages in the repository are available inside the cowbuilder instance.

I was able to partially trace this issue by manually running git-buildpackage in the build directory on the slave by adding an echo $OTHERMIRROR to hooks/D05deps. Regardless of the value of OTHERMIRROR in the environment I use to call git-buildpackage, at this point the variable always has value:

deb http://archive.ubuntu.com/ubuntu precise main restricted universe multiverse
| deb http://archive.ubuntu.com/ubuntu precise-backports main restricted universe multiverse
| deb http://archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse
| deb http://archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
| deb http://packages.ros.org/ros/ubuntu precise main

It also has this same value by the time it reaches ~/.pbuilderrc. I am, unlike above, able to successfully successfully override the default value here. However, I'd prefer not to hard-code the value here.

I have no idea whether this is an issue with buidlbot-ros, git-buildpackage, pbuilder, or something else in my environment. I also have no idea where the default value is coming from: it contains the ROS distribution, so there is no way that it is a global default. Any suggestions?

Edit: After further inspection, it seems that setting OTHERMIRROR in ~/.pbuilderrc causes another host of problems. I'm really not sure what's going on here.

Docker deployment

I'm experimenting with the docker configuration, and I think I have it mostly workingβ€” the container built and is up, and I can access the main web page for buildbot-ros, but it doesn't look like the buildslave is starting, and I also can't seem to log in via SSH to take a look at it.

Sorry this is a little information-light, but I'm wondering if there are any obvious things I might have missed. I did create a /var/www/building path on the docker machine, but it doesn't get populated with the apt repoβ€” that might be a canary for what's wrong.

This is boot2docker running in a parallels VM on a Mac.

Precise and Trusty on same buildbot?

I gave this a try and wound up with some odd apt errors. Highlights:

dpkg-checkbuilddeps: Unmet build dependencies: ros-hydro-catkin ros-hydro-grizzly-msgs ros-hydro-rosserial-leonardo-cmake ros-hydro-std-msgs
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
dpkg-buildpackage: warning: this is currently a non-fatal warning with -S, but will probably become fatal in the future
 fakeroot debian/rules clean
...
Get:7 http://packages.ros.org precise/main amd64 Packages [634 kB]
Get:8 http://archive.ubuntu.com trusty/main amd64 Packages [1350 kB]
Get:9 http://archive.ubuntu.com trusty/main i386 Packages [1348 kB]
Get:10 http://packages.ros.org precise/main i386 Packages [634 kB]
Get:11 http://archive.ubuntu.com trusty/main TranslationIndex [3632 B]
Hit http://archive.ubuntu.com precise/main Translation-en
Hit http://archive.ubuntu.com precise/universe Translation-en
Get:12 http://archive.ubuntu.com trusty/main Translation-en [762 kB]
Ign http://packages.ros.org precise/main TranslationIndex
Ign http://packages.ros.org precise/main Translation-en
...
Internal error: the solver Install(python:i386 2.7.5-5ubuntu3 <python-rospkg:amd64 1.0.30-1 -> {python:amd64 2.7.5-5ubuntu3 python:i386 2.7.5-5ubuntu3}>) of a supposedly unresolved dependency is already installed in step 2
Internal error: the solver Install(python:i386 2.7.5-5ubuntu3 <python-rospkg:amd64 1.0.30-1 -> {python:amd64 2.7.5-5ubuntu3 python:i386 2.7.5-5ubuntu3}>) of a supposedly unresolved dependency is already installed in step 2
Internal error: the solver Install(python:i386 2.7.5-5ubuntu3 <python-rosdistro:amd64 0.3.6-1 -> {python:amd64 2.7.5-5ubuntu3 python:i386 2.7.5-5ubuntu3}>) of a supposedly unresolved dependency is already installed in step 2
Internal error: the solver Install(python:i386 2.7.5-5ubuntu3 <python-rosdistro:amd64 0.3.6-1 -> {python:amd64 2.7.5-5ubuntu3 python:i386 2.7.5-5ubuntu3}>) of a supposedly unresolved dependency is already installed in step 2
Internal error: the solver Install(python:i386 2.7.5-5ubuntu3 <python-catkin-pkg:amd64 0.2.6-1 -> {python:amd64 2.7.5-5ubuntu3 python:i386 2.7.5-5ubuntu3}>) of a supposedly unresolved dependency is already installed in step 2
Internal error: the solver Install(python:i386 2.7.5-5ubuntu3 <python-catkin-pkg:amd64 0.2.6-1 -> {python:amd64 2.7.5-5ubuntu3 python:i386 2.7.5-5ubuntu3}>) of a supposedly unresolved dependency is already installed in step 2
Internal error: found 2 (choice -> promotion) mappings for a single choice.
Internal error: found 2 (choice -> promotion) mappings for a single choice.
Unable to resolve dependencies!  Giving up...
...
19 packages upgraded, 303 newly installed, 0 to remove and 119 not upgraded.
Need to get 150 MB of archives. After unpacking 628 MB will be used.
Abort.
 -> Finished parsing the build-deps
Reading package lists...
Building dependency tree...
Reading state information...
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 fakeroot : Depends: libfakeroot (>= 1.20-3ubuntu2) but it is not going to be installed
 pbuilder-satisfydepends-dummy : Depends: debhelper (>= 7.0.50~) but it is not going to be installed
                                 Depends: ros-hydro-catkin but it is not going to be installed
                                 Depends: ros-hydro-grizzly-msgs but it is not going to be installed
                                 Depends: ros-hydro-rosserial-leonardo-cmake but it is not going to be installed
                                 Depends: ros-hydro-std-msgs but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

The whole thing: https://gist.github.com/mikepurvis/0c9a1c0093ba6edd2c69

Seems like it's ending up with some kind of weird combination environment, where it's sucking in packages from both precise and trusty, despite it being a trusty cowbuilder. Is this an expected scenario? We should probably either fix this, or document that a Trusty buildbot-ros is only suitable for building Trusty+ ROS packages.

Setup buildbot-ros testfarm

Goal is to have a buildfarm that tests the buildfarm...

Overview:

  • Cron job updates the buildbot-ros checkout, restarts the buildbot. Is run at midnight every day. Also, a buildbot job monitors the buildbot repo and sets up the cron job to fire whenever the repo gets updated (be sure to add enough time so that the job finishes before the buildbot is restarted).
  • Debbuilds run @ 2AM
  • At 3am, a job triggers which pushes a commit to a git repo, causing a testbuild to run.
  • Docbuilds run @ 5AM

Targets:

  • groovy: arbotix,
  • hydro: control_msgs, arbotix

Improve error message when package xml returns empty.

While checking for dependencies of one package, the RosDistroOracle can return a cryptic error :

2015-10-12 16:01:48+0900 [-] Starting BuildMaster -- buildbot.version: 0.8.12
2015-10-12 16:01:48+0900 [-] Loading configuration from '/home/buildbot/buildbot-ros/master.cfg'
2015-10-12 16:02:00+0900 [-] error while parsing config file:
    Traceback (most recent call last):
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 588, in _runCallbacks
        current.result = callback(current.result, *args, **kw)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 1184, in gotResult
        _inlineCallbacks(r, g, deferred)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 1128, in _inlineCallbacks
        result = g.send(result)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/buildbot/master.py", line 189, in startService
        self.configFileName)
    --- <exception caught here> ---
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/buildbot/config.py", line 156, in loadConfig
        exec f in localDict
      File "/home/buildbot/buildbot-ros/master.cfg", line 68, in <module>
        oracle = RosDistroOracle(rosindex, dist_names)
      File "buildbot_ros_cfg/distro.py", line 41, in __init__
        depends = walker.get_depends(pkg, 'buildtool')
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/rosdistro/dependency_walker.py", line 58, in get_depends
        deps = self._get_dependencies(pkg_name, depend_type)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/rosdistro/dependency_walker.py", line 117, in _get_dependencies
        pkg = self._get_package(pkg_name)
      File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/rosdistro/dependency_walker.py", line 52, in _get_package
        raise InvalidPackage(pkg_name + ': %s' % str(e))
    catkin_pkg.package.InvalidPackage: gopher_navi_msgs: The manifest contains invalid XML:
    must be string or read-only buffer, not None

2015-10-12 16:02:00+0900 [-] Configuration Errors:
2015-10-12 16:02:00+0900 [-]   error while parsing config file: gopher_navi_msgs: The manifest contains invalid XML:
    must be string or read-only buffer, not None (traceback in logfile)
2015-10-12 16:02:00+0900 [-] Halting master.
2015-10-12 16:02:00+0900 [-] Main loop terminated.
2015-10-12 16:02:00+0900 [-] Server Shut Down.

Basically this this means that rosdistro couldnt get the package definition from the manifest providers it currently has. It s quite a deep rosdistro specific error, but it can be trigger by simple configuration mistakes on buildbot, and it would be very useful to have more explicit error messages when possible.

This happened to me twice already.

It always takes a long time to track down the root cause ( by debugging buildbot-ros code itself, on the same machine, which can be quite troublesome, usually just for a configuration mistake ).

python3 and updating buildbot

I'm not sure what is involved here or even what would be gained (other than being able to run this on newer versions of utunbut without python2 easiesr). It looks like buildbot is dropping support for python2.

cannot have more than one gitpoller per repository

Buildbot uses the repository name as the name of service, thus if we have a source buildtest job on both groovy and hydro, we get an error since there are two pollers looking at the same repository.

Exception during testbuild leaves un-removable directory.

I reset the buildbot during a testbuild, when it restarted the new test failed as the /tmp/X_testbuild directory was still owned by root.

Traceback (most recent call last):
  File "/runscript", line 238, in <module>
    run_build_and_test(sys.argv[1], sys.argv[2])
  File "/runscript", line 49, in run_build_and_test
    os.makedirs(workspace+'/build')
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 17] File exists: '/tmp/x_testbuild/build'

Is putting packages in subfolder of repo supported?

I have some packages in the subfolder of my repo, I don't know how to fill the 'packages' field of release in the rosdistro file?
And I notice in the rosdistro package that:

def __init__(self, name, repository_name):
    self.name = name
    self.repository_name = repository_name

    # for backward compatibility only
    self.subfolder = None
    self.status = None
    self.status_description = None

Does this means putting packages in subfolder is not supported anymore?
Thanks!

Nosetest configuration error is not caught

The following is the log, but test is all green:

Scanning dependencies of target _run_tests_xyz_nosetests_python
E
======================================================================
ERROR: Failure: ImportError (No module named matplotlib)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 390, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 39, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 86, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/tmp/ubr_ros_sandbox_hydro_testbuild/src/xyz/test/python/test_image_tools.py", line 3, in <module>
    import matplotlib
ImportError: No module named matplotlib

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)

Adding new package to existing gbp can fail

Steps to reproduce:

  • Add a new package to an already-building GBP repo
  • Create new release, add package name to index
  • Do not update rosdistro cache
  • New package will not be built (but no error will be thrown either)
  • Update rosdistro cache and package will be built

Create example dockerfile

We've been using docker to deploy buildbot for a while now at Unbounded, but the config files are not public, need to make an example config in the public repo.

git-buildpackage broken on 14.04

I've been successfully running buildbot-ros in a Ubuntu 12.04 VM for quite a while now. I recently tried upgrading to Ubuntu 14.04 and git-buildpackage fails with the following error:

$ git checkout debian/ros-indigo-cbirrt2_1.0.0-0_trusty
$ git-buildpackage -us -uc --git-ignore-branch --git-ignore-new --git-verbose
gbp:debug: ['git', 'rev-parse', '--show-cdup']
gbp:debug: ['git', 'rev-parse', '--is-bare-repository']
gbp:debug: /bin/true [] []
gbp:debug: ['git', 'symbolic-ref', 'HEAD']
gbp:debug: ['git', 'show-ref', 'refs/heads/pristine-tar']
gbp:debug: ['git', 'show-ref', 'refs/heads/release/indigo/manipulation2/1.0.0-0']
gbp:error: release/indigo/manipulation2/1.0.0-0 is not a valid branch

It looks like git-buildpackage is trying to verify the branch name even though buildbot-ros passes the --git-ignore-branch flag to disable it. I also tried setting --git-debian-tag to the correct value to no avail.

@mikeferguson Have you also run into this?

First docbuild fails with base-trusty-amd64.cow does not exist

I recently managed to setup a local buildbot master and slave with a custom distribution.yaml ( trying to build https://github.com/stonier/ecl_core as a first step ) .
I could also properly configure the build job ( I think... ).

When I run that build job, I come across these error ( not sure if they are related ) that are probably related to something wrong i did with the setup :

docbuild :

cannot canonicalize filename /var/cache/pbuilder/base-trusty-amd64.cow, does not exist

debbuild :

Upon execvpe cowbuilder-update.py ['cowbuilder-update.py', 'trusty', 'amd64', 'http://packages.ros.org/ros.key'] in environment id 140562951466632
:Traceback (most recent call last):
  File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/process.py", line 424, in _fork
    environment)
  File "/home/buildbot/.virtualenvs/buildbot-env/local/lib/python2.7/site-packages/twisted/internet/process.py", line 502, in _execChild
    os.execvpe(executable, args, environment)
  File "/home/buildbot/.virtualenvs/buildbot-env/lib/python2.7/os.py", line 353, in execvpe
    _execvpe(file, args, env)
  File "/home/buildbot/.virtualenvs/buildbot-env/lib/python2.7/os.py", line 380, in _execvpe
    func(fullname, *argrest)
OSError: [Errno 2] No such file or directory
program finished with exit code 1
elapsedTime=0.001896

Any hint ?
Any additional info I could provide to help finding out the cause ?

Create rosdistro scheduler

A buildbot gitpoller will work for detecting changes in the rosdistro repository.

At that point, our scheduler should detect that the rosdistro is the change source, find out what repositories have new releases, update the release_version of each of them, and trigger a rebuild.

Some implementation notes:

  • Each scheduler has a .master attribute
  • The master has a .config attribute
  • The .config.builders is our list of builders, already converted from a list, to a dictionary, with with the builder name as the key.

This is blocked on #2

Xenial support

I am trying to get builds for Kinetic/Xenial from buildbot-ros.

Looks like git-buildpackage is very different from Trusty to Xenial. (0.6.9 => 0.7.2)

Making migration complicated is the fact that git-buildpackage --version doesn't work in xenial, because that is no longer a program, as it is completely replaced by gpb. gpb --version doesn't work in trusty, as there is no version option in trusty.

Any thoughts on how I should get around that issue?

Update to REP141

The rosdistro format has changed significantly with http://www.ros.org/reps/rep-0141.html

The ROS buildfarm is upgrading to that today, we will also need to eventually upgrade to it, but it appears to potentially require a significant re-factoring of internal code

Apt repositories are hard coded

We need to create a shadow repository, in addition to the building repository. There also needs to be a job to sync building to shadow when we are done building.

Testbuild jobs should then use the shadow repository, not the building one. We should probably define the following repositories within our buildbot config: building, testing, upstream (for ros.org). Building needs to always be defined, testing as well. Upstream could be left out if you are building all your packages yourself.

Given those definitions, the cowbuilder_create script should only get the keys, not set the other mirrors. We should pass in --othermirror, and --override-config at runtime to allow use to choose which repositories to use, since we already have an apt-get update hook.

If the building or shadow repositories have 'file:///' in their name, we need to bind mount their location. Note that all these configs (bindmount, override, othermirror) need to be specified as GIT_PBUILDER_OPTIONS for the debbuilds.

The rosdistro format does have a targets/_config/apt_mirrors in source-build.yaml and doc-build.yaml, which we could put the shadow and upstream repositories into. REP137 states _config can have arbitrary data, so we could put apt_mirrors in here too. targets/_config/apt_target_repository is used as the location to put built debs, we should probably feed that to the reprepro-include script.

Building a package with the same version, but a different label fails

I frequently re-release the same version of a package multiple times while fixing minor issues that crop up on the build server (e.g. missing dependencies). Bloom leaves the major, minor, and patch version numbers the same and increments the label (e.g. 0.9.0-0 to 0.9.0-1).

This causes the -buildsource step to fail in buildbot-ros:

dpkg-source: info: building openrave using existing ./openrave_0.9.0.orig.tar.gz
dpkg-source: warning: ignoring deletion of directory msvc_include
dpkg-source: warning: ignoring deletion of file msvc_include/stdint.h
dpkg-source: info: local changes detected, the modified files are:
 build/package.xml
 build/python/CMakeLists.txt
dpkg-source: error: aborting due to unexpected upstream changes, see /tmp/openrave_0.9.0-3precise.diff.IdvCs4
dpkg-source: info: you can integrate the local changes with dpkg-source --commit
dpkg-buildpackage: error: dpkg-source -i -I -b build gave error exit status 2
debuild: fatal error at line 1350:
dpkg-buildpackage -rfakeroot -d -us -uc -i -I -S failed
gbp:error: debuild -i -I returned 29
gbp:error: Couldn't run 'debuild -i -I -S -uc -us'

The root cause is that dpkg-source detects an old tarball <package>_<major>.<minor>.<patch>.orig.tar.gz tarball in the build directory and fails because it is missing the new changes. I current work around this by manually removing the offending tarball before running the release and have thought about adding this as another step in the build.

The more elegant solution would be to tell git-buildpackage to ignore this file. There is likely a flag for git-buildpackage or dpkg-source that does so, but I haven't been able to figure it out. Any ideas?

Updates for Trusty

Trusty ships with a newer version of git-buildpackage. Still working on the required updates.

Debian Jessie -> unmet dependencies

Hi folks!

I am trying to build mine packages for debian jessie, and got this error:


dpkg-checkbuilddeps: Unmet build dependencies: ros-kinetic-catkin
W: Unmet build-dependency in source
dpkg-buildpackage: error: unable to determine source changed b

anybody any tips how to approach it? I am really confused because it's first proper experience with buildbot and I don't know where/what to search for

Slave cannot find cowbuilder-update.py

I'm trying to get things going on trusty, and having trouble with the deb builds. When one of them gets triggered, it fails with:

  XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
  XDG_VTNR=7
  XMODIFIERS=@im=ibus
  _=/home/jbinney/ws/buildbot/buildbot-env/bin/buildslave
 using PTY: False
Upon execvpe cowbuilder-update.py ['cowbuilder-update.py', 'trusty', 'amd64', 'http://packages.ros.org/ros.key'] in environment id 139848876651416
:Traceback (most recent call last):
  File "/home/jbinney/ws/buildbot/buildbot-env/local/lib/python2.7/site-packages/Twisted-14.0.2-py2.7-linux-x86_64.egg/twisted/internet/process.py", line 403, in _fork
    path, uid, gid, executable, args, environment)
  File "/home/jbinney/ws/buildbot/buildbot-env/local/lib/python2.7/site-packages/Twisted-14.0.2-py2.7-linux-x86_64.egg/twisted/internet/process.py", line 453, in _execChild
    os.execvpe(executable, args, environment)
  File "/home/jbinney/ws/buildbot/buildbot-env/lib/python2.7/os.py", line 353, in execvpe
    _execvpe(file, args, env)
  File "/home/jbinney/ws/buildbot/buildbot-env/lib/python2.7/os.py", line 380, in _execvpe
    func(fullname, *argrest)
OSError: [Errno 2] No such file or directory
program finished with exit code 1
elapsedTime=0.006176

I read this error as meaning that either the master or slave (not sure which) can't find the cowbuilder-update.py script, which lives in buildbot-ros/scripts. Any suggestions on how to debug this?

Better builders screen

Once you're building more than a few packages, the builders screen gets to be a mess. It doesn't need to be as fancy as the buildfarm one, but the ideal from my perspective would be a grid with the packages down the side, and hdoc/htest/ph64/ph32 etc along the top.

I'll probably work on this at some point and would be happy to contribute it back.

Deprecation warnings in buildbot 0.8.8

Just installed on a new machine, got buildbot 0.8.8:

ros_deb.py:5: exceptions.DeprecationWarning: buildbot.steps.shell.SetProperty was deprecated in BuildBot 0.8.8: It has been renamed to SetPropertyFromCommand.

Building binary fails on untrusted package

I m trying to build a binary from ecl_sigslots.
Here is the log :

Detected git-buildpackage version (0, 6, 9)
Running git-buildpackage command: ['git-buildpackage', '--git-pbuilder', '--git-export=WC', '--git-upstream-tree=TAG', '--git-upstream-tag=debian/ros-indigo-ecl-sigslots_0.61.3-0_trusty', '--git-export-dir=/home/buildbot/rosbuilder1/ecl_core_indigo_trusty_amd64_debbuild', '-uc', '-us', '--git-ignore-branch', '--git-ignore-new', '--git-verbose', '--git-dist=trusty', '--git-arch=amd64']
gbp:debug: ['git', 'rev-parse', '--show-cdup']
gbp:debug: ['git', 'rev-parse', '--is-bare-repository']
gbp:debug: /bin/true [] []
gbp:debug: ['git', 'symbolic-ref', 'HEAD']
gbp:debug: ['git', 'add', '-f', '/home/buildbot/rosbuilder1/ecl_core_indigo_trusty_amd64_debbuild/build']
gbp:debug: ['git', 'write-tree']
gbp:debug: ['git', 'ls-tree', '6e02a0bc0314cce67d357b71b32570c8dcc1b374']
gbp:debug: ['git', 'show', '--pretty=medium', '6e02a0bc0314cce67d357b71b32570c8dcc1b374:debian/source/format']
gbp:debug: ['git', 'show', '--pretty=medium', '6e02a0bc0314cce67d357b71b32570c8dcc1b374:debian/changelog']
gbp:debug: ['git', 'show-ref', 'refs/heads/pristine-tar']
gbp:debug: ['git', 'ls-tree', 'debian/ros-indigo-ecl-sigslots_0.61.3-0_trusty']
gbp:info: ros-indigo-ecl-sigslots_0.61.3-0-20150930-0200.orig.tar.gz does not exist, creating from 'debian/ros-indigo-ecl-sigslots_0.61.3-0_trusty'
gbp:debug: Building upstream tarball with compression 'gzip -9'
gbp:info: Exporting 'WC' to '/home/buildbot/rosbuilder1/ecl_core_indigo_trusty_amd64_debbuild/ros-indigo-ecl-sigslots-tmp'
gbp:debug: ['git', 'show', '--pretty=medium', '6e02a0bc0314cce67d357b71b32570c8dcc1b374:debian/source/format']
gbp:info: Moving '/home/buildbot/rosbuilder1/ecl_core_indigo_trusty_amd64_debbuild/ros-indigo-ecl-sigslots-tmp' to '/home/buildbot/rosbuilder1/ecl_core_indigo_trusty_amd64_debbuild/ros-indigo-ecl-sigslots-0.61.3-0-20150930-0200'
gbp:debug: ['git', 'show', '--pretty=medium', '6e02a0bc0314cce67d357b71b32570c8dcc1b374:debian/source/format']
gbp:debug: git-pbuilder ['-uc', '-us'] []
Building with cowbuilder for distribution trusty, architecture amd64
W: /home/buildbot/.pbuilderrc does not exist
I: using cowbuilder as pbuilder
dpkg-buildpackage: source package ros-indigo-ecl-sigslots
dpkg-buildpackage: source version 0.61.3-0-20150930-0200-+0900trusty
dpkg-buildpackage: source distribution UNRELEASED
dpkg-buildpackage: source changed by BuildBot Yujin <[email protected]>
 dpkg-source --before-build ros-indigo-ecl-sigslots-0.61.3-0-20150930-0200
 fakeroot debian/rules clean
dh  clean
   dh_testdir
Unknown option: buildsystem
dh_testdir: warning: ignored unknown options in DH_OPTIONS
   dh_auto_clean
   dh_clean
Unknown option: buildsystem
dh_clean: warning: ignored unknown options in DH_OPTIONS
    rm -f debian/ros-indigo-ecl-sigslots.substvars
    rm -f debian/ros-indigo-ecl-sigslots.*.debhelper
    rm -rf debian/ros-indigo-ecl-sigslots/
    rm -f debian/*.debhelper.log
    rm -f debian/files
    find .  \( \( -type f -a \
            \( -name '#*#' -o -name '.*~' -o -name '*~' -o -name DEADJOE \
         -o -name '*.orig' -o -name '*.rej' -o -name '*.bak' \
         -o -name '.*.orig' -o -name .*.rej -o -name '.SUMS' \
         -o -name TAGS -o \( -path '*/.deps/*' -a -name '*.P' \) \
        \) -exec rm -f {} + \) -o \
        \( -type d -a -name autom4te.cache -prune -exec rm -rf {} + \) \)
    rm -f *-stamp
 dpkg-source -b ros-indigo-ecl-sigslots-0.61.3-0-20150930-0200
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building ros-indigo-ecl-sigslots using existing ./ros-indigo-ecl-sigslots_0.61.3-0-20150930-0200.orig.tar.gz
dpkg-source: info: building ros-indigo-ecl-sigslots in ros-indigo-ecl-sigslots_0.61.3-0-20150930-0200-+0900trusty.debian.tar.gz
dpkg-source: info: building ros-indigo-ecl-sigslots in ros-indigo-ecl-sigslots_0.61.3-0-20150930-0200-+0900trusty.dsc
 dpkg-genchanges -S >../ros-indigo-ecl-sigslots_0.61.3-0-20150930-0200-+0900trusty_source.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build ros-indigo-ecl-sigslots-0.61.3-0-20150930-0200
dpkg-buildpackage: full upload (original source is included)
 -> Copying COW directory
  forking: rm -rf /var/cache/pbuilder/build//cow.11978 
  forking: cp -al /var/cache/pbuilder/base-trusty-amd64.cow /var/cache/pbuilder/build//cow.11978 
I: removed stale ilistfile /var/cache/pbuilder/build//cow.11978/.ilist
  forking: chroot /var/cache/pbuilder/build//cow.11978 cowdancer-ilistcreate /.ilist find . -xdev -path ./home -prune -o \( \( -type l -o -type f \) -a -links +1 -print0 \) | xargs -0 stat --format '%d %i ' 
 -> Invoking pbuilder
  forking: pbuilder build --debbuildopts  --debbuildopts   '-uc' '-us' --hookdir /home/buildbot/rosbuilder1/ecl_core_indigo_trusty_amd64_debbuild/hooks --override-config --buildplace /var/cache/pbuilder/build//cow.11978 --buildresult /home/buildbot/rosbuilder1/ecl_core_indigo_trusty_amd64_debbuild --debbuildopts   '-uc' '-us' --no-targz --internal-chrootexec chroot /var/cache/pbuilder/build//cow.11978 cow-shell /home/buildbot/rosbuilder1/ecl_core_indigo_trusty_amd64_debbuild/ros-indigo-ecl-sigslots_0.61.3-0-20150930-0200-+0900trusty.dsc 
W: /home/buildbot/.pbuilderrc does not exist
I: Running in no-targz mode
I: using fakeroot in build.
I: Current time: Wed Sep 30 02:00:20 KST 2015
I: pbuilder-time-stamp: 1443546020
I: copying local configuration
W: No local /etc/hostname to copy, relying on /var/cache/pbuilder/build/cow.11978/etc/hostname to be correct
I: Installing apt-lines
I: mounting /proc filesystem
I: mounting /run/shm filesystem
I: mounting /dev/pts filesystem
I: policy-rc.d already exists
I: Obtaining the cached apt archive contents
I: Installing the build-deps
I: user script /var/cache/pbuilder/build/cow.11978/tmp/hooks/D05deps starting
Ign http://localhost trusty InRelease
Ign http://localhost trusty Release.gpg
Get:1 http://localhost trusty Release [1596 B]
Get:2 http://localhost trusty/main amd64 Packages [847 B]
Ign http://localhost trusty/main Translation-en
Ign http://kr.archive.ubuntu.com trusty InRelease
Hit http://kr.archive.ubuntu.com trusty Release.gpg
Hit http://kr.archive.ubuntu.com trusty Release
Hit http://kr.archive.ubuntu.com trusty/main amd64 Packages
Hit http://kr.archive.ubuntu.com trusty/main Translation-en
Get:3 http://packages.ros.org trusty InRelease [4040 B]
Get:4 http://packages.ros.org trusty/main amd64 Packages [563 kB]
Ign http://archive.ubuntu.com trusty InRelease
Ign http://archive.ubuntu.com trusty-updates InRelease
Hit http://archive.ubuntu.com trusty Release.gpg
Get:5 http://archive.ubuntu.com trusty-updates Release.gpg [933 B]
Ign http://packages.ros.org trusty/main Translation-en
Hit http://archive.ubuntu.com trusty Release
Get:6 http://archive.ubuntu.com trusty-updates Release [63.5 kB]
Hit http://archive.ubuntu.com trusty/main amd64 Packages
Hit http://archive.ubuntu.com trusty/universe amd64 Packages
Hit http://archive.ubuntu.com trusty/main Translation-en
Hit http://archive.ubuntu.com trusty/universe Translation-en
Get:7 http://archive.ubuntu.com trusty-updates/main amd64 Packages [627 kB]
Get:8 http://archive.ubuntu.com trusty-updates/universe amd64 Packages [319 kB]
Get:9 http://archive.ubuntu.com trusty-updates/main Translation-en [304 kB]
Get:10 http://archive.ubuntu.com trusty-updates/universe Translation-en [168 kB]
Fetched 2051 kB in 10s (190 kB/s)
Reading package lists...
I: user script /var/cache/pbuilder/build/cow.11978/tmp/hooks/D05deps finished
 -> Attempting to satisfy build-dependencies
 -> Creating pbuilder-satisfydepends-dummy package
Package: pbuilder-satisfydepends-dummy
Version: 0.invalid.0
Architecture: amd64
Maintainer: Debian Pbuilder Team <[email protected]>
Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder
 This package was created automatically by pbuilder to satisfy the
 build-dependencies of the package being currently built.
Depends: debhelper (>= 9.0.0), ros-indigo-catkin, ros-indigo-ecl-config, ros-indigo-ecl-license, ros-indigo-ecl-threads
dpkg-deb: building package `pbuilder-satisfydepends-dummy' in `/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'.
Selecting previously unselected package pbuilder-satisfydepends-dummy.
(Reading database ... 12756 files and directories currently installed.)
Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ...
Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ...
dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested:
 pbuilder-satisfydepends-dummy depends on debhelper (>= 9.0.0); however:
  Package debhelper is not installed.
 pbuilder-satisfydepends-dummy depends on ros-indigo-catkin; however:
  Package ros-indigo-catkin is not installed.
 pbuilder-satisfydepends-dummy depends on ros-indigo-ecl-config; however:
  Package ros-indigo-ecl-config is not installed.
 pbuilder-satisfydepends-dummy depends on ros-indigo-ecl-license; however:
  Package ros-indigo-ecl-license is not installed.
 pbuilder-satisfydepends-dummy depends on ros-indigo-ecl-threads; however:
  Package ros-indigo-ecl-threads is not installed.

Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ...
Reading package lists...
Building dependency tree...
Reading state information...
Initializing package states...
Writing extended state information...
The following NEW packages will be installed:
  bsdmainutils{a} cmake{a} cmake-data{a} debhelper{a} dh-apparmor{a} 
  docutils-common{a} file{a} gettext{a} gettext-base{a} groff-base{a} 
  intltool-debian{a} libarchive13{a} libasn1-8-heimdal{a} libasprintf0c2{a} 
  libcroco3{a} libcurl3{a} libgcrypt11{a} libglib2.0-0{a} libgnutls26{a} 
  libgpg-error0{a} libgssapi-krb5-2{a} libgssapi3-heimdal{a} 
  libgtest-dev{a} libhcrypto4-heimdal{a} libheimbase1-heimdal{a} 
  libheimntlm0-heimdal{a} libhx509-5-heimdal{a} libk5crypto3{a} 
  libkeyutils1{a} libkrb5-26-heimdal{a} libkrb5-3{a} libkrb5support0{a} 
  libldap-2.4-2{a} liblzo2-2{a} libmagic1{a} libnettle4{a} libp11-kit0{a} 
  libpipeline1{a} libroken18-heimdal{a} librtmp0{a} libsasl2-2{a} 
  libsasl2-modules-db{a} libtasn1-6{a} libunistring0{a} libwind0-heimdal{a} 
  libxml2{a} man-db{a} po-debconf{a} python-catkin-pkg{a} 
  python-dateutil{a} python-docutils{a} python-empy{a} python-nose{a} 
  python-pkg-resources{a} python-roman{a} ros-indigo-catkin{a} 
  ros-indigo-ecl-build{a} ros-indigo-ecl-concepts{a} 
  ros-indigo-ecl-config{a} ros-indigo-ecl-errors{a} 
  ros-indigo-ecl-exceptions{a} ros-indigo-ecl-license{a} 
  ros-indigo-ecl-mpl{a} ros-indigo-ecl-threads{a} ros-indigo-ecl-time{a} 
  ros-indigo-ecl-time-lite{a} ros-indigo-ecl-type-traits{a} 
  ros-indigo-ecl-utilities{a} sgml-base{a} xml-core{a} 
0 packages upgraded, 70 newly installed, 0 to remove and 80 not upgraded.
Need to get 6358 B/13.7 MB of archives. After unpacking 57.0 MB will be used.
WARNING: untrusted versions of the following packages will be installed!

Untrusted packages could compromise your system's security.
You should only proceed with the installation if you are certain that
this is what you want to do.

  ros-indigo-ecl-mpl 

Do you want to ignore this warning and proceed anyway?
To continue, enter "Yes"; to abort, enter "No": Abort.
E: pbuilder-satisfydepends failed.
I: Copying back the cached apt archive contents
I: unmounting dev/pts filesystem
I: unmounting run/shm filesystem
I: unmounting proc filesystem
 -> Cleaning COW directory
  forking: rm -rf /var/cache/pbuilder/build//cow.11978 
gbp:error: Couldn't run 'git-pbuilder -uc -us': git-pbuilder returned 1
No protocol specified
program finished with exit code 1
elapsedTime=15.028819

I m wondering if this is due to cowbuilder missing some information ?
or perhaps because of one of the warning ?

As far as I know this package installs fine with apt-get on a usual system, so I suspect it is only a symptom of something else going wrong...

Cheers.

Add support for roslint

Try to run roslint_package_name in test jobs, if job exists, add output to a new lint file. We probably want to warn/fail if number of lint errors rises.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.