=item B<-l>I<directory>[:directory:directory:..]
-Before dpkg-shlibdeps is run, LD_LIBRARY_PATH will have added to it the
-specified directory (or directories -- separate with colons). This is
-useful for multi-binary packages where a library is built in one
-package and another package contains binaries linked against said
-library. Relative paths will be made absolute for the benefit of
-dpkg-shlibdeps.
+With recent versions of dpkg-shlibdeps, this option is generally not
+needed.
-Note that the directory given should be the complete or relative path to
-a directory that contains the library. See example below.
+Before dpkg-shlibdeps is run, LD_LIBRARY_PATH will have added to it the
+specified directory (or directories -- separate with colons). With recent
+versions of dpkg-shlibdeps, this is mostly only useful for packages that
+build multiple flavors of the same library, or other situations where
+the library is installed into a directory not on the regular library search
+path.
=item B<-L>I<package>, B<--libpackage=>I<package>
-Use the shlibs file automatically generated by dh_makeshlibs for the named
-package as a kind of automatically generated shlibs.local file. You can use
-this switch in concert with the -l switch to make dpkg-shlibdeps find a
-library built as part of the current package, and get the shlibs information.
-See example below.
+With recent versions of dpkg-shlibdeps, this option is generally not
+needed, unless your package builds multiple flavors of the same library.
+
+It tells dpkg-shlibdeps (via its -S parameter) to look first in the package
+build directory for the specified package, when searching for libraries,
+symbol files, and shlibs files.
=back
depend on it. In your rules file, first run dh_makeshlibs, then dh_shlibdeps:
dh_makeshlibs
- dh_shlibdeps -L libfoo1 -l debian/libfoo1/usr/lib
+ dh_shlibdeps
This will have the effect of generating automatically a shlibs file for
libfoo1, and using that file and the libfoo1 library in the
debian/libfoo1/usr/lib directory to calculate shared library dependency
information.
+If a libbar1 package is also produced, that is an alternate build of
+libfoo, and is installed into /usr/lib/bar/, you can make libfoo-bin depend
+on libbar1 as follows:
+
+ dh_shlibdeps -Llibbar1 -l/usr/lib/bar
+
=cut
init();
push @paths, $_;
}
else {
- push @paths, getcwd()."/$_";
+ push @paths, "/$_";
}
}
$dh{L_PARAMS}=join(':', @paths);
if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') {
$find_options="! \\( $dh{EXCLUDE_FIND} \\)";
}
- foreach my $file (split(/\n/,`find $tmp -path $tmp/usr/lib/debug -prune -or -type f \\( -perm +111 -or -name "*.so*" \\) $find_options -print`)) {
+ foreach my $file (split(/\n/,`find $tmp -type f \\( -perm +111 -or -name "*.so*" \\) $find_options -print`)) {
+ # Prune directories that contain separated debug symbols.
+ next if $file=~m!^\Q$tmp\E/usr/lib/debug/(lib|lib64|usr|bin|sbin|opt|dev)/!;
# TODO this is slow, optimize. Ie, file can run once on
# multiple files..
$ff=`file "$file"`;
if (@filelist) {
my @opts;
if (defined $dh{LIBPACKAGE} && length $dh{LIBPACKAGE}) {
- @opts=("-L".tmpdir($dh{LIBPACKAGE}."/DEBIAN/shlibs"));
+ @opts=("-S".tmpdir($dh{LIBPACKAGE}));
}
+ push @opts, "-tudeb" if is_udeb($package);
+
my $ld_library_path_orig=$ENV{LD_LIBRARY_PATH};
if ($dh{L_PARAMS}) {
$ENV{LD_LIBRARY_PATH}=$dh{L_PARAMS};
@opts,@{$dh{U_PARAMS}},@filelist);
if ($dh{L_PARAMS}) {
- $ENV{LD_LIBRARY_PATH}=$ld_library_path_orig;
+ if (defined $ld_library_path_orig) {
+ $ENV{LD_LIBRARY_PATH}=$ld_library_path_orig;
+ }
+ else {
+ delete $ENV{LD_LIBRARY_PATH};
+ }
}
}
}