summaryrefslogtreecommitdiff
path: root/packaging/RHEL/makerpms.git.sh
blob: 68f9d96ac96d4e0307cabe372d5a41e61f7519cd (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
#!/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.

# Set DOCS_TARBALL to the path to a docs release tarball in .tar.bz2 format.
# This tarball should contain the compiled docs with a prefix of "docs/".

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

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

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

USERID=`id -u`
GRPID=`id -g`

DIRNAME=$(dirname $0)
TOPDIR=${DIRNAME}/../..
SRCDIR=${TOPDIR}/source3
VERSION_H=${SRCDIR}/include/version.h

SPECFILE="samba.spec"
DOCS="docs.tar.bz2"
RPMVER=`rpm --version | awk '{print $3}'`
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

##
## determine the samba version and create the SPEC file
##
pushd ${SRCDIR}
./script/mkversion.sh
popd
if [ ! -f ${VERSION_H} ] ; then
	echo "Error creating version.h"
	exit 1
fi

VERSION=`grep "^#define SAMBA_VERSION_OFFICIAL_STRING " ${VERSION_H} | awk '{print $3}'`
vendor_version=`grep "^#define SAMBA_VERSION_VENDOR_SUFFIX " ${VERSION_H} | awk '{print $3}'`
if test "x${vendor_version}"  != "x" ; then
	VERSION="${VERSION}-${vendor_version}"
fi
VERSION=`echo ${VERSION} | sed 's/-/_/g'`
VERSION=`echo ${VERSION} | sed 's/\"//g'`
echo "VERSION: ${VERSION}"
sed -e s/PVERSION/${VERSION}/g \
	-e s/PRELEASE/1/g \
	-e s/PRPMREV//g \
	< ${DIRNAME}/${SPECFILE}.tmpl \
	> ${DIRNAME}/${SPECFILE}


##
## create the tarball
##
pushd ${TOPDIR}
rm -rf ../samba-${VERSION}
git archive --prefix=samba-${VERSION}/ HEAD | (cd .. && tar -xf -)
RC=$?
popd
if [ $RC -ne 0 ]; then
	echo "Build failed!"
	exit 1
fi

if [ "x${DOCS_TARBALL}" != "x" ] && [ -f ${DOCS_TARBALL} ]; then
	cp ${DOCS_TARBALL} /tmp/${DOCS}
	pushd ${TOPDIR}/../samba-${VERSION}
	tar xjf /tmp/${DOCS}
	RC=$?
	rm -f /tmp/${DOCS}
	popd
	if [ $RC -ne 0 ]; then
		echo "Build failed!"
		exit 1
	fi
fi

pushd ${TOPDIR}/..
chown -R ${USERID}.${GRPID} samba-${VERSION}${REVISION}
if [ ! -d samba-${VERSION} ]; then
	ln -s samba-${VERSION}${REVISION} samba-${VERSION} || exit 1
fi
echo -n "Creating samba-${VERSION}.tar.bz2 ... "
tar --exclude=.svn -cf - samba-${VERSION}/. | bzip2 > ${RPMSRCDIR}/samba-${VERSION}.tar.bz2
RC=$?
rm -rf samba-${VERSION}/
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

##
## Build
##
echo "$(basename $0): Getting Ready to build release package"
pushd ${RPMSPECDIR}
${RPM} -ba $EXTRA_OPTIONS $SPECFILE
if [ "x$?" = "x0" ] && [ `arch` = "x86_64" ]; then
    echo "Building 32 bit winbind libs"
    # hi ho, a hacking we will go ...
    ln -sf /lib/libcom_err.so.2 /lib/libcom_err.so
    ln -sf /lib/libuuid.so.1 /lib/libuuid.so
    ln -sf /lib/libkeyutils.so.1 /lib/libkeyutils.so
    ${RPM} -ba --rebuild --target=i386 $SPECFILE
fi

popd

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