[elbe-devel] [PATCH v2 02/13] use qemu from backports instead of self packaged
Manuel Traut
manuel.traut at linutronix.de
Fri Dec 8 18:07:29 CET 2017
On Thu, Dec 07, 2017 at 09:34:34AM +0100, Torben Hohn wrote:
> On Wed, Dec 06, 2017 at 03:18:22PM +0100, John Ogness wrote:
> > On 2017-12-06, Torben Hohn <torben.hohn at linutronix.de> wrote:
> > >>>> diff --git a/elbepack/init/default-init.xml b/elbepack/init/default-init.xml
> > >>>> index e1f61ed7..2df7a3f7 100644
> > >>>> --- a/elbepack/init/default-init.xml
> > >>>> +++ b/elbepack/init/default-init.xml
> > >>>> @@ -42,6 +42,7 @@
> > >>>> <pkg-list>
> > >>>> <pkg>openssh-server</pkg>
> > >>>> <pkg>debootstrap/jessie-backports</pkg>
> > >>>> + <pkg>qemu-user-static/jessie-backports</pkg>
> > >>>
> > >>> Please do not use this syntax here.
> > >>> We have a dbsfed syntax for this:
> > >>> <pkg origin="jessie-backports">qemu-user-static</pkg>
> > >>
> > >> I think this is a good idea. But requires extending XML schema:
> > >
> > > sorry. the field is called pin.
> > > this name is not good... but i believe thats what its used for.
> > >
> > > we currently have this:
> > >
> > > ------------------------------------------------------------
> > > % for n in pkgs:
> > > % if "pin" in n.et.attrib.keys():
> > > Package: ${n.et.text}
> > > Pin: release a=${n.et.attrib["pin"]}
> > > Pin-Priority: 991
> > > ------------------------------------------------------------
> > >
> > > do we really want a= or o= ?
> > > or both ?
> >
> > AFAIK, elbe discourages use of the archive/suite name
> > (i.e. stable/oldstable) because these change with each release. So if
> > only the codenames are used (which they should be) we should be using n=
> > for pin instead of a=.
> >
> > In that case, I would suggest the following changes (instead of the ones
> > we are commenting on):
> >
> > diff --git a/elbepack/init/default-init.xml b/elbepack/init/default-init.xml
> > index e1f61ed7..f0af7e88 100644
> > --- a/elbepack/init/default-init.xml
> > +++ b/elbepack/init/default-init.xml
> > @@ -41,7 +41,8 @@
> > <suite>jessie</suite>
> > <pkg-list>
> > <pkg>openssh-server</pkg>
> > - <pkg>debootstrap/jessie-backports</pkg>
> > + <pkg pin="jessie-backports">debootstrap</pkg>
> > + <pkg pin="jessie-backports">qemu-user-static</pkg>
>
> ok.
>
> > </pkg-list>
> > <preseed>
> > <conf owner="pbuilder" key="pbuilder/mirrorsite" type="string" value="http://ftp.de.debian.org/debian"/>
> > diff --git a/elbepack/init/preseed.cfg.mako b/elbepack/init/preseed.cfg.mako
> > index 086ad849..80ebcfbd 100644
> > --- a/elbepack/init/preseed.cfg.mako
> > +++ b/elbepack/init/preseed.cfg.mako
> > @@ -106,14 +106,33 @@ d-i finish-install/reboot_in_progress note
> > d-i pkgsel/include string rng-tools btrfs-tools openssh-client \
> > debathena-transform-lighttpd \
> > elbe-soap elbe-buildenv qemu-elbe-user-static \
> > +## add extra packages specified in initvm xml
> > % for n in pkgs:
> > -% if n.tag == "pkg":
> > -% if prj.has("mirror/primary_host") or not prj.node("mirror/cdrom") or n.et.text.find('/') == -1:
> > -${n.et.text} \
> > -% else:
> > -${n.et.text[:n.et.text.find('/')]} \
> > +% if n.tag == "pkg":
> > +% if not prj.has("mirror/primary_host") and n.et.text.find('/') > 0:
> > +## Installing initvm from bin-cdrom.iso and a target release was
> > +## specified in the element text. This is how target releases were
> > +## specified for elbe 2.x. The target release must be stripped
> > +## because it is not included as a separate release in the
> > +## bin-cdrom.iso repository. The desired package is available in
> > +## the main release of the bin-cdrom.iso repository.
> > +${n.et.text[:n.et.text.find('/')]}\
>
> i really hate this line. it pretty unclear what it does.
> and it actually requires, that n.et.text contains '/'
>
> n.et.text.split ('/')[0] works in any case.
>
> anyways... this code is too complex for my taste to be sitting inline.
> it should be isolated into a function. which then allows much better
> comments.
>
>
> %<
> def pkg2preseed (n):
> # we have a set of old elbe files, which
> # have pkgnames like:
> # pkgname/jessie-backports
> # be backwards compatible, and support them
> pkgsplit = n.et.text.split ('/')
>
> pkgname = pkgsplit[0]
>
> if len (pkgsplit) > 1:
> pkgrel = pkgsplit[1]
> else:
> pkgrel = None
>
>
> # pkg pin attrib overrides /
> if 'pin' in n.et.attrib:
> pkgrel = n.et.attrib['pin']
>
> # pkg attrib version wins over all, and it can also be
> # used with cdrom build.
> if 'version' in n.et.attrib:
> return pkgname + '=' + n.et.attrib['version']
>
> # for a cdrom build, the pkgrel is resetted to None,
> # because the cdrom does not have the release
> # information anymore.
> if not prj.has("mirror/primary_host"):
> pkgrel = None
>
> if pkgrel is None:
> return pkgname
>
>
> return pkgname + '/' + pkgrel
> %>
>
>
> then we just end up with this again:
>
> % for n in pkgs:
> % if n.tag == "pkg":
> ${pkg2preseed (n)} \
> % endif
> % endfor
>
>
> its crucial, that we dont accidentally insert empty lines in
> a loop that is building up a single line using escaped newlines.
>
>
>
>
> > +% else:
> > +${n.et.text}\
> > +% endif
> > +##
> > +% if prj.has("mirror/primary_host"):
> > +## When not installing initvm from bin-cdrom.iso, add a specified
> > +## version _or_ target release using apt syntax. Version has
> > +## precedence.
> > +% if n.et.attrib.has_key("version"):
> > +=${n.et.attrib["version"]}\
> > +% elif n.et.attrib.has_key("pin"):
> > +/${n.et.attrib["pin"]}\
> > +% endif
> > +% endif
> > + \
> > % endif
> > -% endif
> > % endfor
> >
> > passwd passwd/root-password password root
> > diff --git a/elbepack/makofiles/preferences.mako b/elbepack/makofiles/preferences.mako
> > index 0ed2af8b..3c698da5 100644
> > --- a/elbepack/makofiles/preferences.mako
> > +++ b/elbepack/makofiles/preferences.mako
> > @@ -39,7 +39,7 @@ Pin-Priority: ${porg['pin']}
> > % for n in pkgs:
> > % if "pin" in n.et.attrib.keys():
> > Package: ${n.et.text}
> > -Pin: release a=${n.et.attrib["pin"]}
> > +Pin: release n=${n.et.attrib["pin"]}
> > Pin-Priority: 991
> >
> > % endif
> >
> > Thoughts?
I'm fine with that direction, please send a clean patch.
I'll drop the original patch from my V2 queue.
More information about the elbe-devel
mailing list