Gentoo Archives: gentoo-commits

From: Ryan Hill <rhill@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-java/swt/, dev-java/swt/files/
Date: Mon, 26 Oct 2015 23:35:41
Message-Id: 1445902755.a982577a389eba5e74720efdc9a4a3ca1434b5b3.rhill@gentoo
1 commit: a982577a389eba5e74720efdc9a4a3ca1434b5b3
2 Author: Ryan Hill <rhill <AT> gentoo <DOT> org>
3 AuthorDate: Mon Oct 26 23:38:16 2015 +0000
4 Commit: Ryan Hill <rhill <AT> gentoo <DOT> org>
5 CommitDate: Mon Oct 26 23:39:15 2015 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a982577a
7
8 dev-java/swt: Backport patch fixing crash to 3.8.2.
9
10 https://bugs.eclipse.org/404776
11 Gentoo-Bug: https://bugs.gentoo.org/500570
12
13 Package-Manager: portage-2.2.23
14 Signed-off-by: Ryan Hill <rhill <AT> gentoo.org>
15
16 .../swt/files/swt-3.8.2-libwebkit-compat.patch | 23 +++
17 dev-java/swt/swt-3.8.2-r1.ebuild | 184 +++++++++++++++++++++
18 2 files changed, 207 insertions(+)
19
20 diff --git a/dev-java/swt/files/swt-3.8.2-libwebkit-compat.patch b/dev-java/swt/files/swt-3.8.2-libwebkit-compat.patch
21 new file mode 100644
22 index 0000000..ba537f5
23 --- /dev/null
24 +++ b/dev-java/swt/files/swt-3.8.2-libwebkit-compat.patch
25 @@ -0,0 +1,23 @@
26 +crash: fatal error in soup_session_feature_detach with WebKitGTK+ >= 1.11.91
27 +http://git.eclipse.org/c/platform/eclipse.platform.swt.git/commit/?id=b22a7d19afbe2a3811a0f8aa54c1e85d92c62a2c
28 +https://bugs.eclipse.org/404776
29 +https://bugs.gentoo.org/500570
30 +
31 +--- a/src/org/eclipse/swt/browser/WebKit.java
32 ++++ b/src/org/eclipse/swt/browser/WebKit.java
33 +@@ -597,9 +597,13 @@ public void create (Composite parent, int style) {
34 + */
35 + long /*int*/ session = WebKitGTK.webkit_get_default_session ();
36 + long /*int*/ originalAuth = WebKitGTK.soup_session_get_feature (session, WebKitGTK.webkit_soup_auth_dialog_get_type ());
37 +- WebKitGTK.soup_session_feature_detach (originalAuth, session);
38 ++ if (originalAuth != 0) {
39 ++ WebKitGTK.soup_session_feature_detach (originalAuth, session);
40 ++ }
41 + OS.g_signal_connect (session, WebKitGTK.authenticate, Proc5.getAddress (), webView);
42 +- WebKitGTK.soup_session_feature_attach (originalAuth, session);
43 ++ if (originalAuth != 0) {
44 ++ WebKitGTK.soup_session_feature_attach (originalAuth, session);
45 ++ }
46 +
47 + /*
48 + * Check for proxy values set as documented java properties and update the
49
50 diff --git a/dev-java/swt/swt-3.8.2-r1.ebuild b/dev-java/swt/swt-3.8.2-r1.ebuild
51 new file mode 100644
52 index 0000000..275a366
53 --- /dev/null
54 +++ b/dev-java/swt/swt-3.8.2-r1.ebuild
55 @@ -0,0 +1,184 @@
56 +# Copyright 1999-2015 Gentoo Foundation
57 +# Distributed under the terms of the GNU General Public License v2
58 +# $Id$
59 +
60 +EAPI="5"
61 +
62 +inherit eutils java-pkg-2 java-ant-2 toolchain-funcs java-osgi
63 +
64 +MY_PV="${PV/_rc/RC}"
65 +MY_DMF="archive.eclipse.org/eclipse/downloads/drops/R-${MY_PV}-201301310800"
66 +MY_P="${PN}-${MY_PV}"
67 +
68 +DESCRIPTION="GTK based SWT Library"
69 +HOMEPAGE="http://www.eclipse.org/"
70 +SRC_URI="x86? (
71 + http://${MY_DMF}/${MY_P}-gtk-linux-x86.zip
72 + )
73 + x86-fbsd? (
74 + http://${MY_DMF}/${MY_P}-gtk-linux-x86.zip
75 + )
76 + amd64? (
77 + http://${MY_DMF}/${MY_P}-gtk-linux-x86_64.zip
78 + )
79 + ppc? (
80 + http://${MY_DMF}/${MY_P}-gtk-linux-x86.zip
81 + )
82 + ppc64? (
83 + http://${MY_DMF}/${MY_P}-gtk-linux-ppc64.zip
84 + )"
85 +
86 +SLOT="3.8"
87 +LICENSE="CPL-1.0 LGPL-2.1 MPL-1.1"
88 +KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
89 +
90 +IUSE="cairo gnome opengl webkit"
91 +COMMON=">=dev-libs/glib-2.6
92 + >=x11-libs/gtk+-2.6.8:2
93 + >=dev-libs/atk-1.10.2
94 + cairo? ( >=x11-libs/cairo-1.4.14 )
95 + gnome? (
96 + gnome-base/gnome-vfs:2
97 + gnome-base/libgnome
98 + gnome-base/libgnomeui
99 + )
100 + opengl? (
101 + virtual/opengl
102 + virtual/glu
103 + )
104 + webkit? ( >=net-libs/webkit-gtk-1.2:2 )
105 + x11-libs/libXtst"
106 +
107 +DEPEND=">=virtual/jdk-1.4
108 + app-arch/unzip
109 + x11-libs/libX11
110 + x11-libs/libXrender
111 + x11-libs/libXt
112 + >=x11-libs/libXtst-1.1.0
113 + x11-proto/inputproto
114 + virtual/pkgconfig
115 + ${COMMON}"
116 +
117 +RDEPEND=">=virtual/jre-1.4
118 + ${COMMON}"
119 +
120 +S="${WORKDIR}"
121 +
122 +# JNI libraries don't need SONAME, bug #253756
123 +QA_SONAME="usr/$(get_libdir)/libswt-.*.so"
124 +
125 +src_unpack() {
126 + local DISTFILE=${A}
127 + unzip -jq "${DISTDIR}"/${DISTFILE} "*src.zip" || die "Unable to extract distfile"
128 + unpack "./src.zip"
129 +
130 + # Cleanup the redirtied directory structure
131 + rm -rf about_files/ || die
132 +}
133 +
134 +java_prepare() {
135 + # Replace the build.xml to allow compilation without Eclipse tasks
136 + cp "${FILESDIR}/build.xml" "${S}/build.xml" || die "Unable to update build.xml"
137 +
138 + mkdir -p "${S}/src"
139 + mv "${S}/org" "${S}/src" || die "Unable to restructure SWT sources"
140 +
141 + epatch "${FILESDIR}"/${PN}-3.8-as-needed-and-flag-fixes.patch
142 + epatch "${FILESDIR}"/${P}-gthread.patch
143 + epatch "${FILESDIR}"/${P}-libwebkit-compat.patch
144 +}
145 +
146 +src_compile() {
147 + # Drop jikes support as it seems to be unfriendly with SWT
148 + java-pkg_filter-compiler jikes
149 +
150 + local AWT_ARCH
151 + local JAWTSO="libjawt.so"
152 + if [[ $(tc-arch) == 'x86' ]] ; then
153 + AWT_ARCH="i386"
154 + elif [[ $(tc-arch) == 'ppc' ]] ; then
155 + AWT_ARCH="ppc"
156 + elif [[ $(tc-arch) == 'ppc64' ]] ; then
157 + AWT_ARCH="ppc64"
158 + else
159 + AWT_ARCH="amd64"
160 + fi
161 + if [[ -f "${JAVA_HOME}/jre/lib/${AWT_ARCH}/${JAWTSO}" ]]; then
162 + export AWT_LIB_PATH="${JAVA_HOME}/jre/lib/${AWT_ARCH}"
163 + elif [[ -f "${JAVA_HOME}/jre/bin/${JAWTSO}" ]]; then
164 + export AWT_LIB_PATH="${JAVA_HOME}/jre/bin"
165 + elif [[ -f "${JAVA_HOME}/$(get_libdir)/${JAWTSO}" ]] ; then
166 + export AWT_LIB_PATH="${JAVA_HOME}/$(get_libdir)"
167 + else
168 + eerror "${JAWTSO} not found in the JDK being used for compilation!"
169 + die "cannot build AWT library"
170 + fi
171 +
172 + # Fix the pointer size for AMD64
173 + [[ ${ARCH} == "amd64" || ${ARCH} == "ppc64" ]] && export SWT_PTR_CFLAGS=-DJNI64
174 +
175 + local platform="linux"
176 +
177 + use elibc_FreeBSD && platform="freebsd"
178 +
179 + local make="emake -f make_${platform}.mak NO_STRIP=y CC=$(tc-getCC) CXX=$(tc-getCXX)"
180 +
181 + einfo "Building AWT library"
182 + ${make} make_awt
183 +
184 + einfo "Building SWT library"
185 + ${make} make_swt
186 +
187 + einfo "Building JAVA-AT-SPI bridge"
188 + ${make} make_atk
189 +
190 + if use gnome ; then
191 + einfo "Building GNOME VFS support"
192 + ${make} make_gnome
193 + fi
194 +
195 + if use cairo ; then
196 + einfo "Building CAIRO support"
197 + ${make} make_cairo
198 + fi
199 +
200 + if use opengl ; then
201 + einfo "Building OpenGL component"
202 + ${make} make_glx
203 + fi
204 +
205 + if use webkit ; then
206 + einfo "Building the WebKitGTK+ component"
207 +
208 + ${make} make_webkit
209 + fi
210 +
211 + einfo "Building JNI libraries"
212 + eant compile
213 +
214 + einfo "Copying missing files"
215 + cp -i "${S}/version.txt" "${S}/build/version.txt" || die
216 + cp -i "${S}/src/org/eclipse/swt/internal/SWTMessages.properties" \
217 + "${S}/build/org/eclipse/swt/internal/" || die
218 +
219 + einfo "Packing JNI libraries"
220 + eant jar
221 +}
222 +
223 +src_install() {
224 + swtArch=${ARCH}
225 + use amd64 && swtArch=x86_64
226 + use x86-fbsd && swtArch=x86
227 +
228 + sed "s/SWT_ARCH/${swtArch}/" "${FILESDIR}/${PN}-${SLOT}-manifest" > "MANIFEST_TMP.MF" || die
229 + use cairo || sed -i -e "/ org.eclipse.swt.internal.cairo; x-internal:=true,/d" "MANIFEST_TMP.MF"
230 + use gnome || sed -i -e "/ org.eclipse.swt.internal.gnome; x-internal:=true,/d" "MANIFEST_TMP.MF"
231 + use opengl || sed -i -e "/ org.eclipse.swt.internal.opengl.glx; x-internal:=true,/d" "MANIFEST_TMP.MF"
232 + use webkit || sed -i -e "/ org.eclipse.swt.internal.webkit; x-internal:=true,/d" "MANIFEST_TMP.MF"
233 + java-osgi_newjar-fromfile "swt.jar" "MANIFEST_TMP.MF" "Standard Widget Toolkit for GTK 2.0"
234 +
235 + java-pkg_sointo /usr/$(get_libdir)
236 + java-pkg_doso *.so
237 +
238 + dohtml about.html
239 +}