File: build.sh

package info (click to toggle)
portsentry 2.0.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,396 kB
  • sloc: ansic: 6,473; sh: 916; perl: 18; makefile: 5
file content (101 lines) | stat: -rwxr-xr-x 3,618 bytes parent folder | download
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
#!/bin/sh

ACTION=$1

if [ "$ACTION" = "clean" ]; then
  rm -rf debug release && \
  rm -f portsentry.blocked.* && \
  rm -f portsentry.history && \
  rm -f portsentry*.tar.xz
  rm -f docs/portsentry.8
  rm -f docs/portsentry.conf.8
elif [ "$ACTION" = "debug" ]; then
  cmake -B debug -D CMAKE_BUILD_TYPE=Debug -D CMAKE_INSTALL_PREFIX=/ $CMAKE_OPTS
  cmake --build debug -v
elif [ "$ACTION" = "release" ]; then
  cmake -B release -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/ $CMAKE_OPTS
  cmake --build release -v
elif [ "$ACTION" = "sast" ]; then
  rm -rf /tmp/portsentry
  rsync -avz ../portsentry /tmp/
  codeql database create /tmp/portsentry/codeqldb --language=cpp --source-root=/tmp/portsentry
  codeql database analyze /tmp/portsentry/codeqldb --format=csv --output=/tmp/portsentry/codeqlout.csv
  echo "========== CodeQL Results Start =========="
  cat /tmp/portsentry/codeqlout.csv
  echo "========== CodeQL Results End =========="

  semgrep scan --config=auto

  exit 0
elif [ "$ACTION" = "build_fuzz" ]; then
  export CC=/usr/bin/clang
  $0 clean && \
  cmake -B debug -D CMAKE_BUILD_TYPE=Debug -D BUILD_FUZZER=ON $CMAKE_OPTS && \
  cmake --build debug -v
elif [ "$ACTION" = "run_fuzz" ]; then
  total_time=60
  [ -n "$2" ] && total_time=$2
  find debug -maxdepth 1 -name "fuzz_*" | while read f
  do
    echo "Running $f"
    ./$f -max_total_time=$total_time tests/fuzzing/corpus_$(basename $f)
  done
elif [ "$ACTION" = "autobuild" ]; then
  while [ 1 ]; do
    inotifywait -e modify src/[a-zA-Z]*.c
    ./build.sh debug && \
    ./build.sh release && \
    ./build.sh sast
    sleep 5
  done
elif [ "$ACTION" = "docker" ]; then
  docker buildx build -t portsentry:unstable -f docker/Dockerfile --platform=linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6,linux/i386,linux/riscv64 .
elif [ "$ACTION" = "docker_export" ]; then
  BUILD_DIR=/tmp/portsentry-build
  rm -rf $BUILD_DIR
  docker buildx build -t export -f docker/Dockerfile --target export --platform=linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6,linux/i386,linux/riscv64 --output type=local,dest=$BUILD_DIR .

  find /tmp/portsentry-build -mindepth 2 -type f -regex ".*portsentry-[0-9\.]*-Linux.*" | while read f; do
    new_name=$(echo $f |sed "s/-Linux\./-$(basename $(dirname $f))\./")
    mv -v "$f" "$new_name"
  done
elif [ "$ACTION" = "build_test" ]; then
  ./build.sh clean && \
  CMAKE_OPTS="-D BUILD_TESTS=ON" ./build.sh debug
elif [ "$ACTION" = "run_test" ]; then
  if [ -d "debug" ]; then
    ctest --test-dir debug
  else
    echo "No debug build directory found"
    exit 1
  fi
elif [ "$ACTION" = "test_all" ]; then
  ./build.sh clean && \
  CMAKE_OPTS="-D USE_PCAP=OFF" ./build.sh debug && \
  CMAKE_OPTS="-D USE_PCAP=OFF" ./build.sh release && \
  ./build.sh clean && \
  CMAKE_OPTS="-D BUILD_TESTS=ON" ./build.sh debug && \
  CMAKE_OPTS="-D BUILD_TESTS=ON" ./build.sh release && \
  ctest --test-dir debug && \
  ctest --test-dir release
  (command -v docker >/dev/null 2>&1 && ./build.sh docker)
  cd system_test
  ./run_all_tests.sh
else
  echo "Usage: $0 <command>"
  echo "Commands:"
  echo "  clean         - Remove all build files/caches"
  echo "  debug         - Build debug version"
  echo "  release       - Build release version"
  echo
  echo "  sast          - Run static analysis tools"
  echo "  build_test    - Build unit test targets"
  echo "  run_test      - Run unit test targets"
  echo
  echo "  build_fuzz    - Build fuzzing targets"
  echo "  run_fuzz      - Run fuzzing targets"
  echo "  docker        - Build docker image"
  echo
  echo "  doc           - Build man pages"
  exit 0
fi