Building Neo4j - linux-on-ibm-z/docs GitHub Wiki

Building Neo4j

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.

Note: Neo4j (v5.18.0) was verified at the time of creation of these instructions

Step 1: Install dependencies

export SOURCE_ROOT=/<source_root>/
  • RHEL (8.8, 9.2)

    sudo yum install -y git wget tar
    
  • SLES 15 SP5

    sudo zypper install -y git wget tar
    
  • Ubuntu (20.04, 22.04, 23.10, 24.04)

    sudo apt-get update
    sudo apt install -y git wget tar
    
  • Install Maven

    cd $SOURCE_ROOT
    wget https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
    tar -zxf apache-maven-3.9.6-bin.tar.gz
    export PATH=$SOURCE_ROOT/apache-maven-3.9.6/bin:$PATH
    export MAVEN_OPTS="-Xmx2048m -Xss8m"
    

Step 2: Install Java

  • With Eclipse Temurin

    • Download and install Eclipse Temurin JDK (Java 17, 21) from here.
  • RHEL (8.8, 9.2)

    • With OpenJDK17
      sudo yum install -y java-17-openjdk-devel
      
    • With OpenJDK21
      sudo yum install -y java-21-openjdk-devel
      
  • SLES 15 SP5

    • With OpenJDK17
      sudo zypper install -y java-17-openjdk-devel
      

    Note: At the time creation of these build instructions the 'java-21-openjdk-devel' package was not found in the available repositories of SLES 15 SP5 .

  • Ubuntu (20.04, 22.04, 23.10, 24.04)

    • With OpenJDK17
      sudo apt-get update
      sudo apt-get install -y openjdk-17-jdk
      
    • With OpenJDK21
      sudo apt-get update
      sudo apt-get install -y openjdk-21-jdk
      

Step 3: Set Environment variables

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

Step 4: Build Neo4j

cd $SOURCE_ROOT
git clone https://github.com/neo4j/neo4j.git
cd neo4j
git checkout 5.18.0
wget https://raw.githubusercontent.com/linux-on-ibm-z/dockerfile-examples/master/Neo4j/neo4j-5.18.0.patch -P $SOURCE_ROOT
git apply $SOURCE_ROOT/neo4j-5.18.0.patch
mvn clean install -DskipTests

The resulting binary tarball can be found in $SOURCE_ROOT/neo4j/packaging/standalone/target.

Step 5: Run test (optional)

cd $SOURCE_ROOT/neo4j
mvn install --fn -B -V

Note: Following test modules have been observed to fail on both s390x and Intel.

  • Neo4j - Community DBMS Integration Tests

Note: Test failures are observed in neo4j/community/community-it/bolt-it module as it uses hard coded x86 specific test data.

  • Neo4j - Community Bolt Integration Tests

Step 6: Start server

Extract binary tarball to $SOURCE_ROOT:

export NEO4J_HOME=$SOURCE_ROOT/<Neo4j_binary_folder>

cd $SOURCE_ROOT
tar zxf $SOURCE_ROOT/neo4j/packaging/standalone/target/<Neo4j_tarball> -C $NEO4J_HOME
wget https://repo1.maven.org/maven2/org/neo4j/client/neo4j-browser/5.15.0/neo4j-browser-5.15.0.jar -P $NEO4J_HOME/lib

To start the server, follow steps given below.

cd $NEO4J_HOME
bin/neo4j start
bin/neo4j status
bin/neo4j stop

References: