build-spec 5.07 KB
Newer Older
Jean-Paul Smets's avatar
Jean-Paul Smets committed
1 2 3 4 5 6
#!/bin/bash

PARAMS=1

# Where we can find the RPM directory
# and where we want to store the source code from cvs
7 8
CVS_PATH="/home/$USER/cvs"
RPM_PATH="/home/$USER/rpm"
9
REPOSIT="cvs.erp5.org"
10

11
# TODO: The spec repository should be moved from /ERP5/spec to /spec/Mandriva in the CVS
12 13 14 15 16 17 18 19
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"

Jean-Paul Smets's avatar
Jean-Paul Smets committed
20

21
if [ $# -lt "$PARAMS" ]
Jean-Paul Smets's avatar
Jean-Paul Smets committed
22 23
then
  echo
24
  echo "build-spec PACKAGE_NAME..."
Jean-Paul Smets's avatar
Jean-Paul Smets committed
25
  exit 0
26 27
fi

28

29
while test $# -gt 0; do
30 31 32 33 34

  ####################
  # Build the archive from the cvs files
  ####################

Jean-Paul Smets's avatar
Jean-Paul Smets committed
35
  NAME=$1
36 37
  shift
  echo Starting Building $NAME
38

39
  # Retrieve the version in the source code as anonymous user to be sure we get published code only
40
  cd $CVS_PATH && cvs -d:pserver:anonymous@$REPOSIT:/cvsroot checkout $NAME && cd -
Jean-Paul Smets's avatar
Jean-Paul Smets committed
41 42 43
  VERSION=`awk '{print $2}' $CVS_PATH/$NAME/VERSION.txt`
  echo Building --$NAME-- Version --$VERSION--
  rm -rf $CVS_PATH/$NAME-$VERSION/
44
  mkdir -p $CVS_PATH/$NAME-$VERSION
Jean-Paul Smets's avatar
Jean-Paul Smets committed
45
  cp -a $CVS_PATH/$NAME $CVS_PATH/$NAME-$VERSION
46 47
  # Remove CVS extra files
  find $CVS_PATH/$NAME-$VERSION/* -name "CVS" | xargs rm -rf
48

49 50 51 52
  # 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
53
  rm -f $RPM_PATH/SOURCES/$NAME-$VERSION.tar.bz2
54
  cp $CVS_PATH/$NAME-$VERSION.tar.bz2 $RPM_PATH/SOURCES/$NAME-$VERSION.tar.bz2
55 56 57 58 59

  TMP_SPEC="/tmp/$NAME-$VERSION-tmp.spec"
  rm -f $TMP_SPEC
  touch $TMP_SPEC

60 61 62 63 64

  ####################
  # Get data from the previous spec file commited in the CVS
  ####################

65 66
  # 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
67
  cd $CVS_PATH && cvs -d:pserver:anonymous@$REPOSIT:/cvsroot checkout $SPEC_REPOSITORY/$NAME.spec
68 69
  CVS_SPEC_FILE="$CVS_PATH/$SPEC_REPOSITORY/$NAME.spec"

70
  # Get summary and required packages
71
  SUMMARY=`grep "^Summary*" $CVS_SPEC_FILE`
72 73 74 75 76 77 78 79
  REQUIRES=`grep "^Requires*" $CVS_SPEC_FILE`

  # Get the doc
  DOC=`grep "^%doc*" $CVS_SPEC_FILE`
  # Default value for %doc if not found in previous spec file
  if test "x$DOC" = x; then
    DOC="%doc %{product}/VERSION.txt"
  fi
80

81
  # Get the description and changelog from the previous spec file
82 83 84 85 86 87 88
  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`
89
  CLOG_TAIL=`expr $L_TOTAL - $L_CHANGELOG - 1`
90 91 92 93 94 95

  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"`

96 97 98 99 100 101 102 103 104 105
  # Increase the rpm release number if needed
  PREVIOUS_VERSION=`grep "^%define version*" $CVS_SPEC_FILE | awk '{print $3}'`
  PREVIOUS_REL=`grep "^%define release*" $CVS_SPEC_FILE | awk '{print $3}'`
  if test "x$VERSION" = "x$PREVIOUS_VERSION"; then
    RELEASE=`expr $PREVIOUS_REL + 1`
  else
    RELEASE="1"
  fi
  MKREL=`rpm --with unstable --eval "%mkrel $RELEASE"`

Kevin Deldycke's avatar
Kevin Deldycke committed
106

107 108 109 110
  ####################
  # Build the spec file using the following template
  ####################

111
  echo "%define product $NAME
112
%define version $VERSION
113
%define release $RELEASE
114 115 116

%define zope_home %{_prefix}/lib/zope
%define software_home %{zope_home}/lib/python
Jean-Paul Smets's avatar
Jean-Paul Smets committed
117

118 119 120 121 122 123 124 125 126 127
$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
128
$REQUIRES
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161

#----------------------------------------------------------------------
%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)
162
$DOC
163 164 165 166
%{software_home}/Products/*

#----------------------------------------------------------------------
%changelog
167
* $TODAY $PACKAGER <$EMAIL> $VERSION-$MKREL
168 169
- $LOG_MSG

170
$CHANGELOG" >> $TMP_SPEC
Jean-Paul Smets's avatar
Jean-Paul Smets committed
171 172

  # now we can replace the spec file
173
  rm -f $RPM_PATH/SPECS/$NAME.spec
174
  cp -f $TMP_SPEC $RPM_PATH/SPECS/$NAME.spec
Jean-Paul Smets's avatar
Jean-Paul Smets committed
175

176
  #rpmbuild -ba $RPM_PATH/SPECS/$NAME.spec
Jean-Paul Smets's avatar
Jean-Paul Smets committed
177

178 179 180 181
  echo "-------------"
  echo "Please commit the new $NAME.spec file in the Nexedi repository (http://$REPOSIT)"
  echo "-------------"

182
done
Jean-Paul Smets's avatar
Jean-Paul Smets committed
183 184

exit 0