Browse Source

DMGs produced are now compressed \o \o \o

Issue 954


git-svn-id: http://svn.dmdirc.com/trunk@4164 00569f92-eb28-0410-84fd-f71c24880f
tags/0.6
Shane Mc Cormack 16 years ago
parent
commit
11cbfa7918
1 changed files with 21 additions and 111 deletions
  1. 21
    111
      installer/osx/makeInstallerOSX.sh

+ 21
- 111
installer/osx/makeInstallerOSX.sh View File

@@ -40,10 +40,6 @@ LINUXIMAGEDIR=${PWD}/dmg
40 40
 # ${LINUXIMAGE} ${LINUXIMAGEDIR} auto users,noauto,loop 0 0
41 41
 
42 42
 MKISOFS=`which mkisofs`
43
-MKISOFS_WORKS="0"
44
-PREFER_MKISOFS="1"
45
-MKHFS=`which mkfs.hfs`
46
-MKHFSPLUS=`which mkfs.hfsplus`
47 43
 HDIUTIL=`which hdiutil`
48 44
 
49 45
 JNIName="libDMDirc-Apple.jnilib"
@@ -62,22 +58,12 @@ if [ ! -e "${JNIName}" ]; then
62 58
 	fi;
63 59
 fi;
64 60
 
65
-USE_MKISOFS="0"
66
-if [ "" != "${MKISOFS}" ]; then
67
-	MKISOFS_TEST=`${MKISOFS} --help 2>&1 | grep apple`
68
-	if [ "" != "${MKISOFS_TEST}" ]; then
69
-		MKISOFS_WORKS="1"
70
-		USE_MKISOFS="${PREFER_MKISOFS}"
71
-	fi;
72
-fi
73
-
74 61
 if [ "" = "${HDIUTIL}" ]; then
75
-	if [ "" = "${MKHFS}" -a "" = "${MKHFSPLUS}" ]; then
76
-		if [ "1" != "${MKISOFS_WORKS}" ]; then
62
+	if [ "" != "${MKISOFS}" ]; then
63
+		MKISOFS_TEST=`${MKISOFS} --help 2>&1 | grep apple`
64
+		if [ "" = "${MKISOFS_TEST}" ]; then
77 65
 			echo "This machine is unable to produce dmg images. Aborting."
78 66
 			exit 1;
79
-		else
80
-			USE_MKISOFS="1"
81 67
 		fi;
82 68
 	fi;
83 69
 fi;
@@ -382,99 +368,25 @@ if [ "" = "${HDIUTIL}" ]; then
382 368
 	fi;
383 369
 
384 370
 	# Non-OSX
385
-	# This doesn't work quite aswell as on OSX, but it works.
386
-	IMGBLOCKSIZE=4096 # OSX Default = 4096
387
-	MVRES=0
388
-	createImage() {
389
-		if [ "1" = "${USE_MKISOFS}" ]; then
390
-			# http://lists.apple.com/archives/java-dev/2008/Mar/msg00266.html
391
-			
392
-			${MKISOFS} -V 'DMDirc' -no-pad -r -z -apple -o "${LINUXIMAGE}" -hfs-creator "DMDI" -hfs-bless "/Volumes/DMDirc" "${DMG}"
393
-		else
394
-			MVRES=0
395
-			SIZE=${1}
396
-			if [ "" = "${MKHFS}" -a "" != "${MKHFSPLUS}" ]; then
397
-				MKHFS=${MKHFSPLUS}
398
-			fi;
399
-			# mkfs.hfs will only create 512kb+ sized images
400
-			if [ ${SIZE} -lt 524288 ]; then
401
-				echo "Size is less than 512kb"
402
-				SIZE=524288;
403
-			fi;
404
-			dd if=/dev/zero of=${LINUXIMAGE} bs=${SIZE} count=1
405
-			${MKHFS} -b ${IMGBLOCKSIZE} -v 'DMDirc' ${LINUXIMAGE}
406
-			if [ ${?} -ne 0 ]; then
407
-				echo "mkfs.hfs failed to create the image, aborting."
408
-				exit 1;
409
-			fi;
410
-			# Now try and mount
411
-			# This could be a problem, as linux requires either root to mount, or an fstab
412
-			# entry.
413
-			# Try to mount, if this fails, let the user know what to add to fstab.
414
-			if [ -e ${LINUXIMAGEDIR} ]; then
415
-				rm -Rf ${LINUXIMAGEDIR}
416
-			fi;
417
-			mkdir ${LINUXIMAGEDIR}
418
-			mount ${LINUXIMAGEDIR}
419
-			MOUNTRES=${?}
420
-			if [ ${MOUNTRES} -ne 0 ]; then
421
-				# Try using full parameters - could be running as root.
422
-				mount -t hfsplus -o loop ${RUNNAME} ${LINUXIMAGEDIR}
423
-				MOUNTRES=${?}
424
-			fi;
425
-			if [ ${MOUNTRES} -ne 0 ]; then
426
-				echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
427
-				echo "@                               ERROR                               @"
428
-				echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
429
-				echo "You do not have permission to mount the image."
430
-				echo "Please add the following lines to /etc/fstab and re run this script again"
431
-				echo "# DMDirc OSX dmg image"
432
-				echo "${LINUXIMAGE} ${LINUXIMAGEDIR} auto users,noauto,loop 0 0"
433
-				echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
434
-				echo "@                               ERROR                               @"
435
-				echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
436
-				exit 1;
437
-			fi;
438
-			mv -fv ${DMG}/* ${LINUXIMAGEDIR}
439
-			MVRES=${?}
440
-			if [ ${MVRES} -ne 0 ]; then
441
-				echo "Image incorrect size."
442
-			else
443
-				mv -fv ${DMG}/.[A-Za-z]* ${LINUXIMAGEDIR}
444
-				MVRES=${?}
445
-				if [ ${MVRES} -ne 0 ]; then
446
-					echo "Image incorrect size."
447
-				fi;
448
-			fi;
449
-			umount ${LINUXIMAGEDIR}
450
-			# If anyone finds out how to compress these nicely, add it here.
451
-		fi;
452
-	}
453
-	
454
-	if [ "1" = "${USE_MKISOFS}" ]; then
455
-		createImage
371
+	# Create Read-Only blessed image
372
+	${MKISOFS} -V 'DMDirc' -no-pad -r -apple -o "${LINUXIMAGE}" -hfs-creator "DMDI" -hfs-bless "/Volumes/DMDirc" "${DMG}"
373
+
374
+	# Compres it \o
375
+	if [ ! -e "${PWD}/compress-dmg" ]; then
376
+		wget http://www.shanemcc.co.uk/libdmg/dmg -O compress-dmg
377
+		chmod a+x compress-dmg
378
+	fi;
379
+	if [ ! -e "${PWD}/compress-dmg" ]; then
380
+		echo "DMG will not be compressed."
456 381
 	else
457
-		INCREASE=10
458
-		IMAGESIZE=$(((`du -s --block-size ${IMGBLOCKSIZE} ${DMG} | awk '{print $1}'` + ${INCREASE}) * ${IMGBLOCKSIZE} ))
459
-		createImage ${IMAGESIZE}
460
-		
461
-		# This sucks, but it makes sure the image gets created at a size that contains
462
-		# everything.
463
-		# I can't manage to get du to return the size that the files actually end up
464
-		# using on the image.
465
-		TRIES=0
466
-		while [ ${MVRES} -ne 0 -a ${TRIES} -ne 5 ]; do
467
-			TRIES=$((${TRIES} + 1))
468
-			echo "Previous ImageSize of ${IMAGESIZE} failed"
469
-			INCREASE=$((${INCREASE} + 5))
470
-			IMAGESIZE=$(((`du -s --block-size ${IMGBLOCKSIZE} ${DMG} | awk '{print $1}'` + ${INCREASE}) * ${IMGBLOCKSIZE} ))
471
-			echo "Trying to build with ImageSize ${IMAGESIZE}"
472
-			createImage ${IMAGESIZE}
473
-		done;
474
-		
475
-		if [ ${MVRES} -ne 0 ]; then
476
-			echo "OSX Build Failed - Imagesize: ${IMAGESIZE}"
477
-			exit 1;
382
+		echo "Compressing DMG"
383
+		mv ${LINUXIMAGE} ${LINUXIMAGE}.pre
384
+		${PWD}/compress-dmg dmg ${LINUXIMAGE}.pre ${LINUXIMAGE}
385
+		if [ -e ${LINUXIMAGE} ]; then
386
+			rm -Rf ${LINUXIMAGE}.pre
387
+		else
388
+			echo "Compression failed."
389
+			mv ${LINUXIMAGE}.pre ${LINUXIMAGE}
478 390
 		fi;
479 391
 	fi;
480 392
 	
@@ -484,8 +396,6 @@ if [ "" = "${HDIUTIL}" ]; then
484 396
 	fi;
485 397
 else
486 398
 	# OSX
487
-	# This creates better versions than non-OSX
488
-	
489 399
 	# Create Read/Write image
490 400
 	${HDIUTIL} create -volname "DMDirc" -fs HFS+ -srcfolder ${DMG} -format UDRW ${RUNNAME}.RW.dmg
491 401
 	# Make it auto-open

Loading…
Cancel
Save