diff --git a/.travis.yml b/.travis.yml index f76e6822f..9b636d61e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,41 +1,34 @@ -language: perl +language: generic before_install: -- sh package/linux/travis-decrypt-key -install: -- export BOOST_DIR=$HOME/boost_1_63_0 -- export SLIC3R_STATIC=1 -- export CXX=g++-4.9 -- export CC=g++-4.9 -- source $HOME/perl5/perlbrew/etc/bashrc + - sh package/linux/travis-decrypt-key + - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then ( sudo Xvfb :99 -ac -screen 0 1024x768x8; echo ok )& fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update -v ; fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install ccache; fi script: -- bash package/linux/travis-setup.sh -- perlbrew switch slic3r-perl -- perl ./Build.PL -after_success: -- eval $(perl -Mlocal::lib=$TRAVIS_BUILD_DIR/local-lib) -- LD_LIBRARY_PATH=$WXDIR/lib package/linux/make_archive.sh linux-x64 -- package/linux/appimage.sh x86_64 -- package/deploy/sftp.sh linux ~/slic3r-upload.rsa *.bz2 Slic3r*.AppImage -- package/deploy/sftp-symlink.sh linux ~/slic3r-upload.rsa AppImage Slic3r*.AppImage -- package/deploy/sftp-symlink.sh linux ~/slic3r-upload.rsa tar.bz2 *.bz2 + - travis_wait 30 bash package/linux/travis-setup.sh + - mkdir build && cd build + - cmake -DBOOST_ROOT=$BOOST_DIR -DSLIC3R_STATIC=ON ../src + - cmake --build . + - ctest . -R TestSlic3r +# - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then ctest . -R TestGUI; fi branches: only: - master - - xsgui -cache: - apt: true - directories: - - "$HOME/cache" + - cppgui addons: apt: sources: - ubuntu-toolchain-r-test packages: - - g++-4.9 - - gcc-4.9 + - g++-7 + - gcc-7 - libgtk2.0-0 - libgtk2.0-dev - freeglut3 + - cmake + - wx3.0-headers + - libwxgtk3.0-dev + - wx-common ssh_known_hosts: dl.slic3r.org notifications: irc: @@ -45,8 +38,36 @@ notifications: on_failure: always use_notice: true dist: trusty +matrix: + include: + - os: linux + env: + - WXVERSION=pkg + - CC=gcc-7 + - CXX=g++-7 + - BOOST_DIR=$HOME/boost_1_63_0 + - DISPLAY=:99.0 + cache: + apt: true + directories: + - "$HOME/cache" + after_success: + - cp slic3r ../ + - LD_LIBRARY_PATH=$WXDIR/lib package/linux/make_archive.sh linux-x64 + - package/linux/appimage.sh x86_64 + - package/deploy/sftp.sh linux ~/slic3r-upload.rsa *.bz2 Slic3r*.AppImage + - package/deploy/sftp-symlink.sh linux ~/slic3r-upload.rsa AppImage Slic3r*.AppImage + - package/deploy/sftp-symlink.sh linux ~/slic3r-upload.rsa tar.bz2 *.bz2 + - os: osx + env: + - WXVERSION=pkg + - BOOST_DIR=$HOME/boost_1_63_0 + - DISPLAY=:99.0 + cache: + ccache: true + directories: + - $HOME/Library/Caches/Homebrew env: - matrix: global: - secure: eEVRZNMv7FM6jrOU9iAFkDhWxFQ1WtHBEaObImcvtFUxy6vWSt3ehFFeTRouj3uHQAnbvUzziDyvPPm8/95alv5g/du8ML6YzzqKBKfazM0xQ7SF6R2DQL8lfFIp+RSV7T02byEP1f1g7Zva7xH9szIlDcSfU0pXW4KWbkBFMd8= - secure: gj338h+qHGccTD/VQFmEJkqdg2McIe2pO0iZ4Ae9BvY5vxkIML4BpoYZQXQTqiAOETnUjlcknY9lx0hI/PfkDD9MSJc5BC/3fMYRCu3SgAclEwklWf9vvtodUeT69mtnZuw1zze1nTbExuOw2mepbqFjxKKMl+9l5oCz4O54fXU= diff --git a/package/linux/appimage.sh b/package/linux/appimage.sh index 3a68b5e17..05e61f909 100755 --- a/package/linux/appimage.sh +++ b/package/linux/appimage.sh @@ -32,7 +32,7 @@ cd $WD/${APP}.AppDir mkdir -p $WD/${APP}.AppDir/usr/bin # Copy primary Slic3r script here and perl-local, as well as var -for i in {var,slic3r.pl,perl-local}; do +for i in {var,Slic3r}; do cp -R $srcfolder/$i $WD/${APP}.AppDir/usr/bin/ done @@ -48,8 +48,6 @@ for i in $(cat $WD/libpaths.appimage.txt | grep -v "^#" | awk -F# '{print $1}'); done -cp -R $srcfolder/local-lib ${WD}/${APP}.AppDir/usr/lib/local-lib - cat > $WD/${APP}.AppDir/AppRun << 'EOF' #!/usr/bin/env bash # some magic to find out the real location of this script dealing with symlinks diff --git a/package/linux/libpaths.txt b/package/linux/libpaths.txt index ef876a13a..3c64c9758 100644 --- a/package/linux/libpaths.txt +++ b/package/linux/libpaths.txt @@ -1,8 +1,3 @@ -/home/travis/builds/alexrj/Slic3r/local-lib/lib/perl5/x86_64-linux-thread-multi/Alien/wxWidgets/gtk_3_0_2_uni/lib/libwx_baseu-3.0.so.0 -/home/travis/builds/alexrj/Slic3r/local-lib/lib/perl5/x86_64-linux-thread-multi/Alien/wxWidgets/gtk_3_0_2_uni/lib/libwx_gtk2u_adv-3.0.so.0 -/home/travis/builds/alexrj/Slic3r/local-lib/lib/perl5/x86_64-linux-thread-multi/Alien/wxWidgets/gtk_3_0_2_uni/lib/libwx_gtk2u_core-3.0.so.0 -/home/travis/builds/alexrj/Slic3r/local-lib/lib/perl5/x86_64-linux-thread-multi/Alien/wxWidgets/gtk_3_0_2_uni/lib/libwx_gtk2u_gl-3.0.so.0 -/home/travis/builds/alexrj/Slic3r/local-lib/lib/perl5/x86_64-linux-thread-multi/Alien/wxWidgets/gtk_3_0_2_uni/lib/libwx_gtk2u_html-3.0.so.0 /lib/x86_64-linux-gnu/liblzma.so.5 /lib/x86_64-linux-gnu/libpng12.so.0 /usr/lib/x86_64-linux-gnu/libjpeg.so.8 diff --git a/package/linux/make_archive.sh b/package/linux/make_archive.sh index ad87b2a06..3eaf8b601 100755 --- a/package/linux/make_archive.sh +++ b/package/linux/make_archive.sh @@ -10,7 +10,6 @@ if [ "$#" -ne 1 ]; then echo "Usage: $(basename $0) arch_name" exit 1; fi -libdirs=$(find ./local-lib -iname *.so -exec dirname {} \; | sort -u | paste -sd ";" -) WD=./$(dirname $0) source $(dirname $0)/../common/util.sh # Determine if this is a tagged (release) commit. @@ -22,7 +21,6 @@ set_build_id set_branch set_app_name set_pr_id -install_par # If we're on a branch, add the branch name to the app name. if [ "$current_branch" == "master" ]; then @@ -35,8 +33,7 @@ else dmgfile=slic3r-${SLIC3R_BUILD_ID}-${1}-${current_branch}.tar.bz2 fi -rm -rf $WD/_tmp -mkdir -p $WD/_tmp +mkdir -p $WD # Set the application folder infomation. appfolder="$WD/${appname}" @@ -46,8 +43,6 @@ resourcefolder=$appfolder echo "Appfolder: $appfolder, archivefolder: $archivefolder" # Our slic3r dir and location of perl -PERL_BIN=$(which perl) -PP_BIN=$(which pp) SLIC3R_DIR="./" if [[ -d "${appfolder}" ]]; then @@ -67,14 +62,12 @@ echo "Copying resources..." cp -rf $SLIC3R_DIR/var $resourcefolder/ echo "Copying Slic3r..." -cp $SLIC3R_DIR/slic3r.pl $archivefolder/slic3r.pl -cp -fRP $SLIC3R_DIR/local-lib $archivefolder/local-lib -cp -fRP $SLIC3R_DIR/lib/* $archivefolder/local-lib/lib/perl5/ +cp $SLIC3R_DIR/slic3r $archivefolder/Slic3r mkdir $archivefolder/bin echo "Installing libraries to $archivefolder/bin ..." if [ -z ${WXDIR+x} ]; then - for bundle in $(find $archivefolder/local-lib/lib/perl5 -name '*.so' | grep "Wx") $(find $archivefolder/local-lib/lib/perl5 -name '*.so' -type f | grep "wxWidgets"); do + for bundle in $archivefolder/Slic3r; do echo "$(LD_LIBRARY_PATH=$libdirs ldd $bundle | grep .so | grep local-lib | awk '{print $3}')" for dylib in $(LD_LIBRARY_PATH=$libdirs ldd $bundle | grep .so | grep local-lib | awk '{print $3}'); do install -v $dylib $archivefolder/bin @@ -91,37 +84,8 @@ echo "Copying startup script..." cp -f $WD/startup_script.sh $archivefolder/$appname chmod +x $archivefolder/$appname -echo "Copying perl from $PERL_BIN" -# Edit package/common/coreperl to add/remove core Perl modules added to this package, one per line. -cp -f $PERL_BIN $archivefolder/perl-local -${PP_BIN} wxextension .0 \ - -M $(grep -v "^#" ${WD}/../common/coreperl | xargs | awk 'BEGIN { OFS=" -M "}; {$1=$1; print $0}') \ - -B -p -e "print 123" -o $WD/_tmp/test.par -unzip -qq -o $WD/_tmp/test.par -d $WD/_tmp/ -cp -rf $WD/_tmp/lib/* $archivefolder/local-lib/lib/perl5/ -cp -rf $WD/_tmp/shlib $archivefolder/ -rm -rf $WD/_tmp for i in $(cat $WD/libpaths.txt | grep -v "^#" | awk -F# '{print $1}'); do install -v $i $archivefolder/bin done -echo "Cleaning local-lib" -rm -rf $archivefolder/local-lib/bin -rm -rf $archivefolder/local-lib/man -rm -f $archivefolder/local-lib/lib/perl5/Algorithm/*.pl -rm -rf $archivefolder/local-lib/lib/perl5/unicore -rm -rf $archivefolder/local-lib/lib/perl5/App -rm -rf $archivefolder/local-lib/lib/perl5/Devel/CheckLib.pm -rm -rf $archivefolder/local-lib/lib/perl5/ExtUtils -rm -rf $archivefolder/local-lib/lib/perl5/Module/Build* -rm -rf $(pwd)$archivefolder/local-lib/lib/perl5/TAP -rm -rf $(pwd)/$archivefolder/local-lib/lib/perl5/Test* -find $(pwd)/$archivefolder/local-lib -type d -path '*/Wx/*' \( -name WebView \ - -or -name DocView -or -name STC -or -name IPC \ - -or -name Calendar -or -name DataView \ - -or -name DateTime -or -name Media -or -name PerlTest \ - -or -name Ribbon \) -exec rm -rf "{}" \; -rm -rf $archivefolder/local-lib/lib/perl5/*/Alien/wxWidgets/*/include -find $archivefolder/local-lib -depth -type d -empty -exec rmdir "{}" \; - tar -C$(pwd)/$(dirname $appfolder) -cjf $(pwd)/$dmgfile "$appname" diff --git a/package/linux/startup_script.sh b/package/linux/startup_script.sh index 30f0e2c69..dbe4d7981 100755 --- a/package/linux/startup_script.sh +++ b/package/linux/startup_script.sh @@ -3,4 +3,4 @@ BIN=$(readlink "$0") DIR=$(dirname "$BIN") export LD_LIBRARY_PATH="$DIR/bin" -exec "$DIR/perl-local" -I"$DIR/local-lib/lib/perl5" "$DIR/slic3r.pl" $@ +exec "$DIR/Slic3r" diff --git a/package/linux/travis-setup.sh b/package/linux/travis-setup.sh index 3c9f55ecf..b8f4b28a9 100755 --- a/package/linux/travis-setup.sh +++ b/package/linux/travis-setup.sh @@ -1,30 +1,41 @@ #!/bin/bash # Script to configure travis environment prior to build -WXVERSION=302 CACHE=$HOME/cache mkdir -p $CACHE +if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then + if [[ "$WXVERSION" != "pkg" ]]; then + export WXDIR=$HOME/wx${WXVERSION} + if [ ! -e $CACHE/wx${WXVERSION}.tar.bz2 ]; then + echo "Downloading http://www.siusgs.com/slic3r/buildserver/wx${WXVERSION}-libs.tar.bz2 => $CACHE/wx${WXVERSION}.tar.bz2" + curl -L "http://www.siusgs.com/slic3r/buildserver/wx${WXVERSION}-libs.tar.bz2" -o $CACHE/wx${WXVERSION}.tar.bz2 + fi + tar -C$HOME -xjf $CACHE/wx${WXVERSION}.tar.bz2 + fi -if [ ! -e $CACHE/slic3r-perlbrew-5.24.tar.bz2 ]; then - echo "Downloading http://www.siusgs.com/slic3r/buildserver/slic3r-perl.524.travis.tar.bz2 => $CACHE/slic3r-perlbrew-5.24.tar.bz2" - curl -L "http://www.siusgs.com/slic3r/buildserver/slic3r-perl.524.travis.tar.bz2" -o $CACHE/slic3r-perlbrew-5.24.tar.bz2; + if [ ! -e $CACHE/boost-compiled.tar.bz2 ]; then + echo "Downloading http://www.siusgs.com/slic3r/buildserver/boost_1_63_0.built.gcc-4.9.4-buildserver.tar.bz2 => $CACHE/boost-compiled.tar.bz2" + curl -L "http://www.siusgs.com/slic3r/buildserver/boost_1_63_0.built.gcc-4.9.4-buildserver.tar.bz2" -o $CACHE/boost-compiled.tar.bz2 + fi + + tar -C$HOME -xjf $CACHE/boost-compiled.tar.bz2 + +elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then + if [[ "$WXVERSION" != "pkg" ]]; then + WXVER_EXPANDED=${WXVERSION:0:1}.${WXVERSION:1:1}.${WXVERSION:2:1} + export WXDIR=$HOME/wx${WXVERSION} + if [ ! -e $CACHE/wx${WXVERSION}-${TRAVIS_OS_NAME}.tar.bz2 ]; then + curl -L "https://github.com/wxWidgets/wxWidgets/releases/download/v${WXVER_EXPANDED}/wxWidgets-${WXVER_EXPANDED}.tar.bz2" -o $HOME/wx${WXVERSION}-src.tar.bz2 + tar -C$HOME -xjf $HOME/wx${WXVERSION}-src.tar.bz2 + mkdir $WXDIR + cd $HOME/$WXDIR && cmake $HOME/wxWidgets-${WXVER_EXPANDED} -DwxBUILD_SHARED=OFF + cmake --build . --target -- -j4 + tar -C$HOME -cjf $CACHE/wx${WXVERSION}-${TRAVIS_OS_NAME}.tar.bz2 $(basename ${WXDIR}) + else + tar -C$HOME -xjf $CACHE/wx${WXVERSION}-${TRAVIS_OS_NAME}.tar.bz2 + fi + export PATH=${PATH}:${WXDIR} + cd $TRAVIS_BUILD_DIR # go back to the build dir + else + brew install wxmac # install via homebrew + fi fi - -if [ ! -e $CACHE/boost-compiled.tar.bz2 ]; then - echo "Downloading http://www.siusgs.com/slic3r/buildserver/boost_1_63_0.built.gcc-4.9.4-buildserver.tar.bz2 => $CACHE/boost-compiled.tar.bz2" - curl -L "http://www.siusgs.com/slic3r/buildserver/boost_1_63_0.built.gcc-4.9.4-buildserver.tar.bz2" -o $CACHE/boost-compiled.tar.bz2 -fi - -if [ ! -e $CACHE/local-lib-wx${WXVERSION}.tar.bz2 ]; then - echo "Downloading http://www.siusgs.com/slic3r/buildserver/slic3r-dependencies.travis-wx${WXVERSION}.tar.bz2 => $CACHE/local-lib-wx${WXVERSION}.tar.bz2" - curl -L "http://www.siusgs.com/slic3r/buildserver/slic3r-dependencies.travis-wx${WXVERSION}.tar.bz2" -o $CACHE/local-lib-wx${WXVERSION}.tar.bz2 -fi - -if [ ! -e $CACHE/wx${WXVERSION}.tar.bz2 ]; then - echo "Downloading http://www.siusgs.com/slic3r/buildserver/wx${WXVERSION}-libs.tar.bz2 => $CACHE/wx${WXVERSION}.tar.bz2" - curl -L "http://www.siusgs.com/slic3r/buildserver/wx${WXVERSION}-libs.tar.bz2" -o $CACHE/wx${WXVERSION}.tar.bz2 -fi - -tar -C$TRAVIS_BUILD_DIR -xjf $CACHE/local-lib-wx${WXVERSION}.tar.bz2 -tar -C$HOME/perl5/perlbrew/perls -xjf $CACHE/slic3r-perlbrew-5.24.tar.bz2 -tar -C$HOME -xjf $CACHE/boost-compiled.tar.bz2 -tar -C$HOME -xjf $CACHE/wx${WXVERSION}.tar.bz2