p4ruby 1.0.11 → 2012.1Beta
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.
- data/install.rb +66 -35
- data/p4ruby.gemspec +3 -2
- metadata +53 -49
    
        data/install.rb
    CHANGED
    
    | @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            #
         | 
| 2 2 | 
             
            # Author: James M. Lawrence <quixoticsycophant@gmail.com>.
         | 
| 3 3 | 
             
            #
         | 
| 4 | 
            +
            #Updated by Brett Bates and Jennifer Bottom.
         | 
| 4 5 |  | 
| 5 6 | 
             
            require 'net/ftp'
         | 
| 6 7 | 
             
            require 'rbconfig'
         | 
| @@ -8,6 +9,7 @@ require 'ostruct' | |
| 8 9 | 
             
            require 'fileutils'
         | 
| 9 10 | 
             
            require 'optparse'
         | 
| 10 11 | 
             
            require 'pathname'
         | 
| 12 | 
            +
            require 'rubygems'
         | 
| 11 13 |  | 
| 12 14 | 
             
            class Installer
         | 
| 13 15 | 
             
              include FileUtils
         | 
| @@ -112,6 +114,11 @@ class Installer | |
| 112 114 | 
             
                  raise "error: ruby must be configured with --enable-shared"
         | 
| 113 115 | 
             
                end
         | 
| 114 116 |  | 
| 117 | 
            +
                @s.ftp = Net::FTP.new(SERVER).tap { |t|
         | 
| 118 | 
            +
                  t.passive = true
         | 
| 119 | 
            +
                  t.login
         | 
| 120 | 
            +
                }
         | 
| 121 | 
            +
             | 
| 115 122 | 
             
                @s.p4api =  LazyStruct.new.tap { |t|
         | 
| 116 123 | 
             
                  t.basename = P4API_REMOTE_BASENAME
         | 
| 117 124 | 
             
                }
         | 
| @@ -122,46 +129,36 @@ class Installer | |
| 122 129 |  | 
| 123 130 | 
             
                @s.specs = [ @s.p4ruby, @s.p4api ]
         | 
| 124 131 | 
             
                @s.specs.each { |spec|
         | 
| 125 | 
            -
                  spec. | 
| 126 | 
            -
                    DISTFILES_DIR + spec.basename
         | 
| 127 | 
            -
                  }
         | 
| 132 | 
            +
                  spec.local = DISTFILES_DIR + spec.basename
         | 
| 128 133 | 
             
                }
         | 
| 129 134 |  | 
| 130 | 
            -
                unless @s. | 
| 131 | 
            -
                  @s. | 
| 132 | 
            -
                    guess_platform
         | 
| 133 | 
            -
                  }
         | 
| 135 | 
            +
                unless @s.version
         | 
| 136 | 
            +
                  @s.version = latest_version
         | 
| 134 137 | 
             
                end
         | 
| 135 138 |  | 
| 136 | 
            -
                 | 
| 137 | 
            -
             | 
| 138 | 
            -
             | 
| 139 | 
            -
                   | 
| 139 | 
            +
                @s.version_dir = SERVER_TOP_DIR + "r#{@s.version}"
         | 
| 140 | 
            +
             | 
| 141 | 
            +
                unless @s.platform
         | 
| 142 | 
            +
                  @s.platform = guess_platform
         | 
| 140 143 | 
             
                end
         | 
| 141 144 |  | 
| 142 | 
            -
                @s. | 
| 143 | 
            -
                   | 
| 144 | 
            -
                 | 
| 145 | 
            +
                if @s.platform =~ /nt/
         | 
| 146 | 
            +
                  @s.p4api.remote = @s.version_dir + "bin.#{@s.platform}"
         | 
| 147 | 
            +
                else
         | 
| 148 | 
            +
                  @s.p4api.remote = @s.version_dir + "bin.#{@s.platform}" + @s.p4api.basename
         | 
| 149 | 
            +
                  @s.p4ruby.remote = @s.version_dir + "bin.tools" + @s.p4ruby.basename
         | 
| 150 | 
            +
                end
         | 
| 145 151 |  | 
| 146 | 
            -
                @s.p4api.attribute(:remote) {
         | 
| 147 | 
            -
                  @s.version_dir + "bin.#{@s.platform}" + @s.p4api.basename
         | 
| 148 | 
            -
                }
         | 
| 149 | 
            -
                @s.p4ruby.attribute(:remote) {
         | 
| 150 | 
            -
                  @s.version_dir + "bin.tools" + @s.p4ruby.basename
         | 
| 151 | 
            -
                }
         | 
| 152 152 |  | 
| 153 | 
            -
                @s.attribute(:ftp) {
         | 
| 154 | 
            -
                  Net::FTP.new(SERVER).tap { |t|
         | 
| 155 | 
            -
                    t.passive = true
         | 
| 156 | 
            -
                    t.login
         | 
| 157 | 
            -
                  }
         | 
| 158 | 
            -
                }
         | 
| 159 153 | 
             
              end
         | 
| 160 154 |  | 
| 161 155 | 
             
              def guess_cpu
         | 
| 162 156 | 
             
                if CONFIG["target_os"] =~ %r!darwin!
         | 
| 163 | 
            -
                   | 
| 164 | 
            -
             | 
| 157 | 
            +
                  if CONFIG["build"] =~ /i686|x86_64/
         | 
| 158 | 
            +
                    "x86_64"
         | 
| 159 | 
            +
                  else
         | 
| 160 | 
            +
                    "x86"
         | 
| 161 | 
            +
                  end
         | 
| 165 162 | 
             
                else
         | 
| 166 163 | 
             
                  case CONFIG["target_cpu"]
         | 
| 167 164 | 
             
                  when %r!ia!i
         | 
| @@ -183,11 +180,17 @@ class Installer | |
| 183 180 | 
             
                  version = match.captures.join
         | 
| 184 181 | 
             
                  cpu = guess_cpu
         | 
| 185 182 | 
             
                  platforms = self.platforms
         | 
| 186 | 
            -
                  (0..version.to_i).map { |n|
         | 
| 183 | 
            +
                  built_platforms = (0..version.to_i).map { |n|
         | 
| 187 184 | 
             
                    [os, n.to_s, cpu].join
         | 
| 188 185 | 
             
                  }.select { |platform|
         | 
| 189 186 | 
             
                    platforms.include? platform
         | 
| 190 | 
            -
                  } | 
| 187 | 
            +
                  }
         | 
| 188 | 
            +
                  if os =~ /darwin/
         | 
| 189 | 
            +
                    built_platforms.pop
         | 
| 190 | 
            +
                    built_platforms.last
         | 
| 191 | 
            +
                  else
         | 
| 192 | 
            +
                    built_platforms.last
         | 
| 193 | 
            +
                  end
         | 
| 191 194 | 
             
                else
         | 
| 192 195 | 
             
                  nil
         | 
| 193 196 | 
             
                end
         | 
| @@ -299,7 +302,15 @@ class Installer | |
| 299 302 | 
             
              end
         | 
| 300 303 |  | 
| 301 304 | 
             
              def latest_version
         | 
| 302 | 
            -
                versions. | 
| 305 | 
            +
                versions.reverse_each{ |v|
         | 
| 306 | 
            +
                  begin
         | 
| 307 | 
            +
                    remote_files_matching("#{SERVER_TOP_DIR}/r#{v}/bin.tools",/p4ruby/) do
         | 
| 308 | 
            +
                      return v
         | 
| 309 | 
            +
                    end
         | 
| 310 | 
            +
                  rescue
         | 
| 311 | 
            +
                    next
         | 
| 312 | 
            +
                  end
         | 
| 313 | 
            +
                }
         | 
| 303 314 | 
             
              end
         | 
| 304 315 |  | 
| 305 316 | 
             
              def make(*args)
         | 
| @@ -372,6 +383,21 @@ class Installer | |
| 372 383 | 
             
                end
         | 
| 373 384 | 
             
              end
         | 
| 374 385 |  | 
| 386 | 
            +
              def find_ruby_version(spec)
         | 
| 387 | 
            +
                remote_files_matching(spec.remote, /p4ruby\d\d.exe/) {|r_ver|
         | 
| 388 | 
            +
             | 
| 389 | 
            +
                  #Find the latest version of p4ruby for this version of ruby
         | 
| 390 | 
            +
                  v_max = CONFIG["MAJOR"]
         | 
| 391 | 
            +
                  v_min = CONFIG["MINOR"]
         | 
| 392 | 
            +
                  version = [v_max, v_min].join
         | 
| 393 | 
            +
                  if r_ver.to_s =~ /p4ruby#{version}.exe/
         | 
| 394 | 
            +
                    return "p4ruby#{version}.exe"
         | 
| 395 | 
            +
                  end
         | 
| 396 | 
            +
             | 
| 397 | 
            +
                }
         | 
| 398 | 
            +
                nil
         | 
| 399 | 
            +
              end
         | 
| 400 | 
            +
             | 
| 375 401 | 
             
              def windows_install
         | 
| 376 402 | 
             
                #
         | 
| 377 403 | 
             
                # For Windows, p4ruby is located in the p4api directory on the
         | 
| @@ -379,8 +405,12 @@ class Installer | |
| 379 405 | 
             
                #
         | 
| 380 406 | 
             
                spec = @s.p4api
         | 
| 381 407 |  | 
| 382 | 
            -
                 | 
| 383 | 
            -
                spec. | 
| 408 | 
            +
                p4ruby_exe = find_ruby_version(spec)
         | 
| 409 | 
            +
                if p4ruby_exe && !(spec.remote.to_s =~ /p4ruby/)
         | 
| 410 | 
            +
                  spec.remote += p4ruby_exe.to_s
         | 
| 411 | 
            +
                else
         | 
| 412 | 
            +
                  abort("Failed to find a suitable p4ruby executable for ruby #{CONFIG["MAJOR"]}.#{CONFIG["MINOR"]}")
         | 
| 413 | 
            +
                end
         | 
| 384 414 | 
             
                fetch_spec(spec)
         | 
| 385 415 |  | 
| 386 416 | 
             
                error = lambda {
         | 
| @@ -390,12 +420,13 @@ class Installer | |
| 390 420 | 
             
                }
         | 
| 391 421 |  | 
| 392 422 | 
             
                puts "running Perforce P4Ruby Windows installer..."
         | 
| 393 | 
            -
                if system(spec.local, "/S", "/v/qn")
         | 
| 423 | 
            +
                if system(spec.local.to_s, "/S", "/v", "/qn")
         | 
| 394 424 | 
             
                  if @s.gem_config
         | 
| 395 425 | 
             
                    sleep(1)
         | 
| 396 426 | 
             
                    raw_install_to_gem_install
         | 
| 397 427 | 
             
                    sleep(1)
         | 
| 398 | 
            -
             | 
| 428 | 
            +
            #Without the -x flag a permissions error raised on Windows.
         | 
| 429 | 
            +
                    unless system(spec.local, "/V", "/S", "/x", "/v/qn")
         | 
| 399 430 | 
             
                      # We don't much care if this fails; just write to the log
         | 
| 400 431 | 
             
                      puts "Note: the Perforce P4Ruby Windows uninstaller failed."
         | 
| 401 432 | 
             
                    end
         | 
    
        data/p4ruby.gemspec
    CHANGED
    
    | @@ -1,15 +1,16 @@ | |
| 1 1 |  | 
| 2 2 | 
             
            Gem::Specification.new { |t| 
         | 
| 3 3 | 
             
              t.name = "p4ruby"
         | 
| 4 | 
            -
              t.version = " | 
| 4 | 
            +
              t.version = "2012.1Beta"
         | 
| 5 5 | 
             
              t.summary = "Ruby interface to the Perforce API"
         | 
| 6 6 | 
             
              t.description = t.summary + "."
         | 
| 7 7 | 
             
              t.author = "Perforce Software (ruby gem by James M. Lawrence)"
         | 
| 8 | 
            -
              t.email = " | 
| 8 | 
            +
              t.email = "p4ruby@perforce.com"
         | 
| 9 9 | 
             
              t.homepage = "http://p4ruby.rubyforge.org"
         | 
| 10 10 | 
             
              t.rubyforge_project = "p4ruby"
         | 
| 11 11 | 
             
              t.extensions << "Rakefile"
         | 
| 12 12 | 
             
              t.add_dependency "rake"
         | 
| 13 | 
            +
              t.add_dependency "rdoc"
         | 
| 13 14 | 
             
              t.require_paths << "ext"
         | 
| 14 15 |  | 
| 15 16 | 
             
              t.files = %w[
         | 
    
        metadata
    CHANGED
    
    | @@ -1,57 +1,67 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: p4ruby
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
               | 
| 5 | 
            -
               | 
| 6 | 
            -
              - 1
         | 
| 7 | 
            -
              - 0
         | 
| 8 | 
            -
              - 11
         | 
| 9 | 
            -
              version: 1.0.11
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 2012.1Beta
         | 
| 5 | 
            +
              prerelease: 6
         | 
| 10 6 | 
             
            platform: ruby
         | 
| 11 | 
            -
            authors: | 
| 7 | 
            +
            authors:
         | 
| 12 8 | 
             
            - Perforce Software (ruby gem by James M. Lawrence)
         | 
| 13 9 | 
             
            autorequire: 
         | 
| 14 10 | 
             
            bindir: bin
         | 
| 15 11 | 
             
            cert_chain: []
         | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
            dependencies: 
         | 
| 20 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 12 | 
            +
            date: 2013-05-03 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 21 15 | 
             
              name: rake
         | 
| 16 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: '0'
         | 
| 22 | 
            +
              type: :runtime
         | 
| 22 23 | 
             
              prerelease: false
         | 
| 23 | 
            -
               | 
| 24 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 24 25 | 
             
                none: false
         | 
| 25 | 
            -
                requirements: | 
| 26 | 
            -
                - -  | 
| 27 | 
            -
                  - !ruby/object:Gem::Version | 
| 28 | 
            -
                     | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 26 | 
            +
                requirements:
         | 
| 27 | 
            +
                - - ! '>='
         | 
| 28 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            +
                    version: '0'
         | 
| 30 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 31 | 
            +
              name: rdoc
         | 
| 32 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 33 | 
            +
                none: false
         | 
| 34 | 
            +
                requirements:
         | 
| 35 | 
            +
                - - ! '>='
         | 
| 36 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 37 | 
            +
                    version: '0'
         | 
| 31 38 | 
             
              type: :runtime
         | 
| 32 | 
            -
               | 
| 39 | 
            +
              prerelease: false
         | 
| 40 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 41 | 
            +
                none: false
         | 
| 42 | 
            +
                requirements:
         | 
| 43 | 
            +
                - - ! '>='
         | 
| 44 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 45 | 
            +
                    version: '0'
         | 
| 33 46 | 
             
            description: Ruby interface to the Perforce API.
         | 
| 34 | 
            -
            email:  | 
| 47 | 
            +
            email: p4ruby@perforce.com
         | 
| 35 48 | 
             
            executables: []
         | 
| 36 | 
            -
             | 
| 37 | 
            -
            extensions: 
         | 
| 49 | 
            +
            extensions:
         | 
| 38 50 | 
             
            - Rakefile
         | 
| 39 | 
            -
            extra_rdoc_files: | 
| 51 | 
            +
            extra_rdoc_files:
         | 
| 40 52 | 
             
            - README
         | 
| 41 | 
            -
            files: | 
| 53 | 
            +
            files:
         | 
| 42 54 | 
             
            - README
         | 
| 43 55 | 
             
            - CHANGES
         | 
| 44 56 | 
             
            - Rakefile
         | 
| 45 57 | 
             
            - install.rb
         | 
| 46 58 | 
             
            - p4ruby.gemspec
         | 
| 47 | 
            -
            has_rdoc: true
         | 
| 48 59 | 
             
            homepage: http://p4ruby.rubyforge.org
         | 
| 49 60 | 
             
            licenses: []
         | 
| 50 | 
            -
             | 
| 51 61 | 
             
            post_install_message: 
         | 
| 52 | 
            -
            rdoc_options: | 
| 62 | 
            +
            rdoc_options:
         | 
| 53 63 | 
             
            - --title
         | 
| 54 | 
            -
            -  | 
| 64 | 
            +
            - ! 'P4Ruby: Ruby interface to the Perforce API'
         | 
| 55 65 | 
             
            - --main
         | 
| 56 66 | 
             
            - README
         | 
| 57 67 | 
             
            - --exclude
         | 
| @@ -62,31 +72,25 @@ rdoc_options: | |
| 62 72 | 
             
            - install.rb
         | 
| 63 73 | 
             
            - --exclude
         | 
| 64 74 | 
             
            - p4ruby.gemspec
         | 
| 65 | 
            -
            require_paths: | 
| 75 | 
            +
            require_paths:
         | 
| 66 76 | 
             
            - lib
         | 
| 67 77 | 
             
            - ext
         | 
| 68 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 78 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 69 79 | 
             
              none: false
         | 
| 70 | 
            -
              requirements: | 
| 71 | 
            -
              - -  | 
| 72 | 
            -
                - !ruby/object:Gem::Version | 
| 73 | 
            -
                   | 
| 74 | 
            -
             | 
| 75 | 
            -
                  version: "0"
         | 
| 76 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 80 | 
            +
              requirements:
         | 
| 81 | 
            +
              - - ! '>='
         | 
| 82 | 
            +
                - !ruby/object:Gem::Version
         | 
| 83 | 
            +
                  version: '0'
         | 
| 84 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 77 85 | 
             
              none: false
         | 
| 78 | 
            -
              requirements: | 
| 79 | 
            -
              - -  | 
| 80 | 
            -
                - !ruby/object:Gem::Version | 
| 81 | 
            -
                   | 
| 82 | 
            -
                  - 0
         | 
| 83 | 
            -
                  version: "0"
         | 
| 86 | 
            +
              requirements:
         | 
| 87 | 
            +
              - - ! '>'
         | 
| 88 | 
            +
                - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                  version: 1.3.1
         | 
| 84 90 | 
             
            requirements: []
         | 
| 85 | 
            -
             | 
| 86 91 | 
             
            rubyforge_project: p4ruby
         | 
| 87 | 
            -
            rubygems_version: 1. | 
| 92 | 
            +
            rubygems_version: 1.8.25
         | 
| 88 93 | 
             
            signing_key: 
         | 
| 89 94 | 
             
            specification_version: 3
         | 
| 90 95 | 
             
            summary: Ruby interface to the Perforce API
         | 
| 91 96 | 
             
            test_files: []
         | 
| 92 | 
            -
             |