48c1dd65807f82cd745e55fe4056a07a0032b42a
[ci-management.git] / jjb / cicn / build-package.sh
1 #!/bin/bash
2 # basic build script example
3 set -euo pipefail
4 IFS=$'\n\t'
5
6 apt_get=/usr/local/apt-get
7
8 # Parameters:
9 # $1 = Distribution [trusty / CentOS]
10 #
11 update_cmake_repo() {
12
13     DISTRIBUTION=$1
14
15     if [ "$DISTRIBUTION" == "trusty" ]; then
16         sudo ${apt_get} install -y --allow-unauthenticated software-properties-common
17         sudo add-apt-repository --yes ppa:george-edison55/cmake-3.x
18     elif [ "$DISTRIBUTION" == "CentOS" ]; then
19         sudo cat << EOF > cmake.repo
20 [cmake-repo]
21 name=Repo for cmake3
22 baseurl=http://mirror.ghettoforge.org/distributions/gf/el/7/plus/x86_64/
23 enabled=1
24 gpgcheck=0
25 EOF
26         sudo cat << EOF > jsoncpp.repo
27 [jsoncp-repo]
28 name=Repo for jsoncpp
29 baseurl=http://dl.fedoraproject.org/pub/epel/7/x86_64/
30 enabled=1
31 gpgcheck=0
32 EOF
33         sudo mv cmake.repo /etc/yum.repos.d/cmake.repo
34         sudo mv jsoncpp.repo /etc/yum.repos.d/jsoncpp.repo
35     fi
36 }
37
38 # Parameters:
39 # $1 = Distribution codename
40 #
41 update_qt_repo() {
42     DISTRIBUTION_CODENAME=$1
43
44     if [ "$DISTRIBUTION_CODENAME" != "trusty" ] && [ "$DISTRIBUTION_CODENAME" != "xenial" ]; then
45         echo "No valid distribution specified when calling 'update_qt_repo'. Exiting.."
46         exit -1
47     fi
48
49     sudo ${apt_get} install -y --allow-unauthenticated software-properties-common
50     sudo add-apt-repository --yes ppa:beineri/opt-qt571-$DISTRIBUTION_CODENAME
51
52     wget -q -O - http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -
53     sudo sh -c "echo 'deb http://archive.getdeb.net/ubuntu $DISTRIBUTION_CODENAME-getdeb apps' >> /etc/apt/sources.list.d/getdeb.list"
54
55     sudo ${apt_get} update
56 }
57
58 setup() {
59
60     DISTRIB_ID=$1
61     DISTRIB_CODENAME=$2
62
63     if ! [ -z ${REPO_NAME} ]; then
64         REPO_URL="${NEXUSPROXY}/content/repositories/fd.io.${REPO_NAME}"
65         echo "REPO_URL: ${REPO_URL}"
66     else
67         exit -1
68     fi
69
70     if [ $DISTRIB_ID == "Ubuntu" ]; then
71         if [ "$DISTRIB_CODENAME" == "trusty" ]; then
72             update_cmake_repo $DISTRIB_CODENAME
73         fi
74
75         echo "deb ${REPO_URL} ./" | sudo tee /etc/apt/sources.list.d/99fd.io.list
76
77         sudo ${apt_get} update
78     elif [ "$DISTRIB_ID" == "CentOS" ]; then
79         update_cmake_repo $DISTRIB_ID
80         sudo cat << EOF > fdio-master.repo
81 [fdio-master]
82 name=fd.io master branch latest merge
83 baseurl=${REPO_URL}
84 enabled=1
85 gpgcheck=0
86 EOF
87         sudo mv fdio-master.repo /etc/yum.repos.d/fdio-master.repo
88     fi
89 }
90
91 build_package() {
92
93     ARCHITECTURE=`uname -m`
94
95     # Figure out what system we are running on
96     if [ -f /etc/lsb-release ];then
97
98         BUILD_TOOLS="build-essential cmake"
99         LIBSSL_LIBEVENT="libevent-dev libssl-dev"
100         LONGBOW_DEPS=""
101         LIBPARC_DEPS="longbow $LIBSSL_LIBEVENT"
102         LIBCCNX_COMMON_DEPS="$LIBPARC_DEPS libparc"
103         LIBCCNX_TRANSPORT_RTA_DEPS="$LIBCCNX_COMMON_DEPS libccnx-common"
104         LIBCCNX_PORTAL_DEPS="$LIBCCNX_TRANSPORT_RTA_DEPS libccnx-transport-rta"
105         LIBICNET_DEPS="$LIBCCNX_PORTAL_DEPS libboost-system-dev"
106         METIS_DEPS="$LIBCCNX_TRANSPORT_RTA_DEPS libccnx-transport-rta"
107         HTTP_SERVER_DEPS="$LIBICNET_DEPS libicnet libboost-regex-dev libboost-filesystem-dev"
108         VPP_PLUGIN_DEPS="vpp-dev vpp-dpkg-dev"
109
110         . /etc/lsb-release
111         DEB=ON
112         RPM=OFF
113
114         if [ "$ARCHITECTURE" == "x86_64" ]; then
115             ARCHITECTURE="amd64"
116         fi
117
118     elif [ -f /etc/redhat-release ];then
119
120         BUILD_TOOLS_GROUP="'Development Tools'"
121         BUILD_TOOLS_SINGLE="cmake"
122         LIBSSL_LIBEVENT="libevent-devel openssl-devel"
123         LONGBOW_DEPS=""
124         LIBPARC_DEPS="longbow $LIBSSL_LIBEVENT"
125         LIBCCNX_COMMON_DEPS="$LIBPARC_DEPS libparc"
126         LIBCCNX_TRANSPORT_RTA_DEPS="$LIBCCNX_COMMON_DEPS libccnx-common"
127         LIBCCNX_PORTAL_DEPS="$LIBCCNX_TRANSPORT_RTA_DEPS libccnx-transport-rta"
128         LIBICNET_DEPS="$LIBCCNX_PORTAL_DEPS boost-devel"
129         METIS_DEPS="$LIBCCNX_TRANSPORT_RTA_DEPS libccnx-transport-rta"
130         HTTP_SERVER_DEPS="$LIBICNET_DEPS libicnet boost-devel"
131
132         sudo yum install -y redhat-lsb
133         DISTRIB_ID=`lsb_release -si`
134         DISTRIB_RELEASE=`lsb_release -sr`
135         DISTRIB_CODENAME=`lsb_release -sc`
136         DISTRIB_DESCRIPTION=`lsb_release -sd`
137
138         DEB=OFF
139         RPM=ON
140     else
141         echo "ERROR: System configuration not recognized. Build failed"
142         exit -1
143     fi
144
145     echo ARCHITECTURE: $ARCHITECTURE
146     echo DISTRIB_ID: $DISTRIB_ID
147     echo DISTRIB_RELEASE: $DISTRIB_RELEASE
148     echo DISTRIB_CODENAME: $DISTRIB_CODENAME
149     echo DISTRIB_DESCRIPTION: $DISTRIB_DESCRIPTION
150
151     setup $DISTRIB_ID $DISTRIB_CODENAME
152
153     if [ $DISTRIB_ID == "Ubuntu" ]; then
154         echo $BUILD_TOOLS ${!PACKAGE_DEPS} | xargs sudo ${apt_get} install -y --allow-unauthenticated
155     elif [ $DISTRIB_ID == "CentOS" ]; then
156         echo $BUILD_TOOLS_GROUP | xargs sudo yum groupinstall -y --nogpgcheck || true
157         echo $BUILD_TOOLS_SINGLE | xargs sudo yum install -y --nogpgcheck || true
158         echo ${!PACKAGE_DEPS} | xargs sudo yum install -y --nogpgcheck || true
159     fi
160
161     # do nothing but print the current slave hostname
162     hostname
163
164     # Install package dependencies
165
166     export CCACHE_DIR=/tmp/ccache
167     if [ -d $CCACHE_DIR ];then
168         echo $CCACHE_DIR exists
169         du -sk $CCACHE_DIR
170     else
171         echo $CCACHE_DIR does not exist.  This must be a new slave.
172     fi
173
174     echo "cat /etc/bootstrap.sha"
175     if [ -f /etc/bootstrap.sha ];then
176         cat /etc/bootstrap.sha
177     else
178         echo "Cannot find cat /etc/bootstrap.sha"
179     fi
180
181     echo "cat /etc/bootstrap-functions.sha"
182     if [ -f /etc/bootstrap-functions.sha ];then
183         cat /etc/bootstrap-functions.sha
184     else
185         echo "Cannot find cat /etc/bootstrap-functions.sha"
186     fi
187
188     echo "sha1sum of this script: ${0}"
189     sha1sum $0
190
191     # Make the package
192     mkdir -p build && pushd build
193
194     rm -rf *
195     cmake -DCMAKE_INSTALL_PREFIX=/usr -DRPM_PACKAGE=$RPM -DDEB_PACKAGE=$DEB -DDISTRIBUTION=$DISTRIB_CODENAME -DARCHITECTURE=$ARCHITECTURE ..
196     make package
197
198     echo "*******************************************************************"
199     echo "* $PACKAGE_NAME BUILD SUCCESSFULLY COMPLETED"
200     echo "*******************************************************************"
201
202     exit 0
203 }