Bug#1065446: pristine-tar: fails if upstream tarball contains an empty directory

2024-03-05 Thread Julian Gilbey
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

2024-03-04 Thread Julian Gilbey
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

2024-03-04 Thread Julian Gilbey
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