Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Dependency] Fix obsolete HEAD string check for lockfile entries #293

Merged
merged 2 commits into from
Jan 16, 2016

Conversation

manuyavuz
Copy link
Member

Fixes #291.

This check was failing for lockfile entries like Expecta (HEAD based on 1.0.5). We should if entry actually includes HEAD

@manuyavuz manuyavuz changed the title Yavuz/fix/dependency from string head [Dependency] Fix obsolete HEAD string check for lockfile entries Jan 8, 2016
@segiddins
Copy link
Member

@manuyavuz have an example? In my testing, the version but was always just ' HEAD'

@manuyavuz
Copy link
Member Author

Yes, for the following podfile:

source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
platform :ios, '8.0'

target 'Tests' do
  pod 'OHHTTPStubs'
  pod 'OCMock', :head
  pod 'OCMockito'
  pod 'Specta', :head
  pod 'Expecta', :head
end

I was having the Podfile.lock as such:

PODS:
  - Expecta (HEAD based on 1.0.5)
  - OCHamcrest (4.3.0)
  - OCMock (HEAD based on 3.2)
  - OCMockito (2.0.1):
    - OCHamcrest (~> 4.0)
  - OHHTTPStubs (4.6.0):
    - OHHTTPStubs/Default (= 4.6.0)
  - OHHTTPStubs/Core (4.6.0)
  - OHHTTPStubs/Default (4.6.0):
    - OHHTTPStubs/Core
    - OHHTTPStubs/JSON
    - OHHTTPStubs/NSURLSession
    - OHHTTPStubs/OHPathHelpers
  - OHHTTPStubs/JSON (4.6.0):
    - OHHTTPStubs/Core
  - OHHTTPStubs/NSURLSession (4.6.0):
    - OHHTTPStubs/Core
  - OHHTTPStubs/OHPathHelpers (4.6.0)
  - Specta (HEAD based on 1.0.5)

DEPENDENCIES:
  - Expecta (HEAD)
  - OCMock (HEAD)
  - OCMockito
  - OHHTTPStubs
  - Specta (HEAD)

SPEC CHECKSUMS:
  Expecta: e1c022fcd33910b6be89c291d2775b3fe27a89fe
  OCHamcrest: cd63d27f48a266d4412c0b295b01b8f0940efa81
  OCMock: 28def049ef47f996b515a8eeea958be7ccab2dbb
  OCMockito: f92ad4c6fac2841a88558879cfe517c40aebf91e
  OHHTTPStubs: cb1aefbbeb4de4e741644455d4b945538e5248a2
  Specta: ac94d110b865115fe60ff2c6d7281053c6f8e8a2

COCOAPODS: 0.39.0

@manuyavuz
Copy link
Member Author

And here is the trace of the crash that I took:

ArgumentError - Illformed requirement `" HEAD based on 1.0.5"`
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/Core/lib/cocoapods-core/requirement.rb:63:in `parse'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/Core/lib/cocoapods-core/requirement.rb:88:in `block in initialize'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/Core/lib/cocoapods-core/requirement.rb:88:in `map!'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/Core/lib/cocoapods-core/requirement.rb:88:in `initialize'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/Core/lib/cocoapods-core/requirement.rb:34:in `new'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/Core/lib/cocoapods-core/requirement.rb:34:in `create'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/Core/lib/cocoapods-core/dependency.rb:116:in `initialize'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/Core/lib/cocoapods-core/dependency.rb:362:in `new'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/Core/lib/cocoapods-core/dependency.rb:362:in `from_string'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb:60:in `add_child_vertex_to_graph'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb:68:in `add_to_dependency_graph'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb:32:in `block in generate_version_locking_dependencies'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb:31:in `each'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb:31:in `generate_version_locking_dependencies'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer/analyzer.rb:416:in `generate_version_locking_dependencies'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer/analyzer.rb:69:in `analyze'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer.rb:223:in `analyze'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer.rb:147:in `block in resolve_dependencies'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/user_interface.rb:63:in `section'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer.rb:146:in `resolve_dependencies'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/installer.rb:109:in `install!'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/command/project.rb:67:in `run_install_with_update'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/command/project.rb:97:in `run'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CLAide/lib/claide/command.rb:312:in `run'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/lib/cocoapods/command.rb:48:in `run'
/Users/manuyavuz/Development/OpenSource/Cocoapods/Rainforest/CocoaPods/bin/pod:44:in `<main>'

@manuyavuz
Copy link
Member Author

@segiddins any update on this?

@@ -350,7 +350,7 @@ def self.from_string(string)
version = match_data[2]
version = version.gsub(/[()]/, '') if version
case version
when ' HEAD'
when /HEAD/
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/ HEAD( \(based on #{Pod::Version::VERSION_PATTERN}\))?/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Legit.

This is needed to handle cases like `HEAD based on 1.0.5` string specifiers.
@manuyavuz manuyavuz force-pushed the yavuz/fix/dependencyFromStringHEAD branch from 21a2080 to 3d6fe79 Compare January 16, 2016 09:23
@segiddins
Copy link
Member

@manuyavuz 👍 with a CHANGELOG entry

segiddins added a commit that referenced this pull request Jan 16, 2016
…HEAD

[Dependency] Fix obsolete HEAD string check for lockfile entries
@segiddins segiddins merged commit 010fc61 into master Jan 16, 2016
@segiddins segiddins deleted the yavuz/fix/dependencyFromStringHEAD branch January 16, 2016 21:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants