smengcl commented on code in PR #4315:
URL: https://github.com/apache/ozone/pull/4315#discussion_r1125287041


##########
hadoop-hdds/rocks-native/pom.xml:
##########
@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>hdds</artifactId>
+        <groupId>org.apache.ozone</groupId>
+        <version>1.4.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <name>Apache Ozone HDDS Rocks</name>
+    <artifactId>hdds-rocks-native</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.ozone</groupId>
+            <artifactId>hdds-server-framework</artifactId>
+        </dependency>
+    </dependencies>
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <cmake.standards>23</cmake.standards>
+        <sstDump.include>true</sstDump.include>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>com.googlecode.maven-download-plugin</groupId>
+                <artifactId>download-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>rocksdb source download</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            
<url>https://github.com/facebook/rocksdb/archive/refs/tags/v${rocksdb.version}.tar.gz</url>
+                            
<outputFileName>rocksdb-v${rocksdb.version}.tar.gz</outputFileName>
+                            
<outputDirectory>${project.build.directory}/rocksdb</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>zlib source download</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            
<url>https://zlib.net/zlib-${zlib.version}.tar.gz</url>
+                            
<outputFileName>zlib-${zlib.version}.tar.gz</outputFileName>
+                            
<outputDirectory>${project.build.directory}/zlib</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>bzip2 source download</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            
<url>https://sourceware.org/pub/bzip2/bzip2-${bzip2.version}.tar.gz</url>
+                            
<outputFileName>bzip2-v${bzip2.version}.tar.gz</outputFileName>
+                            
<outputDirectory>${project.build.directory}/bzip2</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>lz4 source download</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            
<url>https://github.com/lz4/lz4/archive/refs/tags/v${lz4.version}.tar.gz</url>
+                            
<outputFileName>lz4-v${lz4.version}.tar.gz</outputFileName>
+                            
<outputDirectory>${project.build.directory}/lz4</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>snappy source download</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            
<url>https://github.com/google/snappy/archive/refs/tags/${snappy.version}.tar.gz</url>
+                            
<outputFileName>snappy-v${snappy.version}.tar.gz</outputFileName>
+                            
<outputDirectory>${project.build.directory}/snappy</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>zstd source download</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            
<url>https://github.com/facebook/zstd/archive/refs/tags/v${zstd.version}.tar.gz</url>
+                            
<outputFileName>zstd-v${zstd.version}.tar.gz</outputFileName>
+                            
<outputDirectory>${project.build.directory}/zstd</outputDirectory>
+                        </configuration>
+                    </execution>
+
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-patch-plugin</artifactId>
+                <version>1.1.1</version>
+                <configuration>
+                    
<patchFile>${basedir}/src/main/patches/rocks-native.patch</patchFile>
+                    <strip>1</strip>
+                    
<targetDirectory>${project.build.directory}/rocksdb/rocksdb-${rocksdb.version}</targetDirectory>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>patch</id>
+                        <phase>process-sources</phase>
+                        <goals>
+                            <goal>apply</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+            <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>unzip-artifact</id>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <tasks>
+                                <untar 
src="${project.build.directory}/rocksdb/rocksdb-v${rocksdb.version}.tar.gz" 
compression="gzip" dest="${project.build.directory}/rocksdb/" />
+                                <untar 
src="${project.build.directory}/zlib/zlib-${zlib.version}.tar.gz" 
compression="gzip" dest="${project.build.directory}/zlib/" />
+                                <untar 
src="${project.build.directory}/bzip2/bzip2-v${bzip2.version}.tar.gz" 
compression="gzip" dest="${project.build.directory}/bzip2/" />
+                                <untar 
src="${project.build.directory}/lz4/lz4-v${lz4.version}.tar.gz" 
compression="gzip" dest="${project.build.directory}/lz4/" />
+                                <untar 
src="${project.build.directory}/snappy/snappy-v${snappy.version}.tar.gz" 
compression="gzip" dest="${project.build.directory}/snappy/" />
+                                <untar 
src="${project.build.directory}/zstd/zstd-v${zstd.version}.tar.gz" 
compression="gzip" dest="${project.build.directory}/zstd/" />
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>build-zlib</id>
+                        <phase>process-sources</phase>
+                        <configuration>
+                            <tasks>
+                                <chmod 
file="${project.build.directory}/zlib/zlib-${zlib.version}/configure" 
perm="775" />
+                                <exec executable="./configure" 
dir="${project.build.directory}/zlib/zlib-${zlib.version}" failonerror="true">
+                                    <arg line="--static"/>
+                                    <env key="CFLAGS" value="-fPIC"/>
+                                </exec>
+                                <exec executable="make" 
dir="${project.build.directory}/zlib/zlib-${zlib.version}" failonerror="true"/>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>build-bzip2</id>
+                        <phase>process-sources</phase>
+                        <configuration>
+                            <tasks>
+                                <exec executable="make" 
dir="${project.build.directory}/bzip2/bzip2-${bzip2.version}" 
failonerror="true">
+                                    <arg line="CFLAGS='-fPIC'"/>
+                                </exec>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>build-lz4</id>
+                        <phase>process-sources</phase>
+                        <configuration>
+                            <tasks>
+                                <exec executable="make" 
dir="${project.build.directory}/lz4/lz4-${lz4.version}" failonerror="true">
+                                    <arg line="CFLAGS='-fPIC'"/>
+                                </exec>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>build-zstd</id>
+                        <phase>process-sources</phase>
+                        <configuration>
+                            <tasks>
+                                <exec executable="make" 
dir="${project.build.directory}/zstd/zstd-${zstd.version}" failonerror="true">
+                                    <arg line="CFLAGS='-fPIC'"/>
+                                </exec>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>build-snappy</id>
+                        <phase>process-sources</phase>
+                        <configuration>
+                            <tasks>
+                                <mkdir 
dir="${project.build.directory}/snappy/lib"/>
+                                <exec executable="cmake" failonerror="true" 
dir="${project.build.directory}/snappy/lib">
+                                    <arg 
line="${project.build.directory}/snappy/snappy-${snappy.version}"/>
+                                    <env key="CFLAGS" value="-fPIC"/>
+                                    <env key="CXXFLAGS" value="-fPIC"/>
+                                </exec>
+                                <exec executable="make" 
dir="${project.build.directory}/snappy/lib" failonerror="true"/>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>build-rocksjava</id>
+                        <phase>process-resources</phase>
+                        <configuration>
+                            <tasks>
+                                <exec executable="chmod" failonerror="true">
+                                    <arg line="-R"/>
+                                    <arg line="775"/>
+                                    <arg 
line="${project.build.directory}/rocksdb/rocksdb-${rocksdb.version}"/>
+                                </exec>
+                                <exec executable="make" 
dir="${project.build.directory}/rocksdb/rocksdb-${rocksdb.version}" 
failonerror="true">
+                                    <arg line="EXTRA_CXXFLAGS='-fPIC 
-I${project.build.directory}/snappy/lib 
-I${project.build.directory}/snappy/snappy-${snappy.version} 
-I${project.build.directory}/lz4/lz4-${lz4.version}/lib 
-I${project.build.directory}/zstd/zstd-${zstd.version}/lib 
-I${project.build.directory}/zstd/zstd-${zstd.version}/lib/dictBuilder 
-I${project.build.directory}/bzip2/bzip2-${bzip2.version} 
-I${project.build.directory}/zlib/zlib-${zlib.version}'"/>
+                                    <arg 
line="EXTRA_LDFLAGS='-L${project.build.directory}/snappy/lib 
-L${project.build.directory}/lz4/lz4-${lz4.version}/lib 
-L${project.build.directory}/zstd/zstd-${zstd.version}/lib 
-L${project.build.directory}/bzip2/bzip2-${bzip2.version} 
-L${project.build.directory}/zlib/zlib-${zlib.version}'"/>
+                                    <arg line="-j10"/>
+                                    <arg line="tools"/>
+                                </exec>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>build-rocks-tools</id>
+                        <phase>process-classes</phase>
+                        <configuration>
+                            <tasks>
+                                <mkdir 
dir="${project.build.directory}/native/rocksdb"/>
+                                <exec executable="cmake" failonerror="true" 
dir="${project.build.directory}/native/rocksdb">
+                                    <env key="CFLAGS" value="-fPIC"/>
+                                    <env key="CXXFLAGS" value="-fPIC"/>
+                                    <arg line="${basedir}/src"/>
+                                    <arg 
line="-DGENERATED_JAVAH=${project.build.directory}/native/javah"/>
+                                    <arg 
line="-DNATIVE_DIR=${basedir}/src/main/native"/>
+                                    <arg 
line="-DSST_DUMP_INCLUDE=${sstDump.include}"/>
+                                    <arg 
line="-DCMAKE_STANDARDS=${cmake.standards}"/>
+                                    <arg 
line="-DROCKSDB_HEADERS=${project.build.directory}/rocksdb/rocksdb-${rocksdb.version}/include"/>
+                                    <arg 
line="-DROCKSDB_LIB=${project.build.directory}/rocksdb/rocksdb-${rocksdb.version}"/>
+                                    <arg 
line="-DZLIB_LIB=${project.build.directory}/zlib/zlib-${zlib.version}"/>
+                                    <arg 
line="-DBZIP2_LIB=${project.build.directory}/bzip2/bzip2-${bzip2.version}"/>
+                                    <arg 
line="-DLZ4_LIB=${project.build.directory}/lz4/lz4-${lz4.version}/lib"/>
+                                    <arg 
line="-DSNAPPY_LIB=${project.build.directory}/snappy/lib"/>
+                                    <arg 
line="-DZSTD_LIB=${project.build.directory}/zstd/zstd-${zstd.version}/lib"/>
+                                </exec>
+                                <exec executable="make" 
dir="${project.build.directory}/native/rocksdb" failonerror="true"/>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>copy-lib-file</id>
+                        <phase>prepare-package</phase>
+                        <configuration>
+                            <tasks>
+                                <copy toDir="${project.build.outputDirectory}">
+                                    <fileset 
dir="${project.build.directory}/native/rocksdb" includes="**/lib*.*" />
+                                </copy>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>${maven-jar-plugin.version}</version>
+                <configuration>
+                    <includes>
+                        <include>**/*.class</include>
+                        <include>**/lib*.dylib</include>
+                        <include>**/lib*.so</include>
+                        <include>**/lib*.jnilib</include>
+                        <include>**/lib*.dll</include>
+                    </includes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>java-8</id>
+            <activation>
+                <jdk>1.8</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>native-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <phase>compile</phase>
+                                <goals>
+                                    <goal>javah</goal>
+                                </goals>
+                                <configuration>
+                                    
<javahPath>${env.JAVA_HOME}/bin/javah</javahPath>
+                                    <javahClassNames>
+                                        
<javahClassName>org.apache.hadoop.hdds.utils.db.managed.ManagedSSTDumpTool</javahClassName>
+                                        
<javahClassName>org.apache.hadoop.hdds.utils.db.managed.PipeInputStream</javahClassName>
+                                    </javahClassNames>
+                                    
<javahOutputDirectory>${project.build.directory}/native/javah</javahOutputDirectory>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>java-11</id>
+            <activation>
+                <property>
+                    <name>javac.version</name>
+                    <value>11</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>exec-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>javach</id>
+                                <goals>
+                                    <goal>exec</goal>
+                                </goals>
+                                <phase>compile</phase>
+                                <configuration>
+                                    
<executable>${env.JAVA_HOME}/bin/javac</executable>
+                                    <arguments>
+                                        <argument>-classpath</argument>
+                                        
<argument>${project.build.outputDirectory}</argument>
+                                        <argument>-h</argument>
+                                        
<argument>${project.build.directory}/native/javah</argument>
+                                        
<argument>${project.basedir}/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedSSTDumpTool.java</argument>
+                                        
<argument>${project.basedir}/src/main/java/org/apache/hadoop/hdds/utils/db/managed/PipeInputStream.java</argument>
+                                    </arguments>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+
+</project>

Review Comment:
   ```suggestion
   </project>
   
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to