summaryrefslogtreecommitdiff
path: root/packaging/RHEL-CTDB/makerpms.sh
blob: 163b4aed306c39983827f0fb05a7cad7d2d9698f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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
#!/bin/sh
# Copyright (C) John H Terpstra 1998-2002
# Copyright (C) Gerald (Jerry) Carter 2003
# Copyright (C) Michael Adam 2008

# Script to build RPMs for RHEL from inside a git checkout.

# The following allows environment variables to override the target directories
#   the alternative is to have a file in your home directory calles .rpmmacros
#   containing the following:
#   %_topdir  /home/mylogin/redhat
#
# Note: Under this directory rpm expects to find the same directories
# that are under the /usr/src/redhat directory.

# extra options passed to rpmbuild
EXTRA_OPTIONS="$1"

RPMSPECDIR=`rpm --eval %_specdir`
RPMSRCDIR=`rpm --eval %_sourcedir`
RPMBUILDDIR=`rpm --eval %_builddir`

# At this point the RPMSPECDIR and RPMSRCDIR variables must have a value!

DIRNAME=$(dirname $0)
TOPDIR=${DIRNAME}/../..

SPECFILE="samba.spec"
RPMVER=`rpm --version | awk '{print $3}'`
test -z "$RPMVER" && {
	RPMVER=`rpm --version | awk '{print $2}'`
}
RPM="rpmbuild"

##
## Check the RPM version (paranoid)
##
case $RPMVER in
    4*)
       echo "Supported RPM version [$RPMVER]"
       ;;
    *)
       echo "Unknown RPM version: `rpm --version`"
       exit 1
       ;;
esac

mkdir -p `rpm --eval %_specdir`
mkdir -p `rpm --eval %_sourcedir`
mkdir -p `rpm --eval %_builddir`
mkdir -p `rpm --eval %_srcrpmdir`
mkdir -p `rpm --eval %_rpmdir`/noarch
mkdir -p `rpm --eval %_rpmdir`/i386
mkdir -p `rpm --eval %_rpmdir`/x86_64

##
## Delete the old debuginfo remnants:
##
## At least on RHEL 5.5, we observed broken debuginfo packages
## when either old build directories were still present or old
## debuginfo packages (of samba) were installed.
##
## Remove the debuginfo samba RPMs and old RPM build
## directories, giving the user a 10 second chance to quit.
##

if rpm -qa | grep -q samba-debuginfo || test -n "$(echo ${RPMBUILDDIR}/samba* | grep -v \*)" ; then
	echo "Removing debuginfo remnants to fix debuginfo build:"
	if rpm -qa | grep -q samba-debuginfo ; then
		echo "Uninstalling the samba-debuginfo RPM"
		echo -n "Press Control-C if you want to quit (you have 10 seconds)"
		for count in $(seq 1 10) ; do
			echo -n "."
			sleep 1
		done
		echo
		echo "That was your chance... :-)"
		rpm -e samba-debuginfo
	fi
	if test -n "$(echo ${RPMBUILDDIR}/samba* | grep -v \*)" ; then
		echo "Deleting ${RPMBUILDDIR}/samba*"
		echo -n "Press Control-C if you want to quit (you have 10 seconds)"
		for count in $(seq 1 10) ; do
			echo -n "."
			sleep 1
		done
		echo
		echo "That was your chance... :-)"
		rm -rf ${RPMBUILDDIR}/samba*
	fi
fi

##
## determine the samba version and create the SPEC file
##
${DIRNAME}/makespec.sh
RC=$?
if [ $RC -ne 0 ]; then
	exit ${RC}
fi

RELEASE=$(grep ^Release ${DIRNAME}/${SPECFILE} | sed -e 's/^Release:\ \+//')
VERSION=$(grep ^Version ${DIRNAME}/${SPECFILE} | sed -e 's/^Version:\ \+//')

##
## create the tarball
##
pushd ${TOPDIR}
echo -n "Creating samba-${VERSION}.tar.bz2 ... "
git archive --prefix=samba-${VERSION}/ HEAD | bzip2 > ${RPMSRCDIR}/samba-${VERSION}.tar.bz2
RC=$?
popd
echo "Done."
if [ $RC -ne 0 ]; then
        echo "Build failed!"
        exit 1
fi


##
## copy additional source files
##
pushd ${DIRNAME}

chmod 755 setup/filter-requires-samba.sh
tar --exclude=.svn -jcvf - setup > ${RPMSRCDIR}/setup.tar.bz2

cp -p ${SPECFILE} ${RPMSPECDIR}

popd

##
## some symlink fixes for building 32bit compat libs
##
if [ `arch` = "x86_64" ]; then
    ln -sf /lib/libcom_err.so.2 /lib/libcom_err.so
    ln -sf /lib/libuuid.so.1 /lib/libuuid.so
fi

##
## Build
##
echo "$(basename $0): Getting Ready to build release package"

case ${EXTRA_OPTIONS} in
	*-b*)
		BUILD_TARGET=""
		;;
	*)
		BUILD_TARGET="-ba"
		;;
esac

pushd ${RPMSPECDIR}
${RPM} ${BUILD_TARGET} ${EXTRA_OPTIONS} ${SPECFILE}
popd

echo "$(basename $0): Done."