debian: New upstream release

I tried to package this in your source repo but didn't figure out how to
handle the clashes (i.e. how to drop patches except to revert the
initial commit). So the repo above is git-dpm for now.

I kept
	liblzma-make-dlopen-based-liblzma2-compatibility-opt.patch
	liblzma-skip-ABI-incompatible-check-when-liblzma.so.patch
but I think that we shouldn't worry about liblzma2 since it is long
gone. Anyway, it is there. The current changelog:

| * switch to git-dpm for packaging (closes: #540405)
| * New Upstream (closes: #731634)
|  - no more "xzless error in line 49" (closes: #693537)
|  - xzgrep -h works (closes: #780268)
| * update symbol file

I built pixz against it and the internal testsuite passed. I checked out
all pristine-tar files from clamav (in the xz format) and the checkout
worked.

[jrnieder@gmail.com: imported from uploaded NMU]
diff --git a/configure.ac b/configure.ac
index 53ae7be..d17629e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -548,6 +548,40 @@
 esac
 AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno])
 
+# As a Debian-specific hack, liblzma can use dlopen() to check if extra
+# paranoia is needed because unversioned symbols from liblzma.so.2 are
+# present in the same process.  See src/liblzma/common/common.c.
+AC_MSG_CHECKING([if lzma_code checks should be relaxed for compatibility])
+AC_ARG_ENABLE([liblzma2-compat], [AC_HELP_STRING([--enable-liblzma2-compat],
+		[Relax run-time checks to accomodate old binaries built
+		with smaller sizeof(lzma_stream).  The default is "dynamic",
+		which means to only use the relaxed checks when the dynamic
+		loader reports that liblzma.so.2 is loaded in the same process.])],
+	[], [enable_liblzma2_compat=dynamic])
+case $enable_liblzma2_compat in
+dynamic)
+	AC_SEARCH_LIBS([dlopen], [dl])
+	AC_DEFINE([LIBLZMA2_COMPAT_DYNAMIC], [1],
+		[Define to 1 to use dlopen() to check if lzma_code() checks
+		should be more tolerant because the process is also linked to
+		liblzma from Debian 6.0.])
+	AC_MSG_RESULT([auto])
+	;;
+yes)
+	AC_DEFINE([LIBLZMA2_COMPAT], [1],
+		[Define to 1 to unconditionally make lzma_code() checks tolerant
+		to accomodate callers built against liblzma from Debian 6.0.])
+	AC_MSG_RESULT([yes])
+	;;
+no)
+	AC_MSG_RESULT([no])
+	;;
+*)
+	AC_MSG_RESULT([])
+	AC_MSG_ERROR([--enable-liblzma2: unrecognized value $enable_liblzma2_compat])
+	;;
+esac
+
 echo
 echo "Initializing Libtool:"
 LT_PREREQ([2.2])
diff --git a/debian/.git-dpm b/debian/.git-dpm
new file mode 100644
index 0000000..6dcce22
--- /dev/null
+++ b/debian/.git-dpm
@@ -0,0 +1,8 @@
+# see git-dpm(1) from git-dpm package
+e284cfe27457239e932038fb90084c91f4229c36
+e284cfe27457239e932038fb90084c91f4229c36
+141d36d7861b6e8522c213194d5fba1e47af63e9
+141d36d7861b6e8522c213194d5fba1e47af63e9
+xz-utils_5.2.2.orig.tar.xz
+72c567d3263345844191a7e618779b179d1f49e0
+1016404
diff --git a/debian/.gitignore b/debian/.gitignore
new file mode 100644
index 0000000..7936ab7
--- /dev/null
+++ b/debian/.gitignore
@@ -0,0 +1,23 @@
+/changelog.upstream
+/generated-m4.list
+/generated-po.list
+/generated-build-aux.list
+
+*.debhelper.log
+*.debhelper
+
+/*-stamp
+
+/normal-build/
+/static-build/
+/xzdec-build/
+/tmp/
+
+/liblzma5/
+/xz-utils/
+/xzdec/
+/liblzma-dev/
+/liblzma-doc/
+
+/files
+*.substvars
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..f17a7de
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,16 @@
+XZ Utils sources for Debian
+---------------------------
+
+This Debian package is developed in a public Git repository (see the Vcs-Git
+field of debian/control) based on XZ Utils’s repository on tukaani.org.
+To build from a git checkout:
+
+	debian/rules get-orig-source
+	mv xz-utils_*.tar.gz ..
+	debian/autogen.sh
+	debuild
+
+To build a released version, no special instructions apply.
+“dpkg-buildpackage” and “apt-get -b xz-utils” should work as usual.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 08 Feb 2010 17:30:00 -0600
diff --git a/debian/autogen.sh b/debian/autogen.sh
new file mode 100755
index 0000000..05a3a9f
--- /dev/null
+++ b/debian/autogen.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Generate debian/changelog.upstream, debian/generated-m4.list,
+# and debian/generated-po.list.
+#
+# Uses debian/changelog, the git revision log, and .gitignore
+# files from the current checkout.
+
+set -e
+
+changelog_needs_update() {
+	test -e debian/changelog.upstream &&
+	read line < debian/changelog.upstream ||
+	return 0
+
+	ver=${line#Version } &&
+	ver=${ver%;*} &&
+	test "$ver" != "" ||
+	return 0
+
+	read line < debian/changelog &&
+	rhs=${line#*(} &&
+	deb_ver=${rhs%)*} &&
+	new_ver=${deb_ver%-*} ||
+	return 0
+
+	test "$ver" != "$new_ver"
+}
+
+cp -f m4/.gitignore debian/generated-m4.list
+cp -f po/.gitignore debian/generated-po.list
+sed -n 's,^build-aux/,, p' .gitignore > debian/generated-build-aux.list
+! changelog_needs_update || exec sh debian/changelog.upstream.sh
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..15e6f53
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,652 @@
+xz-utils (5.2.2-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * switch to git-dpm for packaging (closes: #540405)
+  * New Upstream (closes: #731634)
+   - no more "xzless error in line 49" (closes: #693537)
+   - xzgrep -h works (closes: #780268)
+  * update symbol file
+  * enable threads for the "normal build"
+
+ -- Sebastian Andrzej Siewior <sebastian@breakpoint.cc>  Mon, 26 Sep 2016 20:45:45 +0200
+
+xz-utils (5.1.1alpha+20120614-2.1) unstable; urgency=medium
+
+  [ Helmut Grohne ]
+  * Non-maintainer upload.
+
+  [ Colin Watson ]
+  * Remove build-dependency on perl; we use no non-trivial Perl modules so
+    the Essential perl-base is perfectly adequate, and an unadorned
+    build-dependency on perl is problematic for cross-building.
+    Closes: #697328.
+
+ -- Helmut Grohne <helmut@subdivi.de>  Thu, 18 Jun 2015 20:27:23 +0200
+
+xz-utils (5.1.1alpha+20120614-2) unstable; urgency=low
+
+  * Apply fixes from 5.1.2alpha.  Closes: #685220.
+    - liblzma: report a LZMA_DATA_ERROR when range encoded data starts
+      with a nonzero byte.  This is a sanity check to catch malformed
+      files that no known encoders produce.
+    - xz -v -v --list: Support for decompressing blocks with
+      zero-length uncompressed data was added in xz 5.0.2, not 5.0.3.
+    - xz.1: "xz --robot -v -v --list" gained a "minimum xz version to
+      decompress" field.
+  * xz-utils/README.Debian: Document differences from upstream.
+    Closes: #685217.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Sep 2012 14:35:33 -0700
+
+xz-utils (5.1.1alpha+20120614-1) unstable; urgency=low
+
+  * New snapshot, taken from upstream commit f1675f76.
+    - liblzma: BCJ filters would return a spurious LZMA_BUF_ERROR
+      result in certain circumstances.  As a result, the xz tool
+      could produce inappropriate "Compressed data is corrupt" or
+      "Unexpected end of input" failures (reported in XZ Embedded as
+      Fedora bug 735408).
+    - "xz -v -v --list" prints the minimal XZ Utils version needed
+      to decompress a stream.
+    - "xz --robot -v --list" formats filenames more plainly.
+    - xzgrep does not fail unconditionally when the decompressor
+      dies with SIGPIPE due to unconsumed output any more.  This
+      makes the exit status from commands such as "xzgrep -q" and
+      "xzgrep -l" more predictable and convenient for scripts.
+    - examples/xz_pipe_decomp.c did not check correctly for
+      truncated input.
+    - There is a new set of sample programs.  The old ones have
+      been renamed to examples_old but are still maintained.
+  * liblzma:
+    - If dlopen() indicates that liblzma.so.2 is loaded, check fewer
+      reserved fields in the stream argument to the lzma_code()
+      function.  This prevents out-of-bounds reads when liblzma5
+      functions are called by code built against liblzma2 (see
+      <http://sourceware.org/PR12977>).
+    - Remove the lzma_code@Base compatibility symbol.
+      Closes: #649522.  Thanks to Eduard Bloch.
+    - Install run-time library to /lib so it can be used before /usr
+      is mounted.  Closes: #672120.
+    - Configure with --disable-threads for now to avoid needlessly
+      linking to libpthread and librt.
+  * liblzma-dev:
+    - Install an appropriate library for static linking instead of
+      the decompression-only version used to build xzdec.
+      Closes: #673001.  Thanks to Anton Tolchanov.
+    - Use the liblzma2-compatible version of lzma_code() in the
+      static library.
+    - Multi-Arch: same.  Thanks to Riku Voipio.
+    - Install new examples and revised old examples to
+      /usr/share/doc/liblzma-dev.
+  * xz-utils:
+    - Use update-alternatives to provide lzma, unlzma, lzcat, and
+      the rest of the lz* scripts without conflicting with the lzma
+      package.
+    - Conflicts: lzma versions before before 9.22-1, when it started
+      providing lzma, unlzma, and lzcat through the alternatives
+      system.
+    - Conflicts: and Replaces: xz-lzma.
+    - README.Debian: Update instructions on configuring the package
+      to provide lzma compatibility commands.
+  * Remove xz-lzma package.
+  * Use dpkg-buildflags to retrieve compiler flags, including
+    hardening options.  Build-Depends: dpkg-dev (>= 1.16.1).
+    Closes: #653739.
+  * debian/rules:
+    - build-arch: Simplify by using a double-colon rule instead of a
+      dependency on a dummy noop target.
+    - build-indep: Assume doxygen is available, instead of trying to
+      get by by assuming the caller meant to invoke build-arch when
+      it is missing.  Build-Depends: dpkg-dev (>= 1.16.2).
+    - Rearrange for clarity.
+  * debian/symbols: Bump the minimal version for lzma_code(),
+    lzma_raw_buffer_decode(), and lzma_raw_buffer_encode().
+  * Use machine-readable copyright-format 1.0.
+  * Update copyright file.
+  * Standards-Version: 3.9.3 (checked).
+  * debian/changelog.upstream.sh: Use ‘git rev-list | git diff-tree’
+    instead of ‘git log’ to avoid depending on the build system’s
+    configuration.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Sat, 16 Jun 2012 15:03:17 -0500
+
+xz-utils (5.1.1alpha+20110809-3) unstable; urgency=low
+
+  * liblzma: Match upstream ABI.
+    - Remove the lzma_chunk_size() function.
+    - A few ABI tweaks to reserved space in structures.
+    - Enable ELF symbol versioning.
+    - Bump soname to 5.
+    - Continue to leave out threading support, since the relevant
+      interfaces in liblzma are not yet stable.
+  * xz-utils/README.Debian: Remove note on ABI differences.
+  * Remove liblzma/README.Debian.
+  * liblzma: Introduce a lzma_code@Base compatibility symbol to ensure
+    programs linked against unversioned symbols from liblzma2 can
+    share a process image with liblzma5 without breaking.
+  * debian/symbols: XZ_5.0 symbols come from liblzma5.  Build-Depends:
+    dpkg-dev (>= 1.15.6); thanks to Jakub Wilk for a reminder.
+  * debian/symbols: The lzma_code@Base symbol is not guaranteed to
+    continue to exist in the future, so tell dpkg-shlibdeps to produce
+    an error if some package manages to use it.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 20 Oct 2011 21:31:31 -0500
+
+xz-utils (5.1.1alpha+20110809-2) unstable; urgency=low
+
+  * debian/rules build-arch: Do not trigger an infinite "make"
+    recursion loop when DEB_BUILD_OPTIONS=nocheck.  Closes: #638071.
+    Thanks to Thorsten Glaser.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 16 Aug 2011 18:11:47 -0500
+
+xz-utils (5.1.1alpha+20110809-1) unstable; urgency=low
+
+  * New snapshot, taken from upstream commit 5c5b225.
+    - liblzma:
+      - lzma_stream_encoder() leaked memory.
+      - The LZMA2 decoder rejected streams that decompress to a
+        zero-length string.
+      - lzma_easy_buffer_encode() and lzma_stream_buffer_encode()
+        used to write such streams when asked to compress a 0-length
+        buffer.
+      - lzma_index_init() would segfault on allocation failure.
+      - liblzma: Various functions check their arguments (especially
+        choice of integrity check) better, making it harder to create
+        a corrupt .xz file instead of receiving an error.
+    - xz and scripts:
+      - "xz -v -v --list" would read and try to free() uninitialized
+        memory, continuing past the end of an on-stack array, when
+        asked to describe certain corrupted XZ files.
+      - xz -S.suf now refuses to compress a file whose name already
+        ends with the suffix “.suf”.
+      - xz --force can be used to compress setuid, setgid, sticky,
+        and multiply linked files.
+      - xz uses posix_fadvise() to speed up sequential input.
+      - xz --block-size forces a full flush periodically during
+        compression, for better random-access reading support and to
+        make simple parallelism possible in the future.
+      - unxz: The new --single-stream option discards trailing
+        garbage after the end of the first stream.
+      - xzdiff can read gzip- and bzip2-compressed files.
+      - xzdiff and xzgrep can read lzop-compressed files.
+      - xzegrep and xzfgrep perform extended regex and fixed-string
+        matches, respectively.  (The previous behavior was to always
+        use basic regexes.)
+      - xzgrep -l (= --files-with-match) works.
+      - The Czech “xz --help” output uses a more correct term for
+        files with holes.  Thanks to Petr Hubený.  Closes: #605762.
+      - xz: New Polish and French translations.
+    - The Doxygen-generated documentation uses short, relative paths
+      to name source files.  Closes: #572273.
+  * Update copyright file.
+  * Remove example programs from debian/examples.  They are included
+    in the upstream source package now.
+  * Move liblzma to an architecture-specific directory, so the
+    native library and foreign-architecture versions can be installed
+    simultaneously.
+    - liblzma2: Pre-Depends: multiarch-support.
+    - Use debhelper compatibility level 9.  This requires passing
+      the dh sequence name before other options when invoking dh in
+      debian/rules.  Build-Depends: debhelper (>= 8.1.3).
+    - liblzma2, liblzma-dev: Install files under /usr/lib/<triplet>
+      instead of /usr/lib.
+    - Thanks to Steve Langasek for explaining the process on the
+      Debian wiki.
+  * Standards-Version: 3.9.2 (checked).
+  * debian/control: liblzma2 is Multi-Arch: same, while xz-utils
+    and xzdec are Multi-Arch: foreign.  Closes: #637883.  Thanks to
+    Riku Voipio.
+  * debian/symbols: Bump the minimal version for LZMA2 encoder
+    functions that reject more bad arguments and skip empty blocks.
+  * debian/rules: ./configure --disable-symbol-versions for now.
+  * debian/rules: Provide build-arch and build-indep targets that
+    only build the code and the API documentation, respectively.
+    Thanks to Roger Leigh for suggesting it through lintian.
+    Build-Depends: debhelper (>= 8.9.0).
+  * debian/rules: Treat DEB_BUILD_OPTIONS=nocheck as a request not to
+    run build-time tests.  Thanks to Thorsten Glaser for a reminder.
+    Closes: #627209.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 16 Aug 2011 00:40:31 -0500
+
+xz-utils (5.0.0-2) unstable; urgency=low
+
+  * Upload to unstable.
+  * liblzma2, liblzma-dev, xz-lzma: Install release notes.
+  * debian/symbols: Bump the minimal versions for lzma_index_encoder,
+    lzma_index_decoder to the version in which they gained LZMA_FINISH
+    support.
+  * xz-utils/README.Debian: Document differences from upstream ABI.
+  * debian/changelog.upstream.sh: Avoid empty changelog entries when
+    multiple Debian revisions match an upstream tag.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 11 Nov 2010 13:45:20 -0600
+
+xz-utils (5.0.0-1) experimental; urgency=low
+
+  * Upload to experimental.
+  * New stable upstream release.  Closes: #592298.
+    - xz avoids SA_RESTART.  This should not have a visible effect
+      because xz already blocked signals during operations that
+      would be difficult to resume after interruption.
+    - liblzma: The coders returned by lzma_index_encoder() and
+      lzma_index_decoder() support an LZMA_FINISH action, with
+      identical semantics to LZMA_RUN.
+    - The printable (PDF and PS) versions of the manual are easier
+      to read.
+    - Many documentation and build system cleanups.
+  * liblzma: Back out upstream ABI tweaks.
+  * liblzma/README.Debian: Document ABI differences from upstream.
+  * Copy sample code not included in the release tarball from
+    the development upstream repository to debian/examples.
+  * debian/rules clean: Remove some files not included in the
+    release tarball.
+  * copyright: List new INSTALL.generic license.
+  * debian/rules clean: Take new build-aux scripts into account.
+  * debian/rules:  Adapt for upstream build system changes.
+    Closes: #540443.
+  * xz-utils, xzdec: Install release notes.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 25 Oct 2010 05:45:18 -0500
+
+xz-utils (4.999.9beta+20100927-1) experimental; urgency=low
+
+  * New snapshot, taken from upstream commit cec0ddc.
+    - liblzma: The meaning of --extreme has been tweaked to address
+      cases in which it made the compression ratio worse.  Some files
+      might benefit slightly less from --extreme.
+    - xz: Table columns are not misaligned any more in messages with
+      multi-byte characters (e.g., file sizes with LANG=fi_FI.UTF-8).
+    - xz: New German and Italian translations.
+    - Various documentation, message, and translation updates.
+  * Update copyright file.
+  * debian/rules get-orig-source: Update upstream Git URL.
+  * xz-utils/README.Debian: Advertise XZ_DEFAULTS.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 27 Sep 2010 16:22:22 -0500
+
+xz-utils (4.999.9beta+20100903-1) experimental; urgency=low
+
+  * New snapshot, taken from upstream commit 373ee26.
+    - liblzma: The settings for compression levels 0 through 5
+      (used by xz -0/.../-5) have been tweaked.  This affects the
+      speed, compression ratio, and memory usage at compression and
+      decompression time.
+    - Does not search so hard for a match when a low "nice match
+      length" setting is specified without a depth.
+    - xz: The -1/.../-9 preset options override any previously
+      specified filters, rather than vice versa.  To mix presets
+      with filter options, use the --lzma2=preset=n option.
+    - xz: Warns about --memlimit-compress settings that result in
+      compression settings changing even if no explicit -1/.../-9,
+      --lzma1, or --lzma2 option was used.
+    - "xz -v -v --compress" now prints an estimate of the memory
+      required to decompress a file.
+  * debian/copyright: Update upstream Git URL.
+  * debian/changelog.upstream.sh: Permit terser changelog lines.
+  * Standards-Version: 3.9.1 (checked).
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 03 Sep 2010 17:05:20 -0500
+
+xz-utils (4.999.9beta+20100810-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from upstream commit d5653ba8a.
+    - xz: The memory usage limiter is now disabled by default.
+    - xz: Support for an XZ_DEFAULTS environment variable was added.
+      It contains user-specific default settings, such as memory usage
+      limits, and can be overridden by the command line and XZ_OPT.
+    - xz: The new --memlimit-compress and --memlimit-decompress
+      options allow the memory usage limit to be set separately for
+      compression and decompression.  A new --memlimit alias has been
+      added for the existing --memory option.
+    - xz: The --info-memory option (with or without --robot) now prints
+      how much RAM is installed in addition to the compression and
+      decompression memory limits.
+  * liblzma-doc: Simplify package description.
+  * debian/control: Build-Depends: autopoint | gettext (<< 0.18-1),
+    autopoint | cvs instead of autopoint, to help with backporting.
+    Thanks to Thorsten Glaser for a report.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 10 Aug 2010 20:27:14 -0500
+
+xz-utils (4.999.9beta+20100713-1) unstable; urgency=low
+
+  [ Thorsten Glaser ]
+  * Explicitly depend on autoconf (>= 2.64~) due to AC_PREREQ,
+    discovered during backporting.
+
+  [ Jonathan Nieder ]
+  * Upload to unstable.
+  * New upstream snapshot, taken from upstream commit a540198f.
+    - xz: The new --no-adjust option can be used to error out if there
+      is insufficient memory for the chosen compression level.
+  * liblzma-dev: Install examples to /usr/share/doc/liblzma-dev.
+  * Update copyright file.
+
+  * Drop unpack-time conflicts in favor of configuration-time
+    conflicts (Replaces + Breaks):
+     - xz-utils: against old xz-lzma (for lzmainfo).
+     - xzdec: against old xz-lzma (for lzmadec).
+     - xz-lzma: against lzip 1.7 (for lzdiff and lzgrep).
+  * Standards-Version: 3.9.0.
+
+  * debian/autogen.sh: Don’t regenerate upstream changelog when it is
+    not out of date.
+  * debian/rules get-orig-source: Use gzip --no-name --rsyncable.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 15 Jul 2010 01:53:37 -0500
+
+xz-utils (4.999.9beta+20100602-1) experimental; urgency=low
+
+  * New upstream snapshot, taken from upstream commit d8b41eed.
+    - The output from "xz -v --list" and "xz -v -v --list" has been
+      improved.
+      "xz -v -v --list" can be used to obtain an estimate for the memory
+      required to decompress a file.
+    - The xz manual page has some new material, including examples.
+      Closes: #578465.
+    - liblzma: The lzma_block_compressed_size() function no longer
+      returns LZMA_DATA_ERROR for valid Blocks.
+  * debian/symbols: Bump minimal version for lzma_block_compressed_size.
+  * Correct the 4.999.9beta+20100307-1 changelog entry to describe
+    which public functions were affected.
+
+  * Add new xz-lzma package to allow xz to provide lzma and related
+    commands.  Conflicts: and Provides: lzma.
+  * xz-utils: Suggests: xz-lzma.
+  * xz-utils/README.Debian: Take xz-lzma into account.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 04 Jun 2010 15:53:58 -0500
+
+xz-utils (4.999.9beta+20100527-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from upstream commit a334348dc.
+    - Show both elapsed time and estimated remaining time in xz -v.
+      Thanks to Trent W. Buck for the idea.  Closes: #574583.
+    - liblzma: Remove the Subblock filter from the public API
+      (the ABI is unchanged).
+  * liblzma-dev.NEWS: Update.
+  * xz-utils: Update Czech translation.
+  * Change priority of xz-utils and liblzma2 to required and
+    xzdec to extra.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 27 May 2010 16:27:04 -0500
+
+xz-utils (4.999.9beta+20100307-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from upstream commit f4b2b526.
+    - liblzma: The stream initialization functions were not correctly
+      initializing the internal allow_buffer_error flag.  As a result,
+      ever since 4.999.9beta-1 in rare circumstances when decompressing
+      LZMA files, the xz tool would produce spurious "Unexpected end
+      of input" failures (Gentoo bug 305591).
+    - The default memory usage limit on low-memory systems has been
+      increased.
+  * debian/copyright: Clarify.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 09 Mar 2010 10:22:24 -0600
+
+xz-utils (4.999.9beta+20100212-4) unstable; urgency=low
+
+  * debian/control: Build-Depends: autopoint instead of cvs.
+    Closes: #572481.
+  * debian/copyright: Clean up and include more details.
+  * debian/rules get-orig-source: Unindent comment lines.
+  * xz-utils: include Czech translation.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 04 Mar 2010 10:17:15 -0600
+
+xz-utils (4.999.9beta+20100212-3) unstable; urgency=low
+
+  * liblzma-dev: Remove unneeded .la file.
+  * xz-utils: Dynamically link the xz binary.
+  * Do not waste time installing and running doxygen on buildds that
+    are not going to build arch-all packages.
+    Build-Depends-Indep: doxygen.  Closes: #540444.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 23 Feb 2010 18:23:29 -0600
+
+xz-utils (4.999.9beta+20100212-2) unstable; urgency=low
+
+  * Split off xzdec and lzmadec commands into new xzdec package.
+    Thanks to Guillem Jover for the idea.  Closes: #571060.
+  * xz-utils.NEWS: advertise this change.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 23 Feb 2010 08:09:39 -0600
+
+xz-utils (4.999.9beta+20100212-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from upstream commit eb7d51a3f.
+     - xz --force compresses symlinks without complaint now.
+     - liblzma: the optimized CRC32 implementation for x86 no longer
+       misdetects the Hurd as Mac OS X.
+  * debian/rules: ./configure --enable-assembler on the Hurd.
+  * xz-utils: Simplify NEWS.Debian.gz.
+  * liblzma-dev: Add a NEWS file to keep track of future API changes.
+
+  * Drop unnecessary build-time conflict with autoconf2.13.
+  * Add a blank line to the end of all NEWS files.
+    (Works around: #247356)
+  * debian/README.source: Leave out “-I -i” options.  Ignoring version
+    control cruft is the default behavior with dpkg source format 3.0.
+  * debian/changelog.upstream.sh: Pass ‘git log’ an explicit --format
+    option to avoid problems if format.pretty is set in gitconfig.
+
+  * Correct the 4.999.9beta+20100117-1 changelog entry.  It said:
+     + The user-specified memory usage limit was not being honored in
+       some cases.
+    No such bug was observed, so describe the change instead.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 16 Feb 2010 00:30:24 -0600
+
+xz-utils (4.999.9beta+20100131-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from upstream commit f9dd797a.
+     + xz: the --list option to display information about a compressed
+       file (e.g., its uncompressed size) is now functional.  The output
+       of the xz --robot --list command still may change in future
+       versions.
+  * xz-utils: NEWS.Debian.gz: Clarify how interleaved output can
+    go wrong.
+  * debian/rules: Simplify:
+     - remove support for comma as a delimiter for $(DEB_BUILD_OPTIONS).
+     - rely on dh --parallel instead of tricky logic of our own to
+       handle parallel builds.  Build-Depends: debhelper (>= 7.4.10).
+  * Correct some typos in the 4.999.9beta+20100117-1 changelog entry.
+  * Standards-Version: 3.8.4 (checked).
+  * Update copyright file.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 31 Jan 2010 17:32:02 -0600
+
+xz-utils (4.999.9beta+20100117-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from upstream commit 07a11dad.
+     + Fix some logic errors in the internal memory usage configuration
+       API.
+     + xz will no longer compress or decompress special files in place,
+       even with --force.
+       --force still enables compression of the target of a symlink.
+     + xz will no longer read compressed data from a terminal or write
+       it to a terminal, even with --force.
+     + liblzma: many Index handling API improvements:
+        - An lzma_index includes more useful metadata that is not
+          actually from the Index.  This is particularly helpful for
+          describing multiple-stream files.
+           * lzma_index_cat() does not take a stream padding argument
+             any more; use lzma_index_stream_padding() instead.
+           * lzma_index_memusage() takes two arguments now.
+             The new lzma_index_memused() convenience function
+             calculates the total memory usage of an lzma_index.
+           * lzma_index_count() has been replaced with
+             lzma_index_block_count() and lzma_index_stream_count().
+           * The new lzma_index_stream_flags() allows storing Stream
+             Flags (e.g., checksum types) with the Index information.
+           * The new lzma_index_checks() function indicates the list of
+             checksum types in use.
+           * lzma_index_equal() has been removed.  Its semantics were
+             unclear, and something approximately equivalent can be
+             implemented by iterating over Blocks in application code.
+        - An lzma_index no longer represents a position within an Index.
+          The new lzma_index_iter type can be used for that purpose.
+           * Certain functions generate an iterator on demand now rather
+             than clobbering their lzma_index arguments.  Using a single
+             lzma_index for multiple concurrent invocations is safe now:
+              lzma_index_buffer_encode(), lzma_index_encoder()
+           * Functions that used to specify a Record by modifying an
+             lzma_index argument have been renamed and taught to write
+             an lzma_index_iter instead:
+              lzma_index_locate() -> lzma_index_iter_locate()
+              lzma_index_rewind() -> lzma_index_iter_rewind()
+              lzma_index_read() -> lzma_index_iter_next()
+           * The lzma_index_record type used by lzma_index_read() for
+             complex seeks is no more.  lzma_index_iter_next() instead
+             takes a parameter of the new lzma_index_iter_mode type.
+           * New function: lzma_index_iter_init()
+           * lzma_index_init() cannot reuse memory from an existing
+             lzma_index any more.  The signature changed accordingly.
+     + xz: support for decompressing to a sparse file
+        - Try to write a sparse file if the decompressed stream contains
+          long runs of null bytes.
+        - The new --no-sparse option disables this behavior.
+     + xz: add Czech translation.
+     + liblzma-dev: lzma_filters_copy() and lzma_filters_update() are
+       declared not to throw exceptions.
+  * liblzma: bump soname.
+  * xz-utils: Add NEWS.Debian describing the sparse file support.
+  * debian/rules: Stop explicitly disabling assembler optimizations on
+    the Hurd.  The configure script will check if a platform is
+    supported.
+
+  * debian/rules: Update clean target to handle comments and wildcards
+    in .gitignore.
+  * Build-Depends: perl.
+
+  * debian/rules: Speed up build by using autoreconf --symlink.
+  * Remove debian/dirs lists.
+  * Update copyright file and fix a small typo.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 18 Jan 2010 04:19:50 -0600
+
+xz-utils (4.999.9beta+20091116-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from upstream commit d315ca4.
+     + liblzma: add some new functions:
+        - lzma_filters_copy() to copy a filter chain;
+        - lzma_filters_update() to change compression options mid-stream;
+        - lzma_physmem() to retrieve the total quantity of installed RAM.
+     + Fix a design error in liblzma API.
+        - Stop requiring caller to maintain filter chain during
+          compression.  The library used to read it for new compression
+          options.  Callers that need to change options mid-stream should
+          use lzma_filters_update() instead.
+        - Remove 'persistent' member from struct lzma_options_lzma.
+     + xz: add --robot --info-memory options, for front-ends to use to
+       read the memory usage limit.
+  * liblzma: bump soname; add README.Debian explaining why soname
+    differs from upstream.
+  * Use source format 3.0 (quilt).
+  * Update and clarify copyright file.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 16 Nov 2009 16:33:35 -0600
+
+xz-utils (4.999.9beta+20091016-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from upstream commit 78e92c1.
+  * Drop xzmore.1 patch, applied upstream.
+  * debian/rules: Disable assembler optimizations on hurd. (Closes: #553331)
+  * debian/control: Clarify binary package descriptions.  Thanks to
+    Justin B Rye and Ben Finney for the text.
+  * debian/rules get-orig-source: Use commit date (instead of last patch
+    date) to name snapshots.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 01 Nov 2009 00:22:04 -0500
+
+xz-utils (4.999.9beta+20091004-1) unstable; urgency=low
+
+  * Upload to unstable. (Closes: #543562)
+  * New upstream snapshot, taken from upstream commit ebfb2c5.
+  * Patch xzmore.1 to use dashes instead of minus signs.
+  * debian/control: Conflicts: xz-lzma. (Closes: #550249)
+  * liblzma-doc: Register Doxygen-generated docs with doc-base.
+  * debian/changelog.upstream.sh: Declare local variables.
+  * debian/changelog.upstream.sh: Cope with multiple Debian revisions per
+    upstream version.
+  * debian/rules: Use ":=" where appropriate.
+  * Add watch file.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Fri, 16 Oct 2009 13:58:54 -0500
+
+xz-utils (4.999.9beta+20091002-1) experimental; urgency=low
+
+  * New upstream snapshot, taken from upstream commit 29fd321.
+  * debian/control: Build-Depends: cvs (for autopoint).
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Sun, 04 Oct 2009 00:21:08 -0500
+
+xz-utils (4.999.9beta-1) experimental; urgency=low
+
+  [ Jonathan Nieder ]
+  * New upstream release.
+     - Fix a data corruption in the compression code. (Closes: #544872)
+     - xzdiff: Fix comparing two compressed files. (Closes: #540543)
+     - Most of XZ Utils is now in the public domain. (Closes: #541391)
+     - Add doc/history.txt to the distributed tarball. (Closes: #541540)
+  * Update and clarify copyright file.
+  * Drop lzma compatibility commands for now. (Closes: #542060, #540232)
+    Add instructions to README.Debian for installing them locally.
+  * debian/control: Add information about the packaging Git repository.
+  * debian/control: Clarify package descriptions.
+  * debian/README.source: Clarify build instructions.
+  * Add debian/.gitignore listing build products.
+  * Build xz-utils with static liblzma.
+     - debian/rules: Use configure --enable-dynamic=mixed.
+  * Optimize xzdec for size, following suggestion in PACKAGERS.
+     - debian/rules: Build xzdec separately so it can be optimized for size.
+     - debian/control: Build-Depends: debhelper (>= 7.3.0).
+  * Generate upstream changelog instead of shipping placeholder.
+     - debian/README.source: Add instructions for regenerating upstream
+       changelog file.
+     - debian/changelog.upstream.sh: New script.
+     - debian/rules: Install generated changelog file.
+  * liblzma-doc: Drop documentation already shipped in
+    /usr/share/doc/xz-utils.
+  * liblzma-dev, liblzma-doc: Add short README.Debian with pointers to
+    development documentation.
+  * Drop debian/xzdec.1, since upstream ships a better man page.
+  * Run autotools at build time.
+     + debian/control:
+        - Build-Depends: autoconf, automake, libtool, gettext
+        - Build-Conflicts: autoconf2.13, automake1.4
+     + debian/rules:
+        - configure: autoreconf -fi
+        - clean: remove autotools-generated files to avoid .diff.gz
+          changes when built twice in a row.
+  * debian/rules: Add get-orig-source target.
+  * Prepare for upload to experimental.
+
+  [ Cristian Greco ]
+  * debian/copyright: refer to versioned GPL-3 file.
+  * debian/control: remove duplicate field ‘section’ in package xz-utils.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Wed, 30 Sep 2009 01:44:04 -0500
+
+xz-utils (4.999.8beta-1) experimental; urgency=low
+
+  [ Jonathan Nieder ]
+  * Initial package for Debian. (Closes: #518803)
+     + debian/rules:
+        - add minimal rules file (using Debhelper 7), a control file
+          describing the binary packages, and an appropriate compat file.
+        - use configure --enable-dynamic; use up-to-date config.guess and
+          config.sub files.
+        - do not run automake and so on on autobuilders. Instead, we can
+          run them ourselves when we build the source package.
+     + debian/README.source:
+        - add informations about the packaging GIT repository.
+  * Add liblzma-doc package with Doxygen-generated API docs.
+
+  [ Mohammed Adnène Trojette ]
+  * Prepare for upload to experimental.
+
+ -- Mohammed Adnène Trojette <adn+deb@diwi.org>  Sat, 27 Jun 2009 17:26:56 +0200
diff --git a/debian/changelog.upstream.sh b/debian/changelog.upstream.sh
new file mode 100644
index 0000000..afaec0f
--- /dev/null
+++ b/debian/changelog.upstream.sh
@@ -0,0 +1,133 @@
+#!/bin/sh
+# Generate debian/changelog.upstream from debian/changelog and
+# the git revision log.  Inspired by Gerrit Pape’s
+# debian/changelog.upstream.sh, from the git-core Debian package.
+
+set -e
+
+# If argument matches /^Version: /, output remaining text.
+# Result is true if and only if argument matches.
+version_line() {
+	local line result
+	line=$1
+	result=${line#Version: }
+
+	if test "$result" = "$line"
+	then
+		return 1
+	else
+		printf "%s\n" "$result"
+		return 0
+	fi
+}
+
+# If argument matches /^\* New.*snapshot.*commit /,
+# output remaining text.
+# Result is true if and only if argument matches.
+commit_id_line() {
+	local line result
+	line=$1
+	result=${line#\* New*snapshot*commit }
+
+	if test "$result" = "$line"
+	then
+		return 1
+	else
+		printf "%s\n" "$result"
+		return 0
+	fi
+}
+
+# Read standard input, scanning for a changelog entry of the
+# form “New snapshot, taken from upstream commit <blah>.”
+# Output is <blah>.
+# Fails and writes a message to standard error if no such entry is
+# found before the next Version: line with a different upstream
+# version (or EOF).
+# $1 is the upstream version sought.
+read_commit_id() {
+	local upstream_version line version cid
+	upstream_version=$1
+
+	while read line
+	do
+		if
+			version=$(version_line "$line") &&
+			test "${version%-*}" != "$upstream_version"
+		then
+			break
+		fi
+
+		if cid=$(commit_id_line "$line")
+		then
+			printf "%s\n" "${cid%.}"
+			return 0
+		fi
+	done
+
+	echo >&2 "No commit id for $upstream_version"
+	return 1
+}
+
+last=none
+last_cid=none
+# Add a list of all revisions up to $last to debian/changelog.upstream
+# and set last=$2.
+# $1 is a user-readable name for the commit $2
+add_version() {
+	local new new_cid limiter
+	new=$1
+	new_cid=$2
+
+	if test "$last" = none
+	then
+		: > debian/changelog.upstream
+		last=$new
+		last_cid=$new_cid
+		return 0
+	fi
+
+	exec >> debian/changelog.upstream
+	if test "$new" = none
+	then
+		echo "Version $last:"
+		echo "Version $last:" | tr "[:print:]" -
+		limiter=
+	elif test "$new" = "$last"
+	then
+		return 0
+	else
+		echo "Version $last; changes since $new:"
+		echo "Version $last; changes since $new:" | tr "[:print:]" -
+		limiter="$new_cid.."
+	fi
+	echo
+	git rev-list --no-merges "$limiter$last_cid" |
+	git diff-tree --date=iso --stat --format=medium --stdin
+	test "$new" = none || echo
+
+	last=$new
+	last_cid=$new_cid
+}
+
+dpkg-parsechangelog --format rfc822 --all | {
+while read line
+do
+	if version=$(version_line "$line")
+	then
+		# strip Debian revision
+		upstream_version=${version%-*}
+
+		if git rev-parse --verify -q "v$upstream_version" > /dev/null
+		then
+			# upstream release
+			add_version "$upstream_version" "v$upstream_version"
+		else
+			# snapshot
+			cid=$(read_commit_id "$upstream_version") || exit 1
+			add_version "$upstream_version" "$cid"
+		fi
+	fi
+done
+add_version none none
+}
diff --git a/debian/clean.sh b/debian/clean.sh
new file mode 100644
index 0000000..59248e4
--- /dev/null
+++ b/debian/clean.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+# Remove files generated by autoreconf -fi.
+# For use by the clean target in debian/rules.
+
+set -e
+
+remove_files='#!/usr/bin/perl
+# Remove specified files from the current directory.
+# Each line must be a filename, a comment (starting with #),
+# a simple glob (of the form *.extension), or blank.
+# Filenames are restricted to a small character set.
+
+use strict;
+use warnings;
+
+my $fnchar = qr/[-_~.@[:alnum:]]/;
+
+my $empty = qr/^$/;
+my $comment = qr/^#/;
+my $simple = qr/^$fnchar+$/;
+my $glob = qr/^\*$fnchar+$/;
+while (my $line = <>) {
+	chomp $line;
+	next if $line =~ $empty;
+	next if $line =~ $comment;
+
+	if ($line =~ $simple) {
+		unlink $line;
+		next;
+	}
+	if ($line =~ $glob) {
+		unlink glob($line);
+		next;
+	}
+
+	die "cannot parse $line";
+}
+'
+
+dh_testdir
+rm -f debug/translation.bash tests/test_block.c
+rm -f ABOUT-NLS aclocal.m4 config.h.in configure
+(cd po && perl -e "$remove_files") < debian/generated-po.list
+(cd m4 && perl -e "$remove_files") < debian/generated-m4.list
+(cd build-aux && perl -e "$remove_files") < debian/generated-build-aux.list
+find . -name Makefile.in -delete
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..a7da7ac
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,114 @@
+Source: xz-utils
+Section: utils
+Priority: required
+Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+Uploaders: Mohammed Adnène Trojette <adn+deb@diwi.org>
+Build-Depends: debhelper (>= 8.9.0), dpkg-dev (>= 1.16.2),
+ autoconf (>= 2.64~), automake, libtool (>= 2.2),
+ gettext, autopoint | gettext (<< 0.18-1), autopoint | cvs
+Build-Depends-Indep: doxygen
+Build-Conflicts: automake1.4
+Standards-Version: 3.9.3
+Vcs-Browser: http://git.debian.org/?p=collab-maint/xz.git
+Vcs-Git: git://git.debian.org/collab-maint/xz.git
+Homepage: http://tukaani.org/xz/
+
+Package: liblzma5
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+Description: XZ-format compression library
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ The native format of liblzma is XZ; it also supports raw (headerless)
+ streams and the older LZMA format used by lzma. (For 7-Zip's related
+ format, use the p7zip package instead.)
+
+Package: xz-utils
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: foreign
+Conflicts: lzma (<< 9.22-1), xz-lzma
+Breaks: lzip (<< 1.8~rc2)
+Replaces: lzip (<< 1.8~rc2), xz-lzma
+Provides: lzma
+Description: XZ-format compression utilities
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ This package provides the command line tools for working with XZ
+ compression, including xz, unxz, xzcat, xzgrep, and so on. They can
+ also handle the older LZMA format, and if invoked via appropriate
+ symlinks will emulate the behavior of the commands in the lzma
+ package.
+ .
+ The XZ format is similar to the older LZMA format but includes some
+ improvements for general use:
+ .
+  * 'file' magic for detecting XZ files;
+  * crc64 data integrity check;
+  * limited random-access reading support;
+  * improved support for multithreading (not used in xz-utils);
+  * support for flushing the encoder.
+
+Package: xzdec
+Priority: extra
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: foreign
+Suggests: xz-utils
+Breaks: xz-lzma (<< 4.999.9beta+20091004-1)
+Replaces: xz-lzma (<< 4.999.9beta+20091004-1)
+Description: XZ-format compression utilities - tiny decompressors
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ This package provides the xzdec and lzmadec utilities, which write
+ the decompressed version of a compressed file to standard output. The
+ binaries are very small, so they can be easily stored on small media
+ with some compressed files, and they are linked statically against
+ liblzma so they can be used on machines without a compatible version
+ of liblzma installed. However, they have:
+ .
+   * no compression support;
+   * no support for writing to a file other than standard output;
+   * no translated messages;
+   * been optimized for size rather than speed.
+ .
+ For a full-featured xzcat command without these limitations, use
+ the xz-utils package instead.
+
+Package: liblzma-dev
+Section: libdevel
+Priority: optional
+Multi-Arch: same
+Architecture: any
+Depends: liblzma5 (= ${binary:Version}), ${misc:Depends}
+Suggests: liblzma-doc
+Description: XZ-format compression library - development files
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ The native format of liblzma is XZ; it also supports raw (headerless)
+ streams and the older LZMA format used by lzma. (For 7-Zip's related
+ format, use the p7zip package instead.) This package provides the
+ development library needed to build programs using liblzma.
+
+Package: liblzma-doc
+Section: doc
+Priority: optional
+Architecture: all
+Depends: ${misc:Depends}
+Suggests: liblzma-dev
+Description: XZ-format compression library - API documentation
+ This package contains a reference manual for the liblzma data
+ compression library, in Doxygen-generated HTML files. The purpose
+ of each struct, macro, and function in the public interface is
+ explained.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..3327901
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,383 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: XZ Utils
+Upstream-Contact:
+ Lasse Collin <lasse.collin@tukaani.org>
+ http://tukaani.org/xz/lists.html
+Source:
+ http://tukaani.org/xz
+ http://git.tukaani.org/xz.git
+Comment:
+ XZ Utils is developed and maintained upstream by Lasse Collin.  Major
+ portions are based on code by other authors; see AUTHORS for details.
+ Most of the source has been put into the public domain, but some files
+ have not (details below).
+ .
+ This file describes the source package.  The binary packages contain
+ some files derived from other works: for example, images in the API
+ documentation come from Doxygen.
+License:
+ Different licenses apply to different files in this package. Here
+ is a rough summary of which licenses apply to which parts of this
+ package (but check the individual files to be sure!):
+ .
+   - liblzma is in the public domain.
+ .
+   - xz, xzdec, and lzmadec command line tools are in the public
+     domain unless GNU getopt_long had to be compiled and linked
+     in from the lib directory. The getopt_long code is under
+     GNU LGPLv2.1+.
+ .
+   - The scripts to grep, diff, and view compressed files have been
+     adapted from gzip. These scripts and their documentation are
+     under GNU GPLv2+.
+ .
+   - All the documentation in the doc directory and most of the
+     XZ Utils specific documentation files in other directories
+     are in the public domain.
+ .
+   - Translated messages are in the public domain.
+ .
+   - The build system contains public domain files, and files that
+     are under GNU GPLv2+ or GNU GPLv3+. None of these files end up
+     in the binaries being built.
+ .
+   - Test files and test code in the tests directory, and debugging
+     utilities in the debug directory are in the public domain.
+ .
+   - The extra directory may contain public domain files, and files
+     that are under various free software licenses.
+ .
+ You can do whatever you want with the files that have been put into
+ the public domain. If you find public domain legally problematic,
+ take the previous sentence as a license grant. If you still find
+ the lack of copyright legally problematic, you have too many
+ lawyers.
+ .
+ As usual, this software is provided "as is", without any warranty.
+ .
+ If you copy significant amounts of public domain code from XZ Utils
+ into your project, acknowledging this somewhere in your software is
+ polite (especially if it is proprietary, non-free software), but
+ naturally it is not legally required. Here is an example of a good
+ notice to put into "about box" or into documentation:
+ .
+     This software includes code from XZ Utils <http://tukaani.org/xz/>.
+ .
+ The following license texts are included in the following files:
+   - COPYING.LGPLv2.1: GNU Lesser General Public License version 2.1
+   - COPYING.GPLv2: GNU General Public License version 2
+   - COPYING.GPLv3: GNU General Public License version 3
+ .
+ Note that the toolchain (compiler, linker etc.) may add some code
+ pieces that are copyrighted. Thus, it is possible that e.g. liblzma
+ binary wouldn't actually be in the public domain in its entirety
+ even though it contains no copyrighted code from the XZ Utils source
+ package.
+ .
+ If you have questions, don't hesitate to ask the author(s) for more
+ information.
+
+Files: *
+Copyright: 2006-2012, Lasse Collin
+           1999-2008, Igor Pavlov
+           2006, Ville Koskinen
+           1998, Steve Reid
+           2000, Wei Dai
+           2003, Kevin Springle
+           2009, Jonathan Nieder
+           2010, Anders F Björklund
+License: PD
+ This file has been put in the public domain.
+ You can do whatever you want with this file.
+Comment:
+  From: Lasse Collin <lasse.collin@tukaani.org>
+  To: Jonathan Nieder <jrnieder@gmail.com>
+  Subject: Re: XZ utils for Debian
+  Date: Sun, 19 Jul 2009 13:28:23 +0300
+  Message-Id: <200907191328.23816.lasse.collin@tukaani.org>
+ .
+ [...]
+ .
+  > AUTHORS, ChangeLog, COPYING, README, THANKS, TODO,
+  > dos/README, windows/README
+ .
+  COPYING says that most docs are in the public domain. Maybe that's not
+  clear enough, but on the other hand it looks a bit stupid to put
+  copyright information in tiny and relatively small docs like README.
+ .
+  I don't dare to say that _all_ XZ Utils specific docs are in the public
+  domain unless otherwise mentioned in the file. I'm including PDF files
+  generated by groff + ps2pdf, and some day I might include Doxygen-
+  generated HTML docs too. Those don't include any copyright notices, but
+  it seems likely that groff + ps2pdf or at least Doxygen put some
+  copyrighted content into the generated files.
+
+Files: INSTALL NEWS PACKAGERS
+ windows/README-Windows.txt
+ windows/INSTALL-Windows.txt
+Copyright: 2009-2010, Lasse Collin
+License: probably-PD
+ See the note on AUTHORS, README, and so on above.
+
+Files: src/scripts/* lib/* extra/scanlzma/scanlzma.c
+Copyright: © 1993, Jean-loup Gailly
+           © 1989-1994, 1996-1999, 2001-2007, Free Software Foundation, Inc.
+           © 2006 Timo Lindfors
+           2005, Charles Levert
+           2005, 2009, Lasse Collin
+           2009, Andrew Dudman
+Other-Authors: Paul Eggert, Ulrich Drepper
+License: GPL-2+
+
+Files: src/scripts/Makefile.am src/scripts/xzless.1
+Copyright: 2009, Andrew Dudman
+           2009, Lasse Collin
+License: PD
+ This file has been put in the public domain.
+ You can do whatever you want with this file.
+
+Files: doc/examples/xz_pipe_comp.c doc/examples/xz_pipe_decomp.c
+Copyright: 2010, Daniel Mealha Cabrita
+License: PD
+ Not copyrighted -- provided to the public domain.
+
+Files: lib/getopt.c lib/getopt1.c lib/getopt.in.h
+Copyright: © 1987-2007 Free Software Foundation, Inc.
+Other-Authors: Ulrich Drepper
+License: LGPL-2.1+
+
+Files: m4/getopt.m4 m4/posix-shell.m4
+Copyright: © 2002-2006, 2008 Free Software Foundation, Inc.
+           © 2007-2008 Free Software Foundation, Inc.
+Other-Authors: Bruno Haible, Paul Eggert
+License: permissive-fsf
+
+Files: m4/acx_pthread.m4
+Copyright: © 2008, Steven G. Johnson <stevenj@alum.mit.edu>
+License: Autoconf
+
+Files: Doxyfile.in
+Copyright: © 1997-2007 by Dimitri van Heesch
+Origin: Doxygen 1.4.7
+License: GPL-2
+
+Files: src/liblzma/check/crc32_table_?e.h
+ src/liblzma/check/crc64_table_?e.h
+ src/liblzma/lzma/fastpos_table.c
+ src/liblzma/rangecoder/price_table.c
+Copyright: none, automatically generated data
+Generated-With:
+ src/liblzma/check/crc32_tablegen.c
+ src/liblzma/check/crc64_tablegen.c
+ src/liblzma/lzma/fastpos_tablegen.c
+ src/liblzma/rangecoder/price_tablegen.c
+License: none
+ No copyright to license.
+
+Files: .gitignore m4/.gitignore po/.gitignore po/LINGUAS po/POTFILES.in
+Copyright: none; these are just short lists.
+License: none
+ No copyright to license.
+
+Files: tests/compress_prepared_bcj_*
+Copyright: 2008-2009, Lasse Collin
+Source-Code: tests/bcj_test.c
+License: PD
+ This file has been put into the public domain.
+ You can do whatever you want with this file.
+Comment:
+ changelog.gz (commit 975d8fd) explains:
+ .
+ Recreated the BCJ test files for x86 and SPARC. The old files
+ were linked with crt*.o, which are copyrighted, and thus the
+ old test files were not in the public domain as a whole. They
+ are freely distributable though, but it is better to be careful
+ and avoid including any copyrighted pieces in the test files.
+ The new files are just compiled and assembled object files,
+ and thus don't contain any copyrighted code.
+
+Files: po/cs.po po/de.po po/fr.po
+Copyright: 2010, Marek ÄŒernocký
+           2010, Andre Noll
+           2011, Adrien Nader
+License: PD
+ This file is put in the public domain.
+
+Files: po/it.po po/pl.po
+Copyright: 2009, 2010, Gruppo traduzione italiano di Ubuntu-it
+           2010, Lorenzo De Liso
+           2009, 2010, 2011, Milo Casagrande
+           2011, Jakub Bogusz
+License: PD
+ This file is in the public domain
+
+Files: INSTALL.generic
+Copyright: © 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+             2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+License: permissive-nowarranty
+
+Files: dos/config.h
+Copyright: © 1992, 1993, 1994, 1999, 2000, 2001, 2002, 2005
+             Free Software Foundation, Inc.
+           2007-2010, Lasse Collin
+Other-Authors: Roland McGrath, Akim Demaille, Paul Eggert,
+               David Mackenzie, Bruno Haible, and many others.
+Origin: configure.ac from XZ Utils,
+        visibility.m4 serial 1 (gettext-0.15),
+        Autoconf 2.52g
+License: config-h
+ configure.ac:
+ .
+  # Author: Lasse Collin
+  #
+  # This file has been put into the public domain.
+  # You can do whatever you want with this file.
+ .
+ visibility.m4:
+ .
+  dnl Copyright (C) 2005 Free Software Foundation, Inc.
+  dnl This file is free software; the Free Software Foundation
+  dnl gives unlimited permission to copy and/or distribute it,
+  dnl with or without modifications, as long as this notice is preserved.
+ .
+ dnl From Bruno Haible.
+ .
+ comments from Autoconf 2.52g:
+ .
+  # Copyright 1992, 1993, 1994, 1999, 2000, 2001, 2002
+  # Free Software Foundation, Inc.
+ .
+ [...]
+ .
+  # As a special exception, the Free Software Foundation gives unlimited
+  # permission to copy, distribute and modify the configure scripts that
+  # are the output of Autoconf.  You need not follow the terms of the GNU
+  # General Public License when using or distributing such scripts, even
+  # though portions of the text of Autoconf appear in them.  The GNU
+  # General Public License (GPL) does govern all other use of the material
+  # that constitutes the Autoconf program.
+ .
+ On Debian systems, the complete text of the GNU General Public
+ License version 2 can be found in ‘/usr/share/common-licenses/GPL-2’.
+ dos/config.h was generated with autoheader, which tells Autoconf to
+ output a script to generate a config.h file and then runs it.
+
+Files: po/Makevars
+Origin: gettext-runtime/po/Makevars (gettext-0.12)
+Copyright: © 2003 Free Software Foundation, Inc.
+Authors: Bruno Haible
+License: LGPL-2.1+
+ The gettext-runtime package is under the LGPL, see files intl/COPYING.LIB-2.0
+ and intl/COPYING.LIB-2.1.
+ .
+ On Debian systems, the complete text of intl/COPYING.LIB-2.0 from
+ gettext-runtime 0.12 can be found in ‘/usr/share/common-licenses/LGPL-2’
+ and the text of intl/COPYING.LIB-2.1 can be found in
+ ‘/usr/share/common-licenses/LGPL-2.1’.
+ .
+ po/Makevars consists mostly of helpful comments and does not contain a
+ copyright and license notice.
+
+Files: COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1
+Copyright: © 1989, 1991, 1999, 2007 Free Software Foundation, Inc.
+License: noderivs
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+Files: debian/*
+Copyright: 2009-2012, Jonathan Nieder
+License: PD-debian
+ The Debian packaging files are in the public domain.
+ You may freely use, modify, distribute, and relicense them.
+
+License: LGPL-2.1+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1, or (at your option)
+ any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU Lesser General Public License for more details.
+ .
+ You should have received a copy of the GNU Lesser General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the complete text of the GNU Lesser General Public
+ License version 2.1 can be found in ‘/usr/share/common-licenses/LGPL-2.1’.
+
+License: GPL-2
+ Permission to use, copy, modify, and distribute this software and its
+ documentation under the terms of the GNU General Public License is
+ hereby granted. No representations are made about the suitability of
+ this software for any purpose. It is provided "as is" without express
+ or implied warranty. See the GNU General Public License for more
+ details.
+ .
+ Documents produced by doxygen are derivative works derived from the
+ input used in their production; they are not affected by this license.
+ .
+ On Debian systems, the complete text of the version of the GNU General
+ Public License distributed with Doxygen can be found in
+ ‘/usr/share/common-licenses/GPL-2’.
+
+License: GPL-2+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ version 2 can be found in ‘/usr/share/common-licenses/GPL-2’.
+
+License: Autoconf
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation, either version 3 of the License, or (at your
+ option) any later version.
+ .
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+ Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along
+ with this program. If not, see <http://www.gnu.org/licenses/>.
+ .
+ As a special exception, the respective Autoconf Macro's copyright owner
+ gives unlimited permission to copy, distribute and modify the configure
+ scripts that are the output of Autoconf when processing the Macro. You
+ need not follow the terms of the GNU General Public License when using
+ or distributing such scripts, even though portions of the text of the
+ Macro appear in them. The GNU General Public License (GPL) does govern
+ all other use of the material that constitutes the Autoconf Macro.
+ .
+ This special exception to the GPL applies to versions of the Autoconf
+ Macro released by the Autoconf Archive. When you make and distribute a
+ modified version of the Autoconf Macro, you may extend this special
+ exception to the GPL to apply to your modified version as well.
+ .
+ On Debian systems, the complete text of the GNU General Public
+ License version 3 can be found in ‘/usr/share/common-licenses/GPL-3’.
+
+License: permissive-fsf
+ This file is free software; the Free Software Foundation
+ gives unlimited permission to copy and/or distribute it,
+ with or without modifications, as long as this notice is preserved.
+
+License: permissive-nowarranty
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved.  This file is offered as-is,
+ without warranty of any kind.
diff --git a/debian/liblzma-dev.NEWS b/debian/liblzma-dev.NEWS
new file mode 100644
index 0000000..da790a0
--- /dev/null
+++ b/debian/liblzma-dev.NEWS
@@ -0,0 +1,24 @@
+xz-utils (4.999.9beta+20100527-1) unstable; urgency=low
+
+  Starting with this version, the declarations needed to use the Subblock
+  filter are not present in the liblzma headers.  liblzma never supported
+  the Subblock filter, so compiled applications should not be affected by
+  this change.
+
+  The lzma_restrict macro has been removed from the liblzma headers.  This
+  only affects the declarations contained there; the semantics are still the
+  same.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 27 May 2010 15:52:28 -0500
+
+xz-utils (4.999.9beta+20100212-1) unstable; urgency=low
+  
+  Starting with this version, the lzma_block_header_decode() function
+  is advertised to require its block->version parameter to be initialized.
+  Future versions of liblzma may use an alternate version of the Block
+  options if the application declares it supports it.  Existing applications
+  will continue to work for now because the only supported Block format
+  version is zero.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 15 Feb 2010 23:59:21 -0600
+
diff --git a/debian/liblzma-dev.README.Debian b/debian/liblzma-dev.README.Debian
new file mode 100644
index 0000000..81e397d
--- /dev/null
+++ b/debian/liblzma-dev.README.Debian
@@ -0,0 +1,19 @@
+From the XZ Utils README (included in the xz-utils package):
+
+1.3. Documentation for liblzma
+
+    The liblzma API headers include short docs about each function
+    and data type as Doxygen tags. These docs should be quite OK as
+    a quick reference.
+
+    I have planned to write a bunch of very well documented example
+    programs, which (due to comments) should work as a tutorial to
+    various features of liblzma. No such example programs have been
+    written yet.
+
+    For now, if you have never used liblzma, libbzip2, or zlib, I
+    recommend learning *basics* of zlib API. Once you know that, it
+    should be easier to learn liblzma.
+
+        http://zlib.net/manual.html
+        http://zlib.net/zlib_how.html
diff --git a/debian/liblzma-dev.docs b/debian/liblzma-dev.docs
new file mode 100644
index 0000000..9c1a7dc
--- /dev/null
+++ b/debian/liblzma-dev.docs
@@ -0,0 +1,5 @@
+doc/xz-file-format.txt
+doc/lzma-file-format.txt
+doc/examples
+doc/examples_old
+TODO
diff --git a/debian/liblzma-dev.install b/debian/liblzma-dev.install
new file mode 100644
index 0000000..97de04c
--- /dev/null
+++ b/debian/liblzma-dev.install
@@ -0,0 +1,5 @@
+usr/include/*
+usr/include/lzma/*
+usr/lib/*/lib*.a
+usr/lib/*/lib*.so
+usr/lib/*/pkgconfig/*
diff --git a/debian/liblzma-dev.links b/debian/liblzma-dev.links
new file mode 100644
index 0000000..06a0344
--- /dev/null
+++ b/debian/liblzma-dev.links
@@ -0,0 +1,3 @@
+usr/share/doc/liblzma5/AUTHORS usr/share/doc/liblzma-dev/AUTHORS
+usr/share/doc/liblzma5/THANKS usr/share/doc/liblzma-dev/THANKS
+usr/share/doc/liblzma5/NEWS.gz usr/share/doc/liblzma-dev/NEWS.gz
diff --git a/debian/liblzma-doc.README.Debian b/debian/liblzma-doc.README.Debian
new file mode 100644
index 0000000..81e397d
--- /dev/null
+++ b/debian/liblzma-doc.README.Debian
@@ -0,0 +1,19 @@
+From the XZ Utils README (included in the xz-utils package):
+
+1.3. Documentation for liblzma
+
+    The liblzma API headers include short docs about each function
+    and data type as Doxygen tags. These docs should be quite OK as
+    a quick reference.
+
+    I have planned to write a bunch of very well documented example
+    programs, which (due to comments) should work as a tutorial to
+    various features of liblzma. No such example programs have been
+    written yet.
+
+    For now, if you have never used liblzma, libbzip2, or zlib, I
+    recommend learning *basics* of zlib API. Once you know that, it
+    should be easier to learn liblzma.
+
+        http://zlib.net/manual.html
+        http://zlib.net/zlib_how.html
diff --git a/debian/liblzma-doc.doc-base b/debian/liblzma-doc.doc-base
new file mode 100644
index 0000000..f7cfdc2
--- /dev/null
+++ b/debian/liblzma-doc.doc-base
@@ -0,0 +1,12 @@
+Document: liblzma-doc
+Title: liblzma API Documentation
+Author: Lasse Collin
+Abstract: liblzma is a compression library supporting the .xz and .lzma
+ formats, among others. This Doxygen-generated reference manual
+ describes the data structures and functions making up its public
+ interface.
+Section: Programming/C
+
+Format: HTML
+Index: /usr/share/doc/liblzma-doc/html/index.html
+Files: /usr/share/doc/liblzma-doc/html/*
diff --git a/debian/liblzma-doc.docs b/debian/liblzma-doc.docs
new file mode 100644
index 0000000..f8172bb
--- /dev/null
+++ b/debian/liblzma-doc.docs
@@ -0,0 +1 @@
+debian/normal-build/doc/html/
diff --git a/debian/liblzma5.docs b/debian/liblzma5.docs
new file mode 100644
index 0000000..aa4127d
--- /dev/null
+++ b/debian/liblzma5.docs
@@ -0,0 +1,3 @@
+AUTHORS
+THANKS
+NEWS
diff --git a/debian/liblzma5.install b/debian/liblzma5.install
new file mode 100644
index 0000000..1b15eaa
--- /dev/null
+++ b/debian/liblzma5.install
@@ -0,0 +1 @@
+lib/*/liblzma.so.*
diff --git a/debian/patches/liblzma-make-dlopen-based-liblzma2-compatibility-opt.patch b/debian/patches/liblzma-make-dlopen-based-liblzma2-compatibility-opt.patch
new file mode 100644
index 0000000..54617d9
--- /dev/null
+++ b/debian/patches/liblzma-make-dlopen-based-liblzma2-compatibility-opt.patch
@@ -0,0 +1,197 @@
+From e284cfe27457239e932038fb90084c91f4229c36 Mon Sep 17 00:00:00 2001
+From: Jonathan Nieder <jrnieder@gmail.com>
+Date: Sat, 16 Jun 2012 05:57:42 -0500
+Subject: liblzma: make dlopen()-based liblzma2 compatibility optional
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Suppose I want to build a statically linked program:
+
+	gcc -static -o app app.c -lrpm -llzma
+
+Suppose further that librpm.a was built against a pre-5.0 version of
+liblzma so it does not allocate as much space for reserved fields at
+the end of lzma_stream as the current API requires.
+
+(This is a hypothetical scenario --- Debian librpm does not provide a
+static library.)
+
+If liblzma uses unpatched lzma_code() from XZ Utils >= 5.0, then
+during calls to librpm that try to compress or decompress an
+xz-compressed RPM, lzma_code’s reserved field checks will overflow the
+buffer and segfault.
+
+If liblzma uses the modified version of lzma_code() which asks libdl
+if liblzma.so.2 is resident and refrains from checking reserved fields
+past the end of the old lzma_stream struct when the answer is "yes",
+the behavior is no better.  The dynamic library liblzma.so.2 is _not_
+resident, so lzma_code() dutifully reads reserved fields past the end
+of the buffer --- segfault.
+
+So the only safe behavior in the static library is to unconditionally
+disable checks that might break for callers we want to continue to
+support.
+
+The new "./configure --enable-liblzma2-compat" option implements all
+three sets of semantics:
+
+ - "./configure --disable-liblzma2-compat" means to check the full set
+   of reserved fields unconditionally.  You can use this to check how
+   your application would behave with the unpatched library.
+
+ - "./configure --enable-liblzma2-compat=auto" means to skip checks of
+   reserved fields past the old end of struct lzma_stream when
+   liblzma.so.2 is resident.  If a DSO built against liblzma2 shares
+   the process image, the ABI-incompatible checks are skipped for
+   safety, whereas in the usual case when no such DSO is resident, the
+   full set of checks is run to help application developers remember
+   to zero all reserved fields.
+
+ - "./configure --enable-liblzma2-compat" makes liblzma skip the
+   ABI-incompatible checks unconditionallty.  You can use this if you
+   want your copy of liblzma to be usable by static libraries that
+   were built against the old library.
+
+Patch-Name: liblzma-make-dlopen-based-liblzma2-compatibility-opt.patch
+Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
+---
+ configure.ac                | 33 +++++++++++++++++++++++++++++++--
+ src/liblzma/common/common.c | 40 +++++++++++++++++++++++++++++++++++-----
+ src/liblzma/common/common.h |  2 ++
+ 3 files changed, 68 insertions(+), 7 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6dae0b9756d6..d17629e0e7f6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -548,10 +548,39 @@ case $enable_threads in
+ esac
+ AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno])
+ 
+-# As a Debian-specific hack, liblzma uses dlopen() to check if extra
++# As a Debian-specific hack, liblzma can use dlopen() to check if extra
+ # paranoia is needed because unversioned symbols from liblzma.so.2 are
+ # present in the same process.  See src/liblzma/common/common.c.
+-AC_SEARCH_LIBS([dlopen], [dl])
++AC_MSG_CHECKING([if lzma_code checks should be relaxed for compatibility])
++AC_ARG_ENABLE([liblzma2-compat], [AC_HELP_STRING([--enable-liblzma2-compat],
++		[Relax run-time checks to accomodate old binaries built
++		with smaller sizeof(lzma_stream).  The default is "dynamic",
++		which means to only use the relaxed checks when the dynamic
++		loader reports that liblzma.so.2 is loaded in the same process.])],
++	[], [enable_liblzma2_compat=dynamic])
++case $enable_liblzma2_compat in
++dynamic)
++	AC_SEARCH_LIBS([dlopen], [dl])
++	AC_DEFINE([LIBLZMA2_COMPAT_DYNAMIC], [1],
++		[Define to 1 to use dlopen() to check if lzma_code() checks
++		should be more tolerant because the process is also linked to
++		liblzma from Debian 6.0.])
++	AC_MSG_RESULT([auto])
++	;;
++yes)
++	AC_DEFINE([LIBLZMA2_COMPAT], [1],
++		[Define to 1 to unconditionally make lzma_code() checks tolerant
++		to accomodate callers built against liblzma from Debian 6.0.])
++	AC_MSG_RESULT([yes])
++	;;
++no)
++	AC_MSG_RESULT([no])
++	;;
++*)
++	AC_MSG_RESULT([])
++	AC_MSG_ERROR([--enable-liblzma2: unrecognized value $enable_liblzma2_compat])
++	;;
++esac
+ 
+ echo
+ echo "Initializing Libtool:"
+diff --git a/src/liblzma/common/common.c b/src/liblzma/common/common.c
+index 5474211cf0ca..79427b005b4b 100644
+--- a/src/liblzma/common/common.c
++++ b/src/liblzma/common/common.c
+@@ -164,16 +164,46 @@ lzma_next_end(lzma_next_coder *next, const lzma_allocator *allocator)
+ // External to internal API wrapper //
+ //////////////////////////////////////
+ 
+-static bool
+-liblzma2_loaded(void)
++#ifdef LIBLZMA2_COMPAT_DYNAMIC
++
++static void
++init_liblzma2_compat(lzma_stream *strm)
+ {
+ 	void *handle = dlopen("liblzma.so.2", RTLD_LAZY | RTLD_NOLOAD);
+ 	if (handle) {
+ 		dlclose(handle);
+-		return true;
++		strm->internal->liblzma2_compat = true;
++		return;
+ 	}
++	strm->internal->liblzma2_compat = false;
++}
++
++static bool
++liblzma2_loaded(lzma_stream *strm)
++{
++	return strm->internal->liblzma2_compat;
++}
++
++#else
++
++static void
++init_liblzma2_compat(lzma_stream *strm)
++{
++}
++
++#ifdef LIBLZMA2_COMPAT
++static bool liblzma2_loaded(lzma_stream *strm)
++{
++	return true;
++}
++#else
++static bool liblzma2_loaded(lzma_stream *strm)
++{
+ 	return false;
+ }
++#endif
++
++#endif
+ 
+ extern lzma_ret
+ lzma_strm_init(lzma_stream *strm)
+@@ -188,7 +218,7 @@ lzma_strm_init(lzma_stream *strm)
+ 			return LZMA_MEM_ERROR;
+ 
+ 		strm->internal->next = LZMA_NEXT_CODER_INIT;
+-		strm->internal->liblzma2_compat = liblzma2_loaded();
++		init_liblzma2_compat(strm);
+ 	}
+ 
+ 	memzero(strm->internal->supported_actions,
+@@ -241,7 +271,7 @@ lzma_code(lzma_stream *strm, lzma_action action)
+ 			|| strm->reserved_ptr4 != NULL)
+ 		return LZMA_OPTIONS_ERROR;
+ 
+-	if (strm->internal->liblzma2_compat)
++	if (liblzma2_loaded(strm))
+ 		; /* Enough checks. */
+ 	else if (strm->reserved_int1 != 0
+ 			|| strm->reserved_int2 != 0
+diff --git a/src/liblzma/common/common.h b/src/liblzma/common/common.h
+index b056e417a29e..eb1d0525c07d 100644
+--- a/src/liblzma/common/common.h
++++ b/src/liblzma/common/common.h
+@@ -227,9 +227,11 @@ struct lzma_internal_s {
+ 	/// made (no input consumed and no output produced by next.code).
+ 	bool allow_buf_error;
+ 
++#ifdef LIBLZMA2_COMPAT_DYNAMIC
+ 	/// Indicates whether we are sharing a process image with
+ 	/// liblzma.so.2 and need to tread carefully.
+ 	bool liblzma2_compat;
++#endif
+ };
+ 
+ 
diff --git a/debian/patches/liblzma-skip-ABI-incompatible-check-when-liblzma.so.patch b/debian/patches/liblzma-skip-ABI-incompatible-check-when-liblzma.so.patch
new file mode 100644
index 0000000..066d260
--- /dev/null
+++ b/debian/patches/liblzma-skip-ABI-incompatible-check-when-liblzma.so.patch
@@ -0,0 +1,211 @@
+From 7e228a81c1aa330de9289f579f768c7c9a686db2 Mon Sep 17 00:00:00 2001
+From: Jonathan Nieder <jrnieder@gmail.com>
+Date: Thu, 17 May 2012 18:49:00 -0500
+Subject: liblzma: skip ABI-incompatible check when liblzma.so.2 is loaded
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When liblzma started using ELF symbol versioning at the same time
+as a soname bump (2 → 5) and a small increase in the reserved space at
+the end of the lzma_stream structure checked by lzma_code, introducing
+an unversioned compatibility symbol to ease the transition seemed like
+a great idea.  After all:
+
+ - most applications only use one version of the library (liblzma.so.2
+   or liblzma.so.5) and would obviously work fine
+
+ - applications linking to the new version of the library
+   (liblzma.so.5) should use the default, versioned lzma_code symbol so
+   errors initializing the reserved space can be noticed
+
+ - symbol versioning should ensure application/library mixtures
+   independently making use of both versions of the library also
+   work.  Calls using the unversioned symbol names would be resolved
+   using the old symbol from liblzma.so.2 or the compatibility symbol
+   from liblzma.so.5, avoiding segfaults and spurious
+   LZMA_OPTIONS_ERROR errors.
+
+ - application/library mixtures using both versions of the library and
+   passing lzma_stream objects between the two would break, but that
+   was never supposed to be supported, anyway.
+
+Three toolchain bugs dash that plan.
+
+Current (2.22) versions of the gold linker cannot be used to build
+libraries providing versioned and unversioned symbols with the same
+name.  On the other hand, BFD ld doesn't mind.  So GNU gold refuses to
+link versions of liblzma including the compatibility symbol (PR12261):
+
+	/usr/bin/ld: error: symbol lzma_code has undefined version
+
+Annoying, but livable.  liblzma with the compatibility symbol just
+has to be built with BFD ld.
+
+More importantly, gold does not support linking to libraries providing
+versioned and unversioned symbols with the same name.  If I link some
+code to a version of liblzma with the compatibility symbol:
+
+	ld -o demo demo.o -llzma
+
+then the documented behavior, implemented by BFD ld, is to interpret
+calls to lzma_code as referring to the default version
+(lzma_code@XZ_5.0).  Current versions of GNU gold treat such calls as
+referring to whichever symbol comes first in liblzma.so.5's symbol
+table.  If the unversioned symbol comes first (and in Debian liblzma5
+5.1.1alpha+20110809-3 it does), GNU gold will mislink new applications
+to use the unversioned compatibility symbol (PR13521):
+
+	$ ld.gold -o test.gold test.o -llzma
+	$ eu-readelf -s test.gold | grep lzma_code
+	    1: 0000000000000000      0 FUNC    GLOBAL DEFAULT    UNDEF lzma_code
+	    5: 0000000000000000      0 FUNC    GLOBAL DEFAULT    UNDEF lzma_code
+
+There is no warning.
+
+Worse, ld.so from glibc unpredictably will sometimes use the versioned
+symbol to resolve references to the unversioned base version when both
+are present (PR12977).
+
+Clearly no one has been testing mixtures of versioned and
+unversioned symbols at all, and we cannot trust the symbol resolution
+process to do anything in particular for them.
+
+This patch implements an alternative method to implement the same
+compatibility goals described above.
+
+ - No more compatibility symbol.  liblzma.so.5 will define lzma_code
+   only once, with version XZ_5.0.
+
+ - When initializing an lzma_stream object, use dlopen("liblzma.so.2",
+   RTLD_NOLOAD) to detect whether the caller might have been expecting
+   the old ABI, and store that information in the private
+   stream->internal->liblzma2_compat field.
+
+ - In lzma_code, when checking reserved fields, skip fields past the
+   old end of the lzma_stream structure ifying reserved fields if and
+   only if this->internal->liblzma2_compat is false.
+
+That's it.  Hopefully this time it will work reliably.
+
+Thanks to Eduard Bloch for noticing PR13521 and to Ian Lance Taylor
+for PR12977.
+
+Patch-Name: liblzma-skip-ABI-incompatible-check-when-liblzma.so.patch
+Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
+---
+ configure.ac                |  5 +++++
+ src/liblzma/common/common.c | 40 ++++++++++++++++++++++++++++++++++++++--
+ src/liblzma/common/common.h |  4 ++++
+ 3 files changed, 47 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 53ae7bef7472..6dae0b9756d6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -548,6 +548,11 @@ case $enable_threads in
+ esac
+ AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno])
+ 
++# As a Debian-specific hack, liblzma uses dlopen() to check if extra
++# paranoia is needed because unversioned symbols from liblzma.so.2 are
++# present in the same process.  See src/liblzma/common/common.c.
++AC_SEARCH_LIBS([dlopen], [dl])
++
+ echo
+ echo "Initializing Libtool:"
+ LT_PREREQ([2.2])
+diff --git a/src/liblzma/common/common.c b/src/liblzma/common/common.c
+index 28aa2b7142f4..5474211cf0ca 100644
+--- a/src/liblzma/common/common.c
++++ b/src/liblzma/common/common.c
+@@ -12,6 +12,8 @@
+ 
+ #include "common.h"
+ 
++#include <dlfcn.h>
++
+ 
+ /////////////
+ // Version //
+@@ -162,6 +164,17 @@ lzma_next_end(lzma_next_coder *next, const lzma_allocator *allocator)
+ // External to internal API wrapper //
+ //////////////////////////////////////
+ 
++static bool
++liblzma2_loaded(void)
++{
++	void *handle = dlopen("liblzma.so.2", RTLD_LAZY | RTLD_NOLOAD);
++	if (handle) {
++		dlclose(handle);
++		return true;
++	}
++	return false;
++}
++
+ extern lzma_ret
+ lzma_strm_init(lzma_stream *strm)
+ {
+@@ -175,6 +188,7 @@ lzma_strm_init(lzma_stream *strm)
+ 			return LZMA_MEM_ERROR;
+ 
+ 		strm->internal->next = LZMA_NEXT_CODER_INIT;
++		strm->internal->liblzma2_compat = liblzma2_loaded();
+ 	}
+ 
+ 	memzero(strm->internal->supported_actions,
+@@ -189,6 +203,24 @@ lzma_strm_init(lzma_stream *strm)
+ }
+ 
+ 
++// Before v5.0.0~6 (liblzma: A few ABI tweaks to reserve space in
++// structures, 2010-10-23), the reserved fields in lzma_stream were:
++//
++//	void *reserved_ptr1;
++//	void *reserved_ptr2;
++//	uint64_t reserved_int1;
++//	uint64_t reserved_int2;
++//	lzma_reserved_enum reserved_enum1;
++//	lzma_reserved_enum reserved_enum2;
++//
++// Nowadays there are two more pointers between reserved_ptr2 and
++// reserved_int1 and two size_t fields between reserved_int2 and
++// reserved_enum1.
++//
++// When strm->internal->liblzma2_compat is set, limit the checks of
++// reserved fields to fields that were present in the old ABI to avoid
++// segfaults and spurious "Unsupported options" from callers sharing
++// the process image that expect the old ABI.
+ extern LZMA_API(lzma_ret)
+ lzma_code(lzma_stream *strm, lzma_action action)
+ {
+@@ -206,8 +238,12 @@ lzma_code(lzma_stream *strm, lzma_action action)
+ 	if (strm->reserved_ptr1 != NULL
+ 			|| strm->reserved_ptr2 != NULL
+ 			|| strm->reserved_ptr3 != NULL
+-			|| strm->reserved_ptr4 != NULL
+-			|| strm->reserved_int1 != 0
++			|| strm->reserved_ptr4 != NULL)
++		return LZMA_OPTIONS_ERROR;
++
++	if (strm->internal->liblzma2_compat)
++		; /* Enough checks. */
++	else if (strm->reserved_int1 != 0
+ 			|| strm->reserved_int2 != 0
+ 			|| strm->reserved_int3 != 0
+ 			|| strm->reserved_int4 != 0
+diff --git a/src/liblzma/common/common.h b/src/liblzma/common/common.h
+index 955d784a5b6a..b056e417a29e 100644
+--- a/src/liblzma/common/common.h
++++ b/src/liblzma/common/common.h
+@@ -226,6 +226,10 @@ struct lzma_internal_s {
+ 	/// If true, lzma_code will return LZMA_BUF_ERROR if no progress was
+ 	/// made (no input consumed and no output produced by next.code).
+ 	bool allow_buf_error;
++
++	/// Indicates whether we are sharing a process image with
++	/// liblzma.so.2 and need to tread carefully.
++	bool liblzma2_compat;
+ };
+ 
+ 
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..b37018b
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,2 @@
+liblzma-skip-ABI-incompatible-check-when-liblzma.so.patch
+liblzma-make-dlopen-based-liblzma2-compatibility-opt.patch
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..63bc7c7
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,164 @@
+#!/usr/bin/make -f
+
+build clean install binary-arch binary-indep binary:
+	+dh $@ --parallel $(opt_no_act)
+
+# Runs tests, too, if and only if nocheck is unset (see below).
+build-arch:: build-plain build-static build-small
+
+build-indep: debian/normal-build/Makefile
+	cd debian/normal-build && doxygen Doxyfile
+
+autoreconf_sources := $(wildcard Makefile.am */Makefile.am */*/Makefile.am)
+autoreconf_sources += configure.ac
+
+autoreconf_products := $(wildcard Makefile.in */Makefile.in */*/Makefile.in)
+autoreconf_products += configure	# and more, but these will do
+
+configure_input := $(autoreconf_products)
+configure_input += Doxyfile.in
+configure_input += src/liblzma/liblzma.pc.in
+configure_input += $(wildcard src/scripts/*.in)
+
+override_dh_auto_clean:
+	rm -f debian/*-stamp
+	dh_auto_clean --builddirectory debian/xzdec-build
+	dh_auto_clean --builddirectory debian/normal-build
+	dh_auto_clean --builddirectory debian/static-build
+	sh debian/clean.sh
+
+override_dh_auto_install:
+	dh_auto_install --builddirectory debian/xzdec-build
+	dh_auto_install --builddirectory debian/normal-build
+	dh_auto_install --builddirectory debian/static-build
+	set -e; arch=$$(dpkg-architecture -qDEB_HOST_MULTIARCH); \
+	install -d debian/tmp/lib/$$arch; \
+	mv debian/tmp/usr/lib/$$arch/liblzma.so.* debian/tmp/lib/$$arch/; \
+	dso=$$(basename $$(readlink debian/tmp/usr/lib/$$arch/liblzma.so)); \
+	ln -s -f /lib/$$arch/$$dso debian/tmp/usr/lib/$$arch/liblzma.so
+
+override_dh_installchangelogs:
+	dh_installchangelogs ChangeLog
+
+build-plain: debian/normal-build/Makefile
+	dh_auto_build --builddirectory debian/normal-build
+
+build-static: debian/static-build/Makefile
+	dh_auto_build --builddirectory debian/static-build
+
+build-small: debian/xzdec-build/Makefile
+	dh_auto_build --builddirectory debian/xzdec-build
+
+debian/test-plain-stamp: | build-plain
+	dh_auto_test --builddirectory debian/normal-build
+	>$@
+
+debian/test-static-stamp: | build-static
+	dh_auto_test --builddirectory debian/static-build
+	>$@
+
+debian/test-xzdec-stamp: | build-small
+	$(MAKE) -C debian/xzdec-build/tests create_compress_files
+	$(MAKE) -C debian/xzdec-build/tests \
+		TESTS="test_check test_files.sh test_compress.sh" \
+		check-TESTS
+	>$@
+
+debian/normal-build/Makefile debian/normal-build/Doxyfile: $(configure_input)
+	dh_auto_configure --builddirectory debian/normal-build -- \
+		--enable-threads --disable-static \
+		$(opt_optimize) $(opt_quiet) \
+		--disable-xzdec --disable-lzmadec
+
+debian/static-build/Makefile: $(configure_input)
+	dh_auto_configure --builddirectory debian/static-build -- \
+		--disable-threads --disable-shared \
+		--enable-liblzma2-compat \
+		$(opt_optimize) $(opt_quiet) \
+		--disable-lzmainfo --disable-scripts \
+		--disable-xzdec --disable-lzmadec \
+		--disable-xz --disable-lzma-links
+
+debian/xzdec-build/Makefile: $(configure_input)
+	dh_auto_configure --builddirectory debian/xzdec-build -- \
+		--disable-shared --disable-nls --disable-encoders \
+		--enable-small --disable-threads \
+		--disable-liblzma2-compat \
+		$(opt_optimize_small) $(opt_quiet) \
+		--disable-lzmainfo --disable-scripts \
+		--disable-xz --disable-lzma-links
+
+$(autoreconf_products): $(autoreconf_sources)
+	autoreconf -is
+
+small_flags_env =
+small_flags_env += DEB_CFLAGS_MAINT_STRIP='-O2 -O3'
+small_flags_env += DEB_CFLAGS_MAINT_PREPEND=-Os
+flags_cmd = dpkg-buildflags --export=configure
+opt_optimize = $(shell $(flags_cmd))
+opt_optimize_small = $(shell $(small_flags_env) $(flags_cmd))
+
+opt_no_act =
+opt_quiet =
+
+# Unless noopt is set, use optimized CRC32 routine on the Hurd.
+ifeq (hurd,$(shell dpkg-architecture -qDEB_HOST_ARCH_OS))
+    cputype := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
+    ifeq (i386,$(cputype))
+        opt_optimize += --enable-assembler=x86
+        opt_optimize_small += --enable-assembler=x86
+    endif
+    ifeq (amd64,$(cputype))
+        opt_optimize += --enable-assembler=x86_64
+        opt_optimize_small += --enable-assembler=x86_64
+    endif
+endif
+
+ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
+    opt_optimize += --disable-assembler
+    opt_optimize_small += --disable-assembler
+endif
+
+ifneq (,$(findstring n,$(MAKEFLAGS)))
+    opt_no_act = --no-act
+endif
+
+ifneq (,$(filter quiet,$(DEB_BUILD_OPTIONS)))
+    opt_quiet = --quiet
+    MAKEFLAGS += --quiet
+endif
+
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+build-arch:: debian/test-plain-stamp
+build-arch:: debian/test-static-stamp
+build-arch:: debian/test-xzdec-stamp
+endif
+
+# Build a tarball with the latest upstream version.
+# This is made complicated by the need to choose a nice version number.
+REPO = http://git.tukaani.org/xz.git
+BRANCH = master
+get-orig-source:
+	mkdir debian-orig-source
+	-set -e; cd debian-orig-source; \
+	: Fetch latest upstream version.; \
+		git init -q; \
+		git fetch -q --tags $(REPO); \
+		git fetch -q $(REPO) $(BRANCH); \
+	: Determine version number.; \
+		commit_name=$$(git describe FETCH_HEAD); \
+		release=$${commit_name%%-*}; \
+		date=$$(date --utc --date="$$( \
+			git log -1 --pretty=format:%cD "$$commit_name" \
+			)" "+%Y%m%d"); \
+		if test "$$commit_name" = "$$release"; \
+		then upstream_version=$${commit_name#v}; \
+		else upstream_version="$${release#v}+$${date}"; \
+		fi; \
+	: Generate tarball.; \
+		echo "packaging $$commit_name"; \
+		git archive --format=tar "$$commit_name" \
+			--prefix="xz-utils-$$upstream_version/" | \
+		gzip -n --rsyncable -9 \
+			> "../xz-utils_$$upstream_version.orig.tar.gz"
+	rm -fr debian-orig-source
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/symbols b/debian/symbols
new file mode 100644
index 0000000..4a95cf5
--- /dev/null
+++ b/debian/symbols
@@ -0,0 +1,7 @@
+liblzma.so.5 liblzma5 #MINVER#
+* Build-Depends-Package: liblzma-dev
+ (symver)XZ_5.0 5.1.1alpha+20110809
+ lzma_code@XZ_5.0 5.1.1alpha+20120614
+ lzma_raw_buffer_decode@XZ_5.0 5.1.1alpha+20120614
+ lzma_raw_buffer_encode@XZ_5.0 5.1.1alpha+20120614
+ (symver)XZ_5.2 5.2.2
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..6352a9c
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=3
+opts=dversionmangle=s/\+\d{8}$// \
+http://tukaani.org/xz/xz-([\d.]*(?:beta)?)\.tar\.gz
diff --git a/debian/xz-utils.NEWS b/debian/xz-utils.NEWS
new file mode 100644
index 0000000..6eac958
--- /dev/null
+++ b/debian/xz-utils.NEWS
@@ -0,0 +1,31 @@
+xz-utils (4.999.9beta+20100212-2) unstable; urgency=low
+
+  The tiny xzdec and lzmadec decompressors have been moved to the new
+  xzdec package.  One can use xzcat (which is an abbreviation for
+  “xz --decompress --stdout”) to replace them where space is not a
+  premium.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 23 Feb 2010 08:24:10 -0600
+
+xz-utils (4.999.9beta+20100117-1) unstable; urgency=low
+
+  From this version on, xz produces sparse files by default when
+  decompressing.  This saves disk space when reproducing files with long
+  runs of zero bytes, such as file system images.  Implementing this
+  feature requires seeking forward beyond the end of a file so that the
+  operating system knows where to put in a hole.
+
+  If you use xz --decompress to write to end of a file that is appended
+  to at the same time by another process, this could cause concurrent
+  output from the other command to be overwritten.  This is a rare and
+  quite weird thing to do.  If you really want to do it, note that xz’s
+  buffering strategy is not part of its documented interface; to safely
+  interleave concurrent output from xz and another command, a
+  construction such as
+
+  	xz --decompress input.xz | dd ibs=1k obs=1k >> log
+
+  would be needed to avoid unpredictable results.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Tue, 02 Feb 2010 15:51:37 -0600
+
diff --git a/debian/xz-utils.README.Debian b/debian/xz-utils.README.Debian
new file mode 100644
index 0000000..e1c7b97
--- /dev/null
+++ b/debian/xz-utils.README.Debian
@@ -0,0 +1,90 @@
+XZ Utils for Debian
+===================
+
+Contents:
+ 1. History
+ 2. Differences from standard XZ Utils
+ 3. LZMA Utils compatibility
+ 4. Configuration
+
+History
+-------
+
+XZ Utils should have been called LZMA Utils 4.42, but it came too late.
+The old .lzma file format has some problems, worst of which is the lack
+of magic number, but it gets enough use to still need to be supported.
+See /usr/share/doc/xz-utils/history.txt.gz for the full story.
+
+Differences from standard XZ Utils
+----------------------------------
+
+XZ Utils 5.1.y has some experimental features which are disabled in
+Debian to allow interfaces to evolve.  Debian liblzma is also modified
+to avoid breakage when the same process loads liblzma2 from Debian 6.0
+(squeeze) and liblzma5.
+
+abi-threaded-encoder
+  Disable threaded compression in liblzma and xz.
+
+abi-version-script
+  liblzma: Do not pretend to satisfy dependencies on XZ_5.1.1alpha.
+
+abi-liblzma2-compat, configure-liblzma2-compat
+  Do not check reserved fields past the historical end of the
+  lzma_stream structure if liblzma.so.2 is loaded in the same
+  process image.  Likewise when linked statically.
+  (See bug #649522.)
+
+man-date, man-xz-lvv-minver (from upstream)
+  Document the "Minimum version required to decompress" field of
+  "xz --robot -v -v --list" output.
+
+xz-lvv-empty-block-minver (from upstream)
+  Fix the version number printed by "xz -lvv" for files with Blocks
+  of zero uncompressed_size: the decoder bug preventing reading such
+  files was fixed in xz 5.0.2, not 5.0.3.
+
+decoder-check-first-0x00 (from upstream)
+  Check that the first byte of range encoded data is zero to catch
+  broken files sooner.
+
+Changes in 5.1.2alpha not applied:
+
+  Docs: Language fix to 01_compress_easy.c
+  xz: Add incomplete support for --block-list
+  INSTALL: Document --enable-symbol-versions
+  configure: Add a comment about *-linux tuples for clarity
+  TODO: Warn that threads and fork() do not mix well
+  Bump the version number and update NEWS for 5.1.2alpha
+
+LZMA Utils compatibility
+------------------------
+
+To support old scripts and muscle memory, XZ Utils can emulate the
+legacy LZMA Utils interface.  To use this feature, you can install some
+subset of the following list of symbolic links to your $PATH.
+
+	lzma, unlzma, lzcat -> /usr/bin/xz
+	lzgrep, lzegrep, lzfgrep -> /usr/bin/xzgrep
+	lzless -> /usr/bin/xzless
+	lzmore -> /usr/bin/xzmore
+	lzdiff, lzcmp -> /usr/bin/xzdiff
+
+If you would like XZ Utils to provide these commands by default for
+all users, use "update-alternatives --config lzma".
+
+Configuration
+-------------
+
+The memory usage of xz can vary from a few hundred kilobytes to several
+gigabytes depending on the compression settings.  If you would like xz
+to automatically scale down its settings while compressing to decrease
+memory usage, you can declare so by adding an option like the
+following to your environment (e.g., in ~/.profile):
+
+	XZ_DEFAULTS=--memlimit-compress=256MiB
+	export XZ_DEFAULTS
+
+See the "Memory usage" section of the xz(1) manual page for details.
+
+ -- Jonathan Nieder <jrnieder@gmail.com>  Mon, 10 Sep 2012 14:35:27 -0700
diff --git a/debian/xz-utils.docs b/debian/xz-utils.docs
new file mode 100644
index 0000000..463b710
--- /dev/null
+++ b/debian/xz-utils.docs
@@ -0,0 +1,7 @@
+README
+NEWS
+AUTHORS
+THANKS
+doc/history.txt
+doc/faq.txt
+extra
diff --git a/debian/xz-utils.install b/debian/xz-utils.install
new file mode 100644
index 0000000..9acbd88
--- /dev/null
+++ b/debian/xz-utils.install
@@ -0,0 +1,19 @@
+usr/bin/xz
+usr/bin/unxz
+usr/bin/xzcat
+usr/bin/xzmore
+usr/bin/xzless
+usr/bin/xzdiff
+usr/bin/xzcmp
+usr/bin/xz*grep
+usr/share/man/man1/xz.1
+usr/share/man/man1/unxz.1
+usr/share/man/man1/xzcat.1
+usr/share/man/man1/xzmore.1
+usr/share/man/man1/xzless.1
+usr/share/man/man1/xzdiff.1
+usr/share/man/man1/xzcmp.1
+usr/share/man/man1/xz*grep.1
+usr/bin/lzmainfo
+usr/share/man/man1/lzmainfo.1
+usr/share/locale/*/LC_MESSAGES/xz.mo
diff --git a/debian/xz-utils.postinst b/debian/xz-utils.postinst
new file mode 100644
index 0000000..a2cf46f
--- /dev/null
+++ b/debian/xz-utils.postinst
@@ -0,0 +1,19 @@
+#!/bin/sh
+set -e
+
+slave () {
+	dir=$1 filename=$2 target=$3
+	echo "--slave $dir/$filename $filename $dir/$target"
+}
+
+update-alternatives --install /usr/bin/lzma lzma /usr/bin/xz 20 $(
+	slave /usr/share/man/man1 lzma.1.gz xz.1.gz
+	slave /usr/bin unlzma unxz
+	slave /usr/share/man/man1 unlzma.1.gz unxz.1.gz
+	for util in cat more less diff cmp grep egrep fgrep
+	do
+		slave /usr/bin lz$util xz$util
+		slave /usr/share/man/man1 lz$util.1.gz xz$util.1.gz
+	done
+)
+#DEBHELPER#
diff --git a/debian/xz-utils.prerm b/debian/xz-utils.prerm
new file mode 100644
index 0000000..8dd3d8f
--- /dev/null
+++ b/debian/xz-utils.prerm
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+if
+	test "$1" != upgrade ||
+	# downgrading to a pre-alternatives version
+	dpkg --compare-versions "$2" lt-nl 5.1.1alpha+20120614-1
+then
+	update-alternatives --remove lzma /usr/bin/xz
+fi
+#DEBHELPER#
diff --git a/debian/xzdec.docs b/debian/xzdec.docs
new file mode 100644
index 0000000..7b5ff1f
--- /dev/null
+++ b/debian/xzdec.docs
@@ -0,0 +1,6 @@
+README
+NEWS
+AUTHORS
+THANKS
+doc/history.txt
+doc/faq.txt
diff --git a/debian/xzdec.install b/debian/xzdec.install
new file mode 100644
index 0000000..7f67bd8
--- /dev/null
+++ b/debian/xzdec.install
@@ -0,0 +1,4 @@
+usr/bin/xzdec
+usr/bin/lzmadec
+usr/share/man/man1/xzdec.1
+usr/share/man/man1/lzmadec.1
diff --git a/src/liblzma/common/common.c b/src/liblzma/common/common.c
index 28aa2b7..79427b0 100644
--- a/src/liblzma/common/common.c
+++ b/src/liblzma/common/common.c
@@ -12,6 +12,8 @@
 
 #include "common.h"
 
+#include <dlfcn.h>
+
 
 /////////////
 // Version //
@@ -162,6 +164,47 @@
 // External to internal API wrapper //
 //////////////////////////////////////
 
+#ifdef LIBLZMA2_COMPAT_DYNAMIC
+
+static void
+init_liblzma2_compat(lzma_stream *strm)
+{
+	void *handle = dlopen("liblzma.so.2", RTLD_LAZY | RTLD_NOLOAD);
+	if (handle) {
+		dlclose(handle);
+		strm->internal->liblzma2_compat = true;
+		return;
+	}
+	strm->internal->liblzma2_compat = false;
+}
+
+static bool
+liblzma2_loaded(lzma_stream *strm)
+{
+	return strm->internal->liblzma2_compat;
+}
+
+#else
+
+static void
+init_liblzma2_compat(lzma_stream *strm)
+{
+}
+
+#ifdef LIBLZMA2_COMPAT
+static bool liblzma2_loaded(lzma_stream *strm)
+{
+	return true;
+}
+#else
+static bool liblzma2_loaded(lzma_stream *strm)
+{
+	return false;
+}
+#endif
+
+#endif
+
 extern lzma_ret
 lzma_strm_init(lzma_stream *strm)
 {
@@ -175,6 +218,7 @@
 			return LZMA_MEM_ERROR;
 
 		strm->internal->next = LZMA_NEXT_CODER_INIT;
+		init_liblzma2_compat(strm);
 	}
 
 	memzero(strm->internal->supported_actions,
@@ -189,6 +233,24 @@
 }
 
 
+// Before v5.0.0~6 (liblzma: A few ABI tweaks to reserve space in
+// structures, 2010-10-23), the reserved fields in lzma_stream were:
+//
+//	void *reserved_ptr1;
+//	void *reserved_ptr2;
+//	uint64_t reserved_int1;
+//	uint64_t reserved_int2;
+//	lzma_reserved_enum reserved_enum1;
+//	lzma_reserved_enum reserved_enum2;
+//
+// Nowadays there are two more pointers between reserved_ptr2 and
+// reserved_int1 and two size_t fields between reserved_int2 and
+// reserved_enum1.
+//
+// When strm->internal->liblzma2_compat is set, limit the checks of
+// reserved fields to fields that were present in the old ABI to avoid
+// segfaults and spurious "Unsupported options" from callers sharing
+// the process image that expect the old ABI.
 extern LZMA_API(lzma_ret)
 lzma_code(lzma_stream *strm, lzma_action action)
 {
@@ -206,8 +268,12 @@
 	if (strm->reserved_ptr1 != NULL
 			|| strm->reserved_ptr2 != NULL
 			|| strm->reserved_ptr3 != NULL
-			|| strm->reserved_ptr4 != NULL
-			|| strm->reserved_int1 != 0
+			|| strm->reserved_ptr4 != NULL)
+		return LZMA_OPTIONS_ERROR;
+
+	if (liblzma2_loaded(strm))
+		; /* Enough checks. */
+	else if (strm->reserved_int1 != 0
 			|| strm->reserved_int2 != 0
 			|| strm->reserved_int3 != 0
 			|| strm->reserved_int4 != 0
diff --git a/src/liblzma/common/common.h b/src/liblzma/common/common.h
index 955d784..eb1d052 100644
--- a/src/liblzma/common/common.h
+++ b/src/liblzma/common/common.h
@@ -226,6 +226,12 @@
 	/// If true, lzma_code will return LZMA_BUF_ERROR if no progress was
 	/// made (no input consumed and no output produced by next.code).
 	bool allow_buf_error;
+
+#ifdef LIBLZMA2_COMPAT_DYNAMIC
+	/// Indicates whether we are sharing a process image with
+	/// liblzma.so.2 and need to tread carefully.
+	bool liblzma2_compat;
+#endif
 };