[Piuparts-devel] correctly pass --extra-package debs to piuparts

Andreas Beckmann anbe at debian.org
Sun Aug 5 15:08:31 BST 2018


On 2018-08-05 14:53, Johannes Schauer wrote:
> Hi Andreas,
> 
> thanks for your quick reply!
> 
> Quoting Andreas Beckmann (2018-08-05 14:34:11)
>> On 2018-08-05 13:57, Johannes Schauer wrote:
>>> Unfortunately, I see no easy way to achieve the same with piuparts. How does
>>> one pass extra packages to piuparts? --extra-old-packages seems to be the wrong
>>> choice. Is the only way to do this by creating a new apt repository with all
>>> additional .deb packages and pass that to piuparts via --extra-repo?
>> Yes. That's the only way to make them available to apt. If you would
>> give optional .deb files to piuparts, we would just copy them, make a
>> repo locally and use that.
> 
> I would've expected that piuparts would support the latter. It would be more
> convenient to the user if piuparts would take care of creating the repo than
> the user having to do it themselves. That's also how sbuild and autopkgtest do
> it when the user gives them extra debs. Neither of those two requires the user
> to do the repo setup themselves.

copying all the debs is a waste, especially if you want to test a lot of
packages all needing the same tree. (I assume you will test each package
binary individually ..., and you will test install and upgrade scenarios)
Doing just
  (cd /path/to/repo && dpkg-scanpackages . > Packages)
is cheap, and should be easily scriptable.
(piuparts won't do it, because it will not modify arbitrary directory
trees given as input to it)

>> All you need to provide is a local directory with all the .debs and a
>> Packages file in there. Does not need to be signed or have a Release file or
>> anything fancy.
> 
> Oh? Does that mean that apt can now use a plain directory without a Release
> file using a line like:
> 
> deb file:///directory/inside/schroot/ ./
> 
> I thought a Release file was required by apt? If I require using the above I
> get the following when doing $(apt update):
> 
> E: The repository 'file:/home/josch/repository ./ Release' does not have a Release file.
> 
> So how does apt not require a Release file?

Use with it with [trusted=yes]

as does piuparts if you just give a plain path:

piuparts ... --bindmount /tmp/my-repo --extra-repo /tmp/my-repo


How do you call piuparts anyway?

If this should be fixed in piuparts, then probably by adding some driver
script that takes e.g. a bunch of .changes files as parameter, builds a
repo of all the .debs and runs piuparts on each binary package, possibly
multiple times.

Which reminds me of https://bugs.debian.org/766543


Andreas



More information about the Piuparts-devel mailing list