Skip to content

Building Apache Geode

aborkar-ibm edited this page Aug 3, 2018 · 45 revisions

Building Apache Geode

The instructions provided below specify the steps to build Apache Geode 1.6.0 on Linux on IBM Z for following distributions:

  • RHEL (7.3, 7.4, 7.5)
  • SLES 12 SP3
  • Ubuntu (16.04, 18.04)

The binary for Apache Geode version 1.6.0 can be downloaded from here. Please note that, starting of server is the only verification performed on the binary.

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) Install dependencies

  • RHEL (7.3, 7.4, 7.5)

    • With Open JDK:

      sudo yum install -y git which java-1.8.0-openjdk java-1.8.0-openjdk-devel
  • SLES 12 SP3

    • With Open JDK:

      sudo zypper install -y git which java-1_8_0-openjdk-1.8.0.144-27.5.3.s390x java-1_8_0-openjdk-devel-1.8.0.144-27.5.3.s390x
  • Ubuntu (16.04, 18.04)

    • With Open JDK:
      sudo apt-get update
      sudo apt-get install -y git openjdk-8-jdk
  • Other dependencies

    • ProtoBuf

      Refer Protobuf build instructions

2) Set Environment Variables

  • For Open JDK

    export JAVA_HOME=<path to java>
    export PATH=$JAVA_HOME/bin:$PATH
    export LANG="en_US.UTF-8"
    export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"
    export _JAVA_OPTIONS=-Xmx2048m
    export JVM_ARGS="-Xms2048m -Xmx2048m"

3) Get the source

cd /<source_root>/
git clone https://github.com/apache/incubator-geode.git
cd /<source_root>/incubator-geode/
git checkout rel/v1.6.0

4) Replace the Protoc binary

mkdir -p /home/test/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protoc/3.5.1
cp /usr/local/bin/protoc /home/test/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protoc/3.5.1/protoc-3.5.1-linux-s390x_64.exe

5) Edit the following file

  • Modify /<source_root>/incubator-geode/geode-protobuf-messages/build.gradle as protoc-3.5.1 binary not available for s390x.

    @@ -34,7 +34,6 @@ dependencies {
     protobuf {
         protoc {
             // The artifact spec for the Protobuf Compiler
    -        artifact = 'com.google.protobuf:protoc:' + project.'protoc.version'
         }
         generatedFilesBaseDir = "$buildDir/generated-src/proto"
     }

6) Build Apache Geode source without test cases

cd /<source_root>/incubator-geode/
./gradlew build installDist -x test 

Note: If build fails with java.lang.StackOverflowError error, set -Xss flag in gradle.properties file as follows:

@@ -41,6 +41,7 @@ productOrg = Apache Software Foundation (ASF)
 
 org.gradle.daemon = true
 org.gradle.jvmargs = -Xmx2048m
+org.gradle.jvmargs = -Xss1g
 
 minimumGradleVersion = 3.5.1
 # Set this on the command line with -P or in ~/.gradle/gradle.properties

7) Run test cases(Optional)

cd /<source_root>/incubator-geode/
./gradlew test

Notes:

  • There are few test case failures related to CompressedOOPsObjectSize flag which can be ignored as the basic functionality is not impacted.

  • Below test case failures are observed with OpenJDK:

    • org.apache.geode.internal.process.NativeProcessUtilsTest > isProcessAlive_livePid_returnsTrue

    • org.apache.geode.internal.process.NativeProcessUtilsTest > isProcessAlive_deadPid_returnsFalse

      These failures are known issues. Click here for details

  • Click here to know more about how to start a locator and server. In case of "gfsh: command not found" error, set below path to PATH variable:

    export PATH=$PATH:/<source_root>/incubator-geode/geode-assembly/build/install/apache-geode/bin

References

https://github.com/apache/incubator-geode

https://cwiki.apache.org/confluence/display/GEODE/Index

http://geode.incubator.apache.org/

Clone this wiki locally