1#!/usr/bin/env bash 2 3arguments_usage() { 4 cat <<EOF 5usage: build.sh [-h] [commands] 6 -h: print this help message and 7 abort execution 8 9 Will execute the passed commands 10 in the order they were passed 11EOF 12} 13 14arguments_parse() { 15 local __res=0 16 while getopts ":h" opt 17 do 18 case ${opt} in 19 h ) 20 arguments_usage 21 __res=2 22 break 23 ;; 24 \? ) 25 echo "Unknown option ${opt}" 26 arguments_usage 27 __res=1 28 break 29 ;; 30 esac 31 done 32 shift $((OPTIND -1)) 33 commands=("$@") 34 return ${__res} 35} 36 37configure() { 38 local __res=0 39 for _ in 1 40 do 41 cmake ../foundationdb ${CMAKE_EXTRA_ARGS} 42 __res=$? 43 if [ ${__res} -ne 0 ] 44 then 45 break 46 fi 47 done 48 return ${__res} 49} 50 51build_fast() { 52 local __res=0 53 for _ in 1 54 do 55 make -j`nproc` 56 __res=$? 57 if [ ${__res} -ne 0 ] 58 then 59 break 60 fi 61 done 62 return ${__res} 63} 64 65build() { 66 local __res=0 67 for _ in 1 68 do 69 configure 70 __res=$? 71 if [ ${__res} -ne 0 ] 72 then 73 break 74 fi 75 build_fast 76 __res=$? 77 if [ ${__res} -ne 0 ] 78 then 79 break 80 fi 81 done 82 return ${__res} 83} 84 85package_fast() { 86 local __res=0 87 for _ in 1 88 do 89 make -j`nproc` packages 90 cpack 91 cpack -G RPM -D GENERATE_EL6=ON 92 __res=$? 93 if [ ${__res} -ne 0 ] 94 then 95 break 96 fi 97 done 98 return ${__res} 99} 100 101package() { 102 local __res=0 103 for _ in 1 104 do 105 build 106 __res=$? 107 if [ ${__res} -ne 0 ] 108 then 109 break 110 fi 111 package_fast 112 __res=$? 113 if [ ${__res} -ne 0 ] 114 then 115 break 116 fi 117 done 118 return ${__res} 119} 120 121rpm() { 122 local __res=0 123 for _ in 1 124 do 125 configure 126 __res=$? 127 if [ ${__res} -ne 0 ] 128 then 129 break 130 fi 131 build_fast 132 __res=$? 133 if [ ${__res} -ne 0 ] 134 then 135 break 136 fi 137 fakeroot cpack -G RPM -D GENERATE_EL6=ON 138 fakeroot cpack -G RPM 139 __res=$? 140 if [ ${__res} -ne 0 ] 141 then 142 break 143 fi 144 done 145 return ${__res} 146} 147 148deb() { 149 local __res=0 150 for _ in 1 151 do 152 configure 153 __res=$? 154 if [ ${__res} -ne 0 ] 155 then 156 break 157 fi 158 build_fast 159 __res=$? 160 if [ ${__res} -ne 0 ] 161 then 162 break 163 fi 164 fakeroot cpack -G DEB 165 __res=$? 166 if [ ${__res} -ne 0 ] 167 then 168 break 169 fi 170 done 171 return ${__res} 172} 173 174test-fast() { 175 local __res=0 176 for _ in 1 177 do 178 ctest -j`nproc` ${CTEST_EXTRA_ARGS} 179 __res=$? 180 if [ ${__res} -ne 0 ] 181 then 182 break 183 fi 184 done 185 return ${__res} 186} 187 188test() { 189 local __res=0 190 for _ in 1 191 do 192 build 193 __res=$? 194 if [ ${__res} -ne 0 ] 195 then 196 break 197 fi 198 test-fast 199 __res=$? 200 if [ ${__res} -ne 0 ] 201 then 202 break 203 fi 204 done 205 return ${__res} 206} 207 208main() { 209 local __res=0 210 for _ in 1 211 do 212 arguments_parse "$@" 213 __res=$? 214 if [ ${__res} -ne 0 ] 215 then 216 if [ ${__res} -eq 2 ] 217 then 218 # in this case there was no error 219 # We still want to exit the script 220 __res=0 221 fi 222 break 223 fi 224 echo "Num commands ${#commands[@]}" 225 for command in "${commands[@]}" 226 do 227 echo "Command: ${command}" 228 case ${command} in 229 configure ) 230 configure 231 __res=$? 232 ;; 233 build ) 234 build 235 __res=$? 236 ;; 237 build/fast ) 238 build_fast 239 __res=$? 240 ;; 241 package ) 242 package 243 __res=$? 244 ;; 245 package/fast ) 246 package_fast 247 __res=$? 248 ;; 249 rpm ) 250 rpm 251 ;; 252 deb ) 253 deb 254 ;; 255 linux-pkgs) 256 rpm 257 deb 258 ;; 259 test-fast) 260 test-fast 261 ;; 262 test) 263 test 264 ;; 265 * ) 266 echo "ERROR: Command not found ($command)" 267 __res=1 268 ;; 269 esac 270 if [ ${__res} -ne 0 ] 271 then 272 break 273 fi 274 done 275 done 276 return ${__res} 277} 278 279main "$@" 280