Bug#960507: debian-cd: undefined $size_check causes 'make image-trees' to fail
Package: debian-cd
Version: 3.1.25
Severity: normal
Tags: d-i newcomer patch
Dear Maintainer,
* What led up to the situation?
Making a custom sized iso for writing to an extra large BluRay disk (up
to 100gb)
* What exactly did you do (or not do) that was effective (or ineffective)?
I set the following properties in CONF.sh
export NONFREE=1
export FORCE_FIRMWARE=1
export DISKTYPE=CUSTOM
export CUSTOMSIZE=47304704
CONF.sh
make distclean
make status
make packagelists TASK=Debian-generic COMPLETE=1
make image-trees
* What was the outcome of this action?
This failed with:
----
Done: read 647 entries for 1 languages
Starting to lay out packages into images:
Can't exec "/home/steve/debian-cd/tmp/buster/CD1": Permission denied at /home/steve/debian-cd/tools/make_disc_trees.pl line 284, <INLIST> line 75939.
Use of uninitialized value $size in scalar chomp at /home/steve/debian-cd/tools/make_disc_trees.pl line 285, <INLIST> line 75939.
Use of uninitialized value $size in concatenation (.) or string at /home/steve/debian-cd/tools/make_disc_trees.pl line 286, <INLIST> line 75939.
----
This error is because $size_check` is an empty string, as definied on line 1485 in make_disc_trees.pl:
my $size_check = "";
When like 916 is executed it tries to execute the contents of $cddir which is a directory:
$size = `$size_check $cddir`;
To fix this a copied the definition of $size_check from line 1485:
$size_check = "$mkisofs_check $mkisofs_opts $mkisofs_dirs";
to before line 916. Re-running these commands now works as expected:
make distclean
make status
make packagelists TASK=Debian-generic COMPLETE=1
make image-trees
I don't pretend to understand the code, but the same problem might exist elsewhere, e.g. line 284.
I created a diff like this:
$ diff -u make_disc_trees.pl.orig make_disc_trees.pl
--- make_disc_trees.pl.orig 2020-05-12 18:44:16.036773037 +0200
+++ make_disc_trees.pl 2020-05-12 18:44:16.068771699 +0200
@@ -913,6 +913,7 @@
$error == 0 || die "DISC_END_HOOK failed with error $error\n";
}
+ $size_check = "$mkisofs_check $mkisofs_opts $mkisofs_dirs";
$size = `$size_check $cddir`;
chomp $size;
$bytes = $size * $blocksize;
I hope this is of some use and apologise if I've omitted useful information or it's user error.
Cheers,
Steve
-- System Information:
Debian Release: 10.2
APT prefers stable
APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.19.0-6-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages debian-cd depends on:
ii apt 1.8.2
ii bc 1.07.1-2+b1
ii bzip2 1.0.6-9.2~deb10u1
ii cpp 4:8.3.0-1
ii curl 7.64.0-4+deb10u1
ii dctrl-tools [grep-dctrl] 2.24-3
ii dpkg-dev 1.19.7
ii genisoimage 9:1.1.11-3+b2
pn libcompress-zlib-perl <none>
pn libdigest-md5-perl <none>
ii libdpkg-perl 1.19.7
ii lynx 2.8.9rel.1-3
ii make 4.2.1-1.2
ii perl [libdigest-sha-perl] 5.28.1-6
ii tofrodos 1.7.13+ds-4
ii wget 1.20.1-1.1
ii xorriso 1.5.0-1
Versions of packages debian-cd recommends:
ii dosfstools 4.1-2
ii hfsutils 3.2.6-14
ii isolinux 3:6.04~git20190206.bf6db5b4+dfsg1-1
ii mtools 4.0.23-1
ii netpbm 2:10.0-15.3+b2
ii syslinux-common 3:6.04~git20190206.bf6db5b4+dfsg1-1
ii syslinux-utils 3:6.04~git20190206.bf6db5b4+dfsg1-1
debian-cd suggests no packages.
-- Configuration Files:
/etc/debian-cd/conf.sh changed:
if [ "$DEBIAN_CD_CONF_SOURCED" = true ]; then
return 0
fi
unset NONFREE || true
unset CONTRIB || true
unset EXTRANONFREE || true
unset LOCAL || true
unset LOCALDEBS || true
unset SECURITY || true
unset PROPOSED_UPDATES || true
unset UNRELEASED || true
unset BOOTDIR || true
unset SYMLINK || true
unset COPYLINK || true
unset MKISOFS || true
unset MKISOFS_OPTS || true
unset ISOLINUX || true
unset EXCLUDE || true
unset NORECOMMENDS || true
unset NOSUGGESTS || true
unset IMAGESUMS || true
unset JIGDOTEMPLATEURL || true
unset JIGDOFALLBACKURLS || true
unset JIGDOINCLUDEURLS || true
unset JIGDOSCRIPT || true
unset JIGDO_OPTS || true
unset PUBLISH_URL || true
unset PUBLISH_PATH || true
unset UDEB_INCLUDE || true
unset UDEB_EXCLUDE || true
unset BASE_INCLUDE || true
unset BASE_EXCLUDE || true
unset INSTALLER_CD || true
unset MAXCDS || true
unset MAXISOS || true
unset MAXJIGDOS || true
unset SPLASHPNG || true
unset OMIT_MANUAL || true
unset OMIT_RELEASE_NOTES || true
unset OMIT_DOC_TOOLS || true
unset MAX_PKG_SIZE || true
unset DEBOOTSTRAP_OPTS || true
unset ARCHIVE_KEYRING_PACKAGE || true
unset ARCHIVE_KEYRING_FILE || true
export BASEDIR=`pwd`
export CODENAME=buster
if [ -z "$DI_CODENAME" ]; then
export DI_CODENAME=$CODENAME
fi
export DEBVERSION="10.0.0"
export OFFICIAL="Unofficial"
if [ -z "$ARCHES" ]; then
CPU=`dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null || true`
if [ -z "$CPU" ]; then
CPU=`dpkg-architecture -qDEB_HOST_ARCH`
fi
KERNEL=`dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null || true`
if [ -z "$KERNEL" ]; then
KERNEL=linux
fi
if [ $KERNEL = linux ] ; then
ARCHES=$CPU
else
ARCHES="$KERNEL-$CPU"
fi
export ARCHES
fi
export MIRROR=/srv/mirror/debian
export TDIR=/srv/mirror/tmp
export OUT=/srv/mirror/debian-cd-test
export APTTMP=/srv/mirror/tmp/apt
export NONFREE=1
export CONTRIB=1
export FORCE_FIRMWARE=1
export ISOLINUX=1
export MAX_PKG_SIZE=600000000
ATTEMPT_FALLBACK=yes
export DISKTYPE=CUSTOM
export CUSTOMSIZE=47304704
export VARIANTS=
export IMAGESUMS=1
export JIGDOINCLUDEURLS="http://cdimage.debian.org/debian-cd/debian-servers.jigdo"
export PUBLISH_URL="http://cdimage.debian.org/jigdo-area"
export PUBLISH_PATH="/home/jigdo-area/"
export JIGDO_EXCLUDE="'README*' /doc/ /md5sum.txt /.disk/ /pics/ 'Release*' 'Packages*' 'Sources*'"
export JIGDO_INCLUDE="/pool/"
export JIGDO_OPTS="-jigdo-min-file-size 1024"
for EXCL in $JIGDO_EXCLUDE; do
JIGDO_OPTS="$JIGDO_OPTS -jigdo-exclude $EXCL"
done
for INCL in $JIGDO_INCLUDE; do
JIGDO_OPTS="$JIGDO_OPTS -jigdo-force-md5 $INCL"
done
export SNAPURL=Debian=http://snapshot.debian.org/archive/debian/SNAPDATETIME/
export OMIT_RELEASE_NOTES=1
case "$OFFICIAL" in
"Official")
export OFFICIAL_VAL=2
;;
"Official Beta")
export OFFICIAL_VAL=1
;;
*)
export OFFICIAL_VAL=0
;;
esac
if [ -d "/etc/ssl/ca-debian" ]; then
export WGET_OPTS="--ca-directory /etc/ssl/ca-debian/"
fi
export WGET="wget $WGET_OPTS"
-- no debconf information
Reply to: