Bug#1065446: pristine-tar: fails if upstream tarball contains an empty directory
reassign 1065445 git-buildpackage retitle 1065445 git-buildpackage: --pristine-tar fails if upstream tarball contains an empty directory thanks (See below for explanation.) On Mon, Mar 04, 2024 at 09:20:02PM +, Julian Gilbey wrote: > On Mon, Mar 04, 2024 at 08:53:25PM +, Julian Gilbey wrote: > > Package: pristine-tar > > Version: 1.50+nmu1 > > Severity: normal > > > > I discovered that a package I was trying to use with pristine-tar > > failed to work. The cause of the issue seems to be that the upstream > > tarball contains an empty directory, which is lost when regenerated by > > pristine-tar. > > > > Steps to reproduce using git-buildpackage: > > 1. Import the attached minimal working example into git using the command: > >gbp import-dsc --pristine-tar foobar_1.0-1.dsc > > > > 2. Change into the build directory: > >cd foobar > > > > 3. Regenerate the original tar ball using pristine-tar, for example: > >gbp buildpackage -S > > > > 4. Return to the parent directory, then: > > > > $ tar ztf foobar_1.0.orig.tar.gz > > foobar-1.0/ > > foobar-1.0/foobar.c > > foobar-1.0/Makefile > > foobar-1.0/emptydir/ > > $ tar ztf build-area/foobar_1.0.orig.tar.gz > > foobar-1.0/ > > foobar-1.0/Makefile > > foobar-1.0/foobar.c > > > > Note the empty directory has disappeared. Also: > > > > $ ls -l foobar_1.0.orig.tar.gz build-area/foobar_1.0.orig.tar.gz > > -rw-r--r-- 1 jdg jdg 253 Mar 4 20:51 build-area/foobar_1.0.orig.tar.gz > > -rw-r--r-- 1 jdg jdg 193 Mar 4 20:00 foobar_1.0.orig.tar.gz > > > > Best wishes, > > > >Julian > > I forgot to attach the foobar package, here it is. > >Julian I checked pristine-tar directly on this example, and it turns out that it can handle this situation with no problem, as long as the directory tree has the empty directory present when pristine-tar gentar is called. The problem only emerges when git-buildpackage is being used, as in the example I gave in the original bug report. I presume that this problem arises because git does not record the presence of empty directories, so the resulting created tar file does not know about them either. Best wishes, Julian
Bug#1065446: pristine-tar: fails if upstream tarball contains an empty directory
Package: pristine-tar Version: 1.50+nmu1 Severity: normal I discovered that a package I was trying to use with pristine-tar failed to work. The cause of the issue seems to be that the upstream tarball contains an empty directory, which is lost when regenerated by pristine-tar. Steps to reproduce using git-buildpackage: 1. Import the attached minimal working example into git using the command: gbp import-dsc --pristine-tar foobar_1.0-1.dsc 2. Change into the build directory: cd foobar 3. Regenerate the original tar ball using pristine-tar, for example: gbp buildpackage -S 4. Return to the parent directory, then: $ tar ztf foobar_1.0.orig.tar.gz foobar-1.0/ foobar-1.0/foobar.c foobar-1.0/Makefile foobar-1.0/emptydir/ $ tar ztf build-area/foobar_1.0.orig.tar.gz foobar-1.0/ foobar-1.0/Makefile foobar-1.0/foobar.c Note the empty directory has disappeared. Also: $ ls -l foobar_1.0.orig.tar.gz build-area/foobar_1.0.orig.tar.gz -rw-r--r-- 1 jdg jdg 253 Mar 4 20:51 build-area/foobar_1.0.orig.tar.gz -rw-r--r-- 1 jdg jdg 193 Mar 4 20:00 foobar_1.0.orig.tar.gz Best wishes, Julian
Bug#1065446: pristine-tar: fails if upstream tarball contains an empty directory
On Mon, Mar 04, 2024 at 08:53:25PM +, Julian Gilbey wrote: > Package: pristine-tar > Version: 1.50+nmu1 > Severity: normal > > I discovered that a package I was trying to use with pristine-tar > failed to work. The cause of the issue seems to be that the upstream > tarball contains an empty directory, which is lost when regenerated by > pristine-tar. > > Steps to reproduce using git-buildpackage: > 1. Import the attached minimal working example into git using the command: >gbp import-dsc --pristine-tar foobar_1.0-1.dsc > > 2. Change into the build directory: >cd foobar > > 3. Regenerate the original tar ball using pristine-tar, for example: >gbp buildpackage -S > > 4. Return to the parent directory, then: > > $ tar ztf foobar_1.0.orig.tar.gz > foobar-1.0/ > foobar-1.0/foobar.c > foobar-1.0/Makefile > foobar-1.0/emptydir/ > $ tar ztf build-area/foobar_1.0.orig.tar.gz > foobar-1.0/ > foobar-1.0/Makefile > foobar-1.0/foobar.c > > Note the empty directory has disappeared. Also: > > $ ls -l foobar_1.0.orig.tar.gz build-area/foobar_1.0.orig.tar.gz > -rw-r--r-- 1 jdg jdg 253 Mar 4 20:51 build-area/foobar_1.0.orig.tar.gz > -rw-r--r-- 1 jdg jdg 193 Mar 4 20:00 foobar_1.0.orig.tar.gz > > Best wishes, > >Julian I forgot to attach the foobar package, here it is. Julian Format: 3.0 (quilt) Source: foobar Binary: foobar Architecture: any Version: 1.0-1 Maintainer: Julian Gilbey Homepage: Standards-Version: 4.6.2 Build-Depends: debhelper-compat (= 13) Package-List: foobar deb unknown optional arch=any Checksums-Sha1: 0e2d40b683cd46506364ff326fd7990addcde812 193 foobar_1.0.orig.tar.gz 406c92cd201f9a00f15d6f74cfa04ea2b9ac9501 2024 foobar_1.0-1.debian.tar.xz Checksums-Sha256: 19388ac41515a84a018cf030561f6664a50339ea68db874c470491b18c9bc9cb 193 foobar_1.0.orig.tar.gz bfe8513364dcbe2e7b9a44c6436bf0a48ff482105f5414a852eda8190712e543 2024 foobar_1.0-1.debian.tar.xz Files: c111a679204eda05e4cac4997d0c3dfd 193 foobar_1.0.orig.tar.gz 846524b08e24b0b5b0af3401eaf58e7c 2024 foobar_1.0-1.debian.tar.xz foobar_1.0-1.debian.tar.xz Description: application/xz foobar_1.0.orig.tar.gz Description: application/gzip