Joey, This #231015 is critical bug - could you look at my last post (the attached mail) ? I clone this bug and reassign it to debhelper if you think it's dh_link bug.
Bug Summary: dh_link does not work for relative symlinks, and I make a patch for fixing this problem. Regards, -- gotom At Mon, 15 Mar 2004 02:19:18 +0900, GOTO Masanori wrote: > > At Mon, 15 Mar 2004 00:53:25 +0900, > GOTO Masanori wrote: > > At Sun, 14 Mar 2004 12:31:37 +0900, > > GOTO Masanori wrote: > > > Joey, please look at this patch. How to test in libc6-dev as following: > > > > > > > ln -sf ../../lib/libm.so debian/libc6-dev/usr/lib/libm.so ; ls -l > > > debian/libc6-dev/usr/lib/libm.so > > > lrwxrwxrwx 1 gotom gotom 17 2004-03-14 12:26 > > > debian/libc6-dev/usr/lib/libm.so -> ../../lib/libm.so > > > > dh_link.new -plibc6-dev ; ls -l debian/libc6-dev/usr/lib/libm.so > > > lrwxrwxrwx 1 gotom gotom 18 2004-03-14 12:26 > > > debian/libc6-dev/usr/lib/libm.so -> /lib/libm-2.3.2.so > > > > Umm, this patch has the bug. The resolved symlink path should be > > "/lib/libm.so"... > > The problem is that if /lib/libm.so is existed, then this path keeps > resolving to /lib/libm-2.3.2.so because readlink(2) resolves both > . and .. and symlinks. So we can't use abs_path() for this purpose. > > I implement path expand routine which resolve . and .., but don't > resolve symbolic links. > > This patch can handle to expand pathname even if the first character > in $src component includes `..' or `.'. > > > --- dh_link 2004-03-12 18:49:27.000000000 +0900 > +++ dh_link.new 2004-03-15 02:09:35.000000000 +0900 > @@ -78,6 +78,39 @@ > > init(); > > +# expand_path expands all path "." and ".." component, but don't > +# resolve symbolic links. > +sub expand_path > +{ > + my $start = @_ ? shift : '.'; > + my @pathname = split(m:/+:,$start); > + > + my $entry; > + my @respath; > + foreach $entry (@pathname) { > + if ($entry eq '.' || $entry eq '') { > + # Do nothing > + } elsif ($entry eq '..') { > + if ($#respath == -1) { > + # Do nothing > + } else { > + pop @respath; > + } > + } else { > + push @respath, $entry; > + } > + } > + > + # reconstruct full pathname > + my $result; > + foreach $entry (@respath) { > + $result .= '/' . $entry; > + } > + > + return $result; > +} > + > + > foreach my $package (@{$dh{DOPACKAGES}}) { > my $tmp=tmpdir($package); > my $file=pkgfile($package,"links"); > @@ -128,6 +161,9 @@ > my $dest=pop @links; > my $src=pop @links; > > + # Expand . and .. in src. > + $src=expand_path($src); > + > # Relavatize src and dest. > $src=~s:^/::; > $dest=~s:^/::; > > > > ln -sf ../../lib/libm.so debian/libc6-dev/usr/lib/libm.so ; ls -l > debian/libc6-dev/usr/lib/libm.so > lrwxrwxrwx 1 gotom gotom 17 2004-03-15 02:11 > debian/libc6-dev/usr/lib/libm.so -> ../../lib/libm.so > > ./dh_link -plibc6-dev ; ls -l debian/libc6-dev/usr/lib/libm.so > lrwxrwxrwx 1 gotom gotom 12 2004-03-15 02:11 > debian/libc6-dev/usr/lib/libm.so -> /lib/libm.so > > I keep testing for another path examples. > > Regards, > -- gotom >