#!/bin/sh # Slackware build script for Arduino # Copyright 2015, 2016, 2017 Mario Preksavec, Zagreb, Croatia # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PRGNAM=Arduino VERSION=${VERSION:-1.8.3} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} # Documentation REFERENCE=${REFERENCE:-1.6.6-3} GALILEO=${GALILEO:-1.6.2} EDISON=${EDISON:-1.6.2} # Libraries FIRMATA=${FIRMATA:-2.5.6} BRIDGE=${BRIDGE:-1.6.3} ROBOT_CONTROL=${ROBOT_CONTROL:-1.0.3} ROBOT_MOTOR=${ROBOT_MOTOR:-1.0.2} ROBOTIRREMOTE=${ROBOTIRREMOTE:-1.0.2} SPACEBREWYUN=${SPACEBREWYUN:-1.0.1} TEMBOO=${TEMBOO:-1.2.1} ESPLORA=${ESPLORA:-1.0.4} MOUSE=${MOUSE:-1.0.1} KEYBOARD=${KEYBOARD:-1.0.1} SD=${SD:-1.1.1} SERVO=${SERVO:-1.1.2} ADAFRUIT=${ADAFRUIT:-1.6.4} WIFI101UPDATER=${WIFI101UPDATER:-0.9.1} LIBASTYLEJ=${LIBASTYLEJ:-2.05.1-3} LIBLISTSERIALS=${LIBLISTSERIALS:-1.4.0} ARDUINOBUILDER=${ARDUINOBUILDER:-1.3.25} AVRDUDE=${AVRDUDE:-6.3.0-arduino9} ARDUINOOTA=${ARDUINOOTA:-1.1.1} # Toolchain GCC=${GCC:-4.9.2} AVR=${AVR:-3.5.3} AVR_BUILD=${AVR_BUILD:-arduino2} AUTOCONF=${AUTOCONF:-2.64} AUTOMAKE=${AUTOMAKE:-1.11.1} GMP=${GMP:-5.0.2} MPFR=${MPFR:-3.0.0} MPC=${MPC:-0.9} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then LIB="32" AVRDUDEARCH="i686" ARDUINOOTAARCH="386" elif [ "$ARCH" = "x86_64" ]; then LIB="64" AVRDUDEARCH="$ARCH" ARDUINOOTAARCH="amd64" else echo "$ARCH is not supported." exit 1 fi set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.gz cd $PRGNAM-$VERSION chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ -o -perm 511 \) -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; # Prepare toolchain tar xvf $CWD/toolchain-avr-$GCC-atmel$AVR-$AVR_BUILD.tar.gz cp $CWD/autoconf-$AUTOCONF.tar.bz2 \ $CWD/automake-$AUTOMAKE.tar.bz2 \ $CWD/avr-binutils.tar.bz2 \ $CWD/gmp-$GMP.tar.bz2 \ $CWD/mpfr-$MPFR.tar.bz2 \ $CWD/mpc-$MPC.tar.gz \ $CWD/avr-gcc.tar.bz2 \ $CWD/avr-libc.tar.bz2 \ $CWD/avr8-headers.zip \ $CWD/avr-gdb.tar.bz2 \ toolchain-avr-$GCC-atmel$AVR-$AVR_BUILD/ cp $CWD/patches/avr-gcc6-fix.patch \ toolchain-avr-$GCC-atmel$AVR-$AVR_BUILD/avr-gcc-patches/ # Build toolchain ( cd toolchain-avr-$GCC-atmel$AVR-$AVR_BUILD ./tools.bash ./binutils.build.bash ./gcc.build.bash ./avr-libc.build.bash ./gdb.build.bash rm -rf objdir/{info,man,share} ) # Copy toolchain to where it can be found (`mv` will preserve some space) mkdir -p build/linux/work/hardware/tools/avr/ mv toolchain-avr-$GCC-atmel$AVR-$AVR_BUILD/objdir/* \ build/linux/work/hardware/tools/avr/ # AVRDUDE build script was removed :-/ tar --strip 1 -C build/linux/work/hardware/tools/avr/ \ -xvf $CWD/avrdude-$AVRDUDE-$AVRDUDEARCH-pc-linux-gnu.tar.bz2 # ArduinoOTA ships binary as well tar --strip 1 -C build/linux/work/hardware/tools/avr/ \ -xvf $CWD/arduinoOTA-$ARDUINOOTA-linux_amd64.tar.bz2 # Builder needs to know about the stuff we put above cat > build/linux/work/hardware/tools/avr/builtin_tools_versions.txt </,/<\/antcall>/d' \ -i build/build.xml # Copy documentation, help files and other shared packages cp $CWD/reference-$REFERENCE.zip \ $CWD/Galileo_help_files-$GALILEO.zip \ $CWD/Edison_help_files-$EDISON.zip \ $CWD/WiFi101-Updater-ArduinoIDE-Plugin-${WIFI101UPDATER}.zip build/shared/ # Copy libraries cp $CWD/Firmata-$FIRMATA.zip \ $CWD/Bridge-$BRIDGE.zip \ $CWD/Robot_Control-$ROBOT_CONTROL.zip \ $CWD/Robot_Motor-$ROBOT_MOTOR.zip \ $CWD/RobotIRremote-$ROBOTIRREMOTE.zip \ $CWD/SpacebrewYun-$SPACEBREWYUN.zip \ $CWD/Temboo-$TEMBOO.zip \ $CWD/Esplora-$ESPLORA.zip \ $CWD/Mouse-$MOUSE.zip \ $CWD/Keyboard-$KEYBOARD.zip \ $CWD/SD-$SD.zip \ $CWD/Servo-$SERVO.zip \ $CWD/Adafruit_CircuitPlayground-$ADAFRUIT.zip \ $CWD/libastylej-$LIBASTYLEJ.zip \ $CWD/liblistSerials-$LIBLISTSERIALS.zip \ $CWD/arduino-builder-linux$LIB-$ARDUINOBUILDER.tar.bz2 build/ # Finally, build Arduino ( cd build ; ant ) # Our files are here cd build/linux/work/ # Manual install ensues mkdir -p $PKG/opt/$PRGNAM mv arduino{,-builder} examples hardware lib libraries reference \ tools{,-builder} $PKG/opt/$PRGNAM # Ownership fixup chown -R root:root $PKG/opt/$PRGNAM/tools-builder $PKG/opt/Arduino/hardware # Make it a bit more user friendly mkdir -p $PKG/usr/{bin,share/applications} sed "s/FULL_PATH/\/opt\/$PRGNAM/" $CWD/arduino.desktop \ > $PKG/usr/share/applications/$PRGNAM.desktop ln -s /opt/$PRGNAM/arduino $PKG/usr/bin/$PRGNAM mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a revisions.txt $TMP/$PRGNAM-$VERSION/{README.md,license.txt} \ $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}