<div class="markdown_content"><hr />
<p><strong> <a class="alink" href="http://sourceforge.net/p/pure-data/bugs/1101/">[bugs:#1101]</a> make install fails if already installed to the same prefix</strong></p>
<p><strong>Status:</strong> open<br />
<strong>Labels:</strong> buildsystem <br />
<strong>Created:</strong> Wed Aug 07, 2013 11:09 AM UTC by Claude Heiland-Allen<br />
<strong>Last Updated:</strong> Wed Aug 07, 2013 11:09 AM UTC<br />
<strong>Owner:</strong> nobody</p>
<p>Pd fresh from git.</p>
<h2 id="reproduction">Reproduction</h2>
<div class="codehilite"><pre>./autogen.sh ; ./configure --prefix=<span class="cp">${</span><span class="n">HOME</span><span class="cp">}</span>/opt ; make ; make install ; make install
</pre></div>
<h2 id="what-happens">What Happens</h2>
<div class="codehilite"><pre><span class="n">ln</span><span class="o">:</span> <span class="n">failed</span> <span class="n">to</span> <span class="n">create</span> <span class="n">symbolic</span> <span class="n">link</span> <span class="err">`</span><span class="n">expr</span><span class="o">.</span><span class="na">pd_linux</span><span class="s1">': File exists</span>
<span class="s1">ln: failed to create symbolic link `fexpr~.pd_linux'</span><span class="o">:</span> <span class="n">File</span> <span class="n">exists</span>
<span class="n">ln</span><span class="o">:</span> <span class="n">failed</span> <span class="n">to</span> <span class="n">create</span> <span class="n">symbolic</span> <span class="n">link</span> <span class="err">`</span><span class="n">expr</span><span class="o">.</span><span class="na">pd_linux</span><span class="s1">': File exists</span>
<span class="s1">ln: failed to create symbolic link `expr~.pd_linux'</span><span class="o">:</span> <span class="n">File</span> <span class="n">exists</span>
<span class="n">ln</span><span class="o">:</span> <span class="n">failed</span> <span class="n">to</span> <span class="n">create</span> <span class="n">symbolic</span> <span class="n">link</span> <span class="err">`</span><span class="n">fexpr</span><span class="o">~.</span><span class="n">pd_linux</span><span class="s1">': File exists</span>
<span class="s1">ln: failed to create symbolic link `expr-help.pd'</span><span class="o">:</span> <span class="n">File</span> <span class="n">exists</span>
<span class="n">ln</span><span class="o">:</span> <span class="n">failed</span> <span class="n">to</span> <span class="n">create</span> <span class="n">symbolic</span> <span class="n">link</span> <span class="err">`</span><span class="n">expr</span><span class="o">~-</span><span class="n">help</span><span class="o">.</span><span class="na">pd</span><span class="s1">': File exists</span>
<span class="s1">ln: failed to create symbolic link `fexpr~-help.pd'</span><span class="o">:</span> <span class="n">File</span> <span class="n">exists</span>
<span class="n">make</span><span class="o">[</span><span class="mi">5</span><span class="o">]:</span> <span class="o">***</span> <span class="o">[</span><span class="n">install</span><span class="o">-</span><span class="n">data</span><span class="o">-</span><span class="n">hook</span><span class="o">]</span> <span class="n">Error</span> <span class="mi">1</span>
<span class="n">make</span><span class="o">[</span><span class="mi">4</span><span class="o">]:</span> <span class="o">***</span> <span class="o">[</span><span class="n">install</span><span class="o">-</span><span class="n">data</span><span class="o">-</span><span class="n">am</span><span class="o">]</span> <span class="n">Error</span> <span class="mi">2</span>
<span class="n">make</span><span class="o">[</span><span class="mi">3</span><span class="o">]:</span> <span class="o">***</span> <span class="o">[</span><span class="n">install</span><span class="o">-</span><span class="n">am</span><span class="o">]</span> <span class="n">Error</span> <span class="mi">2</span>
<span class="n">make</span><span class="o">[</span><span class="mi">2</span><span class="o">]:</span> <span class="o">***</span> <span class="o">[</span><span class="n">install</span><span class="o">-</span><span class="n">recursive</span><span class="o">]</span> <span class="n">Error</span> <span class="mi">1</span>
<span class="n">make</span><span class="o">[</span><span class="mi">1</span><span class="o">]:</span> <span class="o">***</span> <span class="o">[</span><span class="n">install</span><span class="o">-</span><span class="n">recursive</span><span class="o">]</span> <span class="n">Error</span> <span class="mi">1</span>
<span class="n">make</span><span class="o">:</span> <span class="o">***</span> <span class="o">[</span><span class="n">install</span><span class="o">]</span> <span class="n">Error</span> <span class="mi">2</span>
</pre></div>
<h2 id="expected-happenings">Expected Happenings</h2>
<p>Pd's make install doesn't break if Pd has already been installed to the same prefix.</p>
<h2 id="simple-bugfix">Simple Bugfix</h2>
<div class="codehilite"><pre><span class="gh">diff --git a/extra/expr~/GNUmakefile.am b/extra/expr~/GNUmakefile.am</span>
<span class="gh">index ab93dd9..b976dc3 100644</span>
<span class="gd">--- a/extra/expr~/GNUmakefile.am</span>
<span class="gi">+++ b/extra/expr~/GNUmakefile.am</span>
<span class="gu">@@ -26,15 +26,15 @@ externaldir = $(pkglibdir)/extra/$(NAME)</span>
 # so we install everything in the install-data-hook
 install-data-hook:
    cd $(DESTDIR)$(externaldir) &amp;&amp; ( \
<span class="gd">-     $(LN_S) expr~.@EXTERNAL_EXTENSION@ expr.@EXTERNAL_EXTENSION@; \</span>
<span class="gd">-     $(LN_S) expr~.@EXTERNAL_EXTENSION@ fexpr~.@EXTERNAL_EXTENSION@; \</span>
<span class="gi">+     $(LN_S) -f expr~.@EXTERNAL_EXTENSION@ expr.@EXTERNAL_EXTENSION@; \</span>
<span class="gi">+     $(LN_S) -f expr~.@EXTERNAL_EXTENSION@ fexpr~.@EXTERNAL_EXTENSION@; \</span>
      cd ..; \
<span class="gd">-     $(LN_S) $(NAME)/expr.@EXTERNAL_EXTENSION@ expr.@EXTERNAL_EXTENSION@; \</span>
<span class="gd">-     $(LN_S) $(NAME)/expr~.@EXTERNAL_EXTENSION@ expr~.@EXTERNAL_EXTENSION@; \</span>
<span class="gd">-     $(LN_S) $(NAME)/fexpr~.@EXTERNAL_EXTENSION@ fexpr~.@EXTERNAL_EXTENSION@; \</span>
<span class="gd">-     $(LN_S) $(NAME)/expr-help.pd expr-help.pd; \</span>
<span class="gd">-     $(LN_S) $(NAME)/expr-help.pd expr~-help.pd; \</span>
<span class="gd">-     $(LN_S) $(NAME)/expr-help.pd fexpr~-help.pd; \</span>
<span class="gi">+     $(LN_S) -f $(NAME)/expr.@EXTERNAL_EXTENSION@ expr.@EXTERNAL_EXTENSION@; \</span>
<span class="gi">+     $(LN_S) -f $(NAME)/expr~.@EXTERNAL_EXTENSION@ expr~.@EXTERNAL_EXTENSION@; \</span>
<span class="gi">+     $(LN_S) -f $(NAME)/fexpr~.@EXTERNAL_EXTENSION@ fexpr~.@EXTERNAL_EXTENSION@; \</span>
<span class="gi">+     $(LN_S) -f $(NAME)/expr-help.pd expr-help.pd; \</span>
<span class="gi">+     $(LN_S) -f $(NAME)/expr-help.pd expr~-help.pd; \</span>
<span class="gi">+     $(LN_S) -f $(NAME)/expr-help.pd fexpr~-help.pd; \</span>
    )

 uninstall-hook:
</pre></div>
<p>The -f flag for ln is specified by POSIX, but I could only test on Debian Wheezy with ln (GNU coreutils) 8.13</p>
<p>Probably would be better to get the configure script to check the best way to force symlink update...</p>
<hr />
<p>Sent from sourceforge.net because pd-dev@lists.iem.at is subscribed to <a href="https://sourceforge.net/p/pure-data/bugs/">https://sourceforge.net/p/pure-data/bugs/</a></p>
<p>To unsubscribe from further messages, a project admin can change settings at <a href="https://sourceforge.net/p/pure-data/admin/bugs/options.">https://sourceforge.net/p/pure-data/admin/bugs/options.</a>  Or, if this is a mailing list, you can unsubscribe from the mailing list.</p></div>