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