From 205835e4a771a166926f733b8b79b981e1d29115 Mon Sep 17 00:00:00 2001 From: Matthew Kosarek Date: Thu, 25 Apr 2024 11:02:10 -0400 Subject: [PATCH 1/6] Applications on the remote desktop can be run on the client --- .github/workflows/symbols-check.yml | 3 +- debian/control | 16 + debian/libmircommon-internal-dev.install | 3 + src/common/CMakeLists.txt | 51 ++- src/common/mircommon-internal.pc.in | 8 + src/common/symbols.map | 388 +++++++++++++------ tools/symbols_map_generator/main.py | 3 +- tools/symbols_map_generator/requirements.txt | 1 + tools/symbols_map_generator/run.sh | 7 + 9 files changed, 361 insertions(+), 119 deletions(-) create mode 100644 debian/libmircommon-internal-dev.install create mode 100644 src/common/mircommon-internal.pc.in create mode 100644 tools/symbols_map_generator/requirements.txt create mode 100755 tools/symbols_map_generator/run.sh diff --git a/.github/workflows/symbols-check.yml b/.github/workflows/symbols-check.yml index f36090d6b6e..b0639ca33e8 100644 --- a/.github/workflows/symbols-check.yml +++ b/.github/workflows/symbols-check.yml @@ -42,4 +42,5 @@ jobs: cmake --build build --target check-miral-symbols-map || RET=$? cmake --build build --target check-miroil-symbols-map || RET=$? cmake --build build --target check-mirserver-symbols-map || RET=$? - exit $RET \ No newline at end of file + cmake --build build --target check-mircommon-symbols-map || RET=$? + exit $RET diff --git a/debian/control b/debian/control index b5a66acec71..ee19c2a2202 100644 --- a/debian/control +++ b/debian/control @@ -119,6 +119,22 @@ Description: Display server for Ubuntu - development headers . Contains header files required for server and/or client development. +Package: libmircommon-internal-dev +Section: libdevel +Architecture: linux-any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: libmircommon10 (= ${binary:Version}), + libmircommon-dev (= ${binary:Version}), + libxkbcommon-dev, + ${misc:Depends}, +Description: Display server for Ubuntu - development headers + Mir is a display server running on linux systems, with a focus on efficiency, + robust operation and a well-defined driver model. + . + This package contains internal headers with no stability guarantee, for servers + that wish to use functionality for which no public API exists yet. + Package: libmirplatform-dev Section: libdevel Architecture: linux-any diff --git a/debian/libmircommon-internal-dev.install b/debian/libmircommon-internal-dev.install new file mode 100644 index 00000000000..034b1a10138 --- /dev/null +++ b/debian/libmircommon-internal-dev.install @@ -0,0 +1,3 @@ +usr/include/mircommon +usr/lib/*/libmircommon.so +usr/lib/*/pkgconfig/mircommon.pc diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 8a4b5275968..bd440f25bed 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -94,12 +94,53 @@ install( ) install( - DIRECTORY ${CMAKE_SOURCE_DIR}/include/common/mir_toolkit - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mircommon" + DIRECTORY ${CMAKE_SOURCE_DIR}/src/include/common/mir + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mircommon-internal" +) + +install( + DIRECTORY ${CMAKE_SOURCE_DIR}/include/common/mir_toolkit + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mircommon" ) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mircommon.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/mircommon.pc - @ONLY + ${CMAKE_CURRENT_BINARY_DIR}/mircommon.pc + @ONLY +) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mircommon-internal.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/mircommon-internal.pc + @ONLY ) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mircommon.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/mircommon.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig +) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/mircommon-internal.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig +) + +add_custom_target( + generate-mircommon-symbols-map + COMMAND ${PROJECT_SOURCE_DIR}/tools/symbols_map_generator/main.py + --library-name mir_common + --version ${MIR_VERSION_MAJOR}.${MIR_VERSION_MINOR} + --symbols-map-path="${CMAKE_CURRENT_SOURCE_DIR}/symbols.map" + --external-headers-directory="${PROJECT_SOURCE_DIR}/include/common" + --internal-headers-directory="${PROJECT_SOURCE_DIR}/src/include/common" + --include-dirs="$,:>" + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") + +add_custom_target( + check-mircommon-symbols-map + COMMAND ${PROJECT_SOURCE_DIR}/tools/symbols_map_generator/main.py + --library-name mir_common + --version ${MIR_VERSION_MAJOR}.${MIR_VERSION_MINOR} + --symbols-map-path="${CMAKE_CURRENT_SOURCE_DIR}/symbols.map" + --external-headers-directory="${PROJECT_SOURCE_DIR}/include/common" + --internal-headers-directory="${PROJECT_SOURCE_DIR}/src/include/common" + --include-dirs="$,:>" + --diff + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") diff --git a/src/common/mircommon-internal.pc.in b/src/common/mircommon-internal.pc.in new file mode 100644 index 00000000000..04f2274a083 --- /dev/null +++ b/src/common/mircommon-internal.pc.in @@ -0,0 +1,8 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +includedir=@PKGCONFIG_INCLUDEDIR@/mircommon-internal + +Name: mircommon-internal +Description: Mir server internal headers +Version: @MIR_VERSION@ +Libs: -L${libdir} -lmircommon +Cflags: -I${includedir} diff --git a/src/common/symbols.map b/src/common/symbols.map index d674a6fcacd..49fd063ba26 100644 --- a/src/common/symbols.map +++ b/src/common/symbols.map @@ -1,5 +1,5 @@ MIR_COMMON_2.17 { - global: +global: mir_arrow_cursor_name; mir_busy_cursor_name; mir_caret_cursor_name; @@ -35,17 +35,18 @@ MIR_COMMON_2.17 { mir_input_event_get_wayland_timestamp; mir_keyboard_event_action; mir_keyboard_event_input_event; - mir_keyboard_event_keysym; mir_keyboard_event_key_text; + mir_keyboard_event_keysym; mir_keyboard_event_modifiers; mir_keyboard_event_scan_code; mir_omnidirectional_resize_cursor_name; mir_open_hand_cursor_name; mir_pointer_event_action; mir_pointer_event_axis_source; + mir_pointer_event_axis_stop; mir_pointer_event_axis_value; - mir_pointer_event_buttons; mir_pointer_event_button_state; + mir_pointer_event_buttons; mir_pointer_event_input_event; mir_pointer_event_modifiers; mir_pointing_hand_cursor_name; @@ -60,36 +61,8 @@ MIR_COMMON_2.17 { mir_vsplit_resize_cursor_name; mir_window_event_get_attribute; mir_window_event_get_attribute_value; - mir_pointer_event_axis_stop; extern "C++" { - mir::events::add_touch*; - mir::events::clone_event*; - mir::events::make_input_configure_event*; - mir::events::make_key_event*; - mir::events::make_keymap_event*; - mir::events::make_pointer_axis_discrete_scroll_event*; - mir::events::make_pointer_axis_event*; - mir::events::make_pointer_event*; - mir::events::make_prompt_session_state_event*; - mir::events::make_start_drag_and_drop_event*; - mir::events::make_surface_orientation_event*; - mir::events::make_touch_event*; - mir::events::make_window_close_event*; - mir::events::make_window_configure_event*; - mir::events::make_window_output_event*; - mir::events::make_window_placement_event*; - mir::events::make_window_resize_event*; - mir::events::scale_positions*; - mir::events::set_button_state*; - mir::events::set_cursor_position*; - mir::events::set_drag_and_drop_handle*; - mir::events::set_window_id*; - mir::events::transform_positions*; - mir::input::receiver::XKBMapper::XKBMapper*; - mir::input::receiver::XKBMapper::?XKBMapper*; - mir::operator*; - vtable?for?mir::input::receiver::XKBMapper; ?MirCloseWindowEvent*; ?MirKeyboardEvent*; ?MirPointerEvent*; @@ -179,24 +152,27 @@ MIR_COMMON_2.17 { MirKeyboardConfig::?MirKeyboardConfig*; MirKeyboardConfig::MirKeyboardConfig*; MirKeyboardConfig::device_keymap*; + MirKeyboardConfig::device_keymap_shared*; MirKeyboardConfig::operator*; MirKeyboardEvent::MirKeyboardEvent*; MirKeyboardEvent::action*; + MirKeyboardEvent::keymap*; MirKeyboardEvent::keysym*; MirKeyboardEvent::modifiers*; MirKeyboardEvent::scan_code*; MirKeyboardEvent::set_action*; MirKeyboardEvent::set_device_id*; MirKeyboardEvent::set_event_time*; + MirKeyboardEvent::set_keymap*; MirKeyboardEvent::set_keysym*; MirKeyboardEvent::set_modifiers*; MirKeyboardEvent::set_scan_code*; MirKeyboardEvent::set_source_id*; MirKeyboardEvent::set_text*; + MirKeyboardEvent::set_xkb_modifiers*; MirKeyboardEvent::source_id*; MirKeyboardEvent::text*; - MirKeyboardEvent::keymap*; - MirKeyboardEvent::set_keymap*; + MirKeyboardEvent::xkb_modifiers*; MirKeyboardResyncEvent::MirKeyboardResyncEvent*; MirKeymapEvent::MirKeymapEvent*; MirKeymapEvent::buffer*; @@ -223,20 +199,31 @@ MIR_COMMON_2.17 { MirPointerConfig::vertical_scroll_scale*; MirPointerEvent::MirPointerEvent*; MirPointerEvent::action*; + MirPointerEvent::axis_source*; MirPointerEvent::buttons*; MirPointerEvent::dnd_handle*; MirPointerEvent::dx*; MirPointerEvent::dy*; + MirPointerEvent::h_scroll*; MirPointerEvent::hscroll*; + MirPointerEvent::local_position*; + MirPointerEvent::motion*; + MirPointerEvent::position*; MirPointerEvent::set_action*; MirPointerEvent::set_buttons*; MirPointerEvent::set_dnd_handle*; MirPointerEvent::set_dx*; MirPointerEvent::set_dy*; + MirPointerEvent::set_h_scroll*; MirPointerEvent::set_hscroll*; + MirPointerEvent::set_local_position*; + MirPointerEvent::set_motion*; + MirPointerEvent::set_position*; + MirPointerEvent::set_v_scroll*; MirPointerEvent::set_vscroll*; MirPointerEvent::set_x*; MirPointerEvent::set_y*; + MirPointerEvent::v_scroll*; MirPointerEvent::vscroll*; MirPointerEvent::x*; MirPointerEvent::y*; @@ -250,43 +237,20 @@ MIR_COMMON_2.17 { MirResizeEvent::set_width*; MirResizeEvent::surface_id*; MirResizeEvent::width*; - MirWindowEvent::MirWindowEvent*; - MirWindowEvent::attrib*; - MirWindowEvent::dnd_handle*; - MirWindowEvent::id*; - MirWindowEvent::set_attrib*; - MirWindowEvent::set_dnd_handle*; - MirWindowEvent::set_id*; - MirWindowEvent::set_value*; - MirWindowEvent::value*; - MirWindowOutputEvent::MirWindowOutputEvent*; - MirWindowOutputEvent::dpi*; - MirWindowOutputEvent::form_factor*; - MirWindowOutputEvent::output_id*; - MirWindowOutputEvent::refresh_rate*; - MirWindowOutputEvent::scale*; - MirWindowOutputEvent::set_dpi*; - MirWindowOutputEvent::set_form_factor*; - MirWindowOutputEvent::set_output_id*; - MirWindowOutputEvent::set_refresh_rate*; - MirWindowOutputEvent::set_scale*; - MirWindowOutputEvent::set_surface_id*; - MirWindowOutputEvent::surface_id*; - MirWindowPlacementEvent::MirWindowPlacementEvent*; - MirWindowPlacementEvent::id*; - MirWindowPlacementEvent::placement*; - MirWindowPlacementEvent::set_id*; - MirWindowPlacementEvent::set_placement*; MirTouchEvent::MirTouchEvent*; MirTouchEvent::action*; MirTouchEvent::id*; + MirTouchEvent::local_position*; MirTouchEvent::orientation*; MirTouchEvent::pointer_count*; + MirTouchEvent::position*; MirTouchEvent::pressure*; MirTouchEvent::set_action*; MirTouchEvent::set_id*; + MirTouchEvent::set_local_position*; MirTouchEvent::set_orientation*; MirTouchEvent::set_pointer_count*; + MirTouchEvent::set_position*; MirTouchEvent::set_pressure*; MirTouchEvent::set_tool_type*; MirTouchEvent::set_touch_major*; @@ -313,6 +277,34 @@ MIR_COMMON_2.17 { MirTouchscreenConfig::mapping_mode*; MirTouchscreenConfig::operator*; MirTouchscreenConfig::output_id*; + MirWindowEvent::MirWindowEvent*; + MirWindowEvent::attrib*; + MirWindowEvent::dnd_handle*; + MirWindowEvent::id*; + MirWindowEvent::set_attrib*; + MirWindowEvent::set_dnd_handle*; + MirWindowEvent::set_id*; + MirWindowEvent::set_value*; + MirWindowEvent::value*; + MirWindowOutputEvent::MirWindowOutputEvent*; + MirWindowOutputEvent::dpi*; + MirWindowOutputEvent::form_factor*; + MirWindowOutputEvent::output_id*; + MirWindowOutputEvent::refresh_rate*; + MirWindowOutputEvent::scale*; + MirWindowOutputEvent::set_dpi*; + MirWindowOutputEvent::set_form_factor*; + MirWindowOutputEvent::set_output_id*; + MirWindowOutputEvent::set_refresh_rate*; + MirWindowOutputEvent::set_scale*; + MirWindowOutputEvent::set_surface_id*; + MirWindowOutputEvent::surface_id*; + MirWindowPlacementEvent::MirWindowPlacementEvent*; + MirWindowPlacementEvent::id*; + MirWindowPlacementEvent::placement*; + MirWindowPlacementEvent::set_id*; + MirWindowPlacementEvent::set_placement*; + mir::Executor::?Executor*; mir::PosixRWMutex::?PosixRWMutex*; mir::PosixRWMutex::PosixRWMutex*; mir::PosixRWMutex::lock*; @@ -336,12 +328,16 @@ MIR_COMMON_2.17 { mir::SharedLibraryProberReport::?SharedLibraryProberReport*; mir::SharedLibraryProberReport::SharedLibraryProberReport*; mir::SharedLibraryProberReport::operator*; - mir::Signal::Signal*; mir::Signal::?Signal*; + mir::Signal::Signal*; mir::Signal::raise*; mir::Signal::wait*; mir::SignalBlocker::?SignalBlocker*; mir::SignalBlocker::SignalBlocker*; + mir::ThreadPoolExecutor::ThreadPoolExecutor*; + mir::ThreadPoolExecutor::quiesce*; + mir::ThreadPoolExecutor::set_unhandled_exception_handler*; + mir::ThreadPoolExecutor::spawn*; mir::detail::RefCountedLibrary::?RefCountedLibrary*; mir::detail::RefCountedLibrary::RefCountedLibrary*; mir::detail::RefCountedLibrary::operator*; @@ -372,25 +368,79 @@ MIR_COMMON_2.17 { mir::dispatch::ThreadedDispatcher::remove_thread*; mir::dispatch::epoll_to_fd_event*; mir::dispatch::fd_event_to_epoll*; + mir::event_type_to_string*; + mir::events::TouchContactV2::TouchContactV2*; + mir::events::TouchContactV2::operator*; + mir::events::add_touch*; + mir::events::clone_event*; + mir::events::make_input_configure_event*; + mir::events::make_key_event*; + mir::events::make_keymap_event*; + mir::events::make_pointer_axis_discrete_scroll_event*; + mir::events::make_pointer_axis_event*; + mir::events::make_pointer_axis_with_stop_event*; + mir::events::make_pointer_event*; + mir::events::make_prompt_session_state_event*; + mir::events::make_start_drag_and_drop_event*; + mir::events::make_surface_orientation_event*; + mir::events::make_touch_event*; + mir::events::make_window_close_event*; + mir::events::make_window_configure_event*; + mir::events::make_window_output_event*; + mir::events::make_window_placement_event*; + mir::events::make_window_resize_event*; + mir::events::map_positions*; + mir::events::scale_positions*; + mir::events::set_button_state*; + mir::events::set_cursor_position*; + mir::events::set_drag_and_drop_handle*; + mir::events::set_modifier*; + mir::events::set_window_id*; + mir::events::transform_positions*; mir::fd_reception_error::fd_reception_error*; mir::graphics::Edid::*; mir::graphics::NativeBuffer::?NativeBuffer*; mir::graphics::NativeBuffer::NativeBuffer*; mir::graphics::NativeBuffer::operator*; + mir::immediate_executor*; + mir::immediate_executor; + mir::input::BufferKeymap::BufferKeymap*; + mir::input::BufferKeymap::make_unique_xkb_keymap*; + mir::input::BufferKeymap::matches*; + mir::input::BufferKeymap::model*; + mir::input::Keymap::?Keymap*; mir::input::Keymap::Keymap*; + mir::input::ParameterKeymap::ParameterKeymap*; + mir::input::ParameterKeymap::default_layout*; + mir::input::ParameterKeymap::default_model*; + mir::input::ParameterKeymap::make_unique_xkb_keymap*; + mir::input::ParameterKeymap::matches*; + mir::input::ParameterKeymap::model*; + mir::input::ParameterKeymap::with_layout*; mir::input::deserialize_input_config*; + mir::input::mir_enable_enum_bit_operators*; + mir::input::receiver::XKBMapper::?XKBMapper*; + mir::input::receiver::XKBMapper::XKBMapper*; mir::input::serialize_input_config*; mir::libraries_for_path*; + mir::linearising_executor*; + mir::linearising_executor; mir::log*; mir::logging::DumbConsoleLogger::log*; + mir::logging::FileLogger::FileLogger*; + mir::logging::FileLogger::log*; mir::logging::Logger::?Logger*; mir::logging::Logger::Logger*; mir::logging::Logger::log*; mir::logging::Logger::operator*; + mir::logging::MultiLogger::MultiLogger*; + mir::logging::MultiLogger::log*; + mir::logging::format_message*; mir::logging::input_timestamp*; mir::logging::log*; mir::logging::set_logger*; mir::logv*; + mir::operator*; mir::output_type_name*; mir::receive_data*; mir::report::lttng::TracepointProvider::?TracepointProvider*; @@ -401,9 +451,15 @@ MIR_COMMON_2.17 { mir::socket_disconnected_error*; mir::socket_error::socket_error*; mir::socket_error_is_transient*; + mir::thread_pool_executor*; + mir::thread_pool_executor; + mir::time::PosixTimestamp::PosixTimestamp*; + mir::time::PosixTimestamp::now*; mir::time::SteadyClock::min_wait_until*; mir::time::SteadyClock::now*; + non-virtual?thunk?to?mir::Executor::?Executor*; non-virtual?thunk?to?mir::SharedLibraryProberReport::?SharedLibraryProberReport*; + non-virtual?thunk?to?mir::ThreadPoolExecutor::spawn*; non-virtual?thunk?to?mir::dispatch::ActionQueue::dispatch*; non-virtual?thunk?to?mir::dispatch::ActionQueue::relevant_events*; non-virtual?thunk?to?mir::dispatch::ActionQueue::watch_fd*; @@ -416,20 +472,37 @@ MIR_COMMON_2.17 { non-virtual?thunk?to?mir::dispatch::ReadableFd::relevant_events*; non-virtual?thunk?to?mir::dispatch::ReadableFd::watch_fd*; non-virtual?thunk?to?mir::graphics::NativeBuffer::?NativeBuffer*; + non-virtual?thunk?to?mir::input::BufferKeymap::make_unique_xkb_keymap*; + non-virtual?thunk?to?mir::input::BufferKeymap::matches*; + non-virtual?thunk?to?mir::input::BufferKeymap::model*; + non-virtual?thunk?to?mir::input::Keymap::?Keymap*; + non-virtual?thunk?to?mir::input::ParameterKeymap::make_unique_xkb_keymap*; + non-virtual?thunk?to?mir::input::ParameterKeymap::matches*; + non-virtual?thunk?to?mir::input::ParameterKeymap::model*; non-virtual?thunk?to?mir::logging::DumbConsoleLogger::log*; + non-virtual?thunk?to?mir::logging::FileLogger::log*; non-virtual?thunk?to?mir::logging::Logger::?Logger*; non-virtual?thunk?to?mir::logging::Logger::log*; + non-virtual?thunk?to?mir::logging::MultiLogger::log*; operator*; typeinfo?for?MirInputConfig; typeinfo?for?MirInputDevice; typeinfo?for?MirKeyboardConfig; + typeinfo?for?MirKeyboardEvent; typeinfo?for?MirPointerConfig; + typeinfo?for?MirPointerEvent; + typeinfo?for?MirTouchEvent; typeinfo?for?MirTouchpadConfig; typeinfo?for?MirTouchscreenConfig; + typeinfo?for?mir::DeleteCPtr; + typeinfo?for?mir::Executor; typeinfo?for?mir::IntOwnedFd; + typeinfo?for?mir::NonBlockingExecutor; typeinfo?for?mir::PosixRWMutex; typeinfo?for?mir::SharedLibrary; typeinfo?for?mir::SharedLibraryProberReport; + typeinfo?for?mir::Signal; + typeinfo?for?mir::ThreadPoolExecutor; typeinfo?for?mir::detail::RefCountedLibrary; typeinfo?for?mir::dispatch::ActionQueue; typeinfo?for?mir::dispatch::Dispatchable; @@ -438,11 +511,16 @@ MIR_COMMON_2.17 { typeinfo?for?mir::dispatch::ThreadedDispatcher; typeinfo?for?mir::events::ContactState; typeinfo?for?mir::events::InputDeviceState; + typeinfo?for?mir::events::TouchContactV2; typeinfo?for?mir::fd_reception_error; typeinfo?for?mir::graphics::NativeBuffer; + typeinfo?for?mir::input::BufferKeymap; typeinfo?for?mir::input::Keymap; + typeinfo?for?mir::input::ParameterKeymap; typeinfo?for?mir::logging::DumbConsoleLogger; + typeinfo?for?mir::logging::FileLogger; typeinfo?for?mir::logging::Logger; + typeinfo?for?mir::logging::MultiLogger; typeinfo?for?mir::logging::NullSharedLibraryProberReport; typeinfo?for?mir::logging::SharedLibraryProberReport; typeinfo?for?mir::socket_disconnected_error; @@ -453,10 +531,12 @@ MIR_COMMON_2.17 { vtable?for?MirKeyboardEvent; vtable?for?MirPointerEvent; vtable?for?MirTouchEvent; + vtable?for?mir::Executor; vtable?for?mir::IntOwnedFd; vtable?for?mir::PosixRWMutex; vtable?for?mir::SharedLibrary; vtable?for?mir::SharedLibraryProberReport; + vtable?for?mir::ThreadPoolExecutor; vtable?for?mir::detail::RefCountedLibrary; vtable?for?mir::dispatch::ActionQueue; vtable?for?mir::dispatch::Dispatchable; @@ -466,63 +546,147 @@ MIR_COMMON_2.17 { vtable?for?mir::events::ContactState; vtable?for?mir::events::InputDeviceState; vtable?for?mir::graphics::NativeBuffer; + vtable?for?mir::input::BufferKeymap; vtable?for?mir::input::Keymap; + vtable?for?mir::input::ParameterKeymap; + vtable?for?mir::input::receiver::XKBMapper; vtable?for?mir::logging::DumbConsoleLogger; + vtable?for?mir::logging::FileLogger; vtable?for?mir::logging::Logger; + vtable?for?mir::logging::MultiLogger; vtable?for?mir::logging::NullSharedLibraryProberReport; vtable?for?mir::time::Clock; vtable?for?mir::time::PosixTimestamp; vtable?for?mir::time::SteadyClock; - MirKeyboardConfig::device_keymap_shared*; - mir::input::ParameterKeymap::ParameterKeymap*; - mir::input::ParameterKeymap::make_unique_xkb_keymap*; - mir::input::ParameterKeymap::matches*; - mir::input::ParameterKeymap::with_layout*; - typeinfo?for?mir::input::ParameterKeymap; - vtable?for?mir::input::ParameterKeymap; - mir::input::BufferKeymap::BufferKeymap*; - mir::input::BufferKeymap::matches*; - typeinfo?for?mir::input::BufferKeymap; - vtable?for?mir::input::BufferKeymap; - mir::events::make_pointer_axis_with_stop_event*; - mir::linearising_executor; - mir::ThreadPoolExecutor::spawn*; - mir::ThreadPoolExecutor::set_unhandled_exception_handler*; - mir::ThreadPoolExecutor::quiesce*; - typeinfo?for?mir::ThreadPoolExecutor; - vtable?for?mir::ThreadPoolExecutor; - mir::thread_pool_executor; - mir::logging::format_message*; - mir::logging::FileLogger::log*; - mir::logging::MultiLogger::log*; - non-virtual?thunk?to?mir::logging::FileLogger::log*; - non-virtual?thunk?to?mir::logging::MultiLogger::log*; - typeinfo?for?mir::logging::FileLogger; - typeinfo?for?mir::logging::MultiLogger; - vtable?for?mir::logging::FileLogger; - vtable?for?mir::logging::MultiLogger; - mir::immediate_executor; - MirPointerEvent::position*; - MirPointerEvent::set_position*; - MirPointerEvent::motion*; - MirPointerEvent::set_motion*; - MirPointerEvent::h_scroll*; - MirPointerEvent::set_h_scroll*; - MirPointerEvent::v_scroll*; - MirPointerEvent::set_v_scroll*; - MirPointerEvent::axis_source*; - typeinfo?for?MirPointerEvent; - typeinfo?for?MirTouchEvent; - typeinfo?for?MirKeyboardEvent; - MirTouchEvent::set_position*; - MirTouchEvent::position*; - MirKeyboardEvent::xkb_modifiers*; - MirKeyboardEvent::set_xkb_modifiers*; - MirTouchEvent::set_local_position*; - MirTouchEvent::local_position*; - MirPointerEvent::set_local_position*; - MirPointerEvent::local_position*; - mir::events::map_positions*; }; - local: *; +local: *; }; + +MIR_COMMON_INTERNAL_2.17 { +global: + extern "C++" { + MirCloseWindowEvent::clone*; + MirEvent::?MirEvent*; + MirInputDeviceStateEvent::clone*; + MirInputEvent::MirInputEvent*; + MirKeyboardEvent::clone*; + MirKeyboardResyncEvent::clone*; + MirOrientationEvent::clone*; + MirPointerEvent::clone*; + MirPointerEvent::set_axis_source*; + MirPromptSessionEvent::clone*; + MirResizeEvent::clone*; + MirTouchEvent::clone*; + MirWindowEvent::clone*; + MirWindowOutputEvent::clone*; + MirWindowPlacementEvent::clone*; + mir::ClientVisibleError::ClientVisibleError*; + mir::RecursiveWriteLock::?RecursiveWriteLock*; + mir::RecursiveWriteLock::RecursiveWriteLock*; + mir::SignalBlocker::operator*; + mir::ThreadSafeList::add*; + mir::ThreadSafeList::clear*; + mir::ThreadSafeList::for_each*; + mir::ThreadSafeList::remove*; + mir::ThreadSafeList::remove_all*; + mir::graphics::Edid::Edid*; + mir::graphics::Edid::get_manufacturer*; + mir::graphics::Edid::get_monitor_name*; + mir::graphics::Edid::product_code*; + mir::input::KeyMapper::?KeyMapper*; + mir::input::KeyMapper::KeyMapper*; + mir::input::KeyMapper::operator*; + mir::input::make_unique_context*; + mir::input::receiver::XKBMapper::clear_all_keymaps*; + mir::input::receiver::XKBMapper::clear_keymap_for_device*; + mir::input::receiver::XKBMapper::device_modifiers*; + mir::input::receiver::XKBMapper::map_event*; + mir::input::receiver::XKBMapper::modifiers*; + mir::input::receiver::XKBMapper::operator*; + mir::input::receiver::XKBMapper::set_key_state*; + mir::input::receiver::XKBMapper::set_keymap_for_all_devices*; + mir::input::receiver::XKBMapper::set_keymap_for_device*; + mir::input::receiver::XKBMapper::xkb_modifiers*; + mir::logging::NullSharedLibraryProberReport::loading_failed*; + mir::logging::NullSharedLibraryProberReport::loading_library*; + mir::logging::NullSharedLibraryProberReport::probing_failed*; + mir::logging::NullSharedLibraryProberReport::probing_path*; + mir::logging::SharedLibraryProberReport::SharedLibraryProberReport*; + mir::logging::SharedLibraryProberReport::loading_failed*; + mir::logging::SharedLibraryProberReport::loading_library*; + mir::logging::SharedLibraryProberReport::probing_failed*; + mir::logging::SharedLibraryProberReport::probing_path*; + mir::time::Clock::?Clock*; + mir::time::Clock::Clock*; + mir::time::Clock::operator*; + non-virtual?thunk?to?MirCloseWindowEvent::clone*; + non-virtual?thunk?to?MirEvent::?MirEvent*; + non-virtual?thunk?to?MirInputDeviceStateEvent::clone*; + non-virtual?thunk?to?MirKeyboardEvent::clone*; + non-virtual?thunk?to?MirKeyboardResyncEvent::clone*; + non-virtual?thunk?to?MirOrientationEvent::clone*; + non-virtual?thunk?to?MirPointerEvent::clone*; + non-virtual?thunk?to?MirPromptSessionEvent::clone*; + non-virtual?thunk?to?MirResizeEvent::clone*; + non-virtual?thunk?to?MirTouchEvent::clone*; + non-virtual?thunk?to?MirWindowEvent::clone*; + non-virtual?thunk?to?MirWindowOutputEvent::clone*; + non-virtual?thunk?to?MirWindowPlacementEvent::clone*; + non-virtual?thunk?to?mir::input::KeyMapper::?KeyMapper*; + non-virtual?thunk?to?mir::input::receiver::XKBMapper::clear_all_keymaps*; + non-virtual?thunk?to?mir::input::receiver::XKBMapper::clear_keymap_for_device*; + non-virtual?thunk?to?mir::input::receiver::XKBMapper::device_modifiers*; + non-virtual?thunk?to?mir::input::receiver::XKBMapper::map_event*; + non-virtual?thunk?to?mir::input::receiver::XKBMapper::modifiers*; + non-virtual?thunk?to?mir::input::receiver::XKBMapper::set_key_state*; + non-virtual?thunk?to?mir::input::receiver::XKBMapper::set_keymap_for_all_devices*; + non-virtual?thunk?to?mir::input::receiver::XKBMapper::set_keymap_for_device*; + non-virtual?thunk?to?mir::input::receiver::XKBMapper::xkb_modifiers*; + non-virtual?thunk?to?mir::logging::NullSharedLibraryProberReport::loading_failed*; + non-virtual?thunk?to?mir::logging::NullSharedLibraryProberReport::loading_library*; + non-virtual?thunk?to?mir::logging::NullSharedLibraryProberReport::probing_failed*; + non-virtual?thunk?to?mir::logging::NullSharedLibraryProberReport::probing_path*; + non-virtual?thunk?to?mir::logging::SharedLibraryProberReport::loading_failed*; + non-virtual?thunk?to?mir::logging::SharedLibraryProberReport::loading_library*; + non-virtual?thunk?to?mir::logging::SharedLibraryProberReport::probing_failed*; + non-virtual?thunk?to?mir::logging::SharedLibraryProberReport::probing_path*; + non-virtual?thunk?to?mir::time::Clock::?Clock*; + non-virtual?thunk?to?mir::time::SteadyClock::min_wait_until*; + non-virtual?thunk?to?mir::time::SteadyClock::now*; + typeinfo?for?MirCloseWindowEvent; + typeinfo?for?MirEvent; + typeinfo?for?MirInputDeviceStateEvent; + typeinfo?for?MirInputEvent; + typeinfo?for?MirKeyboardResyncEvent; + typeinfo?for?MirOrientationEvent; + typeinfo?for?MirPromptSessionEvent; + typeinfo?for?MirResizeEvent; + typeinfo?for?MirWindowEvent; + typeinfo?for?MirWindowOutputEvent; + typeinfo?for?MirWindowPlacementEvent; + typeinfo?for?MirXkbModifiers; + typeinfo?for?mir::ClientVisibleError; + typeinfo?for?mir::RecursiveReadLock; + typeinfo?for?mir::RecursiveReadWriteMutex; + typeinfo?for?mir::RecursiveWriteLock; + typeinfo?for?mir::SignalBlocker; + typeinfo?for?mir::graphics::Edid; + typeinfo?for?mir::input::KeyMapper; + typeinfo?for?mir::input::receiver::XKBMapper; + typeinfo?for?mir::report::lttng::TracepointProvider; + typeinfo?for?mir::time::Clock; + vtable?for?MirEvent; + vtable?for?MirInputDeviceStateEvent; + vtable?for?MirKeyboardResyncEvent; + vtable?for?MirOrientationEvent; + vtable?for?MirPromptSessionEvent; + vtable?for?MirResizeEvent; + vtable?for?MirWindowEvent; + vtable?for?MirWindowOutputEvent; + vtable?for?MirWindowPlacementEvent; + vtable?for?mir::ClientVisibleError; + vtable?for?mir::input::KeyMapper; + vtable?for?mir::logging::SharedLibraryProberReport; + }; +}; + diff --git a/tools/symbols_map_generator/main.py b/tools/symbols_map_generator/main.py index b5c048eff05..cf84ac71651 100755 --- a/tools/symbols_map_generator/main.py +++ b/tools/symbols_map_generator/main.py @@ -205,7 +205,8 @@ def add_internal(s: str): def search_class_hierarchy_for_virtual_thunk(derived: clang.cindex.Cursor): assert (derived.kind == clang.cindex.CursorKind.CLASS_DECL or derived.kind == clang.cindex.CursorKind.STRUCT_DECL - or derived.kind == clang.cindex.CursorKind.CLASS_TEMPLATE) + or derived.kind == clang.cindex.CursorKind.CLASS_TEMPLATE + or derived.kind == clang.cindex.CursorKind.TYPEDEF_DECL) # Find the base classes for the derived class base_classes: list[clang.cindex.Cursor] = [] diff --git a/tools/symbols_map_generator/requirements.txt b/tools/symbols_map_generator/requirements.txt new file mode 100644 index 00000000000..add49efad7f --- /dev/null +++ b/tools/symbols_map_generator/requirements.txt @@ -0,0 +1 @@ +libclang diff --git a/tools/symbols_map_generator/run.sh b/tools/symbols_map_generator/run.sh new file mode 100755 index 00000000000..5fdd1ee4df7 --- /dev/null +++ b/tools/symbols_map_generator/run.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +cd "$(dirname "$0")" +rm -rf venv +python3 -m venv venv +source venv/bin/activate +pip install -r ./requirements.txt +./main.py "$@" From 2178b6f091a26cd221d3b926fca335761e7b06bc Mon Sep 17 00:00:00 2001 From: Matthew Kosarek Date: Thu, 25 Apr 2024 11:44:07 -0400 Subject: [PATCH 2/6] Bumping abi version to 11 --- debian/control | 6 +++--- debian/libmircommon10.install | 1 - debian/libmircommon11.install | 1 + src/common/CMakeLists.txt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 debian/libmircommon10.install create mode 100644 debian/libmircommon11.install diff --git a/debian/control b/debian/control index ee19c2a2202..ddb087a0d88 100644 --- a/debian/control +++ b/debian/control @@ -107,7 +107,7 @@ Section: libdevel Architecture: linux-any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} -Depends: libmircommon10 (= ${binary:Version}), +Depends: libmircommon11 (= ${binary:Version}), libmircore-dev (= ${binary:Version}), libxkbcommon-dev, ${misc:Depends}, @@ -124,7 +124,7 @@ Section: libdevel Architecture: linux-any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} -Depends: libmircommon10 (= ${binary:Version}), +Depends: libmircommon11 (= ${binary:Version}), libmircommon-dev (= ${binary:Version}), libxkbcommon-dev, ${misc:Depends}, @@ -269,7 +269,7 @@ Description: Display server for Ubuntu - shared library . Contains the shared libraries required for the Mir server and client. -Package: libmircommon10 +Package: libmircommon11 Section: libs Architecture: linux-any Multi-Arch: same diff --git a/debian/libmircommon10.install b/debian/libmircommon10.install deleted file mode 100644 index 5233fdfb457..00000000000 --- a/debian/libmircommon10.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*/libmircommon.so.10 diff --git a/debian/libmircommon11.install b/debian/libmircommon11.install new file mode 100644 index 00000000000..e0941c62dc5 --- /dev/null +++ b/debian/libmircommon11.install @@ -0,0 +1 @@ +usr/lib/*/libmircommon.so.11 diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index bd440f25bed..45390f52706 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -44,7 +44,7 @@ set( PARENT_SCOPE) # TODO we need a place to manage ABI and related versioning but use this as placeholder -set(MIRCOMMON_ABI 10) +set(MIRCOMMON_ABI 11) set(symbol_map ${CMAKE_CURRENT_SOURCE_DIR}/symbols.map) add_library(mircommon SHARED From 351b6091f9bc16c92317927fbd3ff6db5afca0e8 Mon Sep 17 00:00:00 2001 From: Matthew Kosarek Date: Thu, 25 Apr 2024 13:38:25 -0400 Subject: [PATCH 3/6] Erroneously added some files --- tools/symbols_map_generator/requirements.txt | 1 - tools/symbols_map_generator/run.sh | 7 ------- 2 files changed, 8 deletions(-) delete mode 100644 tools/symbols_map_generator/requirements.txt delete mode 100755 tools/symbols_map_generator/run.sh diff --git a/tools/symbols_map_generator/requirements.txt b/tools/symbols_map_generator/requirements.txt deleted file mode 100644 index add49efad7f..00000000000 --- a/tools/symbols_map_generator/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -libclang diff --git a/tools/symbols_map_generator/run.sh b/tools/symbols_map_generator/run.sh deleted file mode 100755 index 5fdd1ee4df7..00000000000 --- a/tools/symbols_map_generator/run.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -cd "$(dirname "$0")" -rm -rf venv -python3 -m venv venv -source venv/bin/activate -pip install -r ./requirements.txt -./main.py "$@" From 345e0d661d627f6e91111105c95d0e6e6c27c020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sawicz?= Date: Fri, 26 Apr 2024 10:27:59 +0200 Subject: [PATCH 4/6] doc: fix discourse link --- doc/sphinx/reuse/links.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx/reuse/links.txt b/doc/sphinx/reuse/links.txt index 04ba956a64a..2ff95029ca7 100644 --- a/doc/sphinx/reuse/links.txt +++ b/doc/sphinx/reuse/links.txt @@ -1,6 +1,6 @@ .. _Canonical website: https://canonical.com/ .. _Code of conduct: https://ubuntu.com/community/ethos/code-of-conduct -.. _Get support: https://discourse.canonical.com/c/mir/15 +.. _Get support: https://discourse.ubuntu.com/c/mir/15 .. _Join our online chat: https://matrix.to/#/#mir-server:matrix.org .. _Contribute: how-to/getting_involved_in_mir From aa89ae789460ce505a2a8022e8623673a978f544 Mon Sep 17 00:00:00 2001 From: Matthew Kosarek Date: Fri, 26 Apr 2024 09:08:28 -0400 Subject: [PATCH 5/6] libmircommon11 -> libmircommon10 --- debian/control | 6 +++--- debian/libmircommon10.install | 1 + debian/libmircommon11.install | 1 - src/common/CMakeLists.txt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 debian/libmircommon10.install delete mode 100644 debian/libmircommon11.install diff --git a/debian/control b/debian/control index ddb087a0d88..ee19c2a2202 100644 --- a/debian/control +++ b/debian/control @@ -107,7 +107,7 @@ Section: libdevel Architecture: linux-any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} -Depends: libmircommon11 (= ${binary:Version}), +Depends: libmircommon10 (= ${binary:Version}), libmircore-dev (= ${binary:Version}), libxkbcommon-dev, ${misc:Depends}, @@ -124,7 +124,7 @@ Section: libdevel Architecture: linux-any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} -Depends: libmircommon11 (= ${binary:Version}), +Depends: libmircommon10 (= ${binary:Version}), libmircommon-dev (= ${binary:Version}), libxkbcommon-dev, ${misc:Depends}, @@ -269,7 +269,7 @@ Description: Display server for Ubuntu - shared library . Contains the shared libraries required for the Mir server and client. -Package: libmircommon11 +Package: libmircommon10 Section: libs Architecture: linux-any Multi-Arch: same diff --git a/debian/libmircommon10.install b/debian/libmircommon10.install new file mode 100644 index 00000000000..5233fdfb457 --- /dev/null +++ b/debian/libmircommon10.install @@ -0,0 +1 @@ +usr/lib/*/libmircommon.so.10 diff --git a/debian/libmircommon11.install b/debian/libmircommon11.install deleted file mode 100644 index e0941c62dc5..00000000000 --- a/debian/libmircommon11.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*/libmircommon.so.11 diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 45390f52706..bd440f25bed 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -44,7 +44,7 @@ set( PARENT_SCOPE) # TODO we need a place to manage ABI and related versioning but use this as placeholder -set(MIRCOMMON_ABI 11) +set(MIRCOMMON_ABI 10) set(symbol_map ${CMAKE_CURRENT_SOURCE_DIR}/symbols.map) add_library(mircommon SHARED From 015dff92ac2d2cc9a3961ef5775a6142c595536e Mon Sep 17 00:00:00 2001 From: Matthew Kosarek Date: Fri, 26 Apr 2024 10:22:17 -0400 Subject: [PATCH 6/6] bugfix: actually installing the right files --- debian/libmircommon-internal-dev.install | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/libmircommon-internal-dev.install b/debian/libmircommon-internal-dev.install index 034b1a10138..6427e7faced 100644 --- a/debian/libmircommon-internal-dev.install +++ b/debian/libmircommon-internal-dev.install @@ -1,3 +1,3 @@ -usr/include/mircommon +usr/include/mircommon-internal usr/lib/*/libmircommon.so -usr/lib/*/pkgconfig/mircommon.pc +usr/lib/*/pkgconfig/mircommon-internal.pc