ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Сборка heartbeat с --as-needed
@ 2006-09-27  6:21 Eugene Prokopiev
  2006-09-27  6:30 ` Alexey I. Froloff
  2006-09-27  8:12 ` Damir Shayhutdinov
  0 siblings, 2 replies; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27  6:21 UTC (permalink / raw)
  To: devel

Здравствуйте!

Требуется собрать heartbeat 2.0.7. После ./configure и make получаю:

gcc -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations 
-Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith 
-Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline 
-Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3 
-funsigned-char -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations 
-Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith 
-Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline 
-Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3 
-funsigned-char -o .libs/ptest ptest-ptest.o 
../../lib/clplumbing/.libs/libplumb.so 
/usr/src/heartbeat-2.0.7/lib/pils/.libs/libpils.so 
../../lib/pils/.libs/libpils.so 
../../lib/crm/common/.libs/libcrmcommon.so 
/usr/src/heartbeat-2.0.7/lib/apphb/.libs/libapphb.so 
../../lib/crm/pengine/.libs/libpe_status.so ./.libs/libpengine.so 
-lglib-2.0 ../../lib/crm/cib/.libs/libcib.so 
../../lib/crm/transition/.libs/libtransitioner.so -lbz2 -lz -lxml2 -lc 
-luuid -lrt -ldl -lltdl -Wl,--rpath -Wl,/usr/local/lib
./.libs/libpengine.so: undefined reference to `add_hash_param'
./.libs/libpengine.so: undefined reference to `score2char'
./.libs/libpengine.so: undefined reference to `sort_rsc_priority'
./.libs/libpengine.so: undefined reference to `find_recurring_actions'
./.libs/libpengine.so: undefined reference to `node_list_or'
./.libs/libpengine.so: undefined reference to `print_resource'
./.libs/libpengine.so: undefined reference to `pe_find_resource'
./.libs/libpengine.so: undefined reference to `custom_action'
./.libs/libpengine.so: undefined reference to `get_interval'
./.libs/libpengine.so: undefined reference to `node_list_minus'
./.libs/libpengine.so: undefined reference to `role2text'
./.libs/libpengine.so: undefined reference to `was_config_error'
./.libs/libpengine.so: undefined reference to `pe_find_node_id'
./.libs/libpengine.so: undefined reference to `text2role'
./.libs/libpengine.so: undefined reference to `print_node'
./.libs/libpengine.so: undefined reference to `pe_free_shallow'
./.libs/libpengine.so: undefined reference to `task2text'
./.libs/libpengine.so: undefined reference to `node_list_dup'
./.libs/libpengine.so: undefined reference to `node_copy'
./.libs/libpengine.so: undefined reference to `find_expression_type'
./.libs/libpengine.so: undefined reference to `unpack_instance_attributes'
./.libs/libpengine.so: undefined reference to `set_working_set_defaults'
./.libs/libpengine.so: undefined reference to `cluster_status'
./.libs/libpengine.so: undefined reference to `cleanup_calculations'
./.libs/libpengine.so: undefined reference to `pe_free_shallow_adv'
./.libs/libpengine.so: undefined reference to `pe_free_action'
./.libs/libpengine.so: undefined reference to `order_actions'
./.libs/libpengine.so: undefined reference to `test_expression'
./.libs/libpengine.so: undefined reference to `merge_weights'
./.libs/libpengine.so: undefined reference to `sort_op_by_callid'
./.libs/libpengine.so: undefined reference to `log_action'
./.libs/libpengine.so: undefined reference to `was_processing_error'
./.libs/libpengine.so: undefined reference to `test_rule'
./.libs/libpengine.so: undefined reference to `find_rsc_op_entry'
./.libs/libpengine.so: undefined reference to `find_actions'
./.libs/libpengine.so: undefined reference to `was_processing_warning'
./.libs/libpengine.so: undefined reference to `DeleteRsc'
./.libs/libpengine.so: undefined reference to `was_config_warning'
./.libs/libpengine.so: undefined reference to `text2task'
./.libs/libpengine.so: undefined reference to `node_list_and'
./.libs/libpengine.so: undefined reference to `resource_location'
./.libs/libpengine.so: undefined reference to `test_ruleset'
./.libs/libpengine.so: undefined reference to `char2score'
./.libs/libpengine.so: undefined reference to `find_actions_exact'
collect2: ld returned 1 exit status
gmake[2]: *** [ptest] Error 1
gmake[2]: Leaving directory `/usr/src/heartbeat-2.0.7/crm/pengine'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/src/heartbeat-2.0.7/crm'
make: *** [all-recursive] Error 1

Очевидно, проблема в crm/pengine/Makefile.am, который выглядит так:

MAINTAINERCLEANFILES    = Makefile.in



INCLUDES        = -I$(top_builddir)/include -I$(top_srcdir)/include     \
                 -I$(top_builddir)/libltdl   -I$(top_srcdir)/libltdl     \
                 -I$(top_builddir)/linux-ha  -I$(top_srcdir)/linux-ha \
                 -I$(top_builddir)           -I$(top_srcdir)

hadir           = $(sysconfdir)/ha.d
halibdir        = $(libdir)/@HB_PKG@
commmoddir      = $(halibdir)/modules/comm
havarlibdir     = $(localstatedir)/lib/@HB_PKG@
pe_varlibdir    = $(HA_VARLIBDIR)/$(HB_PKG)/pengine

# sockets with path
crmdir          = $(havarlibdir)/crm
apigid          = @HA_APIGID@
crmuid          = @HA_CCMUID@


COMMONLIBS      = $(CRM_DEBUG_LIBS)                                     \
                 $(top_builddir)/lib/clplumbing/libplumb.la              \
                 $(top_builddir)/lib/pils/libpils.la                     \
                 $(top_builddir)/lib/crm/common/libcrmcommon.la          \
                 $(top_builddir)/lib/crm/pengine/libpe_status.la         \
                 libpengine.la                                           \
                 $(GLIBLIB)                                              \
                 $(CURSESLIBS)                                           \
                 $(LIBRT)

LIBRT           = @LIBRT@
AM_CFLAGS       = @CFLAGS@ $(CRM_DEBUG_FLAGS)

## libraries
lib_LTLIBRARIES = libpengine.la

## binary progs
halib_PROGRAMS  = ptest pengine

## SOURCES
noinst_HEADERS  = allocate.h utils.h pengine.h
#utils.h pengine.h

libpengine_la_LDFLAGS   = -version-info 3:0:0
# -L$(top_builddir)/lib/pils -lpils -export-dynamic -module -avoid-version
libpengine_la_SOURCES   = pengine.c allocate.c utils.c \
                         native.c group.c clone.c master.c graph.c

pengine_SOURCES = main.c
pengine_CFLAGS  = -DHA_VARLIBDIR='"@HA_VARLIBDIR@"'
pengine_LDADD   = $(COMMONLIBS) $(top_builddir)/lib/crm/cib/libcib.la
# libcib for get_object_root()
#               $(top_builddir)/lib/hbclient/libhbclient.la

ptest_SOURCES   = ptest.c
ptest_CFLAGS    = -DHA_VARLIBDIR='"@HA_VARLIBDIR@"'
ptest_LDADD     = $(COMMONLIBS)                                         \
                 $(top_builddir)/lib/crm/cib/libcib.la                   \
                 $(top_builddir)/lib/crm/transition/libtransitioner.la

clean-generic:
         rm -f *.log *.debug *~ .gres.* testcases/.gres.*

install-exec-local:
         $(mkinstalldirs) $(DESTDIR)/$(pe_varlibdir)
         -chown $(HA_CCMUSER) $(DESTDIR)/$(pe_varlibdir)
         -chgrp $(HA_APIGROUP) $(DESTDIR)/$(pe_varlibdir)
         -chmod 750 $(DESTDIR)/$(pe_varlibdir)

uninstall-local:

Как в общем случае догадаться, что необходимо дописать в этот файл?

В моем случае ситуация несколько облегчается тем, что есть 
heartbeat-alt-build.patch от lakostis, правда для версии 2.0.4. В нем 
фрагмент, относящийся к crm/pengine/Makefile.am, выглядит так:

diff -uNpar heartbeat-2.0.7.orig/crm/pengine/Makefile.am 
heartbeat-2.0.7/crm/pengine/Makefile.am
--- heartbeat-2.0.7.orig/crm/pengine/Makefile.am        2006-02-20 
20:22:42 +0300
+++ heartbeat-2.0.7/crm/pengine/Makefile.am     2006-04-23 18:22:11 +0400
@@ -39,8 +39,8 @@ COMMONLIBS    = $(CRM_DEBUG_LIBS) 
                 \
                 $(top_builddir)/lib/clplumbing/libplumb.la              \
                 $(top_builddir)/lib/pils/libpils.la                     \
                 $(top_builddir)/lib/crm/common/libcrmcommon.la          \
+               $(top_builddir)/lib/crm/cib/libcib.la                   \
                 libpengine.la                                           \
-               $(top_builddir)/lib/crm/cib/libcib.la                   \
                 $(top_builddir)/lib/apphb/libapphb.la                   \
                 $(GLIBLIB)                                              \
                 $(CURSESLIBS)                                           \
@@ -61,6 +61,7 @@ libpengine_la_SOURCES = color.c unpack.c
                         utils.c complex.c native.c stages.c \
                         group.c incarnation.c master.c

+libpengine_la_LIBADD = $(top_builddir)/lib/crm/cib/libcib.la
  libpengine_la_LDFLAGS  = -version-info 2:0:1

  noinst_HEADERS = pe_utils.h pengine.h complex.h pe_rules.h

Т.е. для 2.0.4 оказалось достаточным переместить libcib.la выше 
libpengine.la (зачем? почему не libapphb.la? на основании чего lakostis 
сделал это умозаключение?) и дописать в libpengine_la_LIBADD libcib.la 
(опять-таки, как lakostis до этого додумался?). В случае 2.0.7 libcib.la 
и libapphb.la в COMMONLIBS Makefile.am уже не упоминается, а их место 
занимает libpe_status.la до libpengine.la. Т.е. допустим, что в 
COMMONLIBS ничего менять не надо. Но, наверное, нужно перед 
libpengine_la_LDFLAGS по аналогии с патчем для 2.0.4 вписать:

libpengine_la_LIBADD = $(top_builddir)/lib/crm/cib/libpe_status.la

Можно ли как нибудь сделать такой вывод (или другой, если это ошибочен) 
не на основании патча к 2.0.4, а на основании вывода make?

После make clean, ./configure, make получаю:

  gcc -DHAVE_CONFIG_H -I. -I. -I../../linux-ha -I../../include 
-I../../include -I../../include -I../../libltdl -I../../libltdl 
-I../../linux-ha -I../../linux-ha -I../.. -I../.. -D_BSD_SOURCE 
-D__BSD_SOURCE -D__FAVOR_BSD -DHAVE_NET_ETHERNET_H 
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include 
-I/usr/include/libxml2 -g -O2 -Wall -Wmissing-prototypes 
-Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement 
-Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align 
-Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2 
-Wformat-security -Wformat-nonliteral -Wno-long-long 
-Wno-strict-aliasing -Werror -ggdb3 -funsigned-char -g -O2 -Wall 
-Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes 
-Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings 
-Wcast-qual -Wcast-align -Wbad-function-cast -Winline 
-Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3 
-funsigned-char -MT graph.lo -MD -MP -MF .deps/graph.Tpo -c graph.c -o 
graph.o >/dev/null 2>&1
gmake[2]: *** No rule to make target 
`../../lib/crm/cib/libpe_status.la', needed by `libpengine.la'.  Stop.
gmake[2]: Leaving directory `/usr/src/heartbeat-2.0.7/crm/pengine'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/src/heartbeat-2.0.7/crm'
make: *** [all-recursive] Error 1

Что делать дальше?

-- 
С уважением, Прокопьев Евгений


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  6:21 [devel] Сборка heartbeat с --as-needed Eugene Prokopiev
@ 2006-09-27  6:30 ` Alexey I. Froloff
  2006-09-27  6:52   ` Eugene Prokopiev
  2006-09-27  8:12 ` Damir Shayhutdinov
  1 sibling, 1 reply; 23+ messages in thread
From: Alexey I. Froloff @ 2006-09-27  6:30 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 340 bytes --]

* Eugene Prokopiev <enp@> [060927 10:21]:
> Требуется собрать heartbeat 2.0.7. После ./configure и make получаю:
В Daedalus есть сборка имени L.A.Kostis...

-- 
Regards, Alexey I. Froloff
AIF5-RIPN, AIF5-RIPE
-------------------------------------------
  Inform-Mobil, Ltd. System Administrator
       http://www.inform-mobil.ru/

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  6:30 ` Alexey I. Froloff
@ 2006-09-27  6:52   ` Eugene Prokopiev
  2006-09-27  7:39     ` Konstantin A. Lepikhov
  0 siblings, 1 reply; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27  6:52 UTC (permalink / raw)
  To: ALT Devel discussion list

Alexey I. Froloff пишет:
> * Eugene Prokopiev <enp@> [060927 10:21]:
> 
>>Требуется собрать heartbeat 2.0.7. После ./configure и make получаю:
> 
> В Daedalus есть сборка имени L.A.Kostis...

есть, знаю, но 2.0.4

патч от 2.0.4 для 2.0.7 не подходит, нужно написать новый ...

-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  6:52   ` Eugene Prokopiev
@ 2006-09-27  7:39     ` Konstantin A. Lepikhov
  2006-09-27  8:01       ` Eugene Prokopiev
  0 siblings, 1 reply; 23+ messages in thread
From: Konstantin A. Lepikhov @ 2006-09-27  7:39 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 425 bytes --]

Hi Eugene!

Wednesday 27, at 10:52:57 AM you wrote:

> Alexey I. Froloff пишет:
> > * Eugene Prokopiev <enp@> [060927 10:21]:
> > 
> >>Требуется собрать heartbeat 2.0.7. После ./configure и make получаю:
> > 
> > В Daedalus есть сборка имени L.A.Kostis...
> 
> есть, знаю, но 2.0.4
> 
> патч от 2.0.4 для 2.0.7 не подходит, нужно написать новый ...
я сегодня посмотрю и попробую это сделать

-- 
WBR et al.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  7:39     ` Konstantin A. Lepikhov
@ 2006-09-27  8:01       ` Eugene Prokopiev
  0 siblings, 0 replies; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27  8:01 UTC (permalink / raw)
  To: ALT Devel discussion list

Konstantin A. Lepikhov пишет:
> Hi Eugene!
> 
> Wednesday 27, at 10:52:57 AM you wrote:
> 
> 
>>Alexey I. Froloff пишет:
>>
>>>* Eugene Prokopiev <enp@> [060927 10:21]:
>>>
>>>
>>>>Требуется собрать heartbeat 2.0.7. После ./configure и make получаю:
>>>
>>>В Daedalus есть сборка имени L.A.Kostis...
>>
>>есть, знаю, но 2.0.4
>>
>>патч от 2.0.4 для 2.0.7 не подходит, нужно написать новый ...
> 
> я сегодня посмотрю и попробую это сделать

спасибо

если можно с комментариями, мне все-таки очень интересен процесс 
"магического психотворчества сверхлюдей" (с) :)

-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  6:21 [devel] Сборка heartbeat с --as-needed Eugene Prokopiev
  2006-09-27  6:30 ` Alexey I. Froloff
@ 2006-09-27  8:12 ` Damir Shayhutdinov
  2006-09-27  9:20   ` Eugene Prokopiev
  1 sibling, 1 reply; 23+ messages in thread
From: Damir Shayhutdinov @ 2006-09-27  8:12 UTC (permalink / raw)
  To: ALT Devel discussion list

> Как в общем случае догадаться, что необходимо дописать в этот файл?
>
> В моем случае ситуация несколько облегчается тем, что есть
> heartbeat-alt-build.patch от lakostis, правда для версии 2.0.4. В нем
> фрагмент, относящийся к crm/pengine/Makefile.am, выглядит так:

> Можно ли как нибудь сделать такой вывод (или другой, если это ошибочен)
> не на основании патча к 2.0.4, а на основании вывода make?
Возможно, это поможет:
http://lists.altlinux.org/pipermail/sisyphus/2006-July/084838.html

> После make clean, ./configure, make получаю:
> gmake[2]: *** No rule to make target
> `../../lib/crm/cib/libpe_status.la', needed by `libpengine.la'.  Stop.

Проверьте путь к библиотеке. Также, возможно, вам надо будет поменять
порядок директорий при сборке, чтобы libpe_status.la собиралась раньше
чем libpengine.la

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  8:12 ` Damir Shayhutdinov
@ 2006-09-27  9:20   ` Eugene Prokopiev
  2006-09-27  9:39     ` Damir Shayhutdinov
                       ` (3 more replies)
  0 siblings, 4 replies; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27  9:20 UTC (permalink / raw)
  To: ALT Devel discussion list

Damir Shayhutdinov пишет:
>>Как в общем случае догадаться, что необходимо дописать в этот файл?
>>
>>В моем случае ситуация несколько облегчается тем, что есть
>>heartbeat-alt-build.patch от lakostis, правда для версии 2.0.4. В нем
>>фрагмент, относящийся к crm/pengine/Makefile.am, выглядит так:
> 
> 
>>Можно ли как нибудь сделать такой вывод (или другой, если это ошибочен)
>>не на основании патча к 2.0.4, а на основании вывода make?
> 
> Возможно, это поможет:
> http://lists.altlinux.org/pipermail/sisyphus/2006-July/084838.html

спасибо

пробую

> надо найти, в какой библиотеке находятся отсутствующие символы.
> Обычно можно догадаться по названию, но если это не ясно - придется
> искать. Я обычно делаю первичный поиск грепов по всем файлам *.so в
> каталоге сборки, а потом с помощью nm -CD bar/.libs/libbar.so | grep
> megabar определяю, есть ли этот символ в библиотеке libbar.so. (Если
> напротив символа стоит U - то нету, а если T - то есть).
> 
> Если выяснено, что unresolved символы находятся в библиотеке
> libbaz.so, тогда надо добавить в  строчку -lbaz - то есть примерно
> так:
> 
> libfoo_la_LIBADD = -lbar -lbaz

$ find -name *.so | xargs grep add_hash_param
Binary file ./lib/crm/pengine/.libs/libpe_rules.so matches
Binary file ./lib/crm/pengine/.libs/libpe_status.so matches

$ nm -CD ./lib/crm/pengine/.libs/libpe_status.so | grep add_hash_param
00005640 T add_hash_param

$ nm -CD ./lib/crm/pengine/.libs/libpe_rules.so | grep add_hash_param
00003bf0 T add_hash_param

Вообще, Т означает, что функция экспортируется? Это нормально, что одну 
функцию экспортирует несколько библиотек?

В libpengine_la_LIBADD нужно добавить обе библиотеки или выбирать, какую 
из? На основании чего?

>>После make clean, ./configure, make получаю:
>>gmake[2]: *** No rule to make target
>>`../../lib/crm/cib/libpe_status.la', needed by `libpengine.la'.  Stop.
> 
> 
> Проверьте путь к библиотеке. Также, возможно, вам надо будет поменять
> порядок директорий при сборке, чтобы libpe_status.la собиралась раньше
> чем libpengine.la

Проверил. Действительно, проблема в этом. Исправил, пока собирается.

Еще вопрос: я делаю make clean, ./configure, make. Это неправильно? Для 
чего и на каком этапе нужен autoreconf -fisv? Правильно ли я понимаю, 
что это замена make clean, ./configure? Для чего autoreconf -fisv нужен 
в спеке, если исходники после наложения патчей до %configure еще не 
сконфигурированы (т.е. ./configure не выполнен)

> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel


-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  9:20   ` Eugene Prokopiev
@ 2006-09-27  9:39     ` Damir Shayhutdinov
  2006-09-27 10:07       ` Eugene Prokopiev
  2006-09-27 10:06     ` Konstantin A. Lepikhov
                       ` (2 subsequent siblings)
  3 siblings, 1 reply; 23+ messages in thread
From: Damir Shayhutdinov @ 2006-09-27  9:39 UTC (permalink / raw)
  To: ALT Devel discussion list

> $ find -name *.so | xargs grep add_hash_param
> Binary file ./lib/crm/pengine/.libs/libpe_rules.so matches
> Binary file ./lib/crm/pengine/.libs/libpe_status.so matches

> $ nm -CD ./lib/crm/pengine/.libs/libpe_status.so | grep add_hash_param
> 00005640 T add_hash_param
>
> $ nm -CD ./lib/crm/pengine/.libs/libpe_rules.so | grep add_hash_param
> 00003bf0 T add_hash_param
>
> Вообще, Т означает, что функция экспортируется? Это нормально, что одну
> функцию экспортирует несколько библиотек?
Это не нормально, но бывает, если определение функции включено
например в заголовочный файл.

> В libpengine_la_LIBADD нужно добавить обе библиотеки или выбирать, какую
> из? На основании чего?
Одну из них. Какая полностью покрывает все undefined symbol, такую и брать.

> Еще вопрос: я делаю make clean, ./configure, make. Это неправильно?
Лучше make distclean && ./configure && make

> Для чего и на каком этапе нужен autoreconf -fisv?
Он нужен, если вы меняете что-либо в файлах .am или .ac. Например,
добавляете -lbar в libfoo_la_LIBADD.
Его надо вызывать перед configure, чтобы перегенерировать файлы
configure и Makefile.in, если "исходные файлы" - configure.in
(configure.ac) и Makefile.am были изменены.

> Правильно ли я понимаю,
> что это замена make clean, ./configure?
Нет.

> Для чего autoreconf -fisv нужен
> в спеке, если исходники после наложения патчей до %configure еще не
> сконфигурированы (т.е. ./configure не выполнен)

Чтобы сделать правильный ./configure и Makefile.in

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  9:20   ` Eugene Prokopiev
  2006-09-27  9:39     ` Damir Shayhutdinov
@ 2006-09-27 10:06     ` Konstantin A. Lepikhov
  2006-09-27 10:28       ` Eugene Prokopiev
  2006-09-27 10:07     ` Eugene Prokopiev
  2006-09-27 10:11     ` Konstantin A. Lepikhov
  3 siblings, 1 reply; 23+ messages in thread
From: Konstantin A. Lepikhov @ 2006-09-27 10:06 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 3118 bytes --]

Hi Eugene!

Wednesday 27, at 01:20:33 PM you wrote:

> > Проверьте путь к библиотеке. Также, возможно, вам надо будет поменять
> > порядок директорий при сборке, чтобы libpe_status.la собиралась раньше
> > чем libpengine.la
а дальше начинается самое интересное:
creating libpengine.la
(cd .libs && rm -f libpengine.la && ln -s ../libpengine.la libpengine.la)
/bin/sh ../../libtool --tag=CC  --mode=link gcc -pipe -Wall -O2
-march=pentium4  -Wall -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith
-Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline
-Wmissing-format-attribute -Wformat=2 -Wformat-security
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing   -ggdb3
-funsigned-char  -pipe -Wall -O2 -march=pentium4  -Wall
-Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes
-Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual
-Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute
-Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long
-Wno-strict-aliasing   -ggdb3 -funsigned-char   -o ptest  ptest-ptest.o
../../lib/clplumbing/libplumb.la ../../lib/pils/libpils.la
../../lib/crm/common/libcrmcommon.la ../../lib/crm/pengine/libpe_rules.la
../../lib/crm/pengine/libpe_status.la ../../lib/crm/cib/libcib.la
libpengine.la -lglib-2.0   -lncurses  ../../lib/crm/cib/libcib.la
../../lib/crm/transition/libtransitioner.la -lbz2 -lz -lxml2 -lc -luuid
-lrt -ldl  -lltdl
gcc -pipe -Wall -O2 -march=pentium4 -Wall -Wmissing-prototypes
-Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement
-Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align
-Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2
-Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing
-ggdb3 -funsigned-char -pipe -Wall -O2 -march=pentium4 -Wall
-Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes
-Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual
-Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute
-Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long
-Wno-strict-aliasing -ggdb3 -funsigned-char -o .libs/ptest ptest-ptest.o
../../lib/clplumbing/.libs/libplumb.so ../../lib/pils/.libs/libpils.so
../../lib/crm/common/.libs/libcrmcommon.so
../../lib/crm/pengine/.libs/libpe_rules.so
../../lib/crm/pengine/.libs/libpe_status.so ./.libs/libpengine.so
-lglib-2.0 -lncurses ../../lib/crm/cib/.libs/libcib.so
../../lib/crm/transition/.libs/libtransitioner.so -lbz2 -lz -lxml2 -lc
-luuid -lrt -ldl -lltdl
../../lib/crm/pengine/.libs/libpe_status.so: undefined reference to
`stdscr'
../../lib/crm/pengine/.libs/libpe_status.so: undefined reference to
`wmove'
../../lib/crm/pengine/.libs/libpe_status.so: undefined reference to
`printw'
collect2: ld returned 1 exit status
make: *** [ptest]  1

printw/wmove - это символы из libslang, но вот libpe_status.so с ней
линковаться не хочет, поскольку напрямую их не требует. Бага в ncurses?

-- 
WBR et al.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  9:20   ` Eugene Prokopiev
  2006-09-27  9:39     ` Damir Shayhutdinov
  2006-09-27 10:06     ` Konstantin A. Lepikhov
@ 2006-09-27 10:07     ` Eugene Prokopiev
  2006-09-27 10:21       ` Damir Shayhutdinov
  2006-09-27 10:23       ` Eugene Prokopiev
  2006-09-27 10:11     ` Konstantin A. Lepikhov
  3 siblings, 2 replies; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27 10:07 UTC (permalink / raw)
  To: ALT Devel discussion list

>>>После make clean, ./configure, make получаю:
>>>gmake[2]: *** No rule to make target
>>>`../../lib/crm/cib/libpe_status.la', needed by `libpengine.la'.  Stop.
>>
>>
>>Проверьте путь к библиотеке. Также, возможно, вам надо будет поменять
>>порядок директорий при сборке, чтобы libpe_status.la собиралась раньше
>>чем libpengine.la
> 
> 
> Проверил. Действительно, проблема в этом. Исправил, пока собирается.

Сборка закончилась на:

gcc -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations 
-Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith 
-Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline 
-Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3 
-funsigned-char -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations 
-Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith 
-Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline 
-Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3 
-funsigned-char -o .libs/pengine pengine-main.o 
../../lib/clplumbing/.libs/libplumb.so 
/usr/src/heartbeat-2.0.7/lib/pils/.libs/libpils.so 
../../lib/pils/.libs/libpils.so 
../../lib/crm/common/.libs/libcrmcommon.so 
/usr/src/heartbeat-2.0.7/lib/apphb/.libs/libapphb.so 
../../lib/crm/pengine/.libs/libpe_status.so ./.libs/libpengine.so 
/usr/src/heartbeat-2.0.7/lib/crm/pengine/.libs/libpe_status.so 
-lglib-2.0 ../../lib/crm/cib/.libs/libcib.so -lbz2 -lz -lxml2 -lc -luuid 
-lrt -ldl -lltdl -Wl,--rpath -Wl,/usr/local/lib
../../lib/crm/pengine/.libs/libpe_status.so: undefined reference to 
`get_object_root'
collect2: ld returned 1 exit status
gmake[2]: *** [pengine] Error 1
gmake[2]: Leaving directory `/usr/src/heartbeat-2.0.7/crm/pengine'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/src/heartbeat-2.0.7/crm'
make: *** [all-recursive] Error 1

Далее делаю:

$ find -name *.so | xargs grep get_object_root
Binary file ./crm/pengine/.libs/libpengine.so matches
Binary file ./lib/crm/cib/.libs/libcib.so matches
Binary file ./lib/crm/pengine/.libs/libpe_status.so matches

$ nm -CD ./crm/pengine/.libs/libpengine.so | grep get_object_root
          U get_object_root

$ nm -CD ./lib/crm/cib/.libs/libcib.so | grep get_object_root
00003a40 T get_object_root

$ nm -CD ./lib/crm/pengine/.libs/libpe_status.so | grep get_object_root
          U get_object_root

$ find -name libsib.la

libsib.la не нашлось. Правильно ли я понимаю, что теперь мне нужно 
добавить ее в COMMONLIBS? Пытаюсь это сделать:

...

COMMONLIBS      = $(CRM_DEBUG_LIBS)                                     \
                 $(top_builddir)/lib/clplumbing/libplumb.la              \
                 $(top_builddir)/lib/pils/libpils.la                     \
                 $(top_builddir)/lib/crm/common/libcrmcommon.la          \
                 $(top_builddir)/lib/crm/cib/libcib.la                   \
                 $(top_builddir)/lib/crm/pengine/libpe_status.la         \
                 libpengine.la                                           \
                 $(GLIBLIB)                                              \
                 $(CURSESLIBS)                                           \
                 $(LIBRT)

...

libpengine_la_LIBADD = $(top_builddir)/lib/crm/pengine/libpe_status.la 
$(top_builddir)/lib/crm/cib/libcib.la

...

пока собирается, посмотрим что будет ...

-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  9:39     ` Damir Shayhutdinov
@ 2006-09-27 10:07       ` Eugene Prokopiev
  2006-09-27 10:29         ` Damir Shayhutdinov
  0 siblings, 1 reply; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27 10:07 UTC (permalink / raw)
  To: ALT Devel discussion list

Damir Shayhutdinov пишет:
>>$ find -name *.so | xargs grep add_hash_param
>>Binary file ./lib/crm/pengine/.libs/libpe_rules.so matches
>>Binary file ./lib/crm/pengine/.libs/libpe_status.so matches
> 
> 
>>$ nm -CD ./lib/crm/pengine/.libs/libpe_status.so | grep add_hash_param
>>00005640 T add_hash_param
>>
>>$ nm -CD ./lib/crm/pengine/.libs/libpe_rules.so | grep add_hash_param
>>00003bf0 T add_hash_param
>>
>>Вообще, Т означает, что функция экспортируется? Это нормально, что одну
>>функцию экспортирует несколько библиотек?
> 
> Это не нормально, но бывает, если определение функции включено
> например в заголовочный файл.
> 
> 
>>В libpengine_la_LIBADD нужно добавить обе библиотеки или выбирать, какую
>>из? На основании чего?
> 
> Одну из них. Какая полностью покрывает все undefined symbol, такую и брать.

Бывает, что ни одна не покрывает? И тогда мне брать ту которая покрывает 
больше всего + еще какую(какие)-нибудь?

> 
> 
>>Еще вопрос: я делаю make clean, ./configure, make. Это неправильно?
> 
> Лучше make distclean && ./configure && make
> 
> 
>>Для чего и на каком этапе нужен autoreconf -fisv?
> 
> Он нужен, если вы меняете что-либо в файлах .am или .ac. Например,
> добавляете -lbar в libfoo_la_LIBADD.
> Его надо вызывать перед configure, чтобы перегенерировать файлы
> configure и Makefile.in, если "исходные файлы" - configure.in
> (configure.ac) и Makefile.am были изменены.
> 
> 
>>Правильно ли я понимаю,
>>что это замена make clean, ./configure?
> 
> Нет.

Вот я меняю Makefile.am, делаю только make clean, ./configure, make без 
autoreconf -fisv и вижу, что дело движется ... Почему? В моем случае это 
исключение, а обычно без autoreconf -fisv толку нет? От чего это зависит?

>>Для чего autoreconf -fisv нужен
>>в спеке, если исходники после наложения патчей до %configure еще не
>>сконфигурированы (т.е. ./configure не выполнен)
> 
> 
> Чтобы сделать правильный ./configure и Makefile.in

Makefile.in вроде генерируется на основе Makefile.am с помощью 
./configure, а ./configure я не менял. Значит autoreconf -fisv в таком 
случае не нужен? Или я не прав?

-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27  9:20   ` Eugene Prokopiev
                       ` (2 preceding siblings ...)
  2006-09-27 10:07     ` Eugene Prokopiev
@ 2006-09-27 10:11     ` Konstantin A. Lepikhov
  3 siblings, 0 replies; 23+ messages in thread
From: Konstantin A. Lepikhov @ 2006-09-27 10:11 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 609 bytes --]

Hi Eugene!

Wednesday 27, at 01:20:33 PM you wrote:

> > Проверьте путь к библиотеке. Также, возможно, вам надо будет поменять
> > порядок директорий при сборке, чтобы libpe_status.la собиралась раньше
> > чем libpengine.la
ага, нашел:
include/crm/pengine/complex.h
#if CURSES_ENABLED
#  define status_printw(fmt...) printw(fmt)
#else
#  define status_printw(fmt...) \
	crm_err("printw support requires ncurses to be available during
configure"); \
		do_crm_log(LOG_WARNING, NULL, NULL, fmt);
#endif

- это мы уже проходили, у нас же curses не такие, как у остальных :))

-- 
WBR et al.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:07     ` Eugene Prokopiev
@ 2006-09-27 10:21       ` Damir Shayhutdinov
  2006-09-27 10:35         ` Eugene Prokopiev
  2006-09-27 10:23       ` Eugene Prokopiev
  1 sibling, 1 reply; 23+ messages in thread
From: Damir Shayhutdinov @ 2006-09-27 10:21 UTC (permalink / raw)
  To: ALT Devel discussion list

> Далее делаю:
>
> $ find -name *.so | xargs grep get_object_root
> Binary file ./crm/pengine/.libs/libpengine.so matches
> Binary file ./lib/crm/cib/.libs/libcib.so matches
> Binary file ./lib/crm/pengine/.libs/libpe_status.so matches
>
> $ nm -CD ./crm/pengine/.libs/libpengine.so | grep get_object_root
>           U get_object_root
>
> $ nm -CD ./lib/crm/cib/.libs/libcib.so | grep get_object_root
> 00003a40 T get_object_root
>
> $ nm -CD ./lib/crm/pengine/.libs/libpe_status.so | grep get_object_root
>           U get_object_root
>
> $ find -name libsib.la
>
> libsib.la не нашлось.
Надо libcib.la искать. Буквы S и C все-таки различны :)

> Правильно ли я понимаю, что теперь мне нужно
> добавить ее в COMMONLIBS? Пытаюсь это сделать:
Не обязательно, главное в libpe_status_la_LIBADD добавить.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:07     ` Eugene Prokopiev
  2006-09-27 10:21       ` Damir Shayhutdinov
@ 2006-09-27 10:23       ` Eugene Prokopiev
  2006-09-27 10:29         ` Igor Zubkov
                           ` (2 more replies)
  1 sibling, 3 replies; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27 10:23 UTC (permalink / raw)
  To: ALT Devel discussion list

> пока собирается, посмотрим что будет ...

C этим Makefile.am справились, получаем дальше:

gcc -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations 
-Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith 
-Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline 
-Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3 
-funsigned-char -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations 
-Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith 
-Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline 
-Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3 
-funsigned-char -o .libs/crm_diff crm_diff-xml_diff.o 
../../lib/clplumbing/.libs/libplumb.so 
/usr/src/heartbeat-2.0.7/lib/pils/.libs/libpils.so 
../../lib/pils/.libs/libpils.so 
../../lib/crm/common/.libs/libcrmcommon.so 
/usr/src/heartbeat-2.0.7/lib/apphb/.libs/libapphb.so 
../../lib/crm/cib/.libs/libcib.so ../../lib/apphb/.libs/libapphb.so 
../../lib/hbclient/.libs/libhbclient.so -lglib-2.0 -lbz2 -lz -lxml2 -lc 
-luuid -lrt -ldl -lltdl -Wl,--rpath -Wl,/usr/local/lib
creating crm_diff
if gcc -DHAVE_CONFIG_H -I. -I. -I../../linux-ha -I../../include 
-I../../include -I../../include -I../../libltdl -I../../libltdl 
-I../../linux-ha -I../../linux-ha -I../.. -I../..  -D_BSD_SOURCE 
-D__BSD_SOURCE -D__FAVOR_BSD -DHAVE_NET_ETHERNET_H 
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include 
-I/usr/include/libxml2 -DHA_VARLIBDIR='"/usr/local/var/lib"' -g -O2 
-Wall -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes 
-Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings 
-Wcast-qual -Wcast-align -Wbad-function-cast -Winline 
-Wmissing-format-attribute -Wformat=2 -Wformat-security 
-Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror  -ggdb3 
-funsigned-char -MT crm_mon-crm_mon.o -MD -MP -MF 
".deps/crm_mon-crm_mon.Tpo" -c -o crm_mon-crm_mon.o `test -f 'crm_mon.c' 
|| echo './'`crm_mon.c; \
         then mv -f ".deps/crm_mon-crm_mon.Tpo" 
".deps/crm_mon-crm_mon.Po"; else rm -f ".deps/crm_mon-crm_mon.Tpo"; exit 
1; fi
cc1: warnings being treated as errors
crm_mon.c: In function 'main':
crm_mon.c:217: warning: implicit declaration of function 'initscr'
crm_mon.c:218: warning: implicit declaration of function 'cbreak'
crm_mon.c:219: warning: implicit declaration of function 'noecho'
crm_mon.c:247: warning: implicit declaration of function 'echo'
crm_mon.c:248: warning: implicit declaration of function 'nocbreak'
crm_mon.c:249: warning: implicit declaration of function 'endwin'
gmake[2]: *** [crm_mon-crm_mon.o] Error 1
gmake[2]: Leaving directory `/usr/src/heartbeat-2.0.7/crm/admin'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/src/heartbeat-2.0.7/crm'
make: *** [all-recursive] Error 1

С этим как положено бороться?

-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:06     ` Konstantin A. Lepikhov
@ 2006-09-27 10:28       ` Eugene Prokopiev
  2006-09-27 10:46         ` Konstantin A. Lepikhov
  0 siblings, 1 reply; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27 10:28 UTC (permalink / raw)
  To: ALT Devel discussion list

Konstantin A. Lepikhov пишет:
> Hi Eugene!
> 
> Wednesday 27, at 01:20:33 PM you wrote:
> 
> 
>>>Проверьте путь к библиотеке. Также, возможно, вам надо будет поменять
>>>порядок директорий при сборке, чтобы libpe_status.la собиралась раньше
>>>чем libpengine.la
> 
> а дальше начинается самое интересное:
> creating libpengine.la
> (cd .libs && rm -f libpengine.la && ln -s ../libpengine.la libpengine.la)
> /bin/sh ../../libtool --tag=CC  --mode=link gcc -pipe -Wall -O2
> -march=pentium4  -Wall -Wmissing-prototypes -Wmissing-declarations
> -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith
> -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline
> -Wmissing-format-attribute -Wformat=2 -Wformat-security
> -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing   -ggdb3
> -funsigned-char  -pipe -Wall -O2 -march=pentium4  -Wall
> -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes
> -Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual
> -Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute
> -Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long
> -Wno-strict-aliasing   -ggdb3 -funsigned-char   -o ptest  ptest-ptest.o
> ../../lib/clplumbing/libplumb.la ../../lib/pils/libpils.la
> ../../lib/crm/common/libcrmcommon.la ../../lib/crm/pengine/libpe_rules.la
> ../../lib/crm/pengine/libpe_status.la ../../lib/crm/cib/libcib.la
> libpengine.la -lglib-2.0   -lncurses  ../../lib/crm/cib/libcib.la
> ../../lib/crm/transition/libtransitioner.la -lbz2 -lz -lxml2 -lc -luuid
> -lrt -ldl  -lltdl
> gcc -pipe -Wall -O2 -march=pentium4 -Wall -Wmissing-prototypes
> -Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement
> -Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align
> -Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2
> -Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing
> -ggdb3 -funsigned-char -pipe -Wall -O2 -march=pentium4 -Wall
> -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes
> -Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual
> -Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute
> -Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long
> -Wno-strict-aliasing -ggdb3 -funsigned-char -o .libs/ptest ptest-ptest.o
> ../../lib/clplumbing/.libs/libplumb.so ../../lib/pils/.libs/libpils.so
> ../../lib/crm/common/.libs/libcrmcommon.so
> ../../lib/crm/pengine/.libs/libpe_rules.so
> ../../lib/crm/pengine/.libs/libpe_status.so ./.libs/libpengine.so
> -lglib-2.0 -lncurses ../../lib/crm/cib/.libs/libcib.so
> ../../lib/crm/transition/.libs/libtransitioner.so -lbz2 -lz -lxml2 -lc
> -luuid -lrt -ldl -lltdl
> ../../lib/crm/pengine/.libs/libpe_status.so: undefined reference to
> `stdscr'
> ../../lib/crm/pengine/.libs/libpe_status.so: undefined reference to
> `wmove'
> ../../lib/crm/pengine/.libs/libpe_status.so: undefined reference to
> `printw'
> collect2: ld returned 1 exit status
> make: *** [ptest]  1
> 
> printw/wmove - это символы из libslang, но вот libpe_status.so с ней
> линковаться не хочет, поскольку напрямую их не требует. Бага в ncurses?

странно, а у меня crm/pengine таки собрался. Вот что я сделал:

--- heartbeat-2.0.7/crm/pengine/Makefile.am     2006-06-09 23:26:04 +0300
+++ hasher/chroot/usr/src/heartbeat-2.0.7/crm/pengine/Makefile.am 
2006-09-27 12:52:39 +0300
@@ -40,6 +40,7 @@
                 $(top_builddir)/lib/clplumbing/libplumb.la              \
                 $(top_builddir)/lib/pils/libpils.la                     \
                 $(top_builddir)/lib/crm/common/libcrmcommon.la          \
+               $(top_builddir)/lib/crm/cib/libcib.la                   \
                 $(top_builddir)/lib/crm/pengine/libpe_status.la         \
                 libpengine.la                                           \
                 $(GLIBLIB)                                              \
@@ -59,6 +60,7 @@
  noinst_HEADERS = allocate.h utils.h pengine.h
  #utils.h pengine.h

+libpengine_la_LIBADD = $(top_builddir)/lib/crm/pengine/libpe_status.la 
$(top_builddir)/lib/crm/cib/libcib.la
  libpengine_la_LDFLAGS  = -version-info 3:0:0
  # -L$(top_builddir)/lib/pils -lpils -export-dynamic -module 
-avoid-version
  libpengine_la_SOURCES  = pengine.c allocate.c utils.c \


-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:23       ` Eugene Prokopiev
@ 2006-09-27 10:29         ` Igor Zubkov
  2006-09-27 10:29         ` Led
  2006-09-27 10:30         ` Igor Zubkov
  2 siblings, 0 replies; 23+ messages in thread
From: Igor Zubkov @ 2006-09-27 10:29 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 742 bytes --]

В сообщении от 27 сентября 2006 13:23 Eugene Prokopiev написал(a):
> cc1: warnings being treated as errors

Этим всё сказано.

> crm_mon.c: In function 'main':
> crm_mon.c:217: warning: implicit declaration of function 'initscr'
> crm_mon.c:218: warning: implicit declaration of function 'cbreak'
> crm_mon.c:219: warning: implicit declaration of function 'noecho'
> crm_mon.c:247: warning: implicit declaration of function 'echo'
> crm_mon.c:248: warning: implicit declaration of function 'nocbreak'
> crm_mon.c:249: warning: implicit declaration of function 'endwin'
> gmake[2]: *** [crm_mon-crm_mon.o] Error 1

Вот тут не хватает заголовочных файлов от ncurses.

-- 
Marilyn Manson - Target Audience (Narcissus Narcosis)

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:23       ` Eugene Prokopiev
  2006-09-27 10:29         ` Igor Zubkov
@ 2006-09-27 10:29         ` Led
  2006-09-27 10:30         ` Igor Zubkov
  2 siblings, 0 replies; 23+ messages in thread
From: Led @ 2006-09-27 10:29 UTC (permalink / raw)
  To: ALT Devel discussion list

В сообщении от 27 сентября 2006 13:23 Eugene Prokopiev написал(a):
> > пока собирается, посмотрим что будет ...
>
> C этим Makefile.am справились, получаем дальше:
>
> gcc -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations
> -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith
> -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline
> -Wmissing-format-attribute -Wformat=2 -Wformat-security
> -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3
> -funsigned-char -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations
> -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith
> -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline
> -Wmissing-format-attribute -Wformat=2 -Wformat-security
> -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3
> -funsigned-char -o .libs/crm_diff crm_diff-xml_diff.o
> ../../lib/clplumbing/.libs/libplumb.so
> /usr/src/heartbeat-2.0.7/lib/pils/.libs/libpils.so
> ../../lib/pils/.libs/libpils.so
> ../../lib/crm/common/.libs/libcrmcommon.so
> /usr/src/heartbeat-2.0.7/lib/apphb/.libs/libapphb.so
> ../../lib/crm/cib/.libs/libcib.so ../../lib/apphb/.libs/libapphb.so
> ../../lib/hbclient/.libs/libhbclient.so -lglib-2.0 -lbz2 -lz -lxml2 -lc
> -luuid -lrt -ldl -lltdl -Wl,--rpath -Wl,/usr/local/lib
> creating crm_diff
> if gcc -DHAVE_CONFIG_H -I. -I. -I../../linux-ha -I../../include
> -I../../include -I../../include -I../../libltdl -I../../libltdl
> -I../../linux-ha -I../../linux-ha -I../.. -I../..  -D_BSD_SOURCE
> -D__BSD_SOURCE -D__FAVOR_BSD -DHAVE_NET_ETHERNET_H
> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
> -I/usr/include/libxml2 -DHA_VARLIBDIR='"/usr/local/var/lib"' -g -O2
> -Wall -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes
> -Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings
> -Wcast-qual -Wcast-align -Wbad-function-cast -Winline
> -Wmissing-format-attribute -Wformat=2 -Wformat-security
> -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror  -ggdb3
-------------------------------------------------------------------------------^^^^^^^^
> -funsigned-char -MT crm_mon-crm_mon.o -MD -MP -MF
> ".deps/crm_mon-crm_mon.Tpo" -c -o crm_mon-crm_mon.o `test -f 'crm_mon.c'
>
> || echo './'`crm_mon.c; \
>
>          then mv -f ".deps/crm_mon-crm_mon.Tpo"
> ".deps/crm_mon-crm_mon.Po"; else rm -f ".deps/crm_mon-crm_mon.Tpo"; exit
> 1; fi
> cc1: warnings being treated as errors
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

> crm_mon.c: In function 'main':
> crm_mon.c:217: warning: implicit declaration of function 'initscr'
> crm_mon.c:218: warning: implicit declaration of function 'cbreak'
> crm_mon.c:219: warning: implicit declaration of function 'noecho'
> crm_mon.c:247: warning: implicit declaration of function 'echo'
> crm_mon.c:248: warning: implicit declaration of function 'nocbreak'
> crm_mon.c:249: warning: implicit declaration of function 'endwin'
> gmake[2]: *** [crm_mon-crm_mon.o] Error 1
> gmake[2]: Leaving directory `/usr/src/heartbeat-2.0.7/crm/admin'
> gmake[1]: *** [all-recursive] Error 1
> gmake[1]: Leaving directory `/usr/src/heartbeat-2.0.7/crm'
> make: *** [all-recursive] Error 1
>
> С этим как положено бороться?

-- 
Led.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:07       ` Eugene Prokopiev
@ 2006-09-27 10:29         ` Damir Shayhutdinov
  2006-09-27 10:41           ` Eugene Prokopiev
  0 siblings, 1 reply; 23+ messages in thread
From: Damir Shayhutdinov @ 2006-09-27 10:29 UTC (permalink / raw)
  To: ALT Devel discussion list

> > Одну из них. Какая полностью покрывает все undefined symbol, такую и брать.
>
> Бывает, что ни одна не покрывает? И тогда мне брать ту которая покрывает
> больше всего + еще какую(какие)-нибудь?
Угу, бывает надо несколько библиотек прилинковать, чтобы все
зависимости закрыть. Процесс итеративный, хотя о том, какие библиотеки
нужны иногда можно догадаться по именам символов и тогда добавить
сразу все.

Например, если символы в библиотеке libfoo.so начинаются с foo_
(например, foo_bar), а символы в библиотеке libbar.so начинаются с
bar_, тогда если в выводе "ldd -r" какой-то третьей библиотеки
появляются символы с префиксами foo_ и bar_, то ясно что
прилинковывать надо обе :)

> Вот я меняю Makefile.am, делаю только make clean, ./configure, make без
> autoreconf -fisv и вижу, что дело движется ... Почему? В моем случае это
> исключение, а обычно без autoreconf -fisv толку нет? От чего это зависит?
От даты модификации файлов "Makefile", "Makefile.in и Makefile.am".
autoreconf -fisv нужно обязательно делать при изменении configure.in
или configure.ac.

> Makefile.in вроде генерируется на основе Makefile.am с помощью
> ./configure, а ./configure я не менял.
Нет, Makefile.in генерируется из Makefile.am с помощью automake (эта
команда в числе прочих вызывается при autoreconf).

А с помощью configure из Makefile.in генерируется финальный Makefile.

> Значит autoreconf -fisv в таком случае не нужен? Или я не прав?
В принципе достаточно сделать automake. Но autoreconf надежнее :)

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:23       ` Eugene Prokopiev
  2006-09-27 10:29         ` Igor Zubkov
  2006-09-27 10:29         ` Led
@ 2006-09-27 10:30         ` Igor Zubkov
  2 siblings, 0 replies; 23+ messages in thread
From: Igor Zubkov @ 2006-09-27 10:30 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 616 bytes --]

В сообщении от 27 сентября 2006 13:23 Eugene Prokopiev написал(a):
> cc1: warnings being treated as errors
> crm_mon.c: In function 'main':
> crm_mon.c:217: warning: implicit declaration of function 'initscr'
> crm_mon.c:218: warning: implicit declaration of function 'cbreak'
> crm_mon.c:219: warning: implicit declaration of function 'noecho'
> crm_mon.c:247: warning: implicit declaration of function 'echo'
> crm_mon.c:248: warning: implicit declaration of function 'nocbreak'
> crm_mon.c:249: warning: implicit declaration of function 'endwin'

man 3X initscr

-- 
Marilyn Manson - President Dead

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:21       ` Damir Shayhutdinov
@ 2006-09-27 10:35         ` Eugene Prokopiev
  0 siblings, 0 replies; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27 10:35 UTC (permalink / raw)
  To: ALT Devel discussion list

>>libsib.la не нашлось.
> 
> Надо libcib.la искать. Буквы S и C все-таки различны :)

его тоже нету и даже после того, как с crm/pengine/Makefile.am 
расправились ...

>>Правильно ли я понимаю, что теперь мне нужно
>>добавить ее в COMMONLIBS? Пытаюсь это сделать:
> 
> Не обязательно, главное в libpe_status_la_LIBADD добавить.

Т.е. вот это вроде работает:

libpengine_la_LIBADD = $(top_builddir)/lib/crm/pengine/libpe_status.la
$(top_builddir)/lib/crm/cib/libcib.la

Но правильнее будет вместо этого написать:

libpe_status_la_LIBADD = $(top_builddir)/lib/crm/cib/libcib.la
libpengine_la_LIBADD = $(top_builddir)/lib/crm/pengine/libpe_status.la

?

-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:29         ` Damir Shayhutdinov
@ 2006-09-27 10:41           ` Eugene Prokopiev
  2006-09-27 11:26             ` Damir Shayhutdinov
  0 siblings, 1 reply; 23+ messages in thread
From: Eugene Prokopiev @ 2006-09-27 10:41 UTC (permalink / raw)
  To: ALT Devel discussion list

Damir Shayhutdinov пишет:
>>>Одну из них. Какая полностью покрывает все undefined symbol, такую и брать.
>>
>>Бывает, что ни одна не покрывает? И тогда мне брать ту которая покрывает
>>больше всего + еще какую(какие)-нибудь?
> 
> Угу, бывает надо несколько библиотек прилинковать, чтобы все
> зависимости закрыть. Процесс итеративный, хотя о том, какие библиотеки
> нужны иногда можно догадаться по именам символов и тогда добавить
> сразу все.
> 
> Например, если символы в библиотеке libfoo.so начинаются с foo_
> (например, foo_bar), а символы в библиотеке libbar.so начинаются с
> bar_, тогда если в выводе "ldd -r" какой-то третьей библиотеки
> появляются символы с префиксами foo_ и bar_, то ясно что
> прилинковывать надо обе :)

Первый раз, когда я имел дело с --as-needed, именно так и оказалось, 
поэтому тот опыт мне не пригодился :)

>>Вот я меняю Makefile.am, делаю только make clean, ./configure, make без
>>autoreconf -fisv и вижу, что дело движется ... Почему? В моем случае это
>>исключение, а обычно без autoreconf -fisv толку нет? От чего это зависит?
> 
> От даты модификации файлов "Makefile", "Makefile.in и Makefile.am".
> autoreconf -fisv нужно обязательно делать при изменении configure.in
> или configure.ac.
> 
> 
>>Makefile.in вроде генерируется на основе Makefile.am с помощью
>>./configure, а ./configure я не менял.
> 
> Нет, Makefile.in генерируется из Makefile.am с помощью automake (эта
> команда в числе прочих вызывается при autoreconf).
> 
> А с помощью configure из Makefile.in генерируется финальный Makefile.
> 
> 
>>Значит autoreconf -fisv в таком случае не нужен? Или я не прав?
> 
> В принципе достаточно сделать automake. Но autoreconf надежнее :)

а каким тогда образом у меня после make clean, ./configure, make 
Makefile.am все же перегенеровался (или нет)? Это сделал ./configure, 
вызвав automake у себя внутри?

-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:28       ` Eugene Prokopiev
@ 2006-09-27 10:46         ` Konstantin A. Lepikhov
  0 siblings, 0 replies; 23+ messages in thread
From: Konstantin A. Lepikhov @ 2006-09-27 10:46 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1496 bytes --]

Hi Eugene!

Wednesday 27, at 02:28:45 PM you wrote:

<skip>
> странно, а у меня crm/pengine таки собрался. Вот что я сделал:
> 
> --- heartbeat-2.0.7/crm/pengine/Makefile.am     2006-06-09 23:26:04 +0300
> +++ hasher/chroot/usr/src/heartbeat-2.0.7/crm/pengine/Makefile.am 
> 2006-09-27 12:52:39 +0300
> @@ -40,6 +40,7 @@
>                  $(top_builddir)/lib/clplumbing/libplumb.la              \
>                  $(top_builddir)/lib/pils/libpils.la                     \
>                  $(top_builddir)/lib/crm/common/libcrmcommon.la          \
> +               $(top_builddir)/lib/crm/cib/libcib.la                   \
>                  $(top_builddir)/lib/crm/pengine/libpe_status.la         \
>                  libpengine.la                                           \
>                  $(GLIBLIB)                                              \
> @@ -59,6 +60,7 @@
>   noinst_HEADERS = allocate.h utils.h pengine.h
>   #utils.h pengine.h
> 
> +libpengine_la_LIBADD = $(top_builddir)/lib/crm/pengine/libpe_status.la 
> $(top_builddir)/lib/crm/cib/libcib.la
>   libpengine_la_LDFLAGS  = -version-info 3:0:0
>   # -L$(top_builddir)/lib/pils -lpils -export-dynamic -module 
> -avoid-version
>   libpengine_la_SOURCES  = pengine.c allocate.c utils.c \
это я тоже сделал, а вот для libpe_status надо добавить CURSESLIBS в
LIBADD. И далее уже все идет нормально. В-общем, сейчас вам вышлю
nosrc.rpm, который у меня полностью собирается :)

-- 
WBR et al.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [devel] Сборка heartbeat с --as-needed
  2006-09-27 10:41           ` Eugene Prokopiev
@ 2006-09-27 11:26             ` Damir Shayhutdinov
  0 siblings, 0 replies; 23+ messages in thread
From: Damir Shayhutdinov @ 2006-09-27 11:26 UTC (permalink / raw)
  To: ALT Devel discussion list

> а каким тогда образом у меня после make clean, ./configure, make
> Makefile.am все же перегенеровался (или нет)? Это сделал ./configure,
> вызвав automake у себя внутри?
Да, если дата изменения Makefile.am больше даты изменения Makefile.in,
то он автоматически вызывает automake. Это можно даже увидеть.

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2006-09-27 11:26 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-09-27  6:21 [devel] Сборка heartbeat с --as-needed Eugene Prokopiev
2006-09-27  6:30 ` Alexey I. Froloff
2006-09-27  6:52   ` Eugene Prokopiev
2006-09-27  7:39     ` Konstantin A. Lepikhov
2006-09-27  8:01       ` Eugene Prokopiev
2006-09-27  8:12 ` Damir Shayhutdinov
2006-09-27  9:20   ` Eugene Prokopiev
2006-09-27  9:39     ` Damir Shayhutdinov
2006-09-27 10:07       ` Eugene Prokopiev
2006-09-27 10:29         ` Damir Shayhutdinov
2006-09-27 10:41           ` Eugene Prokopiev
2006-09-27 11:26             ` Damir Shayhutdinov
2006-09-27 10:06     ` Konstantin A. Lepikhov
2006-09-27 10:28       ` Eugene Prokopiev
2006-09-27 10:46         ` Konstantin A. Lepikhov
2006-09-27 10:07     ` Eugene Prokopiev
2006-09-27 10:21       ` Damir Shayhutdinov
2006-09-27 10:35         ` Eugene Prokopiev
2006-09-27 10:23       ` Eugene Prokopiev
2006-09-27 10:29         ` Igor Zubkov
2006-09-27 10:29         ` Led
2006-09-27 10:30         ` Igor Zubkov
2006-09-27 10:11     ` Konstantin A. Lepikhov

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