Committed by
Gerrit Code Review
Adding rpm generation functionalities in onos-package
Change-Id: Iced5950e6f509700dcce5f419edec52a90a1ab83
Showing
2 changed files
with
80 additions
and
13 deletions
... | @@ -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 | ... | ... |
-
Please register or login to post a comment