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 exit 1
fi fi
if [ ! "$UID" = "0" ]; then if [ "$UID" != "0" ]; then
echo "-------------------------------------------------------" echo "-------------------------------------------------------"
echo " WARNING: will be unable to change ownership of files" echo " WARNING: will be unable to change ownership of files"
echo " unless this script is run as root or via sudo" echo " unless this script is run as root or via sudo"
@@ -29,6 +29,8 @@ function usage {
echo "" echo ""
echo "optional command flags:" echo "optional command flags:"
echo " skiptar Don't unpack the tarball" 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 " skipconfig Don't run configure"
echo " skipbuild Don't build wxWidgets or wxPython" echo " skipbuild Don't build wxWidgets or wxPython"
echo " skipinstall Don't do the installation step" echo " skipinstall Don't do the installation step"
@@ -52,15 +54,23 @@ esac
PYTHONW=${PYTHON}w PYTHONW=${PYTHON}w
shift shift
skiptar=no
skipconfig=no
skipbuild=no
skipinstall=no
skipdmg=no
skipclean=no
inplace=no
for flag in $*; do for flag in $*; do
case ${flag} in case ${flag} in
skiptar) skiptar=1 ;; skiptar) skiptar=yes ;;
skipconfig) skipconfig=1; skiptar=1 ;; skipconfig) skipconfig=yes; skiptar=yes ;;
skipbuild) skipbuild=1; skipconfig=1; skiptar=1 ;; skipbuild) skipbuild=yes; skipconfig=yes; skiptar=yes ;;
skipinstall) skipinstall=1 ;; skipinstall) skipinstall=yes ;;
skipdmg) skipdmg=1 ;; skipdmg) skipdmg=yes ;;
skipclean) skipclean=1 ;; skipclean) skipclean=yes ;;
inplace) inplace=yes; skiptar=yes ;;
*) echo "Unknown flag \"${flag}\"" *) echo "Unknown flag \"${flag}\""
usage usage
@@ -75,15 +85,35 @@ PYPREFIX=`$PYTHON -c "import sys; print sys.exec_prefix"`
PYLIB=$PYPREFIX/lib/python$PYVER PYLIB=$PYPREFIX/lib/python$PYVER
SITEPACKAGES=$PYLIB/site-packages SITEPACKAGES=$PYLIB/site-packages
if [ -z "$TARBALLDIR" ]; then if [ -z "$TARBALLDIR" ]; then
# this is a spot on my fileserver where the tarballs go, adjust
# this is a spot on my fileserver where the tarballs go, adjust # as needed for where you put the wxPython tarball, or set
# as needed for where you put the wxPython tarball... # TARBALLDIR before invoking this script...
TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION
fi fi
TARBALL=$TARBALLDIR/wxPythonSrc-$VERSION.tar.gz 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 PREFIX=/usr/local/lib/wxPython-$VERSION
BINPREFIX=/usr/local/bin BINPREFIX=/usr/local/bin
@@ -118,22 +148,35 @@ pushd $BUILDROOT
#---------------------------------------------------------------------- #----------------------------------------------------------------------
# Unpack the tarball # Unpack the tarball
if [ -z "$skiptar" ]; then if [ $skiptar != yes ]; then
echo Unarchiving tarball... echo Unarchiving tarball...
tar xzf $TARBALL tar xzf $TARBALL
fi fi
cd wxPythonSrc-$VERSION if [ $inplace = no ]; then
WXDIR=`pwd` # make a build dir and cd to it.
mkdir -p $WXDIR/bld cd wxPythonSrc-$VERSION
cd $WXDIR/bld 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 # Configure wxWidgets
if [ -z "$skipconfig" ]; then if [ $skipconfig != yes ]; then
../configure \ $WXDIR/configure \
--prefix=$PREFIX \ --prefix=$PREFIX \
--with-mac \ --with-mac \
--disable-monolithic \ --disable-monolithic \
@@ -153,42 +196,36 @@ if [ -z "$skipconfig" ]; then
fi fi
# Build wxWidgets and wxPython # Build wxWidgets and wxPython
if [ -z "$skipbuild" ]; then if [ $skipbuild != yes ]; then
# Make wxWidgets and some contribs # Make wxWidgets and some contribs
make make
make -C contrib/src/gizmos make -C contrib/src/gizmos
make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0" make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
make -C contrib/src/stc make -C contrib/src/stc
make -C contrib/src/xrc 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 # Build wxPython
cd $WXDIR/wxPython cd $WXDIR/wxPython
$PYTHON setup.py \ $PYTHON setup.py \
NO_SCRIPTS=1 \ NO_SCRIPTS=1 \
WX_CONFIG="$WXDIR/bld/wx-config --inplace" \ WX_CONFIG="$WXBLD/wx-config --inplace" \
BUILD_BASE=$WXBLD/wxPython \
build build
# Build wxrc (XRC resource tool) # Build wxrc (XRC resource tool)
cd $WXDIR/bld/contrib/utils/wxrc cd $WXBLD/contrib/utils/wxrc
make make
strip wxrc strip wxrc
fi fi
#---------------------------------------------------------------------- #----------------------------------------------------------------------
if [ -z "$skipinstall" ]; then if [ $skipinstall != yes ]; then
# Install wxWidgets # Install wxWidgets
cd $WXDIR/bld cd $WXBLD
make prefix=$INSTALLROOT$PREFIX install make prefix=$INSTALLROOT$PREFIX install
make -C contrib/src/gizmos 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 make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0" prefix=$INSTALLROOT/$PREFIX install
@@ -201,6 +238,7 @@ if [ -z "$skipinstall" ]; then
$PYTHON setup.py \ $PYTHON setup.py \
NO_SCRIPTS=1 \ NO_SCRIPTS=1 \
WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \ WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
BUILD_BASE=$WXBLD/wxPython \
install \ install \
--root=$INSTALLROOT --root=$INSTALLROOT
@@ -209,6 +247,9 @@ if [ -z "$skipinstall" ]; then
# /Library/Python/$PYVER so we need to move the files so they are # /Library/Python/$PYVER so we need to move the files so they are
# installed in the physical location, not the virtual one. # installed in the physical location, not the virtual one.
if [ "$KIND" = "panther" ]; then if [ "$KIND" = "panther" ]; then
if [ -e $INSTALLROOT/Library/Python/$PYVER ]; then
rm -r $INSTALLROOT/Library/Python/$PYVER
fi
mkdir -p $INSTALLROOT/Library/Python/$PYVER mkdir -p $INSTALLROOT/Library/Python/$PYVER
mv $INSTALLROOT/$SITEPACKAGES/* $INSTALLROOT/Library/Python/$PYVER mv $INSTALLROOT/$SITEPACKAGES/* $INSTALLROOT/Library/Python/$PYVER
rm -r $INSTALLROOT/System rm -r $INSTALLROOT/System
@@ -223,10 +264,10 @@ if [ -z "$skipinstall" ]; then
# Install wxrc # 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 if [ "$UID" = "0" ]; then
chown -R root:admin $INSTALLROOT chown -R root:admin $INSTALLROOT
chmod -R g+w $INSTALLROOT chmod -R g+w $INSTALLROOT
@@ -238,11 +279,11 @@ popd
#---------------------------------------------------------------------- #----------------------------------------------------------------------
# Make the Installer packages and disk image # 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 # Remove the .pyc/.pyo files they just take up space and can be recreated
# during the install. # during the install.
$PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null
# Make the welcome message # Make the welcome message
@@ -312,15 +353,15 @@ EOF
cat > "$DMGDIR/root/README 1st.txt" <<EOF cat > "$DMGDIR/root/README 1st.txt" <<EOF
Welcome to wxPython! 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 extension modules, wxMac dynamic libraries and
headers, and some scripts for the command-line headers, and some scripts for the command-line
tools. tools.
Everything else here is optional and you can drag them out of the disk 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. 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 Apps/XRCed An application for editing wxPython resource
files (XRC files.) 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. 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. wxWidgets documentation.
Docs/licence License files. 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. 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. just open the folder and run demo.pyw.
Happy Hacking! Happy Hacking!
EOF EOF
# PyAlaMode An extension of PyCrust that includes source # PyAlaMode An extension of PyCrust that includes source
# file editing capabilities. # file editing capabilities.
# wxDocs # wxDocs
pushd $BUILDROOT if [ ! -e $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz ]; then
tar xzvf $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz cat > "$DMGDIR/root/Docs/Build ERROR.txt" <<EOF
popd
# Make an app to launch viewdocs.py The wxPythonDocs tarball was not found when building this disk image!
$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 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 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 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 EOF
fi
# license files, docs, etc. # license files, docs, etc.
pushd $DMGDIR/root/Docs pushd $DMGDIR/root/Docs
cp -pR $SRCROOT/wxPython/licence . cp -pR $SRCROOT/wxPython/licence .
@@ -388,16 +439,37 @@ EOF
rm -rf docs/xml-raw rm -rf docs/xml-raw
mv docs other mv docs other
popd popd
# Copy the demo and samples to the disk image from the tarball
pushd $DMGDIR/root/Samples if [ ! -e $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz ]; then
tar xzvf $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz cat > "$DMGDIR/root/Samples/Build ERROR.txt" <<EOF
mv wxPython-$VERSION/* .
rm -rf wxPython-$VERSION The wxPythonDemo tarball was not found when building this disk image!
rm demo/b demo/.setup.sh
mv demo/demo.py demo/demo.pyw EOF
popd 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 # Make an app bundle to launch PyCrust
$PYTHONW $PROGDIR/../buildapp.py \ $PYTHONW $PROGDIR/../buildapp.py \
@@ -423,15 +495,7 @@ EOF
--iconfile=$PROGDIR/XRCed.icns \ --iconfile=$PROGDIR/XRCed.icns \
build 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. # and then finally make a disk image containing the packages and etc.
$PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-$KIND-Py$PYVER $PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-$KIND-Py$PYVER
@@ -442,7 +506,7 @@ fi
# Cleanup build/install dirs # Cleanup build/install dirs
if [ -z "$skipclean" ]; then if [ $skipclean != yes ]; then
echo "Cleaning up..." echo "Cleaning up..."
rm -rf $TMPDIR rm -rf $TMPDIR
else else