Skip to content

Building netty tcnative

linuxonz edited this page Oct 9, 2025 · 52 revisions

Building netty-tcnative

Below versions of netty-tcnative are available in respective distributions at the time of creation of these build instructions:

  • SLES (15 SP6, 15 SP7) have 2.0.73

The instructions provided below specify the steps to build netty-tcnative v2.0.73 on Linux on IBM Z for following distributions:

  • RHEL (8.10, 9.4, 9.6)
  • Ubuntu (22.04, 24.04, 25.04)

General Notes:

  • When following the steps below please use a standard permission user unless otherwise specified

  • A directory /<source_root>/ will be referred to in these instructions, this is a temporary writable directory anywhere you'd like to place it

1. Build using script

If you want to build netty-tcnative using manual steps, go to STEP 2.

Use the following commands to build netty-tcnative using the build script. Please make sure you have wget installed.

wget -q https://raw.githubusercontent.com/linux-on-ibm-z/scripts/master/netty-tcnative/2.0.73/build_netty.sh

# Build netty-tcnative
bash build_netty.sh [Provide -h to see a list of supported Java JDK variant]

If the build completes successfully, go to STEP 6. In case of error, check logs for more details or go to STEP 2 to follow manual build steps.

2. Install dependencies

export SOURCE_ROOT=/<source_root>/
  • RHEL (8.10, 9.4, 9.6)

    sudo yum install -y ninja-build cmake perl gcc gcc-c++ libarchive openssl-devel apr-devel autoconf automake libtool make tar git wget golang curl libstdc++-static.s390x xz-devel gzip libcryptui-devel python3-devel patch
  • Ubuntu (22.04, 24.04, 25.04)

    sudo apt-get update
    sudo apt-get install -y ninja-build cmake perl golang libssl-dev libapr1-dev autoconf automake libtool make tar git wget curl libtool-bin xz-utils gzip python3

2.1 Build libffi library (For AdoptOpenJDK8 hostpot on Ubuntu and Rhel 9.x)

cd $SOURCE_ROOT/
wget ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz
tar xvfz libffi-3.2.1.tar.gz
cd libffi-3.2.1
./configure --prefix=/usr/local
make
sudo make install
sudo ldconfig
sudo ldconfig /usr/local/lib64

2.2 Install Java

  • With IBM Semeru Runtime

    • Download and install IBM Semeru Runtime (Java 8, 11 or 17) from here (only for Ubuntu 22.04, 24.04 and Rhel).
  • With Eclipse Adoptium Temurin Runtime

    • Download and install Eclipse Adoptium Temurin Runtime (Java 11 or 17) from here.
  • Download and install AdoptOpenJDK Hotspot (Java 8) from here .

  • With OpenJDK 17

    • RHEL (8.10, 9.4, 9.6)

      sudo yum install -y java-17-openjdk java-17-openjdk-devel
    • Ubuntu (22.04, 24.04, 25.04)

      sudo apt-get install -y openjdk-17-jdk
  • With OpenJDK 11

    • RHEL (8.10, 9.4, 9.6)

      sudo yum install -y java-11-openjdk-devel
    • Ubuntu (22.04, 24.04, 25.04)

      sudo apt-get install -y openjdk-11-jdk
  • With OpenJDK 8

    • RHEL (8.10, 9.4, 9.6)

      sudo yum install -y java-1.8.0-openjdk-devel.s390x
    • Ubuntu (22.04, 24.04, 25.04)

      sudo apt-get install -y openjdk-8-jre openjdk-8-jdk
      

3. Set JAVA_HOME

 export JAVA_HOME=/<path to java>/
 export PATH=$JAVA_HOME/bin:$PATH

Note: At the time of creation of these build instructions, netty-tcnative was verified with Eclipse Adoptium Temurin Runtime (Java 11 build 11.0.24_8, Java 17 build 17.0.12_7), OpenJDK Runtime Environment (AdoptOpenJDK Java 8)(build 1.8.0_8u282b08), OpenJDK 8, 11 and 17.

4. Download source code

 cd $SOURCE_ROOT
 git clone -b netty-tcnative-parent-2.0.73.Final https://github.com/netty/netty-tcnative.git
 cd netty-tcnative

5. Build netty-tcnative

 cd $SOURCE_ROOT/netty-tcnative
 #Replace boringssl source code link to the one supported on s390x.
 wget -O boringssl-compat.patch https://raw.githubusercontent.com/linux-on-ibm-z/scripts/master/netty-tcnative/2.0.73/patch/boringssl-compat.patch
 patch -p1 < $SOURCE_ROOT/netty-tcnative/boringssl-compat.patch
  • Build netty-tcnative
./mvnw clean install

6. Set LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$SOURCE_ROOT/netty-tcnative/openssl-dynamic/target/native-build/.libs/:$LD_LIBRARY_PATH

References:

Clone this wiki locally