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