miccolis suggested I post this issue here, from a discussion on #open_atrium. I though maybe this was due to something strange in our feature, but it sounds like this is a known issue, and maybe a deep one. So I'm just going to give very quick & basic account of something i can not tell you how to reproduce - though i could make our features available to look @ if that would be a help.

Basically i saw these errors when i moved local features to a dev site:

warning: Cannot modify header information - headers already sent by (output started at /MYSITE/sites/all/modules/contrib/features-DRUPAL-6--1/features.export.inc(590) : eval()'d code:5) in /MYSITE/includes/common.inc on line 148.

There were other errors as well, but miccolis suggested those may be unrelated

using:
Features 6.x-1.x-dev (2010-Jan-12)
Context 6.x-2.0-beta7
Spaces 6.x-2.0-beta6

BTW, here is the only other issue i found in the Features queue that even references eval() #532256: CTools/export integration - Including Panels export - and the description makes me wonder if that issue could provide any leads?

Comments

yhahn’s picture

Assigned: Unassigned » yhahn

After some debugging we've determined that this was caused by a dependency (strongarm) not being added correctly to the feature module. The feature was turned on on a new site and the dependency was not enabled, thus causing the problem.

My hunch is that ctools_component_features_export() is adding the system module as a dependency for variable components because that is who the table schema belongs to. Task is to see if this can be made smarter and detect strongarm as an additional dependency as it provides the export API.

yhahn’s picture

Status: Active » Fixed

Investigation shows that this was caused by a combination of factors.

1. The Strongarm module's CTools integration had the wrong API owner. (http://drupal.org/cvs?commit=324860)
1. Features CTools integration was assuming that the schema owner for each exportable was also the API owner for the module. This is 99% of the time true, but in this case the schema owner is system while the API owner is strongarm. (http://drupal.org/cvs?commit=324862)

These two commits fix the problem. However if you were using strongarm with features and have already exported features, you need to update _[myfeature]_ctools_plugin_api() in [myfeature].defaults.inc. It previously looked something like this:

function _myfeature_ctools_plugin_api() {
  $args = func_get_args();
  $module = array_shift($args);
  $api = array_shift($args);
  if ($module == "system" && $api == "strongarm") {
    return array("version" => 1);
  }
}

You need to replace system with strongarm so that it looks like this:

function _myfeature_ctools_plugin_api() {
  $args = func_get_args();
  $module = array_shift($args);
  $api = array_shift($args);
  if ($module == "strongarm" && $api == "strongarm") {
    return array("version" => 1);
  }
}

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.