[Bug other/109898] 'make install -j' sometimes corrupts 'dir' file for .info files due to parallel 'install-info' calls

2023-05-19 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109898

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek  ---
But perhaps make install could $(MAKE) NOT_PARALLEL=1 non-parallel-install
and the makefile could have
ifeq ($(NOT_PARALLEL),1)
.NOTPARALLEL:
endif
?

[Bug other/109898] 'make install -j' sometimes corrupts 'dir' file for .info files due to parallel 'install-info' calls

2023-05-19 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109898

--- Comment #4 from Jonathan Wakely  ---
That seems to be new in Make 4.4, because the manual for Make 4.3 says:

'.NOTPARALLEL'

 If '.NOTPARALLEL' is mentioned as a target, then this invocation of
 'make' will be run serially, even if the '-j' option is given.  Any
 recursively invoked 'make' command will still run recipes in
 parallel (unless its makefile also contains this target).  Any
 prerequisites on this target are ignored.

[Bug other/109898] 'make install -j' sometimes corrupts 'dir' file for .info files due to parallel 'install-info' calls

2023-05-18 Thread slyfox at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109898

--- Comment #3 from Sergei Trofimovich  ---
(In reply to Jonathan Wakely from comment #2)
> (In reply to Sergei Trofimovich from comment #0)
> > --- gcc-12.2.0/gcc/Makefile.in  2022-08-19 10:09:52.280658631 +0200
> > +++ gcc-12.2.0-new/gcc/Makefile.in  2023-05-04 14:35:44.401420184 +0200
> > @@ -3781,6 +3781,11 @@
> >   fi; \
> > fi
> >  
> > +# We don't care about the order in which the info files are built, but
> > +# install-info doesn't support multiple parallel invocations writing to
> > +# the same `dir-file`, so we have to disable parallelism for that reason:
> > +.NOTPARALLEL: install-info
> 
> Prerequisites of .NOTPARALLEL are ignored, so doesn't this un-parallelize
> building the entire gcc sub-dir?

When I tested on small example '.NOTPARALLEL: target' serialized exactly
prerequisites of 'target' and nothing more. 'info make' seems to confirm the
behaviour:

"""
'.NOTPARALLEL'

 If '.NOTPARALLEL' is mentioned as a target with no prerequisites,
 all targets in this invocation of 'make' will be run serially, even
 if the '-j' option is given.  Any recursively invoked 'make'
 command will still run recipes in parallel (unless its makefile
 also contains this target).

 If '.NOTPARALLEL' has targets as prerequisites, then all the
 prerequisites of those targets will be run serially.  This
 implicitly adds a '.WAIT' between each prerequisite of the listed
 targets.  *Note Disabling Parallel Execution: Parallel Disable.
"""

Here is the test that confirms it:

$ cat Makefile
all: a b

a: 1 2
echo a

1:
sleep 1

2:
sleep 1

b: 3 4
echo b

3:
sleep 1

4:
sleep 1

.NOTPARALLEL: a

$ make -j | LANG=C ts
May 18 20:34:23 sleep 1
May 18 20:34:23 sleep 1
May 18 20:34:23 sleep 1
May 18 20:34:24 sleep 1
May 18 20:34:24 echo b
May 18 20:34:24 b
May 18 20:34:25 echo a
May 18 20:34:25 a

Note how it takes 'b' 1 second to finish (due to parallelism) while 'a' takes 2
seconds (targets are sequential).

[Bug other/109898] 'make install -j' sometimes corrupts 'dir' file for .info files due to parallel 'install-info' calls

2023-05-18 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109898

--- Comment #2 from Jonathan Wakely  ---
(In reply to Sergei Trofimovich from comment #0)
> --- gcc-12.2.0/gcc/Makefile.in2022-08-19 10:09:52.280658631 +0200
> +++ gcc-12.2.0-new/gcc/Makefile.in2023-05-04 14:35:44.401420184 +0200
> @@ -3781,6 +3781,11 @@
> fi; \
>   fi
>  
> +# We don't care about the order in which the info files are built, but
> +# install-info doesn't support multiple parallel invocations writing to
> +# the same `dir-file`, so we have to disable parallelism for that reason:
> +.NOTPARALLEL: install-info

Prerequisites of .NOTPARALLEL are ignored, so doesn't this un-parallelize
building the entire gcc sub-dir?

[Bug other/109898] 'make install -j' sometimes corrupts 'dir' file for .info files due to parallel 'install-info' calls

2023-05-17 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109898

--- Comment #1 from Richard Biener  ---
make all of 'install' not parallel?