При сборке bytecode-only версии ocaml нарвался на то, что собранные в /usr/bin программы просят дать им ocaml код для исполнения вместо выполнения своих функций. Оказываетя, что ocaml при сборке bytecode бинарей использует секцию debuginfo для размещения bytecode. Предлагаю отключить debuginfo для всех бинарей, у которых в конце есть сигнатура "Caml1999X0[0-9][0-9]" $ tail -c 12 /usr/src/tmp/ocaml-findlib-buildroot/usr/bin/ocamlfind Caml1999X031 В принципе помогает %set_debuginfo_skiplist %_bindir/* Но т.к. это придётся делать в каждом потенциально неизвестном пакете, то лучше для всех подобных файлов добавить исключение на уровне rpm-build
* Есть ли инфа или спецификация на такое необычное использование .debug_* секций? * Есть ли примеры бинарей? * Что сделали в Федоре?
Кстати, разве не вариант сделать %set_debuginfo_skiplist %_bindir/* в rpm-build-ocaml?
сейчас я дособираю сборочное задание с ocaml - пойму сколько бинарей это затрагивает. Есть вероятность, что совсем немного - эта схема линковки старая и в современных проектах от неё ушли.
подробнее про этот режим сборки можно почитать тут: https://v2.ocaml.org/releases/4.14/htmlman/comp.html -custom
Спасибо. > Unix: Never use the strip command on executables produced by ocamlc > -custom, this would remove the bytecode part of the executable. Пока предположу, что с байткодом там не секция .debug_info а какая-то другая. И надо использовать %brp_strip_none %_bindir/*, а может даже %brp_strip_debug хватит.
%brp_strip_none %_bindir/* не помогает, я первым делом попробовал.
воспроизводится при сборке пакета ocaml-findlib из задания 333652 для архитектуры i586 после установки надо запустить ocamlfind из %buildroot Но сейчас он собран в режиме -no-custom - надо убрать это из configure
(In reply to Anton Farygin from comment #4) > подробнее про этот режим сборки можно почитать тут: > https://v2.ocaml.org/releases/4.14/htmlman/comp.html > -custom -custom выглядит как достаточно жуткая вещь. Возможно, нам стоит вслед за dune[1][2] переходить на -output-complete-exe[3]. [1] https://github.com/ocaml/dune/issues/2505 [2] https://github.com/ocaml/dune/pull/2692 [3] https://github.com/ocaml/ocaml/pull/8872 "The idea is to deprecate -custom in a follow-up PR." Это сработало для unison (https://git.altlinux.org/tasks/341561/, проверял на loongarch64, в хешере на i586 прошёл начало туторила) и coccinelle (в Сизифе, тоже проверял).
Да, согласен. custom почти не осталось в репозитории.
> Это сработало для unison (...) и coccinelle (в Сизифе, тоже проверял). @iv, Про coccinelle, а почему только для этих архитектур а не для всех? %ifnarch %ocaml_native_arch # see https://bugzilla.altlinux.org/48475 find . -name Makefile | xargs sed -r -i 's/-custom\s/-output-complete-exe /g' %endif
(In reply to Vitaly Chikunov from comment #10) > > Это сработало для unison (...) и coccinelle (в Сизифе, тоже проверял). > > @iv, Про coccinelle, а почему только для этих архитектур а не для всех? Скорее всего, я следовал заведённой ещё в %e2k традиции не трогать то, что работает.
А у нас кроме i586 остались ещё не нативные архитектуры ?
(In reply to Anton Farygin from comment #12) > А у нас кроме i586 остались ещё не нативные архитектуры ? Как минимум loongarch64 и %e2k.
для loongarch есть вот такой PR: https://github.com/ocaml/ocaml/pull/11974