| #!/usr/bin/env ruby |
| |
| def run(cmd, &block) |
| puts "> #{cmd}" |
| if block == nil |
| abort "** command failed with error" if !system(cmd) |
| else |
| IO.popen(cmd, &block) |
| end |
| end |
| |
| def checkArchs(path, expected) |
| archs = nil |
| run("lipo -info \"#{path}\"") { |lipo| archs = /re: (.*)/.match(lipo.readline)[1].strip() } |
| if (expected.split(" ") - archs.split(" ")).count > 0 |
| puts "Warning: missing architecture; expected \"#{expected}\", found \"#{archs}\"" |
| end |
| if (archs.split(" ") - expected.split(" ")).count > 0 |
| puts "Warning: unexpected architecture; expected \"#{expected}\", found \"#{archs}\"" |
| end |
| end |
| |
| def checkAuthority(path, expected) |
| authorities = [] |
| run("codesign -dvv #{path} 2>&1") { |codesign| codesign.readlines |
| .map { |line| /Authority=(.*)/.match(line) } |
| .select { |match| match != nil } |
| .each { |match| authorities.push(match[1])} |
| } |
| if ! authorities.include? expected |
| puts "Warning: missing signing authority; expected \"#{expected}\", found #{authorities}" |
| end |
| end |
| |
| productdir = ARGV[0] |
| abort "Error: no product directory specified" if productdir == nil |
| |
| checkArchs "#{productdir}/OCMock-macOS.xcarchive/Products/Library/Frameworks/OCMock.framework/OCMock", "x86_64 arm64" |
| checkArchs "#{productdir}/OCMock-iOS-lib.xcarchive/Products/usr/local/lib/libOCMock.a", "armv7 arm64" |
| checkArchs "#{productdir}/OCMock-iOS-lib-sim.xcarchive/Products/usr/local/lib/libOCMock.a", "i386 x86_64 arm64" |
| checkArchs "#{productdir}/OCMock-iOS.xcarchive/Products/Library/Frameworks/OCMock.framework/OCMock", "armv7 arm64" |
| checkArchs "#{productdir}/OCMock-iOS-sim.xcarchive/Products/Library/Frameworks/OCMock.framework/OCMock", "i386 x86_64 arm64" |
| checkArchs "#{productdir}/OCMock-tvOS.xcarchive/Products/Library/Frameworks/OCMock.framework/OCMock", "arm64" |
| checkArchs "#{productdir}/OCMock-tvOS-sim.xcarchive/Products/Library/Frameworks/OCMock.framework/OCMock", "x86_64 arm64" |
| checkArchs "#{productdir}/OCMock-watchOS.xcarchive/Products/Library/Frameworks/OCMock.framework/OCMock", "armv7k arm64_32" |
| checkArchs "#{productdir}/OCMock-watchOS-sim.xcarchive/Products/Library/Frameworks/OCMock.framework/OCMock", "i386 x86_64 arm64" |
| checkArchs "#{productdir}/OCMock-catalyst.xcarchive/Products/Library/Frameworks/OCMock.framework/OCMock", "x86_64 arm64" |
| |
| authority = "Apple Development: erik@doernenburg.com (FJTF47J852)" |
| |
| checkAuthority "#{productdir}/OCMock-macOS.xcarchive/Products/Library/Frameworks/OCMock.framework", authority |