From: "nobu (Nobuyoshi Nakada) via ruby-core" Date: 2023-04-25T04:35:50+00:00 Subject: [ruby-core:113330] [Ruby master Bug#19615] ruby psych.so always dynamic links libyaml.so, breaking build when libyaml.so is not in host lib paths Issue #19615 has been updated by nobu (Nobuyoshi Nakada). Status changed from Open to Feedback I can't get well what you are trying exactly. In the first paragraph: > When you specify a different path for libraries during build, psych config does work as it tests creating conftest executables, with the linker pointing to the library at the specified path. > If the host system does not have a compatible libyaml.so.x, the build will fail when it tries to load psych.so. What the word "build" refers in these sentences feel different to me, no? And how "you specify a different path for libraries during build"? --- I think if libyaml what you want to use at runtime is located in a non-standard path, * the host should be configured to use that path in /etc/ld.so.conf, * pkg-config file for that libyaml should return appropriate `-rpath` option for `--libs`, or * `LD_LIBRARY_PATH` will be needed as you mentioned. ---------------------------------------- Bug #19615: ruby psych.so always dynamic links libyaml.so, breaking build when libyaml.so is not in host lib paths https://bugs.ruby-lang.org/issues/19615#change-102890 * Author: luizluca (Luiz Angelo Daros de Luca) * Status: Feedback * Priority: Normal * ruby -v: ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux-gnu] * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- Hello, Before 3.2, libyaml was build statically into psych.so while now it will try to link the one provided during build. When you specify a different path for libraries during build, psych config does work as it tests creating conftest executables, with the linker pointing to the library at the specified path. However, when it links psych.so, it does not mentions the specified path, leaving the library resolution to the runtime linker. If the host system does not have a compatible libyaml.so.x, the build will fail when it tries to load psych.so. I don't know what would be the cleanest solution but it would be nice if we could configure ruby to statically link libyaml into psych.so (and maybe any other ext dependencies). As a workaround, you can add the different path to LD_LIBRARY_PATH during build and ruby calls or build with --with-static-linked-ext. -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/