New issue
Advanced search Search tips

Issue 634501 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 3
Type: Bug



Sign in to add a comment

GN: Xcode project generated do not allow running mac app with Xcode 8

Project Member Reported by sdefresne@chromium.org, Aug 4 2016

Issue description

The Xcode project generated with "gn gen --ide=xcode" do not allow to run the mac applications (iOS application do work fine) with Xcode 8 beta 4.
 
Labels: Build-Tools-GN
Status: Available (was: Untriaged)
Project Member

Comment 2 by bugdroid1@chromium.org, Aug 9 2016

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/ios_internal.git/+/b264f346409587dc3096dc34f646373ac3ff5568

commit b264f346409587dc3096dc34f646373ac3ff5568
Author: Sylvain Defresne <sdefresne@google.com>
Date: Tue Aug 09 04:37:29 2016

Ooops, wrong issue.
Components: Infra>Labs

Comment 5 by d...@chromium.org, Aug 12 2016

don't know what labs can do for you here..
Components: -Infra>Labs
Components: Build
Owner: sdefresne@chromium.org
Status: Started (was: Available)
https://codereview.chromium.org/2542613002/ fixes the first issue, but the compilation fails when initiated from Xcode.

This is because when building from Xcode, some environment variables are set that override the SDK selection made in the command-line and the build tries to use 10.12 version of the SDK which is not available in the hermetic build.

The script that takes DEVELOPER_DIR parameter also need to cleanup those environment variables. Variables found to be set by Xcode and causing failure are:

SDK_VERSION_MINOR
SDK_NAME
MACOSX_DEPLOYMENT_TARGET
SDK_VERSION_ACTUAL
MAC_OS_X_VERSION_MAJOR
SDKROOT
SDK_DIR
SDK_DIR_macosx10_12
SDK_NAMES
SDK_VERSION_MAJOR
MAC_OS_X_VERSION_MINOR
SDK_VERSION
MAC_OS_X_VERSION_ACTUAL

There are probably others. As there are a bunch of variables, I think the best option is to add a python module to look for the --developer-dir parameter argument, export DEVELOPER_DIR variable and clean environment from Xcode pollution and then use that module in every scripts.

A better option is probably to clean the environment in the Xcode script that invokes ninja, that way no tool has to be fixed.
Project Member

Comment 11 by bugdroid1@chromium.org, Dec 1 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5d7f4cee65382c428e9d08112354a8a9bd496aa9

commit 5d7f4cee65382c428e9d08112354a8a9bd496aa9
Author: sdefresne <sdefresne@chromium.org>
Date: Wed Nov 30 23:58:40 2016

[GN] Fix generate Xcode project for macOS to work with Xcode 8.

Overridding ARCHS prevents Xcode 8+ from running the compiled binary
on macOS. In addition avoid hard-coding the version of the SDK to use
(since we do not build with Xcode this value is unused) and instead
mention that the version-less SDK.

BUG= 634501 

Review-Url: https://codereview.chromium.org/2542613002
Cr-Commit-Position: refs/heads/master@{#435483}

[modify] https://crrev.com/5d7f4cee65382c428e9d08112354a8a9bd496aa9/tools/gn/xcode_writer.cc

When trying to build for macOS with Xcode 8 using the hermetic build setting (default for Googlers), I get the following errors:


Showing All Messages
[176/335] LIBTOOL-STATIC obj/base/third_party/dynamic_annotations/libdynamic_annotations.a


FAILED: obj/base/third_party/dynamic_annotations/libdynamic_annotations.a 


export DEVELOPER_DIR=/Users/sdefresne/Developer/chromium/src/build/mac_files/Xcode.app;  rm -f obj/base/third_party/dynamic_annotations/libdynamic_annotations.a && TOOL_VERSION=1480514535 python ../../build/toolchain/mac/filter_libtool.py libtool -static  -o obj/base/third_party/dynamic_annotations/libdynamic_annotations.a obj/base/third_party/dynamic_annotations/dynamic_annotations/dynamic_annotations.o


xcodebuild: error: SDK "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk" cannot be located.


libtool: error: unable to find utility "libtool", not a developer tool or in PATH


So, as can be seen in the command-line, ninja sets DEVELOPER_DIR to points to the hermetic build directory that only ships at the moment with SDK 10.10 and 10.11, but xcodebuild command looks for 10.12 SDK, fails and then fail to invoke the libtool command. When changing the project settings to log the environment variable sets by Xcode, we can see that there are a lot of them:

    cd /Users/sdefresne/Developer/chromium/src/out/Default
    export ACTION=build
    export ALTERNATE_GROUP=eng
    export ALTERNATE_MODE=u+w,go-w,a+rX
    export ALTERNATE_OWNER=sdefresne
    export ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO
    export ALWAYS_SEARCH_USER_PATHS=YES
    export ALWAYS_USE_SEPARATE_HEADERMAPS=NO
    export APPLE_INTERNAL_DEVELOPER_DIR=/AppleInternal/Developer
    export APPLE_INTERNAL_DIR=/AppleInternal
    export APPLE_INTERNAL_DOCUMENTATION_DIR=/AppleInternal/Documentation
    export APPLE_INTERNAL_LIBRARY_DIR=/AppleInternal/Library
    export APPLE_INTERNAL_TOOLS=/AppleInternal/Developer/Tools
    export APPLICATION_EXTENSION_API_ONLY=NO
    export APPLY_RULES_IN_COPY_FILES=NO
    export ARCHS=x86_64
    export ARCHS_STANDARD=x86_64
    export ARCHS_STANDARD_32_64_BIT="x86_64 i386"
    export ARCHS_STANDARD_32_BIT=i386
    export ARCHS_STANDARD_64_BIT=x86_64
    export ARCHS_STANDARD_INCLUDING_64_BIT=x86_64
    export AVAILABLE_PLATFORMS="appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"
    export BITCODE_GENERATION_MODE=marker
    export BUILD_ACTIVE_RESOURCES_ONLY=NO
    export BUILD_COMPONENTS="headers build"
    export BUILD_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Products
    export BUILD_ROOT=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Products
    export BUILD_STYLE=
    export BUILD_VARIANTS=normal
    export BUILT_PRODUCTS_DIR=/Users/sdefresne/Developer/chromium/src/out/Default
    export CACHE_ROOT=/var/folders/2t/_89yny6x3xs_sl_xpd4km2gr004bvw/C/com.apple.DeveloperTools/8.1-8B62/Xcode
    export CCHROOT=/var/folders/2t/_89yny6x3xs_sl_xpd4km2gr004bvw/C/com.apple.DeveloperTools/8.1-8B62/Xcode
    export CHMOD=/bin/chmod
    export CHOWN=/usr/sbin/chown
    export CLANG_MODULES_BUILD_SESSION_FILE=/Users/sdefresne/Library/Developer/Xcode/DerivedData/ModuleCache/Session.modulevalidation
    export CLASS_FILE_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/JavaClasses
    export CLEAN_PRECOMPS=YES
    export CLONE_HEADERS=NO
    export CODESIGNING_FOLDER_PATH=/Users/sdefresne/Developer/chromium/src/out/Default/gn
    export CODE_SIGNING_ALLOWED=YES
    export CODE_SIGNING_REQUIRED=NO
    export COLOR_DIAGNOSTICS=NO
    export COMBINE_HIDPI_IMAGES=NO
    export COMMAND_MODE=legacy
    export COMPOSITE_SDK_DIRS=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/CompositeSDKs
    export COMPRESS_PNG_FILES=NO
    export CONFIGURATION=Default
    export CONFIGURATION_BUILD_DIR=/Users/sdefresne/Developer/chromium/src/out/Default
    export CONFIGURATION_TEMP_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default
    export COPYING_PRESERVES_HFS_DATA=NO
    export COPY_HEADERS_RUN_UNIFDEF=NO
    export COPY_PHASE_STRIP=YES
    export COPY_RESOURCES_FROM_STATIC_FRAMEWORKS=YES
    export CP=/bin/cp
    export CREATE_INFOPLIST_SECTION_IN_BINARY=NO
    export CURRENT_ARCH=x86_64
    export CURRENT_VARIANT=normal
    export DEAD_CODE_STRIPPING=NO
    export DEBUGGING_SYMBOLS=YES
    export DEBUG_INFORMATION_FORMAT=dwarf
    export DEFAULT_COMPILER=com.apple.compilers.llvm.clang.1_0
    export DEFAULT_KEXT_INSTALL_PATH=/Library/Extensions
    export DEFINES_MODULE=NO
    export DEPLOYMENT_LOCATION=NO
    export DEPLOYMENT_POSTPROCESSING=NO
    export DEPLOYMENT_TARGET_CLANG_ENV_NAME=MACOSX_DEPLOYMENT_TARGET
    export DEPLOYMENT_TARGET_CLANG_FLAG_NAME=mmacosx-version-min
    export DEPLOYMENT_TARGET_SETTING_NAME=MACOSX_DEPLOYMENT_TARGET
    export DERIVED_FILES_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/DerivedSources
    export DERIVED_FILE_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/DerivedSources
    export DERIVED_SOURCES_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/DerivedSources
    export DEVELOPER_APPLICATIONS_DIR=/Applications/Xcode.app/Contents/Developer/Applications
    export DEVELOPER_BIN_DIR=/Applications/Xcode.app/Contents/Developer/usr/bin
    export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
    export DEVELOPER_FRAMEWORKS_DIR=/Applications/Xcode.app/Contents/Developer/Library/Frameworks
    export DEVELOPER_FRAMEWORKS_DIR_QUOTED=/Applications/Xcode.app/Contents/Developer/Library/Frameworks
    export DEVELOPER_LIBRARY_DIR=/Applications/Xcode.app/Contents/Developer/Library
    export DEVELOPER_SDK_DIR=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
    export DEVELOPER_TOOLS_DIR=/Applications/Xcode.app/Contents/Developer/Tools
    export DEVELOPER_USR_DIR=/Applications/Xcode.app/Contents/Developer/usr
    export DEVELOPMENT_LANGUAGE=English
    export DO_HEADER_SCANNING_IN_JAM=NO
    export DSTROOT=/tmp/products.dst
    export DT_TOOLCHAIN_DIR=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
    export DWARF_DSYM_FILE_NAME=gn.dSYM
    export DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT=NO
    export DWARF_DSYM_FOLDER_PATH=/Users/sdefresne/Developer/chromium/src/out/Default
    export EMBEDDED_CONTENT_CONTAINS_SWIFT=NO
    export EMBEDDED_PROFILE_NAME=embedded.provisionprofile
    export EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE=NO
    export ENABLE_BITCODE=NO
    export ENABLE_DEFAULT_HEADER_SEARCH_PATHS=YES
    export ENABLE_HEADER_DEPENDENCIES=YES
    export ENABLE_ON_DEMAND_RESOURCES=NO
    export ENABLE_TESTABILITY=NO
    export EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS=".DS_Store .svn .git .hg CVS"
    export EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES="*.nib *.lproj *.framework *.gch *.xcode* *.xcassets (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj"
    export EXECUTABLE_NAME=gn
    export EXECUTABLE_PATH=gn
    export EXPANDED_CODE_SIGN_IDENTITY=
    export EXPANDED_CODE_SIGN_IDENTITY_NAME=
    export EXPANDED_PROVISIONING_PROFILE=
    export FILE_LIST=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/Objects/LinkFileList
    export FIXED_FILES_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/FixedFiles
    export FRAMEWORK_FLAG_PREFIX=-framework
    export FRAMEWORK_SEARCH_PATHS="/Users/sdefresne/Developer/chromium/src/out/Default "
    export FRAMEWORK_VERSION=A
    export FULL_PRODUCT_NAME=gn
    export GCC3_VERSION=3.3
    export GCC_DYNAMIC_NO_PIC=NO
    export GCC_INLINES_ARE_PRIVATE_EXTERN=YES
    export GCC_PFE_FILE_C_DIALECTS="c objective-c c++ objective-c++"
    export GCC_SYMBOLS_PRIVATE_EXTERN=YES
    export GCC_TREAT_WARNINGS_AS_ERRORS=NO
    export GCC_VERSION=com.apple.compilers.llvm.clang.1_0
    export GCC_VERSION_IDENTIFIER=com_apple_compilers_llvm_clang_1_0
    export GENERATE_MASTER_OBJECT_FILE=NO
    export GENERATE_PKGINFO_FILE=NO
    export GENERATE_PROFILING_CODE=NO
    export GENERATE_TEXT_BASED_STUBS=NO
    export GID=5000
    export GROUP=eng
    export HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT=YES
    export HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES=YES
    export HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS=YES
    export HEADERMAP_INCLUDES_PROJECT_HEADERS=YES
    export HEADERMAP_USES_FRAMEWORK_PREFIX_ENTRIES=YES
    export HEADERMAP_USES_VFS=NO
    export HEADER_SEARCH_PATHS="/Users/sdefresne/Developer/chromium/src/out/Default/include "
    export HIDE_BITCODE_SYMBOLS=YES
    export HOME=/Users/sdefresne
    export ICONV=/usr/bin/iconv
    export INFOPLIST_EXPAND_BUILD_SETTINGS=YES
    export INFOPLIST_OUTPUT_FORMAT=same-as-input
    export INFOPLIST_PREPROCESS=NO
    export INLINE_PRIVATE_FRAMEWORKS=NO
    export INSTALLHDRS_COPY_PHASE=NO
    export INSTALLHDRS_SCRIPT_PHASE=NO
    export INSTALL_DIR=/tmp/products.dst/usr/local/bin
    export INSTALL_GROUP=eng
    export INSTALL_MODE_FLAG=u+w,go-w,a+rX
    export INSTALL_OWNER=sdefresne
    export INSTALL_PATH=/usr/local/bin
    export INSTALL_ROOT=/tmp/products.dst
    export JAVAC_DEFAULT_FLAGS="-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8"
    export JAVA_APP_STUB=/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub
    export JAVA_ARCHIVE_CLASSES=YES
    export JAVA_ARCHIVE_TYPE=JAR
    export JAVA_COMPILER=/usr/bin/javac
    export JAVA_FRAMEWORK_RESOURCES_DIRS=Resources
    export JAVA_JAR_FLAGS=cv
    export JAVA_SOURCE_SUBDIR=.
    export JAVA_USE_DEPENDENCIES=YES
    export JAVA_ZIP_FLAGS=-urg
    export JIKES_DEFAULT_FLAGS="+E +OLDCSO"
    export KEEP_PRIVATE_EXTERNS=NO
    export LD_DEPENDENCY_INFO_FILE=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/Objects-normal/x86_64/gn_dependency_info.dat
    export LD_GENERATE_MAP_FILE=NO
    export LD_MAP_FILE_PATH=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/gn-LinkMap-normal-x86_64.txt
    export LD_NO_PIE=NO
    export LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER=YES
    export LEGACY_DEVELOPER_DIR=/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer
    export LEX=lex
    export LIBRARY_FLAG_NOSPACE=YES
    export LIBRARY_FLAG_PREFIX=-l
    export LIBRARY_KEXT_INSTALL_PATH=/Library/Extensions
    export LIBRARY_SEARCH_PATHS="/Users/sdefresne/Developer/chromium/src/out/Default "
    export LINKER_DISPLAYS_MANGLED_NAMES=NO
    export LINK_FILE_LIST_normal_x86_64=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/Objects-normal/x86_64/gn.LinkFileList
    export LINK_WITH_STANDARD_LIBRARIES=YES
    export LOCALIZABLE_CONTENT_DIR=
    export LOCAL_ADMIN_APPS_DIR=/Applications/Utilities
    export LOCAL_APPS_DIR=/Applications
    export LOCAL_DEVELOPER_DIR=/Library/Developer
    export LOCAL_LIBRARY_DIR=/Library
    export LOCROOT=
    export LOCSYMROOT=
    export MACOSX_DEPLOYMENT_TARGET=10.12
    export MAC_OS_X_PRODUCT_BUILD_VERSION=16B2555
    export MAC_OS_X_VERSION_ACTUAL=101201
    export MAC_OS_X_VERSION_MAJOR=101200
    export MAC_OS_X_VERSION_MINOR=1201
    export METAL_LIBRARY_FILE_BASE=default
    export METAL_LIBRARY_OUTPUT_DIR=/Users/sdefresne/Developer/chromium/src/out/Default/
    export MODULE_CACHE_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/ModuleCache
    export NATIVE_ARCH=i386
    export NATIVE_ARCH_32_BIT=i386
    export NATIVE_ARCH_64_BIT=x86_64
    export NATIVE_ARCH_ACTUAL=x86_64
    export NO_COMMON=YES
    export OBJECT_FILE_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/Objects
    export OBJECT_FILE_DIR_normal=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/Objects-normal
    export OBJROOT=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates
    export ONLY_ACTIVE_ARCH=NO
    export OS=MACOS
    export OSAC=/usr/bin/osacompile
    export PACKAGE_TYPE=com.apple.package-type.mach-o-executable
    export PASCAL_STRINGS=YES
    export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    export PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES="/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Applications/Xcode.app/Contents/Developer/Headers /Applications/Xcode.app/Contents/Developer/SDKs /Applications/Xcode.app/Contents/Developer/Platforms"
    export PKGINFO_FILE_PATH=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/PkgInfo
    export PLATFORM_DEVELOPER_APPLICATIONS_DIR=/Applications/Xcode.app/Contents/Developer/Applications
    export PLATFORM_DEVELOPER_BIN_DIR=/Applications/Xcode.app/Contents/Developer/usr/bin
    export PLATFORM_DEVELOPER_LIBRARY_DIR=/Applications/Xcode.app/Contents/Developer/Library
    export PLATFORM_DEVELOPER_SDK_DIR=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
    export PLATFORM_DEVELOPER_TOOLS_DIR=/Applications/Xcode.app/Contents/Developer/Tools
    export PLATFORM_DEVELOPER_USR_DIR=/Applications/Xcode.app/Contents/Developer/usr
    export PLATFORM_DIR=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform
    export PLATFORM_DISPLAY_NAME=macOS
    export PLATFORM_NAME=macosx
    export PLATFORM_PREFERRED_ARCH=x86_64
    export PLATFORM_PRODUCT_BUILD_VERSION=8B62
    export PLIST_FILE_OUTPUT_FORMAT=same-as-input
    export PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR=YES
    export PRECOMP_DESTINATION_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/PrefixHeaders
    export PRESERVE_DEAD_CODE_INITS_AND_TERMS=NO
    export PRODUCT_MODULE_NAME=gn
    export PRODUCT_NAME=gn
    export PRODUCT_SETTINGS_PATH=
    export PRODUCT_TYPE=com.apple.product-type.tool
    export PROFILING_CODE=NO
    export PROJECT=products
    export PROJECT_DERIVED_FILE_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/DerivedSources
    export PROJECT_DIR=/Users/sdefresne/Developer/chromium/src/out/Default
    export PROJECT_FILE_PATH=/Users/sdefresne/Developer/chromium/src/out/Default/products.xcodeproj
    export PROJECT_NAME=products
    export PROJECT_TEMP_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build
    export PROJECT_TEMP_ROOT=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates
    export RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS=YES
    export REMOVE_CVS_FROM_RESOURCES=YES
    export REMOVE_GIT_FROM_RESOURCES=YES
    export REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES=YES
    export REMOVE_HG_FROM_RESOURCES=YES
    export REMOVE_SVN_FROM_RESOURCES=YES
    export REZ_COLLECTOR_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/ResourceManagerResources
    export REZ_EXECUTABLE=YES
    export REZ_OBJECTS_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/ResourceManagerResources/Objects
    export REZ_SEARCH_PATHS="/Users/sdefresne/Developer/chromium/src/out/Default "
    export SCAN_ALL_SOURCE_FILES_FOR_INCLUDES=NO
    export SCRIPT_INPUT_FILE_COUNT=0
    export SCRIPT_OUTPUT_FILE_COUNT=0
    export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk
    export SDK_DIR=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk
    export SDK_DIR_macosx10_12=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk
    export SDK_NAME=macosx10.12
    export SDK_NAMES=macosx10.12
    export SDK_PRODUCT_BUILD_VERSION=16B2649
    export SDK_VERSION=10.12
    export SDK_VERSION_ACTUAL=101200
    export SDK_VERSION_MAJOR=101200
    export SDK_VERSION_MINOR=1200
    export SED=/usr/bin/sed
    export SEPARATE_STRIP=NO
    export SEPARATE_SYMBOL_EDIT=NO
    export SET_DIR_MODE_OWNER_GROUP=YES
    export SET_FILE_MODE_OWNER_GROUP=NO
    export SHALLOW_BUNDLE=NO
    export SHARED_DERIVED_FILE_DIR=/Users/sdefresne/Developer/chromium/src/out/Default/DerivedSources
    export SHARED_PRECOMPS_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/PrecompiledHeaders
    export SKIP_INSTALL=NO
    export SOURCE_ROOT=/Users/sdefresne/Developer/chromium/src/out/Default
    export SRCROOT=/Users/sdefresne/Developer/chromium/src/out/Default
    export STRINGS_FILE_OUTPUT_ENCODING=UTF-16
    export STRIP_BITCODE_FROM_COPIED_FILES=NO
    export STRIP_INSTALLED_PRODUCT=YES
    export STRIP_PNG_TEXT=NO
    export STRIP_STYLE=all
    export SUPPORTED_PLATFORMS=macosx
    export SUPPORTS_TEXT_BASED_API=NO
    export SWIFT_PLATFORM_TARGET_PREFIX=macosx
    export SYMROOT=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Products
    export SYSTEM_ADMIN_APPS_DIR=/Applications/Utilities
    export SYSTEM_APPS_DIR=/Applications
    export SYSTEM_CORE_SERVICES_DIR=/System/Library/CoreServices
    export SYSTEM_DEMOS_DIR=/Applications/Extras
    export SYSTEM_DEVELOPER_APPS_DIR=/Applications/Xcode.app/Contents/Developer/Applications
    export SYSTEM_DEVELOPER_BIN_DIR=/Applications/Xcode.app/Contents/Developer/usr/bin
    export SYSTEM_DEVELOPER_DEMOS_DIR="/Applications/Xcode.app/Contents/Developer/Applications/Utilities/Built Examples"
    export SYSTEM_DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
    export SYSTEM_DEVELOPER_DOC_DIR="/Applications/Xcode.app/Contents/Developer/ADC Reference Library"
    export SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR="/Applications/Xcode.app/Contents/Developer/Applications/Graphics Tools"
    export SYSTEM_DEVELOPER_JAVA_TOOLS_DIR="/Applications/Xcode.app/Contents/Developer/Applications/Java Tools"
    export SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR="/Applications/Xcode.app/Contents/Developer/Applications/Performance Tools"
    export SYSTEM_DEVELOPER_RELEASENOTES_DIR="/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes"
    export SYSTEM_DEVELOPER_TOOLS=/Applications/Xcode.app/Contents/Developer/Tools
    export SYSTEM_DEVELOPER_TOOLS_DOC_DIR="/Applications/Xcode.app/Contents/Developer/ADC Reference Library/documentation/DeveloperTools"
    export SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR="/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes/DeveloperTools"
    export SYSTEM_DEVELOPER_USR_DIR=/Applications/Xcode.app/Contents/Developer/usr
    export SYSTEM_DEVELOPER_UTILITIES_DIR=/Applications/Xcode.app/Contents/Developer/Applications/Utilities
    export SYSTEM_DOCUMENTATION_DIR=/Library/Documentation
    export SYSTEM_KEXT_INSTALL_PATH=/System/Library/Extensions
    export SYSTEM_LIBRARY_DIR=/System/Library
    export TAPI_VERIFY_MODE=ErrorsOnly
    export TARGETNAME=gn
    export TARGET_BUILD_DIR=/Users/sdefresne/Developer/chromium/src/out/Default
    export TARGET_NAME=gn
    export TARGET_TEMP_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build
    export TEMP_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build
    export TEMP_FILES_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build
    export TEMP_FILE_DIR=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build
    export TEMP_ROOT=/Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates
    export TOOLCHAINS=com.apple.dt.toolchain.XcodeDefault
    export TOOLCHAIN_DIR=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
    export TREAT_MISSING_BASELINES_AS_TEST_FAILURES=NO
    export UID=143228
    export UNSTRIPPED_PRODUCT=NO
    export USER=sdefresne
    export USER_APPS_DIR=/Users/sdefresne/Applications
    export USER_LIBRARY_DIR=/Users/sdefresne/Library
    export USE_DYNAMIC_NO_PIC=YES
    export USE_HEADERMAP=YES
    export USE_HEADER_SYMLINKS=NO
    export VALIDATE_PRODUCT=NO
    export VALID_ARCHS="i386 x86_64"
    export VERBOSE_PBXCP=NO
    export VERSION_INFO_BUILDER=sdefresne
    export VERSION_INFO_FILE=gn_vers.c
    export VERSION_INFO_STRING="\"@(#)PROGRAM:gn  PROJECT:products-\""
    export WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES=NO
    export XCODE_APP_SUPPORT_DIR=/Applications/Xcode.app/Contents/Developer/Library/Xcode
    export XCODE_PRODUCT_BUILD_VERSION=8B62
    export XCODE_VERSION_ACTUAL=0810
    export XCODE_VERSION_MAJOR=0800
    export XCODE_VERSION_MINOR=0810
    export XPCSERVICES_FOLDER_PATH=/XPCServices
    export YACC=yacc
    export arch=x86_64
    export variant=normal
    /bin/sh -c /Users/sdefresne/Library/Developer/Xcode/DerivedData/all-gulsmlbykumutmgxftcopbocfvrl/Build/Intermediates/products.build/Default/gn.build/Script-3B2386F84A954CAA4C55CB71.sh

Since those environment variables are not set when the command is run from the command-line, then it is best to discard them when running via Xcode. This can be done by using "env -i" to invoke ninja and only exporting the variable that we expect to see when running from a shell. It appears that HOME, LANG, PATH, TMPDIR and USER are needed to have the build succeed (TMPDIR is required for goma, HOME and USER are required for access to the keychain, PATH is required to find the tools like ninja; LANG is not really required, but this allow for displaying localized compiler error message). The value of TMPDIR must not be captured when the "gn gen" command is run, the other may, except PATH that must be captured (as ninja comes from depot_tools that is expected to be in the PATH when user run "gn gen" but probably not in the PATH of Xcode run through the graphical UI).
Project Member

Comment 13 by bugdroid1@chromium.org, Dec 1 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/84aac8fc963ba786889000c40bb5c5a7e95b1b3b

commit 84aac8fc963ba786889000c40bb5c5a7e95b1b3b
Author: sdefresne <sdefresne@chromium.org>
Date: Thu Dec 01 20:58:26 2016

[GN] Sanitize environment variables when running ninja from Xcode.

When invoking build script from Xcode, many environment variables
are exported by Xcode based on the project settings. Sanitize the
environment as those variable interact poorly with the hermetic
build (see linked bug for detail of failure more).

BUG= 634501 

Review-Url: https://codereview.chromium.org/2544803002
Cr-Commit-Position: refs/heads/master@{#435707}

[modify] https://crrev.com/84aac8fc963ba786889000c40bb5c5a7e95b1b3b/tools/gn/xcode_writer.cc

Status: Fixed (was: Started)

Sign in to add a comment