[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Survey results: git packaging practices / repository format



On 30/06/19 00:16, Ian Jackson wrote:
> Enrico Zini writes ("Re: Survey results: git packaging practices / repository format"):
>> On Fri, Jun 28, 2019 at 10:42:29PM +0100, Ian Jackson wrote:
>>> I hope you all won't mind too much that Sean and I have privileged our
>>> own point of view, in the columns which contain value judgements, and
>>> that we hope to retain that property of the page.
>>
>> I have no problem with you making a collation of the results from your
>> point of view, but I would also like to see some more objective
>> presentation of the survey results, even if in a more raw format.
>>
>> I saw in your survey a great potential for documenting the existing
>> workflows, and I'm having a hard time getting that documentation from
>> the current presentation.
> 
> The current presentation lists *branch formats* not *workflows*.
> 

As a lurker and pervasive packager of the downstream Devuan, I thought
I'd share some of my thoughts on this as git has been the core of our
work flow and build system.

For background ref, Devuan uses git for all packaging.  We've never
supported building from anything other then git sources.  All our
packages are built straight out of our git repository using Jenkins ci
with Jenkins-Debian-glue (jdg)
The jdg splits the package building into 3 separate phases - source
build (uses gbp), binary build, and uploading to our repository (dak)

For the most part we are trivially patching the Debian packaging to
change the build to remove hard dependencies on systemd, and to build
some Devuan specific packages for themes and other minor tidbits.  (It's
a really small subset of packages.)

Our packaging approach is more or less "unapplied" for 3.0(quilt)
packages, and (I think) pretty much universally using quilt and gbp -
only for changelog and buildpackage (because it does a nice pbuilder
based build process with all the checks for ensuring no stray patches to
the upstream source sneak in).

We've universally stamped out using pristine tar ;-) and always use use
either upstream-branch or preferably upstream-tag.  This works pretty
well and we can usually merge from salsa (and formerly alioth) tidy up
the changelog conflicts.

our branch structure is basically
suite/<codename*>[-proposed]{[-updates][-backports][-security]}

where the codename is either the target suites codename, "unstable" or
"experimental" the optional suffixes [proposed] etc only apply really to
stable and testing release branches in the same way.

For upstream branches (where they exist) they are named the same as the
upstream branch and tags in Debian (except for where we have unpacked
the pristine-tar branches).

For native packages we just patch and merge from Debian - this really
only applies to Debian-installer and related packages.

For Devuan we only care about suites/<suite-name> and any upstream
branches and discourage private development branches being pushed to our
"Devuan-packages" group.

Most contributions come via forks and merge requests in our gitlab instance.

A few personal thoughts on where things might go in a way that will be
helpful to downstream/derivatives:

(Most of these stolen or inspired from DEP14 -
https://dep-team.pages.debian.net/deps/dep14/)

- Packaging branch names <vendor>/<suite|codename>
- Release tags: upstream/<version> and <vendor>/<version>
   (upstream tags are the easiest)
A debian/README.source that describes how and where the sources obtained
and any alterations such as removed non-free content.

Upstream sources in the "upstream/" namespace

I did spend some time trying to make 3.0 (git) - aka "gitsrc" packages
work, with some limited success, but mostly abandoned that in favour of
quilt or native for any Debian packages.  That said I think if the
tooling (gbp particularly) could recognise and handle 3.0 (git) packages
properly it would be useful.  (See https://wiki.debian.org/GitSrc for
more info)

There was one outstanding issue in the "gitsrc" discussion that I had,
and that was clear handling of patches to the upstream source.  The best
answer I can come up with that is to use a sub vendor namespace
"patches" and a branch per patch
    ie "debian/patches/01-<brief-descriptor>"
This retains a similar form and workflow as quilt and patches could be
applied and managed with the same flow as quilt does - possibly with a
re-worked quilt.  The benefit also is that it becomes easy for git to
directly identify patch clashes and allow to easily resolve them using a
similar workflow as is done with quilt packages.  Ideally a quilt like
tool would do this for us).

In addition the gitsrc format would not have to ship the upstream source
at all if a machine-readable file containing the upstream source vcs or
archive url that could be used to automatically obtain and generate the
orig.tar archive at build time (if the orig.tar archive didn't already
exist locally or in the Debian archive/pool)

I hope this adds some light and information into the mix.

-- Note:
I'm interested in where this discussion is going and will attempt to
follow it to it's conclusion.  However I'm infrequently looking at
debian-devel posts, so if anyone wants to specifically bring my
attention to pertinent details in this thread, or wants a more
synchronous response, feel free to CC me.

Cheers,
	Daniel


-- 
Daniel Reurich
Centurion Computer Technology (2005) Ltd.
021 797 722

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: