dake 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/dake/executor.rb +1 -1
- data/lib/dake/resolver.rb +17 -18
- data/lib/dake/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e5cbfb1274b657c4a5e7c998d196af197ecbe2efe4ff8f48131a99220d5a76e3
         | 
| 4 | 
            +
              data.tar.gz: 5f58940173637dc3e4733f2cb242d88b4a2e3080054108101831576890648c10
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 78aa071f1564255a83ac88c241b2ea3756ef63abbd65f201d918d580e1cd81ae2ae56065801fa1808cfd62e642f7aacbabcecca48e9f74689793451acf6e0e3e
         | 
| 7 | 
            +
              data.tar.gz: e121ff5e715686e55d2922d16df895359b516809402b54223175b7c5c65245d9bdaa53496156aac5ccc9d9054b7ec135b5a71ccacc46486ceacb6ece01cd2efe
         | 
    
        data/lib/dake/executor.rb
    CHANGED
    
    | @@ -43,7 +43,7 @@ class DakeExecutor | |
| 43 43 | 
             
                  end
         | 
| 44 44 |  | 
| 45 45 | 
             
                  lock = Concurrent::ReadWriteLock.new
         | 
| 46 | 
            -
                   | 
| 46 | 
            +
                  rebuild_set.each { |step| queue << step if @dep_graph.dep_step[step].all? { |dep| not rebuild_set.include? dep} }
         | 
| 47 47 |  | 
| 48 48 | 
             
                  while next_step = queue.deq
         | 
| 49 49 | 
             
                    @pool.post(next_step) do |step|
         | 
    
        data/lib/dake/resolver.rb
    CHANGED
    
    | @@ -2,12 +2,12 @@ | |
| 2 2 | 
             
            # note that this is not nessesarily the complete graph,
         | 
| 3 3 | 
             
            # the graph is only used to produce the given targets
         | 
| 4 4 | 
             
            DepGraph = Struct.new(
         | 
| 5 | 
            -
                :succ_step, | 
| 6 | 
            -
                :dep_step, | 
| 7 | 
            -
                :step_list, | 
| 8 | 
            -
                :root_step, | 
| 9 | 
            -
                : | 
| 10 | 
            -
                :step_target | 
| 5 | 
            +
                :succ_step,   # a dict maps each step in the DepGraph to the steps depend on it
         | 
| 6 | 
            +
                :dep_step,    # a dict maps each step in the DepGraph to the steps it depends on
         | 
| 7 | 
            +
                :step_list,   # a list of steps represents one sequential execution order
         | 
| 8 | 
            +
                :root_step,   # a set of steps that hos no dependant
         | 
| 9 | 
            +
                :step_prereq, # a dict maps step to its prerequisite which has no corresponding step
         | 
| 10 | 
            +
                :step_target  # a dict maps each step in the DepGraph to its output files used while resolving targets
         | 
| 11 11 | 
             
            )
         | 
| 12 12 |  | 
| 13 13 | 
             
            class DakeResolver
         | 
| @@ -57,8 +57,8 @@ class DakeResolver | |
| 57 57 | 
             
                      else
         | 
| 58 58 | 
             
                        stack.pop
         | 
| 59 59 |  | 
| 60 | 
            -
                        if dep_graph. | 
| 61 | 
            -
                          step. | 
| 60 | 
            +
                        if dep_graph.step_prereq[step]
         | 
| 61 | 
            +
                          dep_graph.step_prereq[step].each do |prereq|
         | 
| 62 62 | 
             
                            if prereq.flag != '?' and not prereq.scheme.exist?
         | 
| 63 63 | 
             
                              raise "No step found for building file `#{prereq.scheme.path}'."
         | 
| 64 64 | 
             
                            end
         | 
| @@ -70,14 +70,10 @@ class DakeResolver | |
| 70 70 | 
             
                        end
         | 
| 71 71 |  | 
| 72 72 | 
             
                        if target_opts.build_mode == :check and (up_tree_steps.include? step or down_tree_steps.include? step)
         | 
| 73 | 
            -
                          if dep_graph. | 
| 74 | 
            -
                            need_rebuild << step | 
| 73 | 
            +
                          if dep_graph.dep_step[step].any? { |dep_step| need_rebuild.include? dep_step }
         | 
| 74 | 
            +
                            need_rebuild << step
         | 
| 75 75 | 
             
                          else
         | 
| 76 | 
            -
                            if dep_graph. | 
| 77 | 
            -
                              need_rebuild << step
         | 
| 78 | 
            -
                            else
         | 
| 79 | 
            -
                              need_rebuild << step if need_execute?(dep_graph.step_target[step], step)
         | 
| 80 | 
            -
                            end
         | 
| 76 | 
            +
                            need_rebuild << step if need_execute?(dep_graph.step_target[step], step)
         | 
| 81 77 | 
             
                          end
         | 
| 82 78 | 
             
                        end
         | 
| 83 79 |  | 
| @@ -239,12 +235,12 @@ class DakeResolver | |
| 239 235 | 
             
                step_list = []
         | 
| 240 236 | 
             
                visited = Set.new
         | 
| 241 237 | 
             
                path_visited = Set.new
         | 
| 242 | 
            -
                leaf_steps = Set.new
         | 
| 243 238 | 
             
                target_steps = Set.new
         | 
| 244 239 | 
             
                succ_step_dict = {}
         | 
| 245 240 | 
             
                dep_step_dict = {}
         | 
| 246 241 | 
             
                dep_step_list = {}
         | 
| 247 242 | 
             
                succ_target_dict = {}
         | 
| 243 | 
            +
                step_prereq_dict = {}
         | 
| 248 244 |  | 
| 249 245 | 
             
                target_pairs.each do |target_name, target_opts|
         | 
| 250 246 | 
             
                  if target_opts.tag
         | 
| @@ -275,6 +271,10 @@ class DakeResolver | |
| 275 271 | 
             
                      step.prerequisites.map! { |file| @analyzer.analyze_file(file, :prerequisites, step) }.flatten!
         | 
| 276 272 | 
             
                      step.prerequisites.each do |dep|
         | 
| 277 273 | 
             
                        dep_steps = find_steps(dep.scheme, dep.tag)
         | 
| 274 | 
            +
                        if dep_steps.empty?
         | 
| 275 | 
            +
                          step_prereq_dict[step] ||= Set.new
         | 
| 276 | 
            +
                          step_prereq_dict[step] << dep
         | 
| 277 | 
            +
                        end
         | 
| 278 278 | 
             
                        dep_steps.each do |dep_step|
         | 
| 279 279 | 
             
                          dep_step_dict[step] << dep_step
         | 
| 280 280 | 
             
                          succ_step_dict[dep_step] ||= Set.new
         | 
| @@ -302,11 +302,10 @@ class DakeResolver | |
| 302 302 | 
             
                      stack.pop
         | 
| 303 303 | 
             
                      path_visited.delete step
         | 
| 304 304 | 
             
                      step_list << step
         | 
| 305 | 
            -
                      leaf_steps << step if dep_step_dict[step].empty?
         | 
| 306 305 | 
             
                    end
         | 
| 307 306 | 
             
                  end
         | 
| 308 307 | 
             
                end
         | 
| 309 308 | 
             
                root_steps = target_steps.select { |step| succ_step_dict[step].empty? }.to_set
         | 
| 310 | 
            -
                DepGraph.new(succ_step_dict, dep_step_dict, step_list, root_steps,  | 
| 309 | 
            +
                DepGraph.new(succ_step_dict, dep_step_dict, step_list, root_steps, step_prereq_dict, succ_target_dict)
         | 
| 311 310 | 
             
              end
         | 
| 312 311 | 
             
            end
         | 
    
        data/lib/dake/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: dake
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - minor6th
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019-04- | 
| 11 | 
            +
            date: 2019-04-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |