aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-core/classpathx/gnumail-1.1.2/fix_makefile_race_condition.patch
blob: 7f847e813230bc8f8b1c8b64af9a9e09a0a9f540 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
From 81a63484820c3f8ac2808c74957a62b773f7f342 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Erkka=20K=C3=A4=C3=A4ri=C3=A4?= <erkka.kaaria@intel.com>
Date: Fri, 11 Dec 2015 14:24:23 +0200
Subject: [PATCH] gnumail: Fix race condition in makefile
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Parallel make does not handle multiple javac invocations correctly, as javac
compiles any uncompiled dependencies on its own. This leads to a race condition
where make may see incomplete class files and incorrectly assume that the class
file has already been compiled. This ultimately causes incomplete class files
to be included in one of the jars, causing build failures later on when javac
attempts to use such class file.

This issue is fixed by patching the makefile in such way that only one instance
of javac is invoked, which compiles all the java files in one go.

Upstream-Status: Inappropriate [dead project]

Signed-off-by: Erkka Kääriä <erkka.kaaria@intel.com>
---
 Makefile.am | 70 +++++++++----------------------------------------------------
 1 file changed, 10 insertions(+), 60 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 8116b55..5c78dbc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -295,18 +295,6 @@ classpath = $(src):$(activation_jar):$(inetlib_jar):$(jsse_jar)
 # Targets
 BUILT_SOURCES = $(gnumail_jar) $(providers_jar)
 
-#�EXTRA_DIST = jarcompiler $(API_JAVASRC) $(GNU_SRC) $(MAIL_META)
-
-gnumail_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(gnumail_sources))
-util_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(util_sources))
-provider_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(provider_sources))
-smtp_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(smtp_sources))
-imap_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(imap_sources))
-pop3_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(pop3_sources))
-nntp_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(nntp_sources))
-mbox_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(mbox_sources))
-maildir_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(maildir_sources))
-
 META-INF:
 	mkdir -p META-INF
 
@@ -361,16 +349,14 @@ $(dst):
 
 # Jars
 
-$(gnumail_jar): $(dst) $(gnumail_meta) $(gnumail_classes) $(util_classes)
+$(gnumail_jar): $(dst) $(gnumail_meta) build_sources
 	$(JAR) cfm $(gnumail_jar) $(manifest_mf) \
 		$(gnumail_meta) \
 		-C $(dst) javax \
 		-C $(dst) gnu/mail/handler \
 		-C $(dst) gnu/mail/util 
 
-$(providers_jar): $(dst) $(providers_meta) $(provider_classes) $(smtp_classes) \
-	$(imap_classes) $(pop3_classes) $(nntp_classes) $(mbox_classes) \
-	$(maildir_classes)
+$(providers_jar): $(dst) $(providers_meta) build_sources
 	$(JAR) cfm $(providers_jar) $(manifest_mf) \
 		$(providers_meta) \
 		-C $(dst) gnu/mail/providers \
@@ -378,50 +364,14 @@ $(providers_jar): $(dst) $(providers_meta) $(provider_classes) $(smtp_classes) \
 
 # Compilation
 
-#gnumail: util $(gnumail_classes)
-
-$(gnumail_classes): $(dst)/%.class: $(src)/%.java
-	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $<
-
-#util: $(util_classes)
-
-$(util_classes): $(dst)/%.class: $(src)/%.java
-	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $<
-
-#provider_util: $(gnumail_jar) $(provider_classes)
-
-$(provider_classes): $(dst)/%.class: $(src)/%.java
-	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $<
-
-#smtp: provider_util $(smtp_classes)
-
-$(smtp_classes): $(dst)/%.class: $(src)/%.java
-	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $<
-
-#imap: provider_util $(imap_classes)
-
-$(imap_classes): $(dst)/%.class: $(src)/%.java
-	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $<
-
-#pop3: provider_util $(pop3_classes)
-
-$(pop3_classes): $(dst)/%.class: $(src)/%.java
-	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $<
-
-#nntp: provider_util $(nntp_classes)
-
-$(nntp_classes): $(dst)/%.class: $(src)/%.java
-	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $<
-
-#mbox: provider_util $(mbox_classes)
-
-$(mbox_classes): $(dst)/%.class: $(src)/%.java
-	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $<
-
-#maildir: provider_util $(maildir_classes)
-
-$(maildir_classes): $(dst)/%.class: $(src)/%.java
-	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $<
+build_sources: $(gnumail_sources) $(util_sources) $(provider_sources) \
+		$(smtp_sources) $(imap_sources) $(pop3_sources) $(nntp_sources) \
+		$(mbox_sources) $(maildir_sources)
+	$(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) \
+		$(gnumail_sources) $(util_sources) $(provider_sources) \
+		$(smtp_sources) $(imap_sources) $(pop3_sources) \
+		$(nntp_sources) $(mbox_sources) $(maildir_sources)
+	touch build_sources
 
 # Javadoc
 javadoc:
-- 
2.1.4