X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=package.sh;h=dca701b177b8800edbf95f733fe2a907544f44e4;hb=f371f0f26d7532ea4717792b0770f05098cb062c;hp=c1dd3947e6bf2d7b0a9ad2a0e1bbe8ded04b6662;hpb=6b2c7e2a8910b6e74bdb3e57f22e25b55bcb6aa8;p=cura.git diff --git a/package.sh b/package.sh index c1dd3947..dca701b1 100755 --- a/package.sh +++ b/package.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +set -e +set -u + # This script is to package the Cura package for Windows/Linux and Mac OS X # This script should run under Linux and Mac OS X, as well as Windows with Cygwin. @@ -19,15 +22,27 @@ BUILD_TARGET=${1:-none} ##Do we need to create the final archive ARCHIVE_FOR_DISTRIBUTION=1 ##Which version name are we appending to the final archive -export BUILD_NAME=15.01-RC7 -TARGET_DIR=Cura-${BUILD_NAME}-${BUILD_TARGET} + + +##Version +version_file="./Cura/version" +while IFS= read -r line +do + export BUILD_VERSION="$line" +done <"$version_file" +TARGET_DIR=Cura-${BUILD_VERSION}-${BUILD_TARGET} + +##Git commit +GIT_HASH=$(git rev-parse --short=4 HEAD) + +export FULL_VERSION=${BUILD_VERSION}-${GIT_HASH} ##Which versions of external programs to use WIN_PORTABLE_PY_VERSION=2.7.2.1 ##Which CuraEngine to use -if [ -z ${CURA_ENGINE_REPO} ] ; then - CURA_ENGINE_REPO="git@github.com:Ultimaker/CuraEngine.git" +if [ -z ${CURA_ENGINE_REPO:-} ] ; then + CURA_ENGINE_REPO="https://code.alephobjects.com/diffusion/CE/curaengine.git" fi ############################# @@ -92,6 +107,8 @@ if [ "$BUILD_TARGET" = "none" ]; then echo "$0 debian_armhf" echo "$0 darwin" echo "$0 freebsd" + echo "$0 fedora # current system" + echo "$0 fedora \"mock_config_file\" ... # different system(s)" exit 0 fi @@ -125,73 +142,16 @@ fi # Build the required firmwares ############################# -if [ -d "C:/arduino-1.0.3" ]; then - ARDUINO_PATH=C:/arduino-1.0.3 - ARDUINO_VERSION=103 -elif [ -d "/Applications/Arduino.app/Contents/Resources/Java" ]; then - ARDUINO_PATH=/Applications/Arduino.app/Contents/Resources/Java - ARDUINO_VERSION=105 -else - ARDUINO_PATH=/usr/share/arduino - ARDUINO_VERSION=105 -fi +gitClone "https://github.com/Ultimaker/cura-binary-data" _cura_binary_data -#Build the Ultimaker Original firmwares. -gitClone git@github.com:Ultimaker/Marlin.git _UltimakerMarlin -cd _UltimakerMarlin/Marlin -git checkout Marlin_v1 -$MAKE -j 3 HARDWARE_MOTHERBOARD=7 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_250000 DEFINES="'VERSION_BASE=\"Ultimaker:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"250000_single\"' BAUDRATE=250000 TEMP_SENSOR_1=0 EXTRUDERS=1" -$MAKE -j 3 HARDWARE_MOTHERBOARD=7 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_115200 DEFINES="'VERSION_BASE=\"Ultimaker:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"115200_single\"' BAUDRATE=115200 TEMP_SENSOR_1=0 EXTRUDERS=1" -$MAKE -j 3 HARDWARE_MOTHERBOARD=7 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_Dual_250000 DEFINES="'VERSION_BASE=\"Ultimaker:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"250000_dual\"' BAUDRATE=250000 TEMP_SENSOR_1=-1 EXTRUDERS=2" -$MAKE -j 3 HARDWARE_MOTHERBOARD=7 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_Dual_115200 DEFINES="'VERSION_BASE=\"Ultimaker:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"115200_dual\"' BAUDRATE=115200 TEMP_SENSOR_1=-1 EXTRUDERS=2" -git checkout Marlin_UM_HeatedBedUpgrade -$MAKE -j 3 HARDWARE_MOTHERBOARD=7 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_HBK_250000 DEFINES="'VERSION_BASE=\"Ultimaker:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"250000_single_HB\"' BAUDRATE=250000 TEMP_SENSOR_1=0 EXTRUDERS=1" -$MAKE -j 3 HARDWARE_MOTHERBOARD=7 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_HBK_115200 DEFINES="'VERSION_BASE=\"Ultimaker:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"115200_single_HB\"' BAUDRATE=115200 TEMP_SENSOR_1=0 EXTRUDERS=1" -$MAKE -j 3 HARDWARE_MOTHERBOARD=7 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_HBK_Dual_250000 DEFINES="'VERSION_BASE=\"Ultimaker:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"250000_dual_HB\"' BAUDRATE=250000 TEMP_SENSOR_1=-1 EXTRUDERS=2" -$MAKE -j 3 HARDWARE_MOTHERBOARD=7 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_HBK_Dual_115200 DEFINES="'VERSION_BASE=\"Ultimaker:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"115200_dual_HB\"' BAUDRATE=115200 TEMP_SENSOR_1=-1 EXTRUDERS=2" -git checkout Marlin_UM_Original_Plus -$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_Plus_250000 DEFINES="'VERSION_BASE=\"Ultimaker+:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"250000_single\"' BAUDRATE=250000 TEMP_SENSOR_1=0 EXTRUDERS=1" -$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_Plus_115200 DEFINES="'VERSION_BASE=\"Ultimaker+:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"115200_single\"' BAUDRATE=115200 TEMP_SENSOR_1=0 EXTRUDERS=1" -$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_Plus_Dual_250000 DEFINES="'VERSION_BASE=\"Ultimaker+:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"250000_dual\"' BAUDRATE=250000 TEMP_SENSOR_1=20 EXTRUDERS=2" -$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_UltimakerMarlin_Plus_Dual_115200 DEFINES="'VERSION_BASE=\"Ultimaker+:_${BUILD_NAME}\"' 'VERSION_PROFILE=\"115200_dual\"' BAUDRATE=115200 TEMP_SENSOR_1=20 EXTRUDERS=2" -cd - - -gitClone git@github.com:Ultimaker/Ultimaker2Marlin.git _Ultimaker2Marlin -cd _Ultimaker2Marlin/Marlin -git checkout master -$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2 DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}\"' TEMP_SENSOR_1=0 EXTRUDERS=1" -$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2Dual DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}\"' TEMP_SENSOR_1=20 EXTRUDERS=2" -git checkout UM2go -$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2go DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}go\"' TEMP_SENSOR_1=0 EXTRUDERS=1" -git checkout UM2extended -$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2extended DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}ex\"' TEMP_SENSOR_1=0 EXTRUDERS=1" -$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2extendedDual DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}ex\"' TEMP_SENSOR_1=20 EXTRUDERS=2" -cd - - -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_250000/Marlin.hex resources/firmware/MarlinUltimaker-250000.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_115200/Marlin.hex resources/firmware/MarlinUltimaker-115200.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_Dual_250000/Marlin.hex resources/firmware/MarlinUltimaker-250000-dual.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_Dual_115200/Marlin.hex resources/firmware/MarlinUltimaker-115200-dual.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_HBK_250000/Marlin.hex resources/firmware/MarlinUltimaker-HBK-250000.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_HBK_115200/Marlin.hex resources/firmware/MarlinUltimaker-HBK-115200.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_HBK_Dual_250000/Marlin.hex resources/firmware/MarlinUltimaker-HBK-250000-dual.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_HBK_Dual_115200/Marlin.hex resources/firmware/MarlinUltimaker-HBK-115200-dual.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_Plus_250000/Marlin.hex resources/firmware/MarlinUltimaker-UMOP-250000.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_Plus_115200/Marlin.hex resources/firmware/MarlinUltimaker-UMOP-115200.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_Plus_Dual_250000/Marlin.hex resources/firmware/MarlinUltimaker-UMOP-250000-dual.hex -cp _UltimakerMarlin/Marlin/_UltimakerMarlin_Plus_Dual_115200/Marlin.hex resources/firmware/MarlinUltimaker-UMOP-115200-dual.hex -cp _Ultimaker2Marlin/Marlin/_Ultimaker2/Marlin.hex resources/firmware/MarlinUltimaker2.hex -cp _Ultimaker2Marlin/Marlin/_Ultimaker2Dual/Marlin.hex resources/firmware/MarlinUltimaker2-dual.hex -cp _Ultimaker2Marlin/Marlin/_Ultimaker2go/Marlin.hex resources/firmware/MarlinUltimaker2go.hex -cp _Ultimaker2Marlin/Marlin/_Ultimaker2extended/Marlin.hex resources/firmware/MarlinUltimaker2extended.hex -cp _Ultimaker2Marlin/Marlin/_Ultimaker2extendedDual/Marlin.hex resources/firmware/MarlinUltimaker2extended-dual.hex +cp -v _cura_binary_data/cura/resources/firmware/* resources/firmware/ ############################# # Darwin ############################# if [ "$BUILD_TARGET" = "darwin" ]; then - TARGET_DIR=Cura-${BUILD_NAME}-MacOS + TARGET_DIR=Cura-${BUILD_VERSION}-MacOS rm -rf scripts/darwin/build rm -rf scripts/darwin/dist @@ -204,11 +164,11 @@ if [ "$BUILD_TARGET" = "darwin" ]; then fi #Add cura version file (should read the version from the bundle with pyobjc, but will figure that out later) - echo $BUILD_NAME > scripts/darwin/dist/Cura.app/Contents/Resources/version + echo $BUILD_VERSION > scripts/darwin/dist/Cura.app/Contents/Resources/version rm -rf CuraEngine gitClone ${CURA_ENGINE_REPO} CuraEngine if [ $? != 0 ]; then echo "Failed to clone CuraEngine"; exit 1; fi - $MAKE -C CuraEngine VERSION=${BUILD_NAME} + $MAKE -C CuraEngine VERSION=${BUILD_VERSION} if [ $? != 0 ]; then echo "Failed to build CuraEngine"; exit 1; fi cp CuraEngine/build/CuraEngine scripts/darwin/dist/Cura.app/Contents/Resources/CuraEngine @@ -224,13 +184,13 @@ if [ "$BUILD_TARGET" = "darwin" ]; then cd .. # Create sparse image for distribution - hdiutil detach /Volumes/Cura\ -\ Ultimaker/ + hdiutil detach /Volumes/Cura\ -\ Lulzbot/ || true rm -rf Cura.dmg.sparseimage hdiutil convert DmgTemplateCompressed.dmg -format UDSP -o Cura.dmg hdiutil resize -size 500m Cura.dmg.sparseimage hdiutil attach Cura.dmg.sparseimage - cp -a dist/Cura.app /Volumes/Cura\ -\ Ultimaker/Cura/ - hdiutil detach /Volumes/Cura\ -\ Ultimaker + cp -a dist/Cura.app /Volumes/Cura\ -\ Lulzbot/Cura/ + hdiutil detach /Volumes/Cura\ -\ Lulzbot hdiutil convert Cura.dmg.sparseimage -format UDZO -imagekey zlib-level=9 -ov -o ../../${TARGET_DIR}.dmg exit fi @@ -244,7 +204,7 @@ if [ "$BUILD_TARGET" = "freebsd" ]; then gitClone https://github.com/GreatFruitOmsk/Power Power gitClone ${CURA_ENGINE_REPO} CuraEngine if [ $? != 0 ]; then echo "Failed to clone CuraEngine"; exit 1; fi - gmake -j4 -C CuraEngine VERSION=${BUILD_NAME} + gmake -j4 -C CuraEngine VERSION=${BUILD_VERSION} if [ $? != 0 ]; then echo "Failed to build CuraEngine"; exit 1; fi rm -rf scripts/freebsd/dist mkdir -p scripts/freebsd/dist/share/cura @@ -258,7 +218,7 @@ if [ "$BUILD_TARGET" = "freebsd" ]; then cp scripts/freebsd/cura.desktop scripts/freebsd/dist/share/applications/ cp scripts/freebsd/cura scripts/freebsd/dist/bin/ cp -a Power/power scripts/freebsd/dist/share/cura/ - echo $BUILD_NAME > scripts/freebsd/dist/share/cura/Cura/version + echo $BUILD_VERSION > scripts/freebsd/dist/share/cura/Cura/version #Create file list (pkg-plist) cd scripts/freebsd/dist find * -type f > ../pkg-plist @@ -290,7 +250,7 @@ if [ "$BUILD_TARGET" = "debian_i386" ]; then gitClone https://github.com/GreatFruitOmsk/Power Power gitClone ${CURA_ENGINE_REPO} CuraEngine if [ $? != 0 ]; then echo "Failed to clone CuraEngine"; exit 1; fi - $MAKE -C CuraEngine VERSION=${BUILD_NAME} + $MAKE -C CuraEngine VERSION=${BUILD_VERSION} if [ $? != 0 ]; then echo "Failed to build CuraEngine"; exit 1; fi rm -rf scripts/linux/${BUILD_TARGET}/usr/share/cura mkdir -p scripts/linux/${BUILD_TARGET}/usr/share/cura @@ -300,13 +260,13 @@ if [ "$BUILD_TARGET" = "debian_i386" ]; then cp -a CuraEngine/build/CuraEngine scripts/linux/${BUILD_TARGET}/usr/share/cura/ cp scripts/linux/cura.py scripts/linux/${BUILD_TARGET}/usr/share/cura/ cp -a Power/power scripts/linux/${BUILD_TARGET}/usr/share/cura/ - echo $BUILD_NAME > scripts/linux/${BUILD_TARGET}/usr/share/cura/Cura/version - cat scripts/linux/debian_control | sed "s/\[BUILD_NAME\]/${BUILD_NAME}/" | sed 's/\[ARCH\]/i386/' > scripts/linux/${BUILD_TARGET}/DEBIAN/control + echo $BUILD_VERSION > scripts/linux/${BUILD_TARGET}/usr/share/cura/Cura/version + cat scripts/linux/debian_control | sed "s/\[BUILD_VERSION\]/${FULL_VERSION}/" | sed 's/\[ARCH\]/i386/' > scripts/linux/${BUILD_TARGET}/DEBIAN/control sudo chown root:root scripts/linux/${BUILD_TARGET} -R sudo chmod 755 scripts/linux/${BUILD_TARGET}/usr -R sudo chmod 755 scripts/linux/${BUILD_TARGET}/DEBIAN -R cd scripts/linux - dpkg-deb --build ${BUILD_TARGET} $(dirname ${TARGET_DIR})/cura_${BUILD_NAME}-${BUILD_TARGET}.deb + dpkg-deb -Zgzip --build ${BUILD_TARGET} $(dirname ${TARGET_DIR})/cura_${FULL_VERSION}_i386.deb sudo chown `id -un`:`id -gn` ${BUILD_TARGET} -R exit fi @@ -320,7 +280,7 @@ if [ "$BUILD_TARGET" = "debian_amd64" ]; then gitClone https://github.com/GreatFruitOmsk/Power Power gitClone ${CURA_ENGINE_REPO} CuraEngine if [ $? != 0 ]; then echo "Failed to clone CuraEngine"; exit 1; fi - $MAKE -C CuraEngine VERSION=${BUILD_NAME} + $MAKE -C CuraEngine VERSION=${BUILD_VERSION} if [ $? != 0 ]; then echo "Failed to build CuraEngine"; exit 1; fi rm -rf scripts/linux/${BUILD_TARGET}/usr/share/cura mkdir -p scripts/linux/${BUILD_TARGET}/usr/share/cura @@ -330,13 +290,13 @@ if [ "$BUILD_TARGET" = "debian_amd64" ]; then cp -a CuraEngine/build/CuraEngine scripts/linux/${BUILD_TARGET}/usr/share/cura/ cp scripts/linux/cura.py scripts/linux/${BUILD_TARGET}/usr/share/cura/ cp -a Power/power scripts/linux/${BUILD_TARGET}/usr/share/cura/ - echo $BUILD_NAME > scripts/linux/${BUILD_TARGET}/usr/share/cura/Cura/version - cat scripts/linux/debian_control | sed "s/\[BUILD_NAME\]/${BUILD_NAME}/" | sed 's/\[ARCH\]/amd64/' > scripts/linux/${BUILD_TARGET}/DEBIAN/control + echo $BUILD_VERSION > scripts/linux/${BUILD_TARGET}/usr/share/cura/Cura/version + cat scripts/linux/debian_control | sed "s/\[BUILD_VERSION\]/${FULL_VERSION}/" | sed 's/\[ARCH\]/amd64/' > scripts/linux/${BUILD_TARGET}/DEBIAN/control sudo chown root:root scripts/linux/${BUILD_TARGET} -R sudo chmod 755 scripts/linux/${BUILD_TARGET}/usr -R sudo chmod 755 scripts/linux/${BUILD_TARGET}/DEBIAN -R cd scripts/linux - dpkg-deb --build ${BUILD_TARGET} $(dirname ${TARGET_DIR})/cura_${BUILD_NAME}-${BUILD_TARGET}.deb + dpkg-deb -Zgzip --build ${BUILD_TARGET} $(dirname ${TARGET_DIR})/cura_${FULL_VERSION}_amd64.deb sudo chown `id -un`:`id -gn` ${BUILD_TARGET} -R exit fi @@ -350,7 +310,7 @@ if [ "$BUILD_TARGET" = "debian_armhf" ]; then gitClone https://github.com/GreatFruitOmsk/Power Power gitClone ${CURA_ENGINE_REPO} CuraEngine if [ $? != 0 ]; then echo "Failed to clone CuraEngine"; exit 1; fi - $MAKE -C CuraEngine VERSION=${BUILD_NAME} + $MAKE -C CuraEngine VERSION=${BUILD_VERSION} if [ $? != 0 ]; then echo "Failed to build CuraEngine"; exit 1; fi rm -rf scripts/linux/${BUILD_TARGET}/usr/share/cura mkdir -p scripts/linux/${BUILD_TARGET}/usr/share/cura @@ -360,17 +320,144 @@ if [ "$BUILD_TARGET" = "debian_armhf" ]; then cp -a CuraEngine/build/CuraEngine scripts/linux/${BUILD_TARGET}/usr/share/cura/ cp scripts/linux/cura.py scripts/linux/${BUILD_TARGET}/usr/share/cura/ cp -a Power/power scripts/linux/${BUILD_TARGET}/usr/share/cura/ - echo $BUILD_NAME > scripts/linux/${BUILD_TARGET}/usr/share/cura/Cura/version - cat scripts/linux/debian_control | sed "s/\[BUILD_NAME\]/${BUILD_NAME}/" | sed 's/\[ARCH\]/armhf/' > scripts/linux/${BUILD_TARGET}/DEBIAN/control + echo $BUILD_VERSION > scripts/linux/${BUILD_TARGET}/usr/share/cura/Cura/version + cat scripts/linux/debian_control | sed "s/\[BUILD_VERSION\]/${FULL_VERSION}/" | sed 's/\[ARCH\]/armhf/' > scripts/linux/${BUILD_TARGET}/DEBIAN/control sudo chown root:root scripts/linux/${BUILD_TARGET} -R sudo chmod 755 scripts/linux/${BUILD_TARGET}/usr -R sudo chmod 755 scripts/linux/${BUILD_TARGET}/DEBIAN -R cd scripts/linux - dpkg-deb --build ${BUILD_TARGET} $(dirname ${TARGET_DIR})/cura_${BUILD_NAME}-${BUILD_TARGET}.deb + dpkg-deb --build ${BUILD_TARGET} $(dirname ${TARGET_DIR})/cura_${BUILD_VERSION}-${BUILD_TARGET}.deb sudo chown `id -un`:`id -gn` ${BUILD_TARGET} -R exit fi +############################# +# Fedora Generic +############################# + +function sanitiseVersion() { + local _version="$1" + echo "${_version//-/.}" +} + +function fedoraCreateSRPM() { + local _curaName="$1" + local _version="$(sanitiseVersion "$2")" + local _srcSpecFile="$3" + local _srcSpecFileRelease="$4" + local _dstSrpmDir="$5" + + local _dstTarSources="$HOME/rpmbuild/SOURCES/$_curaName-$_version.tar.gz" + local _dstSpec="$HOME/rpmbuild/SPECS/$_curaName-$_version.spec" + + local _namePower="Power" + local _nameCuraEngine="CuraEngine" + + gitClone "https://github.com/GreatFruitOmsk/Power" "$_namePower" + gitClone "$CURA_ENGINE_REPO" "$_nameCuraEngine" + + cd "$_namePower" + local _gitPower="$(git rev-list -1 HEAD)" + cd - + + cd "$_nameCuraEngine" + local _gitCuraEngine="$(git rev-list -1 HEAD)" + cd - + + local _gitCura="$(git rev-list -1 HEAD)" + + rpmdev-setuptree + + rm -fv "$_dstTarSources" + tar \ + --exclude-vcs \ + --transform "s#^#$_curaName-$_version/#" \ + -zcvf "$_dstTarSources" \ + "$_nameCuraEngine" \ + "$_namePower" \ + Cura \ + resources \ + plugins \ + scripts/linux/cura.py \ + scripts/linux/fedora/usr + + sed \ + -e "s#__curaName__#$_curaName#" \ + -e "s#__version__#$_version#" \ + -e "s#__gitCura__#$_gitCura#" \ + -e "s#__gitCuraEngine__#$_gitCuraEngine#" \ + -e "s#__gitPower__#$_gitPower#" \ + -e "s#__basedir__#scripts/linux/fedora#" \ + "$_srcSpecFile" \ + > "$_dstSpec" + + rpmbuild -bs "$_dstSpec" + + mkdir -pv "$_dstSrpmDir" + cp -v \ + "$HOME/rpmbuild/SRPMS/$_curaName-$_version-$_srcSpecFileRelease.src.rpm" \ + "$_dstSrpmDir" +} + +function buildFedora() { + local _nameForRpm="Cura" + local _versionForRpm="$(sanitiseVersion "$BUILD_VERSION")" + + # + # SRPM + # + + local _srcSpecFile="scripts/linux/fedora/rpm.spec" + local _srcSpecFileRelease="$(rpmspec -P "$_srcSpecFile" | grep -E '^Release:'|awk '{print $NF}')" + local _dstSrpmDir="scripts/linux/fedora/SRPMS" + + fedoraCreateSRPM \ + "$_nameForRpm" \ + "$_versionForRpm" \ + "$_srcSpecFile" \ + "$_srcSpecFileRelease" \ + "$_dstSrpmDir" + + # + # RPM + # + + local _srpmFile="$_dstSrpmDir/$_nameForRpm-$_versionForRpm-$_srcSpecFileRelease.src.rpm" + local _dstRpmDir="scripts/linux/fedora/RPMS" + + while [ $# -ne 0 ]; do + local _mockRelease="$(basename "${1%\.cfg}")" + local _mockReleaseArg="" + if [ -n "$_mockRelease" ]; then + _mockReleaseArg="-r $_mockRelease" + fi + + mkdir -pv "$_dstRpmDir/$_mockRelease" + mock \ + $_mockReleaseArg \ + --resultdir="$_dstRpmDir/$_mockRelease" \ + "$_srpmFile" + + shift 1 + done +} + +############################# +# Fedora RPMs +############################# + +if [ "$BUILD_TARGET" = "fedora" ]; then + shift 1 # skip "fedora" arg + + if [ $# -eq 0 ]; then + "$0" "$BUILD_TARGET" "" + else + buildFedora "${@}" + fi + + exit +fi + ############################# # Rest ############################# @@ -436,6 +523,8 @@ if [ $BUILD_TARGET = "win32" ]; then #mv ffmpeg-20120927-git-13f0cd6-win32-static/bin/ffmpeg.exe ${TARGET_DIR}/Cura/ #mv ffmpeg-20120927-git-13f0cd6-win32-static/licenses ${TARGET_DIR}/Cura/ffmpeg-licenses/ mv Win32/EjectMedia.exe ${TARGET_DIR}/Cura/ + cp -a scripts/win32/nsisPlugins/libgcc_s_dw2-1.dll ${TARGET_DIR} + cp -a scripts/win32/nsisPlugins/libstdc++-6.dll ${TARGET_DIR} rm -rf Power/ rm -rf \$_OUTDIR @@ -458,7 +547,7 @@ if [ $BUILD_TARGET = "win32" ]; then rm -rf ${TARGET_DIR}/python/Lib/OpenGL/DLLS/gle* #Build the C++ engine - $MAKE -C CuraEngine VERSION=${BUILD_NAME} OS=Windows_NT CXX=${CXX} + $MAKE -C CuraEngine VERSION=${BUILD_VERSION} OS=Windows_NT CXX=${CXX} if [ $? != 0 ]; then echo "Failed to build CuraEngine"; exit 1; fi fi @@ -468,7 +557,7 @@ cp -a Cura/* ${TARGET_DIR}/Cura cp -a resources/* ${TARGET_DIR}/resources cp -a plugins/* ${TARGET_DIR}/plugins #Add cura version file -echo $BUILD_NAME > ${TARGET_DIR}/Cura/version +echo $BUILD_VERSION > ${TARGET_DIR}/Cura/version #add script files if [ $BUILD_TARGET = "win32" ]; then @@ -491,16 +580,16 @@ if (( ${ARCHIVE_FOR_DISTRIBUTION} )); then #if we have wine, try to run our nsis script. rm -rf scripts/win32/dist ln -sf `pwd`/${TARGET_DIR} scripts/win32/dist - wine ~/.wine/drive_c/Program\ Files\ \(x86\)/NSIS/makensis.exe /DVERSION=${BUILD_NAME} scripts/win32/installer.nsi + wine ~/.wine/drive_c/Program\ Files\ \(x86\)/NSIS/makensis.exe /DVERSION=${BUILD_VERSION} scripts/win32/installer.nsi if [ $? != 0 ]; then echo "Failed to package NSIS installer"; exit 1; fi - mv scripts/win32/Cura_${BUILD_NAME}.exe ./ + mv scripts/win32/Cura_${FULL_VERSION}.exe ./ fi if [ -f '/c/Program Files (x86)/NSIS/makensis.exe' ]; then rm -rf scripts/win32/dist - mv `pwd`/${TARGET_DIR} scripts/win32/dist - '/c/Program Files (x86)/NSIS/makensis.exe' -DVERSION=${BUILD_NAME} 'scripts/win32/installer.nsi' >> log.txt + mv "`pwd`/${TARGET_DIR}" scripts/win32/dist + '/c/Program Files (x86)/NSIS/makensis.exe' -DVERSION=${BUILD_VERSION} 'scripts/win32/installer.nsi' >> log.txt if [ $? != 0 ]; then echo "Failed to package NSIS installer"; exit 1; fi - mv scripts/win32/Cura_${BUILD_NAME}.exe ./ + mv scripts/win32/Cura_${BUILD_VERSION}.exe ./ fi else echo "Archiving to ${TARGET_DIR}.tar.gz"