As of now, you blow the cache, which is global. We should add a specific
cache tag destroy command.

We could add the software description itself to the shasum for the tag,
which solves for the development case in the main - you would only have to
worry if the build steps remained identical.
On Mar 18, 2014 7:30 PM, "Serdar Sutay" <notifications@github.com> wrote:

> In lib/omnibus/install_path_cache.rb:
>
> > +      # Accumulate an array of all the software projects that come before
> > +      # the name and version we are tagging. So if you have
> > +      #
> > +      # build_order = [ 1, 2, 3, 4, 5 ]
> > +      #
> > +      # And we are tagging 3, you would get dep_list = [ 1, 2 ]
> > +      dep_list = @software.project.library.build_order.take_while do |dep|
> > +        if dep.name == @software.name && dep.version == @software.version
> > +          false
> > +        else
> > +          true
> > +        end
> > +      end
> > +      dep_string = dep_list.map { |i| "#{i.name}-#{i.version}" }.join('-')
> > +      digest = Digest::SHA256.hexdigest(dep_string)
> > +      "#{name}-#{version}-#{digest}"
>
> Say a previous build fails for software {:name => "b", :version => "1"}after building {:name
> => "a", :version => "1"}. And I realize that I need to change a without
> changing its `version.
>
> How do I say that the system should rebuild a since its version and name
> doesn't change but it changes?
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/opscode/omnibus-ruby/pull/105/files#r10735092>
> .
>