On Fri, 31 Jan 2020 06:28:07 +0100 Johannes Schauer wrote:

[...]
> Quoting Francesco Poli (2020-01-30 23:41:11)
[...]
> > Wait, does this change the result?
[...]
> in your case, TMPDIR was a relative path.
[...]
> Your expectation was, that when you set TMPDIR, the only one who would consume
> that environment variable would be mmdebstrap itself. I think that thought is
> not unreasonable. That's why I think it's important that mmdebstrap unsets 
> that
> variable before it executes processes inside the chroot.

All your reasoning makes sense to me.
I agree that TMPDIR should be unset by mmdebstrap before running hooks.

I tried to check that the resulting .tar file is not affected by this
TMPDIR unsetting.
I did the following:

  $ cat ABSTMPDIR/test.sh 
  #!/bin/sh
  
  SETUP_TESTBED="/usr/share/autopkgtest/setup-commands/setup-testbed"
  
  LIMAVAR="amd64"
  SUITE="sid"  
  SIZE="2GiB"
  
  TMPDIR=$(pwd)
  export TMPDIR
  mmdebstrap --variant=important --include=linux-image-"$LIMAVAR" \
    --customize-hook='chroot "$1" passwd --delete root' \
    --customize-hook='chroot "$1" useradd --home-dir /home/user --create-home 
user' \
    --customize-hook='chroot "$1" passwd --delete user' \
    --customize-hook='echo host > "$1/etc/hostname"' \
    --customize-hook='echo "127.0.0.1 localhost host" > "$1/etc/hosts"' \
    --customize-hook="$SETUP_TESTBED" \
    "$SUITE" debian-unstable.tar
  $ cat NOTMPDIR/test.sh 
  #!/bin/sh
  
  SETUP_TESTBED="/usr/share/autopkgtest/setup-commands/setup-testbed"
  
  LIMAVAR="amd64"
  SUITE="sid"  
  SIZE="2GiB"
  
  TMPDIR='.'
  export TMPDIR
  mmdebstrap --variant=important --include=linux-image-"$LIMAVAR" \
    --customize-hook='chroot "$1" passwd --delete root' \
    --customize-hook='chroot "$1" useradd --home-dir /home/user --create-home 
user' \
    --customize-hook='chroot "$1" passwd --delete user' \
    --customize-hook='echo host > "$1/etc/hostname"' \
    --customize-hook='echo "127.0.0.1 localhost host" > "$1/etc/hosts"' \
    --customize-hook='env --unset=TMPDIR 
/usr/share/autopkgtest/setup-commands/setup-testbed "$1"' \
    "$SUITE" debian-unstable.tar

After running the two test.sh scripts within their respective
directories, I used diffoscope to highlight the differences between the
two resulting .tar files:

  $ TMPDIR=/run/shm diffoscope \
     --max-diff-block-lines 15000 \
     --max-page-diff-block-lines 1500 \
     --html report_diffoscope.html \
     ABSTMPDIR/debian-unstable.tar \
      NOTMPDIR/debian-unstable.tar

The only differences shown in the resulting report_diffoscope.html file
seem to be:

  • the generated files in the content
    of ./boot/initrd.img-5.4.0-3-amd64 have differing creation
    timestamps (but this is obvious, since the two initrd were not
    created exactly at the same time!)

  • ./var/lib/initramfs-tools/5.4.0-3-amd64 files differ (but they seem
    to include some checksum of the initrd, hence the difference should
    be consequence of the first point)

  • ./etc/machine-id and ./var/lib/dbus/machine-id files differ (but I
    think this should not be surprising...)

  • ./usr/lib/python3.7/__pycache__/hashlib.cpython-37.pyc files have
    some different hex values (I am not sure why, but it's compiled
    Python code, maybe it includes a compilation timestamp or
    something?!?)

I am under the impression that the two .tar files are to be considered
equivalent.
Do you agree?



P.S.: I still have to find the time to check the .qcow2 file I obtained
on last Wednesday...   :-(

-- 
 http://www.inventati.org/frx/
 There's not a second to spare! To the laboratory!
..................................................... Francesco Poli .
 GnuPG key fpr == CA01 1147 9CD2 EFDF FB82  3925 3E1C 27E1 1F69 BFFE

Attachment: pgpbwUbL69RDJ.pgp
Description: PGP signature

Reply via email to