Re: [PATCH 1/2] Makefile: Use the same source directory for "ln -s" as for "ln" / "cp"
- From
Jeff King <peff@peff.net>
- Date
- Feb 5, 2015, 20:45 UTC
- Message-ID
- <20150205204534.GE15326@peff.net>
- In-Reply-To
- <CAHGBnuPL7NN9J+4xd7xifsmbSPcC5V2ze05ji7P_qnvWHPGV+A@mail.gmail.com>
On Thu, Feb 05, 2015 at 09:29:04PM +0100, Sebastian Schuberth wrote:
Show 26 quoted lines
> > We would still want an equivalent to 2/2 to set up a relative symlink > > for $(ALL_PROGRAMS), though, right? > > Probably. But I'm not sure how to calculate the relative path > correctly so that it'll work with all possible bin / execdir > combinations. A simple > > diff --git a/Makefile b/Makefile > index 21f23cb..d2849c3 100644 > > --- a/Makefile > +++ b/Makefile > > @@ -2258,8 +2258,8 @@ > > endif > ········$(RM)·"$$execdir/$$p"·&&·\ > ········test·-z·"$(NO_INSTALL_HARDLINKS)$(NO_CROSS_DIRECTORY_HARDLINKS)"·&&·\ > ········ln·"$$bindir/$$p"·"$$execdir/$$p"·2>/dev/null·||·\ > +········ln·-s·"../$$p"·"$$execdir/$$p"·2>/dev/null·||·\ > ········cp·"$$bindir/$$p"·"$$execdir/$$p"·||·exit;·\ > ······done;·\ > ····}·&&·\ > --· > > does not seem to be correct in all cases.
Ah, I see. Yeah, you'd have to calculate that relative path between $bindir and $execdir. We have C code already to do that (see relative_path() in path.c), so in theory you could build a wrapper during the build phase and then run:
ln -s $(./my-wrapper "$bindir" "$execdir")/$p $execdir/$p
or something during the install phase.
-Peff