public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: Henning Schild <henning.schild@siemens.com>
To: Alexander Smirnov <asmirnov@ilbers.de>
Cc: <isar-users@googlegroups.com>
Subject: Re: [RFC][PATCH 0/3] Experiments with .dsc backend
Date: Wed, 2 May 2018 10:19:33 +0200	[thread overview]
Message-ID: <20180502101933.78da7849@md1pvb1c.ad001.siemens.net> (raw)
In-Reply-To: <e677f4f4-de07-0481-a133-91ab8e7a7a8d@ilbers.de>

Am Fri, 27 Apr 2018 18:46:17 +0300
schrieb Alexander Smirnov <asmirnov@ilbers.de>:

> On 04/23/2018 07:03 PM, Henning Schild wrote:
> > Am Mon, 23 Apr 2018 18:26:10 +0300
> > schrieb Alexander Smirnov <asmirnov@ilbers.de>:
> >   
> >> On 04/23/2018 05:36 PM, Henning Schild wrote:  
> >>> Am Mon, 23 Apr 2018 16:21:43 +0300
> >>> schrieb Alexander Smirnov <asmirnov@ilbers.de>:
> >>>      
> >>>> Hi everybody,
> >>>>
> >>>> as it was planned initially, one of the Isar feature is the
> >>>> ability to rebuild original Debian packages with/without
> >>>> customizations. Doing this manually in classical Yocto/OE style
> >>>> requires manual setting of lots of variables and having a copy of
> >>>> Debian patch (*.debian.tar.xz) for this package in your recipe's
> >>>> folder. Maintenance of this system becomes very complicated.
> >>>>
> >>>> I performed a small research regarding bitbake capabilities and
> >>>> found an interesting trick: during bitbake parsing stage (in
> >>>> anonymous tasks) we could re-construct whole recipe (including
> >>>> tasks and variable), and this snapshot will be stored in recipe's
> >>>> dynamic context, that is used during pipeline execution.
> >>>>
> >>>> This series is just a PoC, lots of issues are still open, like:
> >>>>    - Patching upstream packages
> >>>>    - Automatic cross-recipe dependency detection to avoid
> >>>> duplications in recipe and debian/control files
> >>>>    - etc...
> >>>>
> >>>> To test this series just run:
> >>>>
> >>>>    $ bitbake hello
> >>>>
> >>>> After build, in hello workdir there will be a newly-baked
> >>>> identical copy of upstream package :-)  
> >>>
> >>> Interesting idea, but my personal feeling is that Isar already
> >>> uses a lot of bitbake magic and we should maybe try to avoid
> >>> introducing more where feasible.
> >>>      
> >>
> >> Bitbake was designed for Open Embedded, so it doesn't consider our
> >> Isar/Debian usecases. And roughly speaking, bitbake usage in Isar
> >> is a kind of hack at all. In such questions, I'd more prefer to
> >> focus on the features we need and extend bitbake, instead of
> >> applying Yocto philosophy to Isar. But this also is only my
> >> personal feeling. 
> >>>> Feedbacks, ideas, proposals are welcome!  
> >>>
> >>> So my feedback would be that the .dsc to recipe step should be put
> >>> in a helper tool in the scripts directory. People that want to
> >>> modifiy upstream packages would generate an isar-recipe with the
> >>> tool once. Modifications in the form of patches could go on top.
> >>> Or would this limit the envisioned feature in any way?  
> >>
> >> IMHO this is undesired behavior:
> >>    - Extra step to generate new recipes  
> > 
> > Yes, but you can see it.  
> 
> For now I'd like to try keeping user interface as it is. In general, 
> generated files are hard to maintain, especially when you mix them
> with repository content (generate them inside existing meta). If you
> generate these files in a separate meta - then you need to add this
> meta to build, it's also extra step. Moreover in this case the
> default clear source tree is inconsistent, generated part is missed
> by default.
> 
> Anyway this approach could be an option if I'll get in stuck with 
> current implementation.
> 
> >   
> >>    - Extra step to add these recipes to build  
> > 
> > No, not really. You will have to mention your recipe somewhere if
> > you want it in your image. What is does and how does not change
> > that fact.
> > 
> > BTW, did you try overloading something like an essential package?
> > Think of something that is in buildchroot and needs to be updated
> > in there. (libc in the worst case ...)  
> 
> Not yet, probably I posted here too early. This is only PoC for 
> automatic .dsc parsing. Application use-cases are in todo. Probably
> it makes sense to come with them, so we will have real cases to
> discuss :-)
> 
> >   
> >>    - Headache with maintenance: you touch some dsc -> you need to
> >> regenerate new recipes etc...  
> > 
> > True, but major changes in the upstream package will probably make
> > your patches not apply anymore. So i suspect headache here as well,
> > the one thing you do with such a tool is story copies of possibly
> > outdated dscs, which indeed is a bad idea.
> > So the online recipe generation is probably the way to go.
> >   
> 
> In case of any Debian update you anyway have to specify new .dsc
> file, because the previous one will be removed (until you use local
> mirror). So automatic support of customized upstream package.. It's a
> kind of "I want to believe" :-(
> 
> So, let me think a bit more about user interface and use-cases.
> 
> >>    - You should somehow/somewhere list of .dsc files
> >> So this looks like a completely new ecosystem.
> >>
> >> .dsc is standard format to describe Debian source packages. So
> >> anyway, to be Debian compliant Isar should support this format.
> >>  
> >>>
> >>> I also fear that this could complicate the reproducable build
> >>> story.  
> >>
> >> In general this doesn't affect reproducibility at all. The key
> >> difference from typical recipe (build from tarball), that SRC_URI
> >> is derived dynamically from .dsc file during parsing stage. The
> >> remaining part of the pipeline stays untouched.  
> > 
> > It affects it because we will have to redirect every fetch to a
> > local cache, and it introduces fetching.  
> 
> Sorry, could you please explain what you mean here? What is the 
> difference of calling do_fetch and call fetcher manually?

At the moment there is no difference. But patches that introduce
reproducability might modify do_fetch to handle caching centrally.
Maybe it will be done in another way, so just something to keep in mind.

Henning

> Alex
> 
> > 
> > Henning
> >   
> >>>
> >>> Henning
> >>>      
> >>>> With best regards,
> >>>> Alex
> >>>>
> >>>> Alexander Smirnov (3):
> >>>>     buildchroot: Include texinfo to base system
> >>>>     classes/dsc: Basic Debian .dsc backend implementation
> >>>>     recipes-debian: Add example recipe to test Debian .dsc
> >>>> support
> >>>>
> >>>>    meta-isar/recipes-debian/hello/hello.bb          |  10 ++
> >>>>    meta/classes/debian-dsc.bbclass                  | 112
> >>>> +++++++++++++++++++++++
> >>>> meta/recipes-devtools/buildchroot/buildchroot.bb |   3 +- 3 files
> >>>> changed, 124 insertions(+), 1 deletion(-) create mode 100644
> >>>> meta-isar/recipes-debian/hello/hello.bb create mode 100644
> >>>> meta/classes/debian-dsc.bbclass
> >>>>     
> >>>     
> >   


  reply	other threads:[~2018-05-02  8:19 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-23 13:21 Alexander Smirnov
2018-04-23 13:21 ` [RFC][PATCH 1/3] buildchroot: Include texinfo to base system Alexander Smirnov
2018-04-23 13:21 ` [RFC][PATCH 2/3] classes/dsc: Basic Debian .dsc backend implementation Alexander Smirnov
2018-04-23 15:04   ` Henning Schild
2018-04-23 16:11     ` Alexander Smirnov
2018-04-23 17:27       ` Henning Schild
2018-04-25 10:11         ` Jan Kiszka
2018-05-08 17:40   ` Henning Schild
2018-04-23 13:21 ` [RFC][PATCH 3/3] recipes-debian: Add example recipe to test Debian .dsc support Alexander Smirnov
2018-04-23 14:36 ` [RFC][PATCH 0/3] Experiments with .dsc backend Henning Schild
2018-04-23 15:26   ` Alexander Smirnov
2018-04-23 16:03     ` Henning Schild
2018-04-27 15:46       ` Alexander Smirnov
2018-05-02  8:19         ` Henning Schild [this message]
2018-05-08 17:37 ` Henning Schild
2018-05-08 18:31   ` Alexander Smirnov
2018-05-09  7:37     ` Henning Schild

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180502101933.78da7849@md1pvb1c.ad001.siemens.net \
    --to=henning.schild@siemens.com \
    --cc=asmirnov@ilbers.de \
    --cc=isar-users@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox