#!/bin/bash PARAMS=1 # Where we can find the RPM directory # and where we want to store the source code from cvs CVS_PATH="/home/$USER/cvs" RPM_PATH="/home/$USER/rpm" # TODO: The spec repository should be moved from /ERP5/spec to /spec in the CVS SPEC_REPOSITORY="ERP5/spec" # Those variables are used to build the change log PACKAGER="Kevin Deldycke" EMAIL="kevin@nexedi.com" LOG_MSG="New build from the CVS" if [ $# -lt "$PARAMS" ] then echo echo "build-spec PACKAGE_NAME..." exit 0 fi # Because we get the CVS version, we have to include the date in the revision number CVSDATE=`date +'%Y%m%d'` while test $# -gt 0; do NAME=$1 shift echo Starting Building $NAME # Retrieve the version in the source code as anonymous user to be sure we get published code only cd $CVS_PATH && cvs -d:pserver:anonymous@cvs.erp5.org:/cvsroot checkout $NAME && cd - VERSION=`awk '{print $2}' $CVS_PATH/$NAME/VERSION.txt` VERSION=$VERSION.$CVSDATE echo Building --$NAME-- Version --$VERSION-- rm -rf $CVS_PATH/$NAME-$VERSION/ mkdir -p $CVS_PATH/$NAME-$VERSION cp -a $CVS_PATH/$NAME $CVS_PATH/$NAME-$VERSION # Remove CVS extra files find $CVS_PATH/$NAME-$VERSION/* -name "CVS" | xargs rm -rf # Create the archive cd $CVS_PATH/$NAME-$VERSION && tar jcvf $NAME-$VERSION.tar.bz2 $NAME && cd - mv $CVS_PATH/$NAME-$VERSION/$NAME-$VERSION.tar.bz2 $CVS_PATH/ # Remove because this does not remove files rm -f $RPM_PATH/SOURCES/$NAME-$VERSION.tar.bz2 cp $CVS_PATH/$NAME-$VERSION.tar.bz2 $RPM_PATH/SOURCES/$NAME-$VERSION.$CVSDATE.tar.bz2 TMP_SPEC="/tmp/$NAME-$VERSION-tmp.spec" rm -f $TMP_SPEC touch $TMP_SPEC # Now we will regenerate a spec file skeleton based on the one stored in the CVS. # This spec file need to be modified by hand to get cd $CVS_PATH && cvs -d:pserver:anonymous@cvs.erp5.org:/cvsroot checkout $SPEC_REPOSITORY/$NAME.spec CVS_SPEC_FILE="$CVS_PATH/$SPEC_REPOSITORY/$NAME.spec" # Get sumary, description and changelog from the previous spec file SUMMARY=`grep "^Summary*" $CVS_SPEC_FILE` L_SECTIONS=`grep -hn "#----------------------------------------------------------------------" $CVS_SPEC_FILE | sed -e "s/:/ /g" | awk '{print $1}'` L_DESC_START=`echo $L_SECTIONS | awk '{print $1}'` L_DESC_STOP=` echo $L_SECTIONS | awk '{print $2}'` L_CHANGELOG=` echo $L_SECTIONS | awk '{print $3}'` L_TOTAL=`wc -l $CVS_SPEC_FILE | awk '{print $1}'` DESC_HEAD=`expr $L_DESC_STOP - 1` DESC_TAIL=`expr $L_DESC_STOP - $L_DESC_START - 2` CLOG_TAIL=`expr $L_TOTAL - $L_CHANGELOG - 2` DESCRIPTION=`head -n $DESC_HEAD $CVS_SPEC_FILE | tail -n $DESC_TAIL` CHANGELOG=`tail -n $CLOG_TAIL $CVS_SPEC_FILE` TODAY=`env LC_TIME=en date +"%a %b %d %Y"` # Generate the spec file echo " %define product $NAME %define version $VERSION # If we get the code from the CVS, the release will be always the first %define release 1 %define zope_home %{_prefix}/lib/zope %define software_home %{zope_home}/lib/python $SUMMARY Name: zope-%{product} Version: %{version} Release: %mkrel %{release} License: GPL Group: System/Servers URL: http://www.erp5.org Source0: %{product}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-rootdir BuildArch: noarch Requires: zope-erp5 #---------------------------------------------------------------------- %description $DESCRIPTION #---------------------------------------------------------------------- %prep %setup -c %build %install %{__rm} -rf %{buildroot} %{__mkdir_p} %{buildroot}/%{software_home}/Products %{__cp} -a * %{buildroot}%{software_home}/Products/ %clean %{__rm} -rf %{buildroot} %post if [ \"\`%{_prefix}/bin/zopectl status\`\" != \"daemon manager not running\" ] ; then service zope restart fi %postun if [ -f \"%{_prefix}/bin/zopectl\" ] && [ \"\`%{_prefix}/bin/zopectl status\`\" != \"daemon manager not running\" ] ; then service zope restart fi %files %defattr(0644, root, root, 0755) %doc VERSION.txt %{software_home}/Products/* #---------------------------------------------------------------------- %changelog * $TODAY $PACKAGER <$EMAIL> $VERSION-1mdk - $LOG_MSG $CHANGELOG " # now we can replace the spec file rm -f $RPM_PATH/SPECS/$NAME.spec cp -f $TMP_SPEC $RPM_PATH/SPECS/$NAME.spec #rpmbuild -ba $RPM_PATH/SPECS/$NAME.spec done exit 0