From 2d065c368178bbced1403c5fb434a60e584f3c21 Mon Sep 17 00:00:00 2001 From: Luke Ceddia Date: Wed, 9 Nov 2016 15:23:02 +1100 Subject: [PATCH] Add files for building via Travis --- .travis.yml | 31 ++++++++++++++ .travis/build.sh | 75 ++++++++++++++++++++++++++++++++++ .travis/common-exclusion.list | 5 +++ .travis/deploy.sh | 17 ++++++++ .travis/deploy_rsa.enc | Bin 0 -> 3248 bytes .travis/lnx-exclusion.list | 4 ++ .travis/osx-exclusion.list | 3 ++ .travis/push.sh | 12 ++++++ .travis/win-exclusion.list | 3 ++ source/global/version.bas | 4 +- source/ide/ide_methods.bas | 2 +- 11 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 .travis.yml create mode 100755 .travis/build.sh create mode 100644 .travis/common-exclusion.list create mode 100755 .travis/deploy.sh create mode 100644 .travis/deploy_rsa.enc create mode 100644 .travis/lnx-exclusion.list create mode 100644 .travis/osx-exclusion.list create mode 100755 .travis/push.sh create mode 100644 .travis/win-exclusion.list diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..cc5b49812 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,31 @@ +language: cpp +install: true +script: ".travis/build.sh" +after_success: ".travis/push.sh" + +env: + global: + secure: rKip7kNIauH6epfanefLLqsiOKNScBf3U8uCnyMCg2SNjMxdxwrL2CPBjZeD2JKWc9DgLZ8H8hlX4wcx+P0741myfOvn0pvtHH8pmt8e6lLvNJn6okJxYXmgmu+M7/jjQkzjVYFy0i779LL/+VKItnRpJ1vcpBOA+zgreaR0o2nBL6kBWW+9jPypcfatSqY+Oxur1C6m27rRYw1PJAA4oiVim50uzhm5AGJdOL6Xw1rrJjNe5OLdQOdU0JKVI8mkZi3XTuz8t7CViKsjfimZ59Rre6qF3vTp1x8g2cm11Ki2RJlfxBK/vicCRtHVsD33r5wtmBW8YyZvVBM0sF+lYCOUn28qCCZNtPJ8kvMMEqLxLV6nbF660k9Y6i4tVKtuhJAGrFSkcfdslp0egT09DeJyO+ZdDkad7gGsMdoRhjWHkznJ+HF1IOopy8kUp7NfmmX6wKJN79GuZ+ZI0CqSObRSCOZtGa6qggHDhYvz8MOVAhyt1OQ6kqXPilKfysV6aK4eVYw2QGCkFfnCJYq6AZBqfFDyj/+M1SfG+RnHEvfX/BZMvzRDzVR8m0S7oc9M5yIh/nTSSzdRNQq+d7Mu8vNTW+Fari2ojpe6M9roIWTIaneu5goBOM6n0TaZA8OIsZS/iRYXZ6gsocgIeKyXSLadlUOLe4bwu5jR7sB1r58= + +notifications: + irc: + channels: chat.freenode.net#qb64 + skip_join: true + +addons: + ssh_known_hosts: qb64.org + apt: + packages: + - p7zip-full + +before_deploy: +- openssl aes-256-cbc -K $encrypted_089141d01927_key -iv $encrypted_089141d01927_iv -in .travis/deploy_rsa.enc -out /tmp/deploy_rsa -d +- eval "$(ssh-agent -s)" +- chmod 600 /tmp/deploy_rsa +- ssh-add /tmp/deploy_rsa + +deploy: + provider: script + skip_cleanup: true + script: .travis/deploy.sh + diff --git a/.travis/build.sh b/.travis/build.sh new file mode 100755 index 000000000..acda6a8b4 --- /dev/null +++ b/.travis/build.sh @@ -0,0 +1,75 @@ +#!/bin/sh + +###### Part 1: Build old QB64 ###### +echo "Preparing bootstrap:" +find . -type f -iname "*.sh" -exec chmod +x {} \; +find . -type f -iname "*.a" -exec rm {} \; +find . -type f -iname "*.o" -exec rm {} \; + +rm internal/temp/* 2> /dev/null + +com_build() { + cd internal/c/$1/os/lnx + echo -n "Building $2..." + ./setup_build.sh + if [ $? -ne 0 ]; then + echo "$2 build failed." + exit 1 + fi + echo "Done" + cd - > /dev/null +} + +com_build "libqb" "libQB" +com_build "parts/video/font/ttf" "FreeType" +com_build "parts/user_mods" "User Additions" +com_build "parts/core" "FreeGLUT" + +cp -r internal/source/* internal/temp/ +cd internal/c +echo -n "Bootstrapping QB64..." +g++ -w qbx.cpp parts/user_mods/os/lnx/src.a libqb/os/lnx/libqb_setup.o parts/video/font/ttf/os/lnx/src.o parts/core/os/lnx/src.a -lGL -lGLU -lX11 -lpthread -ldl -lrt -D FREEGLUT_STATIC -DDEPENDENCY_USER_MODS -o ../../qb64_bootstrap +if [ $? -ne 0 ]; then + echo "QB64 bootstrap failed" + exit 1 +fi +echo "Done" +cd - > /dev/null + +###### Part 2: Build new QB64 from .bas sources ###### +echo -n "Translating .bas source..." +echo AutoBuildMsg\$ = CHR\$\(10\) + \"From git `echo $TRAVIS_COMMIT | sed 's/\(.......\).*$/\1/'`\" >> source/global/version.bas +./qb64_bootstrap -x -z source/qb64.bas > /tmp/qb64-output +rm qb64_bootstrap +if [ `wc -l /tmp/qb64-output |awk '{print $1}'` -gt 2 ]; then + cat /tmp/qb64-output + rm /tmp/qb64-output + exit 1 +fi +echo "Done" + +echo -n "Testing compile/link..." +# extract g++ line +cd internal/temp/ +cpp_call=`awk '$1=="g++" {print $0}' < recompile_lnx.sh` + +# run g++ +cd ../c/ +$cpp_call -o ../../qb64_testrun +if [ $? -ne 0 -o ! -f ../../qb64_testrun ]; then + echo "Compile/link test failed" + exit 1 +fi +cd ../../ +rm qb64_testrun +echo "Done" +if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then exit; fi + +###### Part 3: Establish new bootstrapee ###### +rm internal/source/* +mv internal/temp/* internal/source/ +find . -type f -iname "*.a" -exec rm {} \; +find . -type f -iname "*.o" -exec rm {} \; +cd internal/source +rm debug_* recompile_* + diff --git a/.travis/common-exclusion.list b/.travis/common-exclusion.list new file mode 100644 index 000000000..05e122e4a --- /dev/null +++ b/.travis/common-exclusion.list @@ -0,0 +1,5 @@ +.travis +.travis.yml +.git +.gitignore + diff --git a/.travis/deploy.sh b/.travis/deploy.sh new file mode 100755 index 000000000..01fcd1602 --- /dev/null +++ b/.travis/deploy.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# Prepare archives +# mainversion=`awk '$1=="Version$" {split($3, A, /\"/);print A[2];}' < source/global/version.bas` +# buildnum=`awk '$1=="BuildNum$" {split($3,A, /[\"\/]/); print A[3];}' < source/global/version.bas` +TZ=UTC now=`date +"%F-%H-%M-%S"` +filebase="/tmp/qb64_${now}_`echo ${TRAVIS_COMMIT} | sed 's/\(.......\).*$/\1/'`" + +cd .. +tar --create --auto-compress --file ${filebase}_osx.tar.gz --exclude-from=qb64/.travis/common-exclusion.list --exclude-from=qb64/.travis/osx-exclusion.list qb64 +tar --create --auto-compress --file ${filebase}_lnx.tar.gz --exclude-from=qb64/.travis/common-exclusion.list --exclude-from=qb64/.travis/lnx-exclusion.list qb64 +7z a -xr@qb64/.travis/common-exclusion.list -xr@qb64/.travis/win-exclusion.list ${filebase}_win.7z qb64/ > /dev/null + +# Send to server +scp ${filebase}_* stxaxtic@qb64.org:autobuilds/ + + diff --git a/.travis/deploy_rsa.enc b/.travis/deploy_rsa.enc new file mode 100644 index 0000000000000000000000000000000000000000..3f1c5b72299dc5424fd9d326645ba0d7ff3da633 GIT binary patch literal 3248 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 /dev/null 2>&1 +git push origin HEAD:master > /dev/null 2>&1 + + + diff --git a/.travis/win-exclusion.list b/.travis/win-exclusion.list new file mode 100644 index 000000000..7d5615b6f --- /dev/null +++ b/.travis/win-exclusion.list @@ -0,0 +1,3 @@ +setup_lnx.sh +setup_osx.command +qb64_start_osx.command diff --git a/source/global/version.bas b/source/global/version.bas index bf03cf0f2..a247267c5 100644 --- a/source/global/version.bas +++ b/source/global/version.bas @@ -1,7 +1,7 @@ DIM SHARED Version AS STRING DIM SHARED BuildNum AS STRING +DIM SHARED AutoBuildMsg AS STRING Version$ = "1.1" 'BuildNum format is YYYYMMDD/id, where id is a ever-increasing 'integer. If you make a change, update the date and increase the id! -BuildNum$ = "20161010/49" - +BuildNum$ = "20161109/50" diff --git a/source/ide/ide_methods.bas b/source/ide/ide_methods.bas index ce8a10bf8..29161427e 100644 --- a/source/ide/ide_methods.bas +++ b/source/ide/ide_methods.bas @@ -4230,7 +4230,7 @@ FUNCTION ide2 (ignore) IF menu$(m, s) = "#About..." THEN PCOPY 2, 0 - idemessagebox "About", "QB64 Version " + Version$ + " (" + BuildNum$ + ")" + idemessagebox "About", "QB64 Version " + Version$ + CHR$(10) + "Revision " + BuildNum$ + AutoBuildMsg$ PCOPY 3, 0: SCREEN , , 3, 0: idewait4mous: idewait4alt GOTO ideloop END IF