Add "inplace" build option that allows the distribution to be built

from witin the current source tree instead of rewuiring the
wxPythonSrc tarball.  (Currently it still needs the Docs and Demo
tarballs to make a full build, but it can skip those parts if the
tarballs are not available.)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27758 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-06-11 22:50:25 +00:00
parent 3afe2fd691
commit 81de4ba3ad

View File

@@ -10,7 +10,7 @@ if [ ! -d wxPython -o ! -e ${spectemplate} ]; then
exit 1
fi
if [ ! "$UID" = "0" ]; then
if [ "$UID" != "0" ]; then
echo "-------------------------------------------------------"
echo " WARNING: will be unable to change ownership of files"
echo " unless this script is run as root or via sudo"
@@ -29,6 +29,8 @@ function usage {
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 " skipconfig Don't run configure"
echo " skipbuild Don't build wxWidgets or wxPython"
echo " skipinstall Don't do the installation step"
@@ -52,15 +54,23 @@ esac
PYTHONW=${PYTHON}w
shift
skiptar=no
skipconfig=no
skipbuild=no
skipinstall=no
skipdmg=no
skipclean=no
inplace=no
for flag in $*; do
case ${flag} in
skiptar) skiptar=1 ;;
skipconfig) skipconfig=1; skiptar=1 ;;
skipbuild) skipbuild=1; skipconfig=1; skiptar=1 ;;
skipinstall) skipinstall=1 ;;
skipdmg) skipdmg=1 ;;
skipclean) skipclean=1 ;;
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 ;;
*) echo "Unknown flag \"${flag}\""
usage
@@ -75,15 +85,35 @@ PYPREFIX=`$PYTHON -c "import sys; print sys.exec_prefix"`
PYLIB=$PYPREFIX/lib/python$PYVER
SITEPACKAGES=$PYLIB/site-packages
if [ -z "$TARBALLDIR" ]; then
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...
# 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/wxPythonSrc-$VERSION.tar.gz
if [ ! -e $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz ]; then
echo "-------------------------------------------------------"
echo " WARNING: Demo tarball not found, will skip building "
echo " the Demo app bundle and etc."
echo " $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz"
echo "-------------------------------------------------------"
fi
if [ ! -e $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz ]; then
echo "-------------------------------------------------------"
echo " WARNING: Docs tarball not found, will skip building "
echo " the the wxDocsViewer app bundle and etc."
echo " $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz"
echo "-------------------------------------------------------"
fi
PREFIX=/usr/local/lib/wxPython-$VERSION
BINPREFIX=/usr/local/bin
@@ -118,22 +148,35 @@ pushd $BUILDROOT
#----------------------------------------------------------------------
# Unpack the tarball
if [ -z "$skiptar" ]; then
if [ $skiptar != yes ]; then
echo Unarchiving tarball...
tar xzf $TARBALL
fi
cd wxPythonSrc-$VERSION
WXDIR=`pwd`
mkdir -p $WXDIR/bld
cd $WXDIR/bld
if [ $inplace = no ]; then
# make a build dir and cd to it.
cd wxPythonSrc-$VERSION
WXDIR=`pwd`
mkdir -p $WXDIR/bld
cd $WXDIR/bld
WXBLD=$WXDIR/bld
else
# If building "inplace" then our build dir will be BUILDROOT,
# adjust the variables to find things that way.
WXDIR=$WXROOT
SRCROOT=$WXROOT
WXBLD=$BUILDROOT
fi
echo "Using source tree: $WXDIR"
echo "Using build dir: $WXBLD"
#----------------------------------------------------------------------
# Configure wxWidgets
if [ -z "$skipconfig" ]; then
../configure \
if [ $skipconfig != yes ]; then
$WXDIR/configure \
--prefix=$PREFIX \
--with-mac \
--disable-monolithic \
@@ -153,7 +196,7 @@ if [ -z "$skipconfig" ]; then
fi
# Build wxWidgets and wxPython
if [ -z "$skipbuild" ]; then
if [ $skipbuild != yes ]; then
# Make wxWidgets and some contribs
make
@@ -162,23 +205,17 @@ if [ -z "$skipbuild" ]; then
make -C contrib/src/stc
make -C contrib/src/xrc
# if [ ! -e $WXDIR/include/wx/gizmos ]; then
# # Make some links so the wxPython build can find all the headers it needs
# pushd $WXDIR/include/wx
# ln -s ../../contrib/include/wx/* .
# popd
# fi
# Build wxPython
cd $WXDIR/wxPython
$PYTHON setup.py \
NO_SCRIPTS=1 \
WX_CONFIG="$WXDIR/bld/wx-config --inplace" \
WX_CONFIG="$WXBLD/wx-config --inplace" \
BUILD_BASE=$WXBLD/wxPython \
build
# Build wxrc (XRC resource tool)
cd $WXDIR/bld/contrib/utils/wxrc
cd $WXBLD/contrib/utils/wxrc
make
strip wxrc
@@ -186,9 +223,9 @@ fi
#----------------------------------------------------------------------
if [ -z "$skipinstall" ]; then
if [ $skipinstall != yes ]; then
# Install wxWidgets
cd $WXDIR/bld
cd $WXBLD
make prefix=$INSTALLROOT$PREFIX install
make -C contrib/src/gizmos prefix=$INSTALLROOT$PREFIX install
make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0" prefix=$INSTALLROOT/$PREFIX install
@@ -201,6 +238,7 @@ if [ -z "$skipinstall" ]; then
$PYTHON setup.py \
NO_SCRIPTS=1 \
WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
BUILD_BASE=$WXBLD/wxPython \
install \
--root=$INSTALLROOT
@@ -209,6 +247,9 @@ if [ -z "$skipinstall" ]; then
# /Library/Python/$PYVER so we need to move the files so they are
# installed in the physical location, not the virtual one.
if [ "$KIND" = "panther" ]; then
if [ -e $INSTALLROOT/Library/Python/$PYVER ]; then
rm -r $INSTALLROOT/Library/Python/$PYVER
fi
mkdir -p $INSTALLROOT/Library/Python/$PYVER
mv $INSTALLROOT/$SITEPACKAGES/* $INSTALLROOT/Library/Python/$PYVER
rm -r $INSTALLROOT/System
@@ -223,7 +264,7 @@ if [ -z "$skipinstall" ]; then
# Install wxrc
cp $WXDIR/bld/contrib/utils/wxrc/wxrc $INSTALLROOT$BINPREFIX
cp $WXBLD/contrib/utils/wxrc/wxrc $INSTALLROOT$BINPREFIX
# Set premissions for files in $INSTALLROOT
@@ -238,11 +279,11 @@ popd
#----------------------------------------------------------------------
# Make the Installer packages and disk image
if [ -z "$skipdmg" ]; then
if [ $skipdmg != yes ]; then
# Remove the .pyc/.pyo files they just take up space and can be recreated
# during the install.
$PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT
$PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null
# Make the welcome message
@@ -320,7 +361,7 @@ On this disk image you will find the installer for wxPython $VERSION for $W_MSG
tools.
Everything else here is optional and you can drag them out of the disk
image and drop them whereever you want. You do need to install the above
image and drop them wherever you want. You do need to install the above
package before you can use any of the items below.
@@ -358,6 +399,14 @@ EOF
# wxDocs
if [ ! -e $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz ]; then
cat > "$DMGDIR/root/Docs/Build ERROR.txt" <<EOF
The wxPythonDocs tarball was not found when building this disk image!
EOF
else
pushd $BUILDROOT
tar xzvf $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz
popd
@@ -380,6 +429,8 @@ can cache some indexes within its bundle.
EOF
fi
# license files, docs, etc.
pushd $DMGDIR/root/Docs
cp -pR $SRCROOT/wxPython/licence .
@@ -389,6 +440,17 @@ EOF
mv docs other
popd
if [ ! -e $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz ]; then
cat > "$DMGDIR/root/Samples/Build ERROR.txt" <<EOF
The wxPythonDemo tarball was not found when building this disk image!
EOF
cp "$DMGDIR/root/Samples/Build ERROR.txt" $DMGDIR/root/Apps
else
# Copy the demo and samples to the disk image from the tarball
pushd $DMGDIR/root/Samples
tar xzvf $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz
@@ -398,6 +460,16 @@ EOF
mv demo/demo.py demo/demo.pyw
popd
# Make an app bundle to run the demo
$PYTHONW $PROGDIR/../buildapp.py \
--builddir=$DMGDIR/root/Apps \
--name="wxPython Demo" \
--mainprogram=$DMGDIR/root/Samples/demo/demo.pyw \
--iconfile=$PROGDIR/RunDemo.icns \
build
cp -pR $DMGDIR/root/Samples/demo/* "$DMGDIR/root/Apps/wxPython Demo.app/Contents/Resources"
fi
# Make an app bundle to launch PyCrust
$PYTHONW $PROGDIR/../buildapp.py \
@@ -423,14 +495,6 @@ EOF
--iconfile=$PROGDIR/XRCed.icns \
build
# Make an app bundle to run the demo
$PYTHONW $PROGDIR/../buildapp.py \
--builddir=$DMGDIR/root/Apps \
--name="wxPython Demo" \
--mainprogram=$DMGDIR/root/Samples/demo/demo.pyw \
--iconfile=$PROGDIR/RunDemo.icns \
build
cp -pR $DMGDIR/root/Samples/demo/* "$DMGDIR/root/Apps/wxPython Demo.app/Contents/Resources"
# and then finally make a disk image containing the packages and etc.
@@ -442,7 +506,7 @@ fi
# Cleanup build/install dirs
if [ -z "$skipclean" ]; then
if [ $skipclean != yes ]; then
echo "Cleaning up..."
rm -rf $TMPDIR
else