X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..6e4d60a3b843bcd23d2b65d426fd511f8d10f97a:/wxPython/distrib/makerpm?ds=inline diff --git a/wxPython/distrib/makerpm b/wxPython/distrib/makerpm index 8134d14553..6d6088d515 100755 --- a/wxPython/distrib/makerpm +++ b/wxPython/distrib/makerpm @@ -1,47 +1,246 @@ #!/bin/bash +#---------------------------------------------------------------------- +# Build an RPM containing both wxGTK and wxPython -if [ -z $1 ]; then - echo "Please specify a version number on the command line." +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 [ ! -f wxPython.spec ]; then - echo "Please run this script from the directory containing the wxPython.spec file." + +#---------------------------------------------------------------------- +# Initialization + +wxpdir=`pwd` +wxdir=${wxpdir}/.. +distdir=${wxpdir}/dist +builddir=${wxpdir}/_build_rpm +rpmtop=${builddir}/rpmtop +cvsroot=:pserver:anoncvs@cvs.wxwindows.org:/pack/cvsroots/wxwindows +pythonbin=/usr/bin/python +port=GTK +lcport=gtk +unicode=0 +tarname=wxPythonSrc +rpmflag=-ba + +#---------------------------------------------------------------------- +# Check parameters + +function useage { + echo "Usage: $0 wx_version py_version [command flags...]" + echo " wx_version String to use for version in filenames, etc." + echo " py_version String to append to $pythonbin (which python" + echo " version to use.)" + echo "" + echo "command flags:" + echo " skipcopy Don't copy the files for the tarball from the workspace" + echo " skiptar Don't build the tarball" + echo " skiprpm Don't build the RPM (but why?)" + echo " skipclean Don't do the cleanup at the end" + echo " gtk2 Build using wxGTK2 and Unicode" + echo " x11 Build using wxX11" + echo " speconly Do nothing but write the RPM spec file" + echo " srpm Only make the SRPM" +# echo " smp Add SMP=2 to the envivonment to speed wxGTK build" +} + +if [ $# -lt 2 ]; then + useage exit 1 fi +version=$1 +pyver=$2 +shift;shift + +ver2=`echo ${version} | cut -c 1,2,3` +tarver=${tarname}-${version} + +python=${pythonbin}${pyver} +if [ ! -e ${python} ]; then + echo "${python} not found!" + exit 1 +fi + + +function makespec { + echo "*** Writing ${distdir}/wxPython${port}.spec" + cat ${spectemplate} \ + | sed s:@PYTHON@:${python}:g \ + | sed s:@PYVER@:${pyver}:g \ + | sed s:@PORT@:${port}:g \ + | sed s:@LCPORT@:${lcport}:g \ + | sed s:@TARNAME@:${tarname}:g \ + | sed s:@VERSION@:${version}:g \ + | sed s:@VER2@:${ver2}:g \ + | sed s:@UNICODE@:${unicode}:g \ + > ${distdir}/wxPython${port}.spec +} + + + +for flag in $*; do + case ${flag} in + skipcopy) skipcopy=1 ;; + skipclean) skipclean=1 ;; + skiptar) skiptar=1 ;; + skiprpm) skiprpm=1 ;; + gtk2) unicode=1; port=GTK2; lcport=gtk2 ;; + x11) port=X11; lcport=x11 ;; + smp) export SMP=2 ;; + speconly) makespec; exit 0 ;; + srpm) rpmflag=-bs; ;; + + *) echo "Unknown flag \"${flag}\"" + useage + exit 1 + esac +done + + +#---------------------------------------------------------------------- +# Setup build dirs + +echo "*** Setting up" + +if [ ! -d ${builddir} ]; then + mkdir -p ${builddir} +fi + +if [ ! -d ${distdir} ]; then + mkdir -p ${distdir} +fi + +for dir in SOURCES SPECS BUILD RPMS SRPMS; do + if [ ! -d ${rpmtop}/${dir} ]; then + mkdir -p ${rpmtop}/${dir} + fi +done + +#---------------------------------------------------------------------- +# Copy the sources from my CVS workspace -#strip /usr/lib/python1.5/site-packages/wxPython/*.so -#strip /usr/lib/libwxPyHelpers.so -# -#cat wxPython.spec.in | sed s/__VERSION__/$1/g > wxPython.spec -# -#mkdir /usr/doc/wxPython-$1 -#cp ../README.txt /usr/doc/wxPython-$1 -#cp ../../../docs/preamble.txt /usr/doc/wxPython-$1 -#cp ../../../docs/licence.txt /usr/doc/wxPython-$1 -#cp ../../../docs/licendoc.txt /usr/doc/wxPython-$1 -#cp ../../../docs/lgpl.txt /usr/doc/wxPython-$1 -#cp ../../../docs/gpl.txt /usr/doc/wxPython-$1 -# -#rpm -bb wxPython.spec -# -#mv /usr/src/redhat/RPMS/*/wxPython*.rpm . -#chown rd:users wxPython*.rpm -# -#rm -r /usr/doc/wxPython-$1 - -cp -f wxPython-$1.tar.gz /usr/src/redhat/SOURCES -rpm -ba wxPython.spec - -mv /usr/src/redhat/RPMS/*/wxPython*.rpm . -mv /usr/src/redhat/SRPMS/wxPython*.rpm . -chown rd:users wxPython*.rpm -rm -rf /usr/lib/python1.5/site-packages/wxPython/ -rm -f /usr/lib/libwxPyHelpers* -rm -rf /usr/doc/wxPython-$1 +if [ -z "${skipcopy}" ]; then + echo "*** Copying CVS tree" + pushd ${builddir} > /dev/null + if [ -e ${tarver} ]; then + rm -rf ${tarver} + fi + mkdir -p ${tarver} + # copy root dir contents + cp -pf --link ${wxdir}/* ${tarver} > /dev/null 2>&1 + + # copy all top dirs except CVS, build, demos, utils, samples, and wxPython + for d in art contrib debian distrib docs include lib locale misc patches src; do + if [ -e ${wxdir}/$d ]; then + cp -Rpf --link ${wxdir}/$d ${tarver} #> /dev/null 2>&1 + fi + done + + # now do the same thing for wxPython, skipping it's build dirs and such + mkdir ${tarver}/wxPython + cp -pf --link ${wxdir}/wxPython/* ${tarver}/wxPython > /dev/null 2>&1 + for d in contrib demo distrib distutils docs licence samples scripts src wx wxPython; do + cp -Rpf --link ${wxdir}/wxPython/$d ${tarver}/wxPython #> /dev/null 2>&1 + done + + + echo "*** Removing uneeded stuff from copy of CVS tree" + pushd ${tarver} > /dev/null + rm `find . -name .cvsignore` + rm -rf `find . -name CVS` + rm *.spec + rm -rf docs/html + rm -rf docs/latex + rm -rf contrib/docs + rm -rf contrib/samples + rm locale/*.mo + rm `find . -name ".#*"` + rm `find . -name "*~"` + rm `find . -name "*.pyc"` + rm `find . -name "core"` + rm `find . -name "core.[0-9]*"` + + rm -f wxPython/wxPython/* > /dev/null 2>&1 + rm wxPython/demo/.setup.sh + rm -rf wxPython/contrib/art2d + rm -rf wxPython/contrib/canvas + rm -rf wxPython/contrib/canvas2 + rm -rf wxPython/contrib/gizmos/contrib + rm -rf wxPython/contrib/ogl/contrib + rm -rf wxPython/contrib/stc/contrib + rm -rf wxPython/contrib/xrc/contrib + + popd > /dev/null + popd > /dev/null +fi + + +#---------------------------------------------------------------------- +# Make the spec file and copy to ${builddir}/${tarver} so it will be +# in the tar file when it's built + +# TODO? Output all combinations of spec files to put in the tar file?? + +makespec +cp ${distdir}/wxPython${port}.spec ${builddir}/${tarver}/wxPython${port}.spec + + +#---------------------------------------------------------------------- +# Build the tar file + +if [ -z "${skiptar}" ]; then + echo "*** Creating language catalogs..." + pushd ${builddir}/${tarver}/locale > /dev/null + make allmo + popd > /dev/null + + echo "*** Creating tarball..." + cp distrib/README.1st.txt ${builddir}/${tarver} + pushd ${builddir} > /dev/null + tar cvf ${distdir}/${tarver}.tar ${tarver} > /dev/null + + echo "*** Compressing..." + if [ -e ${distdir}/${tarver}.tar.gz ]; then + rm ${distdir}/${tarver}.tar.gz + fi + gzip --best ${distdir}/${tarver}.tar + popd > /dev/null +fi + + +#---------------------------------------------------------------------- +# build the RPM + +if [ -z "${skiprpm}" ]; then + echo "*** Building RPMs..." + cp ${distdir}/${tarver}.tar.gz ${rpmtop}/SOURCES + rpmbuild ${rpmflag} \ + --define "_topdir ${rpmtop}" \ + --define "_tmppath ${builddir}" \ + ${distdir}/wxPython${port}.spec + if [ "$?" != "0" ]; then + echo "*** RPM failure, exiting." + exit 1 + else + echo "*** Moving RPMs to ${distdir}" + mv -f `find ${rpmtop} -name "wxPython*.rpm"` ${distdir} + fi +fi + +#---------------------------------------------------------------------- +# Cleanup + +if [ -z ${skipclean} ]; then + echo "*** Cleaning up" + rm -rf ${rpmtop} + rm -rf ${builddir} +fi