Hi. I'm having a problem with hdituil attach.
I have a build script that builds a software product. The final phase
executes another script that packages the software onto a .dmg. In
order to do this, it takes a "templated" dmg, makes a copy, mounts it,
copies the software onto to mounted volume, unmounts it, converts the
format to read only (UDRO), unflattens it, adds a resource for a
software license agreement, flattens it again, the converts it to UDZO.
I pasted in the script that does this into the bottom of this message.
This script works fine except under one particular circumstance.
The way that I want to invoke my build script is from a web page. In
order to do this, I have a script that runs all the time on my server.
It wakes up every 10 seconds and checks to see if a certain file
exists which contains "commands" for it. The commands it knows are to
either exit or build the software.
My CGI script basically writes out a "command" into this file to build
the software (with some arguments). My script doesn't actually execute
anything in this file, just reads it, interprets it, and then builds
the software and then deletes the file containing the command and goes
back to sleep.
Again, this works fine if I ssh into my server, startup the background
script, and then stay logged in.
However, once I log out of my server box (which is actually just a G4
Mac mini running standard Tiger which I'm using to do formal builds and
host a little web page for the builds), the hdiutil attach call fails.
At this point, I don't see the actual error message, but my script
tests for whether the volume is mounted and it reports a failure.
What am I doing wrong? Is there a known limitation for hdiutil attach?
Also, I apologize if this isn't the best list to ask this.
Thanks.
Brant Sears
#!/bin/bash
BUILD_STYLE="Release"
HOME=/Users/`whoami`
#APP_LOC=/Users/`whoami`/src/build/Release
APP_NAME=MyAppName
APP_FILE_NAME=${APP_NAME}.app
TEMP_DMG= MyAppName_template.dmg
SLA_DMG= MyAppName_SLA.dmg
FINAL_DMG= MyAppName.dmg
DMG_VOLUME_NAME= MyAppName
while getopts 'd:' OPT_LETTER
do
case "$OPT_LETTER" in
d)
echo "****Debug Deployment****"
BUILD_STYLE="Debug"
#APP_LOC=/Users/`whoami`/src/build/Debug
;;
*)
echo "Invalid argument ${OPT_LETTER}"
exit 1
;;
esac
done
echo "Creating dmg..."
cd ~/src/
rm -f "${FINAL_DMG}"
cp "${TEMP_DMG}" "${FINAL_DMG}"
if ! test -e "${FINAL_DMG}"
then
echo "****ERROR: Failed to copy dmg."
exit 1
fi
hdiutil attach "${FINAL_DMG}"
if ! test -e /Volumes/"${DMG_VOLUME_NAME}"
then
echo "****ERROR: Dmg failed to mount" <---- THIS IS WHERE IT FAILS
exit 1
fi
rm -rf /Volumes/"${DMG_VOLUME_NAME}"/"${APP_FILE_NAME}"
echo "Copying ${APP} to Dmg"
cp -R "${APP}" /Volumes/"${DMG_VOLUME_NAME}"/
touch -f /Volumes/"${DMG_VOLUME_NAME}"/"${APP_FILE_NAME}"
if ! test -e /Volumes/"${DMG_VOLUME_NAME}"/"${APP_FILE_NAME}"
then
echo "****ERROR: Failed to copy application to Dmg."
exit 1
fi
hdiutil detach /Volumes/"${DMG_VOLUME_NAME}"
if test -e /Volumes/"${DMG_VOLUME_NAME}"
then
echo "****ERROR: Failed to unmount Dmg."
exit 1
fi
hdiutil convert -ov -format UDRO -o "${SLA_DMG}" "${FINAL_DMG}"
echo "Adding Software License Agreement to dmg..."
hdiutil unflatten "${SLA_DMG}"
Rez -a SLA.r -o "${SLA_DMG}"
hdiutil flatten "${SLA_DMG}"
hdiutil convert -ov -format UDZO -o "${DST_DMG}" "${SLA_DMG}"
rm -rf "${SLA_DMG}"
rm -rf "${FINAL_DMG}"
echo "Done!"
exit 0
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden