[Buildbot-devel] Trying to build dvswitch against libav

Wouter Verhelst wouter at debian.org
Wed Mar 19 16:28:16 UTC 2014


Hi,

I've set up a buildbot instance to build dvswitch automatically upon
commit.

Since dvswitch uses libav, and since libav seems to be in the habit of
deprecating existing API calls currently, I've added libav to the
buildbot instance, with the plan that buildbot should rebuild dvswitch
against libav's git head after a nightly build of libav, so that if
things break, I'll know before it becomes too much of a problem.

Problem is, it doesn't work.

I have set up three factories: one for a "normal" dvswitch build (which
compiles dvswitch and runs the test suite), one for building libav
(which compiles libav and installs it in a specific locatoin), and one
for a build of dvswitch against libav (which is the same as the first
factory, except that it mangles PKG_CONFIG_PATH in the environment so
the correct libav is used).

I've added the following to master.cfg, as suggested in the documentation, to
have codebase thingies:

====
all_repositories = {
        r'git://git.libav.org/libav.git': 'libav',
        r'https://github.com/yoe/dvswitch.git': 'dvswitch',
}

def codebaseGenerator(chdict):
        return all_repositories[chdict['repository']]

c['codebaseGenerator'] = codebaseGenerator
====

I then have the following schedulers:

c['schedulers'].append(AnyBranchScheduler(
                            name="all",
                            treeStableTimer=None,
                            change_filter = ChangeFilter(project='dvswitch'),
                            codebases={'dvswitch': {'repository': 'https://github.com/yoe/dvswitch.git'}},
                            builderNames=["debian-stable", "debian-unstable", "libav-devel"]))
libav = timed.Nightly(
                            name="libav",
                            branch='master',
                            change_filter = ChangeFilter(project='libav'),
                            codebases={'libav': {'repository': 'git://git.libav.org/libav.git'}},
                            hour = 1,
                            minute = 0,
                            onlyIfChanged = True,
                            builderNames=["libav-build"])
c['schedulers'].append(libav)
c['schedulers'].append(ForceScheduler(
                            name="force",
                            builderNames=["debian-stable", "debian-unstable", "libav-devel", "libav-build"]))
#c['schedulers'].append(Dependent(name="libav-dep",
#                           upstream = libav,
#                           builderNames = [ "libav-devel" ]))
c['schedulers'].append(triggerable.Triggerable(name='buildFromLibAv',
                            codebases={'dvswitch': {'repository': 'https://github.com/yoe/dvswitch.git'}},
                            builderNames=['libav-devel']))

I tried using the Dependent scheduler (it's still in the list, but
commented out), but that didn't work, as it tries to do "git update" to
the git commit id from libav rather than the one from dvswitch.

I tried using a Triggerable scheduler as suggested to me on IRC, but
that fails in other interesting ways (see
http://barbershop.grep.be:8009/builders/libav-devel/builds/52/steps/git/logs/err.text/text
for the gory details).

What am I doing wrong?

Thanks,

-- 
This end should point toward the ground if you want to go to space.

If it starts pointing toward space you are having a bad problem and you
will not go to space today.

  -- http://xkcd.com/1133/




More information about the devel mailing list