Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

138 lines (115 sloc) 3.45 kb
#!/bin/sh
# *** Does this actually work with sh, or does it have to be bash? ***
# Purpose: Builds rpm binaries out of CVS
# Author : Manuel M. T. Chakravarty <chak@acm.org>
# Created: 26 April 2000
#
# This file is subject to the same free software license as GHC.
# Usage
# -----
#
# This script checks the given version of an fptools component out of CVS and
# builds a binary rpm package from it. By default it builds the CVS head from
# anonymous CVS. In the case of anonymous CVS, this script requires that `cvs
# login' was already executed.
#
# The current version of this script handles ghc only, but in fact it is
# planned to extend it to cover the other components in fptools.
#
# Options:
#
# -d REPOSITORY -- Value passed to CVS's -d option
# -r TAG -- build the revision identified by the given CVS tag
# -D DATE -- build the revision identified by the given CVS date
#
# (if there is more than one of the options -r and -D, the last one takes
# effect)
# Requires: autoconf, cvs, GNU tar, gnuopt
# TODO
# ----
#
# * cover other fptools
# * it would be convenient to be able to specify an alternative .spec file
# (instead of using that in the repository)
# Default values
# --------------
# Use anonymous CVS by default
#
CVS_REPOSITORY=:pserver:anoncvs@glass.cse.ogi.edu:/cvs
# We build the CVS head by default (a date of `tomorrow' guarantees to catch
# the most recent check ins in the presence of clock skews - `now' wouldn't do
# that)
#
CVS_TAG="-D tomorrow"
# This is where we let rpm do the actual build
#
BUILD_DIR=/tmp/cvs-build-$$
# Works only for i386 for the moment...
# !!!IMPROVE THIS
ARCH=i386
START_DIR=`pwd`
# Command line option processing
#
GETOPT_OUTOUT=`getopt -o d:r:D: -n $0 -- "$@"`
if [ $? != 0 ]; then
echo "Terminating..." >&2
exit 1
fi
eval set -- "$GETOPT_OUTPUT"
while [ $# -gt 0 ]; do
case "$1" in
-d) CVS_REPOSITORY=$2; shift 2;;
-r) CVS_TAG="-r $2"; shift 2;;
-D) CVS_TAG="-D $2"; shift 2;;
--) shift; break;;
*) echo "Internal error!" ; exit 1 ;;
esac
done
if [ $# != 0 ]; then
echo "Too many arguments..." >&2
exit 1
fi
# Check the sources out of CVS
#
echo "*** Exporting sources from CVS... (will build in $BUILD_DIR)"
mkdir -p $BUILD_DIR || exit 1
cd $BUILD_DIR
cvs -d $CVS_REPOSITORY export $CVS_TAG fpconfig || exit 1
cd fptools
cvs -d $CVS_REPOSITORY export $CVS_TAG ghc || exit 1
cvs -d $CVS_REPOSITORY export $CVS_TAG hslibs || exit 1
VERSION=`sed -e 's/.*\([0-9]\)\.\([0-9]*\).*/\1.\2/' ghc/VERSION`
echo "*** ...got ghc $VERSION"
# Configure the tree (will produce the .spec file)
#
echo "*** Configuring sources..."
autoconf
cd ghc; autoconf; cd ..
./configure || exit 1
# Populate the rpm build tree
#
echo "*** Setting up the rpm build tree..."
mkdir $BUILD_DIR/SPEC
mkdir $BUILD_DIR/SOURCES
mkdir $BUILD_DIR/BUILD
mkdir $BUILD_DIR/RPMS
mkdir $BUILD_DIR/RPMS/$ARCH
mkdir $BUILD_DIR/SRPMS
cp ghc/ghc.spec $BUILD_DIR/SPEC/ghc-${VERSION}.spec
cd $BUILD_DIR
tar -cz -f $BUILD_DIR/SOURCES/ghc-$VERSION-src.tar.gz fptools || exit 1
rm -rf $BUILD_DIR/fptools
# Build packages with rpm
#
echo "*** Building packages..."
rpm --define "_topdir $BUILD_DIR" -ba SPEC/ghc-${VERSION}.spec || exit 1
echo "*** ...made the packages"
# Cleaning up
#
echo "*** Cleaning up..."
cd $START_DIR
cp $BUILD_DIR/SOURCES/ghc-$VERSION-src.tar.gz .
cp $BUILD_DIR/RPMS/$ARCH/ghc* .
cp $BUILD_DIR/SRPMS/ghc* .
rm -rf $BUILD_DIR
echo "*** ...done."
Jump to Line
Something went wrong with that request. Please try again.