File: build

package info (click to toggle)
netperfmeter 1.8.6~rc2-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,528 kB
  • sloc: cpp: 8,003; ansic: 1,617; sh: 1,421; python: 121; perl: 108; makefile: 7
file content (184 lines) | stat: -rwxr-xr-x 7,750 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#!/usr/bin/env bash
#
# Travis CI Scripts
# Copyright (C) 2018-2020 by Thomas Dreibholz
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Contact: dreibh@iem.uni-due.de

# Bash options:
set -e


. `dirname $0`/get-container


# ###### Linux as-is ########################################################
if [ "${TRAVIS_OS_NAME}" == "linux" -a "${DOCKER}" == "" -a "${QEMU}" == "" ] ; then
   # ====== Configure with CMake ============================================
   if [ -e CMakeLists.txt ] ; then
      env CC=${COMPILER_C} CXX=${COMPILER_CXX} cmake . $@

   # ====== Configure with autoconf/automake (via bootstrap script) =========
   elif [ -e configure.ac -o -e configure.in ] ; then
      if [ -e bootstrap ] ; then
         env CC=${COMPILER_C} CXX=${COMPILER_CXX} ./bootstrap
         env CC=${COMPILER_C} CXX=${COMPILER_CXX} ./configure $@
      elif [ -e autogen.sh ] ; then
         env CC=${COMPILER_C} CXX=${COMPILER_CXX} ./autogen.sh
      else
         env CC=${COMPILER_C} CXX=${COMPILER_CXX} ./configure $@
      fi
   else
      echo >&2 "WARNING: No build system detected. Trying to just call \"make\" ..."
   fi
   cores=`getconf _NPROCESSORS_ONLN 2>/dev/null || true`
   if [ $cores -gt 1 ] ; then
      MAKEFLAGS="-j${cores}"
   fi

   # ====== Compile ======================================================
   if [ "${TOOL}" == "compile" ] ; then
      env MAKEFLAGS=${MAKEFLAGS} make   # VERBOSE=1

   # ====== Coverity Scan ================================================
   elif [ "${TOOL}" == "coverity" ] ; then
      # ------ Build -----------------------------------------------------
      cd coverity
      export PATH="coverity/$(ls -d cov*)/bin:$PATH"
      cd ..

      env MAKEFLAGS=${MAKEFLAGS} cov-build --dir cov-int make
      tar czf coverity-results.tar.gz cov-int
      ls -l coverity-results.tar.gz

      # ------ Upload results --------------------------------------------
      if [ "${TRAVIS_BRANCH}" == "${COVERITY_SCAN_BRANCH}" ] ; then
         curl --form token=${COVERITY_SCAN_TOKEN} \
              --form email=${COVERITY_SCAN_NOTIFICATION_EMAIL} \
              --form file=@coverity-results.tar.gz \
              --form version="master branch head" \
              --form description="$(git log -1|head -1)" \
              https://scan.coverity.com/builds?project=${COVERITY_PROJECT}
         CURL_RESULT=$?
         echo "curl returned ${CURL_RESULT}"
         if [ $CURL_RESULT -ne 0 ]; then
            echo >&2 "ERROR: Upload to Coverity Scan failed; curl returned ${CURL_RESULT}!"
            exit 1
         fi
      else
         echo >&2 "###### NOTE: This branch \"${TRAVIS_BRANCH}\" is not the scan branch \"${COVERITY_SCAN_BRANCH}\"! Skipping upload! ######"
      fi

   # ====== Invalid setting =================================================
   else
      echo >&2 "ERROR: Invalid setting of TOOL=${TOOL}!"
      exit 1
   fi


# ###### FreeBSD via QEMU ###################################################
elif [ "${TRAVIS_OS_NAME}" == "linux" -a "${QEMU}" == "FreeBSD" ] ; then

   ssh -p 8829 -oStrictHostKeyChecking=no -i ~/.ssh/id_rsa root@localhost <<EOF
      cd /travis

      # ====== Configure ====================================================
      if [ -e CMakeLists.txt ] ; then
         env CC=${COMPILER_C} CXX=${COMPILER_CXX} cmake . $@
      elif [ -e configure.ac -o -e configure.in ] ; then
         if [ -e bootstrap ] ; then
            env CC=${COMPILER_C} CXX=${COMPILER_CXX} ./bootstrap
            env CC=${COMPILER_C} CXX=${COMPILER_CXX} ./configure $@
         elif [ -e autogen.sh ] ; then
            env CC=${COMPILER_C} CXX=${COMPILER_CXX} ./autogen.sh
         else
            env CC=${COMPILER_C} CXX=${COMPILER_CXX} ./configure $@
         fi
      else
         echo >&2 "WARNING: No build system detected. Trying to just call \"make\" ..."
      fi

      cores=\`sysctl -a | grep 'hw.ncpu' | cut -d ':' -f2 | tr -d ' '\`
      if [ \${cores} -gt 1 ] ; then
         MAKEFLAGS="-j\${cores}"
      fi
      echo "Running: env MAKEFLAGS=\${MAKEFLAGS} make"
      env MAKEFLAGS=\${MAKEFLAGS} make || exit 1

      echo "Done!"
      exit 0
EOF


# ###### Linux via Docker ###################################################
elif [ "${TRAVIS_OS_NAME}" == "linux" -a "${DOCKER}" != "" -a "${QEMU}" == "" ] ; then

   # ====== Compile (generic) ===============================================
   if [ "${TOOL}" == "compile" ] ; then
      echo "###### Compiling ... ##################################################"

      if [ -e CMakeLists.txt ] ; then
         sudo docker exec ${CONTAINER} env LANG=C.UTF CC=${COMPILER_C} CXX=${COMPILER_CXX} cmake . $@
      elif [ -e configure.ac -o -e configure.in ] ; then
         if [ -e bootstrap ] ; then
            sudo docker exec ${CONTAINER} env LANG=C.UTF CC=${COMPILER_C} CXX=${COMPILER_CXX} ./bootstrap
            sudo docker exec ${CONTAINER} env LANG=C.UTF CC=${COMPILER_C} CXX=${COMPILER_CXX} ./configure $@
         elif [ -e autogen.sh ] ; then
            sudo docker exec ${CONTAINER} env LANG=C.UTF CC=${COMPILER_C} CXX=${COMPILER_CXX} ./autogen.sh
         else
            sudo docker exec ${CONTAINER} env LANG=C.UTF CC=${COMPILER_C} CXX=${COMPILER_CXX} ./configure $@
         fi
      else
         echo >&2 "WARNING: No build system detected. Trying to just call \"make\" ..."
      fi

      cores=`sudo docker exec ${CONTAINER} env LANG=C.UTF-8 getconf _NPROCESSORS_ONLN 2>/dev/null || true`
      if [ $cores -gt 1 ] ; then
         MAKEFLAGS="-j${cores}"
      fi
      sudo docker exec ${CONTAINER} env LANG=C.UTF-8 MAKEFLAGS=${MAKEFLAGS} make   # VERBOSE=1

   # ====== pbuilder (Debian/Ubuntu variants) ===============================
   elif [ "${TOOL}" == "pbuilder" ] ; then
      echo "###### Running pbuilder ... ###########################################"
      ci/monitor 60 sudo docker exec ${CONTAINER} env LANG=C.UTF-8 OVERRIDE_SKIP_PACKAGE_SIGNING=1 eatmydata ./build-deb

   # ====== mock (Fedora variants) ==========================================
   elif [ "${TOOL}" == "mock" ] ; then
      echo "###### Running mock ... ###############################################"
      release=`sudo docker exec -t ${CONTAINER} bash -c "LANG=C.UTF-8 ; cat /etc/fedora-release | sed -e \"s/^\(.*\) release \([0-9]*\) (\(.*\))$/\2/g\"" | sed -e "s/[^0-9]//g"`
      arch=`sudo docker exec -t ${CONTAINER} env LANG=C.UTF-8 uname -m | sed -e "s/[^0-9a-zA-Z_+-]//g"`
      ci/monitor 60 sudo docker exec ${CONTAINER} env LANG=C.UTF-8 LD_PRELOAD=/usr/lib64/nosync/nosync.so OVERRIDE_SKIP_PACKAGE_SIGNING=1 ./build-rpm fedora-${release}-${arch}

   # ====== Invalid setting =================================================
   else
      echo >&2 "ERROR: Invalid setting of TOOL=${TOOL}!"
      exit 1
   fi


# ###### MacOS X ############################################################
elif [ "${TRAVIS_OS_NAME}" == "osx" ] ; then

   cmake . $@
   make VERBOSE=1


# ###### Error ##############################################################
else
   echo >&2 "ERROR: Invalid setting of TRAVIS_OS_NAME=${TRAVIS_OS_NAME}, DOCKER=${DOCKER}, QEMU=${QEMU}!"
   exit 1
fi