autoproj 2.15.1 → 2.16.0
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/autoproj/configuration.rb +34 -0
- data/lib/autoproj/ops/configuration.rb +24 -3
- data/lib/autoproj/package_set.rb +0 -17
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj.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: bb77cb6d5c3c156ae3d665933ec7380f5b0ae491767b87c6e6f25c9c96966885
         | 
| 4 | 
            +
              data.tar.gz: 1474ca4f6e00f46dc70631f25c70e0cf0340d85f62101053117faf79ed65bd21
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e1fb865f1ecdfa9d290c9dbb6048e601ca99f8e691643a36ada2528137c47819a30172e7abf9bd3d5cd91c44148fa0b8a8793b4a6783fb9bee52661cad960777
         | 
| 7 | 
            +
              data.tar.gz: 6c9b821c1158e70bdb9a98536998dafe6270f4bb778646171d4691cc82fe0ce9828e263fda268ebaeced020cc7dcdfd30a33b9e5ea5593774f1ffe39eb0326c7
         | 
| @@ -606,5 +606,39 @@ module Autoproj | |
| 606 606 | 
             
                        end
         | 
| 607 607 | 
             
                        result
         | 
| 608 608 | 
             
                    end
         | 
| 609 | 
            +
             | 
| 610 | 
            +
                    # Allows to load a seed-config.yml file (also from a buildconf repository)
         | 
| 611 | 
            +
                    # rather than providing it before checkout using the --seed-config paramater
         | 
| 612 | 
            +
                    # of the autoproj_bootstrap script
         | 
| 613 | 
            +
                    # this allows to bootstrap with --no-interactive and still apply a custom config e.g. in CI/CD
         | 
| 614 | 
            +
                    # The call to this function has to be in the init.rb of the buildconf BEFORE any other
         | 
| 615 | 
            +
                    # config option, e.g. the git server configuration settings
         | 
| 616 | 
            +
                    # The filename parameter is the name of the config seed yml file in the repository
         | 
| 617 | 
            +
                    def load_config_once(filename, config_dir: Autoproj.workspace.config_dir)
         | 
| 618 | 
            +
                        seed_config = File.expand_path(filename, config_dir)
         | 
| 619 | 
            +
             | 
| 620 | 
            +
                        return if get("default_config_applied_#{seed_config}", false)
         | 
| 621 | 
            +
             | 
| 622 | 
            +
                        Autoproj.message "loading seed config #{seed_config}"
         | 
| 623 | 
            +
                        load path: seed_config
         | 
| 624 | 
            +
                        set "default_config_applied_#{seed_config}", true, true
         | 
| 625 | 
            +
                    end
         | 
| 626 | 
            +
             | 
| 627 | 
            +
                    # Similar to load_config_once but asks the user if the default config should be applied
         | 
| 628 | 
            +
                    def load_config_once_with_permission(filename, default: "yes", config_dir: Autoproj.workspace.config_dir)
         | 
| 629 | 
            +
                        seed_config = File.expand_path(filename, config_dir)
         | 
| 630 | 
            +
                        # only run this code if config has not beed applied already (don't run when reconfiguring)
         | 
| 631 | 
            +
                        return if has_value_for?("use_default_config_#{seed_config}")
         | 
| 632 | 
            +
             | 
| 633 | 
            +
                        declare "use_default_config_#{seed_config}",
         | 
| 634 | 
            +
                                "boolean",
         | 
| 635 | 
            +
                                default: default,
         | 
| 636 | 
            +
                                doc: ["Should the default workspace config be used?",
         | 
| 637 | 
            +
                                      "This buildconf denines a default configuration in the buildconf (#{seed_config})",
         | 
| 638 | 
            +
                                      "Should it be applied?"]
         | 
| 639 | 
            +
                        if get("use_default_config_#{seed_config}")
         | 
| 640 | 
            +
                            load_config_once(filename, config_dir: config_dir)
         | 
| 641 | 
            +
                        end
         | 
| 642 | 
            +
                    end
         | 
| 609 643 | 
             
                end
         | 
| 610 644 | 
             
            end
         | 
| @@ -32,10 +32,24 @@ module Autoproj | |
| 32 32 | 
             
                                    @dag.add_edge p, root_pkg_set
         | 
| 33 33 | 
             
                                end
         | 
| 34 34 | 
             
                            end
         | 
| 35 | 
            +
                        end
         | 
| 35 36 |  | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 37 | 
            +
                        def verify_acyclic
         | 
| 38 | 
            +
                            return if @dag.acyclic?
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                            Autoproj.fatal "The package sets form (a) cycle(s)"
         | 
| 41 | 
            +
                            @dag.cycles.each_with_index do |cycle, index|
         | 
| 42 | 
            +
                                Autoproj.fatal "== Cycle #{index}"
         | 
| 43 | 
            +
                                (cycle + cycle[0, 1]).each_cons(2) do |a, b|
         | 
| 44 | 
            +
                                    if b.imports.include?(a)
         | 
| 45 | 
            +
                                        Autoproj.fatal "  #{b.name} depends on #{a.name} in its source.yml"
         | 
| 46 | 
            +
                                    else
         | 
| 47 | 
            +
                                        Autoproj.fatal "  #{b.name} is after #{a.name} in the package_sets section of the manifest"
         | 
| 48 | 
            +
                                    end
         | 
| 49 | 
            +
                                end
         | 
| 38 50 | 
             
                            end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                            raise ConfigError.new "cycles in package set dependencies"
         | 
| 39 53 | 
             
                        end
         | 
| 40 54 |  | 
| 41 55 | 
             
                        # Flatten the hierarchy, a establish a sorting
         | 
| @@ -363,6 +377,7 @@ module Autoproj | |
| 363 377 | 
             
                        # the local package set (by main configuration) last
         | 
| 364 378 | 
             
                        def sort_package_sets_by_import_order(package_sets, root_pkg_set)
         | 
| 365 379 | 
             
                            c = PackageSetHierarchy.new(package_sets, root_pkg_set)
         | 
| 380 | 
            +
                            c.verify_acyclic
         | 
| 366 381 | 
             
                            sorted_pkg_sets = c.flatten
         | 
| 367 382 |  | 
| 368 383 | 
             
                            if sorted_pkg_sets.last != root_pkg_set
         | 
| @@ -626,12 +641,18 @@ module Autoproj | |
| 626 641 | 
             
                            root_pkg_set.imports.each do |pkg_set|
         | 
| 627 642 | 
             
                                pkg_set.explicit = true
         | 
| 628 643 | 
             
                            end
         | 
| 644 | 
            +
             | 
| 645 | 
            +
                            # sort packages, main package is the last
         | 
| 629 646 | 
             
                            package_sets = sort_package_sets_by_import_order(package_sets, root_pkg_set)
         | 
| 630 647 | 
             
                            ws.manifest.reset_package_sets
         | 
| 631 648 | 
             
                            package_sets.each do |pkg_set|
         | 
| 632 | 
            -
                                ws.load_if_present(pkg_set, pkg_set.local_dir, "init.rb")
         | 
| 633 649 | 
             
                                ws.manifest.register_package_set(pkg_set)
         | 
| 634 650 | 
             
                            end
         | 
| 651 | 
            +
             | 
| 652 | 
            +
                            ws.manifest.each_package_set do |pkg_set|
         | 
| 653 | 
            +
                                ws.load_if_present(pkg_set, pkg_set.local_dir, "init.rb")
         | 
| 654 | 
            +
                            end
         | 
| 655 | 
            +
             | 
| 635 656 | 
             
                            failures
         | 
| 636 657 | 
             
                        end
         | 
| 637 658 | 
             
                    end
         | 
    
        data/lib/autoproj/package_set.rb
    CHANGED
    
    | @@ -793,23 +793,6 @@ module Autoproj | |
| 793 793 | 
             
                        vcs
         | 
| 794 794 | 
             
                    end
         | 
| 795 795 |  | 
| 796 | 
            -
                    # Recursively resolve imports for a given package set
         | 
| 797 | 
            -
                    def self.resolve_imports(pkg_set, parents = Set.new)
         | 
| 798 | 
            -
                        return Set.new if pkg_set.imports.empty?
         | 
| 799 | 
            -
             | 
| 800 | 
            -
                        updated_parents = parents | [pkg_set]
         | 
| 801 | 
            -
             | 
| 802 | 
            -
                        imports = pkg_set.imports.dup
         | 
| 803 | 
            -
                        pkg_set.imports.each do |p|
         | 
| 804 | 
            -
                            if parents.include?(p)
         | 
| 805 | 
            -
                                raise "Cycling dependency between package sets encountered:" \
         | 
| 806 | 
            -
                                      "#{p.name} <--> #{pkg_set.name}"
         | 
| 807 | 
            -
                            end
         | 
| 808 | 
            -
                            imports.merge(resolve_imports(p, updated_parents))
         | 
| 809 | 
            -
                        end
         | 
| 810 | 
            -
                        imports
         | 
| 811 | 
            -
                    end
         | 
| 812 | 
            -
             | 
| 813 796 | 
             
                    # Enumerates the Autobuild::Package instances that are defined in this
         | 
| 814 797 | 
             
                    # source
         | 
| 815 798 | 
             
                    def each_package
         | 
    
        data/lib/autoproj/version.rb
    CHANGED
    
    
    
        data/lib/autoproj.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: autoproj
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.16.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sylvain Joyeux
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-07-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: autobuild
         |