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
# this is a spot on my fileserver where the tarballs go, adjust
# as needed for where you put the wxPython tarball...
# 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/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,42 +196,36 @@ if [ -z "$skipconfig" ]; then
fi
# Build wxWidgets and wxPython
if [ -z "$skipbuild" ]; then
if [ $skipbuild != yes ]; then
# Make wxWidgets and some contribs
make
make -C contrib/src/gizmos
make
make -C contrib/src/gizmos
make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
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
make
# Build wxrc (XRC resource tool)
cd $WXBLD/contrib/utils/wxrc
make
strip wxrc
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,10 +264,10 @@ 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
# Set premissions for files in $INSTALLROOT
if [ "$UID" = "0" ]; then
chown -R root:admin $INSTALLROOT
chmod -R g+w $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
@ -312,15 +353,15 @@ EOF
cat > "$DMGDIR/root/README 1st.txt" <<EOF
Welcome to wxPython!
On this disk image you will find the installer for wxPython $VERSION for $W_MSG MacPython-OSX $PYVER. MacPython-OSX is not included.
On this disk image you will find the installer for wxPython $VERSION for $W_MSG MacPython-OSX $PYVER. MacPython-OSX is not included.
wxPython-$KIND.pkg The installer package. It contains the wxPython
wxPython-$KIND.pkg The installer package. It contains the wxPython
extension modules, wxMac dynamic libraries and
headers, and some scripts for the command-line
tools.
headers, and some scripts for the command-line
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
Everything else here is optional and you can drag them out of the disk
image and drop them wherever you want. You do need to install the above
package before you can use any of the items below.
@ -331,48 +372,56 @@ package before you can use any of the items below.
Apps/XRCed An application for editing wxPython resource
files (XRC files.)
Apps/PyCrust An application that provides an interactive
Apps/PyCrust An application that provides an interactive
Python shell and also namespace inspectors.
Docs/wxDocsViewer An application that allows you to view the
Docs/wxDocsViewer An application that allows you to view the
wxWidgets documentation.
Docs/licence License files.
Docs/other A few readmes, change log, etc.
Docs/other A few readmes, change log, etc.
Samples/samples Several small sample applications that
Samples/samples Several small sample applications that
demonstrate how to use wxPython.
Samples/demo A copy of the wxPython demo source code,
Samples/demo A copy of the wxPython demo source code,
just open the folder and run demo.pyw.
Happy Hacking!
EOF
# PyAlaMode An extension of PyCrust that includes source
# PyAlaMode An extension of PyCrust that includes source
# file editing capabilities.
# wxDocs
pushd $BUILDROOT
tar xzvf $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz
popd
if [ ! -e $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz ]; then
cat > "$DMGDIR/root/Docs/Build ERROR.txt" <<EOF
# Make an app to launch viewdocs.py
$PYTHONW $PROGDIR/../buildapp.py \
--builddir=$DMGDIR/root/Docs \
--name=wxDocsViewer \
--mainprogram=$BUILDROOT/wxPython-$VERSION/docs/viewdocs.py \
--iconfile=$PROGDIR/Info.icns \
build
The wxPythonDocs tarball was not found when building this disk image!
cp $BUILDROOT/wxPython-$VERSION/docs/*.zip $DMGDIR/root/Docs/wxDocsViewer.app/Contents/Resources
EOF
cat > "$DMGDIR/root/Docs/README 1st.txt" <<EOF
else
pushd $BUILDROOT
tar xzvf $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz
popd
# Make an app to launch viewdocs.py
$PYTHONW $PROGDIR/../buildapp.py \
--builddir=$DMGDIR/root/Docs \
--name=wxDocsViewer \
--mainprogram=$BUILDROOT/wxPython-$VERSION/docs/viewdocs.py \
--iconfile=$PROGDIR/Info.icns \
build
cp $BUILDROOT/wxPython-$VERSION/docs/*.zip $DMGDIR/root/Docs/wxDocsViewer.app/Contents/Resources
cat > "$DMGDIR/root/Docs/README 1st.txt" <<EOF
The wxDocsViewer application needs to be copied to your Desktop (or
someplace else you have write access to) before you can run it, so it
@ -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 .
@ -388,16 +439,37 @@ EOF
rm -rf docs/xml-raw
mv docs other
popd
# Copy the demo and samples to the disk image from the tarball
pushd $DMGDIR/root/Samples
tar xzvf $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz
mv wxPython-$VERSION/* .
rm -rf wxPython-$VERSION
rm demo/b demo/.setup.sh
mv demo/demo.py demo/demo.pyw
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
mv wxPython-$VERSION/* .
rm -rf wxPython-$VERSION
rm demo/b demo/.setup.sh
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,15 +495,7 @@ 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.
$PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-$KIND-Py$PYVER
@ -442,7 +506,7 @@ fi
# Cleanup build/install dirs
if [ -z "$skipclean" ]; then
if [ $skipclean != yes ]; then
echo "Cleaning up..."
rm -rf $TMPDIR
else