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 106 107 108 109
  # 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"`

  ####################
  # Build the spec file using the following template
  ####################

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

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

117 118 119 120 121 122 123 124 125 126
$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
127
$REQUIRES
128 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

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

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

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

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

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

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

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

exit 0