Re: Compiling RPMS for RedHat 7.3 from CVS Source

Buchan Milne <[email protected]>
Newsgroups gmane.network.samba.binaries
Message-ID <[email protected]>
Gerald Carter wrote:
> On 8 Sep 2002, Vance Lankhaar wrote:
> 
> 
>>>Try this (when in the Redhat directory):
>>>
>>>$ cp ../Mandrake/makerpms-cvs.sh .
>>>$ sh makerpms-cvs.sh 2.2.6
>>
> 
> This won't work I don't think.

OK, so I was wrong, you would have to change 'Mandrake' to RedHat in my 
script


   IIRC the makerpms.s script for the redhat
> stuff checks for dependencies on different RPM versions...
> 
> This is what I used to create build scripts when I need them out
> of cvs...
> 
> ------cut here--------------------------------
> #!/bin/sh
> 
> TEMPLATES="makerpms.sh.tmpl samba2.spec.tmpl samba2-devel.spec.tmpl"
> 
> if [ ! "$2" ]; then
>         echo "Usage: $0 <version> <release>"
>         exit 1;
> fi
> 
> for file in $TEMPLATES; do
> 
>         newfile=`echo $file | sed 's/.tmpl//'`
>         echo Creating $newfile...
>         cat $file | sed "s/PVERSION/$1/g" | sed "s/PRELEASE/$2/g" > 
> $newfile
> 
> done
> ------cut here--------------------------------

Mine does that (except it uses 0.`date +%Y%m%d` as the release number), 
then renames the samba directory to match the version, changes back to 
the packaging directory and runs makerpms.sh, (hopefully) renaming the 
directory back at the end.

------cut here--------------------------------
#!/bin/bash
# makerpms-cvs.sh
# A quick script to build RPMs from cvs to test packaging
# Buchan Milne <[email protected]>

[ $# -lt 1 ] &&  echo "Usage: $0 <Samba version>" && exit 1

VERSION=$1
RELEASE=0.`date +%Y%m%d`
shift

# Replace PRELEASE and PVERSION with release number in all files ending with
# .tmpl

FILES=$(find . -name "*.tmpl" -type f)

for i in $FILES;do
         NEW=$(echo $i|sed -e 's/\.tmpl//g');
         cat $i |sed -e 's/PVERSION/'$VERSION'/g; 
s/PRELEASE/'$RELEASE'/g'> $NEW
;
done

#Change up three directories, rename directory to samba-$VERSION, change 
back
#then run makerpms.sh

(
CURRENT=$(pwd)
cd $(dirname $(dirname $(dirname $CURRENT)))
SAMBA_DIR=$(basename $(dirname $(dirname $CURRENT)))
mv $SAMBA_DIR samba-$VERSION
cd samba-$VERSION/packaging/Mandrake
sh makerpms.sh $@
cd $(dirname $(dirname $(dirname $CURRENT)))
mv samba-$VERSION $SAMBA_DIR
)
------cut here--------------------------------

We could probably have it detect the linux distro in another 2 lines of 
bash, adjust it to live one directory up, and then have one script that 
would work for all rpm-based distros.

Of course, this effort may be better spent on making one spec file which 
will build right on all rpm-based distros, but that would mean everyone 
would need to agree on subpackages (or not ;-)), or we would need lots 
of conditionals for subpackages.

Buchan

-- 
|----------------Registered Linux User #182071-----------------|
Buchan Milne                Mechanical Engineer, Network Manager
Cellphone * Work            +27 82 472 2231 * +27 21 8828820x121
Stellenbosch Automotive Engineering         http://www.cae.co.za
GPG Key                   http://ranger.dnsalias.com/bgmilne.asc
1024D/60D204A7 2919 E232 5610 A038 87B1 72D6 AC92 BA50 60D2 04A7
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.