Skip to content

Commit 9eae868

Browse files
ossrs-aiwinlinvip
authored andcommitted
AI: Build: Improve dependency checking to report all missing dependencies at once. v7.0.105 (#4293)
1 parent 6590871 commit 9eae868

File tree

3 files changed

+80
-127
lines changed

3 files changed

+80
-127
lines changed

trunk/auto/depends.sh

Lines changed: 78 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -48,140 +48,92 @@ if [[ $SRS_OSX == YES ]]; then
4848
echo "Please install brew at https://brew.sh/"; exit $ret;
4949
fi
5050
fi
51-
# Check perl, which is depended by automake for building libopus etc.
52-
perl --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
53-
if [[ $OS_IS_CENTOS == YES ]]; then
54-
echo "Please install perl by:"
55-
echo " yum install -y perl"
56-
elif [[ $OS_IS_UBUNTU == YES ]]; then
57-
echo "Please install perl by:"
58-
echo " apt install -y perl"
59-
else
60-
echo "Please install perl"
61-
fi
62-
exit $ret;
63-
fi
64-
gcc --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
65-
if [[ $OS_IS_CENTOS == YES ]]; then
66-
echo "Please install gcc by:"
67-
echo " yum install -y gcc"
68-
elif [[ $OS_IS_UBUNTU == YES ]]; then
69-
echo "Please install gcc by:"
70-
echo " apt install -y gcc"
71-
else
72-
echo "Please install gcc"
73-
fi
74-
exit $ret;
75-
fi
76-
g++ --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
77-
if [[ $OS_IS_CENTOS == YES ]]; then
78-
echo "Please install g++ by:"
79-
echo " yum install -y gcc-c++"
80-
elif [[ $OS_IS_UBUNTU == YES ]]; then
81-
echo "Please install g++ by:"
82-
echo " apt install -y g++"
83-
else
84-
echo "Please install gcc-c++"
85-
fi
86-
exit $ret;
87-
fi
88-
make --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
89-
if [[ $OS_IS_CENTOS == YES ]]; then
90-
echo "Please install make by:"
91-
echo " yum install -y make"
92-
elif [[ $OS_IS_UBUNTU == YES ]]; then
93-
echo "Please install make by:"
94-
echo " apt install -y make"
95-
else
96-
echo "Please install make"
97-
fi
98-
exit $ret;
99-
fi
100-
patch --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
101-
if [[ $OS_IS_CENTOS == YES ]]; then
102-
echo "Please install patch by:"
103-
echo " yum install -y patch"
104-
elif [[ $OS_IS_UBUNTU == YES ]]; then
105-
echo "Please install patch by:"
106-
echo " apt install -y patch"
107-
else
108-
echo "Please install patch"
109-
fi
110-
exit $ret;
111-
fi
112-
unzip -v >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
113-
if [[ $OS_IS_CENTOS == YES ]]; then
114-
echo "Please install unzip by:"
115-
echo " yum install -y unzip"
116-
elif [[ $OS_IS_UBUNTU == YES ]]; then
117-
echo "Please install unzip by:"
118-
echo " apt install -y unzip"
119-
else
120-
echo "Please install unzip"
121-
fi
122-
exit $ret;
123-
fi
124-
automake --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
125-
if [[ $OS_IS_CENTOS == YES ]]; then
126-
echo "Please install automake by:"
127-
echo " yum install -y automake"
128-
elif [[ $OS_IS_UBUNTU == YES ]]; then
129-
echo "Please install automake by:"
130-
echo " apt install -y automake"
131-
else
132-
echo "Please install automake"
51+
52+
# Arrays to track missing dependencies
53+
MISSING_DEPS=()
54+
MISSING_DEPS_UBUNTU=()
55+
MISSING_DEPS_CENTOS=()
56+
MISSING_DEPS_OSX=()
57+
58+
# Helper function to check if a command exists
59+
check_command() {
60+
local cmd=$1
61+
local cmd_name=$2
62+
local ubuntu_pkg=$3
63+
local centos_pkg=$4
64+
local osx_pkg=$5
65+
66+
$cmd >/dev/null 2>/dev/null
67+
if [[ $? -ne 0 ]]; then
68+
MISSING_DEPS+=("$cmd_name")
69+
if [[ ! -z "$ubuntu_pkg" ]]; then
70+
MISSING_DEPS_UBUNTU+=("$ubuntu_pkg")
71+
fi
72+
if [[ ! -z "$centos_pkg" ]]; then
73+
MISSING_DEPS_CENTOS+=("$centos_pkg")
74+
fi
75+
if [[ ! -z "$osx_pkg" ]]; then
76+
MISSING_DEPS_OSX+=("$osx_pkg")
77+
fi
78+
return 1
13379
fi
134-
exit $ret;
135-
fi
80+
return 0
81+
}
82+
83+
# Check required tools
84+
echo "Checking required tools: perl gcc g++ make patch unzip automake pkg-config which"
85+
check_command "perl --version" "perl" "perl" "perl" "perl"
86+
check_command "gcc --version" "gcc" "gcc" "gcc" "gcc"
87+
check_command "g++ --version" "g++" "g++" "gcc-c++" "gcc"
88+
check_command "make --version" "make" "make" "make" "make"
89+
check_command "patch --version" "patch" "patch" "patch" "gpatch"
90+
check_command "unzip -v" "unzip" "unzip" "unzip" "unzip"
91+
check_command "automake --version" "automake" "automake" "automake" "automake"
92+
check_command "pkg-config --version" "pkg-config" "pkg-config" "pkgconfig" "pkg-config"
93+
check_command "which ls" "which" "which" "which" "which"
94+
95+
# Check optional tools for valgrind
13696
if [[ $SRS_VALGRIND == YES ]]; then
137-
valgrind --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
138-
echo "Please install valgrind"; exit $ret;
139-
fi
97+
check_command "valgrind --version" "valgrind" "valgrind" "valgrind" "valgrind"
14098
if [[ ! -f /usr/include/valgrind/valgrind.h ]]; then
141-
echo "Please install valgrind-dev"; exit $ret;
99+
MISSING_DEPS+=("valgrind-dev")
100+
MISSING_DEPS_UBUNTU+=("valgrind")
101+
MISSING_DEPS_CENTOS+=("valgrind-devel")
102+
MISSING_DEPS_OSX+=("valgrind")
142103
fi
143104
fi
144-
# Check tclsh, which is depended by SRT.
105+
106+
# Check optional tools for SRT
145107
if [[ $SRS_SRT == YES ]]; then
146-
tclsh <<< "exit" >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
147-
if [[ $OS_IS_CENTOS == YES ]]; then
148-
echo "Please install tclsh by:"
149-
echo " yum install -y tcl"
150-
elif [[ $OS_IS_UBUNTU == YES ]]; then
151-
echo "Please install tclsh by:"
152-
echo " apt install -y tclsh"
153-
else
154-
echo "Please install tclsh"
155-
fi
156-
exit $ret;
157-
fi
158-
cmake --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
159-
if [[ $OS_IS_CENTOS == YES ]]; then
160-
echo "Please install cmake by:"
161-
echo " yum install -y cmake"
162-
elif [[ $OS_IS_UBUNTU == YES ]]; then
163-
echo "Please install cmake by:"
164-
echo " apt install -y cmake"
165-
else
166-
echo "Please install cmake"
167-
fi
168-
exit $ret;
169-
fi
170-
fi
171-
pkg-config --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
172-
echo "Please install pkg-config"; exit $ret;
173-
fi
174-
which ls >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
175-
if [[ $OS_IS_CENTOS == YES ]]; then
176-
echo "Please install which by:"
177-
echo " yum install -y which"
178-
elif [[ $OS_IS_UBUNTU == YES ]]; then
179-
echo "Please install which by:"
180-
echo " apt install -y which"
108+
echo "Checking optional tools for SRT: tclsh cmake"
109+
# Special check for tclsh
110+
tclsh <<< "exit" >/dev/null 2>&1
111+
if [[ $? -ne 0 ]]; then
112+
MISSING_DEPS+=("tclsh")
113+
MISSING_DEPS_UBUNTU+=("tclsh")
114+
MISSING_DEPS_CENTOS+=("tcl")
115+
MISSING_DEPS_OSX+=("tcl-tk")
116+
fi
117+
check_command "cmake --version" "cmake" "cmake" "cmake" "cmake"
118+
fi
119+
120+
# Report all missing dependencies at once
121+
if [[ ${#MISSING_DEPS[@]} -gt 0 ]]; then
122+
echo ""
123+
echo -e "Missing dependencies (${#MISSING_DEPS[@]}): ${RED}${MISSING_DEPS[@]}${BLACK}"
124+
125+
if [[ $OS_IS_UBUNTU == YES && ${#MISSING_DEPS_UBUNTU[@]} -gt 0 ]]; then
126+
echo -e "Please install missing dependencies by: ${GREEN}sudo apt install -y ${MISSING_DEPS_UBUNTU[@]}${BLACK}"
127+
elif [[ $OS_IS_CENTOS == YES && ${#MISSING_DEPS_CENTOS[@]} -gt 0 ]]; then
128+
echo -e "Please install missing dependencies by: ${GREEN}sudo yum install -y ${MISSING_DEPS_CENTOS[@]}${BLACK}"
129+
elif [[ $SRS_OSX == YES && ${#MISSING_DEPS_OSX[@]} -gt 0 ]]; then
130+
echo -e "Please install missing dependencies by: ${GREEN}brew install ${MISSING_DEPS_OSX[@]}${BLACK}"
181131
else
182-
echo "Please install which"
132+
echo "Please install the missing dependencies above."
183133
fi
184-
exit $ret;
134+
135+
echo "Please install the missing dependencies above and rerun configure."
136+
exit 1
185137
fi
186138

187139
#####################################################################################

trunk/doc/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ The changelog for SRS.
77
<a name="v7-changes"></a>
88

99
## SRS 7.0 Changelog
10+
* v7.0, 2025-10-26, Build: Improve dependency checking to report all missing dependencies at once. v7.0.105 (#4293)
1011
* v7.0, 2025-10-26, HLS: Support hls_master_m3u8_path_relative for reverse proxy compatibility. v7.0.104 (#4338)
1112
* v7.0, 2025-10-25, API: Remove minimum limit of 10 for count parameter in /api/v1/streams and /api/v1/clients. v7.0.103 (#4358)
1213
* v7.0, 2025-10-22, AI: Only support AAC/MP3/Opus audio codec. v7.0.102 (#4516)

trunk/src/core/srs_core_version7.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99

1010
#define VERSION_MAJOR 7
1111
#define VERSION_MINOR 0
12-
#define VERSION_REVISION 104
12+
#define VERSION_REVISION 105
1313

1414
#endif

0 commit comments

Comments
 (0)