60451878c0aacbe1a05fa2e95d9af14c3467d6c7
[gentoo.git] / dev-embedded / arduino / arduino-1.8.7.ebuild
1 # Copyright 1999-2018 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 inherit java-pkg-2 java-ant-2 gnome2-utils
7
8 DESCRIPTION="An open-source AVR electronics prototyping platform"
9 HOMEPAGE="https://arduino.cc/ https://github.com/arduino/"
10
11 ARDUINO_DOCS=(
12         "reference-1.6.6-3"
13         "Galileo_help_files-1.6.2"
14         "Edison_help_files-1.6.2"
15 )
16
17 for docname in "${ARDUINO_DOCS[@]}"; do
18         ARDUINO_DOCS_URI+=" https://downloads.arduino.cc/${docname}.zip -> ${PN}-${docname}.zip"
19 done
20
21 SRC_URI="https://github.com/arduino/Arduino/archive/${PV}.tar.gz -> ${P}.tar.gz
22         https://downloads.arduino.cc/cores/avr-1.6.23.tar.bz2 -> ${PN}-avr-1.6.23.tar.bz2
23         https://github.com/arduino-libraries/WiFi101-FirmwareUpdater-Plugin/releases/download/v0.9.2/WiFi101-Updater-ArduinoIDE-Plugin-0.9.2.zip -> ${PN}-WiFi101-Updater-ArduinoIDE-Plugin-0.9.2.zip
24         doc? (
25                 ${ARDUINO_DOCS_URI}
26         )"
27
28 LICENSE="GPL-2 LGPL-2.1 CC-BY-SA-3.0"
29 SLOT="0"
30 KEYWORDS="~amd64 ~x86"
31 IUSE="doc"
32
33 CDEPEND="dev-embedded/arduino-builder"
34
35 RDEPEND="${CDEPEND}
36         >=dev-util/astyle-3.1[java]
37         dev-embedded/arduino-listserialportsc
38         >=virtual/jre-1.8"
39
40 DEPEND="${CDEPEND}
41         app-arch/unzip
42         >=virtual/jdk-1.8"
43
44 EANT_BUILD_TARGET="build"
45 # don't run the default "javadoc" target, we don't have one.
46 EANT_DOC_TARGET=""
47 EANT_BUILD_XML="build/build.xml"
48 EANT_EXTRA_ARGS=" -Dlight_bundle=1 -Dlocal_sources=1 -Dno_arduino_builder=1"
49
50 RESTRICT="strip"
51 QA_PREBUILT="usr/share/arduino/hardware/arduino/avr/firmwares/*"
52
53 S="${WORKDIR}/Arduino-${PV}"
54
55 PATCHES=(
56         # We need to load system astyle/listserialportsc instead of bundled ones.
57         "${FILESDIR}/${PN}-1.8.5-lib-loading.patch"
58 )
59
60 src_unpack() {
61         # We don't want to unpack tools, just move zip files into the work dir
62         unpack `echo ${A} | cut -d ' ' -f1`
63
64         cp "${DISTDIR}/${PN}-avr-1.6.23.tar.bz2" "${S}/build/avr-1.6.23.tar.bz2" || die
65         cp "${DISTDIR}/${PN}-WiFi101-Updater-ArduinoIDE-Plugin-0.9.2.zip" "${S}/build/shared/WiFi101-Updater-ArduinoIDE-Plugin-0.9.2.zip"|| die
66
67         if use doc; then
68                 local docname
69                 for docname in "${ARDUINO_DOCS[@]}"; do
70                         cp "${DISTDIR}/${PN}-${docname}.zip" "${S}/build/shared/${docname}.zip" || die
71                 done
72         fi
73 }
74
75 src_prepare() {
76         default
77
78         # Unbundle libastyle
79         sed -i 's/\(target name="linux-libastyle-[a-zA-Z0-9]*"\)/\1 if="never"/g' "$S/build/build.xml" || die
80
81         # Unbundle avr toolchain
82         sed -i 's/target name="avr-toolchain-bundle" unless="light_bundle"/target name="avr-toolchain-bundle" if="never"/' "$S/build/build.xml" || die
83
84         # Install avr hardware
85         sed -i 's/target name="assemble-hardware" unless="light_bundle"/target name="assemble-hardware"/' "$S/build/build.xml" || die
86 }
87
88 src_compile() {
89         if ! use doc; then
90                 EANT_EXTRA_ARGS+=" -Dno_docs=1"
91         fi
92         java-pkg-2_src_compile
93 }
94
95 src_install() {
96         cd "${S}"/build/linux/work || die
97
98         # We need to replace relative paths for toolchain executable by paths to system ones.
99         sed -i -e 's@^compiler.path=.*@compiler.path=/usr/bin/@' -e 's@^tools.avrdude.path=.*@tools.avrdude.path=/usr@' \
100                 -e 's@^tools.avrdude.config.path=.*@tools.avrdude.config.path=/etc/avrdude.conf@' hardware/arduino/avr/platform.txt || die
101
102         java-pkg_dojar lib/*.jar
103         java-pkg_dolauncher ${PN} \
104                 --pwd "/usr/share/${PN}" \
105                 --main "processing.app.Base" \
106                 --java_args "-DAPP_DIR=/usr/share/${PN} -Djava.library.path=${EPREFIX}/usr/$(get_libdir)"
107
108         insinto "/usr/share/${PN}"
109
110         doins -r examples hardware lib tools
111
112         # In upstream's build process, we copy these fiels below from the bundled arduino-builder.
113         # Here we do the same thing, but from the system arduino-builder.
114         dosym "${EPREFIX}/usr/share/arduino-builder/platform.txt" "/usr/share/${PN}/hardware/platform.txt"
115         dosym "${EPREFIX}/usr/share/arduino-builder/platform.keys.rewrite.txt" "/usr/share/${PN}/hardware/platform.keys.rewrite.txt"
116         dosym "${EPREFIX}/usr/bin/arduino-builder" "/usr/share/${PN}/arduino-builder"
117
118         # hardware/tools/avr needs to exist or arduino-builder will
119         # complain about missing required -tools arg
120         dodir "/usr/share/${PN}/hardware/tools/avr"
121
122         if use doc; then
123                 HTML_DOCS=( reference )
124                 einstalldocs
125
126                 # arduino expects its doc in its "main" directory. symlink it.
127                 dosym "${EPREFIX}/usr/share/doc/${PF}/html/reference" "/usr/share/${PN}/reference"
128         fi
129
130         # Install menu and icons
131         domenu "${FILESDIR}/${PN}.desktop"
132         cd lib/icons || die
133         local icondir
134         for icondir in *; do
135                 # icondir name is something like "24x24" we want the "24" part
136                 local iconsize=`cut -dx -f1 <<< "${icondir}"`
137                 newicon -s $iconsize \
138                         "${icondir}/apps/arduino.png" \
139                         "${PN}.png"
140         done
141 }
142
143 pkg_postinst() {
144         gnome2_icon_cache_update
145         [[ ! -x /usr/bin/avr-g++ ]] && ewarn "Missing avr-g++; you need to crossdev -s4 avr"
146 }