No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
mlschroe fix off-by-one error in delta generation code
This could lead to a segfault in rare circumstances.
Latest commit 619eaf3 Jan 12, 2015
Permalink
Failed to load latest commit information.
zlib-1.2.2.f-rsyncable
.gitignore - add .gitignore Jul 21, 2009
LICENSE.BSD - import 3.4 release Jul 21, 2009
Makefile fix zlibcppflags typo Jun 10, 2013
NEWS Update NEWS Jun 7, 2013
README - import 3.4 release Jul 21, 2009
applydeltaiso.8 Add details to applydeltaiso and makedeltaiso man pages May 20, 2013
applydeltaiso.c small code cleanups Jun 7, 2013
applydeltarpm.8 - add -m option to makedeltarpm manpage Jul 8, 2010
applydeltarpm.c
cfile.c levels < 2 produce XFL=4 Jun 7, 2013
cfile.h Add python bindings done by Bill Nottingham Aug 31, 2009
combinedeltarpm.8 Spelling corrections in combinedeltarpm, drpmsync, and fragiso man pages Jun 1, 2013
combinedeltarpm.c - add deltarpm.lzma.diff Jul 21, 2009
cpio.c - import 3.4 release Jul 21, 2009
cpio.h - import 3.4 release Jul 21, 2009
delta.c fix off-by-one error in delta generation code Jan 12, 2015
delta.h - implement 'stream' delta mode, selectable with the '-m <mbytes>' op… Jul 8, 2010
deltarpm.h - applied deltarpm-3.4-sha256.patch (sort of) Jul 21, 2009
deltarpm.py Add python bindings done by Bill Nottingham Aug 31, 2009
deltarpmmodule.c Return error rather than crashing if we can't allocate memory Jan 12, 2015
drpmsync do not finish applydeltarpm jobs when in the middle of a request Dec 17, 2014
drpmsync.8 Spelling corrections in combinedeltarpm, drpmsync, and fragiso man pages Jun 1, 2013
fragiso.8 Spelling corrections in combinedeltarpm, drpmsync, and fragiso man pages Jun 1, 2013
fragiso.c - add deltarpm.lzma.diff Jul 21, 2009
makedeltaiso.8 Add details to applydeltaiso and makedeltaiso man pages May 20, 2013
makedeltaiso.c We do need to read uncompressed payloads to update MD5 checksum. Feb 19, 2011
makedeltarpm.8
makedeltarpm.c small code cleanups Jun 7, 2013
md5.c - import 3.4 release Jul 21, 2009
md5.h - import 3.4 release Jul 21, 2009
prelink.c add newline in missing prelink error Jan 9, 2015
prelink.h - add deltarpm-3.4-prelink-bugfix.patch Jul 21, 2009
readdeltarpm.c - applied deltarpm-3.4-sha256.patch (sort of) Jul 21, 2009
rpmdumpheader.c - add deltarpm-3.4-multilib-workaround.patch Jul 21, 2009
rpmhead.c - import 3.4 release Jul 21, 2009
rpmhead.h - applied deltarpm-3.4-sha256.patch (sort of) Jul 21, 2009
rpml.c - import 3.4 release Jul 21, 2009
rpml.h - import 3.4 release Jul 21, 2009
rpmoffs.c
rpmoffs.h - add deltarpm.lzma.diff Jul 21, 2009
sha256.c - applied deltarpm-3.4-sha256.patch (sort of) Jul 21, 2009
sha256.h
util.c - applied deltarpm-3.4-sha256.patch (sort of) Jul 21, 2009
util.h - applied deltarpm-3.4-sha256.patch (sort of) Jul 21, 2009
writedeltarpm.c - add back code to set payloadformat to "drpm" Jul 21, 2009

README

---------------------
 deltarpm suite V3.4
---------------------

A) Programs

    makedeltarpm [-V version] [-s seqfile] oldrpm newrpm deltarpm

    Extracts the usable files (i.e. no config files) from oldrpm and
    diffs them against newrpm.

    Options:
      -V: create a specific version, default is V3
      -s: write sequence info into file (usefull for creating
	  yast patchfiles)

    applydeltarpm [-v] [-p] [-c] [-C] [-r oldrpm] deltarpm newrpm
    applydeltarpm -i deltarpm
    applydeltarpm [-c] -s seq

    Reconstruct newrpm from the delta rpm. May run in filesystem mode
    or in rpm mode.

    Options:
      -v: verbose mode, print statistics
      -p: print percent completed (use -p -p for parsable output)
      -c: just check if the rpm can be reconstructed
      -C: fast check, don't verify md5 sums of the used files
      -r: reconstruct from the specified rpm, not from filesystem
          data
      -s: check if rpm can be reconstructed based on sequence info

   combinedeltarpm deltarpm1 deltarpm2... newdeltarpm

   Combine multiple deltarpms to a new one

B) License

   delta.c is distributed under a 2-clause BSD license, see the
   head of the file for details.
   All other files are distributed under BSD license, see LICENSE.BSD.

C) Thanks

   Many thanks to Carl-Daniel Hailfinger who started the deltarpm
   project with his ideas and discussions.
   
D) Size limitations and compilation options

   Deltarpms are (as all rpms) limited to 2GB size. The rpm archive
   is compressed, though, and thus can exceed this limit.
   There are two compile options that allow deltarpms to deal
   with rpms whose archive exceeds 4GB:

   DELTARPM_64BIT
     Allows applydeltarpm to deal with deltarpms that where created
     for rpms that have an archive bigger that 4GB. Applying such
     a deltarpm works on a 32bit architecture.

   BSDIFF_SIZET
     Changes the diff algorithm to use size_t instead of unsigned int.
     This allows the creation of deltarpms for oversized rpms. You
     need a 64bit architecture for this to work (and DELTARPM_64BIT
     must also be defined).
     Defining BSDIFF_SIZET changes the memory requirements needed
     for creating the deltarpm. If your uncompressed archive size 
     is N GB, you need about 3*N GB if BSDIFF_SIZET is not defined,
     but 4*N GB if it is.

E) delta.rpm file format


standard deltarpms:

   -----------------
   96 bytes rpm lead
   -----------------
    x bytes rpm signature header 
   -----------------
    x bytes rpm header 
            (the is an exact copy of the header of new.rpm, the
             only difference is that the PAYLOADFORMAT is patched
             to "drpm")
   -----------------
   -----------------
[[   the rest of the deltarpm may be compressed, like a
     normal rpm   ]]
   -----------------
   -----------------
    4 bytes id: "DLT1" (V2: "DLT2", V3: "DLT3")
   -----------------
    4 bytes source nevr length
    x bytes source nevr (name-epoch:version-release)
   -----------------
    4 bytes seqlength (always 16 if header included in diff)
    x bytes sequence, containing
            16 bytes seq md5sum
            x bytes compressed seqence
            (the sequence defines which files get included from the rpm
             filelist in which order)
               
   -----------------
   16 bytes fullmd5, md5sum of the complete rpm
V2: 4 bytes fullsize, size of the complete rpm
V2: 4 bytes compression type
V2: 4 bytes compression parameter block len
V2: x bytes compression parameter block

   -----------------
V3: target header len, zero if header not included in diff
   -----------------
V3: 4 bytes number of adjust elements (offadjn)
V3: 2 * offadjn * 4 bytes adjust elements

   -----------------
    4 bytes leadlen
    x bytes lead     (lead/signatures of the new rpm)
   -----------------
    4 bytes payloadformatoffset
                     (used to change the format back to "cpio")
   -----------------
    4 bytes number of copies from internal data (inn)
    4 bytes number of copies from external data (outn)
    inn * 4 bytes number of external copies to do before internal copy
    inn * 4 bytes length of internal copy
    outn * 4 bytes offset adjustment of external copy
    outn * 4 bytes length of external copy
   -----------------
V3: 4 bytes length of external data MSB
    4 bytes length of external data
   -----------------
    4 bytes length of add data
    x bytes add data, bzip2 or gzip compressed
   -----------------
V3: 4 bytes length of internal data MSB
    4 bytes length of internal data
    x bytes internal data


rpm-only deltarpms:

    4 bytes magic: "drpm"
    4 bytes id: (V3: "DLT3")
    4 bytes target nevr length
    x bytes target nevr (name-epoch:version-release)
    4 bytes length of add data
    x bytes add data, bzip2 or gzip compressed
   -----------------
[[   rest of the deltarpm compressed, same format as a
     standard deltarpm starting with the id, add data
     has to be zero.
     the sequence will always be 16 bytes, the md5 sum of
     the header and the compressed payload (i.e. exactly
     the md5sum rpm stores in the signature header).
     the target-header len will be non-zero as the header
     is included in the diff.  ]]

"rpm-only no diff" deltarpms are like rpm-only deltarpms, but the target
compression is "uncompressed" and there are no delta instructions,
i.e. inn and outn are both zero.

2005-06-14 mls