gyp.main执行过程

接着上一篇分析,gyp_chromium文件的结尾调用gyp.main(args)。args包含chrome_src目录下的所有supplement.gypi文件以及script_dir下的common.gypi和features_override.gypi和all.gyp文件。

############## gyp/__init__.py::main()############
  home_vars = ['HOME']
  if sys.platform in ('cygwin', 'win32'):
    home_vars.append('USERPROFILE')
  home = None
  home_dot_gyp = None
  for home_var in home_vars:
    home = os.getenv(home_var)
    if home != None:
      home_dot_gyp = os.path.join(home, '.gyp')
      if not os.path.exists(home_dot_gyp):
        home_dot_gyp = None
      else:
        break

  # TODO(thomasvl): add support for ~/.gyp/defaults

  options, build_files_arg = parser.parse_args(args)
  build_files = build_files_arg

options存放了带参数选项的默认值,build_files为['/home/hejinxin/initchormium/src/build/all.gyp', '/home/hejinxin/initchormium/src/build/common.gypi','/home/hejinxin/initchormium/src/build/features_override.gypi', ]。

############## chromium.gyp_env ###########
{
	'GYP_DEFINES': 'OS=linux',
	'GYP_GENERATORS': 'ninja',
	'GYP_GENERATOR_OUTPU': '..',
}

options.formats = ninja, options.use_environment = True, options.generator_output = ".." 在调用gyp_chromium时加参数--depth=. ,使得options.depth = "."

  if not options.formats:
    # If no format was given on the command line, then check the env variable.
    generate_formats = []
    if options.use_environment:
      generate_formats = os.environ.get('GYP_GENERATORS', [])
    if generate_formats:
      generate_formats = re.split('[\s,]', generate_formats)
    if generate_formats:
      options.formats = generate_formats
    else:
      # Nothing in the variable, default based on platform.
      options.formats = [ {'darwin':   'xcode',
                           'win32':    'msvs',
			   'cygwin':   'msvs'}.get(sys.platform, 'make') ]

  if not options.generator_output and options.use_environment:
    g_o = os.environ.get('GYP_GENERATOR_OUTPUT')
    if g_o:
      options.generator_output = g_o

检查gyp命令参数是否包含系统格式format以及目标文件输出的路径等,如果没有查看给出的环境配置文件里面的变量GYP_GENERATORS和GYP_GENERATOR_OUTPUT是否指定。另外还要设置目标文件的头文件include变量,系统的默认命令行参数,gyp文件的相对路径depth等等。最后,调用load方程:

###############/usr/lib/pymodules/python2.7/gyp/__init__.py###########
  # Generate all requested formats (use a set in case we got one format request
  # twice)
  for format in set(options.formats):
    params = {'options': options,
              'build_files': build_files,
              'generator_flags': generator_flags,
              'cwd': os.getcwd(),
              'build_files_arg': build_files_arg,
              'gyp_binary': sys.argv[0],
              'home_dot_gyp': home_dot_gyp}

    # Start with the default variables from the command line.
    [generator, flat_list, targets, data] = Load(build_files, format,
                                                 cmdline_default_variables,
                                                 includes, options.depth,
                                                 params, options.check,
                                                 options.circular_check)

    # TODO(mark): Pass |data| for now because the generator needs a list of
    # build files that came in.  In the future, maybe it should just accept
    # a list, and not the whole data dict.
    # NOTE: flat_list is the flattened dependency graph specifying the order
    # that targets may be built.  Build systems that operate serially or that
    # need to have dependencies defined before dependents reference them should
    # generate targets in the order specified in flat_list.
    generator.GenerateOutput(flat_list, targets, data, params)

为每一个指定的形式,,如xcode,ninja,make,scons,msvs等,生成构建文件。


npm ERR! code 1 npm ERR! path C:\Users\jian\Desktop\bc\ab\ssmj58m4\src\main\webapp\admin\node_modules\node-sass npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node scripts/build.js npm ERR! Building: D:\nvm\nodejs\node.exe C:\Users\jian\Desktop\bc\ab\ssmj58m4\src\main\webapp\admin\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library= npm ERR! gyp info it worked if it ends with ok npm ERR! gyp verb cli [ npm ERR! gyp verb cli 'D:\\nvm\\nodejs\\node.exe', npm ERR! gyp verb cli 'C:\\Users\\jian\\Desktop\\bc\\ab\\ssmj58m4\\src\\main\\webapp\\admin\\node_modules\\node-gyp\\bin\\node-gyp.js', npm ERR! gyp verb cli 'rebuild', npm ERR! gyp verb cli '--verbose', npm ERR! gyp verb cli '--libsass_ext=', npm ERR! gyp verb cli '--libsass_cflags=', npm ERR! gyp verb cli '--libsass_ldflags=', npm ERR! gyp verb cli '--libsass_library=' npm ERR! gyp verb cli ] npm ERR! gyp info using node-gyp@3.8.0 npm ERR! gyp info using node@18.18.0 | win32 | x64 npm ERR! gyp verb command rebuild [] npm ERR! gyp verb command clean [] npm ERR! gyp verb clean removing "build" directory npm ERR! gyp verb command configure [] npm ERR! gyp verb check python checking for Python executable "python2" in the PATH npm ERR! gyp verb `which` failed Error: not found: python2 npm ERR! gyp verb `which` failed at getNotFoundError (C:\Users\jian\Desktop\bc\ab\ssmj58m4\src\main\webapp\admin\node_modules\which\which.js:13:12) npm ERR! gyp verb `which` failed at F (C:\Users\jian\Desktop\bc\ab\ssmj58m4\src\main\webapp\admin\node_modules\which\which.js:68:19) npm ERR! gyp verb `which` failed at E (C:\Users\jian\Desktop\bc\ab\ssmj58m4\src\main\webapp\admin\node_modules\which\which.js:80:29) npm ERR! gyp verb `which` failed at C:\Users\jian\Desktop\bc\ab\ssmj58m4\src\main\webapp\admin\node_modules\which\which.js:89:16 npm ERR! gyp verb `which` failed at C:\Users\jian\Desktop\bc\ab\ss
03-23
安装 报错npm WARN deprecated npmlog@4.1.2: This package is no longer supported. npm WARN deprecated are-we-there-yet@1.1.7: This package is no longer supported. npm WARN deprecated gauge@2.7.4: This package is no longer supported. npm ERR! code 1 npm ERR! path /Users/yangjia/workspace/company/dkYun/SDK2.0/node_modules/microtime npm ERR! command failed npm ERR! command sh -c prebuild-install || node-gyp rebuild npm ERR! CXX(target) Release/obj.target/microtime/src/microtime.o npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp@8.4.1 npm ERR! gyp info using node@16.14.0 | darwin | arm64 npm ERR! gyp info find Python using Python version 3.12.1 found at "/Library/Frameworks/Python.framework/Versions/3.12/bin/python3" npm ERR! gyp info spawn /Library/Frameworks/Python.framework/Versions/3.12/bin/python3 npm ERR! gyp info spawn args [ npm ERR! gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py', npm ERR! gyp info spawn args 'binding.gyp', npm ERR! gyp info spawn args '-f', npm ERR! gyp info spawn args 'make', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/Users/yangjia/workspace/company/dkYun/SDK2.0/node_modules/microtime/build/config.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/common.gypi', npm ERR! gyp info spawn args '-Dlibrary=shared_library', npm ERR! gyp info spawn args '-Dvisibility=default', npm ERR! gyp info spawn args '-Dnode_root_dir=/Users/yangjia/Library/Caches/node-gyp/16.14.0', npm ERR! gyp info spawn args '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp', npm ERR! gyp info spawn args '-Dnode_lib_file=/Users/yangjia/Library/Caches/node-gyp/16.14.0/<(target_arch)/node.lib', npm ERR! gyp info spawn args '-Dmodule_root_dir=/Users/yangjia/workspace/company/dkYun/SDK2.0/node_modules/microtime', npm ERR! gyp info spawn args '-Dnode_engine=v8', npm ERR! gyp info spawn args '--depth=.', npm ERR! gyp info spawn args '--no-parallel', npm ERR! gyp info spawn args '--generator-output', npm ERR! gyp info spawn args 'build', npm ERR! gyp info spawn args '-Goutput_dir=.' npm ERR! gyp info spawn args ] npm ERR! gyp info spawn make npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ] npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:222: npm ERR! In file included from ../../nan/nan_converters.h:67: npm ERR! ../../nan/nan_converters_43_inl.h:22:1: error: no viable conversion from 'Local<v8::Context>' to 'v8::Isolate *' npm ERR! X(Boolean) npm ERR! ^~~~~~~~~~ npm ERR! ../../nan/nan_converters_43_inl.h:18:23: note: expanded from macro 'X' npm ERR! val->To ## TYPE(isolate->GetCurrentContext()) \ npm ERR! ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3086:37: note: passing argument to parameter 'isolate' here npm ERR! Local<Boolean> ToBoolean(Isolate* isolate) const; npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:222: npm ERR! In file included from ../../nan/nan_converters.h:67: npm ERR! ../../nan/nan_converters_43_inl.h:22:1: error: no member named 'FromMaybe' in 'v8::Local<v8::Boolean>' npm ERR! X(Boolean) npm ERR! ^~~~~~~~~~ npm ERR! ../../nan/nan_converters_43_inl.h:19:12: note: expanded from macro 'X' npm ERR! .FromMaybe(v8::Local<v8::TYPE>())); \ npm ERR! ^ npm ERR! ../../nan/nan_converters_43_inl.h:40:1: error: no viable conversion from 'Local<v8::Context>' to 'v8::Isolate *' npm ERR! X(bool, Boolean) npm ERR! ^~~~~~~~~~~~~~~~ npm ERR! ../../nan/nan_converters_43_inl.h:37:29: note: expanded from macro 'X' npm ERR! return val->NAME ## Value(isolate->GetCurrentContext()); \ npm ERR! ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3096:30: note: passing argument to parameter 'isolate' here npm ERR! bool BooleanValue(Isolate* isolate) const; npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:222: npm ERR! In file included from ../../nan/nan_converters.h:67: npm ERR! ../../nan/nan_converters_43_inl.h:40:1: error: no viable conversion from returned value of type 'bool' to function return type 'imp::ToFactory<bool>::return_t' (aka 'Maybe<bool>') npm ERR! X(bool, Boolean) npm ERR! ^~~~~~~~~~~~~~~~ npm ERR! ../../nan/nan_converters_43_inl.h:37:10: note: expanded from macro 'X' npm ERR! return val->NAME ## Value(isolate->GetCurrentContext()); \ npm ERR! ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:10437:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'bool' to 'const v8::Maybe<bool> &' for 1st argument npm ERR! class Maybe { npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:10437:7: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'bool' to 'v8::Maybe<bool> &&' for 1st argument npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:10492:12: note: explicit constructor is not a candidate npm ERR! explicit Maybe(const T& t) : has_value_(true), value_(t) {} npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:223: npm ERR! In file included from ../../nan/nan_new.h:189: npm ERR! ../../nan/nan_implementation_12_inl.h:356:37: error: too few arguments to function call, expected 2, have 1 npm ERR! return v8::StringObject::New(value).As<v8::StringObject>(); npm ERR! ~~~~~~~~~~~~~~~~~~~~~ ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:6196:23: note: 'New' declared here npm ERR! static Local<Value> New(Isolate* isolate, Local<String> value); npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:2722: npm ERR! ../../nan/nan_object_wrap.h:24:25: error: no member named 'IsNearDeath' in 'Nan::Persistent<v8::Object>' npm ERR! assert(persistent().IsNearDeath()); npm ERR! ~~~~~~~~~~~~ ^ npm ERR! /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/assert.h:99:25: note: expanded from macro 'assert' npm ERR! (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __ASSERT_FILE_NAME, __LINE__, #e) : (void)0) npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:2722: npm ERR! ../../nan/nan_object_wrap.h:127:26: error: no member named 'IsNearDeath' in 'Nan::Persistent<v8::Object>' npm ERR! assert(wrap->handle_.IsNearDeath()); npm ERR! ~~~~~~~~~~~~~ ^ npm ERR! /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/assert.h:99:25: note: expanded from macro 'assert' npm ERR! (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __ASSERT_FILE_NAME, __LINE__, #e) : (void)0) npm ERR! ^ npm ERR! In file included from ../src/microtime.cc:9: npm ERR! In file included from ../../nan/nan.h:2818: npm ERR! ../../nan/nan_typedarray_contents.h:34:43: warning: 'GetContents' is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations] npm ERR! data = static_cast<char*>(buffer->GetContents().Data()) + byte_offset; npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:5614:3: note: 'GetContents' has been explicitly marked deprecated here npm ERR! V8_DEPRECATED("Use GetBackingStore. See http://crbug.com/v8/9908.") npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8config.h:454:35: note: expanded from macro 'V8_DEPRECATED' npm ERR! # define V8_DEPRECATED(message) [[deprecated(message)]] npm ERR! ^ npm ERR! ../src/microtime.cc:75:10: error: no matching member function for call to 'Set' npm ERR! array->Set(Nan::New<v8::Integer>(0), Nan::New<v8::Number>((double)t.tv_sec)); npm ERR! ~~~~~~~^~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3961:37: note: candidate function not viable: requires 3 arguments, but 2 were provided npm ERR! V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3964:37: note: candidate function not viable: requires 3 arguments, but 2 were provided npm ERR! V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index, npm ERR! ^ npm ERR! ../src/microtime.cc:76:10: error: no matching member function for call to 'Set' npm ERR! array->Set(Nan::New<v8::Integer>(1), Nan::New<v8::Number>((double)t.tv_usec)); npm ERR! ~~~~~~~^~~ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3961:37: note: candidate function not viable: requires 3 arguments, but 2 were provided npm ERR! V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, npm ERR! ^ npm ERR! /Users/yangjia/Library/Caches/node-gyp/16.14.0/include/node/v8.h:3964:37: note: candidate function not viable: requires 3 arguments, but 2 were provided npm ERR! V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index, npm ERR! ^ npm ERR! 1 warning and 9 errors generated. npm ERR! make: *** [Release/obj.target/microtime/src/microtime.o] Error 1 npm ERR! gyp ERR! build error npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2 npm ERR! gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23) npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:520:28) npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12) npm ERR! gyp ERR! System Darwin 22.6.0 npm ERR! gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" npm ERR! gyp ERR! cwd /Users/yangjia/workspace/company/dkYun/SDK2.0/node_modules/microtime npm ERR! gyp ERR! node -v v16.14.0 npm ERR! gyp ERR! node-gyp -v v8.4.1 npm ERR! gyp ERR! not ok npm ERR! A complete log of this run can be found in: npm ERR! /Users/yangjia/.npm/_logs/2025-06-30T06_40_09_765Z-debug-0.log
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值