[prev in list] [next in list] [prev in thread] [next in thread] 

List:       git-buildpackage
Subject:    [git-buildpackage] Bug#752503: [PATCH] Implement gbp-buildpackage-rpm
From:       agx () sigxcpu ! org (Guido =?iso-8859-1?Q?G=FCnther?=)
Date:       2015-08-20 13:08:21
Message-ID: 20150820130821.GA3276 () bogon ! m ! sigxcpu ! org
[Download RAW message or body]

Hi,
On Thu, Aug 20, 2015 at 01:21:08PM +0200, Tzafrir Cohen wrote:
> On Wed, Aug 19, 2015 at 07:10:35PM +0200, Guido G?nther wrote:
> > Hi Markus,
> > On Fri, Feb 06, 2015 at 02:18:11PM +0200, Markus Lehtonen wrote:
> > > Hi,
> > > 
> > > The attached patch series implements initial version of the
> > > gbp-buildpackage-rpm tool.
> > > 
> > > The patches modifying gbp.command_wrappers:Command (patches 0011 and
> > > 0012) are not strictly required but they make the output from nosetests
> > > much cleaner.
> > > 
> > > These patches, plus some additional features extending gbp-buildpackage
> > > and gbp-buildpackage-rpm, can also be found on the
> > > feature/buildpackage-rpm branch in my Github repository:
> > > https://github.com/marquiz/git-buildpackage-rpm
> > 
> > Thanks a lot! I had commented on these a while ago and since you seem to
> > be busy elsewhere I pulled everything that looked good and then dumped
> > the actual script verbatim into the tree removing options not yet
> > supported. All this is on master now.
> > 
> > I need to fix up the component tests at one point but I think it's
> > better to give this some exosure within Debian now - very well knowing
> > that things mostly stalled due to inacivity on my end.
> > 
> > We now have a pretty good baseline with only import-orig-rpm missing
> > completely atm.
> 
> Big thanks to both of you!
> 
> For the record, this is what happens when I try to build GBP itself as
> an RPM package on a Debian Stretch system (GBP built from git with GBP
> on the same system):
> 
> 
> $ gbp buildpackage-rpm 
> Traceback (most recent call last):
> File "/usr/bin/gbp", line 9, in <module>
> load_entry_point('gbp==0.6.33', 'console_scripts', 'gbp')()
> File "/usr/lib/python2.7/dist-packages/gbp/scripts/supercommand.py",
> line 136, in supercommand
> return module.main(args)
> File
> "/usr/lib/python2.7/dist-packages/gbp/scripts/buildpackage_rpm.py", line
> 507, in main
> spec = rpm.SpecFile(os.path.join(dump_dir, spec.specfile))
> File "/usr/lib/python2.7/dist-packages/gbp/rpm/__init__.py", line 138,
> in __init__
> raise NoSpecError("Unable to read spec file: %s" % err)
> gbp.rpm.NoSpecError: Unable to read spec file: [Errno 2] No such file or
> directory:
> '/var/tmp/gbp/buildpackage-rpm_HMyA9V/packaging_YoGUAN/git-buildpackage.spec'
> 
> 
> So, let's point to the spec file explicitly. Do we want to move the
> file? Fix buildpackage-rpm? Leave things as they are?

We should do two things:

a) catch the exception and add a clear error message whats wrong
b) decide which is the best default for packagind-dir. I'm inclined to
say packaging/ or even better: first check packaging/ then fall back to
./

Any opinions on this one?

> 
> 
> $ gbp buildpackage-rpm --git-spec-file=packaging/git-buildpackage.spec
> gbp:info: Creating (native) source archive
> git-buildpackage_0.6.34.tar.gz from 'HEAD'
> error: Failed build dependencies:
> docbook-utils is needed by git-buildpackage-0.6.34-0.noarch
> epydoc is needed by git-buildpackage-0.6.34-0.noarch
> gtk-doc is needed by git-buildpackage-0.6.34-0.noarch
> python is needed by git-buildpackage-0.6.34-0.noarch
> python-setuptools is needed by git-buildpackage-0.6.34-0.noarch
> gbp:error: 'rpmbuild -ba --define "_topdir \
> /home/tzafrir/Proj/Packs/git-buildpackage/rpmbuild" --define "_specdir \
> %_topdir/SPECS" --define "_sourcedir %_topdir/SOURCES" \
> %/home/tzafrir/Proj/Packs/git-buildpackage/rpmbuild/SPECS/git-buildpackage.spec' \
> %failed: it exited with 1 
> 
> I am not aware of any way to tell rpm on a Debian system to pretend it
> has those dependencies satisfied. Obviously the proper way to build
> packages is in mock or whatever other chroot environment. But sometimes
> (at least for some packages) you just want to build and you know it will
> work (at least for throw-away temporary builds). So the obvious attempt
> would be:
> 
> $ gbp buildpackage-rpm --git-builder='rpmbuild --nodeps'
> --git-spec-file=packaging/git-buildpackage.spec 
> gbp:info: Creating (native) source archive
> git-buildpackage_0.6.34.tar.gz from 'HEAD'
> error: File /home/tzafrir/rpmbuild/SOURCES/git-buildpackage_0.6.34.tar.gz: No such \
> file or directory gbp:error: 'rpmbuild --nodeps \
> /home/tzafrir/Proj/Packs/git-buildpackage/rpmbuild/SPECS/git-buildpackage.spec' \
> failed: it exited with 1

I'm building with:

  gbp  buildpackage-rpm  --git-packaging-dir=packaging/ --nodeps -bb

which works

> The error here may not be obvious at first glance. But it becomes clear
> when you notice that all the --define-s from the above are missing.
> buildpackage-rpm adds them if the builder is exactly "rpmbuild" (if not,
> you may have you own tricks, and it should not mess with your
> environment).
> 
> 
> So the proper fix: use --git-mock (when it is merged).

Yeah, for Debian this will make things much simpler I guess.
Cheers,
 -- Guido


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic