mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-18 02:35:57 +08:00
Use GCC8 instead of 4.9 for travis (#4666)
* Use GCC8 toolchain * Allow appimage to preload included libgcc_s and stdc++ if necessary. * Need to add header for boost::noncopyable * use const strings for exceptions. * use right header dir for shim * Only use swrast_dri from appimage if it's old or doesn't exist. * added note about where the apprun script was source from, thanks @darealshinji
This commit is contained in:
parent
8e5a9cba71
commit
90f108ae8e
@ -36,8 +36,8 @@ addons:
|
|||||||
packages:
|
packages:
|
||||||
- g++-7
|
- g++-7
|
||||||
- gcc-7
|
- gcc-7
|
||||||
- g++-4.9
|
- g++-8
|
||||||
- gcc-4.9
|
- gcc-8
|
||||||
- libgtk2.0-0
|
- libgtk2.0-0
|
||||||
- libgtk2.0-dev
|
- libgtk2.0-dev
|
||||||
- freeglut3
|
- freeglut3
|
||||||
|
60
package/linux/appimage-apprun.sh
Normal file
60
package/linux/appimage-apprun.sh
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Cribbed from https://github.com/darealshinji/AppImageKit-checkrt/blob/master/AppRun.sh
|
||||||
|
|
||||||
|
# some magic to find out the real location of this script dealing with symlinks
|
||||||
|
DIR=`readlink "$0"` || DIR="$0";
|
||||||
|
DIR=`dirname "$DIR"`;
|
||||||
|
cd "$DIR"
|
||||||
|
DIR=`pwd`
|
||||||
|
cd - > /dev/null
|
||||||
|
|
||||||
|
cxxpre=""
|
||||||
|
gccpre=""
|
||||||
|
execpre=""
|
||||||
|
libc6arch="libc6,x86-64"
|
||||||
|
if [ -n "$APPIMAGE" ] && [ "$(file -b "$APPIMAGE" | cut -d, -f2)" != " x86-64" ]; then
|
||||||
|
libc6arch="libc6"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "${DIR}/usr"
|
||||||
|
|
||||||
|
if [ -e "./optional/libstdc++/libstdc++.so.6" ]; then
|
||||||
|
lib="$(PATH="/sbin:$PATH" ldconfig -p | grep "libstdc++\.so\.6 ($libc6arch)" | awk 'NR==1{print $NF}')"
|
||||||
|
sym_sys=$(tr '\0' '\n' < "$lib" | grep -e '^GLIBCXX_3\.4' | tail -n1)
|
||||||
|
sym_app=$(tr '\0' '\n' < "./optional/libstdc++/libstdc++.so.6" | grep -e '^GLIBCXX_3\.4' | tail -n1)
|
||||||
|
if [ "$(printf "${sym_sys}\n${sym_app}"| sort -V | tail -1)" != "$sym_sys" ]; then
|
||||||
|
cxxpath="./optional/libstdc++:"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e "./optional/libgcc/libgcc_s.so.1" ]; then
|
||||||
|
lib="$(PATH="/sbin:$PATH" ldconfig -p | grep "libgcc_s\.so\.1 ($libc6arch)" | awk 'NR==1{print $NF}')"
|
||||||
|
sym_sys=$(tr '\0' '\n' < "$lib" | grep -e '^GCC_[0-9]\\.[0-9]' | tail -n1)
|
||||||
|
sym_app=$(tr '\0' '\n' < "./optional/libgcc/libgcc_s.so.1" | grep -e '^GCC_[0-9]\\.[0-9]' | tail -n1)
|
||||||
|
if [ "$(printf "${sym_sys}\n${sym_app}"| sort -V | tail -1)" != "$sym_sys" ]; then
|
||||||
|
gccpath="./optional/libgcc:"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e "./optional/swrast_dri/swrast_dri.so" ]; then
|
||||||
|
lib="$(PATH="/sbin:$PATH" ldconfig -p | grep "swrast_dri\.so\ ($libc6arch)" | awk 'NR==1{print $NF}')"
|
||||||
|
sym_sys=$(tr '\0' '\n' < "$lib" | grep -e '^GCC_[0-9]\\.[0-9]' | tail -n1)
|
||||||
|
sym_app=$(tr '\0' '\n' < "./optional/swrast_dri/swrast_dri.so" | grep -e '^GCC_[0-9]\\.[0-9]' | tail -n1)
|
||||||
|
if [ "$(printf "${sym_sys}\n${sym_app}"| sort -V | tail -1)" != "$sym_sys" ]; then
|
||||||
|
swrastpath="./optional/swrast_dri:"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$cxxpath" ] || [ -n "$gccpath" ] || [ -n "$swrastpath" ]; then
|
||||||
|
if [ -e "./optional/exec.so" ]; then
|
||||||
|
execpre=""
|
||||||
|
export LD_PRELOAD="./optional/exec.so:${LD_PRELOAD}"
|
||||||
|
fi
|
||||||
|
export LD_LIBRARY_PATH="${cxxpath}${gccpath}${swrastpath}${LD_LIBRARY_PATH}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# disable parameter expansion to forward all arguments unprocessed to the VM
|
||||||
|
set -f
|
||||||
|
# run the VM and pass along all arguments as is
|
||||||
|
LD_LIBRARY_PATH="$DIR/usr/lib:${LD_LIBRARY_PATH}" "${DIR}/usr/bin/perl-local" -I"${DIR}/usr/lib/local-lib/lib/perl5" "${DIR}/usr/bin/slic3r.pl" --gui "$@"
|
||||||
|
exit $?
|
@ -17,6 +17,8 @@ set_branch
|
|||||||
set_app_name
|
set_app_name
|
||||||
set_pr_id
|
set_pr_id
|
||||||
|
|
||||||
|
SCRIPTDIR=$(dirname $0)
|
||||||
|
|
||||||
WD=${PWD}/$(dirname $0)
|
WD=${PWD}/$(dirname $0)
|
||||||
srcfolder="$WD/${appname}"
|
srcfolder="$WD/${appname}"
|
||||||
export ARCH=$(arch)
|
export ARCH=$(arch)
|
||||||
@ -48,22 +50,21 @@ for i in $(cat $WD/libpaths.appimage.txt | grep -v "^#" | awk -F# '{print $1}');
|
|||||||
install -v $i ${WD}/${APP}.AppDir/usr/lib
|
install -v $i ${WD}/${APP}.AppDir/usr/lib
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Workaround to increase compatibility with older systems; see https://github.com/darealshinji/AppImageKit-checkrt for details
|
||||||
|
mkdir -p ${WD}/${APP}.AppDir/usr/optional/
|
||||||
|
wget -c https://github.com/darealshinji/AppImageKit-checkrt/releases/download/continuous/exec-x86_64.so -O ./Slic3r.AppDir/usr/optional/exec.so
|
||||||
|
|
||||||
|
mkdir -p ${WD}/${APP}.AppDir/usr/optional/libstdc++/
|
||||||
|
cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ${WD}/${APP}.AppDir/usr/optional/libstdc++/
|
||||||
|
mkdir -p ${WD}/${APP}.AppDir/usr/optional/libgcc/
|
||||||
|
cp /lib/x86_64-linux-gnu/libgcc_s.so.1 ${WD}/${APP}.AppDir/usr/optional/libgcc/
|
||||||
|
|
||||||
|
mkdir -p ${WD}/${APP}.AppDir/usr/optional/swrast_dri/
|
||||||
|
cp /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so ${WD}/${APP}.AppDir/usr/optional/swrast_dri/
|
||||||
|
|
||||||
cp -R $srcfolder/local-lib ${WD}/${APP}.AppDir/usr/lib/local-lib
|
cp -R $srcfolder/local-lib ${WD}/${APP}.AppDir/usr/lib/local-lib
|
||||||
|
|
||||||
cat > $WD/${APP}.AppDir/AppRun << 'EOF'
|
cp ${WD}/appimage-apprun.sh ${WD}/${APP}.AppDir/AppRun
|
||||||
#!/usr/bin/env bash
|
|
||||||
# some magic to find out the real location of this script dealing with symlinks
|
|
||||||
DIR=`readlink "$0"` || DIR="$0";
|
|
||||||
DIR=`dirname "$DIR"`;
|
|
||||||
cd "$DIR"
|
|
||||||
DIR=`pwd`
|
|
||||||
cd - > /dev/null
|
|
||||||
# disable parameter expansion to forward all arguments unprocessed to the VM
|
|
||||||
set -f
|
|
||||||
# run the VM and pass along all arguments as is
|
|
||||||
LD_LIBRARY_PATH="$DIR/usr/lib" "${DIR}/usr/bin/perl-local" -I"${DIR}/usr/lib/local-lib/lib/perl5" "${DIR}/usr/bin/slic3r.pl" --gui "$@"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod +x AppRun
|
chmod +x AppRun
|
||||||
|
|
||||||
|
@ -4,10 +4,10 @@ src=../common/shell.cpp
|
|||||||
CXX ?= g++
|
CXX ?= g++
|
||||||
|
|
||||||
# Path to perl header files
|
# Path to perl header files
|
||||||
INCLUDEDIR ?= ${HOME}/perl5/perlbrew/perls/slic3r-perl/lib/5.24.0/x86_64-linux-thread-multi/CORE
|
INCLUDEDIR ?= ${HOME}/perl5/perlbrew/perls/slic3r-perl/lib/5.28.1/x86_64-linux-thread-multi/CORE
|
||||||
|
|
||||||
# path to library files for perl
|
# path to library files for perl
|
||||||
LIBDIR ?= ${HOME}/perl5/perlbrew/perls/slic3r-perl/lib/5.24.0/x86_64-linux-thread-multi/CORE
|
LIBDIR ?= ${HOME}/perl5/perlbrew/perls/slic3r-perl/lib/5.28.1/x86_64-linux-thread-multi/CORE
|
||||||
|
|
||||||
LIBS += -lperl -lpthread -lcrypt
|
LIBS += -lperl -lpthread -lcrypt
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
#/usr/lib/x86_64-linux-gnu/libstdc++.so.6 # needed because of ancient distros and slic3r (and perl for perl reasons) needs modern c++.
|
#/usr/lib/x86_64-linux-gnu/libstdc++.so.6 # needed because of ancient distros and slic3r (and perl for perl reasons) needs modern c++.
|
||||||
/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so # Missing?
|
#/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so # Missing?
|
||||||
|
@ -5,31 +5,27 @@
|
|||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
if [ ! -d $HOME/perl5/perlbrew/perls/slic3r-perl ]; then
|
if [ ! -d $HOME/perl5/perlbrew/perls/slic3r-perl ]; then
|
||||||
echo "Downloading slic3r-perlbrew-5.24.tar.bz2"
|
echo "Downloading slic3r-perlbrew-5.28.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;
|
curl -L "http://www.siusgs.com/slic3r/buildserver/slic3r-perl.528.gcc81.travis.tar.bz2" -o /tmp/slic3r-perlbrew-5.28.tar.bz2;
|
||||||
tar -C$HOME/perl5/perlbrew/perls -xjf /tmp/slic3r-perlbrew-5.24.tar.bz2
|
tar -C$HOME/perl5/perlbrew/perls -xjf /tmp/slic3r-perlbrew-5.28.tar.bz2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
source $HOME/perl5/perlbrew/etc/bashrc
|
source $HOME/perl5/perlbrew/etc/bashrc
|
||||||
perlbrew switch slic3r-perl
|
perlbrew switch slic3r-perl
|
||||||
|
|
||||||
if [ ! -e $HOME/boost_1_63_0/boost/version.hpp ]; then
|
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"
|
echo "Downloading boost_1_69_0.built.gcc-8.1.0-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
|
curl -L "http://www.siusgs.com/slic3r/buildserver/boost_1_69_0.built.gcc-8.1.0-buildserver.tar.bz2" -o /tmp/boost-compiled.tar.bz2
|
||||||
tar -C$HOME -xjf /tmp/boost-compiled.tar.bz2
|
tar -C$HOME -xjf /tmp/boost-compiled.tar.bz2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -e ./local-lib/lib/perl5/x86_64-linux-thread-multi/Wx.pm ]; then
|
if [ ! -e ./local-lib/lib/perl5/x86_64-linux-thread-multi/Wx.pm ]; then
|
||||||
echo "Downloading slic3r-dependencies.gcc49.travis-wx302.tar.bz2"
|
echo "Downloading slic3r-dependencies.gcc81.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
|
curl -L "http://www.siusgs.com/slic3r/buildserver/slic3r-dependencies.gcc81.travis-wx302.tar.bz2" -o /tmp/local-lib-wx302.tar.bz2
|
||||||
tar -C$TRAVIS_BUILD_DIR -xjf /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
|
fi
|
||||||
|
|
||||||
SLIC3R_STATIC=1 CC=g++-4.9 CXX=g++-4.9 BOOST_DIR=$HOME/boost_1_63_0 perl ./Build.PL
|
CC=g++-8 CXX=g++-8 BOOST_DIR=$HOME/boost_1_69_0 perl ./Build.PL
|
||||||
excode=$?
|
excode=$?
|
||||||
if [ $excode -ne 0 ]; then exit $excode; fi
|
if [ $excode -ne 0 ]; then exit $excode; fi
|
||||||
perl ./Build.PL --gui
|
perl ./Build.PL --gui
|
||||||
|
@ -29,8 +29,8 @@ extern bool unescape_strings_cstyle(const std::string &str, std::vector<std::str
|
|||||||
/// Specialization of std::exception to indicate that an unknown config option has been encountered.
|
/// Specialization of std::exception to indicate that an unknown config option has been encountered.
|
||||||
class ConfigOptionException : public std::exception {
|
class ConfigOptionException : public std::exception {
|
||||||
public:
|
public:
|
||||||
t_config_option_key opt_key;
|
const t_config_option_key opt_key;
|
||||||
ConfigOptionException(t_config_option_key _opt_key)
|
ConfigOptionException(const t_config_option_key _opt_key)
|
||||||
: opt_key(_opt_key) {};
|
: opt_key(_opt_key) {};
|
||||||
};
|
};
|
||||||
class UnknownOptionException : public ConfigOptionException {
|
class UnknownOptionException : public ConfigOptionException {
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <boost/asio.hpp>
|
#include <boost/asio.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
#include <boost/thread.hpp>
|
#include <boost/thread.hpp>
|
||||||
|
#include <boost/core/noncopyable.hpp>
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user