From: Gregory M. Turner Somehow (I suspect it is some subtle bug in the xattr-wrapper(!), but I didn't investigate carefully), this ebuild mysteriously started failing due to installing files where there were supposed to be directories. Not sure what changed, but it's pretty easy to see how, if this makefile were being run by a sufficiently creative make, how the current implementation could break. I guess we could fix it by placing a dependency on mkdirs for all of the subsequent targets requisite to "install". But, sheesh, gross. Better just to fix the underlying problem by using install in a fully consistent manner. This patch changes blt to do just that, always using install -t or install -T, and always preceeding those calls by one to install -d (which wont run in parallel no matter what :)). I even fixed it for cygwin. TODO: submit to upstream. -gmt diff -urpN blt2.4z-8.5.2.orig/demos/Makefile.in blt2.4z-8.5.2/demos/Makefile.in --- blt2.4z-8.5.2.orig/demos/Makefile.in 2014-07-05 01:46:30.058060792 -0700 +++ blt2.4z-8.5.2/demos/Makefile.in 2014-07-05 01:43:08.391034175 -0700 @@ -17,17 +17,6 @@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_ROOT = -instdirs = $(prefix) \ - $(exec_prefix) \ - $(libdir) \ - $(scriptdir) \ - $(destdir) \ - $(destdir)/bitmaps \ - $(destdir)/bitmaps/hand \ - $(destdir)/bitmaps/fish \ - $(destdir)/images \ - $(destdir)/scripts - demos = barchart1.tcl barchart2.tcl barchart3.tcl barchart4.tcl \ barchart5.tcl \ bgexec1.tcl bgexec2.tcl bgexec3.tcl bgexec4.tcl \ @@ -48,42 +37,37 @@ demos = barchart1.tcl barchart2.tcl bar all: -install: mkdirs install-bitmaps install-images install-scripts +install: install-bitmaps install-images install-scripts install-scripts: + $(INSTALL) -d $(INSTALL_ROOT)$(destdir)/scripts for i in $(srcdir)/scripts/*.tcl ; do \ - $(INSTALL) $$i $(INSTALL_ROOT)$(destdir)/scripts ; \ + $(INSTALL) -t $(INSTALL_ROOT)$(destdir)/scripts $$i ; \ done for i in $(demos) ; do \ - $(INSTALL) $(srcdir)/$$i $(INSTALL_ROOT)$(destdir)/$$i ; \ + $(INSTALL) -t $(INSTALL_ROOT)$(destdir) $(srcdir)/$$i ; \ done install-bitmaps: + $(INSTALL_DATA) -d $(INSTALL_ROOT)$(destdir)/bitmaps/hand \ + $(INSTALL_ROOT)$(destdir)/bitmaps/fish \ + $(INSTALL_ROOT)$(destdir)/images for i in $(srcdir)/bitmaps/*.xbm ; do \ - $(INSTALL_DATA) $$i $(INSTALL_ROOT)$(destdir)/bitmaps ; \ + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(destdir)/bitmaps $$i ; \ done for i in $(srcdir)/bitmaps/hand/*.xbm ; do \ - $(INSTALL_DATA) $$i $(INSTALL_ROOT)$(destdir)/bitmaps/hand ; \ + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(destdir)/bitmaps/hand $$i ; \ done for i in $(srcdir)/bitmaps/fish/*.xbm ; do \ - $(INSTALL_DATA) $$i $(INSTALL_ROOT)$(destdir)/bitmaps/fish ; \ + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(destdir)/bitmaps/fish $$i ; \ done install-images: + $(INSTALL_DATA) -d $(INSTALL_ROOT)$(destdir)/images for i in $(srcdir)/images/*.gif $(srcdir)/images/*.ps ; do \ - $(INSTALL_DATA) $$i $(INSTALL_ROOT)$(destdir)/images ; \ + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(destdir)/images $$i ; \ done -mkdirs: - @for i in $(instdirs) ; do \ - if test -d $(INSTALL_ROOT)"$$i" ; then \ - : ; \ - else \ - echo " mkdir $(INSTALL_ROOT)$$i" ; \ - mkdir $(INSTALL_ROOT)"$$i" ; \ - fi ; \ - done - clean: $(RM) $(srcdir)/*.bak $(srcdir)/*\~ $(srcdir)/"#"* diff -urpN blt2.4z-8.5.2.orig/library/Makefile.in blt2.4z-8.5.2/library/Makefile.in --- blt2.4z-8.5.2.orig/library/Makefile.in 2014-07-05 01:46:30.058060792 -0700 +++ blt2.4z-8.5.2/library/Makefile.in 2014-07-05 01:43:08.127036759 -0700 @@ -38,9 +38,6 @@ ddFiles = dd-color.tcl \ dd-text.tcl \ tclIndex -instdirs = $(prefix) $(exec_prefix) \ - $(libdir) $(prefix)/lib $(scriptdir) $(scriptdir)/dd_protocols - all: pkgIndex pkgIndex: @@ -50,25 +47,16 @@ pkgIndex: sed -e 's;%LIB_DIR%;$(libdir);' > pkgIndex.tcl -install: mkdirs pkgIndex +install: pkgIndex + $(INSTALL_DATA) -d $(INSTALL_ROOT)$(scriptdir)/dd_protocols for i in $(ddFiles) ; do \ - $(INSTALL_DATA) $(srcdir)/dd_protocols/$$i \ - $(INSTALL_ROOT)$(scriptdir)/dd_protocols ; \ + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(scriptdir)/dd_protocols \ + $(srcdir)/dd_protocols/$$i ; \ done for i in $(miscFiles) ; do \ - $(INSTALL_DATA) $(srcdir)/$$i $(INSTALL_ROOT)$(scriptdir) ; \ + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(scriptdir) $(srcdir)/$$i ; \ done - $(INSTALL_DATA) pkgIndex.tcl $(INSTALL_ROOT)$(scriptdir) - -mkdirs: - @for i in $(instdirs) ; do \ - if test -d $(INSTALL_ROOT)$$i ; then \ - : ; \ - else \ - echo " mkdir $(INSTALL_ROOT)$$i" ; \ - mkdir $(INSTALL_ROOT)$$i ; \ - fi ; \ - done + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(scriptdir) pkgIndex.tcl clean: $(RM) pkgIndex.tcl diff -urpN blt2.4z-8.5.2.orig/Makefile.in blt2.4z-8.5.2/Makefile.in --- blt2.4z-8.5.2.orig/Makefile.in 2014-07-05 01:46:30.058060792 -0700 +++ blt2.4z-8.5.2/Makefile.in 2014-07-05 01:43:08.390034185 -0700 @@ -16,13 +16,6 @@ version = @BLT_VERSION@ gentoo_libdir = @GENTOO_LIBDIR@ scriptdir = $(prefix)/$(gentoo_libdir)/blt$(version) -instdirs = $(prefix) \ - $(exec_prefix) \ - $(bindir) \ - $(libdir) \ - $(includedir) \ - $(scriptdir) - # ------------------------------------------------------------------------ # Don't edit anything beyond this point # ------------------------------------------------------------------------ @@ -41,26 +34,15 @@ all: (cd man; $(MAKE) all) (cd demos; $(MAKE) all) -install: mkdirs install-all +install: install-all install-all: (cd src; $(MAKE) install) (cd library; $(MAKE) install) (cd man; $(MAKE) install) (cd demos; $(MAKE) install) - $(INSTALL_DATA) $(srcdir)/README $(INSTALL_ROOT)$(scriptdir) - $(INSTALL_DATA) $(srcdir)/PROBLEMS $(INSTALL_ROOT)$(scriptdir) - $(INSTALL_DATA) $(srcdir)/NEWS $(INSTALL_ROOT)$(scriptdir) - -mkdirs: - @for i in $(instdirs) ; do \ - if test -d $(INSTALL_ROOT)$$i ; then \ - : ; \ - else \ - echo " mkdir $(INSTALL_ROOT)$$i" ; \ - mkdir $(INSTALL_ROOT)$$i ; \ - fi ; \ - done + $(INSTALL_DATA) -d $(INSTALL_ROOT)$(scriptdir) + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(scriptdir) $(srcdir)/README $(srcdir)/PROBLEMS $(srcdir)/NEWS clean: (cd src; $(MAKE) clean) diff -urpN blt2.4z-8.5.2.orig/man/Makefile.in blt2.4z-8.5.2/man/Makefile.in --- blt2.4z-8.5.2.orig/man/Makefile.in 2014-07-05 01:46:30.058060792 -0700 +++ blt2.4z-8.5.2/man/Makefile.in 2014-07-05 01:43:08.127036759 -0700 @@ -8,8 +8,6 @@ sectiondir = $(mandir)/mann srcdir = @srcdir@ version = @BLT_VERSION@ -instdirs = $(mandir) $(mandir)/mann $(mandir)/man3 - MAN_N = BLT.n barchart.n beep.n bgexec.n bitmap.n \ bltdebug.n busy.n container.n cutbuffer.n \ dragdrop.n eps.n graph.n hierbox.n \ @@ -34,26 +32,17 @@ VPATH = $(srcdir) all: man.macros $(MANPAGES) -install: mkdirs install-mann install-man3 +install: install-mann install-man3 install-mann: $(MAN_N) + $(INSTALL_DATA) -d $(INSTALL_ROOT)$(mandir)/mann $(INSTALL_ROOT)$(mandir)/man3 for i in *.n ; do \ - $(INSTALL_DATA) $$i $(INSTALL_ROOT)$(mandir)/mann; \ + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(mandir)/mann $$i ; \ done install-man3: $(MAN_3) for i in *.3 ; do \ - $(INSTALL_DATA) $$i $(INSTALL_ROOT)$(mandir)/man3; \ - done - -mkdirs: - @for i in $(instdirs) ; do \ - if test -d $(INSTALL_ROOT)$$i ; then \ - : ; \ - else \ - echo " mkdir $(INSTALL_ROOT)$$i" ; \ - mkdir $(INSTALL_ROOT)$$i ; \ - fi ; \ + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(mandir)/man3 $$i ; \ done .SUFFIXES: .n .mann .3 .man3 diff -urpN blt2.4z-8.5.2.orig/src/Makefile-cyg.in blt2.4z-8.5.2/src/Makefile-cyg.in --- blt2.4z-8.5.2.orig/src/Makefile-cyg.in 2014-07-05 01:46:30.058060792 -0700 +++ blt2.4z-8.5.2/src/Makefile-cyg.in 2014-07-05 01:50:53.702482022 -0700 @@ -32,8 +32,6 @@ scriptdir = @BLT_LIBRARY@ prefix = @prefix@ srcdir = @srcdir@ -instdirs = $(prefix) $(exec_prefix) $(bindir) $(scriptdir) $(libdir) $(incdir) - # ------------------------------------------------------------------------ # Directories containing Tcl and Tk include files and libraries # ------------------------------------------------------------------------ @@ -216,34 +214,26 @@ $(tcl_only_lib_so): $(TCL_ONLY_OBJS) bl $(SHLIB_LD) $(SHLIB_LD_FLAGS) ${LDFLAGS} -o $@ bltInit_tclonly.o $(TCL_ONLY_OBJS) \ $(TCL_ONLY_LIBS) -install: mkdirs install-lib install-demo install-headers +install: install-lib install-demo install-headers install-demo: $(bltwish) $(bltsh) - $(INSTALL) -m 0755 $(bltwish) $(INSTALL_ROOT)$(bindir) - $(INSTALL) -m 0755 $(bltsh) $(INSTALL_ROOT)$(bindir) + $(INSTALL) -d $(INSTALL_ROOT)$(bindir) + $(INSTALL) -m 0755 $(INSTALL_ROOT)$(bindir) $(bltwish) $(bltsh) install-lib: $(lib_a) $(tcl_only_lib_a) $(lib_so) $(tcl_only_lib_so) - $(INSTALL_DATA) $(lib_a) $(INSTALL_ROOT)$(libdir) + $(INSTALL_DATA) -d $(INSTALL_ROOT)$(libdir) + $(INSTALL) -d $(INSTALL_ROOT)$(bindir) + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(libdir) $(lib_a) $(RANLIB) $(INSTALL_ROOT)$(libdir)/$(lib_a) - $(INSTALL_DATA) $(tcl_only_lib_a) $(INSTALL_ROOT)$(libdir) + $(INSTALL_DATA) -t $(INSTALL_ROOT)$(libdir) $(tcl_only_lib_a) $(RANLIB) $(INSTALL_ROOT)$(libdir)/$(tcl_only_lib_a) - $(INSTALL) -m 0755 $(lib_so) $(INSTALL_ROOT)$(bindir) - $(INSTALL) -m 0755 $(tcl_only_lib_so) $(INSTALL_ROOT)$(bindir) - -mkdirs: - @for i in $(instdirs) ; do \ - if test -d $(INSTALL_ROOT)$$i ; then \ - : ; \ - else \ - echo " mkdir $(INSTALL_ROOT)$$i" ; \ - mkdir $(INSTALL_ROOT)$$i ; \ - fi ; \ - done + $(INSTALL) -m 0755 -t $(INSTALL_ROOT)$(bindir) $(lib_so) $(tcl_only_lib_so) install-headers: + $(INSTALL_DATA) -d $(INSTALL_ROOT)$(incdir) @for i in $(headers) ; do \ echo "installing $$i..." ; \ - $(INSTALL_DATA) -m 0444 $$i $(INSTALL_ROOT)$(incdir) ; \ + $(INSTALL_DATA) -m 0444 -t $(INSTALL_ROOT)$(incdir) $$i ; \ done lint: diff -urpN blt2.4z-8.5.2.orig/src/Makefile.in blt2.4z-8.5.2/src/Makefile.in --- blt2.4z-8.5.2.orig/src/Makefile.in 2014-07-05 01:46:30.059060782 -0700 +++ blt2.4z-8.5.2/src/Makefile.in 2014-07-05 01:43:08.459033510 -0700 @@ -29,8 +29,6 @@ scriptdir = $(exec_prefix)/lib prefix = @prefix@ srcdir = @srcdir@ -instdirs = $(prefix) $(exec_prefix) $(bindir) $(libdir) $(incdir) - # ------------------------------------------------------------------------ # Directories containing Tcl and Tk include files and libraries # ------------------------------------------------------------------------ @@ -193,35 +191,27 @@ $(tcl_only_lib_a): $(TCL_ONLY_OBJS) blt $(AR) $@ $(TCL_ONLY_OBJS) bltInit_tclonly.o $(RANLIB) $@ -install: mkdirs install-lib install-demo install-headers +install: install-lib install-demo install-headers install-demo: $(bltwish) $(bltsh) - $(INSTALL) -m 0755 $(bltwish) $(INSTALL_ROOT)$(bindir) - $(INSTALL) -m 0755 $(bltsh) $(INSTALL_ROOT)$(bindir) + $(INSTALL) -d $(INSTALL_ROOT)$(bindir) + $(INSTALL) -m 0755 -t $(INSTALL_ROOT)$(bindir) $(bltwish) $(bltsh) install-lib: $(lib_a) $(tcl_only_lib_a) - $(INSTALL_DATA) $(lib_a) $(INSTALL_ROOT)$(libdir)/$(libvers_a) + $(INSTALL_DATA) -d $(INSTALL_ROOT)$(libdir) + $(INSTALL_DATA) -T $(lib_a) $(INSTALL_ROOT)$(libdir)/$(libvers_a) (cd $(INSTALL_ROOT)$(libdir); $(RM) $(lib_a) ; $(LN_S) $(libvers_a) $(lib_a)) $(RANLIB) $(INSTALL_ROOT)$(libdir)/$(libvers_a) - $(INSTALL_DATA) $(tcl_only_lib_a) $(INSTALL_ROOT)$(libdir)/$(tcl_only_libvers_a) + $(INSTALL_DATA) -T $(tcl_only_lib_a) $(INSTALL_ROOT)$(libdir)/$(tcl_only_libvers_a) (cd $(INSTALL_ROOT)$(libdir); $(RM) $(tcl_only_lib_a) ; $(LN_S) $(tcl_only_libvers_a) $(tcl_only_lib_a)) $(RANLIB) $(INSTALL_ROOT)$(libdir)/$(tcl_only_libvers_a) (cd shared; $(MAKE) install) -mkdirs: - @for i in $(instdirs) ; do \ - if test -d $(INSTALL_ROOT)$$i ; then \ - : ; \ - else \ - echo " mkdir $(INSTALL_ROOT)$$i" ; \ - mkdir $(INSTALL_ROOT)$$i ; \ - fi ; \ - done - install-headers: + $(INSTALL_DATA) -d $(INSTALL_ROOT)$(incdir) @for i in $(headers) ; do \ echo "installing $$i..." ; \ - $(INSTALL_DATA) -m 0444 $$i $(INSTALL_ROOT)$(incdir) ; \ + $(INSTALL_DATA) -m 0444 -t $(INSTALL_ROOT)$(incdir) $$i ; \ done lint: diff -urpN blt2.4z-8.5.2.orig/src/shared/Makefile.in blt2.4z-8.5.2/src/shared/Makefile.in --- blt2.4z-8.5.2.orig/src/shared/Makefile.in 2014-07-05 01:46:30.059060782 -0700 +++ blt2.4z-8.5.2/src/shared/Makefile.in 2014-07-05 01:51:45.929971311 -0700 @@ -26,8 +26,6 @@ libdir = @libdir@ bindir = $(exec_prefix)/bin srcdir = @srcdir@/.. -instdirs = $(exec_prefix) $(libdir) - scriptdir = @BLT_LIBRARY@ LIBS = @LIB_SPECS@ @EXTRA_LIB_SPECS@ @@ -162,25 +160,16 @@ $(tcl_only_lib_so): $(TCL_ONLY_OBJS) blt $(SHLIB_LD) $(SHLIB_LD_FLAGS) $(LDFLAGS) -o $@ bltInit_tclonly.o $(TCL_ONLY_OBJS) \ $(SHLIB_TCL_ONLY_LIB_SPECS) $(LIBS) -install: mkdirs install-lib install-demo +install: install-lib install-demo install-demo: $(bltwish) - $(INSTALL) -m 0755 bltwish$(version) $(INSTALL_ROOT)$(bindir) - $(INSTALL) -m 0755 bltsh$(version) $(INSTALL_ROOT)$(bindir) + $(INSTALL) -d $(INSTALL_ROOT)$(bindir) + $(INSTALL) -m 0755 -t $(INSTALL_ROOT)$(bindir) bltwish$(version) bltsh$(version) install-lib: $(lib_so) $(tcl_only_lib_so) - $(INSTALL) -m 0755 $(lib_so) $(INSTALL_ROOT)$(libdir) - $(INSTALL) -m 0755 $(tcl_only_lib_so) $(INSTALL_ROOT)$(libdir) + $(INSTALL) -d $(INSTALL_ROOT)$(libdir) + $(INSTALL) -m 0755 -t $(INSTALL_ROOT)$(libdir) $(lib_so) $(tcl_only_lib_so) -mkdirs: - @for i in $(instdirs) ; do \ - if test -d $(INSTALL_ROOT)$$i ; then \ - : ;\ - else \ - echo " mkdir $(INSTALL_ROOT)$$i" ; \ - mkdir $(INSTALL_ROOT)$$i ; \ - fi ; \ - done clean: $(RM) $(OBJS) $(lib_so) $(tcl_only_lib_so) $(bltwish) $(bltsh) \ *pure* .pure* bltInit_tcltk.o bltInit_tclonly.o \