Skip to contentSkip to conversation

Makefile: Disable parallel build for $(CRITICAL_MAKEFILES)

PATCH In review Jungsoo Son 3 participants 6 messages May 21, 2013 – Jun 5, 2013 1 message not in the archive

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Makefile: Disable parallel build for $(CRITICAL_MAKEFILES)

This patch fixes parallel build error. When use parallel build

with -j16 or -j8, $(CRITICAL_MAKEFILES) are created as empty file

because generate-makefiles is called several times. So need to

disable parallel build.

The following code can guarantee sequencial building.

.NOTPARALLEL: $(CRITICAL_MAKEFILES)

---

testcases/open_posix_testsuite/Makefile | 2 ++

1 file changed, 2 insertions(+)
(quoted diff) +0 -0

b/testcases/open_posix_testsuite/Makefile

index 9c61fa4..bce5cf3 100644

--- a/testcases/open_posix_testsuite/Makefile

+++ b/testcases/open_posix_testsuite/Makefile

@@ -110,5 +110,7 @@ $(CRITICAL_MAKEFILES): \

     $(top_srcdir)/LDLIBS

         @$(MAKE) generate-makefiles

+.NOTPARALLEL: $(CRITICAL_MAKEFILES)

+

#tests-pretty:

# $(MAKE) all | column -t -s:

Signature · 1 line
1.7.9.5

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may

_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Acked-by on v1 1/1
#1 lore raw
Quoted 8 lines · Jungsoo Son

This patch fixes parallel build error. When use parallel build

with -j16 or -j8, $(CRITICAL_MAKEFILES) are created as empty file

because generate-makefiles is called several times. So need to

disable parallel build.

Quoted 7 lines

The following code can guarantee sequencial building.

.NOTPARALLEL: $(CRITICAL_MAKEFILES)

Quoted 27 lines

---

testcases/open_posix_testsuite/Makefile | 2 ++

1 file changed, 2 insertions(+)
testcases/open_posix_testsuite/Makefile +0 -0

index 9c61fa4..bce5cf3 100644

--- a/testcases/open_posix_testsuite/Makefile

+++ b/testcases/open_posix_testsuite/Makefile

testcases/open_posix_testsuite/Makefile +2 -0
@@ -110,5 +110,7 @@ $(CRITICAL_MAKEFILES): \
 
     $(top_srcdir)/LDLIBS
 
         @$(MAKE) generate-makefiles
 
+.NOTPARALLEL: $(CRITICAL_MAKEFILES)
 
+
Quoted 24 lines

#tests-pretty:

# $(MAKE) all | column -t -s:

Signature · 17 lines
1.7.9.5



------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may



_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

#2 lore raw
In reply to Jungsoo Son

Hi!

Quoted 11 lines

This patch fixes parallel build error. When use parallel build

with -j16 or -j8, $(CRITICAL_MAKEFILES) are created as empty file

because generate-makefiles is called several times. So need to

disable parallel build.

The following code can guarantee sequencial building.

.NOTPARALLEL: $(CRITICAL_MAKEFILES)

The problem is that Open Posix Testsuite should stuck with POSIX make. At least we promise that we will not break it actively. Now the 2008 POSIX make still does not support the idea of parallel build. I will have a look what will other than GNU make implementations do with such rule. If it would be ignored then we are fine adding it, if not we will have to figure out how to detect GNU make and add the line accordingly.

Signature · 13 lines
Cyril Hrubis
[email protected]

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
#3 lore raw

Hi!

Quoted 10 lines
Quoted 10 lines

This patch fixes parallel build error. When use parallel build

with -j16 or -j8, $(CRITICAL_MAKEFILES) are created as empty file

because generate-makefiles is called several times. So need to

disable parallel build.

The following code can guarantee sequencial building.

Quoted 8 lines
Quoted 1 line

.NOTPARALLEL: $(CRITICAL_MAKEFILES)

The problem is that Open Posix Testsuite should stuck with POSIX make. At least we promise that we will not break it actively. Now the 2008 POSIX make still does not support the idea of parallel build. I will have a look what will other than GNU make implementations do with such rule. If it would be ignored then we are fine adding it, if not we will have to figure out how to detect GNU make and add the line accordingly.

I got a an idea how to fix this in portable fashion. The key is the order of filenames the make looks for.

The gnu make tries GNUmakefile first, then makefile or Makefile.

So if we create GNUmakefile, which would include the Makefile and adds the .NOTPARALLEL: target it should work both with both GNU make and any other POSIX conforming make out there.

Signature · 13 lines
Cyril Hrubis
[email protected]

------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

A message that is not in the archive (sent off-list or not yet received): [email protected]

#5 lore raw

Hi!

Quoted 9 lines
Quoted 8 lines

I got a an idea how to fix this in portable fashion. The key is the order of filenames the make looks for.

The gnu make tries GNUmakefile first, then makefile or Makefile.

So if we create GNUmakefile, which would include the Makefile and adds the .NOTPARALLEL: target it should work both with both GNU make and any other POSIX conforming make out there.

Quoted 5 lines

I think your idea is good.
But I think that the code to distinguish GNU make and other POSIX will makes the Makefile to be more complex.
I do not wish to complicate the Makefile more than is necessary. How about using '-j1' without '.NOTPARALLEL:' option as follows.

Again the same problem as previously. The POSIX specification does not require the -j option to exist as the standard does not take parallel build into the account at all. And for the Open Posix part of LTP we need to stick to the POSIX.

And looking at the POSIX spec again, the POSIX make does not even support including files. So the only way how to fix this is to copy the top level Makefile to GNUmakefile and add the line. :(

Signature · 13 lines
Cyril Hrubis
[email protected]

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
#6 lore raw

Hi!

Quoted 15 lines
Quoted 9 lines
Quoted 8 lines

I got a an idea how to fix this in portable fashion. The key is the order of filenames the make looks for.

The gnu make tries GNUmakefile first, then makefile or Makefile.

So if we create GNUmakefile, which would include the Makefile and adds the .NOTPARALLEL: target it should work both with both GNU make and any other POSIX conforming make out there.

Quoted 5 lines

I think your idea is good.
But I think that the code to distinguish GNU make and other POSIX will makes the Makefile to be more complex.
I do not wish to complicate the Makefile more than is necessary. How about using '-j1' without '.NOTPARALLEL:' option as follows.

Quoted 8 lines

Again the same problem as previously. The POSIX specification does not require the -j option to exist as the standard does not take parallel build into the account at all. And for the Open Posix part of LTP we need to stick to the POSIX.

And looking at the POSIX spec again, the POSIX make does not even support including files. So the only way how to fix this is to copy the top level Makefile to GNUmakefile and add the line. :(

I've looked into the openposix Makefile and it allready contains non conforming '-j1' options. I will have closer look at the build scripts and Makefiles.

Signature · 13 lines
Cyril Hrubis
[email protected]

------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list