* [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 @ 2023-09-22 22:51 Evgeny Sinelnikov 2023-09-23 8:26 ` Vitaly Chikunov 0 siblings, 1 reply; 9+ messages in thread From: Evgeny Sinelnikov @ 2023-09-22 22:51 UTC (permalink / raw) To: ALT Linux Team development discussions Доброй ночи, хочу обратиться за помощью с проблемой с debugedit при сборке ghc-9.2.8 на aarch64. _________________________ При сборке новой версии ghc на aarch64 отваливается find-debuginfo-files. Для x86_64, i586 и ppc64le сборка прошла успешно. Из относительно понятного вижу только три строки: debugedit: Cannot handle 8-byte build ID getOutputFrom(): Broken pipe Command exited with non-zero status 1 В скрипте не отрабатывает следующий кусок: ... debugf=./usr/lib/debug$f.debug ... id=$(debugedit -n -i "$debugf") ... То есть на aarch64 debugedit отваливается в функции handle_build_id(): /* Compute a fresh build ID bit-string from the editted file contents. */ ... Судя по всему для получившихся бинарей не поддерживается вычисление хеш-суммы: /* For now we only handle 16 byte (128 bits) with md5 or 20 bytes (160 bits) with sha1. */ _________________________ Вопрос. Что с этим можно сделать? _________________________ #330113 FAILING #1 [locked] sisyphus ghc.git=9.2.8-alt1 https://git.altlinux.org/tasks/330113/build/100/aarch64/log ... [01:34:52] Requires(rpmlib): rpmlib(SetVersions) [01:34:52] Requires(pre): haskell-filetrigger >= 0.0.5-alt3 [01:34:52] Requires(postun): haskell-filetrigger >= 0.0.5-alt3 [01:34:52] Finding debuginfo files (using /usr/lib/rpm/find-debuginfo-files) [01:34:52] Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.QXqo8S [01:34:52] debugedit: Cannot handle 8-byte build ID [01:34:52] getOutputFrom(): Broken pipe [01:34:52] Command exited with non-zero status 1 [01:34:52] 31416.24user 1994.08system 1:34:46elapsed 587%CPU (0avgtext+0avgdata 5536976maxresident)k [01:34:52] 0inputs+0outputs (0major+361226973minor)pagefaults 0swaps [01:34:52] hsh-rebuild: rebuild of `ghc9.2.8-9.2.8-alt1.src.rpm' failed. -- Sin (Sinelnikov Evgeny) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 2023-09-22 22:51 [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 Evgeny Sinelnikov @ 2023-09-23 8:26 ` Vitaly Chikunov 0 siblings, 1 reply; 9+ messages in thread From: Vitaly Chikunov @ 2023-09-23 8:26 UTC (permalink / raw) To: ALT Linux Team development discussions Hi, On Sat, Sep 23, 2023 at 01:51:59AM +0300, Evgeny Sinelnikov wrote: > хочу обратиться за помощью с проблемой с debugedit при сборке > ghc-9.2.8 на aarch64. > _________________________ > > При сборке новой версии ghc на aarch64 отваливается > find-debuginfo-files. Для x86_64, i586 и ppc64le сборка прошла > успешно. > > Из относительно понятного вижу только три строки: > debugedit: Cannot handle 8-byte build ID > getOutputFrom(): Broken pipe > Command exited with non-zero status 1 > > В скрипте не отрабатывает следующий кусок: > ... > debugf=./usr/lib/debug$f.debug > ... > id=$(debugedit -n -i "$debugf") > ... > > То есть на aarch64 debugedit отваливается в функции handle_build_id(): > /* Compute a fresh build ID bit-string from the editted file contents. */ > ... > Судя по всему для получившихся бинарей не поддерживается вычисление хеш-суммы: > /* For now we only handle 16 byte (128 bits) with md5 or 20 bytes > (160 bits) with sha1. */ > _________________________ > > Вопрос. Что с этим можно сделать? eu-readelf -n на бинарник. Там должно быт скажем так: Note section [ 3] '.note.gnu.build-id' of 36 bytes at offset 0x378: Owner Data size Type GNU 20 GNU_BUILD_ID Build ID: a41b2e353297560c24bed084d721b22dd6ca7b15 Судя по ошибке там 8-байтовое значение. Нужно - выяснить почему компилятор (только) для этой архитектуры поставил такое короткое значение и исправить это. ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <7b93804d-320b-fb73-f73d-041f63b056b4@basealt.ru>]
* Re: [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 @ 2023-09-23 9:36 ` Dmitry V. Levin 2023-09-23 9:44 ` Ilya Kurdyukov 0 siblings, 1 reply; 9+ messages in thread From: Dmitry V. Levin @ 2023-09-23 9:36 UTC (permalink / raw) To: ALT Devel discussion list On Sat, Sep 23, 2023 at 03:44:57PM +0700, Ilya Kurdyukov wrote: > Видимо для aarch64 был использован xxhash. > > Возможно помогут ссылки из этого обсуждения: > > https://github.com/rpm-software-management/rpm/issues/950 > > Например это, из упомянутого там коммита: > > > --ldflags=-Wl,--build-id=sha1 Этой истории уже много лет, поэтому удивительно, что где-то до сих пор по умолчанию создаётся 64-битный build id. С точки зрения репозитория важно не столько, чтобы конкретный пакет был исправлен, сколько чтобы этого не происходило по умолчанию. -- ldv ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 2023-09-23 9:36 ` Dmitry V. Levin @ 2023-09-23 9:44 ` Ilya Kurdyukov 2023-09-25 14:26 ` Evgeny Sinelnikov 2023-09-27 23:05 ` Arseny Maslennikov 0 siblings, 2 replies; 9+ messages in thread From: Ilya Kurdyukov @ 2023-09-23 9:44 UTC (permalink / raw) To: devel On 9/23/23 16:36, Dmitry V. Levin wrote: >> > --ldflags=-Wl,--build-id=sha1 > Этой истории уже много лет, поэтому удивительно, что где-то до сих пор > по умолчанию создаётся 64-битный build id. С точки зрения репозитория > важно не столько, чтобы конкретный пакет был исправлен, сколько чтобы > этого не происходило по умолчанию. > ghc (смотрел спеку 8.6.4) для armh/aarch64 собирается через LLVM: * Thu Aug 17 2023 Anton Zhukharev <ancieg@altlinux.org> 8.6.4-alt9 - Fixed FTBFS. - Built with llvm12.0 on armh and aarch64. - Stored LLVM version in %%ghc_llvm_version macro. Это опции LLD, линковщика из LLVM: --build-id=value Generate a build ID note. value may be one of fast, md5, sha1, tree, uuid, 0xhex-string, and none. tree is an alias for sha1. Build-IDs of type fast, md5, sha1, and tree are calculated from the object contents. fast is not intended to be cryptographically secure. --build-id Synonym for --build-id=fast. Если девятый ghc собирается так же - значит проблема в конфигурации LLVM, наверное там указано --build-id, что превращается в --build-id=fast. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 2023-09-23 9:44 ` Ilya Kurdyukov @ 2023-09-25 14:26 ` Evgeny Sinelnikov 2023-09-27 23:05 ` Arseny Maslennikov 1 sibling, 0 replies; 9+ messages in thread From: Evgeny Sinelnikov @ 2023-09-25 14:26 UTC (permalink / raw) To: ALT Linux Team development discussions Приветствую. сб, 23 сент. 2023 г. в 12:44, Ilya Kurdyukov <ilyakurdyukov@basealt.ru>: > > On 9/23/23 16:36, Dmitry V. Levin wrote: > >> > --ldflags=-Wl,--build-id=sha1 > > Этой истории уже много лет, поэтому удивительно, что где-то до сих пор > > по умолчанию создаётся 64-битный build id. С точки зрения репозитория > > важно не столько, чтобы конкретный пакет был исправлен, сколько чтобы > > этого не происходило по умолчанию. > > > ghc (смотрел спеку 8.6.4) для armh/aarch64 собирается через LLVM: [...] > Это опции LLD, линковщика из LLVM: > [...] > Если девятый ghc собирается так же - значит проблема в конфигурации > LLVM, наверное там указано --build-id, что превращается в --build-id=fast. ghc/mk/config.mk.in: [...] # Set to YES if ld has the --build-id flag. Sometimes we need to # disable it with --build-id=none. LdHasBuildId<--> = @LdHasBuildId@ [...] Далее в коде не так много упоминаний об этом: ghc/compiler/GHC/Driver/Pipeline/Execute.hs [...] Note [Merging object files for GHCi] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GHCi can usually loads standard linkable object files using GHC's linker implementation. However, most users build their projects with -split-sections, meaning that such object files can have an extremely high number of sections. As the linker must map each of these sections individually, loading such object files is very inefficient. To avoid this inefficiency, we use the linker's `-r` flag and a linker script to produce a merged relocatable object file. This file will contain a singe text section section and can consequently be mapped far more efficiently. As gcc tends to do unpredictable things to our linker command line, we opt to invoke ld directly in this case, in contrast to our usual strategy of linking via gcc. -} -- | See Note [Object merging]. joinObjectFiles :: HscEnv -> [FilePath] -> FilePath -> IO () joinObjectFiles hsc_env o_files output_fn | can_merge_objs = do let toolSettings' = toolSettings dflags ldIsGnuLd = toolSettings_ldIsGnuLd toolSettings' ld_r args = GHC.SysTools.runMergeObjects (hsc_logger hsc_env) (hsc_tmpfs hsc_env) (hsc_dflags hsc_env) ( map GHC.SysTools.Option ld_build_id ++ [ GHC.SysTools.Option "-o", GHC.SysTools.FileOption "" output_fn ] ++ args) -- suppress the generation of the .note.gnu.build-id section, -- which we don't need and sometimes causes ld to emit a -- warning: ld_build_id | toolSettings_ldSupportsBuildId toolSettings' = ["--build-id=none"] | otherwise = [] [...] Ну, то есть, немного наоборот, вероятно, получается. --build-id явно не указывается, а если и указывается, то в виде --build-id=none. При этом вот такой вывод от бинаря $ debugedit -i ./rts/dist/build/libHSrts_thr-ghc9.2.8.so debugedit: Cannot handle 8-byte build ID [builder@localhost ghc9.2.8-9.2.8]$ eu-readelf -n ./rts/dist/build/libHSrts_thr-ghc9.2.8.so | head Note section [ 1] '.note.gnu.build-id' of 24 bytes at offset 0x270: Owner Data size Type GNU 8 GNU_BUILD_ID Build ID: ba79f50a6074df4d -- Sin (Sinelnikov Evgeny) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 2023-09-23 9:44 ` Ilya Kurdyukov 2023-09-25 14:26 ` Evgeny Sinelnikov @ 2023-09-27 23:05 ` Arseny Maslennikov 2023-09-28 1:19 ` Ilya Kurdyukov 1 sibling, 1 reply; 9+ messages in thread From: Arseny Maslennikov @ 2023-09-27 23:05 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 2847 bytes --] On Sat, Sep 23, 2023 at 04:44:38PM +0700, Ilya Kurdyukov wrote: > On 9/23/23 16:36, Dmitry V. Levin wrote: > > > > --ldflags=-Wl,--build-id=sha1 > > Этой истории уже много лет, поэтому удивительно, что где-то до сих пор > > по умолчанию создаётся 64-битный build id. С точки зрения репозитория > > важно не столько, чтобы конкретный пакет был исправлен, сколько чтобы > > этого не происходило по умолчанию. > > > ghc (смотрел спеку 8.6.4) для armh/aarch64 собирается через LLVM: > > * Thu Aug 17 2023 Anton Zhukharev <ancieg@altlinux.org> 8.6.4-alt9 > - Fixed FTBFS. > - Built with llvm12.0 on armh and aarch64. > - Stored LLVM version in %%ghc_llvm_version macro. > > Это опции LLD, линковщика из LLVM: > > --build-id=value > Generate a build ID note. value may be one of fast, md5, sha1, tree, > uuid, 0xhex-string, and none. tree is an alias for sha1. Build-IDs of type > fast, md5, sha1, and tree are calculated from the object contents. fast is > not intended to be cryptographically secure. > --build-id > Synonym for --build-id=fast. > > Если девятый ghc собирается так же - значит проблема в конфигурации LLVM, > наверное там указано --build-id, что превращается в --build-id=fast. Мы (т. е. я и не только) тут off-list голову ломали, почему ошибка, о которой речь в этом треде, происходит только на aarch64 и почему мы подобных жалоб не видим по всему репозиторию среди пакетов, линкуемых этим lld. А дело в том, что на данной архитектуре в данном пакете lld вызывается командой gcc, что редкость (не удивлюсь, если в сизифе так делает только сборочная система ghc). gcc, вестимо, передаёт линкеру просто --build-id. Так что большое спасибо Илье за оперативное замечание в яблочко. И тогда, действительно, проще всего навязать в пакете ghcX `--ldflags=-Wl,--build-id=sha1'. Хуже того, clang (и актуальный тоже) вообще не передаёт --build-id=*, т. е. у нас все бинарники из-под clang+lld попадают в репозиторий вообще без GNU_BUILD_ID elf note. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 2023-09-27 23:05 ` Arseny Maslennikov @ 2023-09-28 1:19 ` Ilya Kurdyukov 2023-10-19 22:40 ` Evgeny Sinelnikov 0 siblings, 1 reply; 9+ messages in thread From: Ilya Kurdyukov @ 2023-09-28 1:19 UTC (permalink / raw) To: devel On 9/28/23 06:05, Arseny Maslennikov wrote: > > Хуже того, clang (и актуальный тоже) вообще не передаёт --build-id=*, т. > е. у нас все бинарники из-под clang+lld попадают в репозиторий вообще > без GNU_BUILD_ID elf note. > Искал поиском по исходникам ghc-9.2.8, нашел что там проверяется, поддерживается ли опция --build-id=none, и такая используется если поддерживается. В каких случаях это используется - не знаю, может всегда. При сборке clang есть такая опция для cmake: set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOL "pass --build-id to ld") Что включает код: clang/lib/Driver/ToolChains/Linux.cpp #ifdef ENABLE_LINKER_BUILD_ID ExtraOpts.push_back("--build-id"); #endif Который можно пропатчить для Альта, убрав #ifdef и указав правильную опцию для --build-id, не доверяя значению по умолчанию. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 2023-09-28 1:19 ` Ilya Kurdyukov @ 2023-10-19 22:40 ` Evgeny Sinelnikov 2023-10-20 5:28 ` Ivan A. Melnikov 0 siblings, 1 reply; 9+ messages in thread From: Evgeny Sinelnikov @ 2023-10-19 22:40 UTC (permalink / raw) To: ALT Linux Team development discussions Доброй ночи, попробовал два варианта решения: 1) Выставил опцию --disable-ld-override, которая напрямую запускает ld - отвалился armh: https://git.altlinux.org/tasks/330113 2) Пропатчил ghc - явно указал --build-id=sha1 для линкера - отвалился aarch64, но armh успешно собрался: https://git.altlinux.org/tasks/332192 Итого, похоже, для aarch64 во втором случае не хватило ресурсов на сборочной ноде. Может ли кто-нибудь проверить? чт, 28 сент. 2023 г. в 05:19, Ilya Kurdyukov <ilyakurdyukov@basealt.ru>: > > > On 9/28/23 06:05, Arseny Maslennikov wrote: > > > > Хуже того, clang (и актуальный тоже) вообще не передаёт --build-id=*, т. > > е. у нас все бинарники из-под clang+lld попадают в репозиторий вообще > > без GNU_BUILD_ID elf note. > > > Искал поиском по исходникам ghc-9.2.8, нашел что там проверяется, > поддерживается ли опция --build-id=none, и такая используется если > поддерживается. В каких случаях это используется - не знаю, может всегда. > > > При сборке clang есть такая опция для cmake: > > set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOL "pass --build-id to ld") > > Что включает код: > > clang/lib/Driver/ToolChains/Linux.cpp > > #ifdef ENABLE_LINKER_BUILD_ID > ExtraOpts.push_back("--build-id"); > #endif > > Который можно пропатчить для Альта, убрав #ifdef и указав правильную > опцию для --build-id, не доверяя значению по умолчанию. > > _______________________________________________ > Devel mailing list > Devel@lists.altlinux.org > https://lists.altlinux.org/mailman/listinfo/devel -- Sin (Sinelnikov Evgeny) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 2023-10-19 22:40 ` Evgeny Sinelnikov @ 2023-10-20 5:28 ` Ivan A. Melnikov 0 siblings, 0 replies; 9+ messages in thread From: Ivan A. Melnikov @ 2023-10-20 5:28 UTC (permalink / raw) To: ALT Linux Team development discussions On Fri, Oct 20, 2023 at 02:40:58AM +0400, Evgeny Sinelnikov wrote: > 2) Пропатчил ghc - явно указал --build-id=sha1 для линкера - отвалился > aarch64, но armh успешно собрался: > https://git.altlinux.org/tasks/332192 > > Итого, похоже, для aarch64 во втором случае не хватило ресурсов на > сборочной ноде. Не похоже: [01:38:51] Finding debuginfo files (using /usr/lib/rpm/find-debuginfo-files) [01:38:51] Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.F9Gs9T [01:38:51] debugedit: Cannot handle 8-byte build ID [01:38:51] getOutputFrom(): Broken pipe [01:38:51] Command exited with non-zero status 1 -- wbr, iv m. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-10-20 5:28 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-09-22 22:51 [devel] Проблема с debugedit при сборке ghc-9.2.8 на aarch64 Evgeny Sinelnikov 2023-09-23 8:26 ` Vitaly Chikunov 2023-09-23 9:36 ` Dmitry V. Levin 2023-09-23 9:44 ` Ilya Kurdyukov 2023-09-25 14:26 ` Evgeny Sinelnikov 2023-09-27 23:05 ` Arseny Maslennikov 2023-09-28 1:19 ` Ilya Kurdyukov 2023-10-19 22:40 ` Evgeny Sinelnikov 2023-10-20 5:28 ` Ivan A. Melnikov
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