Skip to content

Commit

Permalink
Add jemalloc as a dependency if --with-jemalloc is passed in (#349).
Browse files Browse the repository at this point in the history
  • Loading branch information
postmodern committed Jan 31, 2025
1 parent a9fe668 commit 4b5fe23
Show file tree
Hide file tree
Showing 2 changed files with 139 additions and 0 deletions.
20 changes: 20 additions & 0 deletions share/ruby-install/ruby/dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,23 @@ case "$package_manager" in
brew) ruby_dependencies+=("openssl@${openssl_version}") ;;
port) ruby_dependencies+=("openssl${openssl_version/./}") ;;
esac

#
# Install libjemalloc and C header files for --with-jemalloc support.
#
if [[ " ${configure_opts[*]} " == *" --with-jemalloc "* ]]; then
case "$package_manager" in
apt)
ruby_dependencies+=(libjemalloc-dev)
;;
dnf|yum|port|xbps)
ruby_dependencies+=(jemalloc-devel)
;;
zypper)
ruby_dependencies+=(libjemalloc2)
;;
*)
ruby_dependencies+=(jemalloc)
;;
esac
fi
119 changes: 119 additions & 0 deletions test/ruby-tests/dependencies_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,125 @@ function test_package_manager_is_port_and_ruby_version_is_greater_equal_to_3_1_0
package_manager="$original_package_manager"
}

function test_ruby_dependencies_when_with_jemalloc_is_given_and_package_manager_is_apt()
{
local original_package_manager="$package_manager"
local original_configure_opts=("${configure_opts[@]}")

package_manager="apt"
configure_opts=(--with-jemalloc)

source "$ruby_install_dir/$ruby/dependencies.sh"

assertTrue "did not contain libjemalloc-dev" \
'[[ " ${ruby_dependencies[*]} " == *" libjemalloc-dev "* ]]'

package_manager="$original_package_manager"
configure_opts=("${original_configure_opts[@]}")
}

function test_ruby_dependencies_when_with_jemalloc_is_given_and_package_manager_is_dnf()
{
local original_package_manager="$package_manager"
local original_configure_opts=("${configure_opts[@]}")

package_manager="dnf"
configure_opts=(--with-jemalloc)

source "$ruby_install_dir/$ruby/dependencies.sh"

assertTrue "did not contain jemalloc-devel" \
'[[ " ${ruby_dependencies[*]} " == *" jemalloc-devel "* ]]'

package_manager="$original_package_manager"
configure_opts=("${original_configure_opts[@]}")
}

function test_ruby_dependencies_when_with_jemalloc_is_given_and_package_manager_is_yum()
{
local original_package_manager="$package_manager"
local original_configure_opts=("${configure_opts[@]}")

package_manager="yum"
configure_opts=(--with-jemalloc)

source "$ruby_install_dir/$ruby/dependencies.sh"

assertTrue "did not contain jemalloc-devel" \
'[[ " ${ruby_dependencies[*]} " == *" jemalloc-devel "* ]]'

package_manager="$original_package_manager"
configure_opts=("${original_configure_opts[@]}")
}

function test_ruby_dependencies_when_with_jemalloc_is_given_and_package_manager_is_port()
{
local original_package_manager="$package_manager"
local original_configure_opts=("${configure_opts[@]}")

package_manager="port"
configure_opts=(--with-jemalloc)

source "$ruby_install_dir/$ruby/dependencies.sh"

assertTrue "did not contain jemalloc-devel" \
'[[ " ${ruby_dependencies[*]} " == *" jemalloc-devel "* ]]'

package_manager="$original_package_manager"
configure_opts=("${original_configure_opts[@]}")
}

function test_ruby_dependencies_when_with_jemalloc_is_given_and_package_manager_is_xbps()
{
local original_package_manager="$package_manager"
local original_configure_opts=("${configure_opts[@]}")

package_manager="xbps"
configure_opts=(--with-jemalloc)

source "$ruby_install_dir/$ruby/dependencies.sh"

assertTrue "did not contain jemalloc-devel" \
'[[ " ${ruby_dependencies[*]} " == *" jemalloc-devel "* ]]'

package_manager="$original_package_manager"
configure_opts=("${original_configure_opts[@]}")
}

function test_ruby_dependencies_when_with_jemalloc_is_given_and_package_manager_is_zypper()
{
local original_package_manager="$package_manager"
local original_configure_opts=("${configure_opts[@]}")

package_manager="zypper"
configure_opts=(--with-jemalloc)

source "$ruby_install_dir/$ruby/dependencies.sh"

assertTrue "did not contain libjemalloc2" \
'[[ " ${ruby_dependencies[*]} " == *" libjemalloc2"* ]]'

package_manager="$original_package_manager"
configure_opts=("${original_configure_opts[@]}")
}

function test_ruby_dependencies_when_with_jemalloc_is_given()
{
local original_package_manager="$package_manager"
local original_configure_opts=("${configure_opts[@]}")

package_manager="pkg"
configure_opts=(--with-jemalloc)

source "$ruby_install_dir/$ruby/dependencies.sh"

assertTrue "did not contain jemalloc" \
'[[ " ${ruby_dependencies[*]} " == *" jemalloc"* ]]'

package_manager="$original_package_manager"
configure_opts=("${original_configure_opts[@]}")
}

function tearDown()
{
unset ruby ruby_version ruby_dependencies openssl_version
Expand Down

0 comments on commit 4b5fe23

Please sign in to comment.