Wednesday 7 June 2023

Re: git-ubuntu build

On Wed, Jun 07, 2023 at 06:41:14PM -0700, Steve Langasek wrote:
> Hi folks,
>
> As git-ubuntu sees increasing use, including for such things as requests for
> sponsorship of Debian merges, I've had an itch to scratch regarding the
> complexity of passing correct flags to dpkg-buildpackage, so I spent some
> time prototyping a git-ubuntu wrapper for it.
>
> bzr-builddeb hasn't been useful for general work on Ubuntu packages for
> quite a while, but the behavior of this wrapper is inspired by it.
> Hopefully some of you will find using this tool pleasantly familiar!
>
> The intent is that this will eventually become a git-ubuntu subcommand,
> though there are some namespace questions to sort out first - the obvious
> name for such a command IMHO would be 'git-ubuntu build' but that already
> exists and does other things.

It does not exist, actually! I recall we dropped it a few years ago,
see see f2dc622e. I recall at the time it was intended to one day bring
it back, but the plan was to reimplement - as you're doing - but also
build it up from first principles with ample test case coverage. The
original subcommand lacked tests, but tried to do a bit too much (it
included wrapping lxd, running lint, etc.) and the lack of tests made
maintenance a bit scary. So, I'd encourage making matching tests as you
go. :-)

That said, though, I've wondered if 'build' may not necessarily be the
ideal jargon, anyway. Since the (prepare-upload args) step can trigger
a git push, and because this is done principly when uploading, it feels
more like a submission-style workflow than a build; "build" also implies
you're creating some form of artifact for local use, which in this case
you're not, really.

So, I'd suggest that even though 'git-ubuntu build' is not used, you may
still want to think more anyway about if there's a better term.


> From initial feedback, I know a lot of developers are using sbuild to build
> their source packages rather than invoking dpkg-buildpackage directly. I
> would like to provide a corresponding wrapper for sbuild as a next step - I
> would suggest this should eventually be called 'git-ubuntu sbuild'.
>
> Anyway, I've been using this script in anger for a week, so I'd like to
> welcome other folks to give it a try now as well.
>
> To get started:
>
> git clone lp:git-ubuntu
> cd git-ubuntu
> sudo mk-build-deps -i -r . (or: sudo apt build-dep .)
> export PATH=$PATH:$(pwd)/sandbox
>
> then cd to a git-ubuntu repo, and:
>
> gu-build
>
> Note that this calls the equivalent of `git-ubuntu prepare-upload args`
> under the hood, so will push to a launchpad branch under your user.
>
> Why this is useful:
>
> - the syntax 'dpkg-buildpackage $(git-ubuntu prepare-upload args)' is
> onerous and repetitive - but we want to encourage inclusion of these
> headers in .changes files, as this lets us automate closure of git-ubuntu
> MPs
> - there are certain options that can be inferred as correct for any
> git-ubuntu repo (-i -I)
> - orig.tar.xz should be reconstituted or downloaded when needed, without
> extra commands (we have pristine-tar branches in git-ubuntu which often
> save having to do a duplicate download; having to clone a git repository
> *and* apt source the package is meh)
> - getting the correct options to dpkg-buildpackage by hand for a package
> merge is tedious; this automates -v and -sa arguments.

Very cool, and I'll have to look at what you're doing to automate the
-sa arguments, I hadn't figured out a good solution there.

Btw, you may already be doing this but I've found in scripting this
myself that it's worthwhile to check the $(git ubuntu prepare-upload
args) run for exit codes before passing its output along; there are
situations where it fails.

In addition, I always do a grep "^Vcs-Git" on the produced changes file,
since if prepare-upload fails (or you're using an old git-ubuntu version
that doesn't have it), you can accidentally end up producing a valid
.changes file that doesn't have the Vcs info.

Bryce

--
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel