|
@@ -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
|