Skip to content

Commit 23f4d8a

Browse files
committed
Improve argument handling in install_thirdparty.sh. Add support to select individual third party packages for install
1 parent 803be42 commit 23f4d8a

File tree

5 files changed

+378
-288
lines changed

5 files changed

+378
-288
lines changed

.devcontainer/Dockerfile.dev

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ RUN apt update && apt install -y wget \
1919
libclang-dev \
2020
clang-tidy \
2121
shellcheck \
22+
sudo \
2223
cmake
2324

2425
RUN cd /opt/ci && bash setup_ci_environment.sh
@@ -43,7 +44,7 @@ RUN apt install -y npm && npm install -g [email protected]
4344
USER devuser
4445

4546
WORKDIR /workspaces/opentelemetry-cpp
46-
RUN cd /opt && bash ci/install_thirdparty.sh /home/devuser/third-party/install-stable install/cmake/third_party_stable
47+
RUN cd /opt && bash ci/install_thirdparty.sh --install-dir /home/devuser/third-party/install-stable --tags-file install/cmake/third_party_stable
4748
ENV CMAKE_PREFIX_PATH=/home/devuser/third-party/install-stable
4849

4950
ENTRYPOINT []

.github/workflows/ci.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
# sudo -E ./ci/setup_ci_environment.sh
3030
# - name: install dependencies
3131
# run: |
32-
# sudo -E ./ci/install_thirdparty.sh /usr/local third_party_release
32+
# sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release
3333

3434
cmake_test:
3535
name: CMake test (prometheus, elasticsearch, zipkin)
@@ -99,7 +99,7 @@ jobs:
9999
sudo -E ./ci/setup_ci_environment.sh
100100
- name: install dependencies
101101
run: |
102-
sudo -E ./ci/install_thirdparty.sh /usr/local third_party_release
102+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release
103103
- name: run cmake gcc (maintainer mode, sync)
104104
run: |
105105
./ci/do_ci.sh cmake.maintainer.sync.test
@@ -133,7 +133,7 @@ jobs:
133133
sudo -E ./ci/setup_ci_environment.sh
134134
- name: install dependencies
135135
run: |
136-
sudo -E ./ci/install_thirdparty.sh /usr/local third_party_release
136+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release
137137
- name: run cmake gcc (maintainer mode, async)
138138
run: |
139139
./ci/do_ci.sh cmake.maintainer.async.test
@@ -167,7 +167,7 @@ jobs:
167167
sudo -E ./ci/setup_ci_environment.sh
168168
- name: install dependencies
169169
run: |
170-
sudo -E ./ci/install_thirdparty.sh /usr/local third_party_release
170+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release
171171
- name: run cmake clang (maintainer mode, sync)
172172
run: |
173173
./ci/do_ci.sh cmake.maintainer.sync.test
@@ -201,7 +201,7 @@ jobs:
201201
sudo -E ./ci/setup_ci_environment.sh
202202
- name: install dependencies
203203
run: |
204-
sudo -E ./ci/install_thirdparty.sh /usr/local third_party_release
204+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release
205205
- name: run cmake clang (maintainer mode, async)
206206
run: |
207207
./ci/do_ci.sh cmake.maintainer.async.test
@@ -235,7 +235,7 @@ jobs:
235235
sudo -E ./ci/setup_ci_environment.sh
236236
- name: install dependencies
237237
run: |
238-
sudo -E ./ci/install_thirdparty.sh /usr/local third_party_release
238+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release
239239
- name: run cmake clang (maintainer mode, abiv2)
240240
run: |
241241
./ci/do_ci.sh cmake.maintainer.abiv2.test
@@ -531,7 +531,7 @@ jobs:
531531
sudo -E ./ci/setup_ci_environment.sh
532532
- name: install dependencies
533533
run: |
534-
sudo -E ./ci/install_thirdparty.sh /usr/local third_party_release
534+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release
535535
- name: run otlp exporter tests
536536
run: |
537537
./ci/do_ci.sh cmake.exporter.otprotocol.test
@@ -563,7 +563,7 @@ jobs:
563563
sudo -E ./ci/setup_ci_environment.sh
564564
- name: install dependencies
565565
run: |
566-
sudo -E ./ci/install_thirdparty.sh /usr/local install/cmake/third_party_stable
566+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file install/cmake/third_party_stable
567567
- name: run otlp exporter tests
568568
run: |
569569
./ci/do_ci.sh cmake.exporter.otprotocol.test
@@ -585,7 +585,7 @@ jobs:
585585
sudo -E ./ci/setup_ci_environment.sh
586586
- name: install dependencies
587587
run: |
588-
sudo -E ./ci/install_thirdparty.sh /usr/local third_party_release
588+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release
589589
- name: run otlp exporter tests
590590
run: |
591591
./ci/do_ci.sh cmake.do_not_install.test
@@ -607,7 +607,7 @@ jobs:
607607
sudo -E ./ci/setup_ci_environment.sh
608608
- name: install dependencies
609609
run: |
610-
sudo -E ./ci/install_thirdparty.sh /usr/local third_party_release
610+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release
611611
- name: run otlp exporter tests
612612
run: |
613613
./ci/do_ci.sh cmake.exporter.otprotocol.shared_libs.with_static_grpc.test

.github/workflows/cmake_install.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ jobs:
7373
- name: Setup CI Environment
7474
run: |
7575
sudo -E ./ci/setup_ci_environment.sh
76-
sudo -E ./ci/setup_googletest.sh
7776
- name: Install Dependencies
7877
run: |
7978
sudo -E apt-get update
80-
sudo -E apt-get install -y libbenchmark-dev libabsl-dev libcurl4-openssl-dev zlib1g-dev nlohmann-json3-dev libprotobuf-dev libgrpc++-dev protobuf-compiler protobuf-compiler-grpc
79+
sudo -E apt-get install -y libabsl-dev libcurl4-openssl-dev zlib1g-dev nlohmann-json3-dev libprotobuf-dev libgrpc++-dev protobuf-compiler protobuf-compiler-grpc
80+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release --packages "googletest;benchmark"
8181
- name: Run Tests (static libs)
8282
env:
8383
BUILD_SHARED_LIBS: 'OFF'
@@ -107,7 +107,7 @@ jobs:
107107
sudo -E ./ci/setup_ci_environment.sh
108108
- name: Install Dependencies
109109
run: |
110-
sudo -E ./ci/install_thirdparty.sh /usr/local install/cmake/third_party_latest
110+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file install/cmake/third_party_latest
111111
- name: Run Tests (static libs)
112112
env:
113113
BUILD_SHARED_LIBS: 'OFF'
@@ -133,7 +133,7 @@ jobs:
133133
sudo -E ./ci/setup_ci_environment.sh
134134
- name: Install Dependencies
135135
run: |
136-
sudo -E ./ci/install_thirdparty.sh /usr/local install/cmake/third_party_stable
136+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file install/cmake/third_party_stable
137137
- name: Run Tests (static libs)
138138
env:
139139
BUILD_SHARED_LIBS: 'OFF'
@@ -167,7 +167,7 @@ jobs:
167167
sudo -E ./ci/setup_cmake.sh
168168
- name: Install Dependencies
169169
run: |
170-
sudo -E ./ci/install_thirdparty.sh /usr/local install/cmake/third_party_minimum
170+
sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file install/cmake/third_party_minimum
171171
- name: Run Tests (static libs)
172172
env:
173173
BUILD_SHARED_LIBS: 'OFF'

ci/install_thirdparty.sh

Lines changed: 70 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,91 @@
55

66
set -e
77

8-
# Usage ./install_thirdparty.sh <install-path> <thirdparty-tags-file>
98
usage() {
10-
echo "Usage: $0 <install-path> <thirdparty-tags-file>"
11-
echo " install-path: Path where third-party libraries will be installed"
12-
echo " thirdparty-tags-file: Optional file containing tags for third-party libraries (default: opentelemetry-cpp/third_party_release)"
13-
exit 1
9+
echo "Usage: $0 --install-dir <path> [--tags-file <file>] [--packages \"<pkg1>;<pkg2>\"]"
10+
echo " --install-dir <path> Path where third-party packages will be installed (required)"
11+
echo " --tags-file <file> File containing tags for third-party packages (optional)"
12+
echo " --packages \"<pkg1>;<pkg2>;...\" Semicolon-separated list of packages to build (optional). Default installs all third-party packages."
13+
echo " -h, --help Show this help message"
1414
}
1515

16-
THRIDPARTY_BUILD_DIR=$HOME/third-party-build
17-
THIRDPARTY_TAGS_FILE=''
16+
THIRDPARTY_TAGS_FILE=""
17+
THIRDPARTY_PACKAGES=""
1818
SRC_DIR="$(pwd)"
19+
THIRDPARTY_INSTALL_DIR=""
20+
21+
while [[ $# -gt 0 ]]; do
22+
case $1 in
23+
--install-dir)
24+
if [ -z "$2" ] || [[ "$2" == --* ]]; then
25+
echo "Error: --install-dir requires a value" >&2
26+
usage
27+
exit 1
28+
fi
29+
THIRDPARTY_INSTALL_DIR="$2"
30+
shift 2
31+
;;
32+
--tags-file)
33+
if [ -z "$2" ] || [[ "$2" == --* ]]; then
34+
echo "Error: --tags-file requires a value" >&2
35+
usage
36+
exit 1
37+
fi
38+
THIRDPARTY_TAGS_FILE="$2"
39+
shift 2
40+
;;
41+
--packages)
42+
if [ -z "$2" ] || [[ "$2" == --* ]]; then
43+
echo "Error: --packages requires a value" >&2
44+
usage
45+
exit 1
46+
fi
47+
THIRDPARTY_PACKAGES="$2"
48+
shift 2
49+
;;
50+
-h|--help)
51+
usage
52+
exit 0
53+
;;
54+
*)
55+
echo "Unknown option: $1" >&2
56+
usage
57+
exit 1
58+
;;
59+
esac
60+
done
1961

20-
if [ $# -eq 0 ] || [ $# -gt 2 ] || [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
62+
if [ -z "${THIRDPARTY_INSTALL_DIR}" ]; then
63+
echo "Error: --install-dir is a required argument." >&2
2164
usage
65+
exit 1
2266
fi
2367

24-
if [ $# -ge 1 ]; then
25-
THIRDPARTY_INSTALL_DIR="$1"
68+
if [ -z "${CXX_STANDARD}" ]; then
69+
CXX_STANDARD=14
2670
fi
2771

28-
if [ $# -eq 2 ]; then
29-
THIRDPARTY_TAGS_FILE="$2"
30-
fi
72+
THIRDPARTY_BUILD_DIR="/tmp/otel-cpp-third-party-build"
3173

32-
if [ ! -f "${SRC_DIR}/install/cmake/CMakeLists.txt" ]; then
33-
echo "Error: ${SRC_DIR}/install/cmake/CMakeLists.txt not found"
34-
echo "Please run this script from the root of the opentelemetry-cpp repository"
35-
usage
74+
if [ -d "${THIRDPARTY_BUILD_DIR}" ]; then
75+
rm -rf "${THIRDPARTY_BUILD_DIR}"
3676
fi
3777

38-
mkdir -p "${THRIDPARTY_BUILD_DIR}"
39-
cd "${THRIDPARTY_BUILD_DIR}"
40-
rm -rf ./*
41-
42-
cmake -S "${SRC_DIR}"/install/cmake -B . \
43-
-DCMAKE_INSTALL_PREFIX="${THIRDPARTY_INSTALL_DIR}" \
44-
-DCMAKE_CXX_STANDARD="$CXX_STANDARD" \
45-
-DOTELCPP_THIRDPARTY_FILE="${THIRDPARTY_TAGS_FILE}" \
46-
-DOTELCPP_PROTO_PATH="${OTELCPP_PROTO_PATH}"
78+
cmake -S "${SRC_DIR}/install/cmake" -B "${THIRDPARTY_BUILD_DIR}" \
79+
"-DCMAKE_INSTALL_PREFIX=${THIRDPARTY_INSTALL_DIR}" \
80+
"-DCMAKE_CXX_STANDARD=${CXX_STANDARD}" \
81+
"-DOTELCPP_THIRDPARTY_TAGS_FILE=${THIRDPARTY_TAGS_FILE}" \
82+
"-DOTELCPP_PROTO_PATH=${OTELCPP_PROTO_PATH}" \
83+
"-DOTELCPP_THIRDPARTY_INSTALL_LIST=${THIRDPARTY_PACKAGES}"
4784

48-
make -j"$(nproc)"
85+
cmake --build "${THIRDPARTY_BUILD_DIR}" --clean-first -j"$(nproc)"
4986

5087
if [ "${THIRDPARTY_INSTALL_DIR}" = "/usr/local" ]; then
5188
ldconfig
5289
fi
90+
91+
echo "Third-party packages installed successfully."
92+
echo "-- THIRDPARTY_INSTALL_DIR: ${THIRDPARTY_INSTALL_DIR}"
93+
echo "-- THIRDPARTY_TAGS_FILE: ${THIRDPARTY_TAGS_FILE}"
94+
echo "-- THIRDPARTY_PACKAGES: ${THIRDPARTY_PACKAGES:-all}"
95+
echo "-- CXX_STANDARD: ${CXX_STANDARD}"

0 commit comments

Comments
 (0)