export LDFLAGS="-all-static -static-libgcc" [ $? -eq 0 ] && make V=1 && make check && make install
popd [12:11:05] <andrew_b> Кажись, у Ильи туннель упал. Так что я запулить не смогу. [12:12:36] <slavazanko/w> вот блин. OpenVPN поставить сможешь? У меня есть сервачок, на 443-м порту висит OpenVPN-сервер... [12:12:51] <slavazanko/w> сам им пользовался, когда у нас в конторе были жуткие ограждения на трафик [12:13:28] <andrew_b> А ты серьёзное что-то накоммитил? [12:14:04] <slavazanko/w> ну... есть немного серьёзного. Ща попробую выложить патчи из бранча. которые на мастер применишь. [12:14:25] <andrew_b> Почему на мастер? [12:14:33] <andrew_b> А на 2129_glib_static? [12:15:08] <slavazanko/w> я перебазировал 2129_glib_static если ты отпочкуешься сейчас от мастера и применишь патчи. то получишь копию 2129_glib_static [12:15:22] <slavazanko/w> http://www.midnight-commander.org/nopaste/static/ [12:15:27] <slavazanko/w> пробуй скачать [12:15:46] <andrew_b> Перебазировать на мастер я и сам могу. У меня есть мастер и бранч. [12:16:08] <slavazanko/w> ну значит, ребайзай и бери только второй коммит :) [12:16:19] <slavazanko/w> второй патч с нашего нопаста [12:18:18] <andrew_b> Собираю... [12:22:01] <andrew_b> gpm перестал находиться [12:22:15] <andrew_b> checking for Gpm_Repeat in -lgpm... no configure: error: libgpm is missing or older than 0.18 [12:23:43] <andrew_b> configure:34318: checking for Gpm_Repeat in -lgpm configure:34353: gcc -std=gnu99 -o conftest -g -O2 -static -static-libgcc conftest.c -lgpm >&5 /usr/lib/gcc/i586-alt-linux/4.4.1/../../../libgpm.a(liblow.o): In function `Gpm_Open': liblow.c:(.text+0xdb4): undefined reference to `cur_term' liblow.c:(.text+0xdd0): undefined reference to `setupterm' liblow.c:(.text+0xde4): undefined reference to `tigetstr' liblow.c:(.text+0xe81): undefined reference to `cur_term' liblow.c:(.text+0xe8d): undefined reference to `del_curterm' liblow.c:(.text+0xe95): undefined reference to `set_curterm' collect2: ld returned 1 exit status [12:24:49] <andrew_b> tinfo нужно. [12:24:55] <andrew_b> Ща. [12:26:58] <andrew_b> Хотя сомневаюсь. gcc -std=gnu99 -o conftest -g -O2 -static -static-libgcc conftest.c -lgpm Нету -ltinfo [12:27:07] <andrew_b> Ну да, так и есть. [12:27:52] <andrew_b> Ладно, без tinfo пробую. [12:28:03] <slavazanko/w> z ghjcnj cj,bhfk ,tp пзь [12:28:08] <andrew_b> Без gpm. [12:28:14] <slavazanko/w> я просто собирал без пзь [12:28:19] <slavazanko/w> плять. [12:28:22] <andrew_b> :) [12:28:24] <slavazanko/w> gpm [12:29:11] <slavazanko/w> хотя все вопросы статической сборки надо будет порешать [12:29:19] <andrew_b> Конфигур прошёл. [12:29:41] <slavazanko/w> линковка не проходит [12:30:27] <andrew_b> *** Warning: Linking the shared library libmc.la against the *** static library /usr/lib/libglib-2.0.a is not portable! [12:30:53] <slavazanko/w> ты пробуешь моим configure.mc собирать? [12:31:08] <slavazanko/w> там отрублена libmc.so [12:31:15] <andrew_b> Не совсем. [12:31:33] <andrew_b> Кое-что взял оотуда. [12:31:44] <andrew_b> Линковка не прошла. [12:32:25] <slavazanko/w> undefined reference to `glib_slice__alloc_semaphore' ? [12:33:00] <slavazanko/w> там много ошибок, просто первая эта [12:33:11] <andrew_b> Нет. У меня сработало --as-needed. Порядок либ не тот. [12:34:52] <andrew_b> Что-то в моих пакетах не хватает зависимостей. :( [12:35:05] <andrew_b> pcre.a нужна. [12:35:50] il.smind зашёл в конференцию [12:36:39] <slavazanko/w> ты с pcre-regexp собираешь? собирай с глибовыми - там pcre есть в составе libglib.a [12:36:52] <slavazanko/w> О! илья! поднимай туннель. Андрюха страдает [12:37:08] <andrew_b> Гм. У меня слинковалось. [12:37:29] <andrew_b> 19049K :) [12:37:41] <il.smind > ща [12:37:46] <slavazanko/w> слинковалось? гм. Показуй как именно собирал [12:37:54] <il.smind > а стрипни [12:37:57] <andrew_b> После стрипа 1.5М [12:38:02] <slavazanko/w> намана [12:38:11] <slavazanko/w> ldd mc? [12:38:48] <andrew_b> $ ldd mc linux-gate.so.1 => (0xb7feb000) libslang.so.2 => /usr/lib/libslang.so.2 (0xb7eec000) libc.so.6 => /lib/libc.so.6 (0xb7d94000) libdl.so.2 => /lib/libdl.so.2 (0xb7d8f000) libm.so.6 => /lib/libm.so.6 (0xb7d65000) /lib/ld-linux.so.2 (0xb7fec000) [12:39:14] <slavazanko/w> libslang.so.2 - его бы тоже научиться статиком... [12:39:19] <slavazanko/w> рассказуй, кк собирал. [12:39:28] <andrew_b> На это тикет есть отдельный. [12:42:12] <andrew_b> Ну и c ncurses заодно тоже надо бы.
Опции такие: --disable-rpath \ --enable-maintainer-mode \ --without-included-gettext \ --with-screen=slang \ --enable-charset=yes \ --enable-nls \ --enable-largefile \ --enable-background \ --with-subshell \ --with-gpm-mouse=no \ --with-edit \ --with-diff-viewer \ --with-x=no \ --enable-vfs \ --enable-vfs-cpio \ --enable-vfs-tar \ --enable-vfs-extfs \ --enable-vfs-sfs \ --enable-vfs-fish \ --enable-vfs-ftp \ --enable-vfs-undelfs=no \ --enable-vfs-smb=no \ [12:42:40] <slavazanko/w> и всё? [12:43:14] <andrew_b> Это в другом файле. А основной скрипт
if test ! -f $top_srcdir/configure -o ! -d $top_srcdir/config; then $top_srcdir/autogen.sh $@ \ --enable-maintainer-mode \ --with-glib-static=yes \ --prefix=$BUILD_ROOT/INSTALL_ROOT fi &&
/usr/lib/libglib-2.0.a затесалась среди объектников mc, а должна после. [12:48:58] <andrew_b> Иначе линковка с --as-needed не проходит. [12:49:21] <andrew_b> Блин. [12:49:24] <andrew_b> Потерял. [12:49:32] <slavazanko/w> а компилишь с моим патчем или без? [12:49:35] <andrew_b> cons.handler.o args.o background.o clipboard.o events_init.o execute.o help.o keybind-defaults.o learn.o main.o setup.o subshell.o textconf.o util.o selcodepage.o /usr/lib/libglib-2.0.a vfs/.libs/libmc-vfs.a viewer/.libs/libmcviewer.a -L/usr/lib filemanager/.libs/libmcfilemanager.a diffviewer/.libs/libdiffviewer.a editor/.libs/libedit.a ../lib/.libs/libmc.a -lslang [12:49:39] <andrew_b> С твоим. [12:49:46] <andrew_b> Откатить? [12:50:07] <slavazanko/w> нет, не надо [12:50:19] <andrew_b> Поздно. :) [12:50:45] <slavazanko/w> мой патч просто немного переупорядочивает. ничего в логике серьёзного не меняет [12:54:55] <andrew_b> Да, без твоего патча ещё хуже. /usr/lib/libglib-2.0.a вообще в списке нет. [12:55:07] <slavazanko/w> угу [12:55:18] <andrew_b> И список ошибок горааааздо длинее. [12:55:40] <andrew_b> А кто же виноват? [12:58:12] <andrew_b> 34 mc_LDADD = \ 35 $(GLIB_LIBS) \ 36 vfs/libmc-vfs.la \ 37 viewer/libmcviewer.la \ 38 filemanager/libmcfilemanager.la \ 39 $(DIFFLIB) $(EDITLIB) \ 40 $(top_builddir)/lib/libmc.la [12:58:35] <slavazanko/w> я переместил в конец. Ошибок стало меньше. но остались [12:58:37] <andrew_b> Надо $(GLIB_LIBS) в конец перенести. [12:58:56] <slavazanko/w> угу. переместил, но не коммитнул ещё [13:00:31] <slavazanko/w> libtool: link: gcc -std=gnu99 -I/home/slavaz/work/mc-devel/git-review -g -ggdb3 -static-libgcc -o cons.saver cons_saver-cons.saver.o libtool: link: gcc -std=gnu99 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/home/slavaz/work/mc-devel/git-review -g -ggdb3 -static-libgcc -o mc cons.handler.o args.o background.o clipboard.o events_init.o execute.o help.o keybind-defaults.o learn.o main.o setup.o subshell.o textconf.o util.o selcodepage.o vfs/.libs/libmc-vfs.a viewer/.libs/libmcviewer.a filemanager/.libs/libmcfilemanager.a diffviewer/.libs/libdiffviewer.a editor/.libs/libedit.a ../lib/.libs/libmc.a -lslang /usr/lib64/libglib-2.0.a /usr/lib64/libglib-2.0.a(gslice.o):(.note.stapsdt+0x24): undefined reference to `glib_slice__alloc_semaphore' /usr/lib64/libglib-2.0.a(gslice.o):(.note.stapsdt+0x70): undefined reference to `glib_slice__free_semaphore' /usr/lib64/libglib-2.0.a(gdataset.o):(.note.stapsdt+0x24): undefined reference to `glib_quark__new_semaphore' /usr/lib64/libglib-2.0.a(gdataset.o):(.note.stapsdt+0x70): undefined reference to `glib_quark__new_semaphore' /usr/lib64/libglib-2.0.a(gdataset.o):(.note.stapsdt+0xbc): undefined reference to `glib_quark__new_semaphore' /usr/lib64/libglib-2.0.a(gdataset.o):(.note.stapsdt+0x108): undefined reference to `glib_quark__new_semaphore' /usr/lib64/libglib-2.0.a(gmain.o): In function `g_get_monotonic_time': (.text+0x2e42): undefined reference to `clock_gettime' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x24): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x7c): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0xd0): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x128): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x17c): undefined reference to `glib_mem__realloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x1d8): undefined reference to `glib_mem__realloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x230): undefined reference to `glib_mem__free_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x274): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x2cc): undefined reference to `glib_mem__realloc_semaphore' collect2: ld returned 1 exit status [13:00:44] <slavazanko/w> всё равно лажа, блин [13:02:02] <andrew_b> Гм. Сдаётся мне, все эти glib_mem__alloc, glib_mem__realloc указывают куда-то на другую либу. [13:02:30] <andrew_b> Или наоборот. [13:02:36] <andrew_b> Кто-то их хочет. [13:05:08] <slavazanko/w> ну хз. У меня вроде всё стоит что надо: glib2.x86_64 2.28.8-1.fc15 @updates glib2-devel.x86_64 2.28.8-1.fc15 @updates glib2-static.x86_64 2.28.8-1.fc15 @updates [13:07:45] <andrew_b> А ты напиши какую-нибудь простую программу с glib и слинкуй статиком. [13:08:11] <andrew_b> http://midnight-commander.org/nopaste/test-gMainloop.tar.gz [13:08:27] <slavazanko/w> угу, попробую [13:09:37] <andrew_b> Ну чо, у меня осталась ругань на pcre, которой нет в списке линковщика.
/usr/lib/libglib-2.0.a(gregex.o): In function `g_regex_get_string_number': gregex.c:(.text+0x38f): undefined reference to `pcre_get_stringnumber' /usr/lib/libglib-2.0.a(gregex.o): In function `g_regex_get_capture_count': gregex.c:(.text+0x426): undefined reference to `pcre_fullinfo' /usr/lib/libglib-2.0.a(gregex.o): In function `g_regex_get_max_backref': gregex.c:(.text+0x456): undefined reference to `pcre_fullinfo' /usr/lib/libglib-2.0.a(gregex.o): In function `g_regex_unref': gregex.c:(.text+0x727): undefined reference to `pcre_free' gregex.c:(.text+0x737): undefined reference to `pcre_free' /usr/lib/libglib-2.0.a(gregex.o): In function `match_info_new': gregex.c:(.text+0x880): undefined reference to `pcre_fullinfo' /usr/lib/libglib-2.0.a(gregex.o): In function `g_regex_match_all_full': gregex.c:(.text+0x1142): undefined reference to `pcre_dfa_exec' /usr/lib/libglib-2.0.a(gregex.o): In function `g_regex_new': gregex.c:(.text+0x137c): undefined reference to `pcre_compile2' gregex.c:(.text+0x13a5): undefined reference to `pcre_fullinfo' gregex.c:(.text+0x1409): undefined reference to `pcre_study' gregex.c:(.text+0x14e7): undefined reference to `pcre_config' gregex.c:(.text+0x14fe): undefined reference to `pcre_config' gregex.c:(.text+0x1545): undefined reference to `pcre_fullinfo' /usr/lib/libglib-2.0.a(gregex.o): In function `get_matched_substring_number': gregex.c:(.text+0x1b60): undefined reference to `pcre_get_stringtable_entries' gregex.c:(.text+0x1bdb): undefined reference to `pcre_get_stringnumber' /usr/lib/libglib-2.0.a(gregex.o): In function `g_match_info_next': gregex.c:(.text+0x20c8): undefined reference to `pcre_exec' collect2: ld returned 1 exit status [13:09:55] <andrew_b> Если я её добавлю, то всё слинкуется. [13:11:22] <slavazanko/w> да, это надо будет поправить [13:23:39] <slavazanko/w> судя по всему, действительно нет этих функций... вот бля [13:25:34] <andrew_b> ? [13:25:47] <andrew_b> Не линкуется простая прога? [13:25:56] <slavazanko/w> угу [13:26:09] <andrew_b> Пиши в багзиллу. [13:27:00] <andrew_b> И Гугл ничего про них не знает. [13:27:12] <andrew_b> Про символы энти. [13:27:55] <slavazanko/w> $ cat test_glib.static.c: #include <glib.h>
int main(void) { char *test; test = g_new0(char,1); g_free(test);
return 0; }
$ gcc $(pkg-config --cflags glib-2.0) test_glib.static.c /usr/lib64/libglib-2.0.a /usr/lib64/libglib-2.0.a(gslice.o):(.note.stapsdt+0x24): undefined reference to `glib_slice__alloc_semaphore' /usr/lib64/libglib-2.0.a(gslice.o):(.note.stapsdt+0x70): undefined reference to `glib_slice__free_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x24): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x7c): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0xd0): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x128): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x17c): undefined reference to `glib_mem__realloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x1d8): undefined reference to `glib_mem__realloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x230): undefined reference to `glib_mem__free_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x274): undefined reference to `glib_mem__alloc_semaphore' /usr/lib64/libglib-2.0.a(gmem.o):(.note.stapsdt+0x2cc): undefined reference to `glib_mem__realloc_semaphore' /usr/lib64/libglib-2.0.a(gdataset.o):(.note.stapsdt+0x24): undefined reference to `glib_quark__new_semaphore' /usr/lib64/libglib-2.0.a(gdataset.o):(.note.stapsdt+0x70): undefined reference to `glib_quark__new_semaphore' /usr/lib64/libglib-2.0.a(gdataset.o):(.note.stapsdt+0xbc): undefined reference to `glib_quark__new_semaphore' /usr/lib64/libglib-2.0.a(gdataset.o):(.note.stapsdt+0x108): undefined reference to `glib_quark__new_semaphore' /usr/lib64/libglib-2.0.a(gmain.o): In function `g_get_monotonic_time': (.text+0x2e42): undefined reference to `clock_gettime' collect2: выполнение ld завершилось с кодом возврата 1 [13:29:34] <andrew_b> А glib какая? [13:30:01] <slavazanko/w> 2.28.2 [13:30:12] <slavazanko/w> не, 2.28.8 [13:35:28] <slavazanko/w> Андрей. попробуй компильнуть мой маленький примерчик. перед отправкой хочу убедиться. что у тебя всё гуд будет [13:35:55] <andrew_b> У меня старая glib. [13:36:10] <slavazanko/w> а [13:36:12] <andrew_b> 2.22.2 [13:36:45] <slavazanko/w> ну тогда огонь: https://bugzilla.redhat.com/show_bug.cgi?id=718994 [13:37:16] <andrew_b> В коде нет таких символов. [13:39:14] <andrew_b> Попробуй наоборот:
gcc $(pkg-config --cflags glib-2.0) /usr/lib64/libglib-2.0.a test_glib.static.c [13:39:33] <slavazanko/w> /tmp/cc1DZUPZ.o: In function `main': test_glib.static.c:(.text+0x13): undefined reference to `g_malloc0_n' test_glib.static.c:(.text+0x23): undefined reference to `g_free' collect2: выполнение ld завершилось с кодом возврата 1 [13:40:01] <andrew_b> Да, я лажанул. [13:40:10] <andrew_b> Либа в конце, всё правильно. [13:58:28] <slavazanko/w> ладно, пока отложу статическую линковку, займусь ipv6 в ftp там ещё метукс вроде какой-то бранч влепил по линковке... [14:26:56] <andrew_b> diff --git a/configure.ac b/configure.ac index 7176b4e..55d0eec 100644 --- a/configure.ac +++ b/configure.ac @@ -265,7 +265,8 @@ linux*) [AC_MSG_ERROR([libgpm is missing or older than 0.18])] else [AC_MSG_WARN([libgpm is missing or older than 0.18])] - fi + fi, + -ltinfo ) fi ;;
Решает проблему с gpm у меня. [14:43:25] <slavazanko/w> надо будет внести в бранч [14:44:47] <slavazanko/w> по поводу ipv6 - знаю, где сломалось: --- a/lib/vfs/path.c +++ b/lib/vfs/path.c @@ -193,7 +193,11 @@ vfs_path_build_url_params_str (vfs_path_element_t * element) { if ((element->user != NULL) || (element->password != NULL)) g_string_append_c (buffer, '@'); + if (element->ipv6) + g_string_append_c (buffer, '['); g_string_append (buffer, element->host); + if (element->ipv6) + g_string_append_c (buffer, ']'); }