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

Re: 6.1.3. Multiple binary packages question



On Sun, 18 Jun 2023 at 23:18:24 +0000, Holger Levsen wrote:
> On Sun, Jun 18, 2023 at 11:19:06PM +0200, Bill Allombert wrote:
> > The drawback of dh_install is that it requires more diskspace to build than
> > dh_movefiles but is less error prone.
> > So unless your package is very large, it is safer to use dh_install.
> 
> interesting, I've never heard of dh_movefiles before.

It's the tool that was used before dh_install existed. Its man page says:

    Note: dh_install is a much better program, and you are recommended
    to use it instead of dh_movefiles.

> what does "more diskspace" mean, however? kilobytes? terabytes? 100% of
> the diskspace used by the files installed? 200%?

The cost is 100% of the disk space used by the files being installed,
if your filesystem doesn't support reflinks; or 0% if it does.

dh_install does something similar to

    cp --reflink=auto debian/tmp/usr/bin/foo debian/foo-bin/usr/bin/foo

whereas dh_movefiles is more like

    mv debian/tmp/usr/bin/foo debian/foo-bin/usr/bin/foo

On btrfs and other reflink-capable filesystems, dh_install should be
basically zero-cost, as a result of --reflink=auto.

I'd personally only consider using dh_movefiles for the largest of "data"
packages. Things like openarena-data and nexuiz-data (hundreds of MiB)
are fine with dh_install, but 0ad-data (about 3 GiB) would maybe benefit?

(But if I maintained 0ad-data, I'd probably still use dh_install, and just
make sure that I built it on btrfs or another reflink-capable filesystem
if time and space were a concern.)

> "my" largest package was less than 100mb in size, which can be a bit annoying for
> uploads, but for diskspace during build, several gigabytes (or more) are
> not uncommon, so I'm having a somewhat hard time imaginening that the
> above is a relavant argument in most situations.

If your package's total Installed-Size is 100M and we assume the compressed
size is (say) 60M, then I would expect the build to need:

    quite a lot                      ./configure && make
    + 100M                           make install DESTDIR=debian/tmp
    + 100M                           dh_install
    + 60M                            dh_builddeb

At best, dh_movefiles saves you the second "+ 100M".

    smcv


Reply to: