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

Reply via email to