mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
5ce17487e1
`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. But since Xcode 9.3 includes it already, the build will fail because of redefinition of `libxml2` module. It's a bug of `homebrew` but before it's fixed, it's easier to provide in-place workaround for now. Fixes #283
50 lines
1.8 KiB
Ruby
50 lines
1.8 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.8.0.tar.gz"
|
|
sha256 "fed2da98f176f18d3b761b76def4c3324d4a9a5c77cc7392388042db33dc9cee"
|
|
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.
|
|
# But since Xcode 9.3 includes it already, the build will fail
|
|
# because of redefinition of libxml2 module.
|
|
# 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") 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
|