diff --git a/src/configs/darwin_libs b/src/configs/darwin_libs new file mode 100644 index 00000000..2a66493e --- /dev/null +++ b/src/configs/darwin_libs @@ -0,0 +1,22 @@ +amqp=rabbitmq-c +decimal=mpdecimal +ev=libev +event=libevent +geoip=geoip +gmagick=graphicsmagick +gnupg=gpgme +grpc=grpc protobuf +imagick=imagemagick +memcached=libmemcached libevent +protobuf=protobuf +rdkafka=librdkafka +snappy=snappy +sodium=libsodium +ssh2=libssh2 +uv=libuv +uuid=util-linux +vips=vips +yaz=yaz +yaml=libyaml +zstd=zstd +zmq=zeromq \ No newline at end of file diff --git a/src/configs/linux_libs b/src/configs/linux_libs new file mode 100644 index 00000000..5d59557e --- /dev/null +++ b/src/configs/linux_libs @@ -0,0 +1,22 @@ +amqp=librabbitmq-dev +decimal=libmpdec-dev +ev=libev-dev +event=libevent-dev +geoip=libgeoip-dev +gmagick=graphicsmagick-libmagick-dev-compat +gnupg=libgpgme-dev +grpc=libgrpc-dev libprotobuf-dev protobuf-compiler +imagick=libmagickwand-dev libmagickcore-dev +memcached=libmemcached-dev libevent-dev +protobuf=libprotobuf-dev protobuf-compiler +rdkafka=librdkafka-dev +snappy=libsnappy-dev +sodium=libsodium-dev +ssh2=libssh2-1-dev +uv=libuv1-dev +uuid=uuid-dev +vips=libvips-dev +yaz=libyaz-dev +yaml=libyaml-dev +zstd=libzstd-dev +zmq=libzmq3-dev \ No newline at end of file diff --git a/src/scripts/extensions/source.sh b/src/scripts/extensions/source.sh index 66443113..803c9e38 100644 --- a/src/scripts/extensions/source.sh +++ b/src/scripts/extensions/source.sh @@ -1,3 +1,7 @@ +os="$(uname -s)" +os_lower=$(echo "$os" | tr '[:upper:]' '[:lower:]') +os_capital=$(echo "$os" | tr '[:lower:]' '[:upper:]') + # Function to parse extension environment variables parse_args() { local extension=${1%-*} @@ -36,7 +40,7 @@ add_lib_log() { # Function to check if a library is installed check_lib() { local lib=$1 - if [ "$(uname -s)" = "Linux" ]; then + if [ "$os" = "Linux" ]; then [ "x$(dpkg -s "$lib" 2>/dev/null | grep Status)" != "x" ] else [ "x$(find "${brew_prefix:?}"/Cellar -maxdepth 1 -name "$lib")" != "x" ] @@ -68,7 +72,7 @@ add_darwin_libs() { add_libs() { local all_libs=("$@") for lib in "${all_libs[@]}"; do - if [ "$(uname -s)" = "Linux" ]; then + if [ "$os" = "Linux" ]; then add_linux_libs "$lib" else add_darwin_libs "$lib" @@ -76,6 +80,19 @@ add_libs() { done } +# Function to get required libraries for an extension +get_libraries() { + local extension=$1 + { + parse_args "$extension" LIBS + parse_args "$extension" "$os_capital"_LIBS + [ -r "${src:?}/configs/${os_lower}_libs" ] && \ + grep -E "^[[:space:]]*${extension}[[:space:]]*=" "${src:?}/configs/${os_lower}_libs" | \ + head -n1 | \ + sed -E "s/^[[:space:]]*${extension}[[:space:]]*=[[:space:]]*//" + } | xargs -n 1 2>/dev/null | sort -u | xargs 2>/dev/null +} + # Function to run command in a group run_group() { local command=$1 @@ -137,7 +154,7 @@ add_extension_from_source() { local fetch=${7:-clone} slug="$extension-$release" source="$url/$org/$repo" - libraries="$(parse_args "$extension" LIBS) $(parse_args "$extension" "$(uname -s)"_LIBS)" + libraries="$(get_libraries "$extension")" opts="$(parse_args "$extension" CONFIGURE_OPTS)" prefix_opts="$(parse_args "$extension" CONFIGURE_PREFIX_OPTS)" suffix_opts="$(parse_args "$extension" CONFIGURE_SUFFIX_OPTS)"