(no commit message)
authorhttp://petefoth.myopenid.com/ <http://petefoth.myopenid.com/@web>
Mon, 14 Nov 2011 11:13:12 +0000 (06:13 -0500)
committerwww-data <www-data@project-moonshot.org>
Mon, 14 Nov 2011 11:13:12 +0000 (06:13 -0500)
design/librarymacinstallerplan.mdwn

index edb074a..7cc83ea 100644 (file)
@@ -1,18 +1,19 @@
 ##Plan Mac Installer for GSS EAP and SASL GS2 libraries
 ###Introduction:
 This document describes Codethink's plan for producing an installer for the Moonshot GSS EAP and SASL GS2 libraries for Mac OS X 10.6 (“Snow Leopard”) and 10.7 (“Lion”). 
-It describes the goals, activities deliverables and milestones for the development.
+It describes the goals, activities, deliverables and milestones for the development.
 It also gives some background on the intended locations of the files to be installed, system configuration modifications and any other pertinent information. It explains how the installer conforms to Apple’s relevant guidelines to developers.
 ###Goals
 The primary goal is to allow users to install these initiator libraries on a computer running Mac OS X without needing to build them from source. 
 
 Secondary goals are
 
-1. To allow users who are familiar with the autotools tool chain to build and install the libraries on a computer running Mac OS X using autotools. (This is currently possible for the Cyrus SASL library, but not for the Moonshot GSS EAP library).
+1. To allow users who are familiar with the autotools tool chain to install, as well as build, the libraries using autotools on a computer running Mac OS X. (This is currently possible for the Cyrus SASL library, but not for the Moonshot GSS EAP library).
+
 2. To automate (as far as possible) and document the process, allowing Moonshot project developers to easily produce installer packages for future versions of these libraries.
 
 ###Deliverables:
-1. Changed files allowing the Moonshot GSS EAP library to be built and installed for Mac OS using autotools
+1. Changes to files if required to allow the Moonshot GSS EAP library to be installed, as well as built, under Mac OS using autotools.
 2. An installer package (or packages) that, when run, will install the necessary files to the required places in the files system. (See Outstanding questions/issues 1).
 3. A compressed disk image file containing the installer package(s), which can be mounted to run the installer package. (See Outstanding questions/issues 2)
 4. Instructions and scripts for creating the installers and disk images from source. PackageMaker, (the tool provided by Apple to build installer packages - see Ref. 2) does not have a command line interface, and there do not appear to be any freely available alternatives which do, so it will probably not be possibly to automate the production of the installer package(s). 
@@ -26,15 +27,14 @@ Secondary goals are
 
 ###Background information
 ####Installer functionality:
-Apple's Developer documentation (Ref. 1) states
-> public frameworks should be installed at the local level in /Library/Frameworks.
-Frameworks installed here are available to all users of the machine.
+There are two parts to the installation:
+
+1. The installer will install library and header files in /usr/local/lib and /usr/local/include, as for the Linux 'make install'. 
+2: Frameworks: in addition, the installer will install frameworks in sub-directories of /Library/Frameworks on the main drive of the machine. The Cyrus SASL framework will be installed in /Library/Frameworks/SASL2.framework (as in the existing Cyrus SASL 'make install'). The Moonshot GSS EAP framework will be installed in /Library/Frameworks/MoonshotGSS_EAP.framework. The installer will create the .framework directories if they are not already present. The frameworks are wrappers for symlinks to the respective dynamic libraries in /usr/local/lib (libsasl2.dylib and mech_eap.dylib).
 
-The installer will install the libraries listed below in a directory named Moonshot.framework, a sub-directory of /Library/Frameworks on the main drive of the machine. The installer will create the Moonshot.framework directory if it is not already present. (It may already be present because any shared libraries developed as part of the Moonshot UI / Identity Selector software will also be installed to this directory). The structure of the Moonshot directory is described below.
 If an installation with a lower version number is present, the new installation will be installed, and the /Versions/Current alias changed to refer to the new installation.
 
-If an installation with a lower version number is present, the new installation will terminate with a message explaining why.
+If an installation with a higher version number is present, the new installation will terminate with a message explaining why.
 
 If an installation with the same version number as version being installed is present, a message is displayed to the User asking them to confirm whether the existing installation should be overwritten?
 
@@ -44,10 +44,13 @@ The exact text to be used in messages displayed to the user will be specified as
 
 The appearance of the installer will not be customized to use special icons and window backgrounds.
 
+Apple's Developer documentation (Ref. 1) states
+> public frameworks should be installed at the local level in /Library/Frameworks.
+Frameworks installed here are available to all users of the machine.
+
 ####Structure of the Moonshot.framework directory tree.
 The Moonshot.framework directory will have the following sub-directory structure, allowing future versions to be installed without breaking applications that rely on an earlier version:
 
-    /Commands -> (alias to Versions/Current/bin)
     /Headers -> (alias to Versions/Current/include)
     /Home -> (alias to Versions/Current)
     /Libraries -> (alias to Versions/Current/lib)
@@ -59,7 +62,6 @@ The Moonshot.framework directory will have the following sub-directory structure
       /Current --> (alias to most recently installed version e.g /Versions/3.1.2)
 Each numbered version sub-directory will have the necessary directories from the file system hierarchy e.g.
 
-    /bin
     /etc
     /include
     /man
@@ -72,18 +74,17 @@ Each numbered version sub-directory will have the necessary directories from the
     /var
       /log
 
-
 ###Package and Component Properties
 The Package properties will be 
 
-    Provider Identifier (Organization): org.janet.moonshot
+    Provider Identifier (Organization): net.ja.moonshot
     Target OS (Minimum Target): Mac OS 10.6 Snow Leopard
 
 For each component in the package, properties will be
 
     Destination (To): The appropriate subdirectory of the /Library/Frameworks/Moonshot directory tree
     Custom destination consent (Allow custom location): False.
-    Package identifier: org.janet.moonshot.xxxx (where xxx identifies the individual library)
+    Package identifier: net.ja.moonshot.xxxx (where xxx identifies the individual library)
     Package version number: 1 for first release, incremented in future releases
     Finalization action (Post-install): None
     Administrator-authentication requirement (Require admin authorization): True