]> granicus.if.org Git - strace/blob - travis-install.sh
Implement PTRACE_SECCOMP_GET_METADATA ptrace request decoding
[strace] / travis-install.sh
1 #!/bin/sh -ex
2
3 type sudo >/dev/null 2>&1 && sudo=sudo || sudo=
4 common_packages='autoconf automake file gawk gcc-multilib git gzip make xz-utils'
5
6 updated=
7 apt_get_install()
8 {
9         [ -n "$updated" ] || {
10                 $sudo apt-get -qq update
11                 updated=1
12         }
13         $sudo apt-get -qq --no-install-suggests --no-install-recommends \
14                 install -y "$@"
15 }
16
17 case "$KHEADERS" in
18         */*)
19                 git clone --depth=1 https://github.com/"$KHEADERS" kernel
20                 $sudo make -C kernel headers_install INSTALL_HDR_PATH=/opt/kernel
21                 $sudo rm -rf kernel
22                 KHEADERS_INC=/opt/kernel/include
23                 ;;
24         *)
25                 KHEADERS_INC=/usr/include
26                 ;;
27 esac
28
29 case "$CC" in
30         gcc)
31                 apt_get_install $common_packages
32                 ;;
33         gcc-*)
34                 $sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
35                 apt_get_install $common_packages "$CC"-multilib
36                 ;;
37         clang*)
38                 apt_get_install $common_packages "$CC"
39                 ;;
40         musl-gcc)
41                 apt_get_install $common_packages ca-certificates
42                 git clone --depth=1 https://github.com/strace/musl
43                 cd musl
44                         CC=gcc
45                         build=
46                         case "${TARGET-}" in
47                                 x32)
48                                         CC="$CC -mx32"
49                                         ;;
50                                 x86)
51                                         CC="$CC -m32"
52                                         build='--build=i686-pc-linux-gnu --target=i686-pc-linux-gnu'
53                                         ;;
54                         esac
55                         ./configure --prefix=/opt/musl --exec-prefix=/usr ${build}
56                         make
57                         $sudo make install
58                 cd -
59                 rm -rf musl
60                 $sudo ln -s \
61                         $KHEADERS_INC/asm* \
62                         $KHEADERS_INC/linux \
63                         $KHEADERS_INC/mtd \
64                         /opt/musl/include/
65                 ;;
66 esac
67
68 case "${CHECK-}" in
69         coverage)
70                 apt_get_install lcov
71                 pip install --user codecov
72                 ;;
73         valgrind)
74                 apt_get_install valgrind
75                 ;;
76 esac