]> err.no Git - dpkg/commitdiff
Avoid creating empty DEBIAN/symbols files during build.
authorRaphael Hertzog <hertzog@debian.org>
Fri, 3 Aug 2007 14:57:49 +0000 (16:57 +0200)
committerRaphael Hertzog <hertzog@debian.org>
Fri, 3 Aug 2007 14:57:49 +0000 (16:57 +0200)
Once invoked, dpkg-gensymbols used to always write out a file
even if the scan didn't find any symbol information. Now, unless
the output file has been manually specified, it won't do so
anymore. With this change, it's now possible to always add
a dpkg-gensymbols call in debian/rules and it will really be a
no-op if the package doesn't contain a library.

scripts/Dpkg/Shlibs/SymbolFile.pm
scripts/dpkg-gensymbols.pl

index 5930c8d3504166007cf791f3af8f167a2dd4f82a..b66c6666a825f4067e89e29a2e29b4a8ae06dd6f 100644 (file)
@@ -164,6 +164,11 @@ sub merge_symbols {
     }
 }
 
+sub is_empty {
+    my ($self) = @_;
+    return scalar(keys %{$self->{objects}}) ? 0 : 1;
+}
+
 sub has_object {
     my ($self, $soname) = @_;
     return exists $self->{objects}{$soname};
index 6173ce269c0d6201dd195d75b7e9911d7a393700..84ebd77ccbe33b19ebd0d58a639e83fb10f9ec0d 100755 (executable)
@@ -183,11 +183,17 @@ if ($stdout) {
     $symfile->save("-");
 } else {
     unless (defined($output)) {
-       $output = "$packagebuilddir/DEBIAN/symbols";
-       mkdir("$packagebuilddir/DEBIAN") if not -e "$packagebuilddir/DEBIAN";
+       unless($symfile->is_empty()) {
+           $output = "$packagebuilddir/DEBIAN/symbols";
+           mkdir("$packagebuilddir/DEBIAN") if not -e "$packagebuilddir/DEBIAN";
+       }
+    }
+    if (defined($output)) {
+       print "Storing symbols in $output.\n" if $debug;
+       $symfile->save($output);
+    } else {
+       print "No symbol information to store.\n" if $debug;
     }
-    print "Storing symbols in $output.\n" if $debug;
-    $symfile->save($output);
 }
 
 # Check if generated files differs from reference file