unoplatform / Uno.Wasm.Bootstrap

A simple nuget package to run C# code in a WASM-compatible browser
Other
364 stars 57 forks source link

Update Emsdk atleast to 3.1.56 - fixes SSL errors #841

Open AuderixDev opened 4 months ago

AuderixDev commented 4 months ago

What would you like to be added

An update of the Emsdk would be really nice. Lately they fixed an SSL Error: https://github.com/emscripten-core/emsdk/issues/1357 They now prefer curl over urllib : https://github.com/emscripten-core/emsdk/pull/1355

Why is this needed

The old version causes an SSL Error (on Windows-Docker, while building the WASM)

[00:00:01.9050749] ports:INFO: retrieving port: zlib from https://github.com/madler/zlib/archive/refs/tags/v1.2.13.tar.gz
  [00:00:01.9051073] Traceback (most recent call last):
  [00:00:01.9051413]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\tools\ports\__init__.py", line 255, in retrieve
  [00:00:01.9051759]     import requests
  [00:00:01.9052078] ModuleNotFoundError: No module named 'requests'
  [00:00:01.9052396] 
  [00:00:01.9052709] During handling of the above exception, another exception occurred:
  [00:00:01.9053029] 
  [00:00:01.9053337] Traceback (most recent call last):
  [00:00:01.9053950]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\urllib\request.py", line 1346, in do_open
  [00:00:01.9054345]     h.request(req.get_method(), req.selector, req.data, headers,
  [00:00:01.9054727]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\http\client.py", line 1255, in request
  [00:00:01.9055085]     self._send_request(method, url, body, headers, encode_chunked)
  [00:00:01.9055408]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\http\client.py", line 1301, in _send_request
  [00:00:01.9055841]     self.endheaders(body, encode_chunked=encode_chunked)
  [00:00:01.9056177]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\http\client.py", line 1250, in endheaders
  [00:00:01.9056506]     self._send_output(message_body, encode_chunked=encode_chunked)
  [00:00:01.9056820]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\http\client.py", line 1010, in _send_output
  [00:00:01.9057195]     self.send(msg)
  [00:00:01.9057825]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\http\client.py", line 950, in send
  [00:00:01.9058219]     self.connect()
  [00:00:01.9058537]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\http\client.py", line 1424, in connect
  [00:00:01.9058863]     self.sock = self._context.wrap_socket(self.sock,
  [00:00:01.9059254]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\ssl.py", line 500, in wrap_socket
  [00:00:01.9059604]     return self.sslsocket_class._create(
  [00:00:01.9059920]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\ssl.py", line 1040, in _create
  [00:00:01.9060243]     self.do_handshake()
  [00:00:01.9060555]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\ssl.py", line 1309, in do_handshake
  [00:00:01.9060884]     self._sslobj.do_handshake()
  [00:00:01.9061199] ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)
  [00:00:01.9061525] 
  [00:00:01.9061836] During handling of the above exception, another exception occurred:
  [00:00:01.9062170] 
  [00:00:01.9062487] Traceback (most recent call last):
  [00:00:01.9063069]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\emcc.py", line 4420, in <module>
  [00:00:01.9063448]     sys.exit(main(sys.argv))
  [00:00:01.9063765]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\contextlib.py", line 79, in inner
  [00:00:01.9064104]     return func(*args, **kwds)
  [00:00:01.9064422]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\emcc.py", line 4413, in main
  [00:00:01.9064744]     ret = run(args)
  [00:00:01.9065055]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\emcc.py", line 1302, in run
  [00:00:01.9065381]     linker_inputs = phase_compile_inputs(options, state, newargs, input_files)
  [00:00:01.9065729]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\contextlib.py", line 79, in inner
  [00:00:01.9066084]     return func(*args, **kwds)
  [00:00:01.9066401]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\emcc.py", line 3056, in phase_compile_inputs
  [00:00:01.9066746]     compile_source_file(i, input_file)
  [00:00:01.9067414]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\emcc.py", line 3034, in compile_source_file
  [00:00:01.9067843]     cmd = get_clang_command(input_file)
  [00:00:01.9068174]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\emcc.py", line 2968, in get_clang_command
  [00:00:01.9068506]     return get_compiler(src_file) + get_cflags(state.orig_args, use_cxx(src_file)) + compile_args + [src_file]
  [00:00:01.9068857]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\emcc.py", line 1039, in get_cflags
  [00:00:01.9069194]     ports.add_cflags(cflags, settings)
  [00:00:01.9069510]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\tools\ports\__init__.py", line 415, in add_cflags
  [00:00:01.9069850]     port.get(Ports, settings, shared)
  [00:00:01.9070175]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\tools\ports\zlib.py", line 17, in get
  [00:00:01.9070509]     ports.fetch_project('zlib', f'https://github.com/madler/zlib/archive/refs/tags/v{VERSION}.tar.gz', sha512hash=HASH)
  [00:00:01.9071201]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\tools\ports\__init__.py", line 301, in fetch_project
  [00:00:01.9071628]     retrieve()
  [00:00:01.9071964]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\upstream\emscripten\tools\ports\__init__.py", line 260, in retrieve
  [00:00:01.9072293]     f = urlopen(url)
  [00:00:01.9072607]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\urllib\request.py", line 214, in urlopen
  [00:00:01.9072946]     return opener.open(url, data, timeout)
  [00:00:01.9073267]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\urllib\request.py", line 517, in open
  [00:00:01.9073612]     response = self._open(req, data)
  [00:00:01.9097699]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\urllib\request.py", line 534, in _open
  [00:00:01.9098471]     result = self._call_chain(self.handle_open, protocol, protocol +
  [00:00:01.9099115]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\urllib\request.py", line 494, in _call_chain
  [00:00:01.9099778]     result = func(*args)
  [00:00:01.9100973]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\urllib\request.py", line 1389, in https_open
  [00:00:01.9101724]     return self.do_open(http.client.HTTPSConnection, req,
  [00:00:01.9102345]   File "C:\Users\ContainerAdministrator\.uno\emsdk\emsdk-3.1.34\emsdk\python\3.9.2-nuget_64bit\lib\urllib\request.py", line 1349, in do_open
  [00:00:01.9102982]     raise URLError(err)
  [00:00:01.9103542] urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)>

For which platform

WebAssembly

Anything else we need to know?

No response

jeromelaban commented 4 months ago

Thanks for the report. This is going to be a tricky issue. We cannot reliable upgrade to a later version of emscripten without incurring possible binary breaking changes to generated webassembly binaries, and it needs to be aligned with all the other libraries that have been built around the current version (skiasharp is a good example).