language: python virtualenv: # We need this for PyGObject. system_site_packages: true matrix: # only pass/fail the build based on the lint run, since the build takes # a long time and its failure doesn't depend on the code anyway fast_finish: true allow_failures: env: BUILD=true include: # always lint on every commit - python: 2.7 env: LINT=true sudo: false if: type != cron - python: 2.7 sudo: required env: BUILD=linux if: type != cron AND (tag =~ ^v[0-9.]+$ OR branch != master) - python: 2.7 sudo: required env: BUILD=windows if: type != cron AND (tag =~ ^v[0-9.]+$ OR branch != master) - language: generic os: osx sudo: required env: BUILD=osx if: type != cron AND (tag =~ ^v[0-9.]+$ OR branch != master) - language: python sudo: false env: CROWDIN=true if: type = cron branches: except: - /^dev-build-/ cache: pip install: - | set -e if [ -n "$BUILD" ]; then # Need this for inkex.py and friends wget -q https://inkscape.org/en/gallery/item/12187/inkscape-0.92.3.tar.bz2 tar -jxf inkscape-0.92.3.tar.bz2 rm inkscape-0.92.3.tar.bz2 mv inkscape-0.92.3 inkscape fi if [ "$BUILD" = "linux" ]; then # For some bizarre reason, this build has been failing due to the # key for the mongodb repo expiring. Maybe Travis includes the # mongodb repo by default...? sudo rm -f /etc/apt/sources.list.d/mongodb*.list # for shapely sudo apt-get install libgeos-dev # for wxPython sudo apt-get install glib-networking # This is the same as the pypi module PyGObject. We can't just do # "pip install PyGObject" because it depends on a version of # libgirepository1.0-dev that doesn't exist in Trusty. sudo apt-get install python-gi python-gi-cairo libgirepository1.0-dev # wxPython doen't publish linux wheels in pypi wget -q https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-14.04/wxPython-4.0.3-cp27-cp27mu-linux_x86_64.whl pip install wxPython-4.0.3-cp27-cp27mu-linux_x86_64.whl # We can't use the shapely wheel because it includes the geos # library but with a weird file name. Details: # https://github.com/pyinstaller/pyinstaller/blob/61b1c75c2b0469b32d114298a63bf60b8d597e37/PyInstaller/hooks/hook-shapely.py#L34 pip install --no-binary shapely -r requirements.txt pip install pyinstaller==3.3.1 elif [ "$BUILD" = "windows" ]; then set -x sudo add-apt-repository ppa:ubuntu-wine/ppa -y sudo apt-get update -qq export DISPLAY=:99.0 sh -e /etc/init.d/xvfb start sleep 3 sudo apt-get -q install -y wine export WINEDEBUG=-all wget -q http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe wine vcredist_x86.exe /q wget -q https://www.python.org/ftp/python/2.7.14/python-2.7.14.msi --output-document=python.msi wine msiexec /i python.msi /qn TARGETDIR=C:\\Python wine c:\\Python\\python.exe c:\\Python\\scripts\\pip.exe install pyinstaller --upgrade wine c:\\Python\\python.exe c:\\Python\\scripts\\pip.exe install setuptools --upgrade wget -q https://github.com/lexelby/inkstitch-build-objects/releases/download/v1.0.0/Shapely-1.6.3-cp27-cp27m-win32.whl wine c:\\Python\\python.exe c:\\Python\\scripts\\pip.exe install Shapely-1.6.3-cp27-cp27m-win32.whl wine c:\\Python\\python.exe c:\\Python\\scripts\\pip.exe install -r requirements.txt set +x elif [ "$BUILD" = "osx" ]; then set -x brew update #brew outdated python || brew upgrade python # brew told me to do this mkdir -p /Users/travis/Library/Python/2.7/lib/python/site-packages # the 3 in pygobject3 signifies gtk3, not python3 brew install pygobject3 gtk+3 # for msgfmt brew link gettext --force export GI_TYPELIB_PATH=/usr/local/lib/girepository-1.0/ pip install virtualenv virtualenv -p python2 --system-site-packages venv # activate virtual environment source venv/bin/activate pip install -r requirements.txt pip install pyinstaller set +x elif [ -n "$LINT" ]; then pip install flake8 fi before_script: - "echo LINT: $LINT BUILD: $BUILD" script: - | if [ -n "$BUILD" -a "$DEBUG_BUILD" = "$BUILD" ]; then mkdir .ssh echo -e "${SSH_KEY}" > .ssh/id_rsa chmod -R go-rwx .ssh mkfifo fifo ( while :; do cat fifo | /bin/bash -i 2>&1 | nc -l 127.0.0.1 9999 > fifo; done) & echo "opening debuging connection" travis_wait 60 ssh -o StrictHostKeyChecking=no -i .ssh/id_rsa -N -R 9999:localhost:9999 debug@lex.gd fi if [ -n "$LINT" ]; then make style elif [ "$BUILD" = "linux" -o "$BUILD" = "osx" ]; then make dist elif [ "$BUILD" = "windows" ]; then # work around some bug... pyinstaller? shapely? not sure. cp $(winepath 'C:\Python\lib\site-packages\shapely\DLLs\geos_c.dll') $(winepath 'C:\Python\lib\site-packages\shapely\DLLs\geos.dll') make dist elif [ -n "$CROWDIN" ]; then git config --global user.email "inkstitch-crowdin@lex.gd" git config --global user.name "Ink/Stitch Crowdin integration" git checkout master wget https://downloads.crowdin.com/cli/v2/crowdin-cli.zip unzip -j crowdin-cli.zip pip install Babel ./pyembroidery make messages.po java -jar crowdin-cli.jar upload -b master make clean java -jar crowdin-cli.jar pull -b master # Try to only commit if translations changed. Crowdin will update all # files when a new translation string is added but we don't need to # commit those until folks actually translate the new strings. if git diff translations | grep -qE '^[-+]msgstr ".+"$'; then git add translations git commit -m "new translations from Crowdin" git push https://${TRAVIS_REPO_SLUG%/*}:${GITHUB_API_KEY}@github.com/${TRAVIS_REPO_SLUG}.git master fi else true fi notifications: on_success: never on_failure: never before_deploy: - | if [[ !("$TRAVIS_TAG" =~ ^v[0-9.]+$) ]]; then git tag -f dev-build-${TRAVIS_BRANCH//\//-} git push -f https://${TRAVIS_REPO_SLUG%/*}:${GITHUB_API_KEY}@github.com/${TRAVIS_REPO_SLUG}.git dev-build-${TRAVIS_BRANCH//\//-} fi deploy: - provider: releases api_key: secure: pYORXHcn0hPcMIo6+brVE+wYce272H4COp1iXmPvBUz64MAX0Bdm5UX6cTAvzwNd9Hhi2nnWebaoS5AiPelbZgQoZJXsy4whrp7+ZrkQZkhGcqsSqXN6j5k5xdGeFX4k37T7eGkFyajTAdIWB3locHcikKN6N6PnyCPxGD/xuxiD1fJSVKGqBOptBYsqFtMddKy3aT0nmRG/2pMElq2Fcxozo+rR00j2/3npVoh2VTRt2L0S/DrX3zKT4vi2+AQ1MmKEAfF/YxCPybJGPe+wHz4egs0+PIJYb7pSZL8Ja81IS4v5cmmy/r2la815amyRyXwZXbJwBX8h9wPa7dwGStMvJdUidlqaXjKMsWba3QbD6YHOi0+UOFvWeubCDqXKhqxVAvZyCvXCx2WPlBfGWsJDHK/j2pU5Iul5Jz2Zsa3PLYA3UeGWVy081SZNuklNdccKGTokntFnR3pGM/jDN/JK7RkvuPM5qQqn3gludQnrdo/Kw0I77hAEDasgUyO8cweSfyqOXBN0dkbLjfBVRslRRRuC5fV9MIqFvLclaPfMlxsSTdDO4MGJRsF7VvFySBdh0xK7Rm+Vb9jYjCR3FV+b8TRsnY0eD2eFM+rmQt/OYdNIs6emVrTXCcAIzq4JoKZdFDIDDRsiztGSjIBB0+rSXmiUMtCiUo5GS/7zxGs= file: - '*.tar.gz' - '*.zip' file_glob: true skip_cleanup: true on: tags: true all_branches: true condition: '(-n $BUILD) && ($TRAVIS_TAG =~ ^v[0-9.]+$)' - provider: releases api_key: secure: pYORXHcn0hPcMIo6+brVE+wYce272H4COp1iXmPvBUz64MAX0Bdm5UX6cTAvzwNd9Hhi2nnWebaoS5AiPelbZgQoZJXsy4whrp7+ZrkQZkhGcqsSqXN6j5k5xdGeFX4k37T7eGkFyajTAdIWB3locHcikKN6N6PnyCPxGD/xuxiD1fJSVKGqBOptBYsqFtMddKy3aT0nmRG/2pMElq2Fcxozo+rR00j2/3npVoh2VTRt2L0S/DrX3zKT4vi2+AQ1MmKEAfF/YxCPybJGPe+wHz4egs0+PIJYb7pSZL8Ja81IS4v5cmmy/r2la815amyRyXwZXbJwBX8h9wPa7dwGStMvJdUidlqaXjKMsWba3QbD6YHOi0+UOFvWeubCDqXKhqxVAvZyCvXCx2WPlBfGWsJDHK/j2pU5Iul5Jz2Zsa3PLYA3UeGWVy081SZNuklNdccKGTokntFnR3pGM/jDN/JK7RkvuPM5qQqn3gludQnrdo/Kw0I77hAEDasgUyO8cweSfyqOXBN0dkbLjfBVRslRRRuC5fV9MIqFvLclaPfMlxsSTdDO4MGJRsF7VvFySBdh0xK7Rm+Vb9jYjCR3FV+b8TRsnY0eD2eFM+rmQt/OYdNIs6emVrTXCcAIzq4JoKZdFDIDDRsiztGSjIBB0+rSXmiUMtCiUo5GS/7zxGs= file: - '*.tar.gz' - '*.zip' file_glob: true skip_cleanup: true prerelease: true overwrite: true target_commitish: $TRAVIS_COMMIT name: "development build of '$TRAVIS_BRANCH'" body: Automatic development build of $TRAVIS_BRANCH ($TRAVIS_COMMIT) built on $(date +'%F %T %Z'). on: all_branches: true condition: '(-n $BUILD) && ! ("$TRAVIS_TAG" =~ ^v[0-9.]+$) && ! ("$TRAVIS_BRANCH" = master)'