📄 build
字号:
#!/bin/sh -e
#----------------------------------------------------------------------
# Build wxMac and wxPythonOSX from the tarball and then make an
# Installer package out of it.
#set -o xtrace
spectemplate=distrib/wxPythonFull.spec.in
if [ ! -d wxPython -o ! -e ${spectemplate} ]; then
echo "Please run this script from the root wxPython directory."
exit 1
fi
if [ "$UID" != "0" ]; then
echo "-------------------------------------------------------"
echo " WARNING: I will be unable to change ownership of files"
echo " unless this script is run as root or via sudo"
echo "-------------------------------------------------------"
fi
#----------------------------------------------------------------------
# Check Parameters
function usage {
echo ""
echo "Usage: $0 PYVER [command flags...]"
echo ""
echo " PYVER Python version to use to do the build. A"
echo " matching python\$PYVER must be found on the PATH"
echo ""
echo "optional command flags:"
echo " skiptar Don't unpack the tarball"
echo " inplace Don't use the tarball, build from the CVS tree instead"
echo " (The Docs and Demo tarballs are still required for a full build.)"
echo " reswig Regenerate SWIG wrappers"
echo " universal Generate Universal wxWidgets binary (requires Universal Python "
echo " to general Universal wxPython)."
echo " unicode Make a unicode build"
echo " skipconfig Don't run configure"
echo " skipbuild Don't build wxWidgets or wxPython"
echo " skipinstall Don't do the installation step"
echo " skipdmg Don't make the package or diskimage"
echo " skipclean Don't do the cleanup at the end"
echo ""
}
PYVER=$1
if [ "$PYVER" != "" ] && which python$PYVER && which pythonw$PYVER; then
PYTHON=`which python$PYVER`
PYTHONW=`which pythonw$PYVER`
else
usage;
exit 1
fi
shift
skiptar=no
skipconfig=no
skipbuild=no
skipinstall=no
skipdmg=no
skipclean=no
inplace=no
unicode=no
debug=no
reswig=no
universal=no
for flag in $*; do
case ${flag} in
skiptar) skiptar=yes ;;
skipconfig) skipconfig=yes; skiptar=yes ;;
skipbuild) skipbuild=yes; skipconfig=yes; skiptar=yes ;;
skipinstall) skipinstall=yes ;;
skipdmg) skipdmg=yes ;;
skipclean) skipclean=yes ;;
inplace) inplace=yes; skiptar=yes ;;
unicode) unicode=yes ;;
ansi) unicode=no ;;
debug) debug=yes ;;
reswig) reswig=yes ;;
universal) universal=yes ;;
*) echo "Unknown flag \"${flag}\""
usage
exit 1
esac
done
OSX_VERSION=`sw_vers -productVersion`
OSX_VERSION=${OSX_VERSION:0:4}
case $OSX_VERSION in
10.4) TAG=macosx10.4 ;;
10.3) TAG=macosx10.3 ;;
10.2) TAG=macosx10.2 ;;
*) usage; exit 1 ;;
esac
if [ $universal = yes ]; then
TAG=universal10.4
fi
VERSION=`$PYTHON -c "import setup;print setup.VERSION"`
SHORTVER=`echo $VERSION | cut -c 1,2,3`
PYPREFIX=`$PYTHON -c "import sys; print sys.exec_prefix"`
PYLIB=$PYPREFIX/lib/python$PYVER
SITEPACKAGES=$PYLIB/site-packages
if [ $unicode == yes ]; then
CHARTYPE=unicode
UNICODEOPT=--enable-unicode
PYUNICODEOPT=1
else
CHARTYPE=ansi
UNICODEOPT=--disable-unicode
PYUNICODEOPT=0
fi
if [ $debug == yes ]; then
DEBUG_FLAG=--enable-debug
PYDEBUGOPT=--debug
else
DEBUG_FLAG=--enable-debug_flag
PYDEBUGOPT=
fi
# Test if the python we are using is the System installed framework
# or one that was installed by the user. This changes where the
# site-packages (or its alias) is located in the installer tree.
APPLE_PYTHON=no
if [ -e /Library/Python/$PYVER ] && [ `dirname $PYTHON` == "/usr/bin" ]; then
APPLE_PYTHON=yes
fi
if [ -z "$TARBALLDIR" ]; then
# this is a spot on my fileserver where the tarballs go, adjust
# as needed for where you put the wxPython tarball, or set
# TARBALLDIR before invoking this script...
TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION
fi
TARBALL=$TARBALLDIR/wxPython-src-$VERSION.tar.bz2
if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2 ]; then
echo "-------------------------------------------------------"
echo " WARNING: Demo tarball not found, will skip building "
echo " the Demo app bundle and etc."
echo " $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2"
echo "-------------------------------------------------------"
fi
if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2 ]; then
echo "-------------------------------------------------------"
echo " WARNING: Docs tarball not found, will skip building "
echo " the the wxDocsViewer app bundle and etc."
echo " $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2"
echo "-------------------------------------------------------"
fi
PREFIX=/usr/local/lib/wxPython-$CHARTYPE-$VERSION
BINPREFIX=/usr/local/bin
SWIGBIN=/opt/swig/bin/swig
WXROOT=`dirname $PWD`
PROGDIR="`dirname \"$0\"`"
TMPDIR=$PWD/_build_dmg
BUILDROOT=$TMPDIR/build
INSTALLROOT=$TMPDIR/install-root
INSTALLAPPS=$TMPDIR/install-apps
DMGDIR=$TMPDIR/dmg
DMGROOT=$DMGDIR/root
DMGAPPS=$DMGDIR/apps
RESOURCEDIR=$PROGDIR/resources
DESTDIR=$PWD/dist
SRCROOT=$BUILDROOT/wxPython-src-$VERSION
#----------------------------------------------------------------------
# Setup builddirs
mkdir -p $BUILDROOT
mkdir -p $INSTALLROOT
mkdir -p $INSTALLAPPS
rm -rf $DMGDIR
mkdir -p $DMGROOT
mkdir -p $DMGAPPS/Docs
mkdir -p $DMGAPPS/Samples
if [ ! -d $DESTDIR ]; then
mkdir $DESTDIR
fi
pushd $BUILDROOT
#----------------------------------------------------------------------
# Unpack the tarball
if [ $skiptar != yes ]; then
echo Unarchiving tarball...
tar xjf $TARBALL
fi
if [ $inplace = no ]; then
# make a build dir and cd to it.
cd wxPython-src-$VERSION
WXDIR=`pwd`
mkdir -p $WXDIR/bld
cd $WXDIR/bld
WXBLD=$WXDIR/bld
else
# If building "inplace" then our build dir will be off of the
# WXROOT like normal, adjust the variables to find things that
# way.
WXBLD=$WXROOT/build-$CHARTYPE
mkdir -p $WXBLD
cd $WXBLD
WXDIR=..
SRCROOT=$WXROOT
fi
echo "Using wx root dir: $WXROOT"
echo "Using build dir: $WXBLD"
echo "Using source tree: $WXDIR"
#----------------------------------------------------------------------
if [ $OSX_VERSION = 10.3 -o $OSX_VERSION = 10.4 ]; then
OTHER_CFG_OPTS=--enable-mediactrl
fi
# Configure wxWidgets
if [ $skipconfig != yes -a $universal != yes ]; then
$WXDIR/configure \
--prefix=$PREFIX \
--with-mac \
--enable-monolithic \
--with-opengl \
--enable-sound \
--enable-display \
--enable-geometry \
$DEBUG_FLAG \
--enable-precomp=no \
--enable-optimise \
--disable-debugreport \
--disable-precompiled-headers \
$UNICODEOPT $OTHER_CFG_OPTS
fi
# Build wxWidgets and wxPython
if [ $skipbuild != yes ]; then
# Make wxWidgets and some contribs
WXBLD_CONFIG="$WXBLD/wx-config"
if [ $universal = yes ]; then
export WXROOT
export BUILDPREFIX=$PREFIX
export INSTALLDIR=$INSTALLROOT$PREFIX
$WXDIR/distrib/scripts/mac/macbuild wxpython universal $CHARTYPE
else
make $MAKEJOBS
make $MAKEJOBS -C contrib/src/animate
make $MAKEJOBS -C contrib/src/gizmos
make $MAKEJOBS -C contrib/src/stc
fi
SWIGIT=0
if [ $reswig = yes ]; then
SWIGIT=1
fi
# Build wxPython
cd $WXROOT/wxPython
$PYTHON setup.py \
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \
WX_CONFIG="$WXBLD_CONFIG --inplace" \
BUILD_BASE=$WXBLD/wxPython \
SWIG=$SWIGBIN \
USE_SWIG=$SWIGIT \
build
fi
#----------------------------------------------------------------------
if [ $skipinstall != yes ]; then
# Install wxWidgets
cd $WXBLD
if [ $universal != yes ]; then
make prefix=$INSTALLROOT$PREFIX install
make -C contrib/src/animate prefix=$INSTALLROOT$PREFIX install
make -C contrib/src/gizmos prefix=$INSTALLROOT$PREFIX install
make -C contrib/src/stc prefix=$INSTALLROOT$PREFIX install
fi
# relink wx-config with a relative link
cd $INSTALLROOT$PREFIX/bin
rm wx-config
ln -s ../lib/wx/config/* wx-config
# and wxPython
cd $WXROOT/wxPython
$PYTHON setup.py \
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \
WX_CONFIG="$INSTALLROOT$PREFIX/bin/wx-config --prefix=$INSTALLROOT$PREFIX" \
BUILD_BASE=$WXBLD/wxPython \
install \
--root=$INSTALLROOT
# Apple's Python Framework (such as what comes with Panther)
# sym-links the site-packages dir in the framework to
# /Library/Python/$PYVER so we need to move the files so they are
# installed in the physical location, not the virtual one.
if [ $APPLE_PYTHON == yes ]; then
if [ -e $INSTALLROOT/Library/Python/$PYVER ]; then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -