Package: game-data-packager Version: 33 Severity: normal Tags: patch "game-data-packager quake" doesn't seem to support the retail Quake v1.06 CDROM that I have.
The attached patches add that support, and also fix a bug in the related tempfile cleanup code. -- System Information: Debian Release: jessie/sid APT prefers testing APT policy: (500, 'testing'), (1, 'experimental'), (1, 'unstable') Architecture: amd64 (x86_64) Foreign Architectures: armel i386 Kernel: Linux 3.9-1-amd64 (SMP w/8 CPU cores) Locale: LANG=en_CA.utf8, LC_CTYPE=en_CA.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages game-data-packager depends on: ii dynamite 0.1.1-2 ii fakeroot 1.18.4-2 ii p7zip-full 9.20.1~dfsg.1-4 ii unzip 6.0-9 game-data-packager recommends no packages. Versions of packages game-data-packager suggests: ii jlha-utils 0.1.6-3 pn lgc-pg <none> -- no debconf information
>From 727689affd5bb0ec9cb332f69103d68012da7fd4 Mon Sep 17 00:00:00 2001 From: Dwayne Litzenberger <dl...@dlitz.net> Date: Sun, 4 Aug 2013 03:41:33 -0700 Subject: [PATCH 2/3] quake: add support for v1.06 CDROM --- supported/quake | 55 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/supported/quake b/supported/quake index a49359c..3f08362 100644 --- a/supported/quake +++ b/supported/quake @@ -90,7 +90,7 @@ guess_method() { debug "treating $mountpoint like an installed directory" method="dir" dir_method - elif [ -f "$mountpoint/q101_int.1" ]; then + elif [ -f "$mountpoint/q101_int.1" ] || [ -f "$mountpoint/resource.1" ]; then debug "treating $mountpoint like a CD-ROM" method="cdrom" cdrom_method @@ -130,24 +130,41 @@ may not work correctly." } cdrom_method() { - bit1="$mountpoint/q101_int.1" - bit2="$mountpoint/q101_int.2" - bit1sum=752f49131bb3ba832346e873c1bcfdc6 - bit2sum=9ed67b39020575771e29645d977c9216 - - require_lha - verify_file "$bit1" - verify_file "$bit2" - verify_md5sum "$bit1" "$bit1sum" - verify_md5sum "$bit2" "$bit2sum" - - cat "$bit1" "$bit2" > "$WORKDIR/unpackme.exe" - ( - cd "$WORKDIR" - lha xq unpackme.exe - rm unpackme.exe - ) - + if [ -f "$mountpoint/q101_int.1" ] ; then + # Quake 1.01 CD + bit1="$mountpoint/q101_int.1" + bit2="$mountpoint/q101_int.2" + bit1sum=752f49131bb3ba832346e873c1bcfdc6 + bit2sum=9ed67b39020575771e29645d977c9216 + + require_lha + verify_file "$bit1" + verify_file "$bit2" + verify_md5sum "$bit1" "$bit1sum" + verify_md5sum "$bit2" "$bit2sum" + + cat "$bit1" "$bit2" > "$WORKDIR/unpackme.exe" + ( + cd "$WORKDIR" + lha xq unpackme.exe + rm unpackme.exe + ) + elif [ -f "$mountpoint/resource.1" ] ; then + # Quake 1.06 registered retail cdrom + resource1="$mountpoint/resource.1" + resource1sum=959e4bd69d817ee0cbea6ddbf4f3af37 + + require_lha + verify_file "$resource1" + verify_md5sum "$resource1" "$resource1sum" + ( + cd "$WORKDIR" + lha xq "$resource1" "ID1/PAK0.PAK" "ID1/PAK1.PAK" + ) + else + die "BUG: cdrom_method called with missing archive" + fi + pak0="$WORKDIR/id1/pak0.pak" if ! test -f "$pak0"; then pak0="$WORKDIR/ID1/PAK0.PAK" -- 1.8.3.2
>From 89db06398c96b6aeaeb803f745f9938abae4f057 Mon Sep 17 00:00:00 2001 From: Dwayne Litzenberger <dl...@dlitz.net> Date: Sun, 4 Aug 2013 04:21:05 -0700 Subject: [PATCH 3/3] quake: Fix tempfile cleanup - $WORKDIR/pak1.pak wasn't being removed (because it was a symlink) - the uppercase ID1 directory was not getting cleaned up We were getting this warning: rmdir: failed to remove `/tmp/game-data-packager.ikZf91': Directory not empty rmdir: failed to remove `/tmp/game-data-packager.ikZf91': Directory not empty --- supported/quake | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/supported/quake b/supported/quake index 3f08362..678862c 100644 --- a/supported/quake +++ b/supported/quake @@ -266,7 +266,14 @@ common_method() { slipstream "$OUTFILE" "usr/share/games/quake/${folder}" \ "$WORKDIR/pak0.pak" "$WORKDIR/pak1.pak" fi - [ -d "$WORKDIR/${folder}" ] && rm -rf "$WORKDIR/${folder}" - [ ! -f "$WORKDIR/pak1.pak" ] || rm "$WORKDIR/pak1.pak" + + # clean up + if [ -d "$WORKDIR/${folder}" ] ; then + rm -rf "$WORKDIR/${folder}" + elif [ -d "$WORKDIR/`echo "${folder}" | tr a-z A-Z`" ] ; then + # Remove uppercase version of our directory + rm -rf "$WORKDIR/`echo "${folder}" | tr a-z A-Z`" + fi + [ ! -h "$WORKDIR/pak1.pak" ] || rm "$WORKDIR/pak1.pak" rm "$WORKDIR/pak0.pak" } -- 1.8.3.2