* [devel] version script for libgtk+2
@ 2005-09-04 21:06 Alexey Tourbin
2005-09-04 21:30 ` Mikhail Zabaluev
` (2 more replies)
0 siblings, 3 replies; 15+ messages in thread
From: Alexey Tourbin @ 2005-09-04 21:06 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1.1: Type: text/plain, Size: 9886 bytes --]
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
[-- Attachment #1.2: rpmsymver --]
[-- Type: text/plain, Size: 1488 bytes --]
#!/bin/sh -e
export LC_ALL=C
[ $# = 2 ] || pod2usage --exit=2 "$0"
rpm1="$1" rpm2="$2"
dir1= dir2=
cleanup()
{
local rc=$?
trap - EXIT
rm -rf $dir1 $dir2
exit $rc
}
trap cleanup EXIT HUP INT QUIT PIPE TERM
dir1=`mktemp -d -t rpmsymver.XXXXXXXX`
dir2=`mktemp -d -t rpmsymver.XXXXXXXX`
rpm -qp --provides "$rpm1" >$dir1/provides
rpm -qp --provides "$rpm2" >$dir2/provides
awk '$1~/^lib.*[.]so[^(]*$/{print$1}' $dir1/provides |sort -u >$dir1/libraries
awk '$1~/^lib.*[.]so[^(]*$/{print$1}' $dir2/provides |sort -u >$dir2/libraries
workdir=$dir1
comm -12 $dir1/libraries $dir2/libraries >$workdir/common
[ -s $workdir/common ] || { echo "$rpm1: no common libraries with $rpm2" >&2; exit 0; }
rpm2cpio "$rpm1" |(cd $dir1; cpio -idmu --quiet)
rpm2cpio "$rpm2" |(cd $dir2; cpio -idmu --quiet)
while read -r lib; do
lib1="$(find $dir1 -name "$lib" |head -1)"
lib2="$(find $dir2 -name "$lib" |head -1)"
[ -f "$lib1" ] || { echo "lib=$lib lib1=$lib1" >&2; exit 1; }
[ -f "$lib2" ] || { echo "lib=$lib lib2=$lib2" >&2; exit 1; }
nm -D "$lib1" |awk 'NF==3{print$2,$3}' |sort -u >"$lib1".sym
nm -D "$lib2" |awk 'NF==3{print$2,$3}' |sort -u >"$lib2".sym
diff -U1 "$lib1".sym "$lib2".sym >$workdir/diff || [ $? = 1 ]
sed -e "s@$dir1@${rpm1##*/}@g" \
-e "s@$dir2@${rpm2##*/}@g" $workdir/diff
done <$workdir/common
: <<'__EOF__'
=head1 NAME
rpmsymver - compare symbol versioning
=head1 SYNOPSIS
B<rpmsymver> I<librpm-1.0-alt1.i586.rpm> I<librpm-2.0-alt1.i586.rpm>
=cut
__EOF__
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [devel] version script for libgtk+2
2005-09-04 21:06 [devel] version script for libgtk+2 Alexey Tourbin
@ 2005-09-04 21:30 ` Mikhail Zabaluev
2005-09-04 21:48 ` Dmitry V. Levin
2005-09-04 22:27 ` [devel] Re: version script for libgtk+2 Alexey Tourbin
2005-09-04 21:38 ` [devel] " Dmitry V. Levin
2005-09-09 4:24 ` [devel] " Alexey Tourbin
2 siblings, 2 replies; 15+ messages in thread
From: Mikhail Zabaluev @ 2005-09-04 21:30 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 921 bytes --]
В Пнд, 05/09/2005 в 01:06 +0400, Alexey Tourbin пишет:
> Из этого видно, что ABI у библиотек меняется довольно сильно (к счастью,
> совместимым образом; то есть только новые функции добавляются).
> Удалилось и добавилось несколько *_libgtk_only функций. По-видимому,
> все эти функции нужно повесить на какой-нибудь PRIVATE интерфейс. Или
> вообще не экспортировать (с этим ещё надо разбираться).
>
> Вообще, если это делать, то нужно делать для всех системных библиотек
> (ну, "базовых" библиотек, которые широко используются). К сожалению,
> сейчас у нас как бы согласия нет -- есть два возражения (vsu и mhz).
У меня еще такое возражение: неужели у нас образовалось столько
свободного времени и желания решать дополнительные проблемы, чтобы
бежать впереди апстрима? Кто-нибудь аргументировал выгоды и потери хотя
бы приблизительно?
Ой, что-то мне это напоминает эпопею с упромысливанием Python...
[-- Attachment #2: Эта часть сообщения подписана цифровой подписью --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [devel] version script for libgtk+2
2005-09-04 21:30 ` Mikhail Zabaluev
@ 2005-09-04 21:48 ` Dmitry V. Levin
2005-10-07 21:41 ` [devel] version script for libdb4.3 Dmitry V. Levin
2005-09-04 22:27 ` [devel] Re: version script for libgtk+2 Alexey Tourbin
1 sibling, 1 reply; 15+ messages in thread
From: Dmitry V. Levin @ 2005-09-04 21:48 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 1534 bytes --]
On Mon, Sep 05, 2005 at 01:30:37AM +0400, Mikhail Zabaluev wrote:
> В Пнд, 05/09/2005 в 01:06 +0400, Alexey Tourbin пишет:
> > Из этого видно, что ABI у библиотек меняется довольно сильно (к счастью,
> > совместимым образом; то есть только новые функции добавляются).
> > Удалилось и добавилось несколько *_libgtk_only функций. По-видимому,
> > все эти функции нужно повесить на какой-нибудь PRIVATE интерфейс. Или
> > вообще не экспортировать (с этим ещё надо разбираться).
> >
> > Вообще, если это делать, то нужно делать для всех системных библиотек
> > (ну, "базовых" библиотек, которые широко используются). К сожалению,
> > сейчас у нас как бы согласия нет -- есть два возражения (vsu и mhz).
>
> У меня еще такое возражение: неужели у нас образовалось столько
> свободного времени и желания решать дополнительные проблемы, чтобы
> бежать впереди апстрима?
А если я и есть апстрим или его составная часть? :)
В конце концов, это моё рабочее время.
> Кто-нибудь аргументировал выгоды и потери хотя
> бы приблизительно?
Есть одна очевидная выгода, которую понимает большинство мантейнеров:
убирание ненужных символов даёт стабилизацию использования и рост скорости
запуска. На том же libdb4.3 выигрыш умопомрачительный.
Полноценный versioning (более одного интерфейса) тоже воспринимают, но
медленнее, несмотря на dsohowto.
Конечно, надо начинать с наиболее важных библиотек, либо с точки зрения
обеспечения совместимости (как с libgtk+2), либо с точки зрения
оптимизации.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [devel] version script for libdb4.3
2005-09-04 21:48 ` Dmitry V. Levin
@ 2005-10-07 21:41 ` Dmitry V. Levin
0 siblings, 0 replies; 15+ messages in thread
From: Dmitry V. Levin @ 2005-10-07 21:41 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1.1: Type: text/plain, Size: 1808 bytes --]
On Mon, Sep 05, 2005 at 01:48:19AM +0400, Dmitry V. Levin wrote:
[...]
> убирание ненужных символов даёт стабилизацию использования и рост скорости
> запуска. На том же libdb4.3 выигрыш умопомрачительный.
Немного цифр:
$ ls -log {old,new}/libdb-4.3.so
-rw-r--r-- 1 854016 Окт 8 00:17 new/libdb-4.3.so
-rw-r--r-- 1 936160 Июн 15 22:31 old/libdb-4.3.so
$ nm -D old/libdb-4.3.so |grep -c '^[0-9a-f]'
1431
$ nm -D new/libdb-4.3.so |grep -c '^[0-9a-f]'
51
$ rm -f my_db.db && env -i LD_DEBUG=statistics LD_LIBRARY_PATH=old ./db_create
12345: number of relocations: 632
12345: number of relocations from cache: 6
12345: number of relative relocations: 1593
12345:
12345: runtime linker statistics:
12345: final number of relocations: 748
12345: final number of relocations from cache: 6
$ rm -f my_db.db && env -i LD_DEBUG=statistics LD_LIBRARY_PATH=new ./db_create
12345: number of relocations: 106
12345: number of relocations from cache: 5
12345: number of relative relocations: 2120
12345:
12345: runtime linker statistics:
12345: final number of relocations: 139
12345: final number of relocations from cache: 5
$ env -i LD_LIBRARY_PATH=old time sh -c 'rm -f my_db.db; for i in `seq 10000`; do ./db_create; done'
5.53user 4.15system 0:09.68elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1920466major+361627minor)pagefaults 0swaps
$ env -i LD_LIBRARY_PATH=new time sh -c 'rm -f my_db.db; for i in `seq 10000`; do ./db_create; done'
2.82user 3.91system 0:06.72elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1750466major+351627minor)pagefaults 0swaps
--
ldv
[-- Attachment #1.2: db_create.c --]
[-- Type: text/plain, Size: 1183 bytes --]
/* Taken from /usr/share/doc/db-4.3.28/gsg/C/DB.html */
#include <db.h>
int
main(void)
{
DB *dbp; /* DB structure handle */
u_int32_t flags; /* database open flags */
int ret; /* function return value */
/* Initialize the structure. This
* database is not opened in an environment,
* so the environment pointer is NULL. */
ret = db_create(&dbp, NULL, 0);
if (ret != 0)
{
/* Error handling goes here */
return 1;
}
/* Database open flags */
flags = DB_CREATE; /* If the database does not exist,
* create it.*/
/* open the database */
ret = dbp->open(dbp, /* DB structure pointer */
NULL, /* Transaction pointer */
"my_db.db", /* On-disk file that holds the database. */
NULL, /* Optional logical database name */
DB_BTREE, /* Database access method */
flags, /* Open flags */
0); /* File mode (using defaults) */
if (ret != 0)
{
/* Error handling goes here */
return 1;
}
return 0;
}
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* [devel] Re: version script for libgtk+2
2005-09-04 21:30 ` Mikhail Zabaluev
2005-09-04 21:48 ` Dmitry V. Levin
@ 2005-09-04 22:27 ` Alexey Tourbin
1 sibling, 0 replies; 15+ messages in thread
From: Alexey Tourbin @ 2005-09-04 22:27 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 1234 bytes --]
On Mon, Sep 05, 2005 at 01:30:37AM +0400, Mikhail Zabaluev wrote:
> У меня еще такое возражение: неужели у нас образовалось столько
> свободного времени и желания решать дополнительные проблемы, чтобы
Это в значительной степени и возражение против проекта sisyphus.
"Increasing quality means a lot of work". :)
> бежать впереди апстрима?
Отдельно взятый апстрим не в состоянии понять проблематику суммы
апстримов. Кто-то должен смотреть на апстримы со стороны. Это конечно
получается что-то в духе "я и без вас смогу решить вашу проблему". :)
> Кто-нибудь аргументировал выгоды и потери хотя
> бы приблизительно?
Плюс -- fine-grained контроль бинарной совместимости. Не только на
уровне зависимостей rpm, но и на уровне ELF. То есть не только вручную
зависимости типа glib2 >= 2.8 не придётся ставить (или НЕ ставить!), но
и реальная проверка при запуске приложений будет работать.
Минус -- потеря совместимости у наших бинарей с ихней средой.
Плюс трудозатраты.
> Ой, что-то мне это напоминает эпопею с упромысливанием Python...
Не вижу аналогии. Но я не совсем в курсе, что это за эпопея. Вижу
только большое количество unmet'ов, которые уже несколько месяцев никто
не пытается закрыть...
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [devel] version script for libgtk+2
2005-09-04 21:06 [devel] version script for libgtk+2 Alexey Tourbin
2005-09-04 21:30 ` Mikhail Zabaluev
@ 2005-09-04 21:38 ` Dmitry V. Levin
2005-09-04 22:02 ` [devel] " Alexey Tourbin
2005-09-04 22:46 ` [devel] " Mikhail Zabaluev
2005-09-09 4:24 ` [devel] " Alexey Tourbin
2 siblings, 2 replies; 15+ messages in thread
From: Dmitry V. Levin @ 2005-09-04 21:38 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 1018 bytes --]
On Mon, Sep 05, 2005 at 01:06:22AM +0400, Alexey Tourbin wrote:
[...]
> Вообще, если это делать, то нужно делать для всех системных библиотек
> (ну, "базовых" библиотек, которые широко используются). К сожалению,
> сейчас у нас как бы согласия нет -- есть два возражения (vsu и mhz).
Пусть они на меня не обижаются, но я думаю, что их возражения обусловлены
стремлением минимизировать объём совершаемой ими работы.
> Если после рассмотрения вопроса по существу возражения останутся, тогда
> не знаю что делать.
Я уже занялся upstream'изацией грамотного использования version scripts.
Например, Linux-PAM уже перешёл на ELF versioning.
За одно можно решить проблему зря экспортируемых символов, которые
впустую тормозят динамическую линковку, что видно невооружённым взглядом
при запуске программ.
Например, libdb-4.3.so экспортирует 1431 символов вместо 51 официально
положенных!
[...]
> rpmsymver - compare symbol versioning
Переименовать бы в rpmsymvercmp и запаковать.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* [devel] Re: version script for libgtk+2
2005-09-04 21:38 ` [devel] " Dmitry V. Levin
@ 2005-09-04 22:02 ` Alexey Tourbin
2005-09-04 22:46 ` [devel] " Mikhail Zabaluev
1 sibling, 0 replies; 15+ messages in thread
From: Alexey Tourbin @ 2005-09-04 22:02 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 1142 bytes --]
On Mon, Sep 05, 2005 at 01:38:54AM +0400, Dmitry V. Levin wrote:
> > Вообще, если это делать, то нужно делать для всех системных библиотек
> > (ну, "базовых" библиотек, которые широко используются). К сожалению,
> > сейчас у нас как бы согласия нет -- есть два возражения (vsu и mhz).
>
> Пусть они на меня не обижаются, но я думаю, что их возражения обусловлены
> стремлением минимизировать объём совершаемой ими работы.
Большие объемы однотипной работы поддаются автоматизации, по меньше мере
частично. То есть если первые несколько раз хорошо подумать, то дальше
можно будет шлёпать эти интерфейсы намного быстрее.
> > rpmsymver - compare symbol versioning
> Переименовать бы в rpmsymvercmp и запаковать.
Например, можно выводить не только diff, но и заготовку для *.map файла.
Скрипт пока не созрел, хотя и готов к употреблению. Токен *ver* в нём
лишний, он отражает намерение автора и suggested usage, но не то, чем
собственно скрипт занимается.
Я ещё попутно о роботах думаю. Как регулярно проводить проверки ELF'ов
по пакетной базе. И всё это должно работать не несколько часов, а
несколько минут...
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [devel] version script for libgtk+2
2005-09-04 21:38 ` [devel] " Dmitry V. Levin
2005-09-04 22:02 ` [devel] " Alexey Tourbin
@ 2005-09-04 22:46 ` Mikhail Zabaluev
1 sibling, 0 replies; 15+ messages in thread
From: Mikhail Zabaluev @ 2005-09-04 22:46 UTC (permalink / raw)
To: ALT Devel discussion list
В Пнд, 05/09/2005 в 01:38 +0400, Dmitry V. Levin пишет:
> On Mon, Sep 05, 2005 at 01:06:22AM +0400, Alexey Tourbin wrote:
> [...]
> > Вообще, если это делать, то нужно делать для всех системных библиотек
> > (ну, "базовых" библиотек, которые широко используются). К сожалению,
> > сейчас у нас как бы согласия нет -- есть два возражения (vsu и mhz).
>
> Пусть они на меня не обижаются, но я думаю, что их возражения обусловлены
> стремлением минимизировать объём совершаемой ими работы.
Тут не на что обижаться, если стремление продуктивно.
А работа всегда заполняет весь выделенный ей объем :)
^ permalink raw reply [flat|nested] 15+ messages in thread
* [devel] Re: version script for libgtk+2
2005-09-04 21:06 [devel] version script for libgtk+2 Alexey Tourbin
2005-09-04 21:30 ` Mikhail Zabaluev
2005-09-04 21:38 ` [devel] " Dmitry V. Levin
@ 2005-09-09 4:24 ` Alexey Tourbin
2005-09-09 8:33 ` Alexey Tourbin
2 siblings, 1 reply; 15+ messages in thread
From: Alexey Tourbin @ 2005-09-09 4:24 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 3120 bytes --]
On Mon, Sep 05, 2005 at 01:06:22AM +0400, Alexey Tourbin wrote:
> $ 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
Далее нужно проверить, какие изменения были сделаны в 2.8.1-2.8.3,
то есть достаточно ли будет одного интерфейса для 2.8.
$ diff -abBpruw gtk+-2.8.0 gtk+-2.8.1 >2.8.0-2.8.1.diff
$ diff -abBpruw gtk+-2.8.1 gtk+-2.8.2 >2.8.1-2.8.2.diff
$ diff -abBpruw gtk+-2.8.2 gtk+-2.8.3 >2.8.2-2.8.3.diff
Список новых функций помещаем в файл fun:
$ head fun
gdk_cairo_create
gdk_cairo_rectangle
gdk_cairo_region
gdk_cairo_set_source_color
gdk_cairo_set_source_pixbuf
gdk_cursor_get_image
gdk_cursor_new_from_name
gdk_display_warp_pointer
gdk_pixmap_impl_x11_get_type
gdk_screen_get_rgba_colormap
$
Ищем упоминание этих функций в диффах:
$ grepdiff -H -f fun 2.8.?-2.8.?.diff |grep -v 'html$'
2.8.0-2.8.1.diff:gtk+-2.8.0/ChangeLog
2.8.0-2.8.1.diff:gtk+-2.8.0/docs/reference/gdk-pixbuf/html/gdk-pixbuf.devhelp
2.8.0-2.8.1.diff:gtk+-2.8.0/gtk/gtkiconview.c
2.8.0-2.8.1.diff:gtk+-2.8.0/gtk/gtksettings.c
2.8.1-2.8.2.diff:gtk+-2.8.1/docs/reference/gdk-pixbuf/html/gdk-pixbuf.devhelp
2.8.2-2.8.3.diff:gtk+-2.8.2/ChangeLog
2.8.2-2.8.3.diff:gtk+-2.8.2/docs/reference/gdk-pixbuf/html/gdk-pixbuf.devhelp
2.8.2-2.8.3.diff:gtk+-2.8.2/gdk/x11/gdkcursor-x11.c
2.8.2-2.8.3.diff:gtk+-2.8.2/gtk/gtksettings.c
$
Далее последовательно проверяем эти куски, напр:
$ filterdiff -i gtk+-2.8.0/gtk/gtkiconview.c 2.8.0-2.8.1.diff
--- gtk+-2.8.0/gtk/gtkiconview.c 2005-07-11 13:14:04 +0000
+++ gtk+-2.8.1/gtk/gtkiconview.c 2005-08-20 20:16:34 +0000
@@ -172,6 +173,12 @@ struct _GtkIconViewPrivate
GtkTreeRowReference *dest_item;
GtkIconViewDropPosition dest_pos;
+ /* scroll to */
+ GtkTreeRowReference *scroll_to_path;
+ gfloat scroll_to_row_align;
+ gfloat scroll_to_col_align;
+ guint scroll_to_use_align : 1;
+
guint source_set : 1;
guint dest_set : 1;
guint reorderable : 1;
...
$
Видно, что этот кусок никак не задевает ABI, хотя в нём и встречаются
упоминания некоторых новых функций:
$ filterdiff -i gtk+-2.8.0/gtk/gtkiconview.c 2.8.0-2.8.1.diff |grep -f fun
+ gtk_icon_view_scroll_to_path (icon_view, path,
@@ -1712,6 +1745,7 @@ gtk_icon_view_set_cursor (GtkIconView
@@ -1733,7 +1767,11 @@ gtk_icon_view_set_cursor (GtkIconView
gtk_icon_view_set_cursor_item (icon_view, item, cell_pos);
+ gtk_icon_view_scroll_to_path (icon_view, path,
@@ -3917,15 +3955,33 @@ gtk_icon_view_scroll_to_path (GtkIconVie
$
Проверка других кусков показывает, что они тоже никак не задевают ABI.
Значит, отдельных интерфейсов для 2.8.{1,2,3} не нужно.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* [devel] Re: version script for libgtk+2
2005-09-09 4:24 ` [devel] " Alexey Tourbin
@ 2005-09-09 8:33 ` Alexey Tourbin
2005-09-09 8:55 ` Epiphanov Sergei
` (2 more replies)
0 siblings, 3 replies; 15+ messages in thread
From: Alexey Tourbin @ 2005-09-09 8:33 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1.1: Type: text/plain, Size: 1662 bytes --]
On Fri, Sep 09, 2005 at 08:24:19AM +0400, Alexey Tourbin wrote:
> Проверка других кусков показывает, что они тоже никак не задевают ABI.
> Значит, отдельных интерфейсов для 2.8.{1,2,3} не нужно.
Может, мне сделать NMU? Какие библиотеки ещё стоит посмотреть?
Лучше подгадать к "значимому" релизу, т.е. напр. 2.6.7 -> 2.8.0.
--- RPM/SPECS/libgtk2.spec- 2005-08-29 21:07:45 +0000
+++ RPM/SPECS/libgtk2.spec 2005-09-09 05:15:50 +0000
@@ -16,6 +16,11 @@
Icon: gtk+-logo.xpm
Source: ftp://ftp.gnome.org/pub/gnome/sources/%_name/%ver_major/%_name-%version.tar.bz2
+
+Source1: %name-2.8-gdk.map
+Source2: %name-2.8-gdk_pixbuf.map
+Source3: %name-2.8-gtk.map
+
Patch: gtk+-2.6.5-Lai-gtkfilesel.patch.bz2
Patch1: gtk+-2.2.4-Lai-images_types-2004.04.04.patch.gz
@@ -104,6 +109,9 @@
%prep
%setup -q -n %_name-%version
+%__install -p -m644 %SOURCE1 gdk/symver.map
+%__install -p -m644 %SOURCE2 gdk-pixbuf/symver.map
+%__install -p -m644 %SOURCE3 gtk/symver.map
%patch -p1
%patch1 -p1
@@ -119,7 +127,7 @@
--enable-fbmanager
# SMP-incompatible build
-%make
+%make LIBTOOL_EXPORT_OPTIONS=-Wl,--version-script=symver.map
%install
%makeinstall
End of patch
Получается вот что (по пакету libgtk+2):
PreReq: glib2 >= 2.7.1
Requires: libglib-2.0.so.0
Provides: libgdk-x11-2.0.so.0(GDK_2.8),
libgdk-x11-2.0.so.0(GDK_PRIVATE),
libgdk_pixbuf-2.0.so.0(GDK_2.8),
libgtk-x11-2.0.so.0(GTK_2.8)
Это уже собрано в среде с libglib-2.0.so.0(GLIB_2.8). Т.к. зависимость
на новый интерфейc glib2 не проставилась, то, возможно, вручную
проставленная зависимость на glib2 >= 2.7.1 является необоснованной.
[-- Attachment #1.2: libgtk+2-2.8-gdk.map --]
[-- Type: text/plain, Size: 540 bytes --]
GDK_PRIVATE {
global:
gdk_*_libgtk_only;
local:
_*;
};
GDK_2.8 {
global:
gdk_cairo_create;
gdk_cairo_rectangle;
gdk_cairo_region;
gdk_cairo_set_source_color;
gdk_cairo_set_source_pixbuf;
gdk_cursor_get_image;
gdk_cursor_new_from_name;
gdk_display_warp_pointer;
gdk_pixmap_impl_x11_get_type;
gdk_screen_get_rgba_colormap;
gdk_screen_get_rgba_visual;
gdk_window_move_region;
gdk_window_set_urgency_hint;
gdk_x11_display_get_user_time;
gdk_x11_display_set_cursor_theme;
gdk_x11_window_move_to_current_desktop;
};
[-- Attachment #1.3: libgtk+2-2.8-gdk_pixbuf.map --]
[-- Type: text/plain, Size: 178 bytes --]
GDK_2.8 {
global:
gdk_pixbuf_simple_anim_add_frame;
gdk_pixbuf_simple_anim_get_type;
gdk_pixbuf_simple_anim_iter_get_type;
gdk_pixbuf_simple_anim_new;
local:
_*;
};
[-- Attachment #1.4: libgtk+2-2.8-gtk.map --]
[-- Type: text/plain, Size: 2028 bytes --]
GTK_2.8 {
global:
gtk_about_dialog_get_wrap_license;
gtk_about_dialog_set_wrap_license;
gtk_action_get_accel_closure;
gtk_dialog_get_response_for_widget;
gtk_drag_set_icon_name;
gtk_drag_source_set_icon_name;
gtk_entry_completion_get_popup_set_width;
gtk_entry_completion_get_popup_single_match;
gtk_entry_completion_set_popup_set_width;
gtk_entry_completion_set_popup_single_match;
gtk_file_chooser_confirmation_get_type;
gtk_file_chooser_get_do_overwrite_confirmation;
gtk_file_chooser_set_do_overwrite_confirmation;
gtk_file_system_get_bookmark_label;
gtk_file_system_set_bookmark_label;
gtk_icon_view_create_drag_icon;
gtk_icon_view_drop_position_get_type;
gtk_icon_view_enable_model_drag_dest;
gtk_icon_view_enable_model_drag_source;
gtk_icon_view_get_cursor;
gtk_icon_view_get_dest_item_at_pos;
gtk_icon_view_get_drag_dest_item;
gtk_icon_view_get_item_at_pos;
gtk_icon_view_get_reorderable;
gtk_icon_view_get_visible_range;
gtk_icon_view_scroll_to_path;
gtk_icon_view_set_cursor;
gtk_icon_view_set_drag_dest_item;
gtk_icon_view_set_reorderable;
gtk_icon_view_unset_model_drag_dest;
gtk_icon_view_unset_model_drag_source;
gtk_image_clear;
gtk_menu_bar_get_child_pack_direction;
gtk_menu_bar_get_pack_direction;
gtk_menu_bar_set_child_pack_direction;
gtk_menu_bar_set_pack_direction;
gtk_menu_shell_get_take_focus;
gtk_menu_shell_set_take_focus;
gtk_pack_direction_get_type;
gtk_scrolled_window_get_hscrollbar;
gtk_scrolled_window_get_vscrollbar;
gtk_size_group_get_ignore_hidden;
gtk_size_group_set_ignore_hidden;
gtk_stock_set_translate_func;
gtk_text_iter_backward_visible_line;
gtk_text_iter_backward_visible_lines;
gtk_text_iter_forward_visible_line;
gtk_text_iter_forward_visible_lines;
gtk_tool_button_get_icon_name;
gtk_tool_button_set_icon_name;
gtk_tree_row_reference_get_model;
gtk_tree_view_column_queue_resize;
gtk_tree_view_get_visible_range;
gtk_window_get_urgency_hint;
gtk_window_present_with_time;
gtk_window_set_urgency_hint;
local:
_*;
};
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [devel] Re: version script for libgtk+2
2005-09-09 8:33 ` Alexey Tourbin
@ 2005-09-09 8:55 ` Epiphanov Sergei
2005-09-09 8:53 ` Sergey Pinaev
2005-09-09 17:37 ` [devel] Re: version script for libgtk+2 Alexey Rusakov
2005-09-11 9:07 ` Alexey Tourbin
2 siblings, 1 reply; 15+ messages in thread
From: Epiphanov Sergei @ 2005-09-09 8:55 UTC (permalink / raw)
To: ALT Devel discussion list
В сообщении от Friday 09 September 2005 12:33 Alexey Tourbin написал(a):
> Может, мне сделать NMU?
Прошу подсказать расшифровку сокращения "NMU" и смысл. Никак не могу
сообразить (Not My Unit?).
--
С уважением, Епифанов Сергей
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [devel] Re: version script for libgtk+2
2005-09-09 8:33 ` Alexey Tourbin
2005-09-09 8:55 ` Epiphanov Sergei
@ 2005-09-09 17:37 ` Alexey Rusakov
2005-09-11 9:07 ` Alexey Tourbin
2 siblings, 0 replies; 15+ messages in thread
From: Alexey Rusakov @ 2005-09-09 17:37 UTC (permalink / raw)
To: ALT Devel discussion list
Alexey Tourbin wrote:
>On Fri, Sep 09, 2005 at 08:24:19AM +0400, Alexey Tourbin wrote:
>
>
>>Проверка других кусков показывает, что они тоже никак не задевают ABI.
>>Значит, отдельных интерфейсов для 2.8.{1,2,3} не нужно.
>>
>>
>Может, мне сделать NMU?
>
Буду очень благодарен. Я ещё с GNOME не отстрелялся %-)
>Какие библиотеки ещё стоит посмотреть?
>
>
Я по-прежнему плохо ориентируюсь в предмете, но по-моему, стоит
посмотреть ещё Pango. Больше сходу в голову ничего не приходит.
>Лучше подгадать к "значимому" релизу, т.е. напр. 2.6.7 -> 2.8.0.
>
>
По-моему, адекватно. В случае Pango это будет 1.8 -> 1.10 соответственно.
--
Alexey "Ktirf" Rusakov
^ permalink raw reply [flat|nested] 15+ messages in thread
* [devel] Re: version script for libgtk+2
2005-09-09 8:33 ` Alexey Tourbin
2005-09-09 8:55 ` Epiphanov Sergei
2005-09-09 17:37 ` [devel] Re: version script for libgtk+2 Alexey Rusakov
@ 2005-09-11 9:07 ` Alexey Tourbin
2 siblings, 0 replies; 15+ messages in thread
From: Alexey Tourbin @ 2005-09-11 9:07 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 387 bytes --]
On Fri, Sep 09, 2005 at 12:33:31PM +0400, Alexey Tourbin wrote:
> > Проверка других кусков показывает, что они тоже никак не задевают ABI.
> > Значит, отдельных интерфейсов для 2.8.{1,2,3} не нужно.
> Может, мне сделать NMU? Какие библиотеки ещё стоит посмотреть?
Сделал запланированный NMU для glib2 и libgtk+2.
Сделал незапланированный NMU для fontconfig (под руку попалось).
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2005-10-07 21:41 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-09-04 21:06 [devel] version script for libgtk+2 Alexey Tourbin
2005-09-04 21:30 ` Mikhail Zabaluev
2005-09-04 21:48 ` Dmitry V. Levin
2005-10-07 21:41 ` [devel] version script for libdb4.3 Dmitry V. Levin
2005-09-04 22:27 ` [devel] Re: version script for libgtk+2 Alexey Tourbin
2005-09-04 21:38 ` [devel] " Dmitry V. Levin
2005-09-04 22:02 ` [devel] " Alexey Tourbin
2005-09-04 22:46 ` [devel] " Mikhail Zabaluev
2005-09-09 4:24 ` [devel] " Alexey Tourbin
2005-09-09 8:33 ` Alexey Tourbin
2005-09-09 8:55 ` Epiphanov Sergei
2005-09-09 8:53 ` Sergey Pinaev
2005-09-09 9:13 ` [devel] Re: version script for libgtk+2 [JT] Vitaly Lipatov
2005-09-09 17:37 ` [devel] Re: version script for libgtk+2 Alexey Rusakov
2005-09-11 9:07 ` Alexey Tourbin
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git