Page MenuHomePhabricator

MobileFrontend does not build on release branches
Closed, ResolvedPublic

Description

When trying to add this simple change https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/739753

The following three failures has occurred

They all fail as the MobileFrontend tests should start

Selenium extensions/MobileFrontend

Hide Details
12:15:48 INFO:quibble.commands:Running webdriver test in /workspace/src/extensions/MobileFrontend
12:15:50 npm WARN old lockfile 
12:15:50 npm WARN old lockfile The package-lock.json file was created with an old version of npm,
12:15:50 npm WARN old lockfile so supplemental metadata must be fetched from the registry.
12:15:50 npm WARN old lockfile 
12:15:50 npm WARN old lockfile This is a one-time fix-up, please be patient...
12:15:50 npm WARN old lockfile 
12:16:05 npm WARN EBADENGINE Unsupported engine {
12:16:05 npm WARN EBADENGINE   package: undefined,
12:16:05 npm WARN EBADENGINE   required: { node: '10.15.2' },
12:16:05 npm WARN EBADENGINE   current: { node: 'v14.17.5', npm: '7.21.0' }
12:16:05 npm WARN EBADENGINE }
12:16:16 npm WARN deprecated request-promise-native@1.0.8: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
12:16:16 npm WARN deprecated @stylelint/postcss-markdown@0.36.2: Use the original unforked package instead: postcss-markdown
12:16:16 npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
12:16:16 npm WARN deprecated har-validator@5.1.3: this library is no longer supported
12:16:17 npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
12:16:18 npm WARN deprecated sane@4.1.0: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
12:16:18 npm WARN deprecated debug@3.2.6: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
12:16:18 npm WARN deprecated debug@4.1.1: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
12:16:18 npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
12:16:18 npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
12:16:18 npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
12:16:18 npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
12:16:19 npm WARN deprecated uuid@3.3.3: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
12:16:19 npm WARN deprecated samsam@1.3.0: This package has been deprecated in favour of @sinonjs/samsam
12:16:20 npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
12:16:20 npm WARN deprecated request@2.88.0: request has been deprecated, see https://github.com/request/request/issues/3142
12:16:29 npm WARN deprecated svgo@1.3.2: This SVGO version is no longer supported. Upgrade to v2.x.x.
12:16:38 npm WARN deprecated popper.js@1.16.0: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
12:16:39 npm WARN deprecated cucumber@4.2.1: The npm package has moved to @cucumber/cucumber
12:16:40 npm WARN deprecated iltorb@2.4.5: The zlib module provides APIs for brotli compression/decompression starting with Node.js v10.16.0, please use it over iltorb
12:16:41 npm WARN deprecated highlight.js@9.12.0: Version no longer supported. Upgrade to @latest
12:16:47 npm WARN deprecated webdriverio@4.13.1: outdated version, please use @next
12:16:51 npm WARN deprecated core-js@1.2.7: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
12:16:59 npm WARN deprecated core-js@2.6.11: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
12:17:13 npm ERR! code 1
12:17:13 npm ERR! path /workspace/src/extensions/MobileFrontend/node_modules/fibers
12:17:13 npm ERR! command failed
12:17:13 npm ERR! command sh -c node build.js || nodejs build.js
12:17:13 npm ERR! make: Entering directory '/workspace/src/extensions/MobileFrontend/node_modules/fibers/build'
12:17:13 npm ERR!   CXX(target) Release/obj.target/fibers/src/fibers.o
12:17:13 npm ERR! make: Leaving directory '/workspace/src/extensions/MobileFrontend/node_modules/fibers/build'
12:17:13 npm ERR! make: Entering directory '/workspace/src/extensions/MobileFrontend/node_modules/fibers/build'
12:17:13 npm ERR!   CXX(target) Release/obj.target/fibers/src/fibers.o
12:17:13 npm ERR! make: Leaving directory '/workspace/src/extensions/MobileFrontend/node_modules/fibers/build'
12:17:13 npm ERR! gyp info it worked if it ends with ok
12:17:13 npm ERR! gyp info using node-gyp@7.1.2
12:17:13 npm ERR! gyp info using node@14.17.5 | linux | x64
12:17:13 npm ERR! gyp info find Python using Python version 3.7.3 found at "/usr/bin/python3"
12:17:13 npm ERR! gyp info spawn /usr/bin/python3
12:17:13 npm ERR! gyp info spawn args [
12:17:13 npm ERR! gyp info spawn args   '/srv/npm/node_modules/node-gyp/gyp/gyp_main.py',
12:17:13 npm ERR! gyp info spawn args   'binding.gyp',
12:17:13 npm ERR! gyp info spawn args   '-f',
12:17:13 npm ERR! gyp info spawn args   'make',
12:17:13 npm ERR! gyp info spawn args   '-I',
12:17:13 npm ERR! gyp info spawn args   '/workspace/src/extensions/MobileFrontend/node_modules/fibers/build/config.gypi',
12:17:13 npm ERR! gyp info spawn args   '-I',
12:17:13 npm ERR! gyp info spawn args   '/srv/npm/node_modules/node-gyp/addon.gypi',
12:17:13 npm ERR! gyp info spawn args   '-I',
12:17:13 npm ERR! gyp info spawn args   '/cache/node-gyp/14.17.5/include/node/common.gypi',
12:17:13 npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
12:17:13 npm ERR! gyp info spawn args   '-Dvisibility=default',
12:17:13 npm ERR! gyp info spawn args   '-Dnode_root_dir=/cache/node-gyp/14.17.5',
12:17:13 npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/srv/npm/node_modules/node-gyp',
12:17:13 npm ERR! gyp info spawn args   '-Dnode_lib_file=/cache/node-gyp/14.17.5/<(target_arch)/node.lib',
12:17:13 npm ERR! gyp info spawn args   '-Dmodule_root_dir=/workspace/src/extensions/MobileFrontend/node_modules/fibers',
12:17:13 npm ERR! gyp info spawn args   '-Dnode_engine=v8',
12:17:13 npm ERR! gyp info spawn args   '--depth=.',
12:17:13 npm ERR! gyp info spawn args   '--no-parallel',
12:17:13 npm ERR! gyp info spawn args   '--generator-output',
12:17:13 npm ERR! gyp info spawn args   'build',
12:17:13 npm ERR! gyp info spawn args   '-Goutput_dir=.'
12:17:13 npm ERR! gyp info spawn args ]
12:17:13 npm ERR! gyp info spawn make
12:17:13 npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
12:17:13 npm ERR! ../src/fibers.cc:68:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<String> NewLatin1String(Isolate* isolate, const char* string) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:72:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<String> NewLatin1Symbol(Isolate* isolate, const char* string) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:94:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<Object> NewInstance(Isolate* isolate, Local<Function> fn, int argc, Local<Value> argv[]) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:104:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<Number> ToNumber(Local<Value> value) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:114:50: error: ‘Handle’ has not been declared
12:17:13 npm ERR!   Local<Value> GetStackTrace(TryCatch* try_catch, Handle<Context> context) {
12:17:13 npm ERR!                                                   ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:114:56: error: expected ‘,’ or ‘...’ before ‘<’ token
12:17:13 npm ERR!   Local<Value> GetStackTrace(TryCatch* try_catch, Handle<Context> context) {
12:17:13 npm ERR!                                                         ^
12:17:13 npm ERR! ../src/fibers.cc: In function ‘v8::Local<v8::Value> uni::GetStackTrace(uni::TryCatch*, int)’:
12:17:13 npm ERR! ../src/fibers.cc:115:32: error: ‘context’ was not declared in this scope
12:17:13 npm ERR!    return try_catch->StackTrace(context).ToLocalChecked();
12:17:13 npm ERR!                                 ^~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:115:32: note: suggested alternative: ‘setcontext’
12:17:13 npm ERR!    return try_catch->StackTrace(context).ToLocalChecked();
12:17:13 npm ERR!                                 ^~~~~~~
12:17:13 npm ERR!                                 setcontext
12:17:13 npm ERR! ../src/fibers.cc: At global scope:
12:17:13 npm ERR! ../src/fibers.cc:127:39: error: ‘Handle’ has not been declared
12:17:13 npm ERR!   void fixStackLimit(Isolate* isolate, Handle<Context> context) {
12:17:13 npm ERR!                                        ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:127:45: error: expected ‘,’ or ‘...’ before ‘<’ token
12:17:13 npm ERR!   void fixStackLimit(Isolate* isolate, Handle<Context> context) {
12:17:13 npm ERR!                                              ^
12:17:13 npm ERR! ../src/fibers.cc: In function ‘void uni::fixStackLimit(v8::Isolate*, int)’:
12:17:13 npm ERR! ../src/fibers.cc:128:19: error: ‘context’ was not declared in this scope
12:17:13 npm ERR!    Script::Compile(context, uni::NewLatin1String(isolate, "void 0;")).ToLocalChecked();
12:17:13 npm ERR!                    ^~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:128:19: note: suggested alternative: ‘setcontext’
12:17:13 npm ERR!    Script::Compile(context, uni::NewLatin1String(isolate, "void 0;")).ToLocalChecked();
12:17:13 npm ERR!                    ^~~~~~~
12:17:13 npm ERR!                    setcontext
12:17:13 npm ERR! ../src/fibers.cc:128:33: error: ‘NewLatin1String’ is not a member of ‘uni’
12:17:13 npm ERR!    Script::Compile(context, uni::NewLatin1String(isolate, "void 0;")).ToLocalChecked();
12:17:13 npm ERR!                                  ^~~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc: At global scope:
12:17:13 npm ERR! ../src/fibers.cc:149:58: error: ‘Handle’ has not been declared
12:17:13 npm ERR!   void Reset(Isolate* isolate, Persistent<T>& persistent, Handle<T> handle) {
12:17:13 npm ERR!                                                           ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:149:64: error: expected ‘,’ or ‘...’ before ‘<’ token
12:17:13 npm ERR!   void Reset(Isolate* isolate, Persistent<T>& persistent, Handle<T> handle) {
12:17:13 npm ERR!                                                                 ^
12:17:13 npm ERR! ../src/fibers.cc: In function ‘void uni::Reset(v8::Isolate*, v8::Persistent<T, v8::NonCopyablePersistentTraits<T> >&, int)’:
12:17:13 npm ERR! ../src/fibers.cc:150:29: error: ‘handle’ was not declared in this scope
12:17:13 npm ERR!    persistent.Reset(isolate, handle);
12:17:13 npm ERR!                              ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:150:29: note: suggested alternative: ‘rand_r’
12:17:13 npm ERR!    persistent.Reset(isolate, handle);
12:17:13 npm ERR!                              ^~~~~~
12:17:13 npm ERR!                              rand_r
12:17:13 npm ERR! ../src/fibers.cc: At global scope:
12:17:13 npm ERR! ../src/fibers.cc:162:26: error: variable or field ‘SetInternalPointer’ declared void
12:17:13 npm ERR!   void SetInternalPointer(Handle<T> handle, int index, void* val) {
12:17:13 npm ERR!                           ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:162:26: error: ‘Handle’ was not declared in this scope
12:17:13 npm ERR! ../src/fibers.cc:162:26: note: suggested alternative: ‘rand_r’
12:17:13 npm ERR!   void SetInternalPointer(Handle<T> handle, int index, void* val) {
12:17:13 npm ERR!                           ^~~~~~
12:17:13 npm ERR!                           rand_r
12:17:13 npm ERR! ../src/fibers.cc:162:34: error: expected primary-expression before ‘>’ token
12:17:13 npm ERR!   void SetInternalPointer(Handle<T> handle, int index, void* val) {
12:17:13 npm ERR!                                   ^
12:17:13 npm ERR! ../src/fibers.cc:162:36: error: ‘handle’ was not declared in this scope
12:17:13 npm ERR!   void SetInternalPointer(Handle<T> handle, int index, void* val) {
12:17:13 npm ERR!                                     ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:162:36: note: suggested alternative: ‘rand_r’
12:17:13 npm ERR!   void SetInternalPointer(Handle<T> handle, int index, void* val) {
12:17:13 npm ERR!                                     ^~~~~~
12:17:13 npm ERR!                                     rand_r
12:17:13 npm ERR! ../src/fibers.cc:162:44: error: expected primary-expression before ‘int’
12:17:13 npm ERR!   void SetInternalPointer(Handle<T> handle, int index, void* val) {
12:17:13 npm ERR!                                             ^~~
12:17:13 npm ERR! ../src/fibers.cc:162:55: error: expected primary-expression before ‘void’
12:17:13 npm ERR!   void SetInternalPointer(Handle<T> handle, int index, void* val) {
12:17:13 npm ERR!                                                        ^~~~
12:17:13 npm ERR! ../src/fibers.cc:166:27: error: ‘Handle’ was not declared in this scope
12:17:13 npm ERR!   void* GetInternalPointer(Handle<T> handle, int index) {
12:17:13 npm ERR!                            ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:166:27: note: suggested alternative: ‘rand_r’
12:17:13 npm ERR!   void* GetInternalPointer(Handle<T> handle, int index) {
12:17:13 npm ERR!                            ^~~~~~
12:17:13 npm ERR!                            rand_r
12:17:13 npm ERR! ../src/fibers.cc:166:35: error: expected primary-expression before ‘>’ token
12:17:13 npm ERR!   void* GetInternalPointer(Handle<T> handle, int index) {
12:17:13 npm ERR!                                    ^
12:17:13 npm ERR! ../src/fibers.cc:166:37: error: ‘handle’ was not declared in this scope
12:17:13 npm ERR!   void* GetInternalPointer(Handle<T> handle, int index) {
12:17:13 npm ERR!                                      ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:166:37: note: suggested alternative: ‘rand_r’
12:17:13 npm ERR!   void* GetInternalPointer(Handle<T> handle, int index) {
12:17:13 npm ERR!                                      ^~~~~~
12:17:13 npm ERR!                                      rand_r
12:17:13 npm ERR! ../src/fibers.cc:166:45: error: expected primary-expression before ‘int’
12:17:13 npm ERR!   void* GetInternalPointer(Handle<T> handle, int index) {
12:17:13 npm ERR!                                              ^~~
12:17:13 npm ERR! ../src/fibers.cc:166:54: error: expression list treated as compound expression in initializer [-fpermissive]
12:17:13 npm ERR!   void* GetInternalPointer(Handle<T> handle, int index) {
12:17:13 npm ERR!                                                       ^
12:17:13 npm ERR! ../src/fibers.cc:166:55: error: expected ‘;’ before ‘{’ token
12:17:13 npm ERR!   void* GetInternalPointer(Handle<T> handle, int index) {
12:17:13 npm ERR!                                                        ^~
12:17:13 npm ERR!                                                        ;
12:17:13 npm ERR! ../src/fibers.cc:171:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<T> Deref(Isolate* isolate, Persistent<T>& handle) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:176:14: error: variable or field ‘Return’ declared void
12:17:13 npm ERR!   void Return(Handle<T> handle, const Arguments& args) {
12:17:13 npm ERR!               ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:176:14: error: ‘Handle’ was not declared in this scope
12:17:13 npm ERR! ../src/fibers.cc:176:14: note: suggested alternative: ‘rand_r’
12:17:13 npm ERR!   void Return(Handle<T> handle, const Arguments& args) {
12:17:13 npm ERR!               ^~~~~~
12:17:13 npm ERR!               rand_r
12:17:13 npm ERR! ../src/fibers.cc:176:22: error: expected primary-expression before ‘>’ token
12:17:13 npm ERR!   void Return(Handle<T> handle, const Arguments& args) {
12:17:13 npm ERR!                       ^
12:17:13 npm ERR! ../src/fibers.cc:176:24: error: ‘handle’ was not declared in this scope
12:17:13 npm ERR!   void Return(Handle<T> handle, const Arguments& args) {
12:17:13 npm ERR!                         ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:176:24: note: suggested alternative: ‘rand_r’
12:17:13 npm ERR!   void Return(Handle<T> handle, const Arguments& args) {
12:17:13 npm ERR!                         ^~~~~~
12:17:13 npm ERR!                         rand_r
12:17:13 npm ERR! ../src/fibers.cc:176:32: error: expected primary-expression before ‘const’
12:17:13 npm ERR!   void Return(Handle<T> handle, const Arguments& args) {
12:17:13 npm ERR!                                 ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:180:14: error: variable or field ‘Return’ declared void
12:17:13 npm ERR!   void Return(Handle<T> handle, GetterCallbackInfo info) {
12:17:13 npm ERR!               ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:180:14: error: ‘Handle’ was not declared in this scope
12:17:13 npm ERR! ../src/fibers.cc:180:14: note: suggested alternative: ‘rand_r’
12:17:13 npm ERR!   void Return(Handle<T> handle, GetterCallbackInfo info) {
12:17:13 npm ERR!               ^~~~~~
12:17:13 npm ERR!               rand_r
12:17:13 npm ERR! ../src/fibers.cc:180:22: error: expected primary-expression before ‘>’ token
12:17:13 npm ERR!   void Return(Handle<T> handle, GetterCallbackInfo info) {
12:17:13 npm ERR!                       ^
12:17:13 npm ERR! ../src/fibers.cc:180:24: error: ‘handle’ was not declared in this scope
12:17:13 npm ERR!   void Return(Handle<T> handle, GetterCallbackInfo info) {
12:17:13 npm ERR!                         ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:180:24: note: suggested alternative: ‘rand_r’
12:17:13 npm ERR!   void Return(Handle<T> handle, GetterCallbackInfo info) {
12:17:13 npm ERR!                         ^~~~~~
12:17:13 npm ERR!                         rand_r
12:17:13 npm ERR! ../src/fibers.cc:180:51: error: expected primary-expression before ‘info’
12:17:13 npm ERR!   void Return(Handle<T> handle, GetterCallbackInfo info) {
12:17:13 npm ERR!                                                    ^~~~
12:17:13 npm ERR! ../src/fibers.cc:188:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<Value> ThrowException(Isolate* isolate, Handle<Value> exception) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:192:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<Context> GetCurrentContext(Isolate* isolate) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:196:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<Primitive> Undefined(Isolate* isolate) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:200:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<Boolean> NewBoolean(Isolate* isolate, bool value) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:204:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<Number> NewNumber(Isolate* isolate, double value) {
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:208:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<FunctionTemplate> NewFunctionTemplate(
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc:218:2: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!   Handle<Signature> NewSignature(
12:17:13 npm ERR!   ^~~~~~
12:17:13 npm ERR!   rand_r
12:17:13 npm ERR! ../src/fibers.cc: In function ‘void uni::SetAccessor(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::String>, uni::FunctionType (*)(v8::Local<v8::String>, const GetterCallbackInfo&), void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, const SetterCallbackInfo&))’:
12:17:13 npm ERR! ../src/fibers.cc:341:87: warning: cast between incompatible function types from ‘uni::FunctionType (*)(v8::Local<v8::String>, const GetterCallbackInfo&)’ {aka ‘void (*)(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>&)’} to ‘v8::AccessorNameGetterCallback’ {aka ‘void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>&)’} [-Wcast-function-type]
12:17:13 npm ERR!    object->SetAccessor(isolate->GetCurrentContext(), name, (AccessorNameGetterCallback)getter, (AccessorNameSetterCallback)setter).ToChecked();
12:17:13 npm ERR!                                                                                        ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:341:123: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, const SetterCallbackInfo&)’ {aka ‘void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&)’} to ‘v8::AccessorNameSetterCallback’ {aka ‘void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&)’} [-Wcast-function-type]
12:17:13 npm ERR!    object->SetAccessor(isolate->GetCurrentContext(), name, (AccessorNameGetterCallback)getter, (AccessorNameSetterCallback)setter).ToChecked();
12:17:13 npm ERR!                                                                                                                            ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc: At global scope:
12:17:13 npm ERR! ../src/fibers.cc:408:17: error: expected ‘;’ at end of member declaration
12:17:13 npm ERR!    static Fiber& Unwrap(Handle<Object> handle) {
12:17:13 npm ERR!                  ^~~~~~
12:17:13 npm ERR!                        ;
12:17:13 npm ERR! ../src/fibers.cc:408:30: error: expected ‘)’ before ‘<’ token
12:17:13 npm ERR!    static Fiber& Unwrap(Handle<Object> handle) {
12:17:13 npm ERR!                        ~      ^
12:17:13 npm ERR!                               )
12:17:13 npm ERR! ../src/fibers.cc:414:15: error: expected ‘)’ before ‘<’ token
12:17:13 npm ERR!    Fiber(Handle<Object> handle, Handle<Function> cb, Handle<Context> v8_context) :
12:17:13 npm ERR!         ~      ^
12:17:13 npm ERR!                )
12:17:13 npm ERR! ../src/fibers.cc:680:3: error: ‘Handle’ does not name a type; did you mean ‘rand_r’?
12:17:13 npm ERR!    Handle<Value> ReturnYielded() {
12:17:13 npm ERR!    ^~~~~~
12:17:13 npm ERR!    rand_r
12:17:13 npm ERR! ../src/fibers.cc:842:20: error: ‘Handle’ has not been declared
12:17:13 npm ERR!    static void Init(Handle<Object> target) {
12:17:13 npm ERR!                     ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:842:26: error: expected ‘,’ or ‘...’ before ‘<’ token
12:17:13 npm ERR!    static void Init(Handle<Object> target) {
12:17:13 npm ERR!                           ^
12:17:13 npm ERR! In file included from ../src/fibers.cc:3:
12:17:13 npm ERR! ../src/fibers.cc: In static member function ‘static void Fiber::WeakCallback(void*)’:
12:17:13 npm ERR! ../src/fibers.cc:458:23: error: ‘class v8::Persistent<v8::Object>’ has no member named ‘IsNearDeath’
12:17:13 npm ERR!     assert(that.handle.IsNearDeath());
12:17:13 npm ERR!                        ^~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc: In static member function ‘static void Fiber::DestroyOrphans()’:
12:17:13 npm ERR! ../src/fibers.cc:495:22: error: ‘Deref’ is not a member of ‘uni’
12:17:13 npm ERR!       auto stack(uni::Deref(that.isolate, fatal_stack));
12:17:13 npm ERR!                       ^~~~~
12:17:13 npm ERR! ../src/fibers.cc: In static member function ‘static uni::FunctionType Fiber::New(const Arguments&)’:
12:17:13 npm ERR! ../src/fibers.cc:10:45: error: ‘ThrowException’ is not a member of ‘uni’
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                              ^~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:517:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::TypeError, "Fiber expects 1 argument");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:90: error: ‘NewLatin1String’ is not a member of ‘uni’
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                                                                           ^~~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:517:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::TypeError, "Fiber expects 1 argument");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:139: error: return-statement with a value, in function returning ‘uni::FunctionType’ {aka ‘void’} [-fpermissive]
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                                                                                                                            ^
12:17:13 npm ERR! ../src/fibers.cc:517:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::TypeError, "Fiber expects 1 argument");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:45: error: ‘ThrowException’ is not a member of ‘uni’
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                              ^~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:519:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::TypeError, "Fiber expects a function");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:90: error: ‘NewLatin1String’ is not a member of ‘uni’
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                                                                           ^~~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:519:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::TypeError, "Fiber expects a function");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:139: error: return-statement with a value, in function returning ‘uni::FunctionType’ {aka ‘void’} [-fpermissive]
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                                                                                                                            ^
12:17:13 npm ERR! ../src/fibers.cc:519:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::TypeError, "Fiber expects a function");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:521:5: error: ‘Handle’ was not declared in this scope
12:17:13 npm ERR!      Handle<Value> argv[1] = { args[0] };
12:17:13 npm ERR!      ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:521:5: note: suggested alternative: ‘handle’
12:17:13 npm ERR!      Handle<Value> argv[1] = { args[0] };
12:17:13 npm ERR!      ^~~~~~
12:17:13 npm ERR!      handle
12:17:13 npm ERR! ../src/fibers.cc:521:17: error: expected primary-expression before ‘>’ token
12:17:13 npm ERR!      Handle<Value> argv[1] = { args[0] };
12:17:13 npm ERR!                  ^
12:17:13 npm ERR! ../src/fibers.cc:521:19: error: ‘argv’ was not declared in this scope
12:17:13 npm ERR!      Handle<Value> argv[1] = { args[0] };
12:17:13 npm ERR!                    ^~~~
12:17:13 npm ERR! ../src/fibers.cc:521:19: note: suggested alternative: ‘args’
12:17:13 npm ERR!      Handle<Value> argv[1] = { args[0] };
12:17:13 npm ERR!                    ^~~~
12:17:13 npm ERR!                    args
12:17:13 npm ERR! ../src/fibers.cc:522:29: error: ‘NewInstance’ is not a member of ‘uni’
12:17:13 npm ERR!      return uni::Return(uni::NewInstance(Isolate::GetCurrent(), uni::Deref(Isolate::GetCurrent(), tmpl)->GetFunction(), 1, argv), args);
12:17:13 npm ERR!                              ^~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:522:69: error: ‘Deref’ is not a member of ‘uni’
12:17:13 npm ERR!      return uni::Return(uni::NewInstance(Isolate::GetCurrent(), uni::Deref(Isolate::GetCurrent(), tmpl)->GetFunction(), 1, argv), args);
12:17:13 npm ERR!                                                                      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:522:134: error: return-statement with a value, in function returning ‘uni::FunctionType’ {aka ‘void’} [-fpermissive]
12:17:13 npm ERR!      return uni::Return(uni::NewInstance(Isolate::GetCurrent(), uni::Deref(Isolate::GetCurrent(), tmpl)->GetFunction(), 1, argv), args);
12:17:13 npm ERR!                                                                                                                                       ^
12:17:13 npm ERR! ../src/fibers.cc:525:4: error: ‘Handle’ was not declared in this scope
12:17:13 npm ERR!     Handle<Function> fn = Handle<Function>::Cast(args[0]);
12:17:13 npm ERR!     ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:525:4: note: suggested alternative: ‘handle’
12:17:13 npm ERR!     Handle<Function> fn = Handle<Function>::Cast(args[0]);
12:17:13 npm ERR!     ^~~~~~
12:17:13 npm ERR!     handle
12:17:13 npm ERR! ../src/fibers.cc:525:19: error: expected primary-expression before ‘>’ token
12:17:13 npm ERR!     Handle<Function> fn = Handle<Function>::Cast(args[0]);
12:17:13 npm ERR!                    ^
12:17:13 npm ERR! ../src/fibers.cc:525:21: error: ‘fn’ was not declared in this scope
12:17:13 npm ERR!     Handle<Function> fn = Handle<Function>::Cast(args[0]);
12:17:13 npm ERR!                      ^~
12:17:13 npm ERR! ../src/fibers.cc:525:41: error: expected primary-expression before ‘>’ token
12:17:13 npm ERR!     Handle<Function> fn = Handle<Function>::Cast(args[0]);
12:17:13 npm ERR!                                          ^
12:17:13 npm ERR! ../src/fibers.cc:525:44: error: ‘::Cast’ has not been declared
12:17:13 npm ERR!     Handle<Function> fn = Handle<Function>::Cast(args[0]);
12:17:13 npm ERR!                                             ^~~~
12:17:13 npm ERR! ../src/fibers.cc:526:36: error: ‘GetCurrentContext’ is not a member of ‘uni’
12:17:13 npm ERR!     new Fiber(args.This(), fn, uni::GetCurrentContext(Isolate::GetCurrent()));
12:17:13 npm ERR!                                     ^~~~~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:527:40: error: no matching function for call to ‘Return(v8::Local<v8::Object>, const Arguments&)’
12:17:13 npm ERR!     return uni::Return(args.This(), args);
12:17:13 npm ERR!                                         ^
12:17:13 npm ERR! ../src/fibers.cc:184:7: note: candidate: ‘template<class T> void uni::Return(v8::Persistent<T, v8::NonCopyablePersistentTraits<T> >&, uni::GetterCallbackInfo)’
12:17:13 npm ERR!   void Return(Persistent<T>& handle, GetterCallbackInfo info) {
12:17:13 npm ERR!        ^~~~~~
12:17:13 npm ERR! ../src/fibers.cc:184:7: note:   template argument deduction/substitution failed:
12:17:13 npm ERR! ../src/fibers.cc:527:40: note:   ‘v8::Local<v8::Object>’ is not derived from ‘v8::Persistent<T, v8::NonCopyablePersistentTraits<T> >’
12:17:13 npm ERR!     return uni::Return(args.This(), args);
12:17:13 npm ERR!                                         ^
12:17:13 npm ERR! ../src/fibers.cc:527:40: error: return-statement with a value, in function returning ‘uni::FunctionType’ {aka ‘void’} [-fpermissive]
12:17:13 npm ERR! ../src/fibers.cc: In static member function ‘static uni::FunctionType Fiber::Run(const Arguments&)’:
12:17:13 npm ERR! ../src/fibers.cc:535:38: error: no match for call to ‘(Fiber) (v8::Local<v8::Object>)’
12:17:13 npm ERR!     Fiber& that = Unwrap(args.Holder());
12:17:13 npm ERR!                                       ^
12:17:13 npm ERR! ../src/fibers.cc:10:45: error: ‘ThrowException’ is not a member of ‘uni’
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                              ^~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:541:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::Error, "This Fiber is already running");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:90: error: ‘NewLatin1String’ is not a member of ‘uni’
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                                                                           ^~~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:541:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::Error, "This Fiber is already running");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:139: error: return-statement with a value, in function returning ‘uni::FunctionType’ {aka ‘void’} [-fpermissive]
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                                                                                                                            ^
12:17:13 npm ERR! ../src/fibers.cc:541:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::Error, "This Fiber is already running");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:45: error: ‘ThrowException’ is not a member of ‘uni’
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                              ^~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:543:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::TypeError, "run() excepts 1 or no arguments");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:90: error: ‘NewLatin1String’ is not a member of ‘uni’
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                                                                           ^~~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:543:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::TypeError, "run() excepts 1 or no arguments");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:139: error: return-statement with a value, in function returning ‘uni::FunctionType’ {aka ‘void’} [-fpermissive]
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                                                                                                                            ^
12:17:13 npm ERR! ../src/fibers.cc:543:5: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!      THROW(Exception::TypeError, "run() excepts 1 or no arguments");
12:17:13 npm ERR!      ^~~~~
12:17:13 npm ERR! ../src/fibers.cc:10:45: error: ‘ThrowException’ is not a member of ‘uni’
12:17:13 npm ERR!  #define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
12:17:13 npm ERR!                                              ^~~~~~~~~~~~~~
12:17:13 npm ERR! ../src/fibers.cc:554:6: note: in expansion of macro ‘THROW’
12:17:13 npm ERR!       THROW(Exception::RangeError, "Out of memory");

Another trial of MobileFrontend on REL1_35

Shows a similar story

https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MobileFrontend/+/740130

Event Timeline

Addshore triaged this task as High priority.

@Reedy @hashar @Jdforrester-WMF is there a way forward to make this green?
Is there a way to nicely use the old image versions for this CI still?

I think we don't want to continue using old images, or that will be supported.

I think the solution is to "just" upgrade fibers... Which probably also includes backporting (or making a similar patch to) rEMFR4882c7a12f41: Bump Node.js version

Change 740616 had a related patch set uploaded (by Reedy; author: Jdlrobson):

[mediawiki/extensions/MobileFrontend@REL1_35] Bump Node.js version

https://gerrit.wikimedia.org/r/740616

I think the solution is to "just" upgrade fibers... Which probably also includes backporting (or making a similar patch to) rEMFR4882c7a12f41: Bump Node.js version

And the various wdio stuff too for Browser-Tests stuffs

I'm guessing this is also a problem on REL1_36 and REL1_37 too...?

I'm guessing this is also a problem on REL1_36 and REL1_37 too...?

I haven't tried that out yet but will start working with the 1.36 branch soon

I'm guessing this is also a problem on REL1_36 and REL1_37 too...?

I haven't tried that out yet but will start working with the 1.36 branch soon

I imagine the changes needed on REL1_35 can be similarly applied on REL1_36 (and REL1_37 if it's needed)

I'm guessing this is also a problem on REL1_36 and REL1_37 too...?

I haven't tried that out yet but will start working with the 1.36 branch soon

I imagine the changes needed on REL1_35 can be similarly applied on REL1_36 (and REL1_37 if it's needed)

I think it's some combination of bumping wdio things and applying the changes required after that, I did one trial last friday and copied one of the wdio bumps (https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MobileFrontend/+/724731 probably) on master in this PS

https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MobileFrontend/+/740145/4

which got it a bit further

https://integration.wikimedia.org/ci/job/mwgate-node12-docker/57723/console (stuck at linting)
https://integration.wikimedia.org/ci/job/quibble-composer-mysql-php73-selenium-docker/12242/console (something wrong with some spec reporter, the tests doesn't start)

zeljkofilipin moved this task from Backlog 🪒 to Deep work 🌊 on the User-zeljkofilipin board.
zeljkofilipin subscribed.

I'll take a look this week. If the solution is updating webdriverio, I should be able to fix it.

Sorry, I ran out of time today. I'll take a look tomorrow. I'll unassign myself if I can't resolve it.

https://integration.wikimedia.org/ci/job/quibble-composer-mysql-php73-selenium-docker/12242/console (something wrong with some spec reporter, the tests doesn't start)

This one should be easy. This is the error message (an npm package is missing):

ERROR @wdio/local-runner: Failed launching test session: Error: Couldn't find plugin "spec" reporter, neither as wdio scoped package "@wdio/spec-reporter" nor as community package "wdio-spec-reporter". Please make sure you have it installed!

Looks like 1.36 and 1.37 fail, but for different reasons to 1.35.... But it's very unclear why they fail

https://integration.wikimedia.org/ci/job/mwgate-node12-docker/58952/console
https://integration.wikimedia.org/ci/job/mwgate-node12-docker/58953/console

As far as I can see, this is the problem:

I will now check that you built them using the correct Node.js version v10.24.0.
Note: You are using v12.22.5.
Building assets...
You are not running the required node version
Build step 'Execute shell' marked build as failure

The last time I ran into that, I've asked @Jdlrobson for help. @Jdlrobson, can you help?

Another trial of MobileFrontend on REL1_35

Shows a similar story

https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MobileFrontend/+/740130

The problem seems to be nodejs version. Commit 740130 (branch REL1_35) has this in package.json:

	"engines": {
		"node": "10.15.2"
	},

Nodejs version in master is v12 (package.json):

	"engines": {
		"node": "12.22.5"
	},

Jenkins runs three jobs for that commit. Two jobs fail.

mwgate-node12-docker has this warning because it uses nodejs v12:

npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: undefined,
npm WARN EBADENGINE   required: { node: '10.15.2' },
npm WARN EBADENGINE   current: { node: 'v12.22.5', npm: '7.21.0' }
npm WARN EBADENGINE }

This is the error message:

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 (/srv/npm/node_modules/node-gyp/lib/build.js:194:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (events.js:314:20)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
npm ERR! gyp ERR! System Linux 4.19.0-0.bpo.14-amd64
npm ERR! gyp ERR! command "/usr/bin/node" "/srv/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release"
npm ERR! gyp ERR! cwd /src/node_modules/fibers
npm ERR! gyp ERR! node -v v12.22.5
npm ERR! gyp ERR! node-gyp -v v7.1.2
npm ERR! gyp ERR! not ok 
npm ERR! node-gyp exited with code: 1
npm ERR! Please make sure you are using a supported platform and node version.

quibble-composer-mysql-php73-selenium-docker has this warning because it uses nodejs v14:

npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: undefined,
npm WARN EBADENGINE   required: { node: '10.15.2' },
npm WARN EBADENGINE   current: { node: 'v14.17.5', npm: '7.21.0' }
npm WARN EBADENGINE }

This is the error message:

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 (/srv/npm/node_modules/node-gyp/lib/build.js:194:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (events.js:400:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
npm ERR! gyp ERR! System Linux 4.19.0-0.bpo.14-amd64
npm ERR! gyp ERR! command "/usr/bin/node" "/srv/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release"
npm ERR! gyp ERR! cwd /workspace/src/extensions/MobileFrontend/node_modules/fibers
npm ERR! gyp ERR! node -v v14.17.5
npm ERR! gyp ERR! node-gyp -v v7.1.2
npm ERR! gyp ERR! not ok 
npm ERR! node-gyp exited with code: 1

I won't be able to work on this today.

Possibily the same as T229033 ? I'm not sure how to fix it though.

Poked this a bit further

changing the wdio config to inherit the default one it actually runs one test now but then fails on another one

https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MobileFrontend/+/740145

https://integration.wikimedia.org/ci/job/quibble-composer-mysql-php73-selenium-docker/12759/console

10:51:50 INFO:backend.PhpWebserver:[Fri Dec 10 09:51:50 2021] 127.0.0.1:53428 [200]: /api.php?action=webapp-manifest
10:51:50 INFO:backend.PhpWebserver:[Fri Dec 10 09:51:50 2021] 127.0.0.1:53430 [200]: /index.php?title=Main_Page&mobileaction=toggle_view_desktop
10:51:50 INFO:backend.PhpWebserver:[Fri Dec 10 09:51:50 2021] 127.0.0.1:53432 [200]: /index.php?title=Main_Page&mobileaction=toggle_view_desktop
10:51:51 [0-0] PASSED in chrome - /tests/selenium/specs/switch_views.js
10:51:53 [0-1] RUNNING in chrome - /tests/selenium/specs/user_page.js
10:51:54 [0-1] 2021-12-10T09:51:54.055Z ERROR @wdio/runner: Error: Unable to load spec files quite likely because they rely on `browser` object that is not fully initialised.
10:51:54 [0-1] `browser` object has only `capabilities` and some flags like `isMobile`.
10:51:54 [0-1] Helper files that use other `browser` commands have to be moved to `before` hook.
10:51:54 [0-1] Spec file(s): /workspace/src/extensions/MobileFrontend/tests/selenium/specs/user_page.js
10:51:54 [0-1] Error: TypeError: Cannot read property 'username' of undefined
10:51:54 [0-1]     at Object.<anonymous> (/workspace/src/extensions/MobileFrontend/tests/selenium/features/step_definitions/user_page_steps.js:6:34)
10:51:54 [0-1]     at Module._compile (internal/modules/cjs/loader.js:1072:14)
10:51:54 [0-1]     at Module._compile (/workspace/src/extensions/MobileFrontend/node_modules/pirates/lib/index.js:99:24)
10:51:54 [0-1]     at Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
10:51:54 [0-1]     at Object.newLoader [as .js] (/workspace/src/extensions/MobileFrontend/node_modules/pirates/lib/index.js:104:7)
10:51:54 [0-1]     at Module.load (internal/modules/cjs/loader.js:937:32)
10:51:54 [0-1]     at Function.Module._load (internal/modules/cjs/loader.js:778:12)
10:51:54 [0-1]     at Module.require (internal/modules/cjs/loader.js:961:19)
10:51:54 [0-1]     at require (internal/modules/cjs/helpers.js:92:18)
10:51:54 [0-1]     at Object.<anonymous> (/workspace/src/extensions/MobileFrontend/tests/selenium/specs/user_page.js:12:6)
10:51:54 [0-1]     at Module._compile (internal/modules/cjs/loader.js:1072:14)
10:51:54 [0-1]     at Module._compile (/workspace/src/extensions/MobileFrontend/node_modules/pirates/lib/index.js:99:24)
10:51:54 [0-1]     at Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
10:51:54 [0-1]     at Object.newLoader [as .js] (/workspace/src/extensions/MobileFrontend/node_modules/pirates/lib/index.js:104:7)
10:51:54 [0-1]     at Module.load (internal/modules/cjs/loader.js:937:32)
10:51:54 [0-1]     at Function.Module._load (internal/modules/cjs/loader.js:778:12)
10:51:54 [0-1]     at MochaAdapter._loadFiles (/workspace/src/extensions/MobileFrontend/node_modules/@wdio/mocha-framework/build/index.js:85:35)
10:51:54 [0-1]     at MochaAdapter.init (/workspace/src/extensions/MobileFrontend/node_modules/@wdio/mocha-framework/build/index.js:54:9)
10:51:54 [0-1]     at Object.adapterFactory.init (/workspace/src/extensions/MobileFrontend/node_modules/@wdio/mocha-framework/build/index.js:313:22)
10:51:54 [0-1]     at Runner.run (/workspace/src/extensions/MobileFrontend/node_modules/@wdio/runner/build/index.js:83:27)
10:51:54 [0-1]  Error:  Unable to load spec files quite likely because they rely on `browser` object that is not fully initialised.
10:51:54 `browser` object has only `capabilities` and some flags like `isMobile`.
10:51:54 Helper files that use other `browser` commands have to be moved to `before` hook.
10:51:54 Spec file(s): /workspace/src/extensions/MobileFrontend/tests/selenium/specs/user_page.js
10:51:54 Error: TypeError: Cannot read property 'username' of undefined
10:51:54     at Object.<anonymous> (/workspace/src/extensions/MobileFrontend/tests/selenium/features/step_definitions/user_page_steps.js:6:34)
10:51:54     at Module._compile (internal/modules/cjs/loader.js:1072:14)
10:51:54     at Module._compile (/workspace/src/extensions/MobileFrontend/node_modules/pirates/lib/index.js:99:24)
10:51:54     at Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
10:51:54     at Object.newLoader [as .js] (/workspace/src/extensions/MobileFrontend/node_modules/pirates/lib/index.js:104:7)
10:51:54     at Module.load (internal/modules/cjs/loader.js:937:32)
10:51:54     at Function.Module._load (internal/modules/cjs/loader.js:778:12)
10:51:54     at Module.require (internal/modules/cjs/loader.js:961:19)
10:51:54     at require (internal/modules/cjs/helpers.js:92:18)
10:51:54     at Object.<anonymous> (/workspace/src/extensions/MobileFrontend/tests/selenium/specs/user_page.js:12:6)
10:51:54     at Module._compile (internal/modules/cjs/loader.js:1072:14)
10:51:54     at Module._compile (/workspace/src/extensions/MobileFrontend/node_modules/pirates/lib/index.js:99:24)
10:51:54     at Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
10:51:54     at Object.newLoader [as .js] (/workspace/src/extensions/MobileFrontend/node_modules/pirates/lib/index.js:104:7)
10:51:54     at Module.load (internal/modules/cjs/loader.js:937:32)
10:51:54     at Function.Module._load (internal/modules/cjs/loader.js:778:12)
10:51:54 [0-1] FAILED in chrome - /tests/selenium/specs/user_page.js
10:51:54 
10:51:54  "dot" Reporter:
10:51:54 .
10:51:54 
10:51:54 Spec Files:	 1 passed, 1 failed, 2 total (100% completed) in 00:00:08

Looks like 1.36 and 1.37 fail, but for different reasons to 1.35.... But it's very unclear why they fail

https://integration.wikimedia.org/ci/job/mwgate-node12-docker/58952/console
https://integration.wikimedia.org/ci/job/mwgate-node12-docker/58953/console

As far as I can see, this is the problem:

I will now check that you built them using the correct Node.js version v10.24.0.
Note: You are using v12.22.5.
Building assets...
You are not running the required node version
Build step 'Execute shell' marked build as failure

The last time I ran into that, I've asked @Jdlrobson for help. @Jdlrobson, can you help?

This is also stated on runs on master https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php72-selenium-docker/91880/consoleFull

But can't find this part about Building assets... anywhere

22:52:48 npm WARN EBADENGINE Unsupported engine {
22:52:48 npm WARN EBADENGINE   package: undefined,
22:52:48 npm WARN EBADENGINE   required: { node: '12.22.5' },
22:52:48 npm WARN EBADENGINE   current: { node: 'v14.17.5', npm: '7.21.0' }
22:52:48 npm WARN EBADENGINE }

I think i got one "working" now https://integration.wikimedia.org/ci/job/quibble-composer-mysql-php73-selenium-docker/12762/console

https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MobileFrontend/+/740145/12

However i just removed tests/selenium/specs/user_page.js because it was also missing on master, not sure if this is fine?

I believe I might have identified the reason of Error: Failed to load plugin 'unicorn' declared in '.eslintrc.json » eslint-config-wikimedia/server » ./language/es2018 » ./rules-es2018': Cannot find module 'eslint/use-at-your-own-risk' errors. It seems this happens because of eslint 6.x being used - installed in turn because of version required by @wikimedia/mw-node-qunit. I've opened https://github.com/wikimedia/mw-node-qunit/pull/17 which might or not move this problem a bit forward.

Change 748277 had a related patch set uploaded (by Jdlrobson; author: Jdlrobson):

[mediawiki/extensions/MobileFrontend@REL1_36] Bump Node.js version

https://gerrit.wikimedia.org/r/748277

I'll take a look today to see if I can unblock this.

Change 748277 merged by jenkins-bot:

[mediawiki/extensions/MobileFrontend@REL1_36] Bump Node.js version

https://gerrit.wikimedia.org/r/748277

Change 740616 merged by jenkins-bot:

[mediawiki/extensions/MobileFrontend@REL1_35] Fix CI on 1.35 branch by applying Node.js upgrade patches

https://gerrit.wikimedia.org/r/740616

Okay, this should be fixed now.

This was nothing to do with mw-node-qunit. This problem keeps coming up. Basically every time we upgrade Node.js it breaks compatibility with Selenium which needs to be upgraded and it breaks the build step as different versions of Node.js can result in different versions of built assets (which breaks the script that validates the committed build steps). When this arises we just have to play a bit of detective work to identify which commits are not in the appropriate branch.

Ideally, we should be doing this as part of upgrading Node.js or by making CI immune to this problems. I've created T298043 to capture that discussion/work.

Thanks!

Is 1.37 working too?

Reedy renamed this task from MobileFrontend on REL1_35 does not build to MobileFrontend does not build on release branches.Dec 20 2021, 9:08 PM
Reedy edited projects, added MW-1.36-release, MW-1.37-release; removed Patch-For-Review.