Luca Prete
Committed by Gerrit Code Review

Adding rpm generation functionalities in onos-package

Change-Id: Iced5950e6f509700dcce5f419edec52a90a1ab83
...@@ -21,12 +21,15 @@ export BUILD_NUMBER=${BUILD_NUMBER:-$(id -un)~$(date +'%Y/%m/%d@%H:%M')} ...@@ -21,12 +21,15 @@ export BUILD_NUMBER=${BUILD_NUMBER:-$(id -un)~$(date +'%Y/%m/%d@%H:%M')}
21 export ONOS_POM_VERSION="1.3.0-SNAPSHOT" 21 export ONOS_POM_VERSION="1.3.0-SNAPSHOT"
22 export ONOS_VERSION=${ONOS_VERSION:-1.3.0.$BUILD_NUMBER} 22 export ONOS_VERSION=${ONOS_VERSION:-1.3.0.$BUILD_NUMBER}
23 23
24 -# ONOS production bits (onos.tar.gz & onos.zip) staging environment 24 +# ONOS production bits (onos.tar.gz, onos.zip, onos.deb, onos.rpm) staging environment
25 export ONOS_BITS=onos-${ONOS_VERSION%~*} 25 export ONOS_BITS=onos-${ONOS_VERSION%~*}
26 export ONOS_STAGE_ROOT=${ONOS_STAGE_ROOT:-/tmp} 26 export ONOS_STAGE_ROOT=${ONOS_STAGE_ROOT:-/tmp}
27 export ONOS_STAGE=$ONOS_STAGE_ROOT/$ONOS_BITS 27 export ONOS_STAGE=$ONOS_STAGE_ROOT/$ONOS_BITS
28 export ONOS_DEB_ROOT=$ONOS_STAGE_ROOT/deb 28 export ONOS_DEB_ROOT=$ONOS_STAGE_ROOT/deb
29 export ONOS_DEB=$ONOS_STAGE.deb 29 export ONOS_DEB=$ONOS_STAGE.deb
30 +export ONOS_RPM_ROOT=$ONOS_STAGE_ROOT/rpm
31 +export ONOS_RPM=$ONOS_STAGE.rpm
32 +export ONOS_RPM_VERSION=${ONOS_POM_VERSION//-/.}
30 export ONOS_TAR=$ONOS_STAGE.tar.gz 33 export ONOS_TAR=$ONOS_STAGE.tar.gz
31 export ONOS_ZIP=$ONOS_STAGE.zip 34 export ONOS_ZIP=$ONOS_STAGE.zip
32 35
......
...@@ -90,17 +90,15 @@ function build_compressed_package() { ...@@ -90,17 +90,15 @@ function build_compressed_package() {
90 } 90 }
91 91
92 # Build a DEB package 92 # Build a DEB package
93 -function build_deb() { 93 +function build_deb() {
94 echo "You need to be root in order to generate a proper DEB package." 94 echo "You need to be root in order to generate a proper DEB package."
95 95
96 sudo rm -fr $ONOS_DEB_ROOT 96 sudo rm -fr $ONOS_DEB_ROOT
97 97
98 - mkdir -p $ONOS_DEB_ROOT/DEBIAN 98 + mkdir -p $ONOS_DEB_ROOT/{DEBIAN,opt,etc/init}
99 - mkdir -p $ONOS_DEB_ROOT/opt/
100 - mkdir -p $ONOS_DEB_ROOT/etc/init
101 99
102 { 100 {
103 - echo "Package: onos" 101 + echo "Package: ONOS"
104 echo "Architecture: all" 102 echo "Architecture: all"
105 echo "Maintainer: ONOS Project" 103 echo "Maintainer: ONOS Project"
106 echo "Depends: debconf (>= 0.5.00), default-jre-headless (>= 1.8) | openjdk-8-jre | oracle-java8-installer" 104 echo "Depends: debconf (>= 0.5.00), default-jre-headless (>= 1.8) | openjdk-8-jre | oracle-java8-installer"
...@@ -116,11 +114,74 @@ function build_deb() { ...@@ -116,11 +114,74 @@ function build_deb() {
116 mkdir -p $ONOS_DEB_ROOT/opt/onos/var/ 114 mkdir -p $ONOS_DEB_ROOT/opt/onos/var/
117 115
118 sudo chown -R root:root $ONOS_DEB_ROOT 116 sudo chown -R root:root $ONOS_DEB_ROOT
119 - 117 +
120 sudo dpkg-deb --build $ONOS_DEB_ROOT > /dev/null && 118 sudo dpkg-deb --build $ONOS_DEB_ROOT > /dev/null &&
121 sudo mv $ONOS_STAGE_ROOT/deb.deb $ONOS_DEB && ls -l $ONOS_DEB 119 sudo mv $ONOS_STAGE_ROOT/deb.deb $ONOS_DEB && ls -l $ONOS_DEB
122 } 120 }
123 121
122 +# Build an RPM package
123 +function build_rpm() {
124 + read -r -p "WARN: rpm-build utility and root priviledges are need to build the package. Do you want to continue? [Y/n] " response
125 + case $response in
126 + [nN][oO])
127 + exit 0
128 + ;;
129 + *)
130 + sudo rm -fr $ONOS_RPM_ROOT
131 +
132 + sudo yum -y install rpm-build
133 +
134 + mkdir -p $ONOS_RPM_ROOT/{BUILD,RPMS,SOURCES/ONOS-$ONOS_RPM_VERSION/{etc/init,opt},SPECS,SRPMS}
135 +
136 + cp -r $ONOS_STAGE $ONOS_RPM_ROOT/SOURCES/ONOS-$ONOS_RPM_VERSION/opt/onos
137 + cp $ONOS_ROOT/tools/package/debian/onos.conf $ONOS_RPM_ROOT/SOURCES/ONOS-$ONOS_RPM_VERSION/etc/init/
138 +
139 + cd $ONOS_RPM_ROOT/SOURCES
140 + COPYFILE_DISABLE=1 tar zcf ONOS-$ONOS_RPM_VERSION.tar.gz ONOS-$ONOS_RPM_VERSION
141 +
142 + {
143 + echo "Name: ONOS"
144 + echo "Version: $ONOS_RPM_VERSION"
145 + echo "Release: 1"
146 + echo "Summary: Open Networking Operating System (ONOS)"
147 + echo "Vendor: ONOS Project"
148 + echo "Packager: ONOS Project"
149 + echo "Group: Applications/Engineering"
150 + echo "Requires: jre >= 1:8"
151 + echo "License: Apache 2.0"
152 + echo "URL: http://www.onosproject.org"
153 + echo "Source0: ONOS-$ONOS_RPM_VERSION.tar.gz"
154 + echo "BuildArch: noarch"
155 + echo "BuildRoot: %{_tmppath}/%{name}-buildroot"
156 + echo "%description"
157 + echo "Open Network Operating System (ONOS) is an opensource SDN controller."
158 + echo -e "\n"
159 + echo "%prep"
160 + echo "%setup -q"
161 + echo -e "\n"
162 + echo "%install"
163 + echo "mkdir -p %{buildroot}"
164 + echo "cp -R * %{buildroot}"
165 + echo -e "\n"
166 + echo "%clean"
167 + echo "rm -rf %{buildroot}"
168 + echo -e "\n"
169 + echo "%files"
170 + echo "%defattr(-,root,root,-)"
171 + echo "/etc/init/onos.conf"
172 + echo "/opt/onos/"
173 + echo -e "\n"
174 + echo "%post"
175 + echo "echo ONOS successfully installed at /opt/onos"
176 + } > $ONOS_RPM_ROOT/SPECS/onos.spec
177 +
178 + rpmbuild --define "_topdir $ONOS_RPM_ROOT" -bb $ONOS_RPM_ROOT/SPECS/onos.spec
179 +
180 + cp $ONOS_RPM_ROOT/RPMS/noarch/ONOS-$ONOS_RPM_VERSION-1.noarch.rpm $ONOS_STAGE_ROOT && ls -l $ONOS_STAGE_ROOT/ONOS-$ONOS_RPM_VERSION-1.noarch.rpm
181 + ;;
182 + esac
183 +}
184 +
124 # Script entry point 185 # Script entry point
125 [ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 186 [ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
126 . $ONOS_ROOT/tools/build/envDefaults 187 . $ONOS_ROOT/tools/build/envDefaults
...@@ -131,14 +192,17 @@ set -e ...@@ -131,14 +192,17 @@ set -e
131 # Before starting make sure the environment is clan - delete onos staging folder 192 # Before starting make sure the environment is clan - delete onos staging folder
132 rm -fr $ONOS_STAGE 193 rm -fr $ONOS_STAGE
133 194
134 -# If there are parameters check if we want to build a deb - otherwise build tar.gz 195 +# If there are parameters check if we want to build a deb - otherwise build tar.gz
135 case ${1:---tar} in 196 case ${1:---tar} in
136 - "--tar") build_stage_dir 197 + "--tar" | "-T") build_stage_dir
137 - build_compressed_package 198 + build_compressed_package
199 + ;;
200 + "--deb" | "-D") build_stage_dir
201 + build_deb
138 ;; 202 ;;
139 - "--deb") build_stage_dir 203 + "--rpm" | "-R") build_stage_dir
140 - build_deb 204 + build_rpm
141 ;; 205 ;;
142 - *) echo "usage: $(basename $0) [--tar|--deb]" >&2 && exit 1 206 + *) echo "usage: $(basename $0) [--tar|--deb|--rpm]" >&2 && exit 1
143 ;; 207 ;;
144 esac 208 esac
......