You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2008/07/08 14:12:08 UTC

svn commit: r674791 [1/2] - in /directory/daemon/branches/bigbang/plugin/src/main: java/org/apache/directory/daemon/installers/ java/org/apache/directory/daemon/installers/bin/ java/org/apache/directory/daemon/installers/deb/ java/org/apache/directory/...

Author: pamarcelot
Date: Tue Jul  8 05:12:07 2008
New Revision: 674791

URL: http://svn.apache.org/viewvc?rev=674791&view=rev
Log:
Added a target for Solaris PKG installers, Refactored the Mac OS X PKG installer package name.
o Fix for DIRSERVER-1112 (ApacheDS installer creates redundant server.xml file).

Added:
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgInstallerCommand.java
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgTarget.java
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgInstallerCommand.java
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgTarget.java
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/DS_Store   (with props)
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/Info.plist
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/License.rtf
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-default.conf
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-usr-bin.sh
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.conf
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.init
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/dmg-background.png   (with props)
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/org.apache.directory.server.plist
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/pkg-background.tiff   (with props)
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/postflight
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/solarispkg/
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/solarispkg/Prototype
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/solarispkg/apacheds-default.conf
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/solarispkg/apacheds-init
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/solarispkg/apacheds.conf
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/solarispkg/pkginfo
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/solarispkg/postinstall
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/solarispkg/postremove
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/solarispkg/preremove
Removed:
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/pkg/
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/pkg/
Modified:
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/CreateImageCommand.java
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/bin/BinInstallerCommand.java
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/deb/DebInstallerCommand.java

Modified: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/CreateImageCommand.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/CreateImageCommand.java?rev=674791&r1=674790&r2=674791&view=diff
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/CreateImageCommand.java (original)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/CreateImageCommand.java Tue Jul  8 05:12:07 2008
@@ -238,6 +238,7 @@
         // Copy Wrapper Files
         // -------------------------------------------------------------------
 
+        // LINUX I386
         if ( target.getOsName().equals( "linux" ) && target.getOsArch().equals( "i386" )
             && target.getDaemonFramework().equals( "tanuki" ) )
         {
@@ -254,6 +255,7 @@
             }
         }
 
+        // LINUX X86_64 (AMD64)
         if ( target.getOsName().equals( "linux" )
             && ( target.getOsArch().equals( "x86_64" ) || target.getOsArch().equals( "amd64" ) )
             && target.getDaemonFramework().equals( "tanuki" ) )
@@ -271,6 +273,7 @@
             }
         }
 
+        // MAC OS X
         if ( target.getOsName().equalsIgnoreCase( "mac os x" ) && target.getDaemonFramework().equals( "tanuki" ) )
         {
             try
@@ -288,6 +291,44 @@
             }
         }
 
+        // SOLARIS X86
+        if ( target.getOsName().equalsIgnoreCase( "solaris" ) && target.getOsArch().equals( "x86" )
+            && target.getDaemonFramework().equals( "tanuki" ) )
+        {
+            try
+            {
+                MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream(
+                    "wrapper/bin/wrapper-solaris-x86-32" ), new File( layout.getBinDirectory(), target
+                    .getApplication().getName() ) );
+                MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream(
+                    "wrapper/lib/libwrapper-solaris-x86-32.so" ), new File( layout.getLibDirectory(),
+                    "libwrapper.so" ) );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoFailureException( "Failed to copy Tanuki binary files to lib and bin directories" );
+            }
+        }
+
+        // SOLARIS SPARC
+        if ( target.getOsName().equalsIgnoreCase( "solaris" ) && target.getOsArch().equals( "sparc" )
+            && target.getDaemonFramework().equals( "tanuki" ) )
+        {
+            try
+            {
+                MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream(
+                    "wrapper/bin/wrapper-solaris-sparc-32" ), new File( layout.getBinDirectory(), target
+                    .getApplication().getName() ) );
+                MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream(
+                    "wrapper/lib/libwrapper-solaris-sparc-32.so" ), new File( layout.getLibDirectory(),
+                    "libwrapper.so" ) );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoFailureException( "Failed to copy Tanuki binary files to lib and bin directories" );
+            }
+        }
+
         // now copy over the jsvc executable renaming it to the mymojo.getApplicationName() 
         if ( target.getOsName().equals( "sunos" ) && target.getOsArch().equals( "sparc" ) )
         {

Modified: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java?rev=674791&r1=674790&r2=674791&view=diff
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java (original)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java Tue Jul  8 05:12:07 2008
@@ -36,12 +36,14 @@
 import org.apache.directory.daemon.installers.inno.InnoTarget;
 import org.apache.directory.daemon.installers.izpack.IzPackInstallerCommand;
 import org.apache.directory.daemon.installers.izpack.IzPackTarget;
+import org.apache.directory.daemon.installers.macosxpkg.MacOsXPkgInstallerCommand;
+import org.apache.directory.daemon.installers.macosxpkg.MacOsXPkgTarget;
 import org.apache.directory.daemon.installers.nsis.NsisInstallerCommand;
 import org.apache.directory.daemon.installers.nsis.NsisTarget;
-import org.apache.directory.daemon.installers.pkg.PkgInstallerCommand;
-import org.apache.directory.daemon.installers.pkg.PkgTarget;
 import org.apache.directory.daemon.installers.rpm.RpmInstallerCommand;
 import org.apache.directory.daemon.installers.rpm.RpmTarget;
+import org.apache.directory.daemon.installers.solarispkg.SolarisPkgInstallerCommand;
+import org.apache.directory.daemon.installers.solarispkg.SolarisPkgTarget;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Developer;
 import org.apache.maven.model.MailingList;
@@ -107,7 +109,12 @@
     /**
      * @parameter
      */
-    private PkgTarget[] pkgTargets;
+    private MacOsXPkgTarget[] macOsXPkgTargets;
+
+    /**
+     * @parameter
+     */
+    private SolarisPkgTarget[] solarisPkgTargets;
 
     /**
      * @parameter
@@ -123,7 +130,7 @@
      * @parameter
      */
     private DebTarget[] debTargets;
-    
+
     /**
      * @parameter
      */
@@ -260,21 +267,28 @@
                 rpmCmd = new RpmInstallerCommand( this, ( RpmTarget ) target );
                 rpmCmd.execute();
             }
-            
-            if ( target instanceof PkgTarget )
+
+            if ( target instanceof MacOsXPkgTarget )
+            {
+                MacOsXPkgInstallerCommand pkgCmd = null;
+                pkgCmd = new MacOsXPkgInstallerCommand( this, ( MacOsXPkgTarget ) target );
+                pkgCmd.execute();
+            }
+
+            if ( target instanceof SolarisPkgTarget )
             {
-                PkgInstallerCommand pkgCmd = null;
-                pkgCmd = new PkgInstallerCommand( this, ( PkgTarget ) target );
+                SolarisPkgInstallerCommand pkgCmd = null;
+                pkgCmd = new SolarisPkgInstallerCommand( this, ( SolarisPkgTarget ) target );
                 pkgCmd.execute();
             }
-            
+
             if ( target instanceof DebTarget )
             {
                 DebInstallerCommand debCmd = null;
                 debCmd = new DebInstallerCommand( this, ( DebTarget ) target );
                 debCmd.execute();
             }
-            
+
             if ( target instanceof BinTarget )
             {
                 BinInstallerCommand binCmd = null;
@@ -293,7 +307,8 @@
         addAll( allTargets, nsisTargets );
         addAll( allTargets, rpmTargets );
         addAll( allTargets, debTargets );
-        addAll( allTargets, pkgTargets );
+        addAll( allTargets, macOsXPkgTargets );
+        addAll( allTargets, solarisPkgTargets );
         addAll( allTargets, binTargets );
     }
 

Modified: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/bin/BinInstallerCommand.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/bin/BinInstallerCommand.java?rev=674791&r1=674790&r2=674791&view=diff
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/bin/BinInstallerCommand.java (original)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/bin/BinInstallerCommand.java Tue Jul  8 05:12:07 2008
@@ -164,6 +164,9 @@
                 new File( binShDirectory, "install.sh" ), false );
             MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "variables.sh" ),
                 new File( binShDirectory, "variables.sh" ), false );
+
+            // Removing the redundant server.xml file (see DIRSERVER-1112)
+            new File( binRootFolderServerDirectory, "conf/server.xml" ).delete();
         }
         catch ( IOException e )
         {

Modified: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/deb/DebInstallerCommand.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/deb/DebInstallerCommand.java?rev=674791&r1=674790&r2=674791&view=diff
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/deb/DebInstallerCommand.java (original)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/deb/DebInstallerCommand.java Tue Jul  8 05:12:07 2008
@@ -158,6 +158,9 @@
             MojoHelperUtils
                 .copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "apacheds-init" ), new File(
                     debEtcInitdDirectory, "apacheds-" + target.getApplication().getVersion() + "-default" ), true );
+
+            // Removing the redundant server.xml file (see DIRSERVER-1112)
+            new File( debApacheDsHomeDirectory, "conf/server.xml" ).delete();
         }
         catch ( IOException e )
         {

Added: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgInstallerCommand.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgInstallerCommand.java?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgInstallerCommand.java (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgInstallerCommand.java Tue Jul  8 05:12:07 2008
@@ -0,0 +1,339 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.daemon.installers.macosxpkg;
+
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import org.apache.directory.daemon.installers.MojoCommand;
+import org.apache.directory.daemon.installers.MojoHelperUtils;
+import org.apache.directory.daemon.installers.ServiceInstallersMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.tools.ant.taskdefs.Execute;
+
+
+/**
+ * PKG Installer command for creating Mac OS X packages.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 434414 $
+ */
+public class MacOsXPkgInstallerCommand extends MojoCommand
+{
+    private final Properties filterProperties = new Properties( System.getProperties() );
+    /** The PKG target */
+    private final MacOsXPkgTarget target;
+    /** The Maven logger */
+    private final Log log;
+    /** The PackageMaker utility executable */
+    private File packageMakerUtility;
+    /** The hdiutil utility executable */
+    private File hdiutilUtility = new File( "/usr/bin/hdiutil" );
+
+
+    /**
+     * Creates a new instance of MacOsXPkgInstallerCommand.
+     *
+     * @param mymojo
+     *      the Server Installers Mojo
+     * @param target
+     *      the PKG target
+     */
+    public MacOsXPkgInstallerCommand( ServiceInstallersMojo mymojo, MacOsXPkgTarget target )
+    {
+        super( mymojo );
+        this.target = target;
+        this.log = mymojo.getLog();
+        initializeFiltering();
+    }
+
+
+    /**
+     * Performs the following:
+     * <ol>
+     *   <li>Bail if target is not for macosx or the PackageMaker or hdiutil utilities coud not be found.</li>
+     *   <li>Creates the Mac OS X PKG Installer for Apache DS</li>
+     *   <li>Package it in a Mac OS X DMG (Disk iMaGe)</li>
+     * </ol>
+     */
+    public void execute() throws MojoExecutionException, MojoFailureException
+    {
+        // Verifying the target is macosx
+        if ( !target.getOsFamily().equals( "macosx" ) )
+        {
+            log.warn( "Mac OS X PKG installer can only be targeted for Mac OS X platform!" );
+            log.warn( "The build will continue, but please check the the platform of this installer " );
+            log.warn( "target" );
+            return;
+        }
+
+        // Verifying the PackageMaker utility exists
+        if ( !target.getPackageMakerUtility().exists() )
+        {
+            log.warn( "Cannot find PackageMaker utility at this location: " + target.getPackageMakerUtility() );
+            log.warn( "The build will continue, but please check the location of your Package Maker " );
+            log.warn( "utility." );
+            return;
+        }
+        else
+        {
+            packageMakerUtility = target.getPackageMakerUtility();
+        }
+
+        // Verifying the hdiutil utility exists
+        if ( !hdiutilUtility.exists() )
+        {
+            log.warn( "Cannot find hdiutil utility at this location: " + hdiutilUtility );
+            log.warn( "The build will continue, but please check the location of your hdiutil " );
+            log.warn( "utility." );
+            return;
+        }
+
+        File baseDirectory = target.getLayout().getBaseDirectory();
+        File imagesDirectory = baseDirectory.getParentFile();
+
+        log.info( "Creating Mac OS X PKG Installer..." );
+
+        // Creating the package directory
+        File pkgDirectory = new File( imagesDirectory, target.getId() + "-pkg" );
+        pkgDirectory.mkdirs();
+
+        log.info( "Copying PKG installer files" );
+
+        // Creating the root directories hierarchy
+        File pkgRootDirectory = new File( pkgDirectory, "root" );
+        pkgRootDirectory.mkdirs();
+        File pkgRootUsrBinDirectory = new File( pkgRootDirectory, "usr/bin" );
+        pkgRootUsrBinDirectory.mkdirs();
+        File pkgRootUsrLocalApachedsDirectory = new File( pkgRootDirectory, "usr/local/"
+            + target.getApplication().getName() + "-" + target.getApplication().getVersion() );
+        pkgRootUsrLocalApachedsDirectory.mkdirs();
+        File pkgRootInstancesDirectory = new File( pkgRootUsrLocalApachedsDirectory, "instances" );
+        pkgRootInstancesDirectory.mkdirs();
+        File pkgRootInstancesDefaultDirectory = new File( pkgRootInstancesDirectory, "default" );
+        pkgRootInstancesDefaultDirectory.mkdirs();
+        File pkgRootInstancesDefaultConfDirectory = new File( pkgRootInstancesDefaultDirectory, "conf" );
+        pkgRootInstancesDefaultConfDirectory.mkdirs();
+        File pkgRootInstancesDefaultLdifDirectory = new File( pkgRootInstancesDefaultDirectory, "ldif" );
+        pkgRootInstancesDefaultLdifDirectory.mkdirs();
+        new File( pkgRootInstancesDefaultDirectory, "log" ).mkdirs();
+        new File( pkgRootInstancesDefaultDirectory, "partitions" ).mkdirs();
+        new File( pkgRootInstancesDefaultDirectory, "run" ).mkdirs();
+        File pkgRootLibraryLaunchDaemons = new File( pkgRootDirectory, "Library/LaunchDaemons" );
+        pkgRootLibraryLaunchDaemons.mkdirs();
+
+        // Copying the apacheds files in the root directory
+        try
+        {
+            // Copying the generated layout
+            MojoHelperUtils.copyFiles( baseDirectory, pkgRootUsrLocalApachedsDirectory );
+
+            // Copying the apacheds.init file
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "apacheds.init" ),
+                new File( pkgRootUsrLocalApachedsDirectory, "bin/" + target.getApplication().getName() + ".init" ),
+                true );
+
+            // Replacing the apacheds.conf file
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "apacheds.conf" ),
+                new File( pkgRootUsrLocalApachedsDirectory, "conf/apacheds.conf" ), true );
+
+            // Copying the apacheds.conf file in the default instance conf directory
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream(
+                "apacheds-default.conf" ), new File( pkgRootInstancesDefaultConfDirectory, "apacheds.conf" ), false );
+
+            // Copying the log4j.properties file in the default instance conf directory
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, new File( pkgRootUsrLocalApachedsDirectory,
+                "conf/log4j.properties" ), new File( pkgRootInstancesDefaultConfDirectory, "log4j.properties" ), false );
+
+            // Copying the server.xml file in the default instance conf directory
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, new File( pkgRootUsrLocalApachedsDirectory,
+                "conf/server.xml" ), new File( pkgRootInstancesDefaultConfDirectory, "server.xml" ), false );
+
+            // Copying the apacheds command to /usr/bin
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream(
+                "apacheds-usr-bin.sh" ), new File( pkgRootUsrBinDirectory, target.getApplication().getName() ), true );
+
+            // Copying the org.apache.directory.server.plist file to /Library/LaunchDaemons/
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream(
+                "org.apache.directory.server.plist" ), new File( pkgRootLibraryLaunchDaemons,
+                "org.apache.directory.server.plist" ), true );
+
+            // Removing the redundant server.xml file (see DIRSERVER-1112)
+            new File( pkgRootUsrLocalApachedsDirectory, "conf/server.xml" ).delete();
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed to copy image (" + target.getLayout().getBaseDirectory()
+                + ") to the PKG directory (" + pkgRootDirectory + ")" );
+        }
+
+        // Create Resources folder and sub-folder
+        // Copying the resources files and Info.plist file needed for the 
+        // generation of the PKG
+        File pkgResourcesEnglishDirectory = new File( pkgDirectory, "Resources/en.lproj" );
+        pkgResourcesEnglishDirectory.mkdirs();
+        File pkgScriptsDirectory = new File( pkgDirectory, "scripts" );
+        pkgScriptsDirectory.mkdirs();
+
+        try
+        {
+            MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream( "pkg-background.tiff" ), new File(
+                pkgResourcesEnglishDirectory, "background.tiff" ) );
+
+            MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream( "License.rtf" ), new File(
+                pkgResourcesEnglishDirectory, "License.rtf" ) );
+
+            MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream( "Info.plist" ), new File( pkgDirectory,
+                "Info.plist" ) );
+
+            MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream( "postflight" ), new File(
+                pkgScriptsDirectory, "postflight" ) );
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed to copy PKG resources files." );
+        }
+
+        // Generating the PKG
+        log.info( "Generating Mac OS X PKG Installer" );
+        Execute createPkgTask = new Execute();
+        String[] cmd = new String[]
+            { packageMakerUtility.getAbsolutePath(), "--root", "root/", "--resources", "Resources/", "--info",
+                "Info.plist", "--title", "Apache Directory Server " + target.getApplication().getVersion(),
+                "--version", target.getApplication().getVersion(), "--scripts", "scripts", "--out",
+                "Apache Directory Server Installer.pkg" };
+        createPkgTask.setCommandline( cmd );
+        createPkgTask.setSpawn( true );
+        createPkgTask.setWorkingDirectory( pkgDirectory );
+        try
+        {
+            createPkgTask.execute();
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed while trying to generate the PKG: " + e.getMessage() );
+        }
+
+        log.info( "Mac OS X PKG Installer generated at "
+            + new File( pkgDirectory, "Apache Directory Server Installer.pkg" ) );
+
+        log.info( "Creating Mac OS X DMG..." );
+
+        // Creating the disc image directory
+        File dmgDirectory = new File( imagesDirectory, target.getId() + "-dmg" );
+        dmgDirectory.mkdirs();
+
+        log.info( "Copying DMG files" );
+
+        // Create dmg directory and its sub-directory
+        File dmgDmgBackgroundDirectory = new File( dmgDirectory, "dmg/.background" );
+        dmgDmgBackgroundDirectory.mkdirs();
+
+        // Copying the files
+        try
+        {
+            MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream( "dmg-background.png" ), new File(
+                dmgDirectory, "dmg/.background/background.png" ) );
+
+            MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream( "DS_Store" ), new File( dmgDirectory,
+                "dmg/.DS_Store" ) );
+
+            MojoHelperUtils.copyFiles( new File( pkgDirectory, "Apache Directory Server Installer.pkg" ), new File(
+                dmgDirectory, "dmg/Apache Directory Server Installer.pkg" ) );
+
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed to copy DMG resources files." );
+        }
+
+        // Setting execution permission to the postflight script
+        // (unfortunately, the execution permission has been lost after the 
+        // copy of the PKG to the dmg folder)
+        MojoHelperUtils.exec( new String[]
+            {
+                "chmod",
+                "755",
+                new File( dmgDirectory, "dmg/Apache Directory Server Installer.pkg/Contents/Resources/postflight" )
+                    .toString() }, dmgDirectory, false );
+
+        // Generating the DMG
+        log.info( "Generating Mac OS X DMG Installer" );
+        String finalName = target.getFinalName();
+        if ( !finalName.endsWith( ".dmg" ) )
+        {
+            finalName = finalName + ".dmg";
+        }
+        try
+        {
+            Execute createDmgTask = new Execute();
+            createDmgTask.setCommandline( new String[]
+                { hdiutilUtility.getAbsolutePath(), "makehybrid", "-hfs", "-hfs-volume-name",
+                    "Apache Directory Server Installer", "-hfs-openfolder", "dmg/", "dmg/", "-o", "TMP.dmg" } );
+            createDmgTask.setSpawn( true );
+            createDmgTask.setWorkingDirectory( dmgDirectory );
+            createDmgTask.execute();
+
+            createDmgTask.setCommandline( new String[]
+                { hdiutilUtility.getAbsolutePath(), "convert", "-format", "UDZO", "TMP.dmg", "-o", "../" + finalName } );
+            createDmgTask.execute();
+
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed while trying to generate the DMG: " + e.getMessage() );
+        }
+
+        log.info( "Mac OS X DMG generated at " + new File( imagesDirectory, finalName ) );
+    }
+
+
+    private void initializeFiltering()
+    {
+        filterProperties.putAll( mymojo.getProject().getProperties() );
+        filterProperties.put( "app.name", target.getApplication().getName() );
+        if ( target.getApplication().getVersion() != null )
+        {
+            filterProperties.put( "app.version", target.getApplication().getVersion() );
+        }
+        else
+        {
+            filterProperties.put( "app.version", "1.0" );
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.daemon.installers.MojoCommand#getFilterProperties()
+     */
+    public Properties getFilterProperties()
+    {
+        return filterProperties;
+    }
+}

Added: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgTarget.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgTarget.java?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgTarget.java (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/macosxpkg/MacOsXPkgTarget.java Tue Jul  8 05:12:07 2008
@@ -0,0 +1,96 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.daemon.installers.macosxpkg;
+
+
+import java.io.File;
+
+import org.apache.directory.daemon.installers.Target;
+
+
+/**
+ * A PKG installer for the Mac OS X platform.
+ * 
+ * To create a PKG installer we use the PackageMaker utility that is bundled 
+ * in the (free) developer tools supplied by Apple.
+ * 
+ * More information on the use of the PackageMaker utility in the command line
+ * can be found at this address: 
+ * http://developer.apple.com/documentation/Darwin/Reference/Manpages/man1/packagemaker.1.html
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class MacOsXPkgTarget extends Target
+{
+    /** The wrapper executable path */
+    private String wrapperExecutablePath = "src/main/installers/wrapper/bin/wrapper-windows-x86-32.exe";
+    /** The PackageMaker utility executable */
+    private File packageMakerUtility = new File(
+        "/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker" );
+
+
+    /**
+     * Gets the PackageMaker utility.
+     *
+     * @return
+     *      the PackageMaker utility
+     */
+    public File getPackageMakerUtility()
+    {
+        return packageMakerUtility;
+    }
+
+
+    /**
+     * Gets the Wrapper executable path.
+     *
+     * @return
+     *      the wrapper executable path
+     */
+    public String getWrapperExecutablePath()
+    {
+        return wrapperExecutablePath;
+    }
+
+
+    /**
+     * Sets the PackageMaker utility.
+     *
+     * @param packageMakerUtility
+     *      the PackageMaker utility
+     */
+    public void setPackageMakerUtility( File packageMakerUtility )
+    {
+        this.packageMakerUtility = packageMakerUtility;
+    }
+
+
+    /**
+     * Sets the Wrapper executable path.
+     *
+     * @param wrapperExecutablePath
+     *      the wrapper executable path
+     */
+    public void setWrapperExecutablePath( String wrapperExecutablePath )
+    {
+        this.wrapperExecutablePath = wrapperExecutablePath;
+    }
+}
\ No newline at end of file

Added: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgInstallerCommand.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgInstallerCommand.java?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgInstallerCommand.java (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgInstallerCommand.java Tue Jul  8 05:12:07 2008
@@ -0,0 +1,272 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.daemon.installers.solarispkg;
+
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import org.apache.directory.daemon.installers.MojoCommand;
+import org.apache.directory.daemon.installers.MojoHelperUtils;
+import org.apache.directory.daemon.installers.ServiceInstallersMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.tools.ant.taskdefs.Execute;
+
+
+/**
+ * PKG Installer command for creating Solaris packages.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 434414 $
+ */
+public class SolarisPkgInstallerCommand extends MojoCommand
+{
+    private final Properties filterProperties = new Properties( System.getProperties() );
+    /** The PKG target */
+    private final SolarisPkgTarget target;
+    /** The Maven logger */
+    private final Log log;
+
+    private File pkgMaker;
+    private File pkgTranslator;
+
+
+    /**
+     * Creates a new instance of SolarisPkgInstallerCommand.
+     *
+     * @param mymojo
+     *      the Server Installers Mojo
+     * @param target
+     *      the PKG target
+     */
+    public SolarisPkgInstallerCommand( ServiceInstallersMojo mymojo, SolarisPkgTarget target )
+    {
+        super( mymojo );
+        this.target = target;
+        this.log = mymojo.getLog();
+        initializeFiltering();
+    }
+
+
+    /**
+     * Performs the following:
+     * <ol>
+     *   <li>Bail if target is not for solaris or the pkgmk or pkgtrans utilities coud not be found.</li>
+     *   <li>Creates the Solaris PKG Installer for Apache DS</li>
+     * </ol>
+     */
+    public void execute() throws MojoExecutionException, MojoFailureException
+    {
+        // Verifying the target is macosx
+        if ( !target.getOsName().equals( "solaris" ) )
+        {
+            log.warn( "Solaris PKG installer can only be targeted for Solaris platform!" );
+            log.warn( "The build will continue, but please check the the platform of this installer " );
+            log.warn( "target" );
+            return;
+        }
+
+        // Verifying the 'pkgmk' utility exists
+        if ( !target.getPkgMaker().exists() )
+        {
+            log.warn( "Cannot find 'pkgmk' utility at this location: " + target.getPkgMaker() );
+            log.warn( "The build will continue, but please check the location of your Package Maker " );
+            log.warn( "utility." );
+            return;
+        }
+        else
+        {
+            pkgMaker = target.getPkgMaker();
+        }
+
+        // Verifying the 'pkgtrans' utility exists
+        if ( !target.getPkgTranslator().exists() )
+        {
+            log.warn( "Cannot find 'pkgtrans' utility at this location: " + target.getPkgTranslator() );
+            log.warn( "The build will continue, but please check the location of your Package Maker " );
+            log.warn( "utility." );
+            return;
+        }
+        else
+        {
+            pkgTranslator = target.getPkgTranslator();
+        }
+
+        File baseDirectory = target.getLayout().getBaseDirectory();
+        File imagesDirectory = baseDirectory.getParentFile();
+
+        log.info( "Creating Solaris PKG Installer..." );
+
+        // Creating the package directory
+        File pkgDirectory = new File( imagesDirectory, target.getId() + "-pkg" );
+        pkgDirectory.mkdirs();
+
+        log.info( "Copying Solaris PKG installer files" );
+
+        // Creating the root directories hierarchy
+        File pkgRootDirectory = new File( pkgDirectory, "root" );
+        pkgRootDirectory.mkdirs();
+
+        // Copying the apacheds files in the '/opt/apacheds-$VERSION/' directory
+        File apacheDsHomeDirectory = new File( pkgRootDirectory, "opt/apacheds-" + target.getApplication().getVersion() );
+        try
+        {
+            // Copying the generated layout
+            MojoHelperUtils.copyFiles( baseDirectory, apacheDsHomeDirectory );
+
+            // Replacing the apacheds.conf file
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "apacheds.conf" ),
+                new File( apacheDsHomeDirectory, "conf/apacheds.conf" ), false );
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed to copy image (" + target.getLayout().getBaseDirectory()
+                + ") to the PKG directory (" + apacheDsHomeDirectory + ")" );
+        }
+
+        // Copying the instances in the '/var/lib/apacheds-$VERSION/default' directory
+        File defaultInstanceDirectory = new File( pkgRootDirectory, "var/lib/apacheds-"
+            + target.getApplication().getVersion() + "/default" );
+        defaultInstanceDirectory.mkdirs();
+        File debDefaultInstanceConfDirectory = new File( defaultInstanceDirectory, "conf" );
+        debDefaultInstanceConfDirectory.mkdirs();
+        new File( defaultInstanceDirectory, "ldif" ).mkdirs();
+        new File( defaultInstanceDirectory, "log" ).mkdirs();
+        new File( defaultInstanceDirectory, "partitions" ).mkdirs();
+        new File( defaultInstanceDirectory, "run" ).mkdirs();
+        File etcInitdDirectory = new File( pkgRootDirectory, "etc/init.d" );
+        etcInitdDirectory.mkdirs();
+        new File( pkgRootDirectory, "/var/run/apacheds-" + target.getApplication().getVersion() ).mkdirs();
+        try
+        {
+            // Copying the apacheds.conf file in the default instance conf directory
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream(
+                "apacheds-default.conf" ), new File( debDefaultInstanceConfDirectory, "apacheds.conf" ), false );
+
+            // Copying the log4j.properties file in the default instance conf directory
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, new File( apacheDsHomeDirectory,
+                "conf/log4j.properties" ), new File( debDefaultInstanceConfDirectory, "log4j.properties" ), false );
+
+            // Copying the server.xml file in the default instance conf directory
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties,
+                new File( apacheDsHomeDirectory, "conf/server.xml" ), new File( debDefaultInstanceConfDirectory,
+                    "server.xml" ), false );
+
+            // Copying the init script in /etc/init.d/
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "apacheds-init" ),
+                new File( etcInitdDirectory, "apacheds-" + target.getApplication().getVersion() + "-default" ), true );
+
+            // Removing the redundant server.xml file (see DIRSERVER-1112)
+            new File( apacheDsHomeDirectory, "conf/server.xml" ).delete();
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed to copy resources files to the PKG directory ("
+                + defaultInstanceDirectory + ")" );
+        }
+
+        // Copying the 'pkg' files 
+        try
+        {
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "Prototype" ),
+                new File( pkgDirectory, "Prototype" ), true );
+
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "pkginfo" ),
+                new File( pkgDirectory, "pkginfo" ), true );
+
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "postinstall" ),
+                new File( pkgDirectory, "postinstall" ), true );
+
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "preremove" ),
+                new File( pkgDirectory, "preremove" ), true );
+
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "postremove" ),
+                new File( pkgDirectory, "postremove" ), true );
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed to copy PKG 'control' file." );
+        }
+
+        // Creating the target folder
+        new File( pkgDirectory, "target" ).mkdir();
+
+        // Generating the PKG
+        log.info( "Generating Solaris PKG Installer" );
+        String finalName = target.getFinalName();
+        if ( !finalName.endsWith( ".pkg" ) )
+        {
+            finalName = finalName + ".pkg";
+        }
+        try
+        {
+            // Generating the PKG
+            Execute executeTask = new Execute();
+            executeTask.setCommandline( new String[]
+                { pkgMaker.getAbsolutePath(), "-o", "-r", "root", "-d", "target", "apacheds" } );
+            executeTask.setSpawn( true );
+            executeTask.setWorkingDirectory( pkgDirectory );
+            executeTask.execute();
+
+            // Packaging it as a single file
+            executeTask.setCommandline( new String[]
+                { pkgTranslator.getAbsolutePath(), "-s", "target", "../../" + finalName, "apacheds" } );
+            executeTask.execute();
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed while trying to generate the DMG: " + e.getMessage() );
+        }
+
+        log.info( "Solaris PKG generated at " + new File( imagesDirectory, finalName ) );
+    }
+
+
+    private void initializeFiltering()
+    {
+        filterProperties.putAll( mymojo.getProject().getProperties() );
+        filterProperties.put( "app", target.getApplication().getName() );
+        filterProperties.put( "app.name", target.getApplication().getName() );
+        if ( target.getApplication().getVersion() != null )
+        {
+            filterProperties.put( "app.version", target.getApplication().getVersion() );
+        }
+        else
+        {
+            filterProperties.put( "app.version", "1.0" );
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.daemon.installers.MojoCommand#getFilterProperties()
+     */
+    public Properties getFilterProperties()
+    {
+        return filterProperties;
+    }
+}

Added: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgTarget.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgTarget.java?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgTarget.java (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/solarispkg/SolarisPkgTarget.java Tue Jul  8 05:12:07 2008
@@ -0,0 +1,89 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.daemon.installers.solarispkg;
+
+
+import java.io.File;
+
+import org.apache.directory.daemon.installers.Target;
+
+
+/**
+ * A PKG installer for the Solaris platform.
+ * 
+ * To create a PKG installer we use the pkgmk and pkgtrans utilities that are 
+ * bundled in the Solaris OS.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class SolarisPkgTarget extends Target
+{
+    private File pkgMaker = new File( "/usr/bin/pkgmk" );
+    private File pkgTranslator = new File( "/usr/bin/pkgtrans" );
+
+
+    /**
+     * Gets the 'pkgmk' utility.
+     *
+     * @return
+     *      the 'pkgmk' utility.
+     */
+    public File getPkgMaker()
+    {
+        return pkgMaker;
+    }
+
+
+    /**
+     * Sets the 'pkgmk' utility.
+     *
+     * @param pkgMaker
+     *      the 'pkgmk' utility.
+     */
+    public void setPkgMaker( File pkgMaker )
+    {
+        this.pkgMaker = pkgMaker;
+    }
+
+
+    /**
+     * Gets the 'pkgtrans' utility.
+     *
+     * @return
+     *      the 'pkgtrans' utility.
+     */
+    public File getPkgTranslator()
+    {
+        return pkgTranslator;
+    }
+
+
+    /**
+     * Sets the 'pkgtrans' utility.
+     *
+     * @param pkgTranslator
+     *      the 'pkgtrans' utility.
+     */
+    public void setPkgTranslator( File pkgTranslator )
+    {
+        this.pkgTranslator = pkgTranslator;
+    }
+}
\ No newline at end of file

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/DS_Store
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/DS_Store?rev=674791&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/DS_Store
------------------------------------------------------------------------------
    svn:executable = *

Propchange: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/DS_Store
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/Info.plist
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/Info.plist?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/Info.plist (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/Info.plist Tue Jul  8 05:12:07 2008
@@ -0,0 +1,58 @@
+<?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">
+
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+<plist version="1.0">
+<dict>
+	<key>CFBundleGetInfoString</key>
+	<string>Copyright © 2008 Apache Software Foundation</string>
+	<key>CFBundleIdentifier</key>
+	<string>org.apache.directory.server</string>
+	<key>IFPkgFlagAllowBackRev</key>
+	<false/>
+	<key>IFPkgFlagAuthorizationAction</key>
+	<string>AdminAuthorization</string>
+	<key>IFPkgFlagBackgroundAlignment</key>
+	<string>topleft</string>
+	<key>IFPkgFlagBackgroundScaling</key>
+	<string>none</string>
+	<key>IFPkgFlagDefaultLocation</key>
+	<string>/</string>
+	<key>IFPkgFlagFollowLinks</key>
+	<true/>
+	<key>IFPkgFlagInstallFat</key>
+	<false/>
+	<key>IFPkgFlagIsRequired</key>
+	<false/>
+	<key>IFPkgFlagOverwritePermissions</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>

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/License.rtf
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/License.rtf?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/License.rtf (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/License.rtf Tue Jul  8 05:12:07 2008
@@ -0,0 +1,80 @@
+{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf440
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\paperw11899\paperh16839\margl1440\margr1440\vieww14860\viewh11540\viewkind0
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\b\fs24 \cf0 Apache License\
+Version 2.0, January 2004\
+
+\f1\b0 http://www.apache.org/licenses/\
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
+\cf0 \
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\
+\
+
+\f0\b 1. Definitions.
+\f1\b0 \
+\
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\
+\
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\
+\
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\
+\
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.\
+\
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\
+\
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\
+\
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\
+\
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\
+\
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."\
+\
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\
+\
+
+\f0\b 2. Grant of Copyright License.
+\f1\b0  Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\
+\
+
+\f0\b 3. Grant of Patent License.
+\f1\b0  Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\
+\
+
+\f0\b 4. Redistribution.
+\f1\b0  You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\
+\
+   1. You must give any other recipients of the Work or Derivative Works a copy of this License; and\
+\
+   2. You must cause any modified files to carry prominent notices stating that You changed the files; and\
+\
+   3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\
+\
+   4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\
+\
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\
+\
+
+\f0\b 5. Submission of Contributions.
+\f1\b0  Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\
+\
+
+\f0\b 6. Trademarks.
+\f1\b0  This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\
+\
+
+\f0\b 7. Disclaimer of Warranty.
+\f1\b0  Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\
+\
+
+\f0\b 8. Limitation of Liability.
+\f1\b0  In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\
+\
+
+\f0\b 9. Accepting Warranty or Additional Liability.
+\f1\b0  While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. \
+}
\ No newline at end of file

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-default.conf
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-default.conf?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-default.conf (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-default.conf Tue Jul  8 05:12:07 2008
@@ -0,0 +1,41 @@
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+#
+  
+#
+# In this file you can override parameters specified in the default
+# Apache Directory Server config file which is usually at
+# /opt/apacheds-x.x.x/conf/apacheds.conf
+#
+# See also http://wrapper.tanukisoftware.org/doc/english/properties.html
+# For a list of properties that can be set.
+#
+# Common overrides shown commented below
+
+
+# Override the JRE used
+# wrapper.java.command=%JAVA_HOME%/bin/java
+
+# Override the JVM memory settings
+# Initial Java Heap Size (in MB)
+# wrapper.java.initmemory=384
+
+# Maximum Java Heap Size (in MB)
+# wrapper.java.maxmemory=384
+
+# apacheds.instance.start=auto
\ No newline at end of file

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-usr-bin.sh
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-usr-bin.sh?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-usr-bin.sh (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds-usr-bin.sh Tue Jul  8 05:12:07 2008
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+#
+/usr/local/${app.name}-${app.version}/bin/${app.name}.init $*
\ No newline at end of file

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.conf
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.conf?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.conf (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.conf Tue Jul  8 05:12:07 2008
@@ -0,0 +1,81 @@
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+#
+
+wrapper.java.mainclass=org.apache.directory.daemon.TanukiBootstrapper
+wrapper.max_failed_invocations=1
+
+wrapper.java.classpath.1=../lib/bootstrapper.jar
+wrapper.java.classpath.2=../lib/wrapper.jar
+wrapper.java.classpath.3=../lib/slf4j-api-1.4.3.jar
+wrapper.java.classpath.4=../lib/slf4j-log4j12-1.4.3.jar
+wrapper.java.classpath.5=../lib/log4j-1.2.14.jar
+
+# Java Library Path (location of Wrapper.DLL or libwrapper.so)
+wrapper.java.library.path.1=../lib
+
+# Java Additional Parameters
+wrapper.java.additional.1=-Dlog4j.configuration=file:///%INSTANCE_HOME%/%INSTANCE%/conf/log4j.properties
+wrapper.java.additional.2=-Dapacheds.var.dir=%INSTANCE_HOME%/%INSTANCE%
+wrapper.java.additional.3=-Dapacheds.log.dir=%INSTANCE_HOME%/%INSTANCE%/log
+wrapper.java.additional.4=-Dapacheds.run.dir=%INSTANCE_HOME%/%INSTANCE%/run
+wrapper.java.additional.5=-Dapacheds.instance=%INSTANCE%
+wrapper.java.additional.6=-Dbootstrap.start.class=org.apache.ldap.server.Service
+wrapper.java.additional.7=-Dbootstrap.stop.class=org.apache.ldap.server.Service
+
+# Initial Java Heap Size (in MB)
+#wrapper.java.initmemory=384
+
+# Maximum Java Heap Size (in MB)
+#wrapper.java.maxmemory=384
+
+# Application parameters.  Add parameters as needed starting from 1
+wrapper.app.parameter.1=/usr/local/@app.name@-@app.version@
+wrapper.app.parameter.2=org.apache.directory.server.Service
+wrapper.app.parameter.3=%INSTANCE_HOME%/%INSTANCE%/conf/server.xml
+
+#********************************************************************
+# Wrapper Logging Properties
+#********************************************************************
+# Format of output for the console.  (See docs for formats)
+wrapper.console.format=PM
+
+# Log Level for console output.  (See docs for log levels)
+wrapper.console.loglevel=INFO
+
+# Log file to use for wrapper output logging.
+wrapper.logfile="%INSTANCE_HOME%/%INSTANCE%/log/wrapper.log"
+
+# Format of output for the log file.  (See docs for formats)
+wrapper.logfile.format=LPTM
+
+# Log Level for log file output.  (See docs for log levels)
+wrapper.logfile.loglevel=INFO
+
+# Maximum size that the log file will be allowed to grow to before
+#  the log is rolled. Size is specified in bytes.  The default value
+#  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
+#  'm' (mb) suffix.  For example: 10m = 10 megabytes.
+wrapper.logfile.maxsize=1m
+
+# Maximum number of rolled log files which will be allowed before old
+#  files are deleted.  The default value of 0 implies no limit.
+wrapper.logfile.maxfiles=5
+
+# Log Level for sys/event log output.  (See docs for log levels)
+wrapper.syslog.loglevel=NONE

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.init
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.init?rev=674791&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.init (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/apacheds.init Tue Jul  8 05:12:07 2008
@@ -0,0 +1,543 @@
+#! /bin/sh
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+#
+
+# Shell script to start/stop Apache Directory Server
+# If you want to change apacheds service settings please modify the apacheds.conf 
+# file for the instance you wish to change.
+# chkconfig: 2345 91 35
+# description: This script starts and stops @app.name@
+#
+
+INSTANCE="$2"
+INSTANCE_HOME=/usr/local/@app.name@-@app.version@/instances
+
+# Application
+APP_NAME="@app.name@"
+export APACHEDS_HOME
+APP_LONG_NAME="Apache Directory Server - $INSTANCE"
+
+# Wrapper
+WRAPPER_CMD="/usr/local/@app.name@-@app.version@/bin/@app.name@"
+WRAPPER_CONF="/usr/local/@app.name@-@app.version@/conf/@app.name@.conf"
+
+# Priority at which to run the wrapper.  See "man nice" for valid priorities.
+#  nice is only used if a priority is specified.
+PRIORITY=
+
+# Location of the pid file.
+PIDDIR=$INSTANCE_HOME/$INSTANCE
+
+# If uncommented, causes the Wrapper to be shutdown using an anchor file.
+#  When launched with the 'start' command, it will also ignore all INT and
+#  TERM signals.
+#IGNORE_SIGNALS=true
+
+# If specified, the Wrapper will be run as the specified user.
+# IMPORTANT - Make sure that the user has the required privileges to write
+#  the PID file and wrapper.log files.  Failure to be able to write the log
+#  file will cause the Wrapper to exit without any way to write out an error
+#  message.
+# NOTE - This will set the user which is used to run the Wrapper as well as
+#  the JVM and is not useful in situations where a privileged resource or
+#  port needs to be allocated prior to the user being changed.
+RUN_AS_USER=root
+
+# Do not modify anything beyond this point
+#-----------------------------------------------------------------------------
+
+# Get the fully qualified path to the script
+case $0 in
+    /*)
+        SCRIPT="$0"
+        ;;
+    *)
+        PWD=`pwd`
+        SCRIPT="$PWD/$0"
+        ;;
+esac
+
+# Resolve the true real path without any sym links.
+CHANGED=true
+while [ "X$CHANGED" != "X" ]
+do
+    # Change spaces to ":" so the tokens can be parsed.
+    SAFESCRIPT=`echo $SCRIPT | sed -e 's; ;:;g'`
+    # Get the real path to this script, resolving any symbolic links
+    TOKENS=`echo $SAFESCRIPT | sed -e 's;/; ;g'`
+    REALPATH=
+    for C in $TOKENS; do
+        # Change any ":" in the token back to a space.
+        C=`echo $C | sed -e 's;:; ;g'`
+        REALPATH="$REALPATH/$C"
+        # If REALPATH is a sym link, resolve it.  Loop for nested links.
+        while [ -h "$REALPATH" ] ; do
+            LS="`ls -ld "$REALPATH"`"
+            LINK="`expr "$LS" : '.*-> \(.*\)$'`"
+            if expr "$LINK" : '/.*' > /dev/null; then
+                # LINK is absolute.
+                REALPATH="$LINK"
+            else
+                # LINK is relative.
+                REALPATH="`dirname "$REALPATH"`""/$LINK"
+            fi
+        done
+    done
+
+    if [ "$REALPATH" = "$SCRIPT" ]
+    then
+        CHANGED=""
+    else
+        SCRIPT="$REALPATH"
+    fi
+done
+
+# Change the current directory to the location of the script
+cd "`dirname "$REALPATH"`"
+REALDIR=`pwd`
+
+# If the PIDDIR is relative, set its value relative to the full REALPATH to avoid problems if
+#  the working directory is later changed.
+FIRST_CHAR=`echo $PIDDIR | cut -c1,1`
+if [ "$FIRST_CHAR" != "/" ]
+then
+    PIDDIR=$REALDIR/$PIDDIR
+fi
+# Same test for WRAPPER_CMD
+FIRST_CHAR=`echo $WRAPPER_CMD | cut -c1,1`
+if [ "$FIRST_CHAR" != "/" ]
+then
+    WRAPPER_CMD=$REALDIR/$WRAPPER_CMD
+fi
+# Same test for WRAPPER_CONF
+FIRST_CHAR=`echo $WRAPPER_CONF | cut -c1,1`
+if [ "$FIRST_CHAR" != "/" ]
+then
+    WRAPPER_CONF=$REALDIR/$WRAPPER_CONF
+fi
+
+# Process ID
+ANCHORFILE="$PIDDIR/$INSTANCE.anchor"
+PIDFILE="$PIDDIR/$INSTANCE.pid"
+LOCKDIR="/var/lock/subsys"
+LOCKFILE="$LOCKDIR/$INSTANCE"
+pid=""
+
+# Resolve the location of the 'ps' command
+PSEXE="/usr/bin/ps"
+if [ ! -x "$PSEXE" ]
+then
+    PSEXE="/bin/ps"
+    if [ ! -x "$PSEXE" ]
+    then
+        echo "Unable to locate 'ps'."
+        echo "Please report this message along with the location of the command on your system."
+        exit 1
+    fi
+fi
+
+# Resolve the os
+DIST_OS=`uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]`
+case "$DIST_OS" in
+    'sunos')
+        DIST_OS="solaris"
+        ;;
+    'hp-ux' | 'hp-ux64')
+        DIST_OS="hpux"
+        ;;
+    'darwin')
+        DIST_OS="macosx"
+        ;;
+    'unix_sv')
+        DIST_OS="unixware"
+        ;;
+esac
+
+# Resolve the architecture
+DIST_ARCH=`uname -p | tr [:upper:] [:lower:] | tr -d [:blank:]`
+if [ "$DIST_ARCH" = "unknown" ]
+then
+    DIST_ARCH=`uname -m | tr [:upper:] [:lower:] | tr -d [:blank:]`
+fi
+case "$DIST_ARCH" in
+    'amd64' | 'athlon' | 'ia32' | 'ia64' | 'i386' | 'i486' | 'i586' | 'i686' | 'x86_64')
+        DIST_ARCH="x86"
+        ;;
+    'ip27')
+        DIST_ARCH="mips"
+        ;;
+    'power' | 'powerpc' | 'power_pc' | 'ppc64')
+        DIST_ARCH="ppc"
+        ;;
+    'pa_risc' | 'pa-risc')
+        DIST_ARCH="parisc"
+        ;;
+    'sun4u' | 'sparcv9')
+        DIST_ARCH="sparc"
+        ;;
+    '9000/800')
+        DIST_ARCH="parisc"
+        ;;
+esac
+
+outputFile() {
+    if [ -f "$1" ]
+    then
+        echo "  $1 (Found but not executable.)";
+    else
+        echo "  $1"
+    fi
+}
+
+# Build the nice clause
+if [ "X$PRIORITY" = "X" ]
+then
+    CMDNICE=""
+else
+    CMDNICE="nice -$PRIORITY"
+fi
+
+# Build the anchor file clause.
+if [ "X$IGNORE_SIGNALS" = "X" ]
+then
+   ANCHORPROP=
+   IGNOREPROP=
+else
+   ANCHORPROP=wrapper.anchorfile=\"$ANCHORFILE\"
+   IGNOREPROP=wrapper.ignore_signals=TRUE
+fi
+
+# Build the lock file clause.  Only create a lock file if the lock directory exists on this platform.
+LOCKPROP=
+if [ -d $LOCKDIR ]
+then
+    if [ -w $LOCKDIR ]
+    then
+        LOCKPROP=wrapper.lockfile=\"$LOCKFILE\"
+    fi
+fi
+
+checkUser() {
+    # $1 touchLock flag
+    # $2 command
+    # $3 instance
+
+    # Check the configured user.  If necessary rerun this script as the desired user.
+    if [ "X$RUN_AS_USER" != "X" ]
+    then
+        # Resolve the location of the 'id' command
+        IDEXE="/usr/xpg4/bin/id"
+        if [ ! -x "$IDEXE" ]
+        then
+            IDEXE="/usr/bin/id"
+            if [ ! -x "$IDEXE" ]
+            then
+                echo "Unable to locate 'id'."
+                echo "Please report this message along with the location of the command on your system."
+                exit 1
+            fi
+        fi
+
+        if [ "`$IDEXE -u -n`" = "$RUN_AS_USER" ]
+        then
+            # Already running as the configured user.  Avoid password prompts by not calling su.
+            RUN_AS_USER=""
+        fi
+    fi
+    if [ "X$RUN_AS_USER" != "X" ]
+    then
+        # If LOCKPROP and $RUN_AS_USER are defined then the new user will most likely not be
+        # able to create the lock file.  The Wrapper will be able to update this file once it
+        # is created but will not be able to delete it on shutdown.  If $2 is defined then
+        # the lock file should be created for the current command
+        if [ "X$LOCKPROP" != "X" ]
+        then
+            if [ "X$1" != "X" ]
+            then
+                # Resolve the primary group 
+                RUN_AS_GROUP=`groups $RUN_AS_USER | awk '{print $3}' | tail -1`
+                if [ "X$RUN_AS_GROUP" = "X" ]
+                then
+                    RUN_AS_GROUP=$RUN_AS_USER
+                fi
+                touch $LOCKFILE
+                chown $RUN_AS_USER:$RUN_AS_GROUP $LOCKFILE
+            fi
+        fi
+
+        # Still want to change users, recurse.  This means that the user will only be
+        #  prompted for a password once. Variables shifted by 1
+        su -m $RUN_AS_USER -c "\"$REALPATH\" $2 $3"
+
+        # Now that we are the original user again, we may need to clean up the lock file.
+        if [ "X$LOCKPROP" != "X" ]
+        then
+            getpid
+            if [ "X$pid" = "X" ]
+            then
+                # Wrapper is not running so make sure the lock file is deleted.
+                if [ -f "$LOCKFILE" ]
+                then
+                    rm "$LOCKFILE"
+                fi
+            fi
+        fi
+
+        exit 0
+    fi
+}
+
+getpid() {
+    if [ -f "$PIDFILE" ]
+    then
+        if [ -r "$PIDFILE" ]
+        then
+            pid=`cat "$PIDFILE"`
+            #if [ "X$pid" != "X" ]
+            #then
+            #    # It is possible that 'a' process with the pid exists but that it is not the
+            #    #  correct process.  This can happen in a number of cases, but the most
+            #    #  common is during system startup after an unclean shutdown.
+            #    # The ps statement below looks for the specific wrapper command running as
+            #    #  the pid.  If it is not found then the pid file is considered to be stale.
+            #    pidtest=`$PSEXE -p $pid -o args | grep "$WRAPPER_CMD" | tail -1`
+            #    if [ "X$pidtest" = "X" ]
+            #    then
+            #        # This is a stale pid file.
+            #        rm -f "$PIDFILE"
+            #        echo "Removed stale pid file: $PIDFILE"
+            #        pid=""
+            #    fi
+            #fi
+        else
+            echo "Cannot read $PIDFILE."
+            exit 1
+        fi
+    fi
+}
+
+testpid() {
+    pid=`$PSEXE -p $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1`
+    if [ "X$pid" = "X" ]
+    then
+        # Process is gone so remove the pid file.
+        rm -f "$PIDFILE"
+        pid=""
+    fi
+}
+
+usage() {
+    echo "Please enter an instance name..."
+    echo "Usage: $0 <command> <instance name>"
+    echo "  Available Commands: "
+    echo "      console     - Run in interactive mode with log output to the console."
+    echo "                    Press CTRL-C to stop."
+    echo "      start       - Run the instance in the background"
+    echo "      stop        - Stop the running instance"
+    echo "      restart     - Restart the instance if it is already running,"
+    echo "                    or start if it wasn't already running"
+    echo "      status      - Display the status of the instance (running or stopped)"
+    echo "      dump        - Request a JVM dump of the running process"
+}
+
+console() {
+    echo "Running $APP_LONG_NAME..."
+    getpid
+    if [ "X$pid" = "X" ]
+    then
+        # The string passed to eval must handles spaces in paths correctly.
+        COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" set.INSTANCE_HOME=\"$INSTANCE_HOME\" set.INSTANCE=\"$INSTANCE\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" $ANCHORPROP $LOCKPROP wrapper.debug=true"
+        eval $COMMAND_LINE
+    else
+        echo "$APP_LONG_NAME is already running."
+        exit 1
+    fi
+}
+ 
+start() {
+    echo "Starting $APP_LONG_NAME..."
+    getpid
+     if [ "X$pid" = "X" ]
+     then
+         # The string passed to eval must handles spaces in paths correctly.
+         COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" set.INSTANCE_HOME=$INSTANCE_HOME set.INSTANCE=$INSTANCE wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $LOCKPROP"
+         eval $COMMAND_LINE
+     else
+         echo "$APP_LONG_NAME is already running."
+         exit 1
+     fi
+
+
+}
+ 
+stopit() {
+    echo "Stopping $APP_LONG_NAME..."
+    getpid
+    if [ "X$pid" = "X" ]
+    then
+        echo "$APP_LONG_NAME was not running."
+    else
+        if [ "X$IGNORE_SIGNALS" = "X" ]
+        then
+            # Running so try to stop it.
+            kill $pid
+            if [ $? -ne 0 ]
+            then
+                # An explanation for the failure should have been given
+                echo "Unable to stop $APP_LONG_NAME."
+                exit 1
+            fi
+        else
+            rm -f "$ANCHORFILE"
+            if [ -f "$ANCHORFILE" ]
+            then
+                # An explanation for the failure should have been given
+                echo "Unable to stop $APP_LONG_NAME."
+                exit 1
+            fi
+        fi
+
+        # We can not predict how long it will take for the wrapper to
+        #  actually stop as it depends on settings in apacheds.conf.
+        #  Loop until it does.
+        savepid=$pid
+        CNT=0
+        TOTCNT=0
+        while [ "X$pid" != "X" ]
+        do
+            # Show a waiting message every 5 seconds.
+            if [ "$CNT" -lt "5" ]
+            then
+                CNT=`expr $CNT + 1`
+            else
+                echo "Waiting for $APP_LONG_NAME to exit..."
+                CNT=0
+            fi
+            TOTCNT=`expr $TOTCNT + 1`
+
+            sleep 1
+
+            testpid
+        done
+
+        pid=$savepid
+        testpid
+        if [ "X$pid" != "X" ]
+        then
+            echo "Failed to stop $APP_LONG_NAME."
+            exit 1
+        else
+            echo "Stopped $APP_LONG_NAME."
+        fi
+    fi
+}
+
+status() {
+    getpid
+    if [ "X$pid" = "X" ]
+    then
+        echo "$APP_LONG_NAME is not running."
+        exit 1
+    else
+        echo "$APP_LONG_NAME is running ($pid)."
+        exit 0
+    fi
+}
+
+dump() {
+    echo "Dumping $APP_LONG_NAME..."
+    getpid
+    if [ "X$pid" = "X" ]
+    then
+        echo "$APP_LONG_NAME was not running."
+
+    else
+        kill -3 $pid
+
+        if [ $? -ne 0 ]
+        then
+            echo "Failed to dump $APP_LONG_NAME."
+            exit 1
+        else
+            echo "Dumped $APP_LONG_NAME."
+        fi
+    fi
+}
+
+list() {
+  echo "Available instances..."
+  for instance in $INSTANCE_HOME/* ; do
+	echo "	" `basename $instance`;
+  done
+}
+
+# Make sure they entered an instance name
+if [[ ( $2 == "" ) && ( $1 == "start" || $1 == "stop" || $1 == "status" || $1 == "dump" ) ]]
+then
+	usage
+	echo
+	echo "Please enter an instance name to $1..."
+	echo
+	list
+	exit 1
+fi
+
+case "$1" in
+
+    'console')
+        checkUser touchlock $1 $INSTANCE
+        console
+        ;;
+
+    'start')
+        checkUser touchlock $1 $INSTANCE
+        start
+        ;;
+
+    'stop')
+        checkUser "" $1 $INSTANCE
+        stopit
+        ;;
+
+    'restart')
+        checkUser touchlock $1 $INSTANCE
+        stopit
+        start
+        ;;
+
+    'status')
+        checkUser "" $1 $INSTANCE
+        status
+        ;;
+
+    'dump')
+        checkUser "" $1 $INSTANCE
+        dump
+        ;;
+    'list')
+        list
+        ;;
+
+    *)
+        echo "Usage: $0 { console | start | stop | restart | status | dump } <instance name>"
+        exit 1
+        ;;
+esac
+
+exit 0

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/dmg-background.png
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/dmg-background.png?rev=674791&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/macosxpkg/dmg-background.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream