lilypond-devel
[Top][All Lists]
Advanced

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

Re: Issue 5267: Fix building with a source directory on a different devi


From: nine . fierce . ballads
Subject: Re: Issue 5267: Fix building with a source directory on a different device (issue 335520043 by address@hidden)
Date: Fri, 09 Feb 2018 14:39:05 -0800

Reviewers: lemzwerg,


https://codereview.appspot.com/335520043/diff/1/configure.ac
File configure.ac (right):

https://codereview.appspot.com/335520043/diff/1/configure.ac#newcode66
configure.ac:66: AC_MSG_CHECKING([how to replicate source files to build
files])
On 2018/02/09 07:59:04, lemzwerg wrote:
Any reason why you are using hard links instead of soft links?
And what about using AC_PROG_LN_S instead of this home-brewed macro?

The commands I replaced were hard link commands and I want to minimize
the probability of breaking someone else's build.

Description:
Fix building with a source directory on a different device
https://sourceforge.net/p/testlilyissues/issues/5267/

In configure, check whether hard links between files in the source and
build directories can be created.  If not, fall back on copying.  This
supports building with the source and build directories on different
devices.


Run git diff in the *source* directory.


Ignore .DS_Store files created by macOS Finder. (Not part of fixing
the build, but mighty convenient for me.)

Please review this at https://codereview.appspot.com/335520043/

Affected files (+25, -9 lines):
  M .gitignore
  M Documentation/css/GNUmakefile
  M Documentation/pictures/GNUmakefile
  M GNUmakefile.in
  M config.make.in
  M configure.ac


Index: .gitignore
diff --git a/.gitignore b/.gitignore
index 96f90af558da99f42dbeffda712fc7f2f95a7c74..9b4c796435a501e82b0c026fbca57d1deee9a2b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,6 +28,7 @@
 *~
 *~*
 .\#*
+.DS_Store
 .dotest
 .gdbinit
 .htaccess
Index: Documentation/css/GNUmakefile
diff --git a/Documentation/css/GNUmakefile b/Documentation/css/GNUmakefile
index 5f822237df993f752ff7c3643cf0bf1b0d3f63f7..db8d12e3e7ddfe9b95413f5d24b2d8c34e742966 100644
--- a/Documentation/css/GNUmakefile
+++ b/Documentation/css/GNUmakefile
@@ -20,5 +20,5 @@ endif
 #########
 ### Rules

-$(outdir)/%.css: %.css
-       ln -f $< $@
+$(outdir)/%.css: $(top-src-dir)/Documentation/css/%.css
+       $(LN_SRC_TO_BUILD) $< $@
Index: Documentation/pictures/GNUmakefile
diff --git a/Documentation/pictures/GNUmakefile b/Documentation/pictures/GNUmakefile index 8ae3e463bbe15e7aed5486ded25c7e5a2b2209bf..8f53363046bfa0ee0a161d9b2dfdfe8bdacd2120 100644
--- a/Documentation/pictures/GNUmakefile
+++ b/Documentation/pictures/GNUmakefile
@@ -31,11 +31,11 @@ $(outdir)/%-flat-gray.png: %-flat-gray.png
 $(outdir)/%-flat-bw.png: %-flat-bw.png
        convert -depth 8 -geometry 50x50% $< $@

-$(outdir)/%.png: %.png
-       ln -f $< $@
+$(outdir)/%.png: $(top-src-dir)/Documentation/pictures/%.png
+       $(LN_SRC_TO_BUILD) -f $< $@

-$(outdir)/%.jpg: %.jpg
-       ln -f $< $@
+$(outdir)/%.jpg: $(top-src-dir)/Documentation/pictures/%.jpg
+       $(LN_SRC_TO_BUILD) -f $< $@

 $(outdir)/%.png: %.eps
gs -dAutoRotatePages=/None -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=$@ -sDEVICE=png16m -dEPSCrop -dNOPAUSE -f $< -c quit
Index: GNUmakefile.in
diff --git a/GNUmakefile.in b/GNUmakefile.in
index 76f4515be93f6034c4fd0966788a8ff512afb9b3..da1f6f64e088756e07d20f8e1603ccc3a102053e 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -316,9 +316,13 @@ test:
        $(MAKE) -C input/regression/lilypond-book out=test local-test

 test-baseline:
-       @if test -d .git ; then \
- $(if $(shell git diff), echo "commit before base lining" && false,true) ; \
-       fi
+       @cd $(top-src-dir) && \
+               if test -d .git ; then \
+                       if ! git diff --exit-code > /dev/null ; then \
+                               echo "*** commit before base lining" 1>&2; \
+                               exit 1; \
+                       fi \
+               fi
        $(MAKE)
        $(MAKE) test
        $(MAKE) out=test -C input/regression local-test-baseline
Index: config.make.in
diff --git a/config.make.in b/config.make.in
index 3bf17671a029f0b3123277d98e0afb322fe415d9..420600ae8e5327a676be2940362e457ba6b6c3ce 100644
--- a/config.make.in
+++ b/config.make.in
@@ -128,6 +128,7 @@ LD = @LD@
 LINK_GXX_STATICALLY = @LINK_GXX_STATICALLY@
 LN = @LN@
 LN_S = @LN_S@
+LN_SRC_TO_BUILD = @LN_SRC_TO_BUILD@
 MAKEINFO_PROGRAM = @MAKEINFO@
 TEXI2HTML_PROGRAM = @TEXI2HTML@
 METAFONT = @METAFONT@ -progname=mf
Index: configure.ac
diff --git a/configure.ac b/configure.ac
index ead1814a885576919f1c7933a158617cb593bd5c..0aaa4412e303694fa5b8afd770e740dc24d793a2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -63,6 +63,16 @@ AC_ARG_ENABLE(static-gxx,
     [LINK_GXX_STATICALLY=$enableval])
 AC_SUBST(LINK_GXX_STATICALLY)

+AC_MSG_CHECKING([how to replicate source files to build files])
+if ln $srcdir/configure.ac dummy 2>/dev/null ; then
+    LN_SRC_TO_BUILD="ln"
+    rm -f dummy
+else
+    LN_SRC_TO_BUILD="cp -p"
+fi
+AC_MSG_RESULT($LN_SRC_TO_BUILD)
+AC_SUBST(LN_SRC_TO_BUILD)
+
 # must come before any header checks
 STEPMAKE_COMPILE






reply via email to

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