denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Denemo-devel] updated Makefile.am


From: Richard Shann
Subject: Re: [Denemo-devel] updated Makefile.am
Date: Fri, 12 Dec 2008 15:35:32 +0000

On Thu, 2008-12-11 at 21:07 -0600, Jeremiah Benham wrote:
> On Thu, 2008-12-11 at 20:45 +0000, Richard Shann wrote:
> > On Thu, 2008-12-11 at 12:19 -0600, Jeremiah Benham wrote:
> > > > > They method I have seen documented is to create symlinks by
> > > placing a
> > > > > line in denemo/Makefile.am. Then the link is created on a make
> > > install. 
> > > > I get it - that would be ok (just one thing to do), though not quite
> > > so
> > > > obvious as creating the symlink in git & letting the make system
> > > take
> > > > care of what to do with it.
> > > 
> > > I just created a symlink in denemo root directory from
> > > MIDI/CheckPithes
> > > to Educational. It did not work. 
> > ??? I am not sure what you did here. (i.e. what command you executed)
> 
> in the denemo directory:
> ln -s actions/menus/MainMenu/EntryMenu/MIDI/CheckPitches
> actions/menus/MainMenu/Educational/
This does create a link, but it starts with neither .. nor with / and so
it is a link to the non-existent file:

blah-blah/denemo/actions/menus/MainMenu/Educational/actions/menus/MainMenu/Educational/CheckPitches

that is, it is taken as a link to something relative to the path to the
link. Think of a (soft) link as like a string stored in the filesystem
at a place where a file would be; when a system call like open refers to
it, the string is interpreted as a path relative to the location of the
link; if it starts with / then where the link is doesn't affect the
interpretation, but otherwise the interpretation is the path to the link
concatenated with the string.

> 
> > 
> > > It only worked if I was in The
> > > educational directory and created the symlink like ln
> > > -s ../../MainMenu/blah blah/MIDI/CheckPitches .
This was right - the link is to something two directories up and then
down to CheckPitches, that does exist (and it would need to exist in the
final installation for the link to be useful).
> > This is the way to create a (soft) link in the directory Educational
> > which would make it appear that the linked to file was present there (as
> > far as many system calls are concerned, that is).
> 
> Are you suggesting I try it using hard links?
No, I would not guess you would get much help from doing that. on the
contrary. (And indeed I guess that people writing packaging utilities
are targetting soft links, its the right sort of a beast for this sort
of work).
> 
> > > 
> > > Then when I did:
> > > make dist
> > > 
> > > It converted the link into a copy. So I think if we want to do
> > > symlinks
> > > then we need to place it in the Makefile.am
> > Is that the top level Makefile.am? (So, all the references to symbolic
> > links would be in one place?)
> 
> yes. That would be the toplevel Makefile. I pushed to git an example.
> Yes they would also all be in this toplevel Makefile.am.
Oh, right, I see it. It think you would be better writing the links to
be relative paths, so in your example 

$(DESTDIR)/$(datadir)/${PACKAGE}/actions/menus/MainMenu/Educational/CheckPitches

should be created as a link to 

../EntryMenu/MIDI/CheckPitches

and *not* as a link to
$(DESTDIR)/$(datadir)/${PACKAGE}/actions/menus/MainMenu/EntryMenu/MIDI/CheckPitches

Perhaps you should look again at the problem, this time sticking to
links which are relative paths? I'm sure there is stuff to do installing
a directory system complete with relative-path symbolic links in the
simplest imaginable manner, as it must be a very common requirement and
is conceptually very simple. (By contrast, if you have been
experimenting with symbolic links that refer to absolute file locations,
then you wouldn't expect to find support - it would involve lopping off
the head of the path and putting on a new one, as well as working out
where to lop the head of at).

Richard






reply via email to

[Prev in Thread] Current Thread [Next in Thread]