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

CocoaPods Dependency Management #4

Open
rwyland opened this issue Jul 5, 2012 · 7 comments
Open

CocoaPods Dependency Management #4

rwyland opened this issue Jul 5, 2012 · 7 comments

Comments

@rwyland
Copy link

rwyland commented Jul 5, 2012

I'm working on adding your ports to the CocoPods repository to enable dependency management of your frameworks and wanted to check in with you to make sure I'm doing this right.

http://cocoapods.org/

I'm going to split up iOSPorts into 5 separate CocoaPods as you have listed in your readme and then include the inner dependencies as needed. Something I noticed is that each dependency has a different license which can be accounted for in each CocoaPod.

Also, I am going to add a CocoaPod for iOSPorts project that includes all 5 of the inner dependencies to allow devs just just include everything. This will have your license on it.

Does this sound correct? Did you want to help out with the process?

Thanks

@syzdek
Copy link
Member

syzdek commented Jul 5, 2012

Hi Rob,

Your project looks intriguing. Do you have many users? I've noticed that
most of the questions I receive about iOS Ports come from devs that seem
very uncomfortable with the command line or UNIXy. This could possibly be
a result of Windows Devs moving to iOS and using iOS Ports to interact with
Active Directory.

Does CocoaPod have the ability to run arbitrary commands? If you look
through iOS Ports, there is a lack of source code. iOS Ports uses
downloads the official distribution tar files (using curl), compares the
MD5 checksums, unpacks the source, patches the source (if needed), copies
known configuration files into place, and then compiles the project. All
but the last step is completed by calling an external target to a Makefile.

Can this be easily accomplished by CocoaPod or would iOS Ports need to be
completely unwound and essentially redesigned to fit it into CocoaPod?

--David M. Syzdek

On Thu, Jul 5, 2012 at 10:17 AM, Rob W <
reply@reply.github.com>
wrote:

I'm working on adding your ports to the CocoPods repository to enable
dependency management of your frameworks and wanted to check in with you to
make sure I'm doing this right.

http://cocoapods.org/

I'm going to split up iOSPorts into 5 separate CocoaPods as you have
listed in your readme and then include the inner dependencies as needed.
Something I noticed is that each dependency has a different license which
can be accounted for in each CocoaPod.

Also, I am going to add a CocoaPod for iOSPorts project that includes all
5 of the inner dependencies to allow devs just just include everything.
This will have your license on it.

Does this sound correct? Did you want to help out with the process?

Thanks


Reply to this email directly or view it on GitHub:
#4

@rwyland
Copy link
Author

rwyland commented Jul 5, 2012

Sorry for any confusion, but I'm actually just a dev that has recently converted to CocoaPods in our team. We are going through our dependencies and saw that iOSPorts hasn't been added to the CocoaPods repo, so I was beginning to write a new Pod for your project and wanted to check with you.

From the looks of usage, CocoaPods looks like its taking off in the Obj-C community just like Maven or Ivy did for the Java community. To comment on your concerns, I think having this as a Pod might make things easier for new iOS developers to use your ports.

I'm fairly new to CocoaPods and am going through the process of adding a new Pod to the repo, so I will find out how it manages the makefiles. Since each individual framework can be opened and built on it's own, I don't think there will be a compatibility problem, but I will find out.

@syzdek
Copy link
Member

syzdek commented Jul 7, 2012

If you haven't already written the new pod, let me know and I'll start chipping away at integrating iOS Ports with CocoaPod.

@rwyland
Copy link
Author

rwyland commented Jul 7, 2012

I started with OpenSSL but ran into a bug with the CocoaPods gem.

CocoaPods/CocoaPods#375

My podspec for it is included in the bug report. Once they push a fix, I will try again and see if I can get it working.

@rwyland
Copy link
Author

rwyland commented Jul 9, 2012

Ok, now that they have updated the gem over the weekend, I gave it another go. Here is the podspec so far:

Pod::Spec.new do |s|
  s.name         = "OpenSSL"
  s.version      = "0.6"
  s.summary      = "A port of OpenSSL's SSL/TLS and Crypto toolkit to iOS."
  s.homepage     = "http://www.bindlebinaries.com/products/developer/iosports/"
  s.license      = 'BSD-style Open Source'
  s.author       = { "David M. Syzdek" => "syzdek@bindlebinaries.com" }
  s.source       = { :git => "https://github.com/bindle/iOSPorts.git", :tag => "v0.6" }
  s.platform     = :ios
  s.source_files = 'ports/security/openssl/*'
  s.preserve_paths = "build-aux"
  s.libraries    = 'libssl', 'libcrypto'
  s.requires_arc = false
  s.xcconfig     = { 'HEADER_SEARCH_PATHS' => 'openssl openssl/include openssl/crypto', 'OTHER_LDFLAGS' => '-ObjC' }
end

Here is the output for when I build the project.

# pod spec lint OpenSSL.podspec --verbose

 -> OpenSSL (0.6)

OpenSSL (0.6) - Analyzing on iOS platform.

Resolving dependencies of: 

Resolving dependencies for target `default' (iOS)
  - OpenSSL (from `/Users/rwyland/Documents/workspace/visitor/OpenSSL.podspec')
  * Fetching podspec for `OpenSSL' from: /Users/rwyland/Documents/workspace/visitor/OpenSSL.podspec

Installing dependencies

-> Installing OpenSSL (0.6)
-> Cloning git repo
   $ /usr/bin/git rev-list --max-count=1 v0.6
   0f9b8bc6a2b1c6c920321164aad789caa58aa0ae
   $ /usr/bin/git init
   Initialized empty Git repository in /private/tmp/CocoaPods/Lint/Pods/OpenSSL/.git/
   $ /usr/bin/git remote add origin '/Users/rwyland/Library/Caches/CocoaPods/Git/84091e21c232e583ea55ea3f578ab7d123b8c318'
   $ /usr/bin/git fetch origin tags/v0.6
   From /Users/rwyland/Library/Caches/CocoaPods/Git/84091e21c232e583ea55ea3f578ab7d123b8c318
    * tag               v0.6       -> FETCH_HEAD
   $ /usr/bin/git reset --hard FETCH_HEAD
   HEAD is now at 0f9b8bc Updating changelog.
   $ /usr/bin/git checkout -b activated-pod-commit
   Switched to a new branch 'activated-pod-commit'
-> Using existing documentation

Generating support files

- Generating xcconfig file at `/tmp/CocoaPods/Lint/Pods/Pods.xcconfig'
- Generating prefix header at `/tmp/CocoaPods/Lint/Pods/Pods-prefix.pch'
- Generating copy resources script at `/tmp/CocoaPods/Lint/Pods/Pods-resources.sh'
- Running post install hooks
- Writing Xcode project file to `/tmp/CocoaPods/Lint/Pods/Pods.xcodeproj'

Building with xcodebuild.

=== CLEAN NATIVE TARGET Pods OF PROJECT Pods WITH THE DEFAULT CONFIGURATION (Release) ===
Check dependencies
warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/build-aux' of type folder for architecture armv7
warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/Makefile' of type sourcecode.make for architecture armv7
warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/openssl.xcodeproj' of type wrapper.pb-project for architecture armv7
warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/README' of type text for architecture armv7

Clean.Remove clean /var/folders/92/prs3fjbx6d19fnvhy2f887zr0000gp/C/com.apple.Xcode.502/SharedPrecompiledHeaders/Pods-prefix-czofjfzwzeiceuafzniqwknatybs/Pods-prefix.pch.pth
    builtin-rm -rf /var/folders/92/prs3fjbx6d19fnvhy2f887zr0000gp/C/com.apple.Xcode.502/SharedPrecompiledHeaders/Pods-prefix-czofjfzwzeiceuafzniqwknatybs/Pods-prefix.pch.pth

Clean.Remove clean build/Release-iphoneos/libPods.a
    builtin-rm -rf /tmp/CocoaPods/Lint/Pods/build/Release-iphoneos/libPods.a

Clean.Remove clean build/Pods.build/Release-iphoneos/Pods.build
    builtin-rm -rf /tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build


** CLEAN SUCCEEDED **


=== BUILD NATIVE TARGET Pods OF PROJECT Pods WITH THE DEFAULT CONFIGURATION (Release) ===
Check dependencies
warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/build-aux' of type folder for architecture armv7
warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/Makefile' of type sourcecode.make for architecture armv7
warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/openssl.xcodeproj' of type wrapper.pb-project for architecture armv7
warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/README' of type text for architecture armv7

ProcessPCH /var/folders/92/prs3fjbx6d19fnvhy2f887zr0000gp/C/com.apple.Xcode.502/SharedPrecompiledHeaders/Pods-prefix-czofjfzwzeiceuafzniqwknatybs/Pods-prefix.pch.pth Pods-prefix.pch normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
    cd /tmp/CocoaPods/Lint/Pods
    setenv LANG en_US.US-ASCII
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c-header -arch armv7 -fmessage-length=0 -std=gnu99 -Wno-trigraphs -fpascal-strings -Os -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-implicit-atomic-properties -Wformat -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-sign-compare -Wno-shorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wno-undeclared-selector -Wno-deprecated-implementations -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -Wprotocol -Wdeprecated-declarations -g -Wno-conversion -Wno-sign-conversion -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=4.3 -iquote /tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Pods-generated-files.hmap -I/tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Pods-own-target-headers.hmap -I/tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Pods-all-target-headers.hmap -iquote /tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Pods-project-headers.hmap -I/tmp/CocoaPods/Lint/Pods/build/Release-iphoneos/include -Iopenssl -Iopenssl/include -Iopenssl/crypto -I/tmp/CocoaPods/Lint/Pods/Headers -I/tmp/CocoaPods/Lint/Pods/Headers/OpenSSL -I/tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/DerivedSources/armv7 -I/tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/DerivedSources -F/tmp/CocoaPods/Lint/Pods/build/Release-iphoneos --serialize-diagnostics /var/folders/92/prs3fjbx6d19fnvhy2f887zr0000gp/C/com.apple.Xcode.502/SharedPrecompiledHeaders/Pods-prefix-czofjfzwzeiceuafzniqwknatybs/Pods-prefix.pch.dia -c /tmp/CocoaPods/Lint/Pods/Pods-prefix.pch -o /var/folders/92/prs3fjbx6d19fnvhy2f887zr0000gp/C/com.apple.Xcode.502/SharedPrecompiledHeaders/Pods-prefix-czofjfzwzeiceuafzniqwknatybs/Pods-prefix.pch.pth -MMD -MT dependencies -MF /var/folders/92/prs3fjbx6d19fnvhy2f887zr0000gp/C/com.apple.Xcode.502/SharedPrecompiledHeaders/Pods-prefix-czofjfzwzeiceuafzniqwknatybs/Pods-prefix.pch.d

CompileC build/Pods.build/Release-iphoneos/Pods.build/Objects-normal/armv7/PodsDummy.o PodsDummy.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
    cd /tmp/CocoaPods/Lint/Pods
    setenv LANG en_US.US-ASCII
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -arch armv7 -fmessage-length=0 -std=gnu99 -Wno-trigraphs -fpascal-strings -Os -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-implicit-atomic-properties -Wformat -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-sign-compare -Wno-shorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wno-undeclared-selector -Wno-deprecated-implementations -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -Wprotocol -Wdeprecated-declarations -g -Wno-conversion -Wno-sign-conversion -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=4.3 -iquote /tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Pods-generated-files.hmap -I/tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Pods-own-target-headers.hmap -I/tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Pods-all-target-headers.hmap -iquote /tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Pods-project-headers.hmap -I/tmp/CocoaPods/Lint/Pods/build/Release-iphoneos/include -Iopenssl -Iopenssl/include -Iopenssl/crypto -I/tmp/CocoaPods/Lint/Pods/Headers -I/tmp/CocoaPods/Lint/Pods/Headers/OpenSSL -I/tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/DerivedSources/armv7 -I/tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/DerivedSources -F/tmp/CocoaPods/Lint/Pods/build/Release-iphoneos -include /var/folders/92/prs3fjbx6d19fnvhy2f887zr0000gp/C/com.apple.Xcode.502/SharedPrecompiledHeaders/Pods-prefix-czofjfzwzeiceuafzniqwknatybs/Pods-prefix.pch -MMD -MT dependencies -MF /tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Objects-normal/armv7/PodsDummy.d --serialize-diagnostics /tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Objects-normal/armv7/PodsDummy.dia -c /tmp/CocoaPods/Lint/Pods/PodsDummy.m -o /tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Objects-normal/armv7/PodsDummy.o

Libtool build/Release-iphoneos/libPods.a normal armv7
    cd /tmp/CocoaPods/Lint/Pods
    setenv IPHONEOS_DEPLOYMENT_TARGET 4.3
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static -arch_only armv7 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -L/tmp/CocoaPods/Lint/Pods/build/Release-iphoneos -filelist /tmp/CocoaPods/Lint/Pods/build/Pods.build/Release-iphoneos/Pods.build/Objects-normal/armv7/Pods.LinkFileList -framework Foundation -o /tmp/CocoaPods/Lint/Pods/build/Release-iphoneos/libPods.a


** BUILD SUCCEEDED **

 -> OpenSSL (0.6)
    - NOTE  | XCODEBUILD >  warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/build-aux' of type folder for architecture armv7
    - NOTE  | XCODEBUILD >  warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/Makefile' of type sourcecode.make for architecture armv7
    - NOTE  | XCODEBUILD >  warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/openssl.xcodeproj' of type wrapper.pb-project for architecture armv7
    - NOTE  | XCODEBUILD >  warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/README' of type text for architecture armv7
    - NOTE  | XCODEBUILD >  warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/build-aux' of type folder for architecture armv7
    - NOTE  | XCODEBUILD >  warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/Makefile' of type sourcecode.make for architecture armv7
    - NOTE  | XCODEBUILD >  warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/openssl.xcodeproj' of type wrapper.pb-project for architecture armv7
    - NOTE  | XCODEBUILD >  warning: no rule to process file '$(PROJECT_DIR)/OpenSSL/ports/security/openssl/README' of type text for architecture armv7

OpenSSL.podspec passed validation.

So my guess is we need to figure out how to tell the podspec to use the make file as the target?

@fabiopelosin
Copy link

A pre install hook can be used to run the make file.

Pod::Spec.new do |s|
  def pre_install(pod, target_definition)
    Dir.chdir(pod.root){ `sh make.sh` }
  end
end

@DougPuchalski
Copy link

Has there been any progress on this?

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

No branches or pull requests

4 participants