On Sun, Sep 04, 2005 at 06:10:13PM +0400, Dmitry V. Levin wrote: > > На всякий случай ещё раз кратко фиксирую, "что нужно делать". > На всякий случай напоминаю, что пока upstream не прозрел, это нужно делать > перед упаковкой каждой новой версии. Нарисовал скрипт, который вопроизводит последовательность действий. $ rpmsymver /var/cache/apt/archives/libgtk+2_2.6.7-alt1_i586.rpm /var/cache/apt/archives/libgtk+2_2.8.3-alt1_i586.rpm --- libgtk+2_2.6.7-alt1_i586.rpm/usr/lib/libgdk-x11-2.0.so.0.sym 2005-09-05 00:53:01 +0400 +++ libgtk+2_2.8.3-alt1_i586.rpm/usr/lib/libgdk-x11-2.0.so.0.sym 2005-09-05 00:53:01 +0400 @@ -12,2 +12,7 @@ T gdk_byte_order_get_type +T gdk_cairo_create +T gdk_cairo_rectangle +T gdk_cairo_region +T gdk_cairo_set_source_color +T gdk_cairo_set_source_pixbuf T gdk_cap_style_get_type @@ -45,2 +50,3 @@ T gdk_cursor_get_display +T gdk_cursor_get_image T gdk_cursor_get_type @@ -48,2 +54,3 @@ T gdk_cursor_new_for_display +T gdk_cursor_new_from_name T gdk_cursor_new_from_pixbuf @@ -104,2 +111,3 @@ T gdk_display_sync +T gdk_display_warp_pointer T gdk_drag_abort @@ -139,3 +147,2 @@ T gdk_draw_rectangle -T gdk_draw_rectangle_alpha_libgtk_only T gdk_draw_rgb_32_image @@ -331,2 +338,3 @@ T gdk_pixmap_get_type +T gdk_pixmap_impl_x11_get_type T gdk_pixmap_lookup @@ -387,2 +395,3 @@ T gdk_screen_get_display +T gdk_screen_get_font_options_libgtk_only T gdk_screen_get_height @@ -394,4 +403,7 @@ T gdk_screen_get_number +T gdk_screen_get_resolution_libgtk_only T gdk_screen_get_rgb_colormap T gdk_screen_get_rgb_visual +T gdk_screen_get_rgba_colormap +T gdk_screen_get_rgba_visual T gdk_screen_get_root_window @@ -409,2 +421,4 @@ T gdk_screen_set_default_colormap +T gdk_screen_set_font_options_libgtk_only +T gdk_screen_set_resolution_libgtk_only T gdk_screen_width @@ -529,2 +543,3 @@ T gdk_window_move +T gdk_window_move_region T gdk_window_move_resize @@ -568,2 +583,3 @@ T gdk_window_set_type_hint +T gdk_window_set_urgency_hint T gdk_window_set_user_data @@ -591,5 +607,6 @@ T gdk_x11_cursor_get_xdisplay -T gdk_x11_display_get_user_time_libgtk_only +T gdk_x11_display_get_user_time T gdk_x11_display_get_xdisplay T gdk_x11_display_grab +T gdk_x11_display_set_cursor_theme T gdk_x11_display_ungrab @@ -622,2 +639,3 @@ T gdk_x11_visual_get_xvisual +T gdk_x11_window_move_to_current_desktop T gdk_x11_window_set_user_time --- libgtk+2_2.6.7-alt1_i586.rpm/usr/lib/libgdk_pixbuf-2.0.so.0.sym 2005-09-05 00:53:01 +0400 +++ libgtk+2_2.8.3-alt1_i586.rpm/usr/lib/libgdk_pixbuf-2.0.so.0.sym 2005-09-05 00:53:01 +0400 @@ -85,2 +85,6 @@ T gdk_pixbuf_set_option +T gdk_pixbuf_simple_anim_add_frame +T gdk_pixbuf_simple_anim_get_type +T gdk_pixbuf_simple_anim_iter_get_type +T gdk_pixbuf_simple_anim_new T gdk_pixbuf_unref --- libgtk+2_2.6.7-alt1_i586.rpm/usr/lib/libgtk-x11-2.0.so.0.sym 2005-09-05 00:53:01 +0400 +++ libgtk+2_2.8.3-alt1_i586.rpm/usr/lib/libgtk-x11-2.0.so.0.sym 2005-09-05 00:53:01 +0400 @@ -1,5 +1,3 @@ -B caches B gtk_debug_flags B gtk_text_attr_appearance_type -B n_caches D gtk_text_char_type @@ -32,2 +30,3 @@ T gtk_about_dialog_get_website_label +T gtk_about_dialog_get_wrap_license T gtk_about_dialog_new @@ -48,2 +47,3 @@ T gtk_about_dialog_set_website_label +T gtk_about_dialog_set_wrap_license T gtk_accel_flags_get_type @@ -102,2 +102,3 @@ T gtk_action_disconnect_proxy +T gtk_action_get_accel_closure T gtk_action_get_accel_path @@ -613,2 +614,3 @@ T gtk_dialog_get_has_separator +T gtk_dialog_get_response_for_widget T gtk_dialog_get_type @@ -642,2 +644,3 @@ T gtk_drag_set_icon_default +T gtk_drag_set_icon_name T gtk_drag_set_icon_pixbuf @@ -652,2 +655,3 @@ T gtk_drag_source_set_icon +T gtk_drag_source_set_icon_name T gtk_drag_source_set_icon_pixbuf @@ -704,2 +708,4 @@ T gtk_entry_completion_get_popup_completion +T gtk_entry_completion_get_popup_set_width +T gtk_entry_completion_get_popup_single_match T gtk_entry_completion_get_text_column @@ -715,2 +721,4 @@ T gtk_entry_completion_set_popup_completion +T gtk_entry_completion_set_popup_set_width +T gtk_entry_completion_set_popup_single_match T gtk_entry_completion_set_text_column @@ -782,2 +790,3 @@ T gtk_file_chooser_button_set_width_chars +T gtk_file_chooser_confirmation_get_type T gtk_file_chooser_dialog_get_type @@ -790,2 +799,3 @@ T gtk_file_chooser_get_current_folder_uri +T gtk_file_chooser_get_do_overwrite_confirmation T gtk_file_chooser_get_extra_widget @@ -818,2 +828,3 @@ T gtk_file_chooser_set_current_name +T gtk_file_chooser_set_do_overwrite_confirmation T gtk_file_chooser_set_extra_widget @@ -883,2 +894,3 @@ T gtk_file_system_filename_to_path +T gtk_file_system_get_bookmark_label T gtk_file_system_get_folder @@ -897,2 +909,3 @@ T gtk_file_system_render_icon +T gtk_file_system_set_bookmark_label T gtk_file_system_unix_get_type @@ -1076,4 +1089,12 @@ T gtk_icon_theme_set_search_path +T gtk_icon_view_create_drag_icon +T gtk_icon_view_drop_position_get_type +T gtk_icon_view_enable_model_drag_dest +T gtk_icon_view_enable_model_drag_source T gtk_icon_view_get_column_spacing T gtk_icon_view_get_columns +T gtk_icon_view_get_cursor +T gtk_icon_view_get_dest_item_at_pos +T gtk_icon_view_get_drag_dest_item +T gtk_icon_view_get_item_at_pos T gtk_icon_view_get_item_width @@ -1085,2 +1106,3 @@ T gtk_icon_view_get_pixbuf_column +T gtk_icon_view_get_reorderable T gtk_icon_view_get_row_spacing @@ -1091,2 +1113,3 @@ T gtk_icon_view_get_type +T gtk_icon_view_get_visible_range T gtk_icon_view_item_activated @@ -1095,2 +1118,3 @@ T gtk_icon_view_path_is_selected +T gtk_icon_view_scroll_to_path T gtk_icon_view_select_all @@ -1100,2 +1124,4 @@ T gtk_icon_view_set_columns +T gtk_icon_view_set_cursor +T gtk_icon_view_set_drag_dest_item T gtk_icon_view_set_item_width @@ -1106,2 +1132,3 @@ T gtk_icon_view_set_pixbuf_column +T gtk_icon_view_set_reorderable T gtk_icon_view_set_row_spacing @@ -1112,2 +1139,4 @@ T gtk_icon_view_unselect_path +T gtk_icon_view_unset_model_drag_dest +T gtk_icon_view_unset_model_drag_source T gtk_identifier_get_type @@ -1138,2 +1167,3 @@ T gtk_im_status_style_get_type +T gtk_image_clear T gtk_image_get @@ -1361,4 +1391,8 @@ T gtk_menu_attach_to_widget +T gtk_menu_bar_get_child_pack_direction +T gtk_menu_bar_get_pack_direction T gtk_menu_bar_get_type T gtk_menu_bar_new +T gtk_menu_bar_set_child_pack_direction +T gtk_menu_bar_set_pack_direction T gtk_menu_detach @@ -1404,2 +1438,3 @@ T gtk_menu_shell_deselect +T gtk_menu_shell_get_take_focus T gtk_menu_shell_get_type @@ -1409,2 +1444,3 @@ T gtk_menu_shell_select_item +T gtk_menu_shell_set_take_focus T gtk_menu_tool_button_get_menu @@ -1506,2 +1542,3 @@ T gtk_orientation_get_type +T gtk_pack_direction_get_type T gtk_pack_type_get_type @@ -1718,2 +1755,3 @@ T gtk_scrolled_window_get_hadjustment +T gtk_scrolled_window_get_hscrollbar T gtk_scrolled_window_get_placement @@ -1723,2 +1761,3 @@ T gtk_scrolled_window_get_vadjustment +T gtk_scrolled_window_get_vscrollbar T gtk_scrolled_window_new @@ -1784,2 +1823,3 @@ T gtk_size_group_add_widget +T gtk_size_group_get_ignore_hidden T gtk_size_group_get_mode @@ -1789,2 +1829,3 @@ T gtk_size_group_remove_widget +T gtk_size_group_set_ignore_hidden T gtk_size_group_set_mode @@ -1838,2 +1879,3 @@ T gtk_stock_lookup +T gtk_stock_set_translate_func T gtk_style_apply_default_background @@ -1975,2 +2017,4 @@ T gtk_text_iter_backward_visible_cursor_positions +T gtk_text_iter_backward_visible_line +T gtk_text_iter_backward_visible_lines T gtk_text_iter_backward_visible_word_start @@ -2004,2 +2048,4 @@ T gtk_text_iter_forward_visible_cursor_positions +T gtk_text_iter_forward_visible_line +T gtk_text_iter_forward_visible_lines T gtk_text_iter_forward_visible_word_end @@ -2213,2 +2259,3 @@ T gtk_toggle_tool_button_set_active +T gtk_tool_button_get_icon_name T gtk_tool_button_get_icon_widget @@ -2221,2 +2268,3 @@ T gtk_tool_button_new_from_stock +T gtk_tool_button_set_icon_name T gtk_tool_button_set_icon_widget @@ -2396,2 +2444,3 @@ T gtk_tree_row_reference_free +T gtk_tree_row_reference_get_model T gtk_tree_row_reference_get_path @@ -2494,2 +2543,3 @@ T gtk_tree_view_column_pack_start +T gtk_tree_view_column_queue_resize T gtk_tree_view_column_set_alignment @@ -2546,2 +2596,3 @@ T gtk_tree_view_get_vadjustment +T gtk_tree_view_get_visible_range T gtk_tree_view_get_visible_rect @@ -2809,2 +2860,3 @@ T gtk_window_get_type_hint +T gtk_window_get_urgency_hint T gtk_window_group_add_window @@ -2824,2 +2876,3 @@ T gtk_window_present +T gtk_window_present_with_time T gtk_window_propagate_key_event @@ -2864,2 +2917,3 @@ T gtk_window_set_type_hint +T gtk_window_set_urgency_hint T gtk_window_set_wmclass $ Из этого видно, что ABI у библиотек меняется довольно сильно (к счастью, совместимым образом; то есть только новые функции добавляются). Удалилось и добавилось несколько *_libgtk_only функций. По-видимому, все эти функции нужно повесить на какой-нибудь PRIVATE интерфейс. Или вообще не экспортировать (с этим ещё надо разбираться). Вообще, если это делать, то нужно делать для всех системных библиотек (ну, "базовых" библиотек, которые широко используются). К сожалению, сейчас у нас как бы согласия нет -- есть два возражения (vsu и mhz). Если после рассмотрения вопроса по существу возражения останутся, тогда не знаю что делать. PS: недавно читал. Избранные места из истории разногласий в проекте XFree86: http://www.xfree86.org/pipermail/forum/2003-March/001997.html http://www.xfree86.org/pipermail/forum/2003-March/002165.html http://www.xfree86.org/pipermail/forum/2003-April/003016.html