diff -ur mercurial-buildpackage-0.9.orig/MercurialBuildPackage.hx mercurial-buildpackage-0.9/MercurialBuildPackage.hx
--- mercurial-buildpackage-0.9.orig/MercurialBuildPackage.hx	2010-07-24 10:50:01.000000000 +0100
+++ mercurial-buildpackage-0.9/MercurialBuildPackage.hx	2012-02-05 00:57:01.381029585 +0000
@@ -129,7 +129,7 @@
 		// Check existance of an upstream main tarball.
 		var mainTarballStem = "../" + changeLog.source + "_" +
 			changeLog.version.upstream + ".orig.tar.";
-		for( extension in ["gz","bz2","lzma"] )
+		for( extension in ["gz","bz2","lzma","xz"] )
 		{
 			var tarball = mainTarballStem + extension;
 			if( FileUtil.fileExists( tarball ) )
@@ -140,7 +140,7 @@
 		}
 		Util.dies
 		( [
-			"No upstream tarball " + mainTarballStem  + "{gz,bz2,lzma} located.",
+			"No upstream tarball " + mainTarballStem  + "{gz,bz2,lzma,xz} located.",
 			"Use " + Constants.pristineTar() + " to extract the tarball(s)."
 		] );
 	}
diff -ur mercurial-buildpackage-0.9.orig/MercurialImportDsc.hx mercurial-buildpackage-0.9/MercurialImportDsc.hx
--- mercurial-buildpackage-0.9.orig/MercurialImportDsc.hx	2010-07-24 10:50:01.000000000 +0100
+++ mercurial-buildpackage-0.9/MercurialImportDsc.hx	2012-02-05 00:57:01.382030169 +0000
@@ -193,7 +193,7 @@
 		}
 		else if( format == "3.0 (native)" )
 		{
-			var origRegExp = ~/ ([^ ]+\.tar\.(gz|bz2|lzma))$/m;
+			var origRegExp = ~/ ([^ ]+\.tar\.(gz|bz2|lzma|xz))$/m;
 			if( origRegExp.match( dsc ) )
 			{
 				var ball = origRegExp.matched( 1 );
@@ -204,7 +204,7 @@
 		else if( format == "3.0 (quilt)" )
 		{
 			// Find the debian diff.
-			var diffRegExp = ~/ ([^ ]+\.debian\.tar\.(gz|bz2|lzma))$/m;
+			var diffRegExp = ~/ ([^ ]+\.debian\.tar\.(gz|bz2|lzma|xz))$/m;
 			if( ! diffRegExp.match( dsc ) )
 			{
 				Util.die( "No debian diff in dsc file." );
@@ -212,7 +212,7 @@
 			diff = diffRegExp.matched( 1 );
 			info( 1, "Debian tarball " + diff );
 			// Find the main tarball.
-			var mainRegExp = ~/ ([^ ]+\.orig\.tar\.(gz|bz2|lzma))$/m;
+			var mainRegExp = ~/ ([^ ]+\.orig\.tar\.(gz|bz2|lzma|xz))$/m;
 			if( mainRegExp.match( dsc ) )
 			{
 				var main = mainRegExp.matched( 1 );
@@ -223,7 +223,7 @@
 				while( searchable.length > 0 )
 				{
 					var componentRegExp =
-					~/ ([^ ]+\.orig-[A_Za-z0-9][-A_Za-z0-9]*\.tar\.(gz|bz2|lzma))$/m;
+					~/ ([^ ]+\.orig-[A_Za-z0-9][-A_Za-z0-9]*\.tar\.(gz|bz2|lzma|xz))$/m;
 					if( componentRegExp.match( searchable ) )
 					{
 						var ball = componentRegExp.matched( 1 );
diff -ur mercurial-buildpackage-0.9.orig/MercurialImportOrig.hx mercurial-buildpackage-0.9/MercurialImportOrig.hx
--- mercurial-buildpackage-0.9.orig/MercurialImportOrig.hx	2010-08-06 23:29:01.000000000 +0100
+++ mercurial-buildpackage-0.9/MercurialImportOrig.hx	2012-02-05 00:57:01.383030753 +0000
@@ -507,7 +507,7 @@
 		}
 		// The names of tarballs must follow Debian conventions of dpkg format
 		// 3.0 (quilt).
-		var ballRegExp = ~/([^\/]+)_(.+)\.orig\.tar\.(bz2|lzma|gz)$/;
+		var ballRegExp = ~/([^\/]+)_(.+)\.orig\.tar\.(bz2|lzma|xz|gz)$/;
 		if( ! ballRegExp.match( origs[0] ) )
 		{
 			Util.die( "Filename of main tarball must follow the pattern defined by dpkg format 3.0." );
@@ -527,7 +527,7 @@
 		components.push( { component: ".", tarball: origs[0] } );
 		// Process additional tarball components, if any.
 		var componentRegExp =
-		~/([^\/]+)_(.*)\.orig-([a-z0-9][-a-z0-9]*)\.tar\.(bz2|lzma|gz)$/i;
+		~/([^\/]+)_(.*)\.orig-([a-z0-9][-a-z0-9]*)\.tar\.(bz2|lzma|xz|gz)$/i;
 		for( i in 1...origs.length )
 		{
 			if( ! componentRegExp.match( origs[i] ) )
diff -ur mercurial-buildpackage-0.9.orig/MercurialPristineTar.man mercurial-buildpackage-0.9/MercurialPristineTar.man
--- mercurial-buildpackage-0.9.orig/MercurialPristineTar.man	2009-12-23 15:43:02.000000000 +0000
+++ mercurial-buildpackage-0.9/MercurialPristineTar.man	2012-02-05 00:57:01.384031337 +0000
@@ -32,8 +32,8 @@
 .HP
 \fB{PristineTar}\fR 1.2.3
 .IP
-Create pristine ../mypack_1.2.3.orig.tar.{gz,bz2,lzma} and
-\&../mypack_1.2.3.orig-component*.tar.{gz,bz2,lzma} if applicable from the
+Create pristine ../mypack_1.2.3.orig.tar.{gz,bz2,lzma,xz} and
+\&../mypack_1.2.3.orig-component*.tar.{gz,bz2,lzma,xz} if applicable from the
 repository in the current directory.
 
 .SH BUGS
diff -ur mercurial-buildpackage-0.9.orig/Pristine.hx mercurial-buildpackage-0.9/Pristine.hx
--- mercurial-buildpackage-0.9.orig/Pristine.hx	2009-12-02 21:50:06.000000000 +0000
+++ mercurial-buildpackage-0.9/Pristine.hx	2012-02-05 00:57:01.384031337 +0000
@@ -24,7 +24,7 @@
 	// The xdelta patch file to make the recreated tarball identical to the
 	// original tarball.
 	public var tarballDelta (default,null) : String;
-	// One of gz, bz2, or lzma.
+	// One of gz, bz2, lzma or xz.
 	public var compression (default,null) : String;
 	// The pristine-{gz,bz2} patch file to compress the patched, recreated
 	// tarball the same way as the original, compressed tarball.
diff -ur mercurial-buildpackage-0.9.orig/Util.hx mercurial-buildpackage-0.9/Util.hx
--- mercurial-buildpackage-0.9.orig/Util.hx	2010-07-24 10:50:01.000000000 +0100
+++ mercurial-buildpackage-0.9/Util.hx	2012-02-05 01:02:07.909949446 +0000
@@ -196,6 +196,7 @@
 		var gz = ~/\.gz$/;
 		var bz = ~/\.bz2$/;
 		var lzma = ~/\.lzma$/;
+		var xz = ~/\.xz$/;
 		if( gz.match( source ) )
 		{
 			unpack = new Process
@@ -217,6 +218,13 @@
 				"sh", ["-c","lzma -d -c "+source+" > "+target]
 			);
 		}
+		else if( xz.match( source ) )
+		{
+			unpack = new Process
+			(
+				"sh", ["-c","xz -d -c "+source+" > "+target]
+			);
+		}
 		else
 		{
 			writeError( "Do not know how to uncompress " + source + "." );
@@ -244,6 +252,7 @@
 		var gz = ~/\.gz$/;
 		var bz = ~/\.bz2$/;
 		var lzma = ~/\.lzma$/;
+		var xz = ~/\.xz$/;
 		if( gz.match( source ) )
 		{
 			pristine = new Process
@@ -264,6 +273,13 @@
 			writeWarning( "See pristine-tar manual." );
 			pristine = new Process( "touch", [target] );
 		}
+		else if( xz.match( source ) )
+		{
+			pristine = new Process
+			(
+				"pristine-xz", ["gendelta",source,target]
+			);
+		}
 		else
 		{
 			writeError( "Do not know how to handle " + source );
@@ -311,6 +327,12 @@
 				(
 					"sh", ["-c","lzma -c "+source+" > "+source+".lzma"]
 				);
+			case "xz":
+				writeWarning( "Cannot guarantee pristine xz files." );
+				pristine = new Process
+				(
+					"pristine-xz", ["genxz",delta,source]
+				);
 			default:
 				writeError( "Do not know how to handle " + extension );
 				return false;
@@ -336,6 +358,7 @@
 		var tgz = ~/\.tar\.gz$/;
 		var tbz = ~/\.tar\.bz2$/;
 		var tlzma = ~/\.tar\.lzma$/;
+		var txz = ~/\.tar\.xz$/;
 		if( tgz.match( tarball ) )
 		{
 			unpack = new Process( "tar", ["xCfz",directory,tarball] );
@@ -351,6 +374,13 @@
 				"tar", ["xC",directory,"--lzma","-f",tarball]
 			);
 		}
+		else if( txz.match( tarball ) )
+		{
+			unpack = new Process
+			(
+				"tar", ["xC",directory,"--xz","-f",tarball]
+			);
+		}
 		else
 		{
 			writeError( "Do not know how to unpack " + tarball + "." );
diff -ur mercurial-buildpackage-0.9.orig/debian/control mercurial-buildpackage-0.9/debian/control
--- mercurial-buildpackage-0.9.orig/debian/control	2010-08-06 23:47:00.000000000 +0100
+++ mercurial-buildpackage-0.9/debian/control	2012-02-05 01:03:34.965724010 +0000
@@ -8,7 +8,7 @@
 
 Package: mercurial-buildpackage
 Architecture: any
-Depends: mercurial, devscripts, pristine-tar, neko, ${shlibs:Depends}, ${misc:Depends}
+Depends: mercurial, devscripts, pristine-tar (>= 1.18), neko, ${shlibs:Depends}, ${misc:Depends}
 Recommends: sudo, pbuilder
 Suggests: quilt
 Description: Suite to maintain Debian packages in Mercurial repository
