mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-14 06:26:05 +08:00
Merge pull request #4580 from slic3r/osxbuild
Build on OSX with TravisCI
This commit is contained in:
commit
98f9bab8ba
1
.gitignore
vendored
1
.gitignore
vendored
@ -15,6 +15,7 @@ xs/assertlib*
|
||||
.init_bundle.ini
|
||||
local-lib
|
||||
package/osx/Slic3r*.app
|
||||
package/osx/_tmp
|
||||
*.dmg
|
||||
*.swp
|
||||
*.swo
|
||||
|
162
.travis.yml
162
.travis.yml
@ -1,19 +1,33 @@
|
||||
# TravisCI configuration for Slic3r - https://slic3r.org
|
||||
#
|
||||
# We build Linux and macOS versions on TravisCI, both the main program
|
||||
# (perl/C++) and the pure C++ one.
|
||||
#
|
||||
# Each job performs the following steps:
|
||||
# - install dependencies (cached across builds)
|
||||
# - build
|
||||
# - test
|
||||
# - package
|
||||
# - deploy to dl.slic3r.org (except for the cppgui branch)
|
||||
|
||||
language: generic
|
||||
dist: trusty
|
||||
|
||||
before_install:
|
||||
- sh package/linux/travis-decrypt-key
|
||||
- sh package/common/travis-decrypt-key
|
||||
- export SLIC3R_GIT_VERSION=$(git rev-parse --short HEAD)
|
||||
|
||||
script:
|
||||
- bash package/linux/travis-setup.sh
|
||||
- if [[ "$BUILD_PL" == false ]]; then mkdir build && cd build; fi
|
||||
- if [[ "$BUILD_PL" == false ]]; then cmake -DBOOST_ROOT=$BOOST_DIR -DSLIC3R_STATIC=ON -DCMAKE_BUILD_TYPE=Release ../src; fi
|
||||
- if [[ "$BUILD_PL" == false ]]; then cmake --build .; fi
|
||||
- if [[ "$BUILD_PL" == false ]]; then ./slic3r_test -s; fi
|
||||
- if [[ "$BUILD_PL" == true ]]; then perlbrew switch slic3r-perl; fi
|
||||
- if [[ "$BUILD_PL" == true ]]; then perl ./Build.PL; fi
|
||||
# - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then ./gui_test -s; fi
|
||||
- if [[ "${TRAVIS_OS_NAME}" == "linux" && "$TARGET" == "main" ]]; then ./package/linux/travis-build-main.sh; fi
|
||||
- if [[ "${TRAVIS_OS_NAME}" == "linux" && "$TARGET" == "cpp" ]]; then ./package/linux/travis-build-cpp.sh; fi
|
||||
- if [[ "${TRAVIS_OS_NAME}" == "osx" && "$TARGET" == "main" ]]; then ./package/osx/travis-build-main.sh; fi
|
||||
- if [[ "${TRAVIS_OS_NAME}" == "osx" && "$TARGET" == "cpp" ]]; then ./package/osx/travis-build-cpp.sh; fi
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- cppgui
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
@ -31,6 +45,74 @@ addons:
|
||||
- libwxgtk3.0-dev
|
||||
- wx-common
|
||||
ssh_known_hosts: dl.slic3r.org
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
env:
|
||||
- TARGET=main
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/boost_1_63_0
|
||||
- $HOME/perl5
|
||||
- $HOME/wx302
|
||||
- local-lib
|
||||
after_success:
|
||||
- if [[ "${TRAVIS_BRANCH}" != "cppgui" ]]; then ./package/linux/travis-deploy-main.sh; fi
|
||||
|
||||
- os: linux
|
||||
env:
|
||||
- TARGET=cpp
|
||||
- CACHE=$HOME/cache
|
||||
cache:
|
||||
apt: true
|
||||
directories:
|
||||
- $HOME/cache
|
||||
after_success:
|
||||
- package/linux/travis-deploy-cpp.sh
|
||||
|
||||
# While this works, it does not appear to be needed as the 10.13 builds
|
||||
# work on 10.12 as well.
|
||||
# - os: osx
|
||||
# # osx_image: xcode8 # OS X 10.11
|
||||
# osx_image: xcode9.2 # OS X 10.12
|
||||
# env:
|
||||
# - TARGET=main
|
||||
# cache:
|
||||
# directories:
|
||||
# - /usr/local/Homebrew
|
||||
# - $HOME/Library/Caches/Homebrew
|
||||
# - local-lib
|
||||
|
||||
- os: osx
|
||||
osx_image: xcode9.4 # OS X 10.13
|
||||
env:
|
||||
- TARGET=main
|
||||
cache:
|
||||
directories:
|
||||
- /usr/local/Homebrew
|
||||
- $HOME/Library/Caches/Homebrew
|
||||
- local-lib
|
||||
after_success:
|
||||
- if [[ "${TRAVIS_BRANCH}" != "cppgui" ]]; then ./package/osx/travis-deploy-main.sh; fi
|
||||
|
||||
- os: osx
|
||||
osx_image: xcode9.4
|
||||
env:
|
||||
- TARGET=cpp
|
||||
- CACHE=$HOME/cache
|
||||
cache:
|
||||
ccache: true
|
||||
directories:
|
||||
- /usr/local/Homebrew
|
||||
- $HOME/cache
|
||||
- $HOME/Library/Caches/Homebrew
|
||||
|
||||
env:
|
||||
global:
|
||||
- secure: eEVRZNMv7FM6jrOU9iAFkDhWxFQ1WtHBEaObImcvtFUxy6vWSt3ehFFeTRouj3uHQAnbvUzziDyvPPm8/95alv5g/du8ML6YzzqKBKfazM0xQ7SF6R2DQL8lfFIp+RSV7T02byEP1f1g7Zva7xH9szIlDcSfU0pXW4KWbkBFMd8=
|
||||
- secure: gj338h+qHGccTD/VQFmEJkqdg2McIe2pO0iZ4Ae9BvY5vxkIML4BpoYZQXQTqiAOETnUjlcknY9lx0hI/PfkDD9MSJc5BC/3fMYRCu3SgAclEwklWf9vvtodUeT69mtnZuw1zze1nTbExuOw2mepbqFjxKKMl+9l5oCz4O54fXU=
|
||||
|
||||
notifications:
|
||||
irc:
|
||||
channels:
|
||||
@ -38,65 +120,3 @@ notifications:
|
||||
on_success: change
|
||||
on_failure: always
|
||||
use_notice: true
|
||||
dist: trusty
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
env:
|
||||
- BUILD_PL=true
|
||||
- SLIC3R_STATIC=1
|
||||
- CC=gcc-7
|
||||
- CXX=g++-7
|
||||
install:
|
||||
- export BOOST_DIR=$HOME/boost_1_63_0
|
||||
- export SLIC3R_STATIC=1
|
||||
- export CXX=g++-4.9
|
||||
- export CC=g++-4.9
|
||||
- export SLIC3R_GIT_VERSION=$(git rev-parse HEAD)
|
||||
- source $HOME/perl5/perlbrew/etc/bashrc
|
||||
after_success:
|
||||
- eval $(perl -Mlocal::lib=$TRAVIS_BUILD_DIR/local-lib)
|
||||
- cd package/linux && make -f build_shell.mk && mv Slic3r* $TRAVIS_BUILD_DIR && cd $TRAVIS_BUILD_DIR
|
||||
- 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: linux
|
||||
env:
|
||||
- BUILD_PL=false
|
||||
- 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
|
||||
osx_image: xcode9.4
|
||||
before_install:
|
||||
- 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
|
||||
env:
|
||||
- BUILD_PL=false
|
||||
- WXVERSION=pkg
|
||||
- BOOST_DIR=$HOME/boost_1_63_0
|
||||
- DISPLAY=:99.0
|
||||
cache:
|
||||
ccache: true
|
||||
directories:
|
||||
- $HOME/Library/Caches/Homebrew
|
||||
env:
|
||||
global:
|
||||
- secure: eEVRZNMv7FM6jrOU9iAFkDhWxFQ1WtHBEaObImcvtFUxy6vWSt3ehFFeTRouj3uHQAnbvUzziDyvPPm8/95alv5g/du8ML6YzzqKBKfazM0xQ7SF6R2DQL8lfFIp+RSV7T02byEP1f1g7Zva7xH9szIlDcSfU0pXW4KWbkBFMd8=
|
||||
- secure: gj338h+qHGccTD/VQFmEJkqdg2McIe2pO0iZ4Ae9BvY5vxkIML4BpoYZQXQTqiAOETnUjlcknY9lx0hI/PfkDD9MSJc5BC/3fMYRCu3SgAclEwklWf9vvtodUeT69mtnZuw1zze1nTbExuOw2mepbqFjxKKMl+9l5oCz4O54fXU=
|
||||
|
@ -5,9 +5,12 @@ bytes
|
||||
B
|
||||
POSIX
|
||||
FindBin
|
||||
Getopt::Long
|
||||
Unicode::Normalize
|
||||
Tie::Handle
|
||||
Time::HiRes
|
||||
Time::Local
|
||||
Thread::Semaphore
|
||||
Math::Trig
|
||||
IO::Socket
|
||||
Errno
|
||||
|
@ -18,7 +18,7 @@ fi
|
||||
|
||||
if [ -s $KEY ]; then
|
||||
for i in $FILES; do
|
||||
filepath=$(readlink -f "$i")
|
||||
filepath=$i # this is expected to be an absolute path
|
||||
tmpfile=$(mktemp)
|
||||
echo put $filepath > $tmpfile
|
||||
sftp -b $tmpfile -i$KEY "${UPLOAD_USER}@dl.slic3r.org:$DIR/"
|
||||
|
30
package/linux/travis-build-cpp.sh
Executable file
30
package/linux/travis-build-cpp.sh
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
export WXVERSION=pkg
|
||||
export CC=gcc-7
|
||||
export CXX=g++-7
|
||||
export DISPLAY=:99.0
|
||||
|
||||
mkdir -p $CACHE
|
||||
|
||||
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/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
|
||||
|
||||
mkdir build && cd build
|
||||
cmake -DBOOST_ROOT=$HOME/boost_1_63_0 -DSLIC3R_STATIC=ON -DCMAKE_BUILD_TYPE=Release ../src
|
||||
cmake --build .
|
||||
./slic3r_test -s
|
32
package/linux/travis-build-main.sh
Executable file
32
package/linux/travis-build-main.sh
Executable file
@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This is too strict for source $HOME/perl5/perlbrew/etc/bashrc:
|
||||
### set -euo pipefail
|
||||
|
||||
if [ ! -d $HOME/perl5/perlbrew/perls/slic3r-perl ]; then
|
||||
echo "Downloading slic3r-perlbrew-5.24.tar.bz2"
|
||||
curl -L "http://www.siusgs.com/slic3r/buildserver/slic3r-perl.524.gcc49.travis.tar.bz2" -o /tmp/slic3r-perlbrew-5.24.tar.bz2;
|
||||
tar -C$HOME/perl5/perlbrew/perls -xjf /tmp/slic3r-perlbrew-5.24.tar.bz2
|
||||
fi
|
||||
|
||||
source $HOME/perl5/perlbrew/etc/bashrc
|
||||
perlbrew switch slic3r-perl
|
||||
|
||||
if [ ! -e $HOME/boost_1_63_0/boost/version.hpp ]; then
|
||||
echo "Downloading boost_1_63_0.built.gcc-4.9.4-buildserver.tar.bz2"
|
||||
curl -L "http://www.siusgs.com/slic3r/buildserver/boost_1_63_0.built.gcc-4.9.4-buildserver.tar.bz2" -o /tmp/boost-compiled.tar.bz2
|
||||
tar -C$HOME -xjf /tmp/boost-compiled.tar.bz2
|
||||
fi
|
||||
|
||||
if [ ! -e ./local-lib/lib/perl5/x86_64-linux-thread-multi/Wx.pm ]; then
|
||||
echo "Downloading slic3r-dependencies.gcc49.travis-wx302.tar.bz2"
|
||||
curl -L "http://www.siusgs.com/slic3r/buildserver/slic3r-dependencies.travis-wx302.tar.bz2" -o /tmp/local-lib-wx302.tar.bz2
|
||||
tar -C$TRAVIS_BUILD_DIR -xjf /tmp/local-lib-wx302.tar.bz2
|
||||
|
||||
echo "Downloading buildserver/wx302-libs.tar.bz2"
|
||||
curl -L "http://www.siusgs.com/slic3r/buildserver/wx302-libs.tar.bz2" -o /tmp/wx302.tar.bz2
|
||||
tar -C$HOME -xjf /tmp/wx302.tar.bz2
|
||||
fi
|
||||
|
||||
SLIC3R_STATIC=1 CC=g++-4.9 CXX=g++-4.9 BOOST_DIR=$HOME/boost_1_63_0 perl ./Build.PL
|
||||
perl ./Build.PL --gui
|
10
package/linux/travis-deploy-cpp.sh
Executable file
10
package/linux/travis-deploy-cpp.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# Not sure this is the correct deployment:
|
||||
# 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
|
13
package/linux/travis-deploy-main.sh
Executable file
13
package/linux/travis-deploy-main.sh
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
eval $(perl -Mlocal::lib=$TRAVIS_BUILD_DIR/local-lib)
|
||||
cd package/linux && make -f build_shell.mk && mv Slic3r* $TRAVIS_BUILD_DIR && cd $TRAVIS_BUILD_DIR
|
||||
|
||||
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 `pwd`/*.bz2 `pwd`/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
|
@ -1,70 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Script to configure travis environment prior to build
|
||||
CACHE=$HOME/cache
|
||||
mkdir -p $CACHE
|
||||
|
||||
if [[ "$BUILD_PL" == true ]]; then
|
||||
WXVERSION=302
|
||||
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.gcc49.travis.tar.bz2" -o $CACHE/slic3r-perlbrew-5.24.tar.bz2;
|
||||
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.gcc49.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
|
||||
else
|
||||
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/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
|
||||
fi
|
@ -7,6 +7,14 @@ set -euo pipefail
|
||||
# Adapted from script written by bubnikv for Prusa3D.
|
||||
# Run from slic3r repo root directory.
|
||||
|
||||
# While we might have a pp executable in our path, it might not be
|
||||
# using the perl binary we have in path, so make sure they belong
|
||||
# to the same Perl instance:
|
||||
if !(perl -Mlocal::lib=local-lib -MPAR::Packer -e1 2> /dev/null); then
|
||||
echo "The PAR::Packer module was not found; installing..."
|
||||
cpanm --local-lib local-lib PAR::Packer
|
||||
fi
|
||||
|
||||
WD=$(dirname $0)
|
||||
appname=Slic3r
|
||||
|
||||
@ -17,18 +25,17 @@ if [ $(git describe --exact-match &>/dev/null) ]; then
|
||||
SLIC3R_BUILD_ID=$(git describe)
|
||||
else
|
||||
# Get the current branch
|
||||
if [ -z ${GIT_BRANCH+x} ] && [ -z ${APPVEYOR_REPO_BRANCH+x} ]; then
|
||||
current_branch=$(git symbolic-ref HEAD | sed 's!refs\/heads\/!!')
|
||||
else
|
||||
current_branch="unknown"
|
||||
if [ ! -z ${GIT_BRANCH+x} ]; then
|
||||
echo "Setting to GIT_BRANCH"
|
||||
current_branch=$(echo $GIT_BRANCH | cut -d / -f 2)
|
||||
fi
|
||||
if [ ! -z ${APPVEYOR_REPO_BRANCH+x} ]; then
|
||||
elif [ ! -z ${TRAVIS_BRANCH+x} ]; then
|
||||
echo "Setting to TRAVIS_BRANCH"
|
||||
current_branch=$TRAVIS_BRANCH
|
||||
elif [ ! -z ${APPVEYOR_REPO_BRANCH+x} ]; then
|
||||
echo "Setting to APPVEYOR_REPO_BRANCH"
|
||||
current_branch=$APPVEYOR_REPO_BRANCH
|
||||
fi
|
||||
else
|
||||
current_branch=$(git symbolic-ref HEAD | sed 's!refs\/heads\/!!')
|
||||
fi
|
||||
|
||||
if [ "$current_branch" == "master" ]; then
|
||||
@ -45,8 +52,6 @@ fi
|
||||
dmgfile=slic3r-${SLIC3R_BUILD_ID}.dmg
|
||||
echo "DMG filename: ${dmgfile}"
|
||||
|
||||
# If we're on a branch, add the branch name to the app name.
|
||||
|
||||
rm -rf $WD/_tmp
|
||||
mkdir -p $WD/_tmp
|
||||
|
||||
@ -59,6 +64,7 @@ PkgInfoContents="APPL????"
|
||||
source $WD/plist.sh
|
||||
|
||||
# Our slic3r dir and location of perl
|
||||
eval $(perl -Mlocal::lib=local-lib)
|
||||
PERL_BIN=$(which perl)
|
||||
PP_BIN=$(which pp)
|
||||
SLIC3R_DIR=$(perl -MCwd=realpath -e "print realpath '${WD}/../../'")
|
||||
@ -89,12 +95,24 @@ cp $SLIC3R_DIR/slic3r.pl $macosfolder/slic3r.pl
|
||||
cp -fRP $SLIC3R_DIR/local-lib $macosfolder/local-lib
|
||||
cp -fRP $SLIC3R_DIR/lib/* $macosfolder/local-lib/lib/perl5/
|
||||
|
||||
echo "Relocating dylib paths..."
|
||||
for bundle in $(find $macosfolder/local-lib/lib/perl5/darwin-thread-multi-2level/auto/Wx -name '*.bundle') $(find $macosfolder/local-lib/lib/perl5/darwin-thread-multi-2level/Alien/wxWidgets -name '*.dylib' -type f); do
|
||||
echo "Relocating Wx dylib paths..."
|
||||
mkdir $macosfolder/dylibs
|
||||
function relocate_dylibs {
|
||||
local bundle=$1
|
||||
chmod +w $bundle
|
||||
for dylib in $(otool -l $bundle | grep .dylib | grep local-lib | awk '{print $2}'); do
|
||||
install_name_tool -change "$dylib" "@executable_path/local-lib/lib/perl5/darwin-thread-multi-2level/Alien/wxWidgets/osx_cocoa_3_0_2_uni/lib/$(basename $dylib)" $bundle
|
||||
local dylib
|
||||
for dylib in $(otool -l $bundle | grep .dylib | grep -v /usr/lib | awk '{print $2}' | grep -v '^@'); do
|
||||
local dylib_dest="$macosfolder/dylibs/$(basename $dylib)"
|
||||
if [ ! -e $dylib_dest ]; then
|
||||
echo " relocating $dylib"
|
||||
cp $dylib $macosfolder/dylibs/
|
||||
relocate_dylibs $dylib_dest
|
||||
fi
|
||||
install_name_tool -change "$dylib" "@executable_path/dylibs/$(basename $dylib)" $bundle
|
||||
done
|
||||
}
|
||||
for bundle in $(find $macosfolder/local-lib/ \( -name '*.bundle' -or -name '*.dylib' \) -type f); do
|
||||
relocate_dylibs "$bundle"
|
||||
done
|
||||
|
||||
echo "Copying startup script..."
|
||||
@ -102,8 +120,12 @@ cp -f $WD/startup_script.sh $macosfolder/$appname
|
||||
chmod +x $macosfolder/$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 $macosfolder/perl-local
|
||||
chmod +w $macosfolder/perl-local
|
||||
relocate_dylibs $macosfolder/perl-local
|
||||
|
||||
echo "Copying core modules"
|
||||
# Edit package/common/coreperl to add/remove core Perl modules added to this package, one per line.
|
||||
${PP_BIN} \
|
||||
-M $(grep -v "^#" ${WD}/../common/coreperl | xargs | awk 'BEGIN { OFS=" -M "}; {$1=$1; print $0}') \
|
||||
-B -p -e "print 123" -o $WD/_tmp/bundle.par
|
||||
@ -142,16 +164,33 @@ make_plist
|
||||
echo $PkgInfoContents >$appfolder/Contents/PkgInfo
|
||||
|
||||
KEYCHAIN_FILE_=${KEYCHAIN_FILE:-}
|
||||
KEYCHAIN_BASE64_=${KEYCHAIN_BASE64:-}
|
||||
KEYCHAIN_PASSWORD_=${KEYCHAIN_PASSWORD:-travis}
|
||||
KEYCHAIN_IDENTITY_=${KEYCHAIN_IDENTITY:-Developer ID Application: Alessandro Ranellucci (975MZ9YJL7)}
|
||||
|
||||
# In case we were supplied a base64-encoded .p12 file instead of the path
|
||||
# to an existing keychain, create a temporary one
|
||||
if [[ -z "$KEYCHAIN_FILE_" && ! -z "$KEYCHAIN_BASE64_" ]]; then
|
||||
KEYCHAIN_FILE_=$WD/_tmp/build.keychain
|
||||
echo "Creating temporary keychain at ${KEYCHAIN_FILE_}"
|
||||
echo "$KEYCHAIN_BASE64_" | base64 --decode > "${KEYCHAIN_FILE_}.p12"
|
||||
security delete-keychain "$KEYCHAIN_FILE_" || true
|
||||
security create-keychain -p "${KEYCHAIN_PASSWORD_}" "$KEYCHAIN_FILE_"
|
||||
security set-keychain-settings -t 3600 -u "$KEYCHAIN_FILE_"
|
||||
security import "${KEYCHAIN_FILE_}.p12" -k "$KEYCHAIN_FILE_" -P "${KEYCHAIN_PASSWORD_}" -T /usr/bin/codesign
|
||||
security set-key-partition-list -S apple-tool:,apple: -s -k "${KEYCHAIN_PASSWORD_}" "$KEYCHAIN_FILE_"
|
||||
fi
|
||||
|
||||
if [ ! -z $KEYCHAIN_FILE_ ]; then
|
||||
echo "Signing app..."
|
||||
chmod -R +w $macosfolder/*
|
||||
xattr -cr $appfolder
|
||||
security list-keychains -s "${KEYCHAIN_FILE_}"
|
||||
security default-keychain -s "${KEYCHAIN_FILE_}"
|
||||
security unlock-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_FILE_}"
|
||||
codesign --sign "${KEYCHAIN_IDENTITY}" --deep "$appfolder"
|
||||
security unlock-keychain -p "${KEYCHAIN_PASSWORD_}" "${KEYCHAIN_FILE_}"
|
||||
codesign --sign "${KEYCHAIN_IDENTITY_}" --deep "$appfolder"
|
||||
else
|
||||
echo "No KEYCHAIN_FILE env variable; skipping codesign"
|
||||
echo "No KEYCHAIN_FILE or KEYCHAIN_BASE64 env variable; skipping codesign"
|
||||
fi
|
||||
|
||||
echo "Creating dmg file...."
|
||||
@ -165,8 +204,8 @@ if [ ! -z $KEYCHAIN_FILE_ ]; then
|
||||
chmod +w $dmgfile
|
||||
security list-keychains -s "${KEYCHAIN_FILE_}"
|
||||
security default-keychain -s "${KEYCHAIN_FILE_}"
|
||||
security unlock-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_FILE_}"
|
||||
codesign --sign "${KEYCHAIN_IDENTITY}" "$dmgfile"
|
||||
security unlock-keychain -p "${KEYCHAIN_PASSWORD_}" "${KEYCHAIN_FILE_}"
|
||||
codesign --sign "${KEYCHAIN_IDENTITY_}" "$dmgfile"
|
||||
fi
|
||||
|
||||
rm -rf $WD/_tmp
|
||||
|
46
package/osx/patch-wxwidgets.diff
Normal file
46
package/osx/patch-wxwidgets.diff
Normal file
@ -0,0 +1,46 @@
|
||||
diff --git src/osx/carbon/dataobj.cpp src/osx/carbon/dataobj.cpp
|
||||
index 758e3a7928..5445aa6b14 100644
|
||||
--- src/osx/carbon/dataobj.cpp
|
||||
+++ src/osx/carbon/dataobj.cpp
|
||||
@@ -29,10 +29,6 @@
|
||||
|
||||
#include "wx/osx/private.h"
|
||||
|
||||
-#if wxOSX_USE_COCOA_OR_CARBON
|
||||
- #include <QuickTime/QuickTime.h>
|
||||
-#endif
|
||||
-
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDataFormat
|
||||
// ----------------------------------------------------------------------------
|
||||
diff --git src/osx/core/bitmap.cpp src/osx/core/bitmap.cpp
|
||||
index 3c61c173e7..3322b605fc 100644
|
||||
--- src/osx/core/bitmap.cpp
|
||||
+++ src/osx/core/bitmap.cpp
|
||||
@@ -35,10 +35,6 @@
|
||||
#include "wx/osx/private.h"
|
||||
#endif
|
||||
|
||||
-#ifndef __WXOSX_IPHONE__
|
||||
-#include <QuickTime/QuickTime.h>
|
||||
-#endif
|
||||
-
|
||||
CGColorSpaceRef wxMacGetGenericRGBColorSpace();
|
||||
CGDataProviderRef wxMacCGDataProviderCreateWithMemoryBuffer( const wxMemoryBuffer& buf );
|
||||
|
||||
diff --git src/stc/scintilla/src/Editor.cxx src/stc/scintilla/src/Editor.cxx
|
||||
index cd72953ae7..a3ee41c49b 100644
|
||||
--- src/stc/scintilla/src/Editor.cxx
|
||||
+++ src/stc/scintilla/src/Editor.cxx
|
||||
@@ -5841,9 +5841,9 @@
|
||||
}
|
||||
|
||||
static bool Close(Point pt1, Point pt2) {
|
||||
- if (abs(pt1.x - pt2.x) > 3)
|
||||
+ if (labs(pt1.x - pt2.x) > 3)
|
||||
return false;
|
||||
- if (abs(pt1.y - pt2.y) > 3)
|
||||
+ if (labs(pt1.y - pt2.y) > 3)
|
||||
return false;
|
||||
return true;
|
||||
}
|
36
package/osx/travis-build-cpp.sh
Executable file
36
package/osx/travis-build-cpp.sh
Executable file
@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
export WXVERSION=pkg
|
||||
export DISPLAY=:99.0
|
||||
|
||||
mkdir -p $CACHE
|
||||
|
||||
( sudo Xvfb :99 -ac -screen 0 1024x768x8; echo ok )&
|
||||
brew update -v
|
||||
brew install ccache || brew upgrade ccache
|
||||
|
||||
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 || brew upgrade wxmac # install via homebrew
|
||||
fi
|
||||
|
||||
mkdir build && cd build
|
||||
cmake -DBOOST_ROOT=$HOME/boost_1_63_0 -DSLIC3R_STATIC=ON -DCMAKE_BUILD_TYPE=Release ../src
|
||||
cmake --build .
|
||||
./slic3r_test -s
|
||||
#./gui_test -s
|
33
package/osx/travis-build-main.sh
Executable file
33
package/osx/travis-build-main.sh
Executable file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# These two commands are only needed on 10.12:
|
||||
rm -rf /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask
|
||||
brew uninstall --force postgis cgal sfcgal
|
||||
|
||||
brew update -v
|
||||
|
||||
brew install boost || brew upgrade boost
|
||||
brew install perl || brew upgrade perl
|
||||
brew install cpanminus || brew upgrade cpanminus
|
||||
brew install wxwidgets || brew upgrade wxwidgets
|
||||
brew link --overwrite perl cpanminus
|
||||
|
||||
export SLIC3R_STATIC=1
|
||||
export BOOST_DIR=/usr/local
|
||||
perl ./Build.PL
|
||||
|
||||
# remove X11 because otherwise OpenGL.pm will link libglut.3.dylib instead of GLUT.framework
|
||||
sudo rm -rf /opt/X11*
|
||||
|
||||
export LIBRARY_PATH=/usr/local/lib
|
||||
|
||||
# One Wx test fails on 10.12; seems harmless
|
||||
if [ $TRAVIS_OSX_IMAGE == 'xcode9.2']; then
|
||||
cpanm --local-lib local-lib -f Wx
|
||||
fi
|
||||
|
||||
perl ./Build.PL --gui
|
||||
|
||||
# Install PAR::Packer now so that it gets cached by Travis
|
||||
cpanm --local-lib local-lib PAR::Packer
|
5
package/osx/travis-deploy-main.sh
Executable file
5
package/osx/travis-deploy-main.sh
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
package/osx/make_dmg.sh
|
||||
package/deploy/sftp.sh mac ~/slic3r-upload.rsa `pwd`/slic3r*.dmg
|
Loading…
x
Reference in New Issue
Block a user