Skip to content

Commit c8cb3d4

Browse files
authored
[0.75] Fix core autolinking not working on Windows (#45796)
1 parent 011118f commit c8cb3d4

16 files changed

Lines changed: 58 additions & 6 deletions

File tree

.circleci/configurations/jobs.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,10 @@ jobs:
286286
- packages/react-native/ReactAndroid/hermes-engine/build/
287287
- packages/react-native/ReactAndroid/src/main/jni/prebuilt/
288288
- packages/react-native-gradle-plugin/.gradle/
289-
- packages/react-native-gradle-plugin/build/
289+
- packages/react-native-gradle-plugin/react-native-gradle-plugin/build/
290+
- packages/react-native-gradle-plugin/settings-plugin/build/
291+
- packages/react-native-gradle-plugin/shared/build/
292+
- packages/react-native-gradle-plugin/shared-testutil/build/
290293
- packages/react-native-codegen/lib/
291294

292295
# -------------------------

packages/react-native-gradle-plugin/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ build/
22
app-plugin/build/
33
settings-plugin/build/
44
shared/build/
5+
shared-testutil/build/

packages/react-native-gradle-plugin/react-native-gradle-plugin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ dependencies {
5050
implementation(libs.javapoet)
5151

5252
testImplementation(libs.junit)
53+
testImplementation(project(":shared-testutil"))
5354

5455
testRuntimeOnly(
5556
files(

packages/react-native-gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/Os.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ package com.facebook.react.utils
1010
import com.facebook.react.utils.KotlinStdlibCompatUtils.lowercaseCompat
1111
import java.io.File
1212

13-
internal object Os {
13+
object Os {
1414

1515
fun isWindows(): Boolean =
1616
System.getProperty("os.name")?.lowercaseCompat()?.contains("windows") ?: false

packages/react-native-gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/TaskUtils.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@
77

88
package com.facebook.react.utils
99

10-
internal fun windowsAwareCommandLine(vararg args: Any): List<Any> =
10+
fun windowsAwareCommandLine(vararg args: Any): List<Any> =
1111
windowsAwareCommandLine(args.toList())
1212

13-
internal fun windowsAwareCommandLine(args: List<Any>): List<Any> =
13+
fun windowsAwareCommandLine(args: List<Any>): List<Any> =
1414
if (Os.isWindows()) {
1515
listOf("cmd", "/c") + args
1616
} else {
1717
args
1818
}
1919

20-
internal fun windowsAwareBashCommandLine(
20+
fun windowsAwareBashCommandLine(
2121
vararg args: String,
2222
bashWindowsHome: String? = null
2323
): List<String> =

packages/react-native-gradle-plugin/settings-plugin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ dependencies {
4040
implementation(libs.javapoet)
4141

4242
testImplementation(libs.junit)
43+
testImplementation(project(":shared-testutil"))
4344

4445
testRuntimeOnly(
4546
files(

packages/react-native-gradle-plugin/settings-plugin/src/main/kotlin/com/facebook/react/ReactSettingsExtension.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package com.facebook.react
99

1010
import com.facebook.react.utils.JsonUtils
11+
import com.facebook.react.utils.windowsAwareCommandLine
1112
import java.io.File
1213
import java.math.BigInteger
1314
import java.security.MessageDigest
@@ -25,6 +26,11 @@ abstract class ReactSettingsExtension @Inject constructor(val settings: Settings
2526
private val outputFolder =
2627
settings.layout.rootDirectory.file("build/generated/autolinking/").asFile
2728

29+
private val defaultConfigCommand: List<String> =
30+
windowsAwareCommandLine(listOf("npx", "@react-native-community/cli", "config")).map {
31+
it.toString()
32+
}
33+
2834
/**
2935
* Utility function to autolink libraries using an external command as source of truth.
3036
*
@@ -39,7 +45,7 @@ abstract class ReactSettingsExtension @Inject constructor(val settings: Settings
3945
*/
4046
@JvmOverloads
4147
public fun autolinkLibrariesFromCommand(
42-
command: List<String> = listOf("npx", "@react-native-community/cli", "config"),
48+
command: List<String> = defaultConfigCommand,
4349
workingDirectory: File? = settings.layout.rootDirectory.dir("../").asFile,
4450
lockFiles: FileCollection =
4551
settings.layout.rootDirectory

packages/react-native-gradle-plugin/settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ include(
1919
":react-native-gradle-plugin",
2020
":settings-plugin",
2121
":shared",
22+
":shared-testutil",
2223
)
2324

2425
rootProject.name = "gradle-plugins-root"
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* Copyright (c) Meta Platforms, Inc. and affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*/
7+
8+
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
9+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
10+
11+
plugins { alias(libs.plugins.kotlin.jvm) }
12+
13+
repositories { mavenCentral() }
14+
15+
group = "com.facebook.react"
16+
17+
dependencies { implementation(libs.junit) }
18+
19+
java { targetCompatibility = JavaVersion.VERSION_11 }
20+
21+
kotlin { jvmToolchain(17) }
22+
23+
tasks.withType<KotlinCompile>().configureEach {
24+
kotlinOptions {
25+
apiVersion = "1.6"
26+
jvmTarget = "11"
27+
allWarningsAsErrors = true
28+
}
29+
}
30+
31+
tasks.withType<Test>().configureEach {
32+
testLogging {
33+
exceptionFormat = TestExceptionFormat.FULL
34+
showExceptions = true
35+
showCauses = true
36+
showStackTraces = true
37+
}
38+
}

packages/react-native-gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tests/OsRule.kt renamed to packages/react-native-gradle-plugin/shared-testutil/src/main/kotlin/com/facebook/react/tests/OsRule.kt

File renamed without changes.

0 commit comments

Comments
 (0)