Sorry, I couldn't resist :)

While I was writing my article on how to do deployments and workflow with Drush_make and Aegir, it occurred to me that once upon a time, I wrote an Installation Profile to build a Feature Server using the fserver feature itself, with the other required components such as Features, CCK, Views, etc per Development Seed's Recipé.

Then Drush Make came about, and Young wrote a screencast and article that showed how to make a Feature Server in 5 minutes. The makefile got published as well.

However! My patience still wears thin these days, and the process of using drush_make to build your mini Drupal featureserver distribution was lacking my install profile, which meant that one would still need to run through the install process manually and enable the modules etc one by one. Still a lot of work in this fast moving Drupal era!

I had my install profile set up on a platform in Aegir, allowing me to automate the creation of feature servers, but I had still built the platform (distribution) manually. Losing from all angles in my war against time and effort!

So per my last article where I expose the magic of Drush Make's recursive nature, I have written one of my 'build' files (make files) that grabs Drupal core and my install profile from git.mig5.net:

core = 6.x
projects[] =  drupal
projects[feature_server][type] = "profile"
projects[feature_server][download][type] = "git"
projects[feature_server][download][url] = "git://git.mig5.net/drupal/profiles/feature_server"

As always, the install profile itself, once cloned from git, contains its own make file that grabs all the other components and puts them into place. It's based on Young's own featureserver.make file

core = 6.x
 
projects[] = cck
projects[] = context
projects[] = features
projects[] = filefield
projects[] = install_profile_api
projects[] = views
projects[fserver][location] = "http://code.developmentseed.org/fserver"
projects[singular][location] = "http://code.developmentseed.org/fserver"
projects[tao][location] = "http://code.developmentseed.org/fserver"

And voilĂ , you have your ready-to-use Feature Server distribution, and you can choose the 'Feature Server' install profile and push through faster than ever to get it up and running.

Please do! Here are the steps:

1) git clone git://git.mig5.net/drupal/builds
2) drush make builds/feature_server.build featureserver
3) Profit! Make it a Platform in Aegir, or just implement it as you would a regular copy of Drupal core, choosing the Feature Server install profile at the start of the install process.

Recursive, just to install profiles?

Or can modules/themes also include .make files? This is a poorly documented feature. I'd like to package my modules with .make files in them so that when being built with drush make they get executed automatically. Is this possible?

Don't think it's specific

Hi Robert,

I don't think it's profile specific, I may be wrong: drush make implements drush_scan_directory() and searches for any .make file and then parses it. Looking at the code, I can't see that it expects to find it in a profile as opposed to any other component. That said, I haven't tried putting a make file in anything other than a profile :)

It makes sense to me to treat an install profile as an 'application', and have the make file in that. All modules/themes etc then get checked out by drush_make into /profiles/my_application/(modules | themes ) . Provided my site has this install profile set in the variables table, the instance of the application (i.e, the site) has access to these modules and themes.

To me, modules, themes and libraries are the outcome of a 'drush make' execution, and not somewhere where I would want to begin building something from. YMMV.

Thanks for the comment! P.S yes, drush_make itself is not strongly documented. However 5 days ago in the last release Dmitri made, he rolled in some docs submitted by others in the queue. The result is a README.txt (seems to contain some content based on my earlier blog post) and INSTALL.txt. It's a good start!

Not sure if it's a problem

Not sure if it's a problem with the install profile or the versions being gathered by drush make, but when I do the install, I get:

warning: array_map() [function.array-map]: Argument #2 should be an array in /Applications/XAMPP/xamppfiles/htdocs/featureserver/modules/system/system.module on line 1015.

Oops

Had my directory structure wrong. Thanks!

Site Provision error

Hi Mig5

Following your directions worked fine to set up and verify your feature server as a platform in Aegir however when I try and provision a site I get the following error

Could not complete Drupal installation.
The fserver module is required but was not found. Please move it into the modules subdirectory.
An error occurred at function : drush_provision_drupal_provision_install

In looking I cannot see the fserver module in the modules folder or in the profiles/modules folder

While the drush make file was running this part of the output shows that it has successfully downloaded the fserver

The authenticity of host 'git.mig5.net (74.207.241.39)' can't be established.
RSA key fingerprint is 80:19:7c:1d:55:2c:85:57:5d:f7:ae:5a:f3:75:45:c7.
Are you sure you want to continue connecting (yes/no)? yes
fserver cloned from git@git.mig5.net:/drupal/modules/fserver. [ok]

Any ideas?
thanks

Hi, I'm not sure how you

Hi,

I'm not sure how you managed to use a makefile that appears to be trying to clone using the SSH protocol. Maybe an old makefile. I open up SSH access only for myself, so I imagine that's why it failed for you (despite suggesting it succeeded)

The current makefile should fetch fserver from development seed's feature server

projects[fserver][location] = "http://code.developmentseed.org/fserver"

You should build the platform using this makefile:

core = 6.x
projects[] =  drupal
projects[feature_server][type] = "profile"
projects[feature_server][download][type] = "git"
projects[feature_server][download][url] = "git://git.mig5.net/drupal/profiles/feature_server"

Thanks that worked great

Thanks

That was way to easy. Thanks

That was way to easy. Thanks for sharing.

That is amazing. Is there any

That is amazing.

Is there any way to download libraries from a profile to sites/all/libraries instead of profile/[profle-name]/libraries?

Not sure if you can set

Not sure if you can set something like that for individual components, but I do know that there is a --contrib-destination switch that might be useful here.

Also, if you are deviating from placing all components of an application in the install profile's directory, then maybe you simply want to do away with having an install profile or at least an install profile with its own makefile. The default destination for contrib is sites/all , so it is only the install profile's makefile causing it to go into profile/[profle-name]/libraries here.

So perhaps put all the contrib dependencies in the 'main' makefile or build file alongside drupal core, and don't have a makefile in your install profile.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <perl>, <php>, <python>, <ruby>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

CAPTCHA

This question is for testing whether you are a human visitor and to prevent automated spam submissions.