oven-sh / bun

Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one
https://bun.sh
Other
73.6k stars 2.72k forks source link

Build - macOS - `error: unknown type name 'TargetListing'` #1504

Closed vjpr closed 11 months ago

vjpr commented 1 year ago

From: https://discord.com/channels/876711213126520882/888839314056839309/1041759223731724429

When building on macOS Ventura with zig@0.10:

Successfully remade target file 'identifier-cache'.
 File 'bindings' does not exist.
   File 'src/bun.js/debug-bindings-obj/BunJSCModule.o' does not exist.
  Must remake target 'src/bun.js/debug-bindings-obj/BunJSCModule.o'.
Makefile:1558: update target 'src/bun.js/debug-bindings-obj/BunJSCModule.o' due to: src/bun.js/bindings/BunJSCModule.cpp
##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
/opt/homebrew/opt/llvm/bin/clang++ -I/Users/Vaughan/dev/fork/+bun/bun/src/deps/uws/uSockets/src -I/Users/Vaughan/dev/fork/+bun/bun/src/deps/uws/src -I/Users/Vaughan/dev/fork/+bun/bun/src/deps -I/Users/Vaughan/dev/fork/+bun/bun/src/deps/mimalloc/include -Isrc/napi -I/Users/Vaughan/dev/fork/+bun/bun/src/deps/boringssl/include -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/WTF/Headers -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/ICU/Headers -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/bmalloc/Headers -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/ -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/include -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/bmalloc/PrivateHeaders -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/WTF/PrivateHeaders -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/bindings/ -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/builtins -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/bindings -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/bindings/webcore -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/bindings/webcrypto -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/bindings/sqlite -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/builtins/cpp -I -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/modules -I/Users/Vaughan/webkit-build/include -I/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/Source  -std=c++2a -DSTATICALLY_LINKED_WITH_JavaScriptCore=1 -DSTATICALLY_LINKED_WITH_WTF=1 -DSTATICALLY_LINKED_WITH_BMALLOC=1 -DBUILDING_WITH_CMAKE=1 -DBUN_SINGLE_THREADED_PER_VM_ENTRY_SCOPE=1 -DNDEBUG=1 -DNOMINMAX -DIS_BUILD -DBUILDING_JSCONLY__ -DASSERT_ENABLED=0 -fvisibility=hidden -fvisibility-inlines-hidden  \
    -mmacosx-version-min=11.0 \
    -O1 -mtune=native \
    -fno-exceptions \
    -fno-rtti \
    -ferror-limit=1000 \
     \
    -g3 -c -o src/bun.js/debug-bindings-obj/BunJSCModule.o src/bun.js/bindings/BunJSCModule.cpp
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
In file included from src/bun.js/bindings/BunJSCModule.cpp:30:
In file included from /Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders/JavaScriptCore/RemoteInspectorServer.h:30:
/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders/JavaScriptCore/RemoteInspector.h:208:5: error: unknown type name 'TargetListing'
    TargetListing listingForTarget(const RemoteControllableTarget&) const;
    ^
/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders/JavaScriptCore/RemoteInspector.h:209:5: error: unknown type name 'TargetListing'
    TargetListing listingForInspectionTarget(const RemoteInspectionTarget&) const;
    ^
/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders/JavaScriptCore/RemoteInspector.h:210:5: error: unknown type name 'TargetListing'
    TargetListing listingForAutomationTarget(const RemoteAutomationTarget&) const;
    ^
/Users/Vaughan/dev/fork/+bun/bun/src/bun.js/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders/JavaScriptCore/RemoteInspector.h:273:23: error: use of undeclared identifier 'TargetListing'
    HashMap<TargetID, TargetListing> m_targetListingMap;
                      ^
4 errors generated.
Makefile:1557: *** [src/bun.js/debug-bindings-obj/BunJSCModule.o] error 1

#0  src/bun.js/debug-bindings-obj/BunJSCModule.o at /Users/Vaughan/dev/fork/+bun/bun/Makefile:1557
#1  bindings at /Users/Vaughan/dev/fork/+bun/bun/Makefile:1334
#if PLATFORM(COCOA)
#include "RemoteInspectorXPCConnection.h"
#include <wtf/HashSet.h>
#include <wtf/RetainPtr.h>

OBJC_CLASS NSDictionary;
OBJC_CLASS NSString;
typedef RetainPtr<NSDictionary> TargetListing;
#endif

#if USE(GLIB)
#include <wtf/glib/GRefPtr.h>
#include <wtf/glib/SocketConnection.h>
typedef GRefPtr<GVariant> TargetListing;
typedef struct _GCancellable GCancellable;
#endif

#if USE(INSPECTOR_SOCKET_SERVER)
#include "RemoteConnectionToTarget.h"
#include "RemoteInspectorConnectionClient.h"
#include <wtf/JSONValues.h>
#include <wtf/RefPtr.h>

namespace Inspector {
using TargetListing = RefPtr<JSON::Object>;
}
#endif

We use -DPORT="JSCOnly" which doesn't have the PLATFORM( ) macro. See src/bun.js/WebKit/Source/WTF/wtf/PlatformLegacy.h.

.PHONY: jsc-build-mac-compile-debug
jsc-build-mac-compile-debug:
    mkdir -p $(WEBKIT_DEBUG_DIR) $(WEBKIT_DIR);
    cd $(WEBKIT_DEBUG_DIR) && \
        ICU_INCLUDE_DIRS="$(HOMEBREW_PREFIX)opt/icu4c/include" \
        cmake \
            -DPORT="JSCOnly" \ <-----------------
            -DENABLE_STATIC_JSC=ON \
            -DCMAKE_BUILD_TYPE=Debug \
            -DUSE_THIN_ARCHIVES=OFF \
            -DENABLE_FTL_JIT=ON \
            -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
            -G Ninja \
            $(CMAKE_FLAGS_WITHOUT_RELEASE) \
            -DPTHREAD_JIT_PERMISSIONS_API=1 \
            -DUSE_PTHREAD_JIT_PERMISSIONS_API=ON \
            -DENABLE_REMOTE_INSPECTOR=ON \ <---------------
            -DUSE_VISIBILITY_ATTRIBUTE=1 \
            $(WEBKIT_DIR) \
            $(WEBKIT_DEBUG_DIR) && \
    CFLAGS="$(CFLAGS) -ffat-lto-objects" CXXFLAGS="$(CXXFLAGS) -ffat-lto-objects" \
        cmake --build $(WEBKIT_DEBUG_DIR) --config Debug --target jsc

-DENABLE_REMOTE_INSPECTOR=ON includes RemoteInspector.h which has a check for PLATFORM(COCOA) which will be null.

For GTK though, it uses #if USE(GLIB). This is set in src/bun.js/WebKit/Source/cmake/OptionsJSCOnly.cmake.

string(TOLOWER ${EVENT_LOOP_TYPE} LOWERCASE_EVENT_LOOP_TYPE)
if (LOWERCASE_EVENT_LOOP_TYPE STREQUAL "glib")
    find_package(GLIB 2.36 REQUIRED COMPONENTS gio gio-unix gobject)
    SET_AND_EXPOSE_TO_BUILD(USE_GLIB 1)
    SET_AND_EXPOSE_TO_BUILD(USE_GLIB_EVENT_LOOP 1)
    SET_AND_EXPOSE_TO_BUILD(WTF_DEFAULT_EVENT_LOOP 0)
else ()
    SET_AND_EXPOSE_TO_BUILD(USE_GENERIC_EVENT_LOOP 1)
    SET_AND_EXPOSE_TO_BUILD(WTF_DEFAULT_EVENT_LOOP 0)
endif ()

Looks like the RemoteInspector doesn't work with macOS...or its not setup to.

Jarred-Sumner commented 1 year ago

We shouldn't build with remote inspector enabled I think.

Electroid commented 11 months ago

Our build has changed quite a bit since this issue was filed, if you still run into this issue. Please feel free to re-open.