mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
84d9c14a44
I guess that's the reason for https://github.com/yonaskolb/XcodeGen/issues/51#issuecomment-381216565, I haven't modified original pull request after new discoveries found in discussion #283 (primarily - that it is not Xcode 9.3 issue, but issue caused by Xcode and CLT installed in the same time). This patch modifies ENV only if CLT is installed. I've checked it against Xcode + CLT and it worked fine, it'll be great if someone can confirm that this one works on Xcode only system. You can do that by running `brew edit xcodegen` and after patching `brew reinstall xcodegen`
56 lines
2.1 KiB
Ruby
56 lines
2.1 KiB
Ruby
class Xcodegen < Formula
|
|
desc "Tool that generates your Xcode project from a project spec"
|
|
homepage "https://github.com/yonaskolb/XcodeGen"
|
|
url "https://github.com/yonaskolb/XcodeGen/archive/1.9.0.tar.gz"
|
|
sha256 "51987022c8095c21ce3a7e93f93912d5fb533d909970c03eeab148897bf0e2c4"
|
|
head "https://github.com/yonaskolb/XcodeGen.git"
|
|
|
|
depends_on :xcode
|
|
|
|
def install
|
|
# libxml2 has to be included in ISYSTEM_PATH for building one of
|
|
# dependencies. It didn't happen automatically before Xcode 9.3
|
|
# so homebrew patched environment variable to get it work.
|
|
#
|
|
# That works fine when you have just Xcode installed, but there
|
|
# is also CLT. If it is also installed, ISYSTEM_PATH has
|
|
# a reference to CLT libxml2 AND a reference to Xcode default
|
|
# toolchain libxml2. That causes build failure with "module redeclared"
|
|
# error. So if both Xcode and CLT are installed one reference
|
|
# has to be removed.
|
|
#
|
|
# It's a bug of homebrew but before it's fixed, it's easier
|
|
# to provide in-place workaround for now.
|
|
# Please remove this once homebrew is patched.
|
|
|
|
# step 1: capture old value and patch environment
|
|
if OS::Mac::Xcode.version >= Version.new("9.3") && !OS::Mac::Xcode.without_clt? then
|
|
old_isystem_paths = ENV["HOMEBREW_ISYSTEM_PATHS"]
|
|
ENV["HOMEBREW_ISYSTEM_PATHS"] = old_isystem_paths.gsub("/usr/include/libxml2", "")
|
|
end
|
|
|
|
# step 2: usual build
|
|
system "make", "install", "PREFIX=#{prefix}"
|
|
|
|
# step 3: restoring environment to pristine state
|
|
ENV["HOMEBREW_ISYSTEM_PATHS"] = old_isystem_paths if defined? old_isystem_paths
|
|
end
|
|
|
|
test do
|
|
(testpath/"xcodegen.yml").write <<-EOS.undent
|
|
name: GeneratedProject
|
|
targets:
|
|
TestProject:
|
|
type: application
|
|
platform: iOS
|
|
sources: TestProject
|
|
settings:
|
|
PRODUCT_BUNDLE_IDENTIFIER: com.test
|
|
PRODUCT_NAME: TestProject
|
|
EOS
|
|
Dir.mkdir(File.join(testpath, "TestProject"))
|
|
system("#{bin}/XcodeGen --spec #{File.join(testpath, "xcodegen.yml")}")
|
|
system("xcodebuild --project #{File.join(testpath, "GeneratedProject.xcodeproj")}")
|
|
end
|
|
end
|