Skip to content

Commit be0c353

Browse files
dmytrorykunfacebook-github-bot
authored andcommitted
CocoaPods: simplify iOS build directory cleanup (#42233)
Summary: Pull Request resolved: #42233 This diff removes the need for providing the `ios_folder` argument to `use_react_native`. We no longer do any manual path tranformations to get the iOS project root. Instead we use `Pod::Config.instance.installation_root` which always points to the correct directory. Changelog: [iOS][Breaking] - CocoaPods: remove the `ios_folder` argument from the `use_react_native` function. Reviewed By: cipolleschi Differential Revision: D52659429 fbshipit-source-id: 67c79cd9d74a0351ad2c242b74cbd48b6bd2dc94
1 parent 8fd2f12 commit be0c353

File tree

5 files changed

+14
-26
lines changed

5 files changed

+14
-26
lines changed

packages/react-native/scripts/cocoapods/__tests__/codegen_utils-test.rb

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -391,11 +391,10 @@ def testCleanUpCodegenFolder_whenCleanupDone_doNothing
391391
# Arrange
392392
CodegenUtils.set_cleanup_done(true)
393393
codegen_dir = "build/generated/ios"
394-
ios_folder = '.'
395394
rn_path = '../node_modules/react-native'
396395

397396
# Act
398-
CodegenUtils.clean_up_build_folder(rn_path, @base_path, ios_folder, codegen_dir, dir_manager: DirMock, file_manager: FileMock)
397+
CodegenUtils.clean_up_build_folder(rn_path, codegen_dir, dir_manager: DirMock, file_manager: FileMock)
399398

400399
# Assert
401400
assert_equal(FileUtils::FileUtilsStorage.rmrf_invocation_count, 0)
@@ -407,11 +406,10 @@ def testCleanUpCodegenFolder_whenFolderDoesNotExists_markAsCleanupDone
407406
# Arrange
408407
CodegenUtils.set_cleanup_done(false)
409408
codegen_dir = "build/generated/ios"
410-
ios_folder = '.'
411409
rn_path = '../node_modules/react-native'
412410

413411
# Act
414-
CodegenUtils.clean_up_build_folder(rn_path, @base_path, ios_folder, codegen_dir, dir_manager: DirMock, file_manager: FileMock)
412+
CodegenUtils.clean_up_build_folder(rn_path, codegen_dir, dir_manager: DirMock, file_manager: FileMock)
415413

416414
# Assert
417415
assert_equal(FileUtils::FileUtilsStorage.rmrf_invocation_count, 0)
@@ -424,8 +422,7 @@ def testCleanUpCodegenFolder_whenFolderExists_deleteItAndSetCleanupDone
424422
# Arrange
425423
CodegenUtils.set_cleanup_done(false)
426424
codegen_dir = "build/generated/ios"
427-
ios_folder = '.'
428-
codegen_path = "#{@base_path}/./#{codegen_dir}"
425+
codegen_path = "#{@base_path}/#{codegen_dir}"
429426
globs = [
430427
"/MyModuleSpecs/MyModule.h",
431428
"#{codegen_path}/MyModuleSpecs/MyModule.mm",
@@ -438,7 +435,7 @@ def testCleanUpCodegenFolder_whenFolderExists_deleteItAndSetCleanupDone
438435
DirMock.mocked_existing_globs(globs, "#{codegen_path}/*")
439436

440437
# Act
441-
CodegenUtils.clean_up_build_folder(rn_path, @base_path, ios_folder, codegen_dir, dir_manager: DirMock, file_manager: FileMock)
438+
CodegenUtils.clean_up_build_folder(rn_path, codegen_dir, dir_manager: DirMock, file_manager: FileMock)
442439

443440
# Assert
444441
assert_equal(DirMock.exist_invocation_params, [codegen_path, codegen_path])
@@ -460,10 +457,9 @@ def test_assertCodegenFolderIsEmpty_whenItDoesNotExists_doesNotAbort
460457
# Arrange
461458
codegen_dir = "build/generated/ios"
462459
codegen_path = "#{@base_path}/./#{codegen_dir}"
463-
ios_folder = '.'
464460

465461
# Act
466-
CodegenUtils.assert_codegen_folder_is_empty(@base_path, ios_folder, codegen_dir, dir_manager: DirMock, file_manager: FileMock)
462+
CodegenUtils.assert_codegen_folder_is_empty(codegen_path, dir_manager: DirMock)
467463

468464
# Assert
469465
assert_equal(Pod::UI.collected_warns, [])
@@ -473,12 +469,11 @@ def test_assertCodegenFolderIsEmpty_whenItExistsAndIsEmpty_doesNotAbort
473469
# Arrange
474470
codegen_dir = "build/generated/ios"
475471
codegen_path = "#{@base_path}/./#{codegen_dir}"
476-
ios_folder = '.'
477472
DirMock.mocked_existing_dirs(codegen_path)
478473
DirMock.mocked_existing_globs([], "#{codegen_path}/*")
479474

480475
# Act
481-
CodegenUtils.assert_codegen_folder_is_empty(@base_path, ios_folder, codegen_dir, dir_manager: DirMock, file_manager: FileMock)
476+
CodegenUtils.assert_codegen_folder_is_empty(codegen_path, dir_manager: DirMock)
482477

483478
# Assert
484479
assert_equal(Pod::UI.collected_warns, [])
@@ -488,13 +483,12 @@ def test_assertCodegenFolderIsEmpty_whenItIsNotEmpty_itAborts
488483
# Arrange
489484
codegen_dir = "build/generated/ios"
490485
codegen_path = "#{@base_path}/./#{codegen_dir}"
491-
ios_folder = '.'
492486
DirMock.mocked_existing_dirs(codegen_path)
493487
DirMock.mocked_existing_globs(["#{codegen_path}/MyModuleSpecs/MyModule.mm",], "#{codegen_path}/*")
494488

495489
# Act
496490
assert_raises() {
497-
CodegenUtils.assert_codegen_folder_is_empty(@base_path, ios_folder, codegen_dir, dir_manager: DirMock, file_manager: FileMock)
491+
CodegenUtils.assert_codegen_folder_is_empty(codegen_path, dir_manager: DirMock)
498492
}
499493

500494
# Assert

packages/react-native/scripts/cocoapods/codegen_utils.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -336,25 +336,25 @@ def self.cleanup_done
336336
return @@CLEANUP_DONE
337337
end
338338

339-
def self.clean_up_build_folder(rn_path, app_path, ios_folder, codegen_dir, dir_manager: Dir, file_manager: File)
339+
def self.clean_up_build_folder(rn_path, codegen_dir, dir_manager: Dir, file_manager: File)
340340
return if CodegenUtils.cleanup_done()
341341
CodegenUtils.set_cleanup_done(true)
342342

343-
codegen_path = file_manager.join(app_path, ios_folder, codegen_dir)
343+
ios_folder = Pod::Config.instance.installation_root.relative_path_from(Pathname.pwd)
344+
codegen_path = file_manager.join(ios_folder, codegen_dir)
344345
return if !dir_manager.exist?(codegen_path)
345346

346347
FileUtils.rm_rf(dir_manager.glob("#{codegen_path}/*"))
347348
base_provider_path = file_manager.join(rn_path, 'React', 'Fabric', 'RCTThirdPartyFabricComponentsProvider')
348349
FileUtils.rm_rf("#{base_provider_path}.h")
349350
FileUtils.rm_rf("#{base_provider_path}.mm")
350-
CodegenUtils.assert_codegen_folder_is_empty(app_path, ios_folder, codegen_dir, dir_manager: dir_manager, file_manager: file_manager)
351+
CodegenUtils.assert_codegen_folder_is_empty(codegen_path, dir_manager: dir_manager)
351352
end
352353

353354
# Need to split this function from the previous one to be able to test it properly.
354-
def self.assert_codegen_folder_is_empty(app_path, ios_folder, codegen_dir, dir_manager: Dir, file_manager: File)
355+
def self.assert_codegen_folder_is_empty(codegen_path, dir_manager: Dir)
355356
# double check that the files have actually been deleted.
356357
# Emit an error message if not.
357-
codegen_path = file_manager.join(app_path, ios_folder, codegen_dir)
358358
if dir_manager.exist?(codegen_path) && dir_manager.glob("#{codegen_path}/*").length() != 0
359359
Pod::UI.warn "Unable to remove the content of #{codegen_path} folder. Please run rm -rf #{codegen_path} and try again."
360360
abort

packages/react-native/scripts/react_native_pods.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,14 @@ def prepare_react_native_project!
6666
# - hermes_enabled: whether Hermes should be enabled or not.
6767
# - app_path: path to the React Native app. Required by the New Architecture.
6868
# - config_file_dir: directory of the `package.json` file, required by the New Architecture.
69-
# - ios_folder: the folder where the iOS code base lives. For a template app, it is `ios`, the default. For RNTester, it is `.`.
7069
def use_react_native! (
7170
path: "../node_modules/react-native",
7271
fabric_enabled: false,
7372
new_arch_enabled: NewArchitectureHelper.new_arch_enabled,
7473
production: false, # deprecated
7574
hermes_enabled: ENV['USE_HERMES'] && ENV['USE_HERMES'] == '0' ? false : true,
7675
app_path: '..',
77-
config_file_dir: '',
78-
ios_folder: 'ios'
76+
config_file_dir: ''
7977
)
8078

8179
# Set the app_path as env variable so the podspecs can access it.
@@ -86,7 +84,7 @@ def use_react_native! (
8684
# that has invoked the `use_react_native!` function.
8785
ReactNativePodsUtils.detect_use_frameworks(current_target_definition)
8886

89-
CodegenUtils.clean_up_build_folder(path, app_path, ios_folder, $CODEGEN_OUTPUT_DIR)
87+
CodegenUtils.clean_up_build_folder(path, $CODEGEN_OUTPUT_DIR)
9088

9189
# We are relying on this flag also in third parties libraries to proper install dependencies.
9290
# Better to rely and enable this environment flag if the new architecture is turned on using flags.

packages/rn-tester/Podfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ def pods(target_name, options = {})
4949
app_path: "#{Dir.pwd}",
5050
config_file_dir: "#{Dir.pwd}/node_modules",
5151
production: false, #deprecated
52-
ios_folder: '.',
5352
)
5453
pod 'ReactCommon-Samples', :path => "#{@prefix_path}/ReactCommon/react/nativemodule/samples"
5554

scripts/releases/__tests__/__fixtures__/remove-new-arch-flags-fixture.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ def use_react_native! (
1818
flipper_configuration: FlipperConfiguration.disabled,
1919
app_path: '..',
2020
config_file_dir: '',
21-
ios_folder: 'ios'
2221
)
2322
end
2423
`;
@@ -32,7 +31,6 @@ def use_react_native! (
3231
flipper_configuration: FlipperConfiguration.disabled,
3332
app_path: '..',
3433
config_file_dir: '',
35-
ios_folder: 'ios'
3634
)
3735
end
3836
`;
@@ -45,7 +43,6 @@ def use_react_native! (
4543
flipper_configuration: FlipperConfiguration.disabled,
4644
app_path: '..',
4745
config_file_dir: '',
48-
ios_folder: 'ios'
4946
)
5047
end
5148
`;

0 commit comments

Comments
 (0)