[Kolab-devel] Announcing some blog posts for building packages for Debian on OBS
Jeroen van Meeuwen (Kolab Systems)
vanmeeuwen at kolabsys.com
Tue Oct 29 18:41:34 CET 2013
On 2013-10-29 14:36, Mateusz Kijowski wrote:
> Hi,
>
> 2013/10/28 Paul Boddie <paul at boddie.org.uk>
>> I was wondering which project we should be targeting. I see there are
>> "3.1"
>> and "Development" projects, and when I tried to build the
>> "Development"
>> packages myself there seemed to be some kind of fundamental
>> (non-packaging-
>> related) build issue, whereas the "3.1" packages didn't exhibit the
>> same
>> problems.
>>
>> If we're fine-tuning the packaging is it best to target "3.1" in order
>> to
>> not
>> have to deal with two different variables at the same time, or should
>> it be
>> safe to target the "Development" stuff? Also, where do the "Updates"
>> come
>> into
>> this?
>>
>
> I am also confused by this. Which project should people willing to help
> with Debian packaging should work with? I am under impression that
> following a moving target (which I understand Kolab:Development project
> is)
> is flawed. I think that we should focus on getting 3.1 packages to
> shape
> and then port necessary changes to the development project.
>
I would argue that one should always target the next version of Kolab,
i.e. Kolab:Development, not unlike new packages for Debian first must be
accepted to Sid (the moving target), before they can become available in
testing, or backports for stable.
That said, I'm more than willing to entertain first fixing the packages
for Kolab:3.1(:Updates), as long as some of you are willing to stand up
and make sure fixes also end up in Kolab:Development (immediately or
afterwards).
> I also have trouble to actually understand how Debian packages are
> being
> built here. Let's take the pykolab package:
>
> pykolab$ ls -al
> razem 392
> drwxr-xr-x 3 matik matik 4096 paź 29 13:57 .
> drwxr-xr-x 4 matik matik 4096 paź 29 13:57 ..
> -rw-r--r-- 1 matik matik 10467 paź 29 13:57 debian.changelog
> -rw-r--r-- 1 matik matik 3370 paź 29 13:57 debian.control
> -rw-r--r-- 1 matik matik 640 paź 29 13:57 debian.rules
> -rw-r--r-- 1 matik matik 7094 paź 29 13:57 debian.tar.gz
> drwxr-xr-x 2 matik matik 4096 paź 29 13:57 .osc
> -rw-r--r-- 1 matik matik 333461 paź 29 13:57 pykolab-0.6.8.tar.gz
> -rw-r--r-- 1 matik matik 1086 paź 29 13:57 pykolab.dsc
> -rw-r--r-- 1 matik matik 14742 paź 29 13:57 pykolab.spec
>
> I understand that debian.tar.gz is the debian directory from the source
> package. This layout is quite different from what I am used to when
> working
> with debian packaging so I have some questions regarding this file:
>
> * Why is it a tar and not a proper directory?
osc, the OBS command-line client and source code management utility (#50
points of FAIL), does not support directory trees.
Not proper, agreed.
Entirely awkward, agreed.
Not entirely sure why the OBS developers would come up with such a new
niche corner of the universe specific to them and them alone, either.
> * Why there are some files (debian.{changelog,control,rules}) separated
> from the debian.tar.gz?
OBS itself requires these .dsc, .changelog, .rules and .series and such,
for fsck knows what reason.
OBS requires exactly two tarballs, no less, no more, and both need to be
referred in the pykolab.dsc either using format 1.0 and zeroed out
checksums and sizes, or format 3.0 and accurate checksums and sizes.
Perhaps read on down for further info.
> * What connection does it have to
> git://git.kolab.org/git/pykolabreferenced by pykolab.dsc? (in fact
> this URL seems to be broken)
This is the upstream source code management repository.
> * Does this have any connection to http://git.kolabsys.com/apt/pykolab/
> git
> repository?
This is the former APT git-buildpackage source code management
repository.
> * Is debian.tar.gz generated somehow? According to Timotheus' how-to
> [1]
> one should untar it, make changes to the files inside, tar it again and
> push for building. Are these changes kept in some kind of version
> control?
>
The server-side of `osc` can indeed look in to the .tar.gz, but the only
means of creating revisions is by submitting a new .tar.gz.
> Also, some packages (e.g libkolab) seem to have patches inside them. I
> guess that they are needed for RPM generation from *.spec files. Is
> that
> true?
>
If there is a debian.series, they may also be used for the Debian
packaging.
> I am also wondering where the pykolab-0.6.8.tar.gz file is coming from.
http://mirror.kolabsys.com/pub/releases/
> I
> guess that some of these questions are related to inner workings of
> OBS. I
> am willing to learn, but I have trouble to find relevant information.
> Could
> you point me to some information on how this is all set up and/or how
> building works in OBS? Some kind of build script might suffice, but I'm
> unsure where to look for it.
>
The upstream documentation from build.opensuse.org applies cleanly.
That said, however, do not mistake OBS for a decent build system. On a
scale from one to ten, OBS would probably score a mere two points. It
has no tags, no branches, no distributed version control, very limited
access control capabilities with an architecture that would make your
bald uncle's hair stand up straight and makes you boggle at the tricks
you need to pull if you are anywhere near familiar with how a build
system is supposed to work.
Highlights:
- project configuration, seeded to an OBS-specific buildroot-creator
utility in one go, overrides your package manager,
- the buildroot-creator is called once, based on what an OBS-specific
interpreter thinks of your package description, rather than populating a
minimal buildroot with packages as they are available on native build
system suites, to then interpret the specifications of your packaging
the way that a native build system suite would do it.
- although I do have access to the sources of Kolab:13 (for which I
need to be both a maintainer and a reader, BTW, as the hogher-level
privileges to not imply not include the lower-level privileges, however,
how can one be a maintainer without access to the sources), I can still
not download the source package (.src.rpm etc.),
- releases (as in NEVRA releases) are overwritten causing you to need
to work around the issue of possibly having two entirely different,
binary incompatible foo-1.0-1 packages, which may have been build
against two entirely different versions of Linux / GNU/Linux.
- it requires complete copies of mirrors and therefore cannot include
updates to distributions.
I could go on for a little while longer...
It works, but turns out packages of relatively low quality. The way it
manages the sources for packages and packaging is far worse, as you have
experienced. It's an entirely new ball-game.
If I ever have some spare time on my hands, I'll dust off the build
system design I created a couple of years ago, but never got around to
actually implementing.
Kind regards,
Jeroen van Meeuwen
--
Systems Architect, Kolab Systems AG
e: vanmeeuwen at kolabsys.com
m: +44 74 2516 3817
w: http://www.kolabsys.com
pgp: 9342 BF08
More information about the devel
mailing list