From 5eed839f91ec21aa4c6ed594efde18d260503a83 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Wed, 4 Oct 2017 18:53:31 +0300 Subject: [PATCH] samples: Blacklist some xcode environment variables This patch unsets some Xcode environment variables in gradle plugin and command line runner. --- build.gradle | 4 + cmd/run_konan | 5 + .../kotlin-native-gradle-plugin/build.gradle | 1 + .../kotlin/gradle/plugin/KonanToolRunner.kt | 20 +++- utilities/env_blacklist | 107 ++++++++++++++++++ 5 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 utilities/env_blacklist diff --git a/build.gradle b/build.gradle index dccce9e482c..ca6697cffcc 100644 --- a/build.gradle +++ b/build.gradle @@ -191,6 +191,10 @@ task distCompiler(type: Copy) { into('tools') } + from(project(':utilities').file('env_blacklist')) { + into('tools') + } + from(project(':utilities').file('build/libs')) { into('konan/lib') } diff --git a/cmd/run_konan b/cmd/run_konan index c2ad971883f..c175e4c7141 100755 --- a/cmd/run_konan +++ b/cmd/run_konan @@ -74,6 +74,11 @@ java_opts=(-ea \ "-Dkonan.home=${KONAN_HOME}" \ -Dfile.encoding=UTF-8) +# Unset some environment variables which are set by XCode and may potentially affect the tool executed. +for VAR in `cat "${KONAN_HOME}/tools/env_blacklist"`; do + unset $VAR +done + KONAN_JAR="${KONAN_HOME}/konan/lib/backend.native.jar" KOTLIN_JAR="${KONAN_HOME}/konan/lib/kotlin-compiler.jar" STUB_GENERATOR_JAR="${KONAN_HOME}/konan/lib/StubGenerator.jar" diff --git a/tools/kotlin-native-gradle-plugin/build.gradle b/tools/kotlin-native-gradle-plugin/build.gradle index c4b5b8de1d2..7db12ce1613 100644 --- a/tools/kotlin-native-gradle-plugin/build.gradle +++ b/tools/kotlin-native-gradle-plugin/build.gradle @@ -103,6 +103,7 @@ jar { processResources { expand('konanVersion': konanVersion) + from(rootProject.project(':utilities').file('env_blacklist')) } publishing { diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt index c6d65dd5259..fac0c82fa72 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt @@ -19,6 +19,13 @@ internal abstract class KonanCliRunner(val toolName: String, val fullName: Strin override fun getName() = toolName + // We need to unset some environment variables which are set by XCode and may potentially affect the tool executed. + protected val blacklistEnvironment: List by lazy { + KonanPlugin::class.java.getResourceAsStream("/env_blacklist")?.let { stream -> + stream.reader().use { it.readLines() } + } ?: emptyList() + } + override val classpath: FileCollection = project.fileTree("${project.konanHome}/konan/lib/") .apply { include("*.jar") } @@ -39,12 +46,13 @@ internal abstract class KonanCliRunner(val toolName: String, val fullName: Strin "Please change it to the compiler root directory and rerun the build.") } - project.javaexec { - it.main = mainClass - it.classpath = classpath - it.jvmArgs(jvmArgs) - it.args(listOf(toolName) + args) - it.environment(environment) + project.javaexec { spec -> + spec.main = mainClass + spec.classpath = classpath + spec.jvmArgs(jvmArgs) + spec.args(listOf(toolName) + args) + blacklistEnvironment.forEach { spec.environment.remove(it) } + spec.environment(environment) } } } diff --git a/utilities/env_blacklist b/utilities/env_blacklist new file mode 100644 index 00000000000..f8677816a2b --- /dev/null +++ b/utilities/env_blacklist @@ -0,0 +1,107 @@ +ADDITIONAL_SDKS +APPLICATION_EXTENSION_API_ONLY +ARCHS +ARCHS_STANDARD +ARCHS_STANDARD_32_64_BIT +ARCHS_STANDARD_32_BIT +ARCHS_STANDARD_64_BIT +ARCHS_STANDARD_INCLUDING_64_BIT +ARCHS_UNIVERSAL_IPHONE_OS +CLANG_ANALYZER_NONNULL +CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION +CLANG_CXX_LANGUAGE_STANDARD +CLANG_CXX_LIBRARY +CLANG_ENABLE_MODULES +CLANG_ENABLE_OBJC_ARC +CLANG_MODULES_BUILD_SESSION_FILE +CLANG_WARN_BOOL_CONVERSION +CLANG_WARN_CONSTANT_CONVERSION +CLANG_WARN_DIRECT_OBJC_ISA_USAGE +CLANG_WARN_DOCUMENTATION_COMMENTS +CLANG_WARN_EMPTY_BODY +CLANG_WARN_ENUM_CONVERSION +CLANG_WARN_INFINITE_RECURSION +CLANG_WARN_INT_CONVERSION +CLANG_WARN_OBJC_ROOT_CLASS +CLANG_WARN_SUSPICIOUS_MOVE +CLANG_WARN_UNREACHABLE_CODE +CLANG_WARN__DUPLICATE_METHOD_MATCH +CURRENT_ARCH +DEVELOPER_APPLICATIONS_DIR +DEVELOPER_BIN_DIR +DEVELOPER_DIR +DEVELOPER_FRAMEWORKS_DIR +DEVELOPER_FRAMEWORKS_DIR_QUOTED +DEVELOPER_LIBRARY_DIR +DEVELOPER_SDK_DIR +DEVELOPER_TOOLS_DIR +DEVELOPER_USR_DIR +DT_TOOLCHAIN_DIR +ENABLE_BITCODE +ENABLE_DEFAULT_HEADER_SEARCH_PATHS +ENABLE_STRICT_OBJC_MSGSEND +FRAMEWORK_SEARCH_PATHS +GENERATE_MASTER_OBJECT_FILE +GENERATE_PROFILING_CODE +HEADER_SEARCH_PATHS +INLINE_PRIVATE_FRAMEWORKS +KEEP_PRIVATE_EXTERNS +LD_NO_PIE +LD_RUNPATH_SEARCH_PATHS +LINK_WITH_STANDARD_LIBRARIES +MACH_O_TYPE +NATIVE_ARCH +NATIVE_ARCH_32_BIT +NATIVE_ARCH_64_BIT +NATIVE_ARCH_ACTUAL +NO_COMMON +ONLY_ACTIVE_ARCH +PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES +PLATFORM_DEVELOPER_APPLICATIONS_DIR +PLATFORM_DEVELOPER_BIN_DIR +PLATFORM_DEVELOPER_LIBRARY_DIR +PLATFORM_DEVELOPER_SDK_DIR +PLATFORM_DEVELOPER_TOOLS_DIR +PLATFORM_DEVELOPER_USR_DIR +PLATFORM_DIR +SDKROOT +SDK_DIR +SDK_DIR_iphoneos11_0 +SDK_NAME +SDK_NAMES +SDK_PRODUCT_BUILD_VERSION +SDK_VERSION +SDK_VERSION_ACTUAL +SDK_VERSION_MAJOR +SDK_VERSION_MINOR +SHARED_DERIVED_FILE_DIR +SHARED_FRAMEWORKS_FOLDER_PATH +SHARED_PRECOMPS_DIR +SHARED_SUPPORT_FOLDER_PATH +SYSTEM_ADMIN_APPS_DIR +SYSTEM_APPS_DIR +SYSTEM_CORE_SERVICES_DIR +SYSTEM_DEMOS_DIR +SYSTEM_DEVELOPER_APPS_DIR +SYSTEM_DEVELOPER_BIN_DIR +SYSTEM_DEVELOPER_DEMOS_DIR +SYSTEM_DEVELOPER_DIR +SYSTEM_DEVELOPER_DOC_DIR +SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR +SYSTEM_DEVELOPER_JAVA_TOOLS_DIR +SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR +SYSTEM_DEVELOPER_RELEASENOTES_DIR +SYSTEM_DEVELOPER_TOOLS +SYSTEM_DEVELOPER_TOOLS_DOC_DIR +SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR +SYSTEM_DEVELOPER_USR_DIR +SYSTEM_DEVELOPER_UTILITIES_DIR +SYSTEM_DOCUMENTATION_DIR +SYSTEM_KEXT_INSTALL_PATH +SYSTEM_LIBRARY_DIR +TOOLCHAINS +TOOLCHAIN_DIR +USE_DYNAMIC_NO_PIC +USE_HEADERMAP +VALID_ARCHS +XCODE_APP_SUPPORT_DIR \ No newline at end of file