Bug 208386

Summary: run-safari --ios-simulator fails with `Can't locate object method "dictionaryWithContentsOfFile_"`
Product: WebKit Reporter: James Darpinian <jdarpinian>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED CONFIGURATION CHANGED    
Severity: Normal CC: ap, jbedard
Priority: P2    
Version: WebKit Local Build   
Hardware: Unspecified   
OS: Unspecified   

Description James Darpinian 2020-02-28 11:49:09 PST
When I run Tools/Scripts/run-safari --ios-simulator --debug, I get an error message:

Can't locate object method "dictionaryWithContentsOfFile_" via package "NSDictionary" (perhaps you forgot to load "NSDictionary"?) at /Users/jdarpinian/src/WebKit2/Tools/Scripts/webkitdirs.pm line 1527.

When I run Tools/Scripts/run-minibrowser --ios-simulator --debug, I don't get an error message, but it doesn't work either. The script runs for about 3 seconds and then exits without printing anything, and the iOS simulator does not start.
Comment 1 Alexey Proskuryakov 2020-02-29 13:16:38 PST
I'm guessing that you have a custom Perl installed via some package manager. What does "which perl" say in Terminal?

Does this work when just run with perl in command line?

sub f
{
    eval "require Foundation";
    print Foundation::perlRefFromObjectRef(NSDictionary->dictionaryWithContentsOfFile_("/Applications/Safari.app/Contents/Info.plist"));
}

f()
Comment 2 Alexey Proskuryakov 2020-04-27 09:11:43 PDT
This code was removed in bug 211008, so this particular problem can't happen any more. Still, scripts are not guaranteed to work if you have a custom version of Perl or Python installed.