code: function spawnRpmbuild(grunt, buildPath, options) {
  	return function(callback) {
  		// FIXME make the hard-coded target architecture platform configurable as well as targetVendor and targetOs
  		// --target noarch-redhat-linux
  		var buildroot = path.join(process.cwd(), buildPath);
  //		var topdir = path.join(process.cwd(), options.destination);
  		var specfile = path.join(process.cwd(), options.specFilepath);
                  var target = options.targetArch || 'noarch';
  		
  		// FIXME the --define command line parameter is not taken into account by rpmbuild so a macro definition must be specified in the spec file
  		var rpmbuildOptions = {
  			cmd: 'rpmbuild',
  			args: ['-bb', '--target', target, '--buildroot', buildroot, /*'--define=\'_topdir ' + topdir + '\'',*/ specfile],
  		};
  		
  		grunt.log.writeln('Spawning rpmbuild: %j', rpmbuildOptions);
  		grunt.util.spawn(rpmbuildOptions, function(err, result, code) {
  			// TODO check code [and result] for more detailed response
  			callback(err);
  		});
  	};
  }
docs: Execute rpmbuild as child process passing in the specific details for building this rpm.<br><br>
  <code>rpmbuild -bb --target noarch --buildroot '/path/to/destination/tmp' --define='_topdir /path/to/destination' '/path/to/destination/SPECS/project.spec'</code>
  
  @param {Grunt} grunt - the grunt instance.
  @param {String} buildPath - relative path to the destination folder where rpmbuilder folder structure resides.
  @param {Object} options - the options object.
  @returns {Function} async function that executes the callback once it is done.