diff options
Diffstat (limited to 'dev-embedded/arduino/arduino-1.8.5.ebuild')
-rw-r--r-- | dev-embedded/arduino/arduino-1.8.5.ebuild | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/dev-embedded/arduino/arduino-1.8.5.ebuild b/dev-embedded/arduino/arduino-1.8.5.ebuild new file mode 100644 index 000000000000..789545798dae --- /dev/null +++ b/dev-embedded/arduino/arduino-1.8.5.ebuild @@ -0,0 +1,166 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit java-pkg-2 java-ant-2 gnome2-utils + +DESCRIPTION="An open-source AVR electronics prototyping platform" +HOMEPAGE="http://arduino.cc/" + +ARDUINO_LIBRARIES=( + "Firmata 2.5.6" + "Bridge 1.6.3" + "Robot_Control 1.0.4" + "Robot_Motor 1.0.3" + "RobotIRremote 2.0.0" + "SpacebrewYun 1.0.1" + "Temboo 1.2.1" + "Esplora 1.0.4" + "Mouse 1.0.1" + "Keyboard 1.0.1" + "SD 1.1.1" + "Servo 1.1.2" + "LiquidCrystal 1.0.7" + "Adafruit_CircuitPlayground 1.6.8 https://github.com/Adafruit/Adafruit_CircuitPlayground/archive/1.6.8.zip" + "WiFi101-Updater-ArduinoIDE-Plugin 0.9.1 https://github.com/arduino-libraries/WiFi101-FirmwareUpdater-Plugin/releases/download/v0.9.1/WiFi101-Updater-ArduinoIDE-Plugin-0.9.1.zip build/shared/" +) + +for lib in "${ARDUINO_LIBRARIES[@]}"; do + lib=( $lib ) + default_url="https://github.com/arduino-libraries/${lib[0]}/archive/${lib[1]}.zip" + url=${lib[2]:-$default_url} + ARDUINO_LIBRARIES_URI+=" ${url} -> ${P}-${lib[0]}-${lib[1]}.zip" +done + +ARDUINO_DOCS=( + "reference-1.6.6-3" + "Galileo_help_files-1.6.2" + "Edison_help_files-1.6.2" +) + +for docname in "${ARDUINO_DOCS[@]}"; do + ARDUINO_DOCS_URI+=" https://downloads.arduino.cc/${docname}.zip -> ${P}-${docname}.zip" +done + +SRC_URI="https://github.com/arduino/Arduino/archive/${PV}.tar.gz -> ${P}.tar.gz + ${ARDUINO_LIBRARIES_URI} + doc? ( + ${ARDUINO_DOCS_URI} + )" + +LICENSE="GPL-2 LGPL-2.1 CC-BY-SA-3.0" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +# bincheck RESTRICT is needed because firmware that ships with arduino contains code that makes +# scanelf bark. It's also why we need a separate package for arduino-listserialportsc because if +# we install it in the context of this package, we will get QA notices telling us we're doing a +# bad thing. +RESTRICT="strip binchecks" +IUSE="doc" + +CDEPEND="dev-embedded/arduino-builder" + +RDEPEND="${CDEPEND} + >=dev-util/astyle-3.1[java] + dev-embedded/arduino-listserialportsc + >=virtual/jre-1.8" + +DEPEND="${CDEPEND} + >=virtual/jdk-1.8" + +EANT_BUILD_TARGET="build" +# don't run the default "javadoc" target, we don't have one. +EANT_DOC_TARGET="" +EANT_BUILD_XML="build/build.xml" +EANT_EXTRA_ARGS="-Dno_arduino_builder=1 -Dlocal_sources=1" + +S="${WORKDIR}/Arduino-${PV}" +SHARE="/usr/share/${PN}" + +src_unpack() { + # We don't want to unpack libraries, just move zip files into the work dir + unpack `echo ${A} | cut -d ' ' -f1` + local lib + for lib in "${ARDUINO_LIBRARIES[@]}"; do + lib=( $lib ) + local destfolder=${lib[3]:-build/} + cp "${DISTDIR}/${P}-${lib[0]}-${lib[1]}.zip" "${S}/${destfolder}/${lib[0]}-${lib[1]}.zip" + done + if use doc; then + local docname + for docname in "${ARDUINO_DOCS[@]}"; do + cp "${DISTDIR}/${P}-${docname}.zip" "${S}/build/shared/${docname}.zip" + done + fi +} + +src_prepare() { + # We need to disable astyle/listserialportsc and toolchain (avr-gcc, avrdude) bundling. + eapply "${FILESDIR}/${PN}-1.8.5-build.xml.patch" + + # We need to replace relative paths for toolchain executable by paths to system ones. + eapply "${FILESDIR}/${PN}-1.8.5-avr-platform.txt.patch" + + # We need to load system astyle/listserialportsc instead of bundled ones. + eapply "${FILESDIR}/${PN}-1.8.5-lib-loading.patch" + default +} + +src_compile() { + if ! use doc; then + EANT_EXTRA_ARGS+=" -Dno_docs=1" + fi + java-pkg-2_src_compile +} + +src_install() { + cd "${S}"/build/linux/work || die + + java-pkg_dojar lib/*.jar + java-pkg_dolauncher ${PN} \ + --pwd "${SHARE}" \ + --main "processing.app.Base" \ + --java_args "-DAPP_DIR=${SHARE}" + + # Install libraries + insinto "${SHARE}" + + doins -r examples hardware lib libraries tools + + # In upstream's build process, we copy these fiels below from the bundled arduino-builder. + # Here we do the same thing, but from the system arduino-builder. + dosym "${EPREFIX}/usr/share/arduino-builder/platform.txt" "${SHARE}/hardware/platform.txt" + dosym "${EPREFIX}/usr/share/arduino-builder/platform.keys.rewrite.txt" "${SHARE}/hardware/platform.keys.rewrite.txt" + dosym "${EPREFIX}/usr/bin/arduino-builder" "${SHARE}/arduino-builder" + + # hardware/tools/avr needs to exist or arduino-builder will + # complain about missing required -tools arg + dodir "${SHARE}/hardware/tools/avr" + + if use doc; then + HTML_DOCS=( reference ) + einstalldocs + + # arduino expects its doc in its "main" directory. symlink it. + dosym "${EPREFIX}/usr/share/doc/${P}/html/reference" "${SHARE}/reference" + fi + + # Install menu and icons + domenu "${FILESDIR}/${PN}.desktop" + cd lib/icons || die + local icondir + for icondir in *; do + # icondir name is something like "24x24" we want the "24" part + local iconsize=`cut -dx -f1 <<< "${icondir}"` + newicon -s $iconsize \ + "${icondir}/apps/arduino.png" \ + "${PN}.png" + done +} + +pkg_postinst() { + gnome2_icon_cache_update + [[ ! -x /usr/bin/avr-g++ ]] && ewarn "Missing avr-g++; you need to crossdev -s4 avr" +} |