Bug 212448 - "build-webkit --debug --ios-simulator" doesn't build MobileMiniBrowser
Summary: "build-webkit --debug --ios-simulator" doesn't build MobileMiniBrowser
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: WebKit Nightly Build
Hardware: iPhone / iPad iOS 13
: P2 Major
Assignee: Nobody
URL:
Keywords:
Depends on: 212428 212530
Blocks:
  Show dependency treegraph
 
Reported: 2020-05-27 17:19 PDT by Kenneth Russell
Modified: 2020-07-10 17:17 PDT (History)
4 users (show)

See Also:


Attachments
Build log, from scratch (1.25 MB, application/zip)
2020-06-01 13:18 PDT, Kenneth Russell
no flags Details
James Darpinian's build script (2.07 KB, text/plain)
2020-06-01 13:54 PDT, Kenneth Russell
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kenneth Russell 2020-05-27 17:19:39 PDT
To reproduce:

./Tools/Scripts/build-webkit --debug --ios-simulator > build-log.txt 2>&1

Then open WebKit.xcworkspace, set it up to run MobileMiniBrowser on the iPad Pro (9.7-inch), and try to do "Product" -> "Perform Action" -> "Run Without Building".

It reports that there's nothing to run, and that's because Xcode's looking for "Tools/MobileMiniBrowser/build/Debug/MobileMiniBrowser.app". (The Xcode workspace settings are set up with relative paths in WebKitBuild per instructions at https://webkit.org/building-webkit/ .)

Attempting to edit the MobileMiniBrowser scheme to manually run WebKitBuild/Debug-iphonesimulator/MobileMiniBrowser.app brings up a dialog:

---
The file "MobileMiniBrowser" couldn't be opened because you don't have permission to view..."
---

This was working for me yesterday, before I attempted to edit my scheme to use a Release build instead of a Debug build. It was very convenient to be able to launch MobileMiniBrowser reliably inside of Xcode. What is needed in order to fix this?
Comment 1 Kenneth Russell 2020-05-27 17:29:15 PDT
Note: I might have broken something in Bug 212428.
Comment 2 Kenneth Russell 2020-06-01 13:17:02 PDT
After the switch back to the legacy build system in Bug 212530, I synced to ToT WebKit, deleted WebKit build, and ran:

./Tools/Scripts/build-webkit --debug --ios-simulator > build-log.txt

Here's the attached build log and the contents of `ls -1 WebKitBuild/Debug-iphonesimulator`:

DerivedSources
DumpRenderTree
DumpRenderTree.app
DumpRenderTree.app.dSYM
DumpRenderTree.dSYM
InjectedBundleTestWebKitAPI.bundle
InjectedBundleTestWebKitAPI.bundle.dSYM
JSCLLIntOffsetsExtractor
JSCLLIntSettingsExtractor
JavaScriptCore.framework
LLIntOffsets
LayoutTestHelper
LayoutTestHelper.dSYM
PluginProcessShim.dylib
PluginProcessShim.tbd
SecItemShim.dylib
SecItemShim.tbd
TestNetscapePlugIn.plugin
TestWTF
TestWTF.dSYM
TestWebKitAPI
TestWebKitAPI.dSYM
TestWebKitAPI.resources
TestWebKitAPI.wkbundle
TestWebKitAPI.wkbundle.dSYM
WebCore.framework
WebCoreTestSupport
WebKit.framework
WebKitLegacy.framework
WebKitTestRunner
WebKitTestRunner.dSYM
WebKitTestRunnerApp.app
WebKitTestRunnerApp.app.dSYM
WebKitTestRunnerInjectedBundle.bundle
WebKitTestRunnerInjectedBundle.bundle.dSYM
WebKitTestSupport
com.apple.WebKit.GPU.xpc
com.apple.WebKit.Networking.xpc
com.apple.WebKit.Plugin.64.xpc
com.apple.WebKit.WebContent.Development.xpc
com.apple.WebKit.WebContent.xpc
dynbench
gtest.framework
gtest.framework.dSYM
jsc
libANGLE.a
libDumpRenderTree.a
libPAL.a
libTestWTF.a
libTestWebKitAPI.a
libWTF.a
libWebCoreTestShim.dylib
libWebCoreTestSupport.dylib
libWebKitTestRunner.a
libbmalloc.a
libboringssl.a
libgtest.a
libgtest_main.a
libopus.a
libsrtp.a
libusrsctp.a
libvpx.a
libwebrtc.dylib
libwebrtcpcrtc.a
libyuv.a
minidom
minidom.js
testRegExp
testair
testapi
testapiScripts
testb3
testdfg
testmasm
testmem
usr
yasm


MobileMiniBrowser.app wasn't built by the command-line script. Is this expected?
Comment 3 Kenneth Russell 2020-06-01 13:18:05 PDT
Created attachment 400750 [details]
Build log, from scratch

build log from:

./Tools/Scripts/build-webkit --debug --ios-simulator > build-log.txt 2>&1
Comment 4 Kenneth Russell 2020-06-01 13:54:45 PDT
Created attachment 400756 [details]
James Darpinian's build script

The reason for the error:

---
The file "MobileMiniBrowser" couldn't be opened because you don't have permission to view..."
---

was that the MobileMiniBrowser.app in WebKitBuild/Debug-iphonesimulator was badly incomplete - it only contained an empty "Frameworks" directory.

It looks like the command-line build scripts for --ios-simulator don't build MobileMiniBrowser.app. Our teammate James Darpinian (CC'd) made the attached build script, which does explicitly build MobileMiniBrowser for the simulator. By running that, I was able to build a working MobileMiniBrowser.app again, and now Xcode will run that without building in the iPad simulator.
Comment 5 Keith Rollin 2020-06-01 15:03:17 PDT
Jer added the MobileMiniBrowser project, so cc'ing him in case he has any comments on it being added to build-webkit and/or elsewhere.
Comment 6 Kenneth Russell 2020-07-10 17:13:05 PDT
Adjusting the bug summary to be more correct.

A corollary problem is that:

./Tools/Scripts/run-minibrowser --debug --ipad-simulator

looks for MiniBrowser, not MobileMiniBrowser. Here's current output:


Starting MiniBrowser with DYLD_FRAMEWORK_PATH set to point to built WebKit in /Users/kbr/src/iOSWebKit/WebKitBuild/Debug.
arch: /Users/kbr/src/iOSWebKit/WebKitBuild/Debug/MiniBrowser.app/Contents/MacOS/MiniBrowser isn't executable

ScriptError raised: Failed to run "['Tools/Scripts/old-run-minibrowser']" exit_code: 1 cwd: /Users/kbr/src/iOSWebKit
Traceback (most recent call last):
  File "/Users/kbr/src/iOSWebKit/Tools/Scripts/webkitpy/minibrowser/run_webkit_app.py", line 66, in main
    return port.run_minibrowser(browser_args)
  File "/Users/kbr/src/iOSWebKit/Tools/Scripts/webkitpy/port/base.py", line 1373, in run_minibrowser
    return self._executive.run_command([miniBrowser] + args, stdout=None, cwd=self.webkit_base(), return_stderr=False, decode_output=False)
  File "/Users/kbr/src/iOSWebKit/Tools/Scripts/webkitpy/common/system/executive.py", line 435, in run_command
    (error_handler or self.default_error_handler)(script_error)
  File "/Users/kbr/src/iOSWebKit/Tools/Scripts/webkitpy/common/system/abstractexecutive.py", line 97, in default_error_handler
    raise error
ScriptError: Failed to run "['Tools/Scripts/old-run-minibrowser']" exit_code: 1 cwd: /Users/kbr/src/iOSWebKit
Comment 7 Kenneth Russell 2020-07-10 17:17:06 PDT
run-safari with the iOS simulator looks broken now too:

kbr-macbookpro:iOSWebKit kbr$ ./Tools/Scripts/run-safari --debug --ipad-simulator
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "Install Started\n1%....") at /Users/kbr/src/iOSWebKit/Tools/Scripts/webkitdirs.pm line 2725.