Package: freetds
Version: 0.63-3
User: [EMAIL PROTECTED]
Usertags: eabi, patch

   The freetds build breaks on armel saying

./debian/dh_makeshlibs -a -Xtdsodbc
dh_makeshlibs: Compatibility levels before 4 are deprecated.
Error: added symbols in libtdssrv.so.2: Base        __aeabi_f2ulz
Please update the library manifest at ./debian/dh_makeshlibs line 255.
make: *** [binary-arch] Error 255

Although mainline dh_makeshlibs was updated in Jan 08 to include
armel's funny symbols, freetds has a private copy of dh_makeshlibs in
debian/ dating from 2005 "to future-proof against incorrect shlibs"
according to the changelog.

Removing the outdated private copy and just using the system
dh_makeshlibdeps works fine on armel and also on i386  - patch
attached.

I guess this outdates #441736, which was an early effort to make the
same changes to the private copy, before the mainline dpkg-dev
received the new wisdom.
diff -urN freetds-0.63.orig/debian/dh_makeshlibs 
freetds-0.63/debian/dh_makeshlibs
--- freetds-0.63.orig/debian/dh_makeshlibs      2008-03-13 18:40:18.000000000 
+0000
+++ freetds-0.63/debian/dh_makeshlibs   1970-01-01 01:00:00.000000000 +0100
@@ -1,279 +0,0 @@
-#!/usr/bin/perl -w
-
-=head1 NAME
-
-dh_makeshlibs - automatically create shlibs file
-
-=cut
-
-use strict;
-use Debian::Debhelper::Dh_Lib;
-
-=head1 SYNOPSIS
-
-B<dh_makeshlibs> [S<I<debhelper options>>] [B<-m>I<major>] 
[B<-V>I<[dependencies]>] [B<-n>] [B<-X>I<item>]
-
-=head1 DESCRIPTION
-
-dh_makeshlibs is a debhelper program that automatically scans for shared
-libraries, and generates a shlibs file for the libraries it finds.
-
-It also adds a call to ldconfig in the postinst and postrm scripts (in
-V3 mode and above only) to any packages which it finds shared libraries in.
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<-m>I<major>, B<--major=>I<major>
-
-Instead of trying to guess the major number of the library with objdump,
-use the major number specified after the -m parameter. This is much less
-useful than it used to be, back in the bad old days when this program
-looked at library filenames rather than using objdump.
-
-=item B<-V>, B<-V>I<dependencies>
-
-=item B<--version-info>, B<--version-info=>I<dependencies>
-
-By default, the shlibs file generated by this program does not make packages
-depend on any particular version of the package containing the shared
-library. It may be necessary for you to add some version dependancy
-information to the shlibs file. If -V is specified with no dependency
-information, the current upstream version of the package is plugged into a
-dependency that looks like "packagename (>= packageversion)". Note that in
-debhelper compatibility levels before v4, the debian part of the package
-version number is also included. If -V is specified with parameters, the
-parameters can be used to specify the exact dependency information needed
-(be sure to include the package name).
-
-Beware of using -V without any parameters; this is a conservative setting
-that always ensures that other packages' shared library dependencies are at
-least as tight as they need to be (unless your library is prone to changing
-ABI without updating the upstream version number), so that if the
-maintainer screws up then they won't break. The flip side is that packages
-might end up with dependencies that are too tight and so find it harder to
-be upgraded.
-
-=item B<-n>, B<--noscripts>
-
-Do not modify postinst/postrm scripts.
-
-=item B<-X>I<item>, B<--exclude=>I<item>
-
-Exclude files that contain "item" anywhere in their filename or directory 
-from being treated as shared libraries.
-
-=back
-
-=head1 EXAMPLES
-
-=over 4
-
-=item dh_makeshlibs
-
-Assuming this is a package named libfoobar1, generates a shlibs file that
-looks something like:
- libfoobar 1 libfoobar1
-
-=item dh_makeshlibs -V
-
-Assuming the current version of the package is 1.1-3, generates a shlibs
-file that looks something like:
- libfoobar 1 libfoobar1 (>= 1.1)
-
-=item dh_makeshlibs -V 'libfoobar1 (>= 1.0)'
-
-Generates a shlibs file that looks something like:
-  libfoobar 1 libfoobar1 (>= 1.0)
-
-=back
-
-=cut
-
-init();
-
-foreach my $package (@{$dh{DOPACKAGES}}) {
-       next if is_udeb($package);
-       
-       my $tmp=tmpdir($package);
-
-       my %seen;
-       my $need_ldconfig = 0;
-
-       doit("rm", "-f", "$tmp/DEBIAN/shlibs");
-
-       # So, we look for files or links to existing files with names that
-       # match "*.so*". Matching *.so.* is not good enough because of
-       # broken crap like db3. And we only look at real files not
-       # symlinks, so we don't accidentually add shlibs data to -dev
-       # packages. This may have a few false positives, which is ok,
-       # because only if we can get a library name and a major number from
-       # objdump is anything actually added.
-       my $exclude='';
-       if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') {
-               $exclude="! \\( $dh{EXCLUDE_FIND} \\) ";
-       }
-       my @manifest;
-       my %shlibsmatch;
-       my $failure;
-       my $manifest = pkgfile($package, 'manifest');
-       if (-e $manifest) {
-               open (MANIFEST, $manifest);
-               @manifest = <MANIFEST>;
-               close MANIFEST;
-               if ($manifest[0] !~ /^\s+VERSION\s+2$/) {
-                       # Wrong version number -- ignore it silently?
-                       # throw a warning?
-                       undef (@manifest);
-               }
-               my (@shlibslist) = grep(/^\s+SONAME\s+/, @manifest);
-               for (@shlibslist) { s/^\s+SONAME\s+// }
-               foreach my $i (@shlibslist) {
-                       my ($name, $version) = split(/\s+/,$i);
-                       $shlibsmatch{$name} = [$version, 0];
-               }
-       }
-       open (FIND, "find $tmp -type f \\( -name '*.so' -or -name '*.so.*' \\) 
$exclude |");
-       while (<FIND>) {
-               chomp;
-               my ($library, $major, $soname);
-               my $objdump=`objdump -p $_`;
-               if ($objdump=~m/\s+SONAME\s+(.+)\.so\.(.+)/) {
-                       # proper soname format
-                       $library=$1;
-                       $major=$2;
-                       $soname="$1.so.$2";
-               }
-               elsif ($objdump=~m/\s+SONAME\s+(.+)-(.+)\.so/) {
-                       # idiotic crap soname format
-                       $library=$1;
-                       $major=$2;
-                       $soname="$1-$2.so";
-               }
-
-               if (@manifest) {
-                       $failure = "Error: new library $soname added to 
package\n"
-                              . "Please update the library manifest"
-                           unless exists($shlibsmatch{$soname});
-                       $shlibsmatch{$soname}[1] = 1;
-
-                       $ENV{'LC_COLLATE'} = 'C';
-                       my $word64 = `objdump -T $_ | grep 'file format elf64'`;
-                       my $bytes;
-                       if ($word64) {
-                               $bytes = '50-';
-                       } else {
-                               $bytes = '34-';
-                       }
-                       my (@objdump) = `objdump -T $_ | grep -E ' [gw] 
.*\\.text|__cxa_pure_virtual'| grep -vE 
'\\b((__gmon_start__|_ftext)\\b|_(rest|save)[fg]pr)' | cut -b$bytes | sed 
-e's/0x8[08] //' | c++filt | sort`;
-
-                       my $i = 0;
-                       # either it finds a match, or it reaches the end
-                       # of the file in which case $failure is already set
-                       while ($i <= $#manifest
-                              && $manifest[$i] !~ /SONAME\s+$soname\s+/)
-                       {
-                               $i++;
-                       }
-
-                       # skip over the soname
-                       $i++;
-
-                       my $offset = $i;
-                       while ($i <= $#manifest && $i - $offset <= $#objdump)
-                       {
-                               if ($manifest[$i] lt $objdump[$i-$offset])
-                               {
-                                       die "Error: incorrect soname $soname, 
missing symbol: "
-                                           . $manifest[$i];
-                               }
-                               if ($manifest[$i] gt $objdump[$i-$offset]
-                                   || $manifest[$i] =~ /SONAME\s+/)
-                               {
-                                       $failure = "Error: added symbols in 
$soname: "
-                                           . $objdump[$i-$offset]
-                                           . "Please update the library 
manifest";
-                                       $i--;
-                                       $offset--;
-                               }
-                               $i++;
-                       }
-                       if ($i <= $#manifest && $manifest[$i] !~ /SONAME\s+/)
-                       {
-                               die "Error: incorrect soname $soname, missing 
symbol: "
-                                   . $manifest[$i];
-                       }
-               }
-
-               if (defined($dh{M_PARAMS}) && $dh{M_PARAMS} ne '') {
-                       $major=$dh{M_PARAMS};
-               }
-               
-               if (! -d "$tmp/DEBIAN") {
-                       doit("install","-d","$tmp/DEBIAN");
-               }
-               my $deps=$package;
-               if ($dh{V_FLAG_SET}) {
-                       if ($dh{V_FLAG} ne '') {
-                               $deps=$dh{V_FLAG};
-                       }       
-                       else {
-                               # Call isnative becuase it sets $dh{VERSION}
-                               # as a side effect.
-                               isnative($package);
-                               my $version = $dh{VERSION};
-                               # Old compatibility levels include the
-                               # debian revision, while new do not.
-                               if (! compat(3)) {
-                                       # Remove debian version, if any.
-                                       $version =~ s/-[^-]+$//;
-                               }
-                               $deps="$package (>= $version)";
-                       }
-               }
-               elsif (%shlibsmatch) {
-                       my ($version) = $shlibsmatch{$soname}[0];
-                       $deps="$package (>= $version)" if ($version);
-               }
-               if (defined($library) && defined($major) && defined($deps) &&
-                   $library ne '' && $major ne '' && $deps ne '') {
-                       $need_ldconfig=1;
-                       # Prevent duplicate lines from entering the file.
-                       my $line="$library $major $deps";
-                       if (! $seen{$line}) {
-                               $seen{$line}=1;
-                               complex_doit("echo '$line' 
>>$tmp/DEBIAN/shlibs");
-                       }
-               }
-       }
-       close FIND;
-       foreach my $key (keys %shlibsmatch) {
-               die "Error: library removed from package: $key"
-                   unless ($shlibsmatch{$key}[1]);
-       }
-       die $failure if $failure;
-
-       # New as of dh_v3.
-       if (! compat(2) && ! $dh{NOSCRIPTS} && $need_ldconfig) {
-               autoscript($package,"postinst","postinst-makeshlibs");
-               autoscript($package,"postrm","postrm-makeshlibs");
-       }
-
-       if (-e "$tmp/DEBIAN/shlibs") {
-               doit("chmod",644,"$tmp/DEBIAN/shlibs");
-               doit("chown","0:0","$tmp/DEBIAN/shlibs");
-       }
-}
-
-=head1 SEE ALSO
-
-L<debhelper(7)>
-
-This program is a part of debhelper.
-
-=head1 AUTHOR
-
-Joey Hess <[EMAIL PROTECTED]>
-
-=cut
diff -urN freetds-0.63.orig/debian/rules freetds-0.63/debian/rules
--- freetds-0.63.orig/debian/rules      2008-03-13 18:40:18.000000000 +0000
+++ freetds-0.63/debian/rules   2008-03-13 18:42:46.000000000 +0000
@@ -102,8 +102,7 @@
        dh_link -a
        dh_compress -a
        dh_fixperms -a
-       chmod a+x ./debian/dh_makeshlibs
-       ./debian/dh_makeshlibs -a -Xtdsodbc
+       dh_makeshlibs -a -Xtdsodbc
        dh_installdeb -a
        dh_shlibdeps -a
        dh_gencontrol -a

Reply via email to