ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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: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

* 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

* [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

* [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: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: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
  0 siblings, 1 reply; 15+ messages in thread
From: Sergey Pinaev @ 2005-09-09  8:53 UTC (permalink / raw)
  To: ALT Devel discussion list

On Fri, 9 Sep 2005 12:55:01 +0400
Epiphanov Sergei <serpiph@nikiet.ru> wrote:

> В сообщении от Friday 09 September 2005 12:33 Alexey Tourbin написал
> (a):
> > Может, мне сделать NMU?
> 
> Прошу подсказать расшифровку сокращения "NMU" и смысл. Никак не могу 
> сообразить (Not My Unit?).

"non maintainer upload".

-- 
mail="Sergey Pinaev <dfo@antex.ru>"
url="http://`echo $mail | sed 's/.* <\(.*\)@\(.*\)>/\1.\2/'`"


^ 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 [JT]
  2005-09-09  8:53       ` Sergey Pinaev
@ 2005-09-09  9:13         ` Vitaly Lipatov
  0 siblings, 0 replies; 15+ messages in thread
From: Vitaly Lipatov @ 2005-09-09  9:13 UTC (permalink / raw)
  To: ALT Devel discussion list

On Friday 09 September 2005 12:53, Sergey Pinaev wrote:
> On Fri, 9 Sep 2005 12:55:01 +0400
>
> Epiphanov Sergei <serpiph@nikiet.ru> wrote:
> > В сообщении от Friday 09 September 2005 12:33 Alexey Tourbin
> > написал
> >
> > (a):
> > > Может, мне сделать NMU?
> >
> > Прошу подсказать расшифровку сокращения "NMU" и смысл. Никак
> > не могу сообразить (Not My Unit?).
>
> "non maintainer upload".
http://www.etersoft.ru/engcom.php?word=NMU
:)

-- 
Lav
Виталий Липатов
Санкт-Петербург
GNU! ALT Linux Team! WINE! LaTeX! LyX! http://freesource.info


^ 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

* 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

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