5353 exit 0
5454}
5555
56- PWD=$( dirname $( readlink -f " $0 " ) )
56+ PWD=$( cd $( dirname " $0 " ) && pwd -P )
5757NOW=" $( date +%s) "
5858
5959# packaging
@@ -67,11 +67,15 @@ function packaging() {
6767 RPMDIR=$PWD /../dist/rpmbuild
6868 PACK_PROJECT=cloudstack
6969
70- if [ -n " $1 " ] ; then
71- DEFOSSNOSS=" -D_ossnoss $1 "
70+ # Always define these macros; some rpmbuild/rpm versions treat empty-body macros as fatal.
71+ OSSNOSS=" $1 "
72+ if [ -z " $OSSNOSS " ] ; then
73+ OSSNOSS=" oss"
7274 fi
73- if [ -n " $2 " ] ; then
74- DEFSIM=" -D_sim $2 "
75+
76+ SIMVAL=" $2 "
77+ if [ -z " $SIMVAL " ] ; then
78+ SIMVAL=" false"
7579 fi
7680 if [ " $6 " == " true" ]; then
7781 INDICATOR=" $NOW "
@@ -90,8 +94,13 @@ function packaging() {
9094 fi
9195 fi
9296
93- VERSION=$( cd $PWD /../; $MVN org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep --color=none ' ^[0-9]\.' )
97+ VERSION=$( cd $PWD /../; $MVN org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep --color=none ' ^[0-9]\.' | tail -n 1 )
9498 REALVER=$( echo " $VERSION " | cut -d ' -' -f 1)
99+ if [ -z " $REALVER " ] ; then
100+ echo " Error: Unable to determine project version from Maven output; refusing to run rpmbuild with an empty %_ver macro."
101+ echo " Maven-reported version line: '$VERSION '"
102+ exit 2
103+ fi
95104
96105 if [ -n " $5 " ]; then
97106 BRAND=" ${5} ."
@@ -108,15 +117,15 @@ function packaging() {
108117
109118 if echo " $VERSION " | grep -q SNAPSHOT ; then
110119 if [ -n " $4 " ] ; then
111- DEFREL= " -D_rel ${BRAND}${INDICATOR} .$4 "
120+ RELVAL= " ${BRAND}${INDICATOR} .$4 "
112121 else
113- DEFREL= " -D_rel ${BRAND}${INDICATOR} "
122+ RELVAL= " ${BRAND}${INDICATOR} "
114123 fi
115124 else
116125 if [ -n " $4 " ] ; then
117- DEFREL= " -D_rel ${BRAND} $4 "
126+ RELVAL= " ${BRAND} $4 "
118127 else
119- DEFREL= " -D_rel ${BRAND} 1"
128+ RELVAL= " ${BRAND} 1"
120129 fi
121130 fi
122131
@@ -145,19 +154,17 @@ function packaging() {
145154 fi
146155 fi
147156
148- DEFTEMP=" -D_temp ''"
157+ # Default to %{nil} so the spec can test it safely without creating an empty-body macro.
158+ TEMPVAL=" %{nil}"
149159 if [ " $TEMPLATES " != " " ]; then
150160 if [[ " ,$TEMPLATES ," = * " ,all," * ]]; then
151- DEFTEMP =" -D_temp '- Dsystemvm-kvm -Dsystemvm-xen -Dsystemvm-vmware' "
161+ TEMPVAL =" -Dsystemvm-kvm -Dsystemvm-xen -Dsystemvm-vmware"
152162 else
153163 TEMP=-Dsystemvm-" ${TEMPLATES// ,/ " -Dsystemvm-" } "
154- DEFTEMP= " -D_temp ${TEMP} "
164+ TEMPVAL= " ${TEMP} "
155165 fi
156166 fi
157167
158- DEFFULLVER=" -D_fullver $VERSION "
159- DEFVER=" -D_ver $REALVER "
160-
161168 echo " Preparing to package Apache CloudStack $VERSION "
162169
163170 mkdir -p " $RPMDIR /SPECS"
@@ -173,7 +180,15 @@ function packaging() {
173180 echo " . executing rpmbuild"
174181 cp " $PWD /$DISTRO /cloud.spec" " $RPMDIR /SPECS"
175182
176- (cd " $RPMDIR " ; rpmbuild --define " _topdir ${RPMDIR} " " ${DEFVER} " " ${DEFFULLVER} " " ${DEFREL} " ${DEFPRE+" $DEFPRE " } ${DEFOSSNOSS+" $DEFOSSNOSS " } ${DEFSIM+" $DEFSIM " } ${DEFTEMP+" $DEFTEMP " } -bb SPECS/cloud.spec)
183+ (cd " $RPMDIR " ; rpmbuild \
184+ --define " _topdir ${RPMDIR} " \
185+ --define " _ver ${REALVER} " \
186+ --define " _fullver ${VERSION} " \
187+ --define " _rel ${RELVAL} " \
188+ --define " _ossnoss ${OSSNOSS} " \
189+ --define " _sim ${SIMVAL} " \
190+ --define " _temp ${TEMPVAL} " \
191+ -bb SPECS/cloud.spec)
177192 if [ $? -ne 0 ]; then
178193 if [ " $USE_TIMESTAMP " == " true" ]; then
179194 (cd $PWD /../; git reset --hard)
0 commit comments