Skip to content

Commit

Permalink
Merge pull request #1377 from Carthage/strip-headers
Browse files Browse the repository at this point in the history
Strip “Headers” directory in copy-frameworks
  • Loading branch information
mdiep committed Jun 30, 2016
2 parents b7863da + ded6505 commit 6b97280
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions Source/CarthageKit/Xcode.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1249,12 +1249,14 @@ public func buildInDirectory(directoryURL: NSURL, withConfiguration configuratio
public func stripFramework(frameworkURL: NSURL, keepingArchitectures: [String], codesigningIdentity: String? = nil) -> SignalProducer<(), CarthageError> {
let stripArchitectures = stripBinary(frameworkURL, keepingArchitectures: keepingArchitectures)

// Xcode doesn't copy `Modules` directory at all.
// Xcode doesn't copy `Headers` and `Modules` directory at all.
let stripHeaders = stripHeadersDirectory(frameworkURL)
let stripModules = stripModulesDirectory(frameworkURL)

let sign = codesigningIdentity.map { codesign(frameworkURL, $0) } ?? .empty

return stripArchitectures
.concat(stripHeaders)
.concat(stripModules)
.concat(sign)
}
Expand Down Expand Up @@ -1418,20 +1420,29 @@ public func architecturesInPackage(packageURL: NSURL) -> SignalProducer<String,
}
}

/// Strips `Headers` directory from the given framework.
public func stripHeadersDirectory(frameworkURL: NSURL) -> SignalProducer<(), CarthageError> {
return stripDirectory(named: "Headers", of: frameworkURL)
}

/// Strips `Modules` directory from the given framework.
public func stripModulesDirectory(frameworkURL: NSURL) -> SignalProducer<(), CarthageError> {
return stripDirectory(named: "Modules", of: frameworkURL)
}

private func stripDirectory(named directory: String, of frameworkURL: NSURL) -> SignalProducer<(), CarthageError> {
return SignalProducer.attempt {
let modulesDirectoryURL = frameworkURL.URLByAppendingPathComponent("Modules", isDirectory: true)
let directoryURLToStrip = frameworkURL.URLByAppendingPathComponent(directory, isDirectory: true)

var isDirectory: ObjCBool = false
if !NSFileManager.defaultManager().fileExistsAtPath(modulesDirectoryURL.path!, isDirectory: &isDirectory) || !isDirectory {
if !NSFileManager.defaultManager().fileExistsAtPath(directoryURLToStrip.path!, isDirectory: &isDirectory) || !isDirectory {
return .Success(())
}

do {
try NSFileManager.defaultManager().removeItemAtURL(modulesDirectoryURL)
try NSFileManager.defaultManager().removeItemAtURL(directoryURLToStrip)
} catch let error as NSError {
return .Failure(.WriteFailed(modulesDirectoryURL, error))
return .Failure(.WriteFailed(directoryURLToStrip, error))
}

return .Success(())
Expand Down

0 comments on commit 6b97280

Please sign in to comment.