Skip to content

Commit cc78f4c

Browse files
committed
Improve library support when building from source
1 parent 7662a9b commit cc78f4c

3 files changed

Lines changed: 64 additions & 3 deletions

File tree

src/configs/darwin_libs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
amqp=rabbitmq-c
2+
decimal=mpdecimal
3+
ev=libev
4+
event=libevent
5+
geoip=geoip
6+
gmagick=graphicsmagick
7+
gnupg=gpgme
8+
grpc=grpc protobuf
9+
imagick=imagemagick
10+
memcached=libmemcached libevent
11+
protobuf=protobuf
12+
rdkafka=librdkafka
13+
snappy=snappy
14+
sodium=libsodium
15+
ssh2=libssh2
16+
uv=libuv
17+
uuid=util-linux
18+
vips=vips
19+
yaz=yaz
20+
yaml=libyaml
21+
zstd=zstd
22+
zmq=zeromq

src/configs/linux_libs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
amqp=librabbitmq-dev
2+
decimal=libmpdec-dev
3+
ev=libev-dev
4+
event=libevent-dev
5+
geoip=libgeoip-dev
6+
gmagick=graphicsmagick-libmagick-dev-compat
7+
gnupg=libgpgme-dev
8+
grpc=libgrpc-dev libprotobuf-dev protobuf-compiler
9+
imagick=libmagickwand-dev libmagickcore-dev
10+
memcached=libmemcached-dev libevent-dev
11+
protobuf=libprotobuf-dev protobuf-compiler
12+
rdkafka=librdkafka-dev
13+
snappy=libsnappy-dev
14+
sodium=libsodium-dev
15+
ssh2=libssh2-1-dev
16+
uv=libuv1-dev
17+
uuid=uuid-dev
18+
vips=libvips-dev
19+
yaz=libyaz-dev
20+
yaml=libyaml-dev
21+
zstd=libzstd-dev
22+
zmq=libzmq3-dev

src/scripts/extensions/source.sh

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
os="$(uname -s)"
2+
os_lower=$(echo "$os" | tr '[:upper:]' '[:lower:]')
3+
os_capital=$(echo "$os" | tr '[:lower:]' '[:upper:]')
4+
15
# Function to parse extension environment variables
26
parse_args() {
37
local extension=${1%-*}
@@ -36,7 +40,7 @@ add_lib_log() {
3640
# Function to check if a library is installed
3741
check_lib() {
3842
local lib=$1
39-
if [ "$(uname -s)" = "Linux" ]; then
43+
if [ "$os" = "Linux" ]; then
4044
[ "x$(dpkg -s "$lib" 2>/dev/null | grep Status)" != "x" ]
4145
else
4246
[ "x$(find "${brew_prefix:?}"/Cellar -maxdepth 1 -name "$lib")" != "x" ]
@@ -68,14 +72,27 @@ add_darwin_libs() {
6872
add_libs() {
6973
local all_libs=("$@")
7074
for lib in "${all_libs[@]}"; do
71-
if [ "$(uname -s)" = "Linux" ]; then
75+
if [ "$os" = "Linux" ]; then
7276
add_linux_libs "$lib"
7377
else
7478
add_darwin_libs "$lib"
7579
fi
7680
done
7781
}
7882

83+
# Function to get required libraries for an extension
84+
get_libraries() {
85+
local extension=$1
86+
{
87+
parse_args "$extension" LIBS
88+
parse_args "$extension" "$os_capital"_LIBS
89+
[ -r "${src:?}/configs/${os_lower}_libs" ] && \
90+
grep -E "^[[:space:]]*${extension}[[:space:]]*=" "${src:?}/configs/${os_lower}_libs" | \
91+
head -n1 | \
92+
sed -E "s/^[[:space:]]*${extension}[[:space:]]*=[[:space:]]*//"
93+
} | xargs -n 1 2>/dev/null | sort -u | xargs 2>/dev/null
94+
}
95+
7996
# Function to run command in a group
8097
run_group() {
8198
local command=$1
@@ -137,7 +154,7 @@ add_extension_from_source() {
137154
local fetch=${7:-clone}
138155
slug="$extension-$release"
139156
source="$url/$org/$repo"
140-
libraries="$(parse_args "$extension" LIBS) $(parse_args "$extension" "$(uname -s)"_LIBS)"
157+
libraries="$(get_libraries "$extension")"
141158
opts="$(parse_args "$extension" CONFIGURE_OPTS)"
142159
prefix_opts="$(parse_args "$extension" CONFIGURE_PREFIX_OPTS)"
143160
suffix_opts="$(parse_args "$extension" CONFIGURE_SUFFIX_OPTS)"

0 commit comments

Comments
 (0)