fastlane 2.42.0 → 2.43.0.beta.20170629010015

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca921083cf228537a4c3986df050549c4b5834a9
4
- data.tar.gz: b9cd79f18b5c99a3f49ea02b8e3bc646e7919873
3
+ metadata.gz: 3e4ae66159f3544c063527f89087b2f4233f7aa0
4
+ data.tar.gz: 4916ef06ab21011ae37ad106bb7faf6a8360ed63
5
5
  SHA512:
6
- metadata.gz: 63d0b9499642fd240ba31bf30f49f6006d1da76ea52241bb51011014dc06800d2b426ca31f09a37e59cd6df5c96f34dc43b199c2adadcee5f36d0936721f776b
7
- data.tar.gz: 857df33bd8f3c27dbf2ca0042a6714f37e1f938e3c01fea19c5aa9243ca523a0f41ddeb8dd9756c0b60c6b12a6272e3baa1befdf3c421fb14eca4652944494ef
6
+ metadata.gz: cfef9394fa9471d5a728c722af5c2dcb0ef2167f24bf648a0732788f52fed5ee7a47a4446787c1488f078453ae37ba698c457ba8b8c40d5b6e4cd78f336f1b86
7
+ data.tar.gz: 3fccdfe1ad1594465a243d4e4feb740fd4ce0a8c440b95e43e5c6f60bf7697de1cfc06a1415a40ff24390cb4f38cb49da592e692bb8a8b13fdaa8ffe0541cc4b
@@ -9,13 +9,6 @@ module Fastlane
9
9
  def self.run(values)
10
10
  require 'gym'
11
11
 
12
- should_use_legacy_api = values[:use_legacy_build_api] || Gym::Xcode.pre_7?
13
-
14
- if values[:provisioning_profile_path].to_s.length.zero? && should_use_legacy_api
15
- sigh_path = Actions.lane_context[SharedValues::SIGH_PROFILE_PATH] || ENV["SIGH_PROFILE_PATH"]
16
- values[:provisioning_profile_path] = File.expand_path(sigh_path) if sigh_path
17
- end
18
-
19
12
  values[:export_method] ||= Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE]
20
13
 
21
14
  if Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING]
@@ -1,4 +1,4 @@
1
1
  module Fastlane
2
- VERSION = '2.42.0'.freeze
2
+ VERSION = '2.43.0.beta.20170629010015'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  end
data/gym/README.md CHANGED
@@ -254,18 +254,6 @@ Using this method there are no workarounds for WatchKit or Swift required, as it
254
254
 
255
255
  Note: the [xcbuild-safe.sh script](https://github.com/fastlane/fastlane/tree/master/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh) wraps around xcodebuild to workaround some incompatibilities.
256
256
 
257
- ### Xcode 6 and below
258
-
259
- ```
260
- /usr/bin/xcrun /path/to/PackageApplication4Gym -v \
261
- '/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName 2015-08-11 18.15.30.xcarchive/Products/Applications/name.app' -o \
262
- '/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName.ipa' \
263
- --sign "identity" --embed "provProfile"
264
- ```
265
-
266
- Note: the official PackageApplication script is replaced by a custom PackageApplication4Gym script. This script is obtained by applying a [set of patches](https://github.com/fastlane/fastlane/tree/master/gym/lib/assets/package_application_patches) on the fly to fix some known issues in the official Xcode PackageApplication script.
267
-
268
- Afterwards the `ipa` file is moved to the output folder. The `dSYM` file is compressed and moved to the output folder as well.
269
257
 
270
258
  # Tips
271
259
  ## [`fastlane`](https://fastlane.tools) Toolchain
data/gym/lib/gym.rb CHANGED
@@ -32,11 +32,7 @@ module Gym
32
32
 
33
33
  def init_libs
34
34
  # Import all the fixes
35
- require 'gym/xcodebuild_fixes/swift_fix'
36
- require 'gym/xcodebuild_fixes/watchkit_fix'
37
- require 'gym/xcodebuild_fixes/watchkit2_fix'
38
35
  require 'gym/xcodebuild_fixes/generic_archive_fix'
39
- require 'gym/xcodebuild_fixes/package_application_fix'
40
36
  end
41
37
  end
42
38
 
@@ -13,20 +13,12 @@ module Gym
13
13
  # Detect the project
14
14
  FastlaneCore::Project.detect_projects(config)
15
15
  Gym.project = FastlaneCore::Project.new(config)
16
- detect_provisioning_profile
17
16
 
18
17
  # Go into the project's folder, as there might be a Gymfile there
19
18
  Dir.chdir(File.expand_path("..", Gym.project.path)) do
20
19
  config.load_configuration_file(Gym.gymfile_name)
21
20
  end
22
21
 
23
- config[:use_legacy_build_api] = true if Xcode.pre_7?
24
-
25
- if config[:use_legacy_build_api]
26
- UI.deprecated("the use_legacy_build_api option is deprecated")
27
- UI.deprecated("it should not be used anymore - e.g.: if you use app-extensions")
28
- end
29
-
30
22
  detect_scheme
31
23
  detect_platform # we can only do that *after* we have the scheme
32
24
  detect_configuration
@@ -62,28 +54,6 @@ module Gym
62
54
  CFPropertyList.native_types(CFPropertyList::List.new(file: path).value)
63
55
  end
64
56
 
65
- def self.detect_provisioning_profile
66
- if Gym.config[:provisioning_profile_path].nil?
67
- return unless Gym.config[:use_legacy_build_api] # we only want to auto-detect the profile when using the legacy build API
68
-
69
- Dir.chdir(File.expand_path("..", Gym.project.path)) do
70
- profiles = Dir["*.mobileprovision"]
71
- if profiles.count == 1
72
- profile = File.expand_path(profiles.last)
73
- elsif profiles.count > 1
74
- UI.message "Found more than one provisioning profile in the project directory:"
75
- profile = choose(*profiles)
76
- end
77
-
78
- Gym.config[:provisioning_profile_path] = profile
79
- end
80
- end
81
-
82
- if Gym.config[:provisioning_profile_path]
83
- FastlaneCore::ProvisioningProfile.install(Gym.config[:provisioning_profile_path])
84
- end
85
- end
86
-
87
57
  def self.detect_scheme
88
58
  Gym.project.select_scheme
89
59
  end
@@ -54,7 +54,6 @@ module Gym
54
54
  print_full_log_path
55
55
  print_xcode_path_instructions
56
56
  print_xcode_version
57
- raise_legacy_build_api_error(output) if Gym.config[:use_legacy_build_api]
58
57
  UI.build_failure!("Error building the application - see the log above", error_info: output)
59
58
  end
60
59
 
@@ -104,15 +103,6 @@ module Gym
104
103
  return File.join(m[1], 'IDEDistribution.standard.log') unless m.nil?
105
104
  end
106
105
 
107
- def raise_legacy_build_api_error(output)
108
- UI.error("You enabled the legacy build API in _gym_")
109
- UI.error("This option has been deprecated for about a year")
110
- UI.error("and was removed with Xcode 8.3")
111
- UI.error("Please update your Fastfile to include the export_method too")
112
- UI.error("more information about how to migrate away: https://github.com/fastlane/fastlane/releases/tag/2.24.0")
113
- UI.build_failure!("Build failed. Please remove the `use_legacy_build_api` option in your Fastfile and try again", error_info: output)
114
- end
115
-
116
106
  private
117
107
 
118
108
  def read_standard_output(output)
@@ -7,7 +7,6 @@
7
7
  require 'shellwords'
8
8
 
9
9
  # The concrete implementations
10
- require 'gym/generators/package_command_generator_legacy'
11
10
  require 'gym/generators/package_command_generator_xcode7'
12
11
 
13
12
  module Gym
@@ -47,12 +46,10 @@ module Gym
47
46
  end
48
47
 
49
48
  # The generator we need to use for the currently used Xcode version
49
+ # Since we dropped Xcode 6 support, it's just this class, but maybe we'll have
50
+ # new classes in the future
50
51
  def generator
51
- if Gym.config[:use_legacy_build_api]
52
- PackageCommandGeneratorLegacy
53
- else
54
- PackageCommandGeneratorXcode7
55
- end
52
+ PackageCommandGeneratorXcode7
56
53
  end
57
54
  end
58
55
  end
@@ -13,9 +13,7 @@ module Gym
13
13
  DEFAULT_EXPORT_METHOD = "app-store"
14
14
 
15
15
  def generate
16
- print_legacy_information
17
-
18
- parts = ["/usr/bin/xcrun #{XcodebuildFixes.wrap_xcodebuild.shellescape} -exportArchive"]
16
+ parts = ["/usr/bin/xcrun #{wrap_xcodebuild.shellescape} -exportArchive"]
19
17
  parts += options
20
18
  parts += pipe
21
19
 
@@ -46,6 +44,12 @@ module Gym
46
44
  Gym.cache[:temporary_output_path] ||= Dir.mktmpdir('gym_output')
47
45
  end
48
46
 
47
+ # Wrap xcodebuild to work-around ipatool dependency to system ruby
48
+ def wrap_xcodebuild
49
+ require 'fileutils'
50
+ @wrapped_xcodebuild_path ||= File.join(Gym::ROOT, "lib/assets/wrap_xcodebuild/xcbuild-safe.sh")
51
+ end
52
+
49
53
  def ipa_path
50
54
  unless Gym.cache[:ipa_path]
51
55
  path = Dir[File.join(temporary_output_path, "*.ipa")].last
@@ -181,14 +185,6 @@ module Gym
181
185
  def to_plist(hash)
182
186
  Plist::Emit.dump(hash, true)
183
187
  end
184
-
185
- def print_legacy_information
186
- return if Gym.config[:provisioning_profile_path].to_s.length == 0
187
-
188
- UI.error "You're using Xcode 7 or above, the `provisioning_profile_path` value will be ignored"
189
- UI.error "Please follow the Code Signing Guide: https://codesigning.guide (for match) or https://docs.fastlane.tools/codesigning/GettingStarted/"
190
- UI.error "This is just a warning, gym will continue running just as expected, but the parameter will be ignored"
191
- end
192
188
  end
193
189
  end
194
190
  end
@@ -9,24 +9,6 @@ module Gym
9
9
  @options = plain_options
10
10
  end
11
11
 
12
- def self.legacy_api_note!
13
- UI.important "Unfortunately the legacy build API was removed with Xcode 8.3."
14
- UI.important "Please make sure to remove use_legacy_build_api from your ./fastlane/Fastfile"
15
- UI.important "and update the gym call to include the export method like this:"
16
- UI.important "== App Store Builds =="
17
- UI.error ' gym(scheme: "MyScheme", export_method: "app-store")'
18
- UI.important "== Ad Hoc Builds =="
19
- UI.error ' gym(scheme: "MyScheme", export_method: "ad-hoc")'
20
- UI.important "== Development Builds =="
21
- UI.error ' gym(scheme: "MyScheme", export_method: "development")'
22
- UI.important "== In-House Enterprise Builds =="
23
- UI.error ' gym(scheme: "MyScheme", export_method: "enterprise")'
24
- UI.important "If you run into a code signing error, please check out our troubleshooting guide for more information on how to solve the most common issues"
25
- UI.error " https://docs.fastlane.tools/codesigning/troubleshooting/ 🚀"
26
- UI.important ""
27
- UI.user_error! "legacy_build_api removed!"
28
- end
29
-
30
12
  def self.plain_options
31
13
  [
32
14
  FastlaneCore::ConfigItem.new(key: :workspace,
@@ -117,20 +99,6 @@ module Gym
117
99
  description: "Should the ipa include bitcode?",
118
100
  is_string: false,
119
101
  optional: true),
120
- FastlaneCore::ConfigItem.new(key: :use_legacy_build_api,
121
- deprecated: "Don't use this option any more, as it's deprecated by Apple",
122
- env_name: "GYM_USE_LEGACY_BUILD_API",
123
- description: "Don't use this option any more, as it's deprecated by Apple",
124
- default_value: false,
125
- is_string: false,
126
- verify_block: proc do |value|
127
- if value
128
- UI.important "Don't use this option any more, as it's deprecated by Apple"
129
- end
130
- if Gym::Xcode.legacy_api_deprecated?
131
- Gym::Options.legacy_api_note!
132
- end
133
- end),
134
102
  FastlaneCore::ConfigItem.new(key: :export_method,
135
103
  short_option: "-j",
136
104
  env_name: "GYM_EXPORT_METHOD",
@@ -146,7 +114,6 @@ module Gym
146
114
  description: "Specifies path to export options plist. User xcodebuild -help to print the full set of available options",
147
115
  is_string: false,
148
116
  optional: true,
149
- conflicting_options: [:use_legacy_build_api],
150
117
  conflict_block: proc do |value|
151
118
  UI.user_error!("'#{value.key}' must be false to use 'export_options'")
152
119
  end),
@@ -154,7 +121,6 @@ module Gym
154
121
  env_name: "GYM_EXPORT_XCARGS",
155
122
  description: "Pass additional arguments to xcodebuild for the package phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS=\"-ObjC -lstdc++\"",
156
123
  optional: true,
157
- conflicting_options: [:use_legacy_build_api],
158
124
  conflict_block: proc do |value|
159
125
  UI.user_error!("'#{value.key}' must be false to use 'export_xcargs'")
160
126
  end,
@@ -200,15 +166,6 @@ module Gym
200
166
  description: "The toolchain that should be used for building the application (e.g. com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a)",
201
167
  optional: true,
202
168
  is_string: false),
203
- FastlaneCore::ConfigItem.new(key: :provisioning_profile_path,
204
- short_option: "-e",
205
- env_name: "GYM_PROVISIONING_PROFILE_PATH",
206
- description: "The path to the provisioning profile (optional)",
207
- optional: true,
208
- deprecated: 'Use target specific provisioning profiles instead',
209
- verify_block: proc do |value|
210
- UI.user_error!("Provisioning profile not found at path '#{File.expand_path(value)}'") unless File.exist?(File.expand_path(value))
211
- end),
212
169
  FastlaneCore::ConfigItem.new(key: :destination,
213
170
  short_option: "-d",
214
171
  env_name: "GYM_DESTINATION",
@@ -8,7 +8,6 @@ module Gym
8
8
  # @return (String) The path to the resulting ipa
9
9
  def run
10
10
  unless Gym.config[:skip_build_archive]
11
- clear_old_files
12
11
  build_app
13
12
  end
14
13
  verify_archive
@@ -19,7 +18,6 @@ module Gym
19
18
  return BuildCommandGenerator.archive_path if Gym.config[:skip_package_ipa]
20
19
 
21
20
  package_app
22
- fix_package
23
21
  compress_and_move_dsym
24
22
  path = move_ipa
25
23
  move_manifest
@@ -71,25 +69,11 @@ module Gym
71
69
  # @!group The individual steps
72
70
  #####################################################
73
71
 
74
- def clear_old_files
75
- return unless Gym.config[:use_legacy_build_api]
76
- if File.exist?(PackageCommandGenerator.ipa_path)
77
- File.delete(PackageCommandGenerator.ipa_path)
78
- end
79
- end
80
-
81
72
  def fix_generic_archive
82
73
  return unless FastlaneCore::Env.truthy?("GYM_USE_GENERIC_ARCHIVE_FIX")
83
74
  Gym::XcodebuildFixes.generic_archive_fix
84
75
  end
85
76
 
86
- def fix_package
87
- return unless Gym.config[:use_legacy_build_api]
88
- Gym::XcodebuildFixes.swift_library_fix
89
- Gym::XcodebuildFixes.watchkit_fix
90
- Gym::XcodebuildFixes.watchkit2_fix
91
- end
92
-
93
77
  def mark_archive_as_built_by_gym(archive_path)
94
78
  escaped_archive_path = archive_path.shellescape
95
79
  system("xattr -w info.fastlane.generated_by_gym 1 #{escaped_archive_path}")
@@ -239,11 +223,7 @@ module Gym
239
223
  end
240
224
 
241
225
  def find_archive_path
242
- if Gym.config[:use_legacy_build_api]
243
- BuildCommandGenerator.archive_path
244
- else
245
- Dir.glob(File.join(BuildCommandGenerator.build_path, "*.ipa")).last
246
- end
226
+ Dir.glob(File.join(BuildCommandGenerator.build_path, "*.ipa")).last
247
227
  end
248
228
  end
249
229
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.42.0
4
+ version: 2.43.0.beta.20170629010015
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2017-06-28 00:00:00.000000000 Z
18
+ date: 2017-06-29 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: slack-notifier
@@ -259,7 +259,7 @@ dependencies:
259
259
  requirements:
260
260
  - - ">="
261
261
  - !ruby/object:Gem::Version
262
- version: 4.4.0
262
+ version: 4.4.5
263
263
  - - "<"
264
264
  - !ruby/object:Gem::Version
265
265
  version: 5.0.0
@@ -269,7 +269,7 @@ dependencies:
269
269
  requirements:
270
270
  - - ">="
271
271
  - !ruby/object:Gem::Version
272
- version: 4.4.0
272
+ version: 4.4.5
273
273
  - - "<"
274
274
  - !ruby/object:Gem::Version
275
275
  version: 5.0.0
@@ -1147,9 +1147,6 @@ files:
1147
1147
  - frameit/lib/frameit/template_finder.rb
1148
1148
  - gym/README.md
1149
1149
  - gym/lib/assets/GymfileTemplate
1150
- - gym/lib/assets/package_application_patches/0001_codesign_args_patch.diff
1151
- - gym/lib/assets/package_application_patches/0002_no_strict_parameter_patch.diff
1152
- - gym/lib/assets/package_application_patches/PackageApplication_MD5
1153
1150
  - gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh
1154
1151
  - gym/lib/gym.rb
1155
1152
  - gym/lib/gym/commands_generator.rb
@@ -1158,7 +1155,6 @@ files:
1158
1155
  - gym/lib/gym/generators/README.md
1159
1156
  - gym/lib/gym/generators/build_command_generator.rb
1160
1157
  - gym/lib/gym/generators/package_command_generator.rb
1161
- - gym/lib/gym/generators/package_command_generator_legacy.rb
1162
1158
  - gym/lib/gym/generators/package_command_generator_xcode7.rb
1163
1159
  - gym/lib/gym/manager.rb
1164
1160
  - gym/lib/gym/options.rb
@@ -1166,10 +1162,6 @@ files:
1166
1162
  - gym/lib/gym/xcode.rb
1167
1163
  - gym/lib/gym/xcodebuild_fixes/README.md
1168
1164
  - gym/lib/gym/xcodebuild_fixes/generic_archive_fix.rb
1169
- - gym/lib/gym/xcodebuild_fixes/package_application_fix.rb
1170
- - gym/lib/gym/xcodebuild_fixes/swift_fix.rb
1171
- - gym/lib/gym/xcodebuild_fixes/watchkit2_fix.rb
1172
- - gym/lib/gym/xcodebuild_fixes/watchkit_fix.rb
1173
1165
  - match/README.md
1174
1166
  - match/lib/assets/MatchfileTemplate
1175
1167
  - match/lib/assets/READMETemplate.md
@@ -1296,7 +1288,6 @@ files:
1296
1288
  - spaceship/lib/assets/languageMapping.json
1297
1289
  - spaceship/lib/assets/languageMappingReadable.json
1298
1290
  - spaceship/lib/spaceship.rb
1299
- - spaceship/lib/spaceship/.DS_Store
1300
1291
  - spaceship/lib/spaceship/babosa_fix.rb
1301
1292
  - spaceship/lib/spaceship/base.rb
1302
1293
  - spaceship/lib/spaceship/client.rb
@@ -1398,24 +1389,24 @@ metadata:
1398
1389
  post_install_message:
1399
1390
  rdoc_options: []
1400
1391
  require_paths:
1392
+ - snapshot/lib
1393
+ - spaceship/lib
1394
+ - scan/lib
1401
1395
  - cert/lib
1402
- - credentials_manager/lib
1403
- - deliver/lib
1396
+ - pilot/lib
1404
1397
  - fastlane/lib
1405
- - fastlane_core/lib
1406
- - frameit/lib
1398
+ - supply/lib
1407
1399
  - gym/lib
1408
1400
  - match/lib
1409
- - pem/lib
1410
- - pilot/lib
1401
+ - sigh/lib
1411
1402
  - precheck/lib
1412
1403
  - produce/lib
1413
- - scan/lib
1404
+ - credentials_manager/lib
1414
1405
  - screengrab/lib
1415
- - sigh/lib
1416
- - snapshot/lib
1417
- - spaceship/lib
1418
- - supply/lib
1406
+ - pem/lib
1407
+ - fastlane_core/lib
1408
+ - deliver/lib
1409
+ - frameit/lib
1419
1410
  required_ruby_version: !ruby/object:Gem::Requirement
1420
1411
  requirements:
1421
1412
  - - ">="
@@ -1423,15 +1414,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
1423
1414
  version: 2.0.0
1424
1415
  required_rubygems_version: !ruby/object:Gem::Requirement
1425
1416
  requirements:
1426
- - - ">="
1417
+ - - ">"
1427
1418
  - !ruby/object:Gem::Version
1428
- version: '0'
1419
+ version: 1.3.1
1429
1420
  requirements: []
1430
1421
  rubyforge_project:
1431
- rubygems_version: 2.2.5
1422
+ rubygems_version: 2.4.5.2
1432
1423
  signing_key:
1433
1424
  specification_version: 4
1434
1425
  summary: The easiest way to automate beta deployments and releases for your iOS and
1435
1426
  Android apps
1436
1427
  test_files: []
1437
- has_rdoc:
@@ -1,38 +0,0 @@
1
- From 13f2c76fd11b0d861ddf205d4d6ccc0c45a0d4b2 Mon Sep 17 00:00:00 2001
2
- From: Fabio Milano
3
- Date: Thu, 13 Aug 2015 15:02:41 +0200
4
- Subject: [PATCH] Fixed codesign_args
5
-
6
- Code signatures made in Mavericks and later do not support altering which files are sealed by a code signature.
7
- The --resource-rules option to codesign isn't supported anymore
8
-
9
- See https://developer.apple.com/library/mac/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG206
10
-
11
- ---
12
- PackageApplication4Gym | 8 +++++++-
13
- 1 file changed, 7 insertions(+), 1 deletion(-)
14
-
15
- diff --git a/PackageApplication4Gym b/PackageApplication4Gym
16
- index fc4d7de..b97431f 100755
17
- --- a/PackageApplication4Gym
18
- +++ b/PackageApplication4Gym
19
- @@ -152,9 +152,15 @@ if ( defined $opt{sign} ) {
20
- }
21
- }
22
-
23
- - my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
24
- + my @codesign_args;
25
- + if (-e '$destApp/ResourceRules.plist') { # If ResourceRules.plist exists, include it in codesign arguments, for backwards compatability
26
- + @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
27
- "--sign", $opt{sign},
28
- "--resource-rules=$destApp/ResourceRules.plist");
29
- + } else { # If ResourceRules.plist isn't found, don't include it in the codesign arguments
30
- + @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
31
- + "--sign", $opt{sign});
32
- + }
33
-
34
- if ( -e $entitlements_plist ) {
35
- push(@codesign_args, '--entitlements');
36
- --
37
- 2.2.1
38
-
@@ -1,42 +0,0 @@
1
- From 38ea965869a436c4b60e7dbfd5a28d42232d82d6 Mon Sep 17 00:00:00 2001
2
- From: Fabio Milano
3
- Date: Thu, 13 Aug 2015 16:03:26 +0200
4
- Subject: [PATCH] Added no-strict parameter
5
-
6
- The command line tool “codesign” has changed in 10.9.5 and 10.10, you need to
7
- pass “--no-strict” option to the command, (the problem has been reported and
8
- will be fixed). To workaround the problem, please save a copy and modify
9
- PackageApplication to pass “—no-strict” to codesign, you can locate PackageApplication
10
- by running the following:- xcrun -sdk iphoneos -f PackageApplication
11
-
12
- See https://stackoverflow.com/questions/26008449/xcodebuild-codesign-vvvv-saysresource-envelope-is-obsolete
13
-
14
- ---
15
- PackageApplication4Gym | 4 ++--
16
- 1 file changed, 2 insertions(+), 2 deletions(-)
17
-
18
- diff --git a/PackageApplication4Gym b/PackageApplication4Gym
19
- index 3085608..54a4b9e 100755
20
- --- a/PackageApplication4Gym
21
- +++ b/PackageApplication4Gym
22
- @@ -92,7 +92,7 @@ foreach $plugin (@plugins) {
23
- chomp $pluginName;
24
- my $destPlugin = "$destAppDir/$pluginName";
25
-
26
- - my $result = runCmd("/usr/bin/codesign", "--verify", "-vvvv", , $plugin );
27
- + my $result = runCmd("/usr/bin/codesign", "--verify", "--no-strict", "-vvvv", , $plugin );
28
- if ( $result !~ /valid on disk/ ) {
29
- fatal("Codesign check fails : $result\n");
30
- }
31
- @@ -111,7 +111,7 @@ if ( $opt{symbols} ) {
32
-
33
- if ( $opt{verbose} ) {
34
- print "### Checking original app\n";
35
- - my $result = runCmd("/usr/bin/codesign", "--verify", "-vvvv", , $origApp );
36
- + my $result = runCmd("/usr/bin/codesign", "--verify", "--no-strict", "-vvvv", , $origApp );
37
- if ( $result !~ /valid on disk/ ) {
38
- print "Codesign check fails : $result\n";
39
- }
40
- --
41
- 2.2.1
42
-
@@ -1,2 +0,0 @@
1
- a434316d561ce5c4392a8447b58c18e7
2
- 75c29555834c603566a2319c5e4d2838
@@ -1,103 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # from https://stackoverflow.com/a/9857493/445598
4
- # because of
5
- # `incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string) (Encoding::CompatibilityError)`
6
-
7
- module Gym
8
- # Responsible for building the fully working xcodebuild command on Xcode < 7
9
- #
10
- # Because of a known bug in PackageApplication Perl script used by Xcode the packaging process is performed with
11
- # a patched version of the script.
12
- class PackageCommandGeneratorLegacy
13
- class << self
14
- def generate
15
- print_legacy_information
16
-
17
- parts = ["/usr/bin/xcrun #{XcodebuildFixes.patch_package_application.shellescape} -v"]
18
- parts += options
19
- parts += pipe
20
-
21
- parts
22
- end
23
-
24
- def options
25
- options = []
26
-
27
- options << Shellwords.escape(appfile_path)
28
- options << "-o '#{ipa_path}'"
29
- options << "exportFormat ipa"
30
-
31
- if Gym.config[:provisioning_profile_path]
32
- options << "--embed '#{Gym.config[:provisioning_profile_path]}'"
33
- end
34
-
35
- if Gym.config[:codesigning_identity]
36
- options << "--sign #{Gym.config[:codesigning_identity].shellescape}"
37
- end
38
-
39
- options
40
- end
41
-
42
- def pipe
43
- [""]
44
- end
45
-
46
- # Place where the IPA file will be created, so it can be safely moved to the destination folder
47
- def temporary_output_path
48
- Gym.cache[:temporary_output_path] ||= Dir.mktmpdir('gym_output')
49
- end
50
-
51
- def appfile_path
52
- path = Dir.glob("#{BuildCommandGenerator.archive_path}/Products/Applications/*.app").first
53
- path ||= Dir[BuildCommandGenerator.archive_path + "/**/*.app"].first
54
-
55
- return path
56
- end
57
-
58
- # We export it to the temporary folder and move it over to the actual output once it's finished and valid
59
- def ipa_path
60
- File.join(temporary_output_path, "#{Gym.config[:output_name]}.ipa")
61
- end
62
-
63
- # The path the the dsym file for this app. Might be nil
64
- def dsym_path
65
- Dir[BuildCommandGenerator.archive_path + "/**/*.app.dSYM"].last
66
- end
67
-
68
- def manifest_path
69
- ""
70
- end
71
-
72
- def app_thinning_path
73
- ""
74
- end
75
-
76
- def app_thinning_size_report_path
77
- ""
78
- end
79
-
80
- def apps_path
81
- ""
82
- end
83
-
84
- def print_legacy_information
85
- if Gym.config[:include_bitcode]
86
- UI.important "Legacy build api is enabled, the `include_bitcode` value will be ignored"
87
- end
88
-
89
- if Gym.config[:include_symbols]
90
- UI.important "Legacy build api is enabled, the `include_symbols` value will be ignored"
91
- end
92
-
93
- if Gym.config[:export_team_id].to_s.length > 0
94
- UI.important "Legacy build api is enabled, the `export_team_id` value will be ignored"
95
- end
96
-
97
- if Gym.config[:export_method].to_s.length > 0
98
- UI.important "Legacy build api is enabled, the `export_method` value will be ignored"
99
- end
100
- end
101
- end
102
- end
103
- end
@@ -1,57 +0,0 @@
1
- module Gym
2
- class XcodebuildFixes
3
- class << self
4
- # Fix PackageApplication Perl script by Xcode to create the IPA from the archive
5
- def patch_package_application
6
- require 'fileutils'
7
-
8
- # Initialization
9
- @patched_package_application_path = File.join("/tmp", "PackageApplication4Gym")
10
-
11
- return @patched_package_application_path if File.exist?(@patched_package_application_path)
12
-
13
- Dir.mktmpdir do |tmpdir|
14
- # Check current set of PackageApplication MD5 hashes
15
- require 'digest'
16
-
17
- path = File.join(Gym::ROOT, "lib/assets/package_application_patches/PackageApplication_MD5")
18
- expected_md5_hashes = File.read(path).split("\n")
19
-
20
- # If that location changes, search it using xcrun --sdk iphoneos -f PackageApplication
21
- package_application_path = "#{Xcode.xcode_path}/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication"
22
-
23
- unless File.exist?(package_application_path)
24
- ErrorHandler.raise_legacy_build_api_error("")
25
- end
26
-
27
- UI.crash!("Unable to patch the `PackageApplication` script bundled in Xcode. This is not supported.") unless expected_md5_hashes.include?(Digest::MD5.file(package_application_path).hexdigest)
28
-
29
- # Duplicate PackageApplication script to PackageApplication4Gym
30
- FileUtils.copy_file(package_application_path, @patched_package_application_path)
31
-
32
- # Apply patches to PackageApplication4Gym from patches folder
33
- Dir[File.join(Gym::ROOT, "lib/assets/package_application_patches/*.diff")].each do |patch|
34
- UI.verbose "Applying Package Application patch: #{File.basename(patch)}"
35
- command = ["patch '#{@patched_package_application_path}' < '#{patch}'"]
36
- Runner.new.print_command(command, "Applying Package Application patch: #{File.basename(patch)}") if FastlaneCore::Globals.verbose?
37
-
38
- FastlaneCore::CommandExecutor.execute(command: command,
39
- print_all: false,
40
- print_command: FastlaneCore::Globals.verbose?,
41
- error: proc do |output|
42
- ErrorHandler.handle_package_error(output)
43
- end)
44
- end
45
- end
46
-
47
- return @patched_package_application_path # Return path to the patched PackageApplication
48
- end
49
-
50
- # Wrap xcodebuild to work-around ipatool dependecy to system ruby
51
- def wrap_xcodebuild
52
- require 'fileutils'
53
- @wrapped_xcodebuild_path ||= File.join(Gym::ROOT, "lib/assets/wrap_xcodebuild/xcbuild-safe.sh")
54
- end
55
- end
56
- end
57
- end
@@ -1,100 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # from https://stackoverflow.com/a/9857493/445598
4
- # because of
5
- # `incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string) (Encoding::CompatibilityError)`
6
- require 'zip'
7
-
8
- module Gym
9
- class XcodebuildFixes
10
- class << self
11
- # Determine whether it is a Swift project and, eventually, include all required libraries to copy from Xcode's toolchain directory.
12
- # Since there's no "xcodebuild" target to do just that, it is done post-build when exporting an archived build.
13
- def swift_library_fix
14
- require 'fileutils'
15
-
16
- return if check_for_swift(PackageCommandGenerator)
17
-
18
- UI.verbose "Packaging up the Swift Framework as the current app is a Swift app"
19
- ipa_swift_frameworks = Dir["#{PackageCommandGenerator.appfile_path}/Frameworks/libswift*"]
20
-
21
- Dir.mktmpdir do |tmpdir|
22
- # Copy all necessary Swift libraries to a temporary "SwiftSupport" directory so that we can
23
- # easily add it to the .ipa later.
24
- swift_support = File.join(tmpdir, "SwiftSupport")
25
-
26
- Dir.mkdir(swift_support)
27
-
28
- ipa_swift_frameworks.each do |path|
29
- framework = File.basename(path)
30
-
31
- begin
32
- toolchain_dir = toolchain_dir_name_for_toolchain(Gym.config[:toolchain])
33
-
34
- from = File.join(Xcode.xcode_path, "Toolchains/#{toolchain_dir}/usr/lib/swift/iphoneos/#{framework}")
35
- to = File.join(swift_support, framework)
36
-
37
- UI.verbose("Copying Swift framework from '#{from}'")
38
- FileUtils.copy_file(from, to)
39
- rescue => ex
40
- UI.error("Error copying over framework file. Please try running gym without the legacy build API enabled")
41
- UI.error("For more information visit https://github.com/fastlane/fastlane/issues/5863")
42
- UI.error("Missing file #{path} inside #{Xcode.xcode_path}")
43
-
44
- if Gym.config[:toolchain].nil?
45
- UI.important("If you're using Swift 2.3, but already updated to Xcode 8")
46
- UI.important("try adding the following parameter to your gym call:")
47
- UI.success("gym(toolchain: :swift_2_3)")
48
- UI.message("or")
49
- UI.success("fastlane gym --toolchain swift_2_3")
50
- end
51
-
52
- UI.user_error!(ex)
53
- end
54
- end
55
-
56
- # Add "SwiftSupport" to the .ipa archive
57
- Dir.chdir(tmpdir) do
58
- command_parts = ["zip --recurse-paths '#{PackageCommandGenerator.ipa_path}' SwiftSupport"]
59
- command_parts << "> /dev/null" unless FastlaneCore::Globals.verbose?
60
-
61
- FastlaneCore::CommandExecutor.execute(command: command_parts,
62
- print_all: false,
63
- print_command: !Gym.config[:silent],
64
- error: proc do |output|
65
- ErrorHandler.handle_package_error(output)
66
- end)
67
- end
68
- end
69
- end
70
-
71
- def toolchain_dir_name_for_toolchain(toolchain)
72
- return "Swift_2.3.xctoolchain" if toolchain == "com.apple.dt.toolchain.Swift_2_3"
73
-
74
- UI.error("No specific folder was found for toolchain #{toolchain}. Using the default toolchain location.") if toolchain
75
- return "XcodeDefault.xctoolchain"
76
- end
77
-
78
- # @param the PackageCommandGenerator
79
- # @return true if swift
80
- def check_for_swift(pcg)
81
- UI.verbose "Checking for Swift framework"
82
- default_swift_libs = "#{pcg.appfile_path}/Frameworks/libswift.*" # note the extra ., this is a string representation of a regexp
83
- zip_entries_matching(pcg.ipa_path, /#{default_swift_libs}/).count > 0
84
- end
85
-
86
- # return the entries (files or directories) in the zip matching the pattern
87
- # @param zipfile a zipfile
88
- # @return the files or directories matching the pattern
89
- def zip_entries_matching(zipfile, file_pattern)
90
- files = []
91
- Zip::File.open(zipfile) do |zip_file|
92
- zip_file.each do |entry|
93
- files << entry.name if entry.name.force_encoding("utf-8").match file_pattern
94
- end
95
- end
96
- files
97
- end
98
- end
99
- end
100
- end
@@ -1,35 +0,0 @@
1
- module Gym
2
- class XcodebuildFixes
3
- class << self
4
- # Determine whether this app has WatchKit2 support and manually package up the WatchKit2 framework
5
- def watchkit2_fix
6
- return unless watchkit2?
7
-
8
- UI.verbose "Adding WatchKit2 support"
9
-
10
- Dir.mktmpdir do |tmpdir|
11
- # Make watchkit support directory
12
- watchkit_support = File.join(tmpdir, "WatchKitSupport2")
13
- Dir.mkdir(watchkit_support)
14
-
15
- # Copy WK from Xcode into WatchKitSupport2
16
- FileUtils.copy_file("#{Xcode.xcode_path}/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/Library/Application Support/WatchKit/WK", File.join(watchkit_support, "WK"))
17
-
18
- # Add "WatchKitSupport2" to the .ipa archive
19
- Dir.chdir(tmpdir) do
20
- abort unless system %(zip --recurse-paths "#{PackageCommandGenerator.ipa_path}" "WatchKitSupport2" > /dev/null)
21
- end
22
-
23
- UI.verbose "Successfully added WatchKit2 support"
24
- end
25
- end
26
-
27
- # Does this application have a WatchKit target
28
- def watchkit2?
29
- Dir["#{PackageCommandGenerator.appfile_path}/**/*.plist"].any? do |plist_path|
30
- `/usr/libexec/PlistBuddy -c 'Print DTSDKName' '#{plist_path}' 2>&1`.match(/^\s*watchos2\.\d+\s*$/)
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,40 +0,0 @@
1
- module Gym
2
- class XcodebuildFixes
3
- class << self
4
- # Determine whether this app has WatchKit support and manually package up the WatchKit framework
5
- def watchkit_fix
6
- return unless should_apply_watchkit1_fix?
7
-
8
- UI.verbose "Adding WatchKit support"
9
-
10
- Dir.mktmpdir do |tmpdir|
11
- # Make watchkit support directory
12
- watchkit_support = File.join(tmpdir, "WatchKitSupport")
13
- Dir.mkdir(watchkit_support)
14
-
15
- # Copy WK from Xcode into WatchKitSupport
16
- FileUtils.copy_file("#{Xcode.xcode_path}/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/Library/Application Support/WatchKit/WK", File.join(watchkit_support, "WK"))
17
-
18
- # Add "WatchKitSupport" to the .ipa archive
19
- Dir.chdir(tmpdir) do
20
- abort unless system %(zip --recurse-paths "#{PackageCommandGenerator.ipa_path}" "WatchKitSupport" > /dev/null)
21
- end
22
-
23
- UI.verbose "Successfully added WatchKit support"
24
- end
25
- end
26
-
27
- # Does this application have a WatchKit target
28
- def watchkit?
29
- Dir["#{PackageCommandGenerator.appfile_path}/**/*.plist"].any? do |plist_path|
30
- `/usr/libexec/PlistBuddy -c 'Print WKWatchKitApp' '#{plist_path}' 2>&1`.strip == 'true'
31
- end
32
- end
33
-
34
- # Should only be applied if watchkit app is not a watchkit2 app
35
- def should_apply_watchkit1_fix?
36
- watchkit? && !Gym::XcodebuildFixes.watchkit2?
37
- end
38
- end
39
- end
40
- end
Binary file