Skip to content

use system lua#6495

Open
solomoncyj wants to merge 1 commit intoChatterino:masterfrom
solomoncyj:master
Open

use system lua#6495
solomoncyj wants to merge 1 commit intoChatterino:masterfrom
solomoncyj:master

Conversation

@solomoncyj
Copy link
Contributor

use system lua, for debundling for linux distros

@pajlada pajlada self-assigned this Sep 26, 2025
@solomoncyj
Copy link
Contributor Author

solomoncyj commented Sep 26, 2025

Linker errors
[0/2] Re-checking globbed directories...
[444/445] Linking CXX executable bin/chatterino
FAILED: bin/chatterino 
: && /usr/bin/clang++ -march=native -flto=thin -O3 -DNDEBUG -fuse-ld=lld    -Xlinker --dependency-file=src/CMakeFiles/chatterino.dir/link.d src/CMakeFiles/chatterino-lib.dir/chatterino-lib_autogen/mocs_compilation.cpp.o src/CMakeFiles/chatterino-lib.dir/Application.cpp.o src/CMakeFiles/chatterino-lib.dir/BrowserExtension.cpp.o src/CMakeFiles/chatterino-lib.dir/RunGui.cpp.o src/CMakeFiles/chatterino-lib.dir/common/Args.cpp.o src/CMakeFiles/chatterino-lib.dir/common/ChannelChatters.cpp.o src/CMakeFiles/chatterino-lib.dir/common/Channel.cpp.o src/CMakeFiles/chatterino-lib.dir/common/ChatterinoSetting.cpp.o src/CMakeFiles/chatterino-lib.dir/common/ChatterSet.cpp.o src/CMakeFiles/chatterino-lib.dir/common/Credentials.cpp.o src/CMakeFiles/chatterino-lib.dir/common/Env.cpp.o src/CMakeFiles/chatterino-lib.dir/common/LinkParser.cpp.o src/CMakeFiles/chatterino-lib.dir/common/Modes.cpp.o src/CMakeFiles/chatterino-lib.dir/common/QLogging.cpp.o src/CMakeFiles/chatterino-lib.dir/common/WindowDescriptors.cpp.o src/CMakeFiles/chatterino-lib.dir/common/network/NetworkCommon.cpp.o src/CMakeFiles/chatterino-lib.dir/common/network/NetworkManager.cpp.o src/CMakeFiles/chatterino-lib.dir/common/network/NetworkPrivate.cpp.o src/CMakeFiles/chatterino-lib.dir/common/network/NetworkRequest.cpp.o src/CMakeFiles/chatterino-lib.dir/common/network/NetworkResult.cpp.o src/CMakeFiles/chatterino-lib.dir/common/network/NetworkTask.cpp.o src/CMakeFiles/chatterino-lib.dir/common/websockets/WebSocketPool.cpp.o src/CMakeFiles/chatterino-lib.dir/common/websockets/detail/WebSocketConnection.cpp.o src/CMakeFiles/chatterino-lib.dir/common/websockets/detail/WebSocketConnectionImpl.cpp.o src/CMakeFiles/chatterino-lib.dir/common/websockets/detail/WebSocketPoolImpl.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/accounts/Account.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/accounts/AccountController.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/accounts/AccountModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/chatterino/Debugging.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/Misc.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/AddModerator.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/AddVIP.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/Announce.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/Ban.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/Block.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/ChatSettings.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/Chatters.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/DeleteMessages.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/GetModerators.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/GetVIPs.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/Raid.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/RemoveModerator.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/RemoveVIP.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/SendReply.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/SendWhisper.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/ShieldMode.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/Shoutout.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/StartCommercial.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/Unban.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/UpdateChannel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/UpdateColor.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/builtin/twitch/Warn.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/common/ChannelAction.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/CommandController.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/Command.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/commands/CommandModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/CompletionModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/sources/CommandSource.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/sources/EmoteSource.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/sources/UnifiedSource.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/sources/UserSource.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/strategies/ClassicEmoteStrategy.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/strategies/ClassicUserStrategy.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/strategies/CommandStrategy.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/strategies/SmartEmoteStrategy.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/completion/TabCompletionModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/FilterModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/FilterRecord.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/FilterSet.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/expressions/Expression.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/expressions/BinaryOperation.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/expressions/ListExpression.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/expressions/RegexExpression.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/expressions/UnaryOperation.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/expressions/ValueExpression.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/Filter.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/FilterParser.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/Tokenizer.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/filters/lang/Types.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/highlights/BadgeHighlightModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/highlights/HighlightBadge.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/highlights/HighlightBlacklistModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/highlights/HighlightController.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/highlights/HighlightModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/highlights/HighlightPhrase.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/highlights/UserHighlightModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/hotkeys/Hotkey.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/hotkeys/HotkeyController.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/hotkeys/HotkeyHelpers.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/hotkeys/HotkeyModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/ignores/IgnoreController.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/ignores/IgnoreModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/ignores/IgnorePhrase.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/moderationactions/ModerationAction.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/moderationactions/ModerationActionModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/logging/ChannelLog.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/logging/ChannelLoggingModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/nicknames/NicknamesModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/notifications/NotificationController.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/notifications/NotificationModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/pings/MutedChannelModel.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/ChannelRef.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/HTTPRequest.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/HTTPResponse.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/IOWrapper.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/Message.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/WebSocket.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/LuaAPI.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/LuaUtilities.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/PluginController.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/Plugin.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/PluginPermission.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/plugins/SolTypes.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/sound/MiniaudioBackend.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/sound/NullBackend.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/twitch/LiveController.cpp.o src/CMakeFiles/chatterino-lib.dir/controllers/userdata/UserDataController.cpp.o src/CMakeFiles/chatterino-lib.dir/debug/Benchmark.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/Emote.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/Image.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/ImageSet.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/Link.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/Message.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/MessageBuilder.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/MessageColor.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/MessageElement.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/MessageSimilarity.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/MessageThread.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/layouts/MessageLayout.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/layouts/MessageLayoutContainer.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/layouts/MessageLayoutContext.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/layouts/MessageLayoutElement.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/search/AuthorPredicate.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/search/BadgePredicate.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/search/ChannelPredicate.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/search/LinkPredicate.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/search/MessageFlagsPredicate.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/search/RegexPredicate.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/search/SubstringPredicate.cpp.o src/CMakeFiles/chatterino-lib.dir/messages/search/SubtierPredicate.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/IvrApi.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/NetworkConfigurationProvider.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/bttv/BttvEmotes.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/bttv/BttvLiveUpdates.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/bttv/liveupdates/BttvLiveUpdateMessages.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/bttv/liveupdates/BttvLiveUpdateSubscription.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/chatterino/ChatterinoBadges.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/colors/ColorProvider.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/emoji/Emojis.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/ffz/FfzBadges.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/ffz/FfzEmotes.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/ffz/FfzUtil.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/irc/IrcConnection2.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/links/LinkInfo.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/links/LinkResolver.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/pronouns/Pronouns.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/pronouns/UserPronouns.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/pronouns/alejo/PronounsAlejoApi.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/recentmessages/Api.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/recentmessages/Impl.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/seventv/SeventvAPI.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/seventv/SeventvBadges.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/seventv/SeventvEmotes.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/seventv/SeventvEventAPI.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/seventv/eventapi/Client.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/seventv/eventapi/Dispatch.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/seventv/eventapi/Message.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/seventv/eventapi/Subscription.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/ChannelPointReward.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/IrcMessageHandler.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/PubSubClient.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/PubSubManager.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchAccount.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchAccountManager.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchBadge.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchBadges.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchChannel.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchCommon.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchEmotes.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchHelpers.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchIrc.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchIrcServer.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchUser.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/TwitchUsers.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/UserColor.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/eventsub/Connection.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/eventsub/Controller.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/eventsub/MessageBuilder.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/eventsub/MessageHandlers.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/eventsub/SubscriptionHandle.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/eventsub/SubscriptionRequest.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/pubsubmessages/Base.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/pubsubmessages/ChannelPoints.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/pubsubmessages/Listen.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/pubsubmessages/Unlisten.cpp.o src/CMakeFiles/chatterino-lib.dir/providers/twitch/api/Helix.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/CrashHandler.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/Emotes.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/Fonts.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/ImageUploader.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/Logging.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/NativeMessaging.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/Paths.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/Resources.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/Settings.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/StreamerMode.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/Theme.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/Toasts.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/Updates.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/WindowManager.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/helper/GifTimer.cpp.o src/CMakeFiles/chatterino-lib.dir/singletons/helper/LoggingChannel.cpp.o src/CMakeFiles/chatterino-lib.dir/util/AttachToConsole.cpp.o src/CMakeFiles/chatterino-lib.dir/util/Clipboard.cpp.o src/CMakeFiles/chatterino-lib.dir/util/CustomPlayer.cpp.o src/CMakeFiles/chatterino-lib.dir/util/DebugCount.cpp.o src/CMakeFiles/chatterino-lib.dir/util/DisplayBadge.cpp.o src/CMakeFiles/chatterino-lib.dir/util/FormatTime.cpp.o src/CMakeFiles/chatterino-lib.dir/util/FunctionEventFilter.cpp.o src/CMakeFiles/chatterino-lib.dir/util/FuzzyConvert.cpp.o src/CMakeFiles/chatterino-lib.dir/util/Helpers.cpp.o src/CMakeFiles/chatterino-lib.dir/util/ImageUploader.cpp.o src/CMakeFiles/chatterino-lib.dir/util/IncognitoBrowser.cpp.o src/CMakeFiles/chatterino-lib.dir/util/IpcQueue.cpp.o src/CMakeFiles/chatterino-lib.dir/util/IrcHelpers.cpp.o src/CMakeFiles/chatterino-lib.dir/util/LayoutHelper.cpp.o src/CMakeFiles/chatterino-lib.dir/util/LoadPixmap.cpp.o src/CMakeFiles/chatterino-lib.dir/util/OnceFlag.cpp.o src/CMakeFiles/chatterino-lib.dir/util/RapidjsonHelpers.cpp.o src/CMakeFiles/chatterino-lib.dir/util/RatelimitBucket.cpp.o src/CMakeFiles/chatterino-lib.dir/util/RenameThread.cpp.o src/CMakeFiles/chatterino-lib.dir/util/SampleData.cpp.o src/CMakeFiles/chatterino-lib.dir/util/SelfCheck.cpp.o src/CMakeFiles/chatterino-lib.dir/util/StreamLink.cpp.o src/CMakeFiles/chatterino-lib.dir/util/Twitch.cpp.o src/CMakeFiles/chatterino-lib.dir/util/UnixSignalHandler.cpp.o src/CMakeFiles/chatterino-lib.dir/util/VectorMessageSink.cpp.o src/CMakeFiles/chatterino-lib.dir/util/WidgetHelpers.cpp.o src/CMakeFiles/chatterino-lib.dir/util/WindowsHelper.cpp.o src/CMakeFiles/chatterino-lib.dir/util/XDGDesktopFile.cpp.o src/CMakeFiles/chatterino-lib.dir/util/XDGDirectory.cpp.o src/CMakeFiles/chatterino-lib.dir/util/XDGHelper.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/AccountSwitchPopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/AccountSwitchWidget.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/AttachedWindow.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/BasePopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/BaseWidget.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/BaseWindow.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/ChatterListWidget.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/DraggablePopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/FramelessEmbedWindow.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/Label.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/Notebook.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/OverlayWindow.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/PluginRepl.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/Scrollbar.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/TooltipEntryWidget.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/TooltipWidget.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/Window.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/Button.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/DimButton.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/DrawnButton.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/InitUpdateButton.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/LabelButton.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/PixmapButton.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/SignalLabel.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/SvgButton.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/TitlebarButton.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/buttons/TitlebarButtons.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/BadgePickerDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/ChannelFilterEditorDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/ColorPickerDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/EditHotkeyDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/EditUserNotesDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/EmotePopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/LastRunCrashDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/LoginDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/QualityPopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/ReplyThreadPopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/SelectChannelDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/SelectChannelFiltersDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/SettingsDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/UpdateDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/UserInfoPopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/WelcomeDialog.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/switcher/NewPopupItem.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/switcher/NewTabItem.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/switcher/QuickSwitcherModel.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/switcher/QuickSwitcherPopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/dialogs/switcher/SwitchSplitItem.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/color/AlphaSlider.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/color/Checkerboard.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/color/ColorButton.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/color/ColorInput.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/color/ColorItemDelegate.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/color/HueSlider.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/color/SBCanvas.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/ChannelView.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/ComboBoxItemDelegate.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/DebugPopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/EditableModelView.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/IconDelegate.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/InvisibleSizeGrip.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/MessageView.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/NotebookTab.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/OverlayInteraction.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/RegExpItemDelegate.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/ResizingTextEdit.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/ScalingSpacerItem.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/ScrollbarHighlight.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/SearchPopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/SettingsDialogTab.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/LiveIndicator.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/TableStyles.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/helper/TrimRegExpValidator.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/layout/FlowLayout.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/listview/GenericItemDelegate.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/listview/GenericListItem.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/listview/GenericListModel.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/listview/GenericListView.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/AboutPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/AccountsPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/CommandPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/ExternalToolsPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/FiltersPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/GeneralPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/GeneralPageView.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/HighlightingPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/IgnoresPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/KeyboardSettingsPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/ModerationPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/NicknamesPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/NotificationPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/PluginsPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/SettingsPage.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/settingspages/SettingWidget.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/splits/ClosedSplits.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/splits/DraggedSplit.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/splits/InputCompletionItem.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/splits/InputCompletionPopup.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/splits/Split.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/splits/SplitContainer.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/splits/SplitHeader.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/splits/SplitInput.cpp.o src/CMakeFiles/chatterino-lib.dir/widgets/splits/SplitOverlay.cpp.o src/CMakeFiles/chatterino-lib.dir/__/autogen/ResourcesAutogen.cpp.o src/CMakeFiles/chatterino-lib.dir/chatterino-lib_autogen/RF4A4KSJVD/qrc_resources_autogenerated.cpp.o src/CMakeFiles/chatterino.dir/main.cpp.o -o bin/chatterino  /usr/lib64/libQt6Widgets.so.6.9.2  /usr/lib64/libQt6Svg.so.6.9.2  /usr/lib64/libQt6Gui.so.6.9.2  /usr/lib64/libGLX.so  /usr/lib64/libOpenGL.so  /usr/lib64/libQt6Concurrent.so.6.9.2  lib/libcommuni/libLibCommuni.a  lib/libcommuni/src/core/libCore.a  lib/libcommuni/src/model/libModel.a  lib/libcommuni/src/util/libUtil.a  /usr/lib64/libQt6Network.so.6.9.2  /usr/lib64/libQt6Core5Compat.so.6.9.2  lib/settings/libPajladaSettings.a  lib/twitch-eventsub-ws/src/libtwitch-eventsub-ws.a  -llua  /usr/lib64/libqt6keychain.so.0.14.3  /usr/lib64/libQt6DBus.so.6.9.2  src/libchatterino-lib-version.a  /usr/lib64/libQt6Core.so.6.9.2  -ldl  /usr/lib64/libnotify.so  /usr/lib64/libgdk_pixbuf-2.0.so  /usr/lib64/libgio-2.0.so  /usr/lib64/libgobject-2.0.so  /usr/lib64/libglib-2.0.so  /usr/lib64/libssl.so  /usr/lib64/libcrypto.so  /usr/lib64/librt.a && :
ld.lld: error: undefined symbol: lua_getglobal(lua_State*, char const*)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 59 more times
>>> did you mean: extern "C" lua_getglobal
>>> defined in: /usr/bin/../lib/gcc/x86_64-redhat-linux/15/../../../../lib64/liblua.so

ld.lld: error: undefined symbol: lua_type(lua_State*, int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 505 more times
>>> did you mean: extern "C" lua_type
>>> defined in: /usr/bin/../lib/gcc/x86_64-redhat-linux/15/../../../../lib64/liblua.so

ld.lld: error: undefined symbol: lua_settop(lua_State*, int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 920 more times

ld.lld: error: undefined symbol: luaL_checkstack(lua_State*, int, char const*)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 966 more times

ld.lld: error: undefined symbol: lua_pushnil(lua_State*)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 265 more times

ld.lld: error: undefined symbol: lua_setglobal(lua_State*, char const*)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced 12 more times

ld.lld: error: undefined symbol: lua_newuserdatauv(lua_State*, unsigned long, int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 42 more times

ld.lld: error: undefined symbol: luaL_error(lua_State*, char const*, ...)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 207 more times

ld.lld: error: undefined symbol: lua_absindex(lua_State*, int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 75 more times

ld.lld: error: undefined symbol: lua_createtable(lua_State*, int, int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(int sol::u_detail::register_usertype<chatterino::Message, (sol::automagic_flags)511>(lua_State*, sol::automagic_enrollments)::'lambda'(lua_State*, sol::u_detail::submetatable_type, sol::stateless_reference&)::operator()(lua_State*, sol::u_detail::submetatable_type, sol::stateless_reference&) const)
>>> referenced 32 more times

ld.lld: error: undefined symbol: lua_pushlstring(lua_State*, char const*, unsigned long)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced 106 more times

ld.lld: error: undefined symbol: lua_pushcclosure(lua_State*, int (*)(lua_State*), int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced 205 more times

ld.lld: error: undefined symbol: lua_settable(lua_State*, int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 11 more times

ld.lld: error: undefined symbol: lua_pushvalue(lua_State*, int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced 95 more times

ld.lld: error: undefined symbol: lua_setmetatable(lua_State*, int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 48 more times

ld.lld: error: undefined symbol: lua_rawgeti(lua_State*, int, long long)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 212 more times

ld.lld: error: undefined symbol: lua_setfield(lua_State*, int, char const*)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced 168 more times

ld.lld: error: undefined symbol: lua_xmove(lua_State*, lua_State*, int)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(sol::call_detail::lua_call_wrapper<chatterino::Message, sol::constructor_list<chatterino::Message ()>, true, false, true, 0, true, void>::call(lua_State*, sol::constructor_list<chatterino::Message ()>&))
>>> referenced 91 more times

ld.lld: error: undefined symbol: lua_gettop(lua_State*)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(void sol::basic_usertype<chatterino::lua::api::WebSocket, sol::basic_reference<false>>::tuple_set<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, char const (&) [9], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_1, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_2>&&, char const (&) [8], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_3, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_4>&&, char const (&) [10], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_5, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_6>&&, char const (&) [8], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_7, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_8>&&, char const (&) [6], void (chatterino::lua::api::WebSocket::*&&)(), char const (&) [10], void (chatterino::lua::api::WebSocket::*&&)(QByteArray const&), char const (&) [12], void (chatterino::lua::api::WebSocket::*&&)(QByteArray const&)>(std::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul>, std::tuple<char const (&) [9], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_1, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_2>&&, char const (&) [8], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_3, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_4>&&, char const (&) [10], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_5, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_6>&&, char const (&) [8], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_7, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_8>&&, char const (&) [6], void (chatterino::lua::api::WebSocket::*&&)(), char const (&) [10], void (chatterino::lua::api::WebSocket::*&&)(QByteArray const&), char const (&) [12], void (chatterino::lua::api::WebSocket::*&&)(QByteArray const&)>&&))
>>> referenced 178 more times

ld.lld: error: undefined symbol: luaL_newmetatable(lua_State*, char const*)
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*))
>>> referenced by Message.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.Message.cpp.o:(chatterino::lua::api::message::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&))
>>> referenced by WebSocket.cpp
>>>               src/CMakeFiles/chatterino-lib.dir/controllers/plugins/api/chatterino.lto.WebSocket.cpp.o:(void sol::basic_usertype<chatterino::lua::api::WebSocket, sol::basic_reference<false>>::tuple_set<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, char const (&) [9], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_1, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_2>&&, char const (&) [8], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_3, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_4>&&, char const (&) [10], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_5, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_6>&&, char const (&) [8], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_7, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_8>&&, char const (&) [6], void (chatterino::lua::api::WebSocket::*&&)(), char const (&) [10], void (chatterino::lua::api::WebSocket::*&&)(QByteArray const&), char const (&) [12], void (chatterino::lua::api::WebSocket::*&&)(QByteArray const&)>(std::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul>, std::tuple<char const (&) [9], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_1, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_2>&&, char const (&) [8], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_3, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_4>&&, char const (&) [10], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_5, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_6>&&, char const (&) [8], sol::property_wrapper<chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_7, chatterino::lua::api::WebSocket::createUserType(sol::basic_table_core<false, sol::basic_reference<false>>&, chatterino::Plugin*)::$_8>&&, char const (&) [6], void (chatterino::lua::api::WebSocket::*&&)(), char const (&) [10], void (chatterino::lua::api::WebSocket::*&&)(QByteArray const&), char const (&) [12], void (chatterino::lua::api::WebSocket::*&&)(QByteArray const&)>&&))
>>> referenced 47 more times

@lnicola
Copy link

lnicola commented Sep 26, 2025

Try disabling https://github.com/Chatterino/chatterino2/blob/master/cmake/FindSol2.cmake#L14. It tells Sol2 that Lua is compiled as C++, while the system one is not.

@pajlada
Copy link
Member

pajlada commented Sep 26, 2025

Try disabling master/cmake/FindSol2.cmake#L14. It tells Sol2 that Lua is compiled as C++, while the system one is not.

This would fix the linking issues, but would cause issues during building instead since we assume lua is built in C++ mode (see https://github.com/Chatterino/chatterino2/blob/master/lib/lua/CMakeLists.txt#L1) so everywhere where we use lua you'd need to make changes.

Is vendoring & statically linking sol2/lua problematic for fedora packaging?
An easy temporary fix would be to disable plugin support by setting the CHATTERINO_PLUGINS CMake option to Off

@lnicola
Copy link

lnicola commented Sep 26, 2025

This would fix the linking issues, but would cause issues during building instead since we assume

Not sure I get this, is that something that Chatterino requires, outside of what Sol2 does? Will it malfunction with a Lua built as C, if everything is configured properly in Sol2?

Is vendoring & statically linking sol2/lua problematic for fedora packaging?

Not sure, but I expect so. Vendoring is usually a big no-no for Linux distros.

@LecrisUT
Copy link

An easy temporary fix would be to disable plugin support by setting the CHATTERINO_PLUGINS CMake option to Off

This is the solution I would recommend for now. Would it affect anything major on the user side?

Is vendoring & statically linking sol2/lua problematic for fedora packaging?

Strictly, no. There are packages that bundle lua, but there are a few issues to consider:

  • Security and CVE management. I think in this case it is minimized because we are building lua straight up so it is a bug-to-bug copy and the bundled(lua) should be catching those (will need to confirm with people more experienced on that)
  • Usage of libraries. The system lua libraries might not be detected or even worse, it would be incompatible with each lua versions
  • Fedora specific patches missing. The Fedora lua package has a bunch of patches, and not sure if any of them would be relevant to port

Will it malfunction with a Lua built as C, if everything is configured properly in Sol2?

This is the key point though. If we use a system built Sol2 configured to link to lua with the C interface (still to be determined that it works), would there be any other lua CXX specific features that it needs?

@pajlada
Copy link
Member

pajlada commented Sep 26, 2025

We rely on the SOL_EXCEPTIONS_SAFE_PROPAGATION flag that gets enabled automatically when we enable SOL_USING_CXX_LUA https://sol2.readthedocs.io/en/latest/safety.html#linker-config
Without enabling SOL_USING_CXX_LUA, we wouldn't be able to use SOL_EXCEPTIONS_SAFE_PROPAGATION https://sol2.readthedocs.io/en/latest/exceptions.html#lua-and-luajit-c-exception-full-interoperability - meaning we'd need to rethink our error handling

An easy temporary fix would be to disable plugin support by setting the CHATTERINO_PLUGINS CMake option to Off

This is the solution I would recommend for now. Would it affect anything major on the user side?

The users of the Fedora package would not be able to use our plugin system. I don't think this is problematic - it's in alpha right now as we continue to develop it. We don't have any plugins that any sizeable portion of Chatterino users rely on.

@LecrisUT
Copy link

We rely on the SOL_EXCEPTIONS_SAFE_PROPAGATION flag that gets enabled automatically when we enable SOL_USING_CXX_LUA https://sol2.readthedocs.io/en/latest/safety.html#linker-config

Fair concern there. If a simple catch-all is not possible, it seems it would be more useful to consider enabling CXX support in the lua package itself. Will probably need some help from sol2 devs on that.

This is the solution I would recommend for now. Would it affect anything major on the user side?

The users of the Fedora package would not be able to use our plugin system. I don't think this is problematic - it's in alpha right now as we continue to develop it. We don't have any plugins that any sizeable portion of Chatterino users rely on.

Ah, good to know. We would have to have a separate discussion about that. The common topics there are:

  • Are there any crucial plugins, and how would we provide plugins as system packages
  • Making sure the plugin support works in read-only builds, i.e. chatterino is installed in read-only /usr but it can check and install writable locations like $HOME/.local

We would definitely have to disable it for now pending those discussions.

@lnicola
Copy link

lnicola commented Sep 26, 2025

it would be more useful to consider enabling CXX support in the lua package itself

In the Fedora package, you mean? Not sure that's possible, since it's currently a C library and doing that would turn it into a C++ library. Unless it's built twice.

@LecrisUT
Copy link

it would be more useful to consider enabling CXX support in the lua package itself

In the Fedora package, you mean? Not sure that's possible, since it's currently a C library and doing that would turn it into a C++ library. Unless it's built twice.

As long as appropriate extern "C" are present, the users should not see a difference. But this is something that lua and sol2 maintainers/devs are better equipped at figuring the pot holes

@Mm2PL
Copy link
Collaborator

Mm2PL commented Sep 26, 2025 via email

@Nerixyz
Copy link
Contributor

Nerixyz commented Sep 26, 2025

As long as appropriate extern "C" are present, the users should not see a difference.

Chatterino requires that Lua errors are C++ exceptions, because we rely on the stack unwinding1. If Lua is compiled as C or with longjmp in C++, that won't work.

You could probably compile Lua as both C and C++ and merge these, because the intersection of the symbols should be empty. I doubt Fedora would accept this.

Footnotes

  1. 🤓 Yes, on MSVC, longjmp uses the same unwinding as exceptions. But not on Linux.

@LecrisUT
Copy link

You could probably compile Lua as both C and C++ and merge these, because the intersection of the symbols should be empty. I doubt Fedora would accept this.

This is what we were referring to about the discussion with @lnicola. I.e. to change the build of Fedora lua to be CXX:

  • Users of the lua scripts should not see any difference
  • Users of the C headers should not have any difference (maybe other than a massrebuild)
  • Users of the CXX headers are non-existent in Fedora currently

Looking at the current maintainers of lua, I actually think we will have a good chance, but we need to do:

  • All of the legwork making a PR to do the transition. Help on this front and/or contacts who could help do any debugging would be most appreciated
  • Change proposal paperwork, announcing the intent, gathering user feedback etc.

@Nerixyz
Copy link
Contributor

Nerixyz commented Sep 26, 2025

Thought about this on the train again: When combining C and C++, when building Lua as C++ specifically, the package would depend on the C++ runtime libraries. Of course, for C++, that's needed, but might be unwanted for C.

@lnicola
Copy link

lnicola commented Sep 26, 2025

I think Fedora would need to package two versions of Lua, one built as C and one as C++. They have different ABIs, so you can't switch from C to C++ and still use it in C apps.

@solomoncyj solomoncyj force-pushed the master branch 2 times, most recently from 696170d to eab7e2e Compare October 7, 2025 01:51
@solomoncyj solomoncyj force-pushed the master branch 2 times, most recently from e3f66b4 to 4ea1a35 Compare November 17, 2025 10:05
@solomoncyj
Copy link
Contributor Author

IT BUILDS!

target_compile_definitions(Sol2 INTERFACE
SOL_ALL_SAFETIES_ON=1
SOL_USING_CXX_LUA=1
SOL_USING_CXX_LUA=0
Copy link

@LecrisUT LecrisUT Nov 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This likely needs to be conditional based on what lua version we detect. But evidently there is some non_trivial source chaanges needed as well based om the test failures that bult lua from scratch (although that one should still be building the cxx version: https://github.com/Chatterino/chatterino2/blob/115428d7f475c75c0ae6c211f0db4c81004ce49b/lib/lua/CMakeLists.txt)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants