Re: Integration between buildservice and gnome.build
- From: "John Carr" <john carr unrouted co uk>
- To: API <apinheiro igalia com>
- Cc: build-brigade-list gnome org
- Subject: Re: Integration between buildservice and gnome.build
- Date: Fri, 16 Jan 2009 11:43:13 +0000
Hi
Interesting stuff. This touches on several areas that JHBuild is
thinking about (or at least, I am).
On jhbuild to distro mappings. This is useful information for other
distros wanting to do build.g.o / package integration and also could
be handy for eventual jhbuild / packagekit support. So it would be
nice to specify something that other distros could provide as well.
There is a jhbuild variant that can build debian packages (jhdebuild),
and when i experimented with that i had make dist problems too. It
would be nice to have an export method on the JHBuild Package class
that tried to do a make dist, but could fall pack to tarring the
source directory.
It would also be nice if this functionality was a jhbuild command so
that jhbuild users could just do 'jhbuild upload-package' or something
similiar, then buildbot could just do a normal "jhbuild bot --step"
type command.
John
On Fri, Jan 16, 2009 at 10:59 AM, API <apinheiro igalia com> wrote:
>
> Hello
>
> sometime ago Rodrigo Moya proposed a kind of integration between the build-brigade
> and the Novell BuildService [1]. The idea is that the build-brigade compile a
> module, and if it is successful, use this code as a target to upload the
> module to the build service, to have an updated SuSE package.
>
> The idea is add a new step (currently we have 5: update, build, check, coverage
> and clean), and execute a script. It is clear that it is not needed that all
> the slaves have this additional step, so we could check how to configure it
> as a conditional step or simply use a modified slave code in some concrete
> machine.
>
> This script basically takes the code, creates a tarball with this code, and
> then use some osc in order to apply some SuSE patches, and upload the package.
>
> Rodrigo Moya and Michael Wolf created a provisional script, and Iago and me
> were reviewing it, so we thought that we should share it with the list. You can
> check it here:
>
> git clone http://www.gnome.org/~rodrigo/git/osc-plugins.git
>
> There is a directory with the build-brigade stuff.
>
> During my review I found some errors and added additional information to
> the verbose mode (to debugging purpose), I attach a patch, so if you agree with
> the changes, please Rodrigo commit it.
>
> At this moment it have some problems, and in fact I was not able to get any
> module uploaded. Some problems I found were:
>
> * In order to create the tarball it uses make dist
> * I'm not sure that all the gnome modules support correctly make dist
> * make dist require to have enabled gtk-doc in some modules, so it is required
> to do a ./autogen.sh --enable-gtk-doc
> * This slow the process and making my tests, in some modules (ie libglade) it
> fails with this error (although not all the times):
> configure.in:165: required file `doc/Makefile.in' not found
> configure.in:165: required file `doc/version.xml.in' not found
> configure.in:165: required file `tests/Makefile.in' not found
> Makefile.am:1: required directory ./tests does not exist
> But all theses files and directories exists
> * So, probably could be a good idea find another way to create the tarball with
> the source code.
> * Other problem is related with the fact that there are different name
> convention for the gnome moduels between jhbuild and the build service, so a
> name mapping is required (see packagemappings.py file). Currently the mapping
> list is incomplete.
>
> In you want to do some tests, you'll need to do something like that (with the
> proper local directories):
>
> ./builddir-prepare -p GNOME:Factory -m libglade -b ~/osc -v
> ./builddir-prepare -p GNOME:snapshots:unpatched -m libglade -b ~/osc -v
> ./upload-tarball -p GNOME:snapshots:unpatched -m libglade -s ~/gnome/work/src -b ~/osc -v
>
> (About that, one idea could be include the builddir-prepare on the upload-tarball)
>
> You'll need a account on the build service. There are currently one created for
> build-brigade, to make the tests. If anyone have interest, I can send the login
> and password.
>
> Sorry for this über mail
>
> BR
>
> [1] http://en.opensuse.org/Build_Service/CLI
> [2] http://en.opensuse.org/Build_Service/CLI#osc.2C_the_Python_command_line_client
>
> ===
> API (apinheiro igalia com)
>
> diff --git a/gnome-build-brigade/builddir-prepare b/gnome-build-brigade/builddir-prepare
> index f39413c..6e60a41 100755
> --- a/gnome-build-brigade/builddir-prepare
> +++ b/gnome-build-brigade/builddir-prepare
> @@ -62,8 +62,11 @@ def main():
> cmd = "osc checkout %s %s" % \
> (project, packagemappings.suse_package_name(package))
>
> + if optz.verbose:
> + print "About to execute %s" % cmd
> status, output = commands.getstatusoutput(cmd)
> if status != 0:
> + print "Fail\n %s" % output
> raise
>
> pushd.popd()
> diff --git a/gnome-build-brigade/packagesnapshotter/osc.py b/gnome-build-brigade/packagesnapshotter/osc.py
> index ba19b5f..b276638 100644
> --- a/gnome-build-brigade/packagesnapshotter/osc.py
> +++ b/gnome-build-brigade/packagesnapshotter/osc.py
> @@ -3,19 +3,27 @@
> # misc osc commands. Probably should use osc's api directly, of
> # course. Maybe later.
>
> +import commands
> import optz
> import packagemappings
> import pushd
> +import oscpluginsgnome.pacversion
>
> def get_last_version(project, package):
>
> - dir = "%s/%s/%s" % (optz.builddir, project, package)
> + dir = "%s/%s/%s" % (optz.builddir, project, packagemappings.suse_package_name(package))
> pushd.pushd(dir)
>
> cmd = "osc pacversion %s %s" % \
> (project, packagemappings.suse_package_name(package))
>
> + if optz.verbose:
> + print "About to execute: \"%s\"" % cmd
> +
> status, output = commands.getstatusoutput(cmd)
> + if optz.verbose:
> + print output
> +
> if status != 0:
> raise
>
> @@ -32,8 +40,13 @@ def checkout():
> def add(package):
> cmd = "osc add %s" % package
>
> + if optz.verbose:
> + print "About to execute %s" % cmd
> +
> status, output = commands.getstatusoutput(cmd)
> if status != 0:
> + print "Error executing %s" % cmd
> + print "Output\n %s" % output
> raise
> pass
>
> @@ -44,5 +57,7 @@ def commit(message):
> status, output = commands.getstatusoutput(cmd)
>
> if status != 0:
> + print "Error executing %s" % cmd
> + print "%s" % output
> raise
> pass
> diff --git a/gnome-build-brigade/packagesnapshotter/svn.py b/gnome-build-brigade/packagesnapshotter/svn.py
> index 29932f4..5c7e2b4 100644
> --- a/gnome-build-brigade/packagesnapshotter/svn.py
> +++ b/gnome-build-brigade/packagesnapshotter/svn.py
> @@ -12,7 +12,7 @@ import pushd
> # XXX: We could probably do a lot of this stuff with svn's python bindings...
>
> def get_revision_no(svndir, module):
> - dir = "%s/%s/trunk" % (svndir, module)
> + dir = "%s/%s" % (svndir, module)
>
> if optz.verbose:
> print "getting the current revision number"
> @@ -42,7 +42,7 @@ def update(svndir, module):
> print "doing an svn update"
> pass
>
> - dir = "%s/%s/trunk" % (svndir, module)
> + dir = "%s/%s" % (svndir, module)
>
> try:
> pushd.pushd(dir)
> @@ -52,10 +52,13 @@ def update(svndir, module):
> pass
> cmd = "svn up"
> status, output = commands.getstatusoutput(cmd)
> + if optz.verbose:
> + print output
> +
> if status != 0:
> raise
>
> - if opts.verbose:
> + if optz.verbose:
> print "svn update finished, apparently successfully."
> pass
>
> @@ -69,7 +72,7 @@ def update(svndir, module):
> pass
>
> def checkout(svndir, module, root, nuke=False):
> - dir = "%s/%s/trunk" % (svndir, module)
> + dir = "%s/%s" % (svndir, module)
>
> if nuke == True:
> status, output = commands.getstatusoutput("rm -rf %s" % dir)
> @@ -77,7 +80,7 @@ def checkout(svndir, module, root, nuke=False):
>
> try:
> pushd.pushd(svndir)
> - cmd = "svn co %s/%s/trunk %s/trunk" % (root, module, module)
> + cmd = "svn co %s/%s %s" % (root, module, module)
> status, output = commands.getstatusoutput(cmd)
>
> except:
> diff --git a/gnome-build-brigade/packagesnapshotter/tarballs.py b/gnome-build-brigade/packagesnapshotter/tarballs.py
> index 7e3fddf..a3e05a4 100644
> --- a/gnome-build-brigade/packagesnapshotter/tarballs.py
> +++ b/gnome-build-brigade/packagesnapshotter/tarballs.py
> @@ -14,7 +14,7 @@ import versions
> # Return a dict of, at least, { 'path': <path>, 'version', <version> }
> def dist(baseversion, svndir, module):
> retval = {}
> - path = "%s/%s/trunk" % (svndir, module)
> + path = "%s/%s" % (svndir, module)
> pushd.pushd(path)
>
> # Nuke any tarballs that may be lying around
> @@ -24,7 +24,10 @@ def dist(baseversion, svndir, module):
> if status != 0:
> raise
>
> - status, output = commands.getstatusoutput("./autogen.sh --enable-gtk-doc")
> + if optz.verbose:
> + print "About to execute ./autogen.sh --enable-gtk-doc"
> +
> + status, output = commands.getstatusoutput("jhbuild run ./autogen.sh --enable-gtk-doc")
> if status != 0:
> print output
> raise "autogen failed in %s :(" % path
> @@ -37,13 +40,18 @@ def dist(baseversion, svndir, module):
> # autoconf
> # configure --enable-gtk-doc
>
> - status, output = commands.getstatusoutput("make dist")
> + if optz.verbose:
> + print "About to execute 'make dist-bzip2'"
> +
> + status, output = commands.getstatusoutput("jhbuild run make dist-bzip2")
> if status != 0:
> + print "Error \n %s" % output
> raise
>
> cmd = "ls %s-*tar.*" % tn
> status, output = commands.getstatusoutput(cmd)
> if status != 0:
> + print "Error: \n %s" % output
> raise
> tarball = output
>
> @@ -106,6 +114,7 @@ def rename_tarball(tarball, module, their_version, our_version):
>
> status, output = commands.getstatusoutput(cmd)
> if status != 0:
> + print "%s" % output
> raise
>
> nt = "%s.tar.bz2" % new_name
> @@ -120,7 +129,7 @@ def rename_tarball(tarball, module, their_version, our_version):
> def make_our_version(baseversion, svndir, module):
> current_date = dates.current_date()
> revno = svn.get_revision_no(svndir, module)
> - claimed_version = versions.configure_thinks("%s/%s/trunk" % (svndir, module), module)
> + claimed_version = versions.configure_thinks("%s/%s" % (svndir, module), module)
>
> # baseversion+claimed_version+current_date+revno
> if optz.verbose:
> diff --git a/gnome-build-brigade/upload-tarball b/gnome-build-brigade/upload-tarball
> index f0d3372..b538706 100755
> --- a/gnome-build-brigade/upload-tarball
> +++ b/gnome-build-brigade/upload-tarball
> @@ -28,7 +28,7 @@ def main():
> parser.add_option("-s", "--svndir", dest="svndir",
> help="Specify where svn checkouts live. Note that checkouts are relative to " +
> "this path. Thus, you only need to specify something like '~/svn/gnome'; this " +
> - "program will automagically expand it into '/home/<you>/svn/gnome/glib/trunk'")
> + "program will automagically expand it into '/home/<you>/svn/gnome/<module>'")
> parser.add_option("--skip-svn-update", dest="skipsvn", action="store_true",
> help="Don't bother doing a svn update, to save time")
> parser.add_option("-b", "--builddir", dest="builddir",
> @@ -66,6 +66,8 @@ def main():
> fail = True
> print "You need to specify where osc will work"
> pass
> + else:
> + optz.builddir = options.builddir
>
> if fail == True:
> parser.error("")
>
> _______________________________________________
> Build-brigade-list mailing list
> Build-brigade-list gnome org
> http://mail.gnome.org/mailman/listinfo/build-brigade-list
>
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]