+Mon Dec 4 14:42:01 CET 2000 Wichert Akkerman <wakkerma@debian.org>
+
+ * scripts/dpkg-statoverride.pl, main/filesdb.c: merge patch from
+ Robert Luberda <robert@pingu.ii.uj.edu.pl> to fix statoverrides
+ using numerical [ug]ids
+ * Merge updats from the v17 branch:
+ + scripts/dpkg-buildpackage.sh: Quote test options for usepause
+ + scripts/dpkg-shlibdeps.pl: resolve library paths using a combination
+ of the libc major version, and ldconfig -p output. Solves problems
+ with errant libc5 deps.
+ + scripts/dpkg-shlibdeps.pl: Make it parse soname's in the format of
+ "libfoo-X.X.so" (e.g. libdb-3.1.so) and use it. Also make it give a
+ warning if there is a NEEDED line in the objdump output that we cannot
+ grok.
+ + scripts/update-rc.d.pl: fix typo in regexp for scripts
+ + debian/rules: remove final occurance of emacs
+
Mon Dec 4 01:34:57 CET 2000 Wichert Akkerman <wakkerma@debian.org>
* Merge more of Adams handywork to bring dpkg up to speed (literally :)
* Update Galish translation
* Add new --import option to dpkg-statoverride to make it easy to
import suidmanager settings.
+ * Speedups patches by Adam Heath
+ * statoverride fixes by Robert Luberda, Closes: Bug#78436
-- Wichert Akkerman <wakkerma@debian.org> UNRELEASED
* Add new powerpc-linux-gnu entry to archtable. Closes: Bug#76522
* No longer bother to install emacs things. I don't use emacs myself
and can't support that properly.
-
- -- Wichert Akkerman <wakkerma@debian.org> UNRELEASED
+ * scripts/dpkg-shlibdeps.pl: Make it parse soname's in the format of
+ "libfoo-X.X.so" (e.g. libdb-3.1.so) and use it. Also make it give a
+ warning if there is a NEEDED line in the objdump output that we cannot
+ grok.
+ * scripts/dpkg-shlibdeps.pl: resolve library paths using a combination
+ of the libc major version, and ldconfig -p output. Solves problems
+ with errant libc5 deps.
+ * Correct name of .changes file when doing source-only builds
+ * Fix -ap option for dpkg-buildpackage. Closes: Bug#77305
+ * Fix typo in update-alternatives manpage. Closes: Bug#77829
+ * Fix typo in script-regexp update-rc.d. Closes: Bug#76029
+
+ -- Wichert Akkerman <wakkerma@debian.org> Thu, 23 Nov 2000 18:55:50 +0100
dpkg (1.7.1) unstable; urgency=medium
install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/bin
mv $(TMP)/usr/lib/dpkg/parsechangelog $(TMP_DPKG_DEV)/usr/lib/dpkg/
mv $(TMP)/usr/lib/dpkg/controllib.pl $(TMP_DPKG_DEV)/usr/lib/dpkg/
- mv $(TMP)/usr/share/emacs $(TMP_DPKG_DEV)/usr/share/
set -e ; for i in dpkg-name dpkg-source dpkg-genchanges dpkg-gencontrol \
dpkg-shlibdeps dpkg-buildpackage dpkg-distaddfile 822-date \
dpkg-scanpackages dpkg-scansources dpkg-architecture \
ohshit("syntax error in statusoverride file ");
*ptr=0;
if (thisline[0]=='#') {
- fso->uid=strtol(thisline, &endptr, 10);
+ fso->uid=strtol(thisline + 1, &endptr, 10);
if (*endptr!=0)
ohshit("syntax error: invalid uid in statusoverride file ");
} else {
/* Move to the next bit */
thisline=ptr+1;
if (thisline>=loaded_list_end)
- ohshit("unexecpted end of line in statusoverride file");
+ ohshit("unexpected end of line in statusoverride file");
/* Extract the gid */
if (!(ptr=memchr(thisline, ' ', nextline-thisline)))
ohshit("syntax error in statusoverride file ");
*ptr=0;
if (thisline[0]=='#') {
- fso->gid=strtol(thisline, &endptr, 10);
+ fso->gid=strtol(thisline + 1, &endptr, 10);
if (*endptr!=0)
ohshit("syntax error: invalid gid in statusoverride file ");
} else {
signcommand=pgp
fi
- signsource='withecho signfile'
- signchanges='withecho signfile'
+signsource='withecho signfile'
+signchanges='withecho signfile'
cleansource=false
binarytarget=binary
sourcestyle=''
withecho debian/rules build $archlist
withecho $rootcommand debian/rules $binarytarget $archlist
fi
-if [ "$usepause" = "true" ] && [ x$binaryonly = x -o x$signchanges != x ] ; then
+if [ "$usepause" = "true" ] && [ "x$binaryonly" = x -o "x$signchanges" != x ] ; then
echo Press the return key to start signing process
read dummy_stuff
fi
for ($i=0;$i<=$#exec;$i++) {
if (!isbin ($exec[$i])) { next; }
+
+ # First we get an ldd output to see what libs + paths we have at out
+ # disposal.
+ my %so2path = ();
+ defined($c= open(P,"-|")) || syserr("cannot fork for ldd");
+ if (!$c) { exec("ldd","--",$exec[$i]); syserr("cannot exec ldd"); }
+ while (<P>) {
+ if (m,^\s+(\S+)\s+=>\s+(\S+)\s+\(0x.+\)?$,) {
+ $so2path{$1} = $2;
+ }
+ }
+ close(P); $? && subprocerr("ldd on \`$exec[$i]'");
+
+ # Now we get the direct deps of the program. We then check back with
+ # the ldd output from above to see what our path is.
defined($c= open(P,"-|")) || syserr("cannot fork for objdump");
if (!$c) { exec("objdump","-p","--",$exec[$i]); syserr("cannot exec objdump"); }
while (<P>) {
chomp;
- if (m,^\s*NEEDED\s+(\S+)\.so\.(\S+)$,) {
- push(@libname,$1); push(@libsoname,$2);
- push(@libf,$execf[$i]);
- push(@libfiles,"$1.so.$2");
+ if (m,^\s*NEEDED\s+,) {
+ if (m,^\s*NEEDED\s+((\S+)\.so\.(\S+))$,) {
+ push(@libname,$2); push(@libsoname,$3);
+ push(@libf,$execf[$i]);
+ &warn("could not find path for $1") unless defined($so2path{$1});
+ push(@libfiles,$so2path{$1});
+ } elsif (m,^\s*NEEDED\s+((\S+)-(\S+)\.so)$,) {
+ push(@libname,$2); push(@libsoname,$3);
+ push(@libf,$execf[$i]);
+ &warn("could not find path for $1") unless defined($so2path{$1});
+ push(@libfiles,$so2path{$1});
+ } else {
+ m,^\s*NEEDED\s+(\S+)$,;
+ &warn("format of $1 not recognized");
+ }
}
}
close(P); $? && subprocerr("objdump on \`$exec[$i]'");
if (!$c) {
close STDERR; # we don't need to see dpkg's errors
open STDERR, "> /dev/null";
- exec("dpkg","--search","--",map {"*/$_"} @libfiles); syserr("cannot exec dpkg");
+ exec("dpkg","--search","--",map {"$_"} @libfiles); syserr("cannot exec dpkg");
}
while (<P>) {
chomp;
if (m/^local diversion |^diversion by/) {
&warn("diversions involved - output may be incorrect");
print(STDERR " $_\n") || syserr("write diversion info to stderr");
- } elsif (m=^(\S+(, \S+)*): /.+/([^/]+)$=) {
+ } elsif (m=^(\S+(, \S+)*): (\S+)$=) {
push @{$pathpackages{$+}}, split(/, /, $1);
} else {
&warn("unknown output from dpkg --search: \`$_'");
@ARGV==4 || &badusage("--add needs four arguments");
$user=$ARGV[0];
- if ($user =~ m/^#\(0-9+\)$/) {
+ if ($user =~ m/^#([0-9]+)$/) {
$uid=$1;
&badusage("illegal user $user") if ($uid<0);
} else {
}
$group=$ARGV[1];
- if ($group =~ m/^#\(0-9+\)$/) {
+ if ($group =~ m/^#([0-9]+)$/) {
$gid=$1;
&badusage("illegal group $group") if ($gid<0);
} else {
- (($name,$pw,$gid)=getgrnam($group)) || &badusage("illegal group $group");
+ (($name,$pw,$gid)=getgrnam($group)) || &badusage("non-existing group $group");
}
$mode= $ARGV[2];
- (($mode<0) or ($mode>07777)) && &badusage("illegal mode $mode");
+ (($mode<0) or (oct($mode)>07777)) && &badusage("illegal mode $mode");
$file= $ARGV[3];
$file =~ m/\n/ && &badusage("file may not contain newlines");
$mode{$file}=$mode;
$dowrite=1;
- if ($doupate) {
+ if ($doupdate) {
if (not -f $file) {
print STDERR "waring: --update given but $file does not exist\n";
} else {
- chmod $mode,$file || warn "failed to chmod $file: $!\n";
- chown $uid,$gid,$file || warn "failed to chown $file: $!\n";
+ chmod (oct($mode),$file) || warn "failed to chmod $file: $!\n";
+ chown ($uid,$gid,$file) || warn "failed to chown $file: $!\n";
}
}
} elsif ($mode eq "remove") {
}
opendir(DIR, ".");
foreach $_ (readdir(DIR)) {
- next unless (/^[S|K]\d\d$bn$/);
+ next unless (/^[SK]\d\d$bn$/);
$fn = "$etcd$i.d/$_";
$found = 1;
$islnk = &is_link ($_[0], $fn, $bn);