diff options
-rw-r--r-- | recipes-core/classpathx/gnumail-1.1.2/fix_makefile_race_condition.patch | 129 | ||||
-rw-r--r-- | recipes-core/classpathx/gnumail_1.1.2.bb | 1 |
2 files changed, 130 insertions, 0 deletions
diff --git a/recipes-core/classpathx/gnumail-1.1.2/fix_makefile_race_condition.patch b/recipes-core/classpathx/gnumail-1.1.2/fix_makefile_race_condition.patch new file mode 100644 index 0000000..7f847e8 --- /dev/null +++ b/recipes-core/classpathx/gnumail-1.1.2/fix_makefile_race_condition.patch | |||
@@ -0,0 +1,129 @@ | |||
1 | From 81a63484820c3f8ac2808c74957a62b773f7f342 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Erkka=20K=C3=A4=C3=A4ri=C3=A4?= <erkka.kaaria@intel.com> | ||
3 | Date: Fri, 11 Dec 2015 14:24:23 +0200 | ||
4 | Subject: [PATCH] gnumail: Fix race condition in makefile | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | Parallel make does not handle multiple javac invocations correctly, as javac | ||
10 | compiles any uncompiled dependencies on its own. This leads to a race condition | ||
11 | where make may see incomplete class files and incorrectly assume that the class | ||
12 | file has already been compiled. This ultimately causes incomplete class files | ||
13 | to be included in one of the jars, causing build failures later on when javac | ||
14 | attempts to use such class file. | ||
15 | |||
16 | This issue is fixed by patching the makefile in such way that only one instance | ||
17 | of javac is invoked, which compiles all the java files in one go. | ||
18 | |||
19 | Upstream-Status: Inappropriate [dead project] | ||
20 | |||
21 | Signed-off-by: Erkka Kääriä <erkka.kaaria@intel.com> | ||
22 | --- | ||
23 | Makefile.am | 70 +++++++++---------------------------------------------------- | ||
24 | 1 file changed, 10 insertions(+), 60 deletions(-) | ||
25 | |||
26 | diff --git a/Makefile.am b/Makefile.am | ||
27 | index 8116b55..5c78dbc 100644 | ||
28 | --- a/Makefile.am | ||
29 | +++ b/Makefile.am | ||
30 | @@ -295,18 +295,6 @@ classpath = $(src):$(activation_jar):$(inetlib_jar):$(jsse_jar) | ||
31 | # Targets | ||
32 | BUILT_SOURCES = $(gnumail_jar) $(providers_jar) | ||
33 | |||
34 | -#£EXTRA_DIST = jarcompiler $(API_JAVASRC) $(GNU_SRC) $(MAIL_META) | ||
35 | - | ||
36 | -gnumail_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(gnumail_sources)) | ||
37 | -util_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(util_sources)) | ||
38 | -provider_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(provider_sources)) | ||
39 | -smtp_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(smtp_sources)) | ||
40 | -imap_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(imap_sources)) | ||
41 | -pop3_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(pop3_sources)) | ||
42 | -nntp_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(nntp_sources)) | ||
43 | -mbox_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(mbox_sources)) | ||
44 | -maildir_classes = $(patsubst $(src)/%.java, $(dst)/%.class, $(maildir_sources)) | ||
45 | - | ||
46 | META-INF: | ||
47 | mkdir -p META-INF | ||
48 | |||
49 | @@ -361,16 +349,14 @@ $(dst): | ||
50 | |||
51 | # Jars | ||
52 | |||
53 | -$(gnumail_jar): $(dst) $(gnumail_meta) $(gnumail_classes) $(util_classes) | ||
54 | +$(gnumail_jar): $(dst) $(gnumail_meta) build_sources | ||
55 | $(JAR) cfm $(gnumail_jar) $(manifest_mf) \ | ||
56 | $(gnumail_meta) \ | ||
57 | -C $(dst) javax \ | ||
58 | -C $(dst) gnu/mail/handler \ | ||
59 | -C $(dst) gnu/mail/util | ||
60 | |||
61 | -$(providers_jar): $(dst) $(providers_meta) $(provider_classes) $(smtp_classes) \ | ||
62 | - $(imap_classes) $(pop3_classes) $(nntp_classes) $(mbox_classes) \ | ||
63 | - $(maildir_classes) | ||
64 | +$(providers_jar): $(dst) $(providers_meta) build_sources | ||
65 | $(JAR) cfm $(providers_jar) $(manifest_mf) \ | ||
66 | $(providers_meta) \ | ||
67 | -C $(dst) gnu/mail/providers \ | ||
68 | @@ -378,50 +364,14 @@ $(providers_jar): $(dst) $(providers_meta) $(provider_classes) $(smtp_classes) \ | ||
69 | |||
70 | # Compilation | ||
71 | |||
72 | -#gnumail: util $(gnumail_classes) | ||
73 | - | ||
74 | -$(gnumail_classes): $(dst)/%.class: $(src)/%.java | ||
75 | - $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $< | ||
76 | - | ||
77 | -#util: $(util_classes) | ||
78 | - | ||
79 | -$(util_classes): $(dst)/%.class: $(src)/%.java | ||
80 | - $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $< | ||
81 | - | ||
82 | -#provider_util: $(gnumail_jar) $(provider_classes) | ||
83 | - | ||
84 | -$(provider_classes): $(dst)/%.class: $(src)/%.java | ||
85 | - $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $< | ||
86 | - | ||
87 | -#smtp: provider_util $(smtp_classes) | ||
88 | - | ||
89 | -$(smtp_classes): $(dst)/%.class: $(src)/%.java | ||
90 | - $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $< | ||
91 | - | ||
92 | -#imap: provider_util $(imap_classes) | ||
93 | - | ||
94 | -$(imap_classes): $(dst)/%.class: $(src)/%.java | ||
95 | - $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $< | ||
96 | - | ||
97 | -#pop3: provider_util $(pop3_classes) | ||
98 | - | ||
99 | -$(pop3_classes): $(dst)/%.class: $(src)/%.java | ||
100 | - $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $< | ||
101 | - | ||
102 | -#nntp: provider_util $(nntp_classes) | ||
103 | - | ||
104 | -$(nntp_classes): $(dst)/%.class: $(src)/%.java | ||
105 | - $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $< | ||
106 | - | ||
107 | -#mbox: provider_util $(mbox_classes) | ||
108 | - | ||
109 | -$(mbox_classes): $(dst)/%.class: $(src)/%.java | ||
110 | - $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $< | ||
111 | - | ||
112 | -#maildir: provider_util $(maildir_classes) | ||
113 | - | ||
114 | -$(maildir_classes): $(dst)/%.class: $(src)/%.java | ||
115 | - $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) $< | ||
116 | +build_sources: $(gnumail_sources) $(util_sources) $(provider_sources) \ | ||
117 | + $(smtp_sources) $(imap_sources) $(pop3_sources) $(nntp_sources) \ | ||
118 | + $(mbox_sources) $(maildir_sources) | ||
119 | + $(JAVAC) $(JAVACFLAGS) -classpath $(classpath) -d $(dst) \ | ||
120 | + $(gnumail_sources) $(util_sources) $(provider_sources) \ | ||
121 | + $(smtp_sources) $(imap_sources) $(pop3_sources) \ | ||
122 | + $(nntp_sources) $(mbox_sources) $(maildir_sources) | ||
123 | + touch build_sources | ||
124 | |||
125 | # Javadoc | ||
126 | javadoc: | ||
127 | -- | ||
128 | 2.1.4 | ||
129 | |||
diff --git a/recipes-core/classpathx/gnumail_1.1.2.bb b/recipes-core/classpathx/gnumail_1.1.2.bb index 41417c0..b498c2b 100644 --- a/recipes-core/classpathx/gnumail_1.1.2.bb +++ b/recipes-core/classpathx/gnumail_1.1.2.bb | |||
@@ -6,6 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=14bc6ee8b2e2b409be599212867d126e" | |||
6 | 6 | ||
7 | SRC_URI = "http://ftp.gnu.org/gnu/classpathx/mail-${PV}.tar.gz \ | 7 | SRC_URI = "http://ftp.gnu.org/gnu/classpathx/mail-${PV}.tar.gz \ |
8 | file://datadir_java.patch \ | 8 | file://datadir_java.patch \ |
9 | file://fix_makefile_race_condition.patch \ | ||
9 | " | 10 | " |
10 | 11 | ||
11 | inherit java-library java-bootstrap-components autotools | 12 | inherit java-library java-bootstrap-components autotools |