Merge branch 'sh-enable-jemalloc' into 'master'

Build ruby with jemalloc

See merge request gitlab-org/gitlab-build-images!393
This commit is contained in:
Rémy Coutable 2021-04-20 09:48:46 +00:00
commit f5168de9b4

View file

@ -7,9 +7,30 @@ set -xeou pipefail
RUBY_VERSION=${1}
RUBY_MAJOR=${1%.*} # strip last component
RUBY_DOWNLOAD_SHA256=${2}
RUBY_DOWNLOAD_URL="https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.gz"
JEMALLOC_VERSION=5.2.1
JEMALLOC_DOWNLOAD_SHA256="34330e5ce276099e2e8950d9335db5a875689a4c6a56751ef3b1d8c537f887f6"
JEMALLOC_DOWNLOAD_URL="https://github.com/jemalloc/jemalloc/releases/download/${JEMALLOC_VERSION}/jemalloc-${JEMALLOC_VERSION}.tar.bz2"
# Install needed packages
apt-get update
apt-get install -y --no-install-recommends bison dpkg-dev libgdbm-dev autoconf
# Download jemalloc
mkdir -p /usr/src/jemalloc
cd /usr/src/jemalloc
curl --retry 6 -L -so jemalloc.tar.bz2 ${JEMALLOC_DOWNLOAD_URL}
echo "${JEMALLOC_DOWNLOAD_SHA256} jemalloc.tar.bz2" | sha256sum -c -
# Install jemalloc
tar -xjf jemalloc.tar.bz2
rm jemalloc.tar.bz2
cd jemalloc-${JEMALLOC_VERSION}
./autogen.sh --prefix=/usr --enable-prof
make -j "$(nproc)" install
cd /tmp
# Download Ruby
curl -fsSL "$RUBY_DOWNLOAD_URL" -o ruby.tar.gz
echo "${RUBY_DOWNLOAD_SHA256} ruby.tar.gz" | sha256sum -c -
@ -19,10 +40,6 @@ mkdir -p /usr/local/etc
echo 'install: --no-document' >> /usr/local/etc/gemrc
echo 'update: --no-document' >> /usr/local/etc/gemrc
# Install needed packages
apt-get update
apt-get install -y --no-install-recommends bison dpkg-dev libgdbm-dev ruby
# Unpack Ruby
mkdir -p /usr/src/ruby
tar -xzf ruby.tar.gz -C /usr/src/ruby --strip-components=1
@ -38,12 +55,12 @@ if [[ -d "/patches/ruby/$RUBY_VERSION" ]]; then
fi
# Compile
./configure --enable-shared --disable-install-doc --disable-install-rdoc --disable-install-capi
./configure --enable-shared --with-jemalloc --disable-install-doc --disable-install-rdoc --disable-install-capi
make install -j $(nproc)
# Cleanup
cd /
rm -rf /usr/src/ruby
rm -rf /usr/src/ruby /usr/src/jemalloc
apt-get purge -y --auto-remove ruby
# Verify