On Thu, Apr 19, 2001 at 11:38:49PM +1000, Bruce Evans wrote:
> On Thu, 19 Apr 2001, Ruslan Ermilov wrote:
>
> > Attached is the Makefile that demonstrates the problem. Run it like this:
> >
> > make obj; make all
> >
> > Then try:
> >
> > make install
> >
> > And then try:
> >
> > make -j2 install
> >
> > Note the difference. This fixes the problem:
> >
> > --- Makefile Thu Apr 19 11:33:04 2001
> > +++ Makefile Thu Apr 19 11:36:20 2001
> > @@ -8,6 +8,7 @@
> > beforeinstall: .SILENT
> > cd ${.CURDIR}; \
> > ${INSTALL} ${COPY} -m ${NOBINMODE} Makefile ${DESTDIR}/tmp
> > + cd ${.OBJDIR}
> > pwd
> > ${INSTALL} ${COPY} -m ${NOBINMODE} foo ${DESTDIR}/tmp
> >
> > I'm not sure if this a make(1) bug or a feature, as both NetBSD and
> > OpenBSD behave the same. But I'm pretty sure this is a bug. Will?
>
> This is a feature of parallel make. Parallel make combines all of
> the commands for each target into a single shell command (if possible?).
> Thus `cd's in one command affect subsequent commands. This feature
> can be controlled using the undocumented .SINGLESHELL directive.
> Unfortunately, the implementation of .SINGLESHELL is too primitive
> for .SINGELSHELL to be worth using. Using it is equivalent to using
> -B to turn off -j.
>
I stand corrected. The simple demo of this feature would be:
foo: .SILENT
VARIABLE=value
echo $${VARIABLE}
BTW, I have found the relevant info in the section 2.2 of the
/usr/share/doc/psd/12.make/ paper:
: Because all the commands are given to a single shell to execute,
: such things as setting shell variables, changing directories, etc.,
^^^^^^^^^^^^^^^^^^^^
: last beyond the command in which they are found. This also allows
: shell compound commands (like ``for'' loops) to be entered in a
: natural manner. Since this could cause problems for some makefiles
: that depend on each command being executed by a single shell, PMake
: has a -B flag (it stands for backwards-compatible) that forces each
: command to be given to a separate shell. It also does several other
: things, all of which I discourage since they are now old-fashioned.
Thanks,
--
Ruslan Ermilov Oracle Developer/DBA,
[EMAIL PROTECTED] Sunbay Software AG,
[EMAIL PROTECTED] FreeBSD committer,
+380.652.512.251 Simferopol, Ukraine
http://www.FreeBSD.org The Power To Serve
http://www.oracle.com Enabling The Information Age
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message