def build
      log.info(log_key) { "Starting build" }
      shasum # ensure shashum is calculated before build since the build can alter the shasum
      log.internal(log_key) { "Cached builder checksum before build: #{shasum}" }
      if software.overridden?
        log.info(log_key) do
          "Version overridden from #{software.default_version || "n/a"} to "\
          "#{software.version}"
        end
      end

      measure("Build #{software.name}") do
        build_commands.each do |command|
          execute(command)
        end
      end

      log.info(log_key) { "Finished build" }
    end
def build
      log.info(log_key) { "Starting build" }
      shasum # ensure shashum is calculated before build since the build can alter the shasum
      log.internal(log_key) { "Cached builder checksum before build: #{shasum}" }
      if software.overridden?
        log.info(log_key) do
          "Version overridden from #{software.default_version || "n/a"} to "\
          "#{software.version}"
        end
      end

      measure("Build #{software.name}") do
        build_commands.each do |command|
          execute(command)
        end
      end

      log.info(log_key) { "Finished build" }
    end
@!endgroup
 --------------------------------------------------

 @!group Public API

 The following methods are considered part of the public API for a
 builder. All DSL methods are also considered part of the public API.
 --------------------------------------------------

 Execute all the {BuildCommand} instances, in order, for this builder.

 @return [void]