X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..05e00ac5ef410707da86d98786cbb268100a7337:/wxPython/distrib/makerpm diff --git a/wxPython/distrib/makerpm b/wxPython/distrib/makerpm index 8134d14553..194995955d 100755 --- a/wxPython/distrib/makerpm +++ b/wxPython/distrib/makerpm @@ -1,47 +1,257 @@ #!/bin/bash +#---------------------------------------------------------------------- +# Build an RPM containing both wxGTK and wxPython -if [ -z $1 ]; then - echo "Please specify a version number on the command line." +##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 [ ! -f wxPython.spec ]; then - echo "Please run this script from the directory containing the wxPython.spec file." + +#---------------------------------------------------------------------- +# Initialization + +version=`python -c "import setup;print setup.VERSION"` +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 usage { + echo "Usage: $0 py_version [command flags...]" + 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" + 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 1 ]; then + usage exit 1 fi +pyver=$1 +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; skipcopy=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}\"" + usage + 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 + +function cleanup { + RMFILES=`find . -name "$1"` + if [ "$RMFILES" != "" ]; then + rm -rf $RMFILES + fi +} + + +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 build 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 + for dir in `grep -v '#' ${wxdir}/wxPython/distrib/DIRLIST`; do + mkdir ${tarver}/${dir} + ##echo "cp -pf --link ${wxdir}/${dir}/* ${tarver}/${dir}" + cp -pf --link ${wxdir}/${dir}/* ${tarver}/${dir} > /dev/null 2>&1 + done + + # using DIRLIST as above will normally skip any files starting + # with a dot, but there are a few .files that we do want to + # copy... + for dir in wxPython/distrib/msw; do + cp -pf --link ${wxdir}/${dir}/.[a-zA-Z]* ${tarver}/${dir} > /dev/null 2>&1 + done + + echo "*** Removing uneeded stuff from copy of CVS tree" + pushd ${tarver} > /dev/null + cleanup .cvsignore + cleanup CVS + cleanup CVSROOT + rm BuildCVS.txt + rm *.spec + rm -rf docs/html + rm -rf docs/latex + rm -rf contrib/docs + rm -rf contrib/samples + rm locale/*.mo + cleanup ".#*" + cleanup "*~" + cleanup "*.orig" + cleanup "*.rej" + cleanup "*.pyc" + cleanup core + cleanup "core.[0-9]*" + + rm -f wxPython/wx/* > /dev/null 2>&1 + + 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 -#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 +# 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