Re: Faster install-sh in C - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: Faster install-sh in C
Date
Msg-id 200503232023.j2NKNFT05186@candle.pha.pa.us
Whole thread Raw
In response to Re: Faster install-sh in C  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Faster install-sh in C
List pgsql-patches
Tom Lane wrote:
> Alvaro Herrera <alvherre@dcc.uchile.cl> writes:
> > Also, keep in my that this C install program has the extra feature of
> > being able to install multiple files on one invocation, per suggestion
> > from Tom Lane.  This allows us to save the nested for-loop in
> > src/include/Makefile.  GNU install (available on my system) also has
> > this capability, but would we be able to use the trick if we had to
> > cater for the lowest common denominator found on other, non-GNU-enabled
> > systems?
>
> We would definitely not ... and my suspicion is that that is the largest
> single component of the available speedup.

OK, what is 'install' doing for us that 'cp' and 'chmod' would not
already do?  The following patch reduces the 'gmake install' in
/src/include from 8 seconds to 0.8 seconds.

Oh, and for testing I use a sourceforge shell farm account, and a HP
testdrive shell acount that gives me access to almost every operating
system.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/include/Makefile
===================================================================
RCS file: /cvsroot/pgsql/src/include/Makefile,v
retrieving revision 1.19
diff -c -c -r1.19 Makefile
*** src/include/Makefile    6 Jan 2005 21:00:24 -0000    1.19
--- src/include/Makefile    23 Mar 2005 20:22:56 -0000
***************
*** 41,49 ****
        $(INSTALL_DATA) $$file $(DESTDIR)$(includedir_server)/`basename $$file` || exit; \
      done
      for dir in $(SUBDIRS); do \
!       for file in $(srcdir)/$$dir/*.h; do \
!         $(INSTALL_DATA) $$file $(DESTDIR)$(includedir_server)/$$dir/`basename $$file` || exit; \
!       done \
      done

  installdirs:
--- 41,48 ----
        $(INSTALL_DATA) $$file $(DESTDIR)$(includedir_server)/`basename $$file` || exit; \
      done
      for dir in $(SUBDIRS); do \
!       cp $(srcdir)/$$dir/*.h $(DESTDIR)$(includedir_server)/$$dir/ || exit; \
!       chmod 644 $(DESTDIR)$(includedir_server)/$$dir/*.h  || exit; \
      done

  installdirs:

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: Faster install-sh in C
Next
From: Tom Lane
Date:
Subject: Re: Faster install-sh in C