#!/bin/sh

#########################################################################
#                                                                       #
#                            Objective Caml                             #
#                                                                       #
#          Damien Doligez, projet Moscova, INRIA Rocquencourt           #
#                                                                       #
#   Copyright 2003 Institut National de Recherche en Informatique et    #
#   en Automatique.  All rights reserved.  This file is distributed     #
#   under the terms of the Q Public License version 1.0.                #
#                                                                       #
#########################################################################

# $Id: make-package-macosx,v 1.13 2007/02/09 13:31:15 doligez Exp $

cd package-macosx
rm -rf ocaml.pkg ocaml-rw.dmg

VERSION=`head -1 ../VERSION`
VERSION_MAJOR=`sed -n -e '1s/^\([0-9]*\)\..*/\1/p' ../VERSION
VERSION_MINOR=`sed -n -e '1s/^[0-9]*\.\([0-9]*\)[.+].*/\1/p' ../VERSION

# Worked in 10.2:

# cat >ocaml.info <<EOF
#   Title Objective Caml
#   Version ${VERSION}
#   Description This package installs Objective Caml version ${VERSION}
#   DefaultLocation /
#   Relocatable no
#   NeedsAuthorization yes
#   Application no
#   InstallOnly no
#   DisableStop no
# EOF
#package root ocaml.info

cat >Description.plist <<EOF
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
            "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
  <dict>
          <key>IFPkgDescriptionDeleteWarning</key>
          <string></string>
          <key>IFPkgDescriptionDescription</key>
          <string>The Objective Caml compiler and tools</string>
          <key>IFPkgDescriptionTitle</key>
          <string>Objective Caml</string>
          <key>IFPkgDescriptionVersion</key>
          <string>${VERSION}</string>
  </dict>
  </plist>
EOF

cat >Info.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
          "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>CFBundleGetInfoString</key>
        <string>Objective Caml ${VERSION}</string>
        <key>CFBundleIdentifier</key>
        <string>fr.inria.ocaml</string>
        <key>CFBundleName</key>
        <string>Objective Caml</string>
        <key>CFBundleShortVersionString</key>
        <string>${VERSION}</string>
        <key>IFMajorVersion</key>
        <integer>${VERSION_MAJOR}</integer>
        <key>IFMinorVersion</key>
        <integer>${VERSION_MINOR}</integer>
        <key>IFPkgFlagAllowBackRev</key>
        <true/>
        <key>IFPkgFlagAuthorizationAction</key>
        <string>AdminAuthorization</string>
        <key>IFPkgFlagDefaultLocation</key>
        <string>/usr/local</string>
        <key>IFPkgFlagInstallFat</key>
        <false/>
        <key>IFPkgFlagIsRequired</key>
        <false/>
        <key>IFPkgFlagRelocatable</key>
        <false/>
        <key>IFPkgFlagRestartAction</key>
        <string>NoRestart</string>
        <key>IFPkgFlagRootVolumeOnly</key>
        <true/>
        <key>IFPkgFlagUpdateInstalledLanguages</key>
        <false/>
        <key>IFPkgFormatVersion</key>
        <real>0.10000000149011612</real>
</dict>
</plist>
EOF

mkdir -p resources

#                                         stop here -> |
cat >resources/ReadMe.txt <<EOF
This package installs Objective Caml version ${VERSION}.
You need Mac OS X 10.4.x (Tiger), with X11 and the
XCode tools (v2.4) installed.

Files will be installed in the following directories:

/usr/local/bin - command-line executables
/usr/local/lib/ocaml - library and support files
/usr/local/man - manual pages
EOF

chmod -R g-w root
sudo chown -R root:admin root

/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker \
  -build -p "`pwd`/ocaml.pkg" -f "`pwd`/root" -i "`pwd`/Info.plist" \
  -d "`pwd`/Description.plist" -r "`pwd`/resources"

size=`du -s ocaml.pkg | cut -f 1`
size=`expr $size + 8192`

hdiutil create -sectors $size ocaml-rw.dmg
name=`hdid -nomount ocaml-rw.dmg | grep Apple_HFS | cut -d ' ' -f 1`
newfs_hfs -v 'Objective Caml' $name
hdiutil detach $name

name=`hdid ocaml-rw.dmg | grep Apple_HFS | cut -d ' ' -f 1`
if test -d '/Volumes/Objective Caml'; then
  ditto -rsrcFork ocaml.pkg "/Volumes/Objective Caml/ocaml.pkg"
  cp resources/ReadMe.txt "/Volumes/Objective Caml/"
else
  echo 'Unable to mount the disk image as "/Volumes/Objective Caml"' >&2
  exit 3
fi
open "/Volumes/Objective Caml"
hdiutil detach $name

rm -rf "ocaml-${VERSION}.dmg"
hdiutil convert ocaml-rw.dmg -format UDZO -o "ocaml-${VERSION}.dmg"
