Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 May 2014 09:12:20 -0700 (PDT)
From:      Sean Eric Fagan <sef@Kithrup.COM>
To:        freebsd-pkg@freebsd.org
Subject:   Re: Delta packages
Message-ID:  <201405141612.s4EGCKwU000644@kithrup.com>

next in thread | raw e-mail | index | archive | help
Matthew Seaman <m.seaman@infracaninophile.co.uk> wrote:
>full-fledged delta package we'd probably be thinking in terms of
>generating some sort of diff between old and new manifests.

I've already got a tool to do that.

(What it actually does is copy all the bits I can from the new manifest, and
copy all the new or modified files and directories from the new one, and
generate a list of rm/rmdir's for the deleted files and directories.  The
intent is that, afterwards, it should look just as if you'd installed the new
version.  As an example, however:  the txz file for python27 had the new
version at 4.4mbytes; the delta file just about half that.)

>    * upgrade package foo-1.0.0 to foo-1.0.1
>    * automatically produces delta/foo-1.0.1-1.0.0.txz
>    * should there be problems with foo-1.0.1 can then rollback by
>    applying the delta package.

Hah.  I hadn't thought about making the reverse, but the code doesn't care,
doesn't it?

>> Second question:  Any objections to it in principal?
>
>On the contrary.  This would make a really great addition.  Please do
>send patches / pull requests.

I'd hoped for some assistance with it, as the pkg code is pretty ... large :).

As I said, I've got something to create the delta files, so I guess I'll start
looking at modifying the package code.

The things I know it needs to do are:

* The manifest needs a key/value indicating what the old version is.
* It needs to extract the files, replacing any that are modified (and updating
their checksum/owner/group/mode as necessary).
* Then it needs to update the package version with the new version.

(If I can't get the pkg code to do it, I can do all of that manually with a
large hammer.  I'd prefer not to, obviously.)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201405141612.s4EGCKwU000644>