jiangphcn commented on issue #1875: Update SpiderMonkey version URL: https://github.com/apache/couchdb/issues/1875#issuecomment-554436202 For windows-related stuff, finally made progress to build spidermonkey 60 using visual studio 2017. Next thing is to build changed CouchDB codes and test them. It took me about 1 week to setup environment and build spidermonkey 60 for windows. - First, I follow the guide in https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation ``` cd js/src autoconf2.13 # This name should end with "_OPT.OBJ" to make the version control system ignore it. mkdir build_OPT.OBJ cd build_OPT.OBJ ../configure mozmake ``` But I stuck during executing configure. ``` $ ../configure Reexecuting in the virtualenv checking for vcs source checkout... no checking for a shell... C:/mozilla-build-3.2/msys/bin/sh.exe checking for host system type... i686-pc-mingw32 checking for target system type... i686-pc-mingw32 checking for a shell... C:/mozilla-build-3.2/msys/bin/sh.exe checking for host system type... i686-pc-mingw32 checking for target system type... i686-pc-mingw32 checking for android platform directory... no checking for android sysroot directory... no checking for android system directory... no checking for the Android toolchain directory... not found checking for android platform directory... no checking for android system directory... no checking for android sysroot directory... no checking for the Android toolchain directory... not found checking for vcs source checkout... no checking whether cross compiling... no traceback (most recent call last): File "../../../configure.py", line 130, in <module> sys.exit(main(sys.argv)) File "../../../configure.py", line 29, in main sandbox.run(os.path.join(os.path.dirname(__file__), 'moz.configure')) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 409, in run self._value_for(option) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 477, in _value_for return self._value_for_option(obj) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 494, in _value_for_option not self._value_for(implied_option.when)): File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 474, in _value_for return self._value_for_depends(obj, need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 483, in _value_for_depends return obj.result(need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 199, in result return self._func(resolved_args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 198, in <genexpr> for d in self.dependencies) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 474, in _value_for return self._value_for_depends(obj, need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 483, in _value_for_depends return obj.result(need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 122, in result for d in self.dependencies] File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 474, in _value_for return self._value_for_depends(obj, need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 483, in _value_for_depends return obj.result(need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 122, in result for d in self.dependencies] File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 474, in _value_for return self._value_for_depends(obj, need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 483, in _value_for_depends return obj.result(need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 122, in result for d in self.dependencies] File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 474, in _value_for return self._value_for_depends(obj, need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 483, in _value_for_depends return obj.result(need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 122, in result for d in self.dependencies] File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 474, in _value_for return self._value_for_depends(obj, need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 483, in _value_for_depends return obj.result(need_help_dependency) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\util.py", line 944, in method_call cache[args] = self.func(instance, *args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 123, in result return self._func(*resolved_args) File "c:\mozjs\mozjs-60.1.1pre3\python\mozbuild\mozbuild\configure\__init__.py", line 1003, in wrapped return new_func(*args, **kwargs) File "c:/mozjs/mozjs-60.1.1pre3/build/moz.configure/toolchain.configure", line 638, in vc_compiler_path all_versions = sorted(get_vc_paths(env.topsrcdir), key=itemgetter(0)) File "c:/mozjs/mozjs-60.1.1pre3/build/moz.configure/toolchain.configure", line 585, in get_vc_paths for install in vswhere(['-legacy', '-version', '[14.0,15.0)']): File "c:/mozjs/mozjs-60.1.1pre3/build/moz.configure/toolchain.configure", line 581, in vswhere ] + args).decode(encoding, 'replace')) File "c:\mozilla-build-3.2\python\Lib\subprocess.py", line 216, in check_output process = Popen(stdout=PIPE, *popenargs, **kwargs) File "c:\mozilla-build-3.2\python\Lib\subprocess.py", line 394, in __init__ errread, errwrite) File "c:\mozilla-build-3.2\python\Lib\subprocess.py", line 644, in _execute_child startupinfo) WindowsError: [Error 5] Access is denied ``` Knowing that it is related to file access, but error message doesn't tell details about problem location. Took days to investigate build system of spidermonkey and use half-interval search and finally identify that it is related to `vswhere.exe` in spidermonkey source code package. And it failed to execute. ``` Administrator@ph-win10 /c/mozjs/mozjs-60.1.1pre3/build/win32 $ vswhere.exe bash: ./vswhere.exe: Bad file number ``` After using vswhere.exe provided from visual studio 2017, the configure can continue. And then `mozmake` can build spidermonkey source. For now, the jsapi-tests.exe passed without error. ``` $ ./js/src/build_OPT.OBJ/dist/bin/jsapi-tests.exe testXDR_sourceMap TEST-PASS | testXDR_sourceMap | ok testXDR_source TEST-PASS | testXDR_source | ok ... testAssemblerBuffer_BufferOffset TEST-PASS | testAssemblerBuffer_BufferOffset | ok Passed: ran 281 tests. ``` cc @denib @janl @davisp @kocolosk
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
