Start You Own Drupal Distribution with Drush Make. Part 1.

As a rule, we get used to enjoy some limited set of trusted modules, especially if we often have to work on typical projects.

I remember when I started working with Drupal, every time for each new project I collected fresh new versions of my favorite modules on It was monotonic mannual work and I wast a lot of time before starting new Drupal installation.

But after meeting with Drush Make I was really happy!

I will not tell about the installing this extension of Drupal Shell, yet immediately move on to writing .make file.

First of all we should start with two service lines:
; Core version
; ------------
; Each makefile should begin by declaring the core version of Drupal that all
; projects should be compatible with.
core = 7.x

; API version
; ------------
; Every makefile needs to declare it's Drush Make API version. This version of
; drush make uses API version "2".
api = 2

After that we need to indicate core version that we are going to use. To use the latest Drupal version we should write only following:
projects[drupal][type] = core

We can also type the version of the core that we need. In this case our .make file will be following:
core = 7.x
api = 2
projects[drupal][type] = core
projects[drupal][version] = 7.8

But we can use also PressFlow as core for our distribution. There is no any other way to obtaine PressFlow only to get it from GitHub.
For this porpouse pressflow.make was created:
core = 7.x
api = 2
projects[pressflow][type] = core
projects[pressflow][download][type] = git
projects[pressflow][download][url] = git://

If you have this file you can type:
$ drush make --prepare-install --tar pressflow.make pressflow

And in several minutes have pressflow.tar.gz

Ok, I describe below what each argument of drush make command means.

--prepare-install mean that Drush Make prepare "files" folder and "settings.php" file future installation, I remember I had often had to do it manually :-)

--tar will do archive .tar.gz with your distro.

The following parameters are the name of the our make file and the name of the target archive or folder if we miss --tar parameter.

Let's talk about how to add modules and themes in our distribution. Fairly complete documentation you can be find on But I'm going to provide several examples to cover main part of content of the document.

Lets start with modules. There is a good practice to put all contributed modules in the folder "sites/all/modules/contrib", and put your custom modules into "sites/all/modules/custom". I like Backup&Migrate module so I put it into each my distribution:

projects[backup_migrate][subdir] = "contrib"

In this case Drush Make get recommended version of the module and put it into "sites/all/modules/contrib".
But in some cases there is no recommended version, or if you want to use some selected version, you should input it in the instructions to Drush Make:

For example, if you want to use Defaul Content module, you should indicate the version of the module, because this modul have no recommended version yet:

projects[defaultcontent][subdir] = "contrib"
projects[defaultcontent][version] = "1.0-alpha4"

Also you can get latest version of module directly from GIT:

projects[addthis][subdir] = "contrib"
projects[addthis][download][type] = "git"
projects[addthis][download][url] = ""
projects[addthis][download][branch] = "7.x-2.x"

How to add themes?

projects[omega][type] = "theme"

We should touch at list one parameter to include project into distro, so we indicate that Omega is theme, but it is obvious for us.

And finnaly we can include in our distributions third party libraries, for example lets add colorbox to our distribution:

libraries[colorbox][download][type] = "get"
libraries[colorbox][download][url] = ""
libraries[colorbox][directory_name] = "colorbox"

The code will be putted into "sites/all/libraries/colorbox" folder.

I think this information will be enough to start you own experiments. I'm going to create the second part of the tutorial. Waiting the updates in my Blog.



With the pressflow settings I've got a update error each time I go to module admin page :
Undefined index: drupal in update_requirements(), line 36 in /var/www/pressflow/www/modules/update/update.instal.

I suppose it's ok since we don't want our pressflow file be override by durpal ones, but this message is quite annoying, is there a solution ?
I edit the update.instal file, and replace the "drupal" index by "pressflow", is there any other solution. I guess thaht if we use :
projects[drupal][type] = core
projects[drupal][download][type] = git
projects[drupal][download][url] = git://

The next update will replace pressflow core files by drupal ones ?

The best way will certainly be to use a [location], but does someone know is there an pressflow xml update url ?

This file look for a "drupal" project,