1 |
commit: 35c081c398a95b522be2ae83ce52616fa6517aed |
2 |
Author: James Le Cuirot <chewi <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Nov 2 23:24:17 2015 +0000 |
4 |
Commit: James Le Cuirot <chewi <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Nov 2 23:40:57 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=35c081c3 |
7 |
|
8 |
dev-java/jflex: Rewrite for version bump to 1.6.1 |
9 |
|
10 |
Rewritten using java-pkg-simple to give us more control over this |
11 |
tricky package. javacup has become a PDEPEND, meaning that the bundled |
12 |
version is automatically used on the first build instead of it having |
13 |
a system-jflex USE flag. |
14 |
|
15 |
~arm keyword added with workarounds for different problems encountered |
16 |
with both IcedTea and Oracle. |
17 |
|
18 |
~ppc64 keyword temporarily dropped until it gets Java 7, which the |
19 |
newer javacup requires. |
20 |
|
21 |
Please stabilise this at the same time as dev-java/qdox-1.12.1-r1. |
22 |
|
23 |
Package-Manager: portage-2.2.20.1 |
24 |
|
25 |
dev-java/jflex/Manifest | 1 + |
26 |
dev-java/jflex/files/icedtea-arm.patch | 18 +++++ |
27 |
dev-java/jflex/jflex-1.6.1.ebuild | 121 +++++++++++++++++++++++++++++++++ |
28 |
3 files changed, 140 insertions(+) |
29 |
|
30 |
diff --git a/dev-java/jflex/Manifest b/dev-java/jflex/Manifest |
31 |
index 5a41a58..b4c0417 100644 |
32 |
--- a/dev-java/jflex/Manifest |
33 |
+++ b/dev-java/jflex/Manifest |
34 |
@@ -1 +1,2 @@ |
35 |
DIST jflex-1.6.0.tar.gz 3035885 SHA256 0774da0ee2d01fc9274179de4243e0d229c01b5cf0fbb78952fb7fdc4672190c SHA512 16ce4a89f75ce5f3da02433ff66d39ed4db567b4cf7469997dd2617b82e52d589bb17ec3a2f36b4d00a62233e48820bc2e043dcc9ae3c01f1eeca323c0166eba WHIRLPOOL 4d9e7e8c3a0da66d860b895699d5b50e29f781f1cf18cab436f545b1fb007297ca9433694ce3808452c5d9340eddc978c2b32019b5a8d5d8c6cb0558543ea18e |
36 |
+DIST jflex-1.6.1.tar.gz 3027791 SHA256 9879fb4ea7b286af3c3439cf148f5739dfa722edbd978f2f798268b2e016f8c0 SHA512 436840c90d906042205d27e1d3c56dec724bf62cc3d8c8d3445f217af0a50c9ca2bb56ed91f0cd3c37a930f7ca22f4cc50e8c28dbe905f02adf695c8e96fb07b WHIRLPOOL 27e2769b1b1dc720cee71718eca024905fd9e200c53771c2db293471b0190d9a3c9d2245fbbc5ab76a1f22e1496053d35d625a34c09819b1e367f78840152666 |
37 |
|
38 |
diff --git a/dev-java/jflex/files/icedtea-arm.patch b/dev-java/jflex/files/icedtea-arm.patch |
39 |
new file mode 100644 |
40 |
index 0000000..acefd9b |
41 |
--- /dev/null |
42 |
+++ b/dev-java/jflex/files/icedtea-arm.patch |
43 |
@@ -0,0 +1,18 @@ |
44 |
+http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2678 |
45 |
+ |
46 |
+diff -Naur jflex-1.6.1.orig/src/main/java/jflex/Emitter.java jflex-1.6.1/src/main/java/jflex/Emitter.java |
47 |
+--- jflex-1.6.1.orig/src/main/java/jflex/Emitter.java 2015-03-16 17:27:31.000000000 +0000 |
48 |
++++ jflex-1.6.1/src/main/java/jflex/Emitter.java 2015-10-25 23:33:35.784487747 +0000 |
49 |
+@@ -1304,8 +1304,10 @@ |
50 |
+ |
51 |
+ for (int i = 0; i < dfa.numStates; i++) { |
52 |
+ char j = 0; |
53 |
+- while ( !isTransition[i] && j < dfa.numInput ) |
54 |
+- isTransition[i] = dfa.table[i][j++] != DFA.NO_TARGET; |
55 |
++ while ( !isTransition[i] && j < dfa.numInput ) { |
56 |
++ isTransition[i] = dfa.table[i][j] != DFA.NO_TARGET; |
57 |
++ j++; |
58 |
++ } |
59 |
+ } |
60 |
+ } |
61 |
+ |
62 |
|
63 |
diff --git a/dev-java/jflex/jflex-1.6.1.ebuild b/dev-java/jflex/jflex-1.6.1.ebuild |
64 |
new file mode 100644 |
65 |
index 0000000..50f314d |
66 |
--- /dev/null |
67 |
+++ b/dev-java/jflex/jflex-1.6.1.ebuild |
68 |
@@ -0,0 +1,121 @@ |
69 |
+# Copyright 1999-2015 Gentoo Foundation |
70 |
+# Distributed under the terms of the GNU General Public License v2 |
71 |
+# $Id$ |
72 |
+ |
73 |
+EAPI="5" |
74 |
+ |
75 |
+JAVA_PKG_IUSE="doc source" |
76 |
+ |
77 |
+inherit eutils java-pkg-2 java-pkg-simple |
78 |
+ |
79 |
+DESCRIPTION="JFlex is a lexical analyzer generator for Java" |
80 |
+HOMEPAGE="http://www.jflex.de/" |
81 |
+SRC_URI="http://${PN}.de/${P}.tar.gz" |
82 |
+LICENSE="BSD" |
83 |
+SLOT="0" |
84 |
+KEYWORDS="~amd64 ~arm ~ppc ~x86 ~amd64-fbsd ~ppc-macos ~x64-macos ~x86-macos" |
85 |
+IUSE="examples test vim-syntax" |
86 |
+ |
87 |
+CDEPEND="dev-java/ant-core:0" |
88 |
+ |
89 |
+RDEPEND=">=virtual/jre-1.6 |
90 |
+ vim-syntax? ( || ( app-editors/vim app-editors/gvim ) ) |
91 |
+ ${CDEPEND}" |
92 |
+ |
93 |
+DEPEND=">=virtual/jdk-1.6 |
94 |
+ test? ( dev-java/junit:4 ) |
95 |
+ ${CDEPEND}" |
96 |
+ |
97 |
+PDEPEND=">=dev-java/javacup-0.11b_p20151001:0" |
98 |
+ |
99 |
+S="${WORKDIR}/${P}" |
100 |
+JAVA_SRC_DIR="src/main/java" |
101 |
+ |
102 |
+java_prepare() { |
103 |
+ # See below for details. |
104 |
+ epatch "${FILESDIR}/icedtea-arm.patch" |
105 |
+ |
106 |
+ # We need the bundled jflex.jar. |
107 |
+ rm -rv ${JAVA_SRC_DIR}/java_cup examples/pom.xml || die |
108 |
+ |
109 |
+ # Remove the bundled java-cup.jar if unneeded. |
110 |
+ if has_version ${PDEPEND}; then |
111 |
+ rm -v lib/java-cup-*.jar || die |
112 |
+ fi |
113 |
+} |
114 |
+ |
115 |
+src_configure() { |
116 |
+ # javacup is a cyclic dependency. Use the package if we have it, |
117 |
+ # otherwise use the bundled version and install the package later. |
118 |
+ if has_version ${PDEPEND}; then |
119 |
+ # Use PORTAGE_QUIET to suppress a QA warning that is spurious |
120 |
+ # thanks to has_version above. This is Portage-specific but |
121 |
+ # showing the warning elsewhere isn't the end of the world. |
122 |
+ JAVACUP=$(PORTAGE_QUIET=1 java-pkg_getjar --build-only javacup javacup.jar) |
123 |
+ else |
124 |
+ JAVACUP=$(echo lib/java-cup-*.jar) |
125 |
+ fi |
126 |
+ |
127 |
+ JAVA_GENTOO_CLASSPATH_EXTRA="$(java-pkg_getjars --build-only ant-core):${JAVACUP}" |
128 |
+} |
129 |
+ |
130 |
+jflex_compile() { |
131 |
+ java "${@}" jflex.Main -d ${JAVA_SRC_DIR}/${PN} --skel src/main/${PN}/skeleton.nested src/main/${PN}/LexScan.flex || die |
132 |
+ java-pkg-simple_src_compile |
133 |
+ java-pkg_addres ${PN}.jar src/main/resources |
134 |
+} |
135 |
+ |
136 |
+src_compile() { |
137 |
+ java -jar "${JAVACUP}" -destdir ${JAVA_SRC_DIR}/${PN} -package ${PN} -parser LexParse -interface src/main/cup/LexParse.cup || die |
138 |
+ |
139 |
+ # The IcedTea ARM HotSpot port (as of 2.6.1) hangs when running |
140 |
+ # jflex. We have patched jflex to fix it but we have to run the |
141 |
+ # bundled version first. -Xint works around the problem. See |
142 |
+ # http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2678. |
143 |
+ use arm && local JFLEX_ARGS="-Xint" |
144 |
+ |
145 |
+ # First compile (without doc/source) using the bundled jflex. |
146 |
+ JAVA_PKG_IUSE= jflex_compile -cp "lib/${P}.jar:${JAVACUP}" ${JFLEX_ARGS} |
147 |
+ |
148 |
+ # Then recompile using the fresh jflex. |
149 |
+ jflex_compile -cp "${PN}.jar:${JAVACUP}" |
150 |
+} |
151 |
+ |
152 |
+src_install() { |
153 |
+ java-pkg-simple_src_install |
154 |
+ java-pkg_dolauncher ${PN} --main ${PN}.Main |
155 |
+ |
156 |
+ java-pkg_register-dependency javacup javacup-runtime.jar |
157 |
+ java-pkg_register-ant-task |
158 |
+ |
159 |
+ use examples && java-pkg_doexamples examples |
160 |
+ dodoc {changelog,README}.md |
161 |
+ |
162 |
+ if use doc; then |
163 |
+ dodoc doc/*.pdf |
164 |
+ docinto html |
165 |
+ dodoc doc/*.{css,html,png} doc/COPYRIGHT |
166 |
+ fi |
167 |
+ |
168 |
+ if use vim-syntax; then |
169 |
+ insinto /usr/share/vim/vimfiles/syntax |
170 |
+ doins lib/${PN}.vim |
171 |
+ fi |
172 |
+} |
173 |
+ |
174 |
+src_test() { |
175 |
+ if use arm && java-pkg_current-vm-matches oracle-jdk-bin-1.8; then |
176 |
+ # This results in a StackOverflowError as of 1.8.0.65 but works |
177 |
+ # fine on icedtea:7. Don't know about icedtea:8 yet. |
178 |
+ rm -v src/test/java/jflex/EmitterTest.java || die |
179 |
+ fi |
180 |
+ |
181 |
+ local CP="src/test/java:${PN}.jar:${JAVA_GENTOO_CLASSPATH_EXTRA}:$(java-pkg_getjars junit-4)" |
182 |
+ |
183 |
+ local TESTS=$(find src/test/java -name "*Test*.java" -printf "%P\n") |
184 |
+ TESTS="${TESTS//.java}" |
185 |
+ TESTS="${TESTS//\//.}" |
186 |
+ |
187 |
+ ejavac -classpath "${CP}" $(find src/test/java -name "*.java") |
188 |
+ ejunit4 -classpath "${CP}" ${TESTS} |
189 |
+} |