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 2010/09/30 18:01:49 UTC
svn commit: r1003123 - in
/directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main:
java/org/apache/directory/daemon/installers/rpm/
resources/org/apache/directory/daemon/installers/rpm/
Author: pamarcelot
Date: Thu Sep 30 16:01:49 2010
New Revision: 1003123
URL: http://svn.apache.org/viewvc?rev=1003123&view=rev
Log:
Made the RPM target working on Mac OS X (with rpmbuild installed via MacPorts).
Added:
directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/resources/org/apache/directory/daemon/installers/rpm/apacheds.spec
Modified:
directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmInstallerCommand.java
directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmTarget.java
Modified: directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmInstallerCommand.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmInstallerCommand.java?rev=1003123&r1=1003122&r2=1003123&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmInstallerCommand.java (original)
+++ directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmInstallerCommand.java Thu Sep 30 16:01:49 2010
@@ -22,18 +22,14 @@ package org.apache.directory.daemon.inst
import java.io.File;
import java.io.IOException;
-import java.util.List;
import java.util.Properties;
import org.apache.directory.daemon.installers.AbstractMojoCommand;
import org.apache.directory.daemon.installers.GenerateMojo;
import org.apache.directory.daemon.installers.MojoHelperUtils;
-import org.apache.directory.daemon.installers.Target;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Touch;
-import org.codehaus.plexus.util.Os;
+import org.codehaus.plexus.util.FileUtils;
/**
@@ -43,16 +39,18 @@ import org.codehaus.plexus.util.Os;
*/
public class RpmInstallerCommand extends AbstractMojoCommand<RpmTarget>
{
- private final File rpmConfigurationFile = new File( "" ); // TODO FIXME
- private File rpmBuilder;
-
+ /**
+ * Creates a new instance of RpmInstallerCommand.
+ *
+ * @param mojo
+ * the Server Installers Mojo
+ * @param target
+ * the RPM target
+ */
public RpmInstallerCommand( GenerateMojo mojo, RpmTarget target )
{
super( mojo, target );
- // TODO FIXME
- // File imagesDir = target.getLayout().getInstallationDirectory().getParentFile();
- // rpmConfigurationFile = new File( imagesDir, target.getId() + ".spec" );
initializeFilterProperties();
}
@@ -69,526 +67,237 @@ public class RpmInstallerCommand extends
*/
public void execute() throws MojoExecutionException, MojoFailureException
{
- // -------------------------------------------------------------------
- // Step 1 & 4: do some error checking first for builder and OS
- // -------------------------------------------------------------------
-
- // TODO FIXME
- // if ( !target.getOsFamily().equals( "unix" ) || !target.getOsName().equalsIgnoreCase( "Linux" ) )
- // {
- // log.warn( "RPM target " + target.getId() + " cannot be built for an non-linux based machine!" );
- // log.warn( "The target will not be built." );
- // log.warn( "The rest of the build will not fail because of this acceptable situation." );
- // return;
- // }
-
- if ( !Os.isName( "linux" ) )
+ // Verifying the target
+ if ( !verifyTarget() )
{
- log.warn( "os name = " + System.getProperty( "os.name" ) );
- log.warn( "RPM target " + target.getId() + " cannot be built on a non-linux based machine!" );
- log.warn( "The target will not be built." );
- log.warn( "The rest of the build will not fail because of this acceptable situation." );
return;
}
- if ( target.getRpmTopDir() == null )
- {
- target.setRpmTopDir( new File( "target/rpmbuild" ) );
- }
+ log.info( " Creating Rpm installer..." );
- if ( !target.getRpmTopDir().exists() )
- {
- try
- {
- target.getRpmTopDir().mkdirs();
- String baseDir = target.getRpmTopDir().getAbsolutePath();
- new File( baseDir + "/BUILD" ).mkdirs();
- new File( baseDir + "/RPMS" ).mkdirs();
- new File( baseDir + "/SOURCES" ).mkdirs();
- new File( baseDir + "/SPECS" ).mkdirs();
- new File( baseDir + "/SRPMS" ).mkdirs();
- }
- catch ( Exception e )
- {
- log.warn( "Please set the rpmTopDir in the pom.xml to a directory where the build" );
- log.warn( "user has proper permissions to create dirs and files." );
- return;
- }
- }
+ // Creating the target directory
+ getTargetDirectory().mkdirs();
+
+ log.info( " Copying Rpm installer files" );
- // @todo this should really be a parameter taken from the user's settings
- // because the compiler may be installed in different places and is specific
- if ( !target.getRpmBuilder().exists() )
+ try
{
- log.warn( "Cannot find rpmbuild utility at this location: " + target.getRpmBuilder() );
- log.warn( "The build will continue, but please check the location of your rpmbuild " );
- log.warn( "utility." );
- return;
+ // Create Rpm directories (BUILD, RPMS, SOURCES, SPECS & SRPMS)
+ new File( getTargetDirectory(), "BUILD" ).mkdirs();
+ new File( getTargetDirectory(), "RPMS" ).mkdirs();
+ new File( getTargetDirectory(), "SOURCES" ).mkdirs();
+ new File( getTargetDirectory(), "SPECS" ).mkdirs();
+ new File( getTargetDirectory(), "SRPMS" ).mkdirs();
+
+ // Creating the installation and instance layouts
+ createLayouts();
+
+ // Copying the init script for /etc/init.d/
+ MojoHelperUtils.copyAsciiFile( mojo, filterProperties,
+ getClass().getResourceAsStream( "/org/apache/directory/daemon/installers/etc-initd-script" ),
+ new File( getAdsSourcesDirectory(), "etc-initd-script" ), true );
+
+ // Creating the spec file
+ createSpecFile();
+
+ // Generating tar.gz file
+ MojoHelperUtils.exec( new String[]
+ {
+ "tar",
+ "-zcvf",
+ "apacheds-" + getVersion() + ".tar.gz",
+ "apacheds-" + getVersion()
+ },
+ new File( getTargetDirectory(), "/SOURCES" ),
+ false );
}
- else
+ catch ( Exception e )
{
- this.rpmBuilder = target.getRpmBuilder();
+ log.error( e.getMessage() );
+ throw new MojoFailureException( "Failed to copy Rpm installer files." );
}
- // -------------------------------------------------------------------
- // Step 2 & 3: copy rpm spec file and filter
- // -------------------------------------------------------------------
-
- String version = mojo.getProject().getVersion().replace( '-', '_' );
-
- // TODO FIXME
- // if ( target.getScriptFile() != null && target.getScriptFile().exists() )
- // {
- // try
- // {
- // MojoHelperUtils.copyAsciiFile( mojo, filterProperties, target.getScriptFile(),
- // target.getLayout().getInitScript(), true );
- // }
- // catch ( IOException e )
- // {
- // mojo.getLog().error( "Failed to copy project supplied init script " + target.getScriptFile()
- // + " into position " + target.getLayout().getInitScript(), e );
- // }
- //
- // if ( mojo.getLog().isInfoEnabled() )
- // {
- // mojo.getLog().info( "Using project supplied init script file: "
- // + target.getScriptFile() );
- // }
- // }
- // else
- // {
- // try
- // {
- // MojoHelperUtils.copyAsciiFile( mojo, filterProperties, getClass().getResourceAsStream(
- // "server.init" ), target.getLayout().getInitScript(), true );
- // }
- // catch ( IOException e )
- // {
- // mojo.getLog().error(
- // "Failed to copy init script " + getClass().getResource( "server.init" ) + " into position "
- // + target.getLayout().getInitScript(), e );
- // }
- // }
+ // Generating the Rpm
+ log.info( " Generating Rpm installer" );
+
+ MojoHelperUtils.exec( new String[]
+ {
+ target.getRpmBuild().getAbsolutePath(),
+ "-ba",
+ "--target",
+ target.getOsArch() + "-linux",
+ "--define",
+ "_topdir " + getTargetDirectory(),
+ "--define",
+ "_tmppath /tmp",
+ "SPECS/apacheds.spec"
+ },
+ getTargetDirectory(),
+ false );
- // check first to see if the default spec file is present in src/main/installers
- if ( target.getRpmSpecificationFile() != null && target.getRpmSpecificationFile().exists() )
+ // Copying the rpm at the final destination
+ try
{
- try
+ String rpmName = "apacheds-" + getVersion() + "-1." + target.getOsArch() + ".rpm";
+ String finalName = target.getFinalName();
+ if ( !finalName.endsWith( ".rpm" ) )
{
- MojoHelperUtils.copyAsciiFile( mojo, filterProperties, target.getRpmSpecificationFile(),
- rpmConfigurationFile, true );
- }
- catch ( IOException e )
- {
- throw new MojoFailureException( "Failed to filter and copy project provided "
- + target.getRpmSpecificationFile() + " to " + rpmConfigurationFile );
+ finalName = finalName + ".rpm";
}
+
+ File finalFile = new File( mojo.getOutputDirectory(), finalName );
+
+ FileUtils.copyFile( new File( getTargetDirectory(), "RPMS/" + target.getOsArch() + "/" + rpmName ),
+ finalFile );
+
+ log.info( "=> RPM generated at " + finalFile );
}
- else
+ catch ( IOException e )
{
- throw new MojoFailureException( "RPM specification file does not exist ("
- + target.getRpmSpecificationFile() + ")." );
+ throw new MojoFailureException( "Failed to copy generated Rpm installer file." );
}
- // TODO FIXME
- // processPackagedFiles( target, target.getPackagedFiles() );
- //
- // buildSourceTarball();
- // String[] cmd = new String[]
- // {
- // rpmBuilder.getAbsolutePath(),
- // "-ba",
- // "--define",
- // "_topdir " + target.getRpmTopDir().getAbsolutePath(),
- // rpmConfigurationFile.getAbsolutePath() };
- // MojoHelperUtils.exec( cmd, target.getLayout().getInstallationDirectory().getParentFile(), target.isDoSudo() );
- // String rpmName = "apacheds-" + version + "-0." + target.getOsArch() + ".rpm";
- // File srcFile = new File( target.getRpmTopDir(), "RPMS/" + target.getOsArch() + "/" + rpmName );
- // File dstFile = null;
- //
- // if ( target.getFinalName() == null )
- // {
- // dstFile = new File( mojo.getOutputDirectory(), rpmName );
- // }
- // else
- // {
- // String finalName = target.getFinalName();
- // if ( !finalName.endsWith( ".rpm" ) )
- // {
- // finalName = finalName + ".rpm";
- // }
- //
- // dstFile = new File( mojo.getOutputDirectory(), finalName );
- // }
- //
- // try
- // {
- // FileUtils.copyFile( srcFile, dstFile );
- // srcFile.delete();
- // }
- // catch ( IOException e )
- // {
- // // if this happens we don't stop since RPM could be somewhere else
- // e.printStackTrace();
- // }
}
/**
- * {@inheritDoc}
+ * Verifies the target.
+ *
+ * @return
+ * <code>true</code> if the target is correct,
+ * <code>false</code> if not.
*/
- protected void initializeFilterProperties()
- {
- super.initializeFilterProperties();
-
- // filterProperties.put( "app", target.getApplication().getName() );
- // filterProperties.put( "app.caps", target.getApplication().getName().toUpperCase() );
- // filterProperties.put( "app.java.home", "java" );
- //
- // char firstChar = target.getApplication().getName().charAt( 0 );
- // firstChar = Character.toUpperCase( firstChar );
- // filterProperties.put( "app.display.name", firstChar + target.getApplication().getName().substring( 1 ) );
- // filterProperties.put( "app.release", "0" );
- // filterProperties.put( "app.license.type", target.getApplication().getLicenseType() );
- //
- // String version = target.getApplication().getVersion().replace( '-', '_' );
- // if ( target.getApplication().getVersion() != null )
- // {
- // filterProperties.put( "app.version", version );
- // }
- // else
- // {
- // filterProperties.put( "app.version", "1.0" );
- // }
-
- // -------------------------------------------------------------------
- // WARNING: hard code values just to for testing
- // -------------------------------------------------------------------
-
- // @todo use the list of committers and add multiple authors to inno
- // if ( target.getApplication().getAuthors().isEmpty() )
- // {
- // filterProperties.put( "app.author", "Apache Software Foundation" );
- // }
- // else
- // {
- // filterProperties.put( "app.author", target.getApplication().getAuthors().get( 0 ) );
- // }
- //
- // if ( target.getFinalName() != null )
- // {
- // filterProperties.put( "app.final.name", target.getFinalName() );
- // }
- // else
- // {
- // String finalName = target.getApplication().getName() + "-" + target.getApplication().getVersion()
- // + "-linux-" + target.getOsArch() + ".rpm";
- // filterProperties.put( "app.final.name", finalName );
- // }
- //
- // filterProperties.put( "app.email", target.getApplication().getEmail() );
- // filterProperties.put( "app.url", target.getApplication().getUrl() );
- // filterProperties.put( "app.java.version", target.getApplication().getMinimumJavaVersion() );
- // filterProperties.put( "app.license", target.getLayout().getLicenseFile().getPath() );
- // filterProperties.put( "app.license.name", target.getLayout().getLicenseFile().getName() );
- // filterProperties.put( "app.company.name", target.getCompanyName() );
- // filterProperties.put( "app.description", target.getApplication().getDescription() );
- // filterProperties.put( "app.copyright.year", target.getCopyrightYear() );
-
- // TODO FIXME
- // if ( !target.getLayout().getReadmeFile().exists() )
- // {
- // touchFile( target.getLayout().getReadmeFile() );
- // }
- // filterProperties.put( "app.readme", target.getLayout().getReadmeFile().getPath() );
- // filterProperties.put( "app.readme.name", target.getLayout().getReadmeFile().getName() );
- // filterProperties.put( "app.icon", target.getLayout().getLogoIconFile().getName() );
- // filterProperties.put( "app.icon.name", target.getLayout().getLogoIconFile().getName() );
- // filterProperties.put( "image.basedir", target.getLayout().getBaseDirectory().getPath() );
- // filterProperties.put( "install.append.libs", getInstallLibraryJars() );
- // filterProperties.put( "verify.append.libs", getVerifyLibraryJars() );
- // filterProperties.put( "installer.output.directory", target.getLayout().getBaseDirectory().getParent() );
- // filterProperties.put( "server.init", target.getLayout().getInitScript().getName() );
- // filterProperties.put( "app.install.base", "/opt/" + target.getApplication().getName() + "-" + version );
- //
- // File noticeFile = new File( target.getLayout().getInstallationDirectory(), "NOTICE.txt" );
- // if ( noticeFile.exists() )
- // {
- // filterProperties.put( "install.notice.file", "install -m 644 "
- // + target.getLayout().getInstallationDirectory()
- // + "/NOTICE.txt $RPM_BUILD_ROOT/opt/" + target.getApplication().getName() + "-%{version}" );
- // filterProperties.put( "verify.notice.file", "/opt/" + target.getApplication().getName()
- // + "-%{version}/NOTICE.txt" );
- // }
- // else
- // {
- // filterProperties.put( "install.notice.file", "" );
- // filterProperties.put( "verify.notice.file", "" );
- // }
- }
-
-
- static String getMkSourcesDirs( List srcList, Target target )
+ private boolean verifyTarget()
{
- StringBuffer buf = new StringBuffer();
- // +1 for '/' char
- // TODO FIXME
- // int basePathSize = target.getLayout().getInstallationDirectory().getAbsolutePath().length() + 1;
- //
- // for ( int ii = 0; ii < srcList.size(); ii++ )
- // {
- // File file = ( File ) srcList.get( ii );
- // if ( file.isFile() )
- // {
- // continue;
- // }
- //
- // String path = file.getAbsolutePath().substring( basePathSize );
- // buf.append( "mkdir -p $RPM_BUILD_ROOT/opt/" );
- // buf.append( "apacheds" );
- // buf.append( "-%{version}/" );
- // buf.append( path );
- // buf.append( "\n" );
- // }
- return buf.toString();
- }
-
-
- static String getMkDocsDirs( List docList, Target target )
- {
- StringBuffer buf = new StringBuffer();
- // +1 for '/' char
- // TODO FIXME
- // int basePathSize = target.getLayout().getInstallationDirectory().getAbsolutePath().length() + 1;
- //
- // for ( int ii = 0; ii < docList.size(); ii++ )
- // {
- // File file = ( File ) docList.get( ii );
- // if ( file.isFile() )
- // {
- // continue;
- // }
- //
- // String path = file.getAbsolutePath().substring( basePathSize );
- // buf.append( "mkdir -p $RPM_BUILD_ROOT/opt/" );
- // buf.append( "apacheds" );
- // buf.append( "-%{version}/" );
- // buf.append( path );
- // buf.append( "\n" );
- // }
- return buf.toString();
- }
-
-
- static void listFiles( List<File> fileList, File dir )
- {
- if ( dir.isFile() )
+ // Verifying the target is Linux
+ if ( !target.isOsNameLinux() )
{
- return;
+ log.warn( "Rpm installer can only be targeted for Linux platforms!" );
+ log.warn( "The build will continue, but please check the the platform of this installer target" );
+ return false;
}
- fileList.add( dir );
- File[] files = dir.listFiles();
-
- for ( File file : files )
+ // Verifying the rpmbuild utility exists
+ if ( !target.getRpmBuild().exists() )
{
- if ( file.isFile() )
- {
- fileList.add( file );
- }
-
- listFiles( fileList, file );
+ log.warn( "Cannot find rpmbuild utility at this location: " + target.getRpmBuild() );
+ log.warn( "The build will continue, but please check the location of your rpmbuild utility." );
+ return false;
}
- }
-
- static String getInstallDocs( List docList, Target target )
- {
- StringBuffer buf = new StringBuffer();
- // +1 for '/' char
- // TODO FIXME
- // int basePathSize = target.getLayout().getInstallationDirectory().getAbsolutePath().length() + 1;
- //
- // for ( int ii = 0; ii < docList.size(); ii++ )
- // {
- // File file = ( File ) docList.get( ii );
- // if ( file.isDirectory() )
- // {
- // continue;
- // }
- //
- // String path = file.getAbsolutePath().substring( basePathSize );
- // buf.append( "install -m 644 " );
- // buf.append( target.getLayout().getInstallationDirectory() ).append( "/" );
- // buf.append( path );
- // buf.append( " $RPM_BUILD_ROOT/opt/" );
- // buf.append( "apacheds" );
- // buf.append( "-%{version}/" );
- // buf.append( path );
- // buf.append( "\n" );
- // }
- return buf.toString();
+ return true;
}
- static String getVerifyDocs( List docList, Target target )
+ /**
+ * {@inheritDoc}
+ */
+ protected void initializeFilterProperties()
{
- StringBuffer buf = new StringBuffer();
- // +1 for '/' char
- // TODO FIXME
- // int basePathSize = target.getLayout().getInstallationDirectory().getAbsolutePath().length() + 1;
- //
- // for ( int ii = 0; ii < docList.size(); ii++ )
- // {
- // File file = ( File ) docList.get( ii );
- // String path = file.getAbsolutePath().substring( basePathSize );
- // buf.append( target.getLayout().getInstallationDirectory() );
- // buf.append( "apacheds" );
- // buf.append( "-%{version}/" );
- // buf.append( path );
- // buf.append( "\n" );
- // }
- return buf.toString();
- }
-
+ super.initializeFilterProperties();
- static String getInstallSources( List sourceList, Target target )
- {
- StringBuffer buf = new StringBuffer();
- // +1 for '/' char
- // TODO FIXME
- // int basePathSize = target.getLayout().getInstallationDirectory().getAbsolutePath().length() + 1;
- //
- // for ( int ii = 0; ii < sourceList.size(); ii++ )
- // {
- // File file = ( File ) sourceList.get( ii );
- // if ( file.isDirectory() )
- // {
- // continue;
- // }
- //
- // String path = file.getAbsolutePath().substring( basePathSize );
- // buf.append( "install -m 644 " );
- // buf.append( target.getLayout().getInstallationDirectory() ).append( "/" );
- // buf.append( path );
- // buf.append( " $RPM_BUILD_ROOT/opt/" );
- // buf.append( "apacheds" );
- // buf.append( "-%{version}/" );
- // buf.append( path );
- // buf.append( "\n" );
- // }
- return buf.toString();
+ filterProperties.put( "installation.directory", "/opt/apacheds-" + getVersion() );
+ filterProperties.put( "instances.directory", "/var/lib/apacheds-" + getVersion() );
+ filterProperties.put( "default.instance.name", "default" );
+ filterProperties.put( "user", "apacheds" );
+ filterProperties.put( "wrapper.java.command", "# wrapper.java.command=<path-to-java-executable>" );
+ filterProperties.put( "double.quote", "" );
+ filterProperties.put( "version", getVersion() );
}
- static String getVerifySources( List sourceList, Target target )
+ /**
+ * Creates the spec file.
+ *
+ * @throws IOException
+ */
+ private void createSpecFile() throws IOException
{
- StringBuffer buf = new StringBuffer();
- // +1 for '/' char
- // // TODO FIXME
- // int basePathSize = target.getLayout().getInstallationDirectory().getAbsolutePath().length() + 1;
- //
- // for ( int ii = 0; ii < sourceList.size(); ii++ )
- // {
- // File file = ( File ) sourceList.get( ii );
- // String path = file.getAbsolutePath().substring( basePathSize );
- // buf.append( "/opt/" );
- // buf.append( "apacheds" );
- // buf.append( "-%{version}/" );
- // buf.append( path );
- // buf.append( "\n" );
- // }
- return buf.toString();
- }
-
+ // Creating two strings for libraries
+ StringBuilder installLibs = new StringBuilder();
+ StringBuilder filesLibs = new StringBuilder();
+
+ // Getting the lib directory
+ File libDirectory = getInstallationLayout().getLibDirectory();
+ if ( libDirectory.exists() )
+ {
+ // Iterating on each file in the lib directory
+ for ( File file : libDirectory.listFiles() )
+ {
+ if ( file.isFile() )
+ {
+ installLibs.append( "install -m 644 " + getBuidDirectory() + "/%{name}-%{version}/server/lib/"
+ + file.getName() + " $RPM_BUILD_ROOT%{adshome}/lib/" + file.getName() + "\n" );
+ filesLibs.append( "%{adshome}/lib/" + file.getName() + "\n" );
+ }
+ }
+ }
- private Object getVerifyLibraryJars()
- {
- // TODO FIXME
- StringBuffer buf = new StringBuffer();
- // List artifacts = target.getLibArtifacts();
- // for ( int ii = 0; ii < artifacts.size(); ii++ )
- // {
- // File artifact = ( ( Artifact ) artifacts.get( ii ) ).getFile();
- // buf.append( "/opt/" );
- // buf.append( "apacheds" );
- // buf.append( "-%{version}/lib/" );
- // buf.append( artifact.getName() );
- // buf.append( "\n" );
- // }
+ // Creating properties based on these values
+ Properties properties = new Properties();
+ properties.put( "version", getVersion() );
+ properties.put( "build.dir", getBuidDirectory() );
+ properties.put( "install.libs", installLibs.toString() );
+ properties.put( "files.libs", filesLibs.toString() );
+
+ // Copying and filtering the spec file
+ MojoHelperUtils.copyAsciiFile( mojo, properties,
+ getClass().getResourceAsStream( "/org/apache/directory/daemon/installers/rpm/apacheds.spec" ),
+ new File( getTargetDirectory(), "SPECS/apacheds.spec" ), true );
- return buf.toString();
}
- private String getInstallLibraryJars()
+ /**
+ * Gets the 'apacheds-${version}' directory inside 'SOURCES'.
+ *
+ * @return
+ * the 'apacheds-${version}' directory inside 'SOURCES'
+ */
+ private File getAdsSourcesDirectory()
{
- // TODO FIXME
- StringBuffer buf = new StringBuffer();
- // List artifacts = target.getLibArtifacts();
- // for ( int ii = 0; ii < artifacts.size(); ii++ )
- // {
- // buf.append( "install -m 644 " );
- // File artifact = ( ( Artifact ) artifacts.get( ii ) ).getFile();
- // buf.append( artifact.getAbsoluteFile() );
- // buf.append( " $RPM_BUILD_ROOT/opt/" );
- // buf.append( "apacheds" );
- // buf.append( "-%{version}/lib/" );
- // buf.append( artifact.getName() );
- // buf.append( "\n" );
- // }
-
- return buf.toString();
+ return new File( getTargetDirectory(), "SOURCES/apacheds-" + getVersion() );
}
- static void touchFile( File file )
+ /**
+ * {@inheritDoc}
+ */
+ public File getInstallationDirectory()
{
- Touch touch = new Touch();
- touch.setProject( new Project() );
- touch.setFile( file );
- touch.execute();
+ return new File( getAdsSourcesDirectory(), "server" );
}
- private void buildSourceTarball() throws MojoFailureException
+ /**
+ * {@inheritDoc}
+ */
+ public File getInstanceDirectory()
{
- // TODO FIXME
- // String version = mojo.getProject().getVersion().replace( '-', '_' );
- // String dirname = "apacheds-" + version;
- // File sourcesDir = new File( target.getLayout().getInstallationDirectory().getParentFile(), dirname );
- // try
- // {
- // FileUtils.copyDirectoryStructure( target.getLayout().getInstallationDirectory(), sourcesDir );
- // }
- // catch ( IOException e1 )
- // {
- // throw new MojoFailureException( "failed to copy directory structure at " + target.getLayout() + " to "
- // + sourcesDir );
- // }
- //
- // String[] cmd = new String[]
- // {
- // "tar",
- // "-zcvf",
- // target.getRpmTopDir().getAbsolutePath() + "/SOURCES/apacheds-" + version + ".tar.gz",
- // sourcesDir.getAbsolutePath() };
- //
- // MojoHelperUtils.exec( cmd, target.getLayout().getInstallationDirectory().getParentFile(), target.isDoSudo() );
+ return new File( getAdsSourcesDirectory(), "instances/default" );
}
- public File getInstallationDirectory()
+ /**
+ * Gets the version number.
+ *
+ * @return
+ * the version number
+ */
+ private String getVersion()
{
- // TODO Auto-generated method stub
- return null;
+ return mojo.getProject().getVersion().replace( '-', '_' );
}
- public File getInstanceDirectory()
+ /**
+ * Gets the BUILD directory path.
+ *
+ * @return
+ * the BUILD directory path
+ */
+ private String getBuidDirectory()
{
- // TODO Auto-generated method stub
- return null;
+ return getTargetDirectory().getAbsolutePath() + "/BUILD";
}
}
Modified: directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmTarget.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmTarget.java?rev=1003123&r1=1003122&r2=1003123&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmTarget.java (original)
+++ directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/java/org/apache/directory/daemon/installers/rpm/RpmTarget.java Thu Sep 30 16:01:49 2010
@@ -32,54 +32,40 @@ import org.apache.directory.daemon.insta
*/
public class RpmTarget extends Target
{
- private File rpmBuilder = new File( "/usr/bin/rpmbuild" );
- private File rpmSpecificationFile;
- private File rpmTopDir;
- private boolean doSudo = false;
+ /** The rpmbuild utility executable */
+ private File rpmBuild = new File( "/usr/bin/rpmbuild" );
- public void setRpmBuilder( File rpmBuilder )
+ /**
+ * Creates a new instance of RpmTarget.
+ */
+ public RpmTarget()
{
- this.rpmBuilder = rpmBuilder;
+ setOsName( Target.OS_NAME_LINUX );
+ setOsArch( Target.OS_ARCH_I386 );
}
- public File getRpmBuilder()
+ /**
+ * Sets the rpmbuild utility.
+ *
+ * @param rpmBuild
+ * the the rpmbuild utility
+ */
+ public void setRpmBuild( File rpmBuild )
{
- return rpmBuilder;
+ this.rpmBuild = rpmBuild;
}
- public void setRpmSpecificationFile( File rpmConfigurationFile )
+ /**
+ * Gets the rpmbuild utility.
+ *
+ * @return
+ * the rpmbuild utility
+ */
+ public File getRpmBuild()
{
- this.rpmSpecificationFile = rpmConfigurationFile;
- }
-
-
- public File getRpmSpecificationFile()
- {
- return rpmSpecificationFile;
- }
-
-
- public void setDoSudo( boolean doSudo )
- {
- this.doSudo = doSudo;
- }
-
-
- public boolean isDoSudo()
- {
- return doSudo;
- }
-
- public File getRpmTopDir()
- {
- return rpmTopDir;
- }
-
- public void setRpmTopDir(File rpmTopDir)
- {
- this.rpmTopDir = rpmTopDir;
+ return rpmBuild;
}
}
Added: directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/resources/org/apache/directory/daemon/installers/rpm/apacheds.spec
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/resources/org/apache/directory/daemon/installers/rpm/apacheds.spec?rev=1003123&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/resources/org/apache/directory/daemon/installers/rpm/apacheds.spec (added)
+++ directory/apacheds/branches/apacheds-apacheds-2.0/installers-plugin/src/main/resources/org/apache/directory/daemon/installers/rpm/apacheds.spec Thu Sep 30 16:01:49 2010
@@ -0,0 +1,98 @@
+#
+# 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.
+#
+
+Summary: ApacheDS
+Name: apacheds
+Version: ${version}
+Release: 1
+License: ASL 2.0
+Group: System Environment/Daemons
+URL: http://directory.apache.org
+Source: apacheds-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+
+%description
+ApacheDS ${version}
+
+%define adsdata /var/lib/%{name}-%{version}
+%define adshome /opt/%{name}-%{version}
+
+%prep
+%setup -q
+
+%build
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT%{adshome}/bin
+mkdir -p $RPM_BUILD_ROOT%{adshome}/conf
+mkdir -p $RPM_BUILD_ROOT%{adshome}/lib/
+mkdir -p $RPM_BUILD_ROOT%{adsdata}/default/conf
+mkdir -p $RPM_BUILD_ROOT%{adsdata}/default/log
+mkdir -p $RPM_BUILD_ROOT%{adsdata}/default/partitions
+mkdir -p $RPM_BUILD_ROOT%{adsdata}/default/run
+mkdir -p $RPM_BUILD_ROOT/etc/init.d
+
+# Server files
+install -m 755 ${build.dir}/%{name}-%{version}/server/LICENSE $RPM_BUILD_ROOT%{adshome}/LICENSE
+install -m 755 ${build.dir}/%{name}-%{version}/server/NOTICE $RPM_BUILD_ROOT%{adshome}/NOTICE
+install -m 755 ${build.dir}/%{name}-%{version}/server/bin/apacheds $RPM_BUILD_ROOT%{adshome}/bin/apacheds
+install -m 755 ${build.dir}/%{name}-%{version}/server/bin/apacheds $RPM_BUILD_ROOT%{adshome}/bin/apacheds
+install -m 755 ${build.dir}/%{name}-%{version}/server/bin/wrapper $RPM_BUILD_ROOT%{adshome}/bin/wrapper
+install -m 644 ${build.dir}/%{name}-%{version}/server/conf/wrapper.conf $RPM_BUILD_ROOT%{adshome}/conf/wrapper.conf
+${install.libs}
+
+# Instance files
+install -m 644 ${build.dir}/%{name}-%{version}/instances/default/conf/wrapper.conf $RPM_BUILD_ROOT%{adsdata}/default/conf/wrapper.conf
+install -m 644 ${build.dir}/%{name}-%{version}/instances/default/conf/log4j.properties $RPM_BUILD_ROOT%{adsdata}/default/conf/log4j.properties
+
+# Init script
+install -m 755 ${build.dir}/%{name}-%{version}/etc-initd-script $RPM_BUILD_ROOT/etc/init.d/apacheds-%{version}-default
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%pre
+%{_sbindir}/groupadd --system apacheds >/dev/null 2>&1 || :
+%{_sbindir}/useradd --system -g apacheds -d %{adsdata} apacheds >/dev/null 2>&1 || :
+
+%post
+#/sbin/chkconfig --add %{name}
+
+%files
+%defattr(-,apacheds,apacheds,-)
+%config %attr(0755, root, root) /etc/init.d/apacheds-%{version}-default
+%{adshome}
+%{adshome}/LICENSE
+%{adshome}/NOTICE
+%{adshome}/bin
+%{adshome}/bin/%{name}
+%{adshome}/bin/wrapper
+%{adshome}/conf
+%config %{adshome}/conf/wrapper.conf
+%{adshome}/lib
+${files.libs}
+%{adsdata}
+%{adsdata}/default
+%{adsdata}/default/conf
+%{adsdata}/default/log
+%{adsdata}/default/partitions
+%{adsdata}/default/run
+%config %{adsdata}/default/conf/log4j.properties
+%config %{adsdata}/default/conf/wrapper.conf