summaryrefslogtreecommitdiff
blob: 3ad68189df84a1f3c6bb6db10773b255bc7cb047 (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
130
131
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7
inherit desktop eutils java-pkg-2

RESTRICT="strip"
QA_PREBUILT="
	opt/${PN}/bin/fsnotifier*
	opt/${PN}/bin/libdbm64.so
	opt/${PN}/bin/lldb/*
	opt/${PN}/custom-jdk/*
	opt/${PN}/lib/pty4j-native/linux/x86*/libpty.so
	opt/${PN}/plugins/android/lib/libwebp_jni*.so
	opt/${PN}/plugins/android/resources/installer/*/installer
	opt/${PN}/plugins/android/resources/perfa/*/libperfa.so
	opt/${PN}/plugins/android/resources/perfd/*/perfd
	opt/${PN}/plugins/android/resources/simpleperf/*/simpleperf
	opt/${PN}/plugins/android/resources/simpleperf/*/libsimpleperf_report.so
"

VER_CMP=( $(ver_rs 1- ' ') )
if [[ ${#VER_CMP[@]} -eq 6 ]]; then
	STUDIO_V=$(ver_cut 1-4)
	BUILD_V=$(ver_cut 5-6)
else
	STUDIO_V=$(ver_cut 1-3)
	BUILD_V=$(ver_cut 4-5)
fi

DESCRIPTION="Android development environment based on IntelliJ IDEA"
HOMEPAGE="http://developer.android.com/sdk/installing/studio.html"
SRC_URI="https://dl.google.com/dl/android/studio/ide-zips/${STUDIO_V}/${PN}-ide-${BUILD_V}-linux.tar.gz"

LICENSE="Apache-2.0"
SLOT="0"
IUSE="custom-jdk selinux"
KEYWORDS="amd64 x86"

DEPEND="
	dev-java/commons-logging:0
	dev-java/log4j:0"

RDEPEND="${DEPEND}
	>=virtual/jdk-1.7
	selinux? ( sec-policy/selinux-android )
	>=app-arch/bzip2-1.0.6-r4
	dev-java/commons-logging:0
	dev-java/log4j:0
	>=dev-libs/expat-2.1.0-r3
	>=dev-libs/libffi-3.0.13-r1
	>=media-libs/fontconfig-2.10.92
	>=media-libs/freetype-2.5.5
	>=media-libs/libpng-1.2.51
	>=media-libs/mesa-10.2.8[X(+)]
	|| ( gnome-extra/zenity kde-apps/kdialog x11-apps/xmessage x11-libs/libnotify )
	sys-libs/ncurses-compat:5[tinfo]
	>=sys-libs/zlib-1.2.8-r1
	>=x11-libs/libX11-1.6.2
	>=x11-libs/libXau-1.0.7-r1
	>=x11-libs/libXdamage-1.1.4-r1
	>=x11-libs/libXdmcp-1.1.1-r1
	>=x11-libs/libXext-1.3.2
	>=x11-libs/libXfixes-5.0.1
	>=x11-libs/libXrender-0.9.8
	>=x11-libs/libXxf86vm-1.1.3
	>=x11-libs/libdrm-2.4.46
	>=x11-libs/libxcb-1.9.1
	>=x11-libs/libxshmfence-1.1"
BDEPEND="dev-util/patchelf"
S=${WORKDIR}/${PN}
PATCHES=( "${FILESDIR}/0001-use-java-home-before-bundled.patch" )

src_prepare() {
	eapply "${PATCHES[@]}"
	eapply_user

	# This is really a bundled jdk not a jre
	# If custom-jdk is not set bundled jre is replaced with system vm/jdk
	if use custom-jdk; then
		mv -f "${S}/jre" "${S}/custom-jdk" || die "Could not move bundled jdk"
	else
		rm -rf "${S}/jre" || die "Could not remove bundled jdk"
	fi
	# Replace bundled jars with system
	# has problems with newer jdom:0 not updated to jdom:2
	cd "${S}/lib" || die
	local JARS="commons-logging log4j"
	local j
	for j in ${JARS}; do
		rm -v ${j/:*/}*.jar || die
		java-pkg_jar-from ${j}
	done

	cd "${S}" || die

	# bug 629404
	echo "-Djdk.util.zip.ensureTrailingSlash=false" >> bin/studio64.vmoptions || die
	echo "-Djdk.util.zip.ensureTrailingSlash=false" >> bin/studio.vmoptions || die
}

src_compile() {
	patchelf --set-rpath '$ORIGIN' bin/lldb/lib/readline.so || die "Failed to fix insecure RPATH"
}

src_install() {
	local dir="/opt/${PN}"

	insinto "${dir}"
	doins -r *

	# This is really a bundled jdk not a jre
	# If custom-jdk is not set bundled jre is replaced with system vm/jdk
	if use custom-jdk; then
		dosym "custom-jdk" "${dir}/jre"
	else
		dosym "../../etc/java-config-2/current-system-vm" "${dir}/jre"
	fi

	fperms 755 "${dir}"/bin/{fsnotifier{,64},printenv.py,restart.py,format.sh,inspect.sh,studio.sh}
	fperms -R 755 "${dir}"/bin/lldb/{android,bin}
	if use custom-jdk; then
		fperms -R 755 "${dir}"/jre/{bin,jre/bin}
		fperms 755 ${dir}/jre/jre/lib/jexec
	fi
	chmod 755 "${ED}${dir}"/gradle/gradle-*/bin/gradle || die

	newicon "bin/studio.png" "${PN}.png"
	make_wrapper ${PN} ${dir}/bin/studio.sh
	make_desktop_entry ${PN} "Android Studio" ${PN} "Development;IDE" "StartupWMClass=jetbrains-studio"
}