| Summary: | Fails to load shared libraries located not in public place | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Sviatoslav Sviridov <svd> |
| Component: | rpm-build-perl | Assignee: | viy <viy> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P2 | CC: | at, crux, ender, ldv, mike, rider, viy |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
|
Description
Sviatoslav Sviridov
2006-03-24 12:13:57 MSK
Попробуйте %define __spec_autodep_custom_pre export LD_LIBRARY_PATH=%buildroot%_libdir/libsvn_swig ping на subversion 1.5.4 ошибка с этими исправлениями сохраняется Я проверил сборку subversion-1.6.17-alt2 с указанным в 1-ом комментарии define'ом и сборка прошла успешной. Поэтому мне кажется, что blocker тут не очень уместен.
В принципе, можно улучшить perl.req, заставив его искать lib*.so.* файлы рекурсивно по всем каталогам в %buildroot%_libdir и добавлять все такие найденные каталоги в LD_LIBRARY_PATH. Как-то так:
diff --git a/perl.req b/perl.req
index c6e2967..df23bbd 100755
--- a/perl.req
+++ b/perl.req
@@ -4,6 +4,7 @@ use strict;
use Config qw(%Config);
use PerlReq::Utils qw(argv inc explode mod2dep path2dep);
+use File::Find;
sub pod2usage {
eval { require Pod::Usage } or die $@;
@@ -188,10 +189,16 @@ sub do_deparse {
}
# adjust LD_LIBRARY_PATH if there are libraries inside buildroot
# spotted by Yury Konovalov
- for my $libdir ("/usr/lib64", "/usr/lib") {
- next unless glob "$ENV{RPM_BUILD_ROOT}$libdir/lib*.so*";
+ my %lib_paths = ();
+ find ( sub {
+ next unless (/^lib.*\.so\..*$/ );
+ next if (exists $lib_paths{$File::Find::dir}
+ || $File::Find::dir =~ m{^$ENV{RPM_BUILD_ROOT}/usr/lib/debug} );
+ $lib_paths{$File::Find::dir}++;
+ }, "$ENV{RPM_BUILD_ROOT}/usr/lib64", "$ENV{RPM_BUILD_ROOT}/usr/lib");
+ if (keys %lib_paths) {
$ENV{LD_LIBRARY_PATH} .= ":" if $ENV{LD_LIBRARY_PATH};
- $ENV{LD_LIBRARY_PATH} .= "$ENV{RPM_BUILD_ROOT}$libdir";
+ $ENV{LD_LIBRARY_PATH} .= join ":", keys %lib_paths;
}
}
my @pipe = ($X, shebang_options($fname));
Ещё актуально? (In reply to comment #5) > Ещё актуально? Актуально, но, видимо, уже не очень срочно. На досуге приложу и поверю. |