Commit 89046f3f authored by lichenchong's avatar lichenchong
Browse files

Modify sync protcol file rules:

1. 'mvn clean compile' will (by default) force auto-sync the
kinetic.proto file (based on commit hash in the syncProtoFromRepo.sh
script) from kinetic-protocol repo and then compile/generate the Java
files.   This requires the internet connection.

2. Add a flag (-DskipProtoSync) so that the auto-sync can be disabled.
The maven command line is 'mvn clean compile -DskipProtoSync'.

3. Add a new script to get the latest protocol version from
kinetic-protocol repo.

4. Update build.setup.readme and kinetic.maven.readme.
parent 2ccfa3c3
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -3,11 +3,23 @@ BASE_DIR=`dirname "$0"`/..
BASE_DIR=`cd "$BASE_DIR"; pwd`
#echo "BASE_DIR=$BASE_DIR"

echo "Compile protocol file."
protoc --proto_path=$BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto --java_out=$BASE_DIR/kinetic-common/src/main/java/ $BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto/kinetic.proto
protoc --proto_path=$BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto --java_out=$BASE_DIR/kinetic-common/src/main/java/ $BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto/kineticDb.proto
protoc --proto_path=$BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto --java_out=$BASE_DIR/kinetic-common/src/main/java/ $BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto/kineticIo.proto
PROTO_DIR=$BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto/
PROTO_FILE=$BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto/kinetic.proto
PROTO_COMPILE_DIR=$BASE_DIR/kinetic-common/src/main/java/

function compileProto(){
    echo "Compile protocol file: $PROTO_FILE."
    protoc --proto_path=$PROTO_DIR --java_out=$PROTO_COMPILE_DIR $PROTO_FILE

    echo "Compile protocol file: $PROTO_DIR/kineticDb.proto."
    protoc --proto_path=$PROTO_DIR --java_out=$PROTO_COMPILE_DIR $PROTO_DIR/kineticDb.proto

    echo "Compile protocol file: $PROTO_DIR/kineticIo.proto."
    protoc --proto_path=$PROTO_DIR --java_out=$PROTO_COMPILE_DIR $PROTO_DIR/kineticIo.proto

    echo "Compile finished."
}

compileProto

exit 0
 No newline at end of file
+29 −0
Original line number Diff line number Diff line
@@ -4,11 +4,8 @@ BASE_DIR=`cd "$BASE_DIR"; pwd`
#echo "BASE_DIR=$BASE_DIR"

PROTO_REPO_URL=https://github.com/Seagate/Kinetic-Protocol.git
PROTO_DIR=$BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto/
PROTO_FILE=$BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto/kinetic.proto
CLONE_DIR=$BASE_DIR/bin/Kinetic-ProtocoL
PROTO_COMPILE_DIR=$BASE_DIR/kinetic-common/src/main/java/
PROTO_COMMIT_HASH=bdfe223648ca13df2db0dabe328980025b8278e4

function syncFromProtoRepo(){
    if [ -d "$CLONE_DIR" ]; then
@@ -16,10 +13,8 @@ function syncFromProtoRepo(){
    fi

    if [ $# -eq 0 ]; then
        echo "Clone protocol file from github:"
        echo "Clone the latest protocol file from github:"
        git clone $PROTO_REPO_URL $CLONE_DIR
        cd $CLONE_DIR
        git checkout $PROTO_COMMIT_HASH
    fi

    cp $CLONE_DIR/kinetic.proto $PROTO_FILE
@@ -29,26 +24,6 @@ function syncFromProtoRepo(){
    echo "Sync protocol file finished."
}

function compileProto(){
    echo "Compile protocol file: $PROTO_FILE."
    protoc --proto_path=$PROTO_DIR --java_out=$PROTO_COMPILE_DIR $PROTO_FILE

    echo "Compile protocol file: $PROTO_DIR/kineticDb.proto."
    protoc --proto_path=$PROTO_DIR --java_out=$PROTO_COMPILE_DIR $PROTO_DIR/kineticDb.proto

    echo "Compile protocol file: $PROTO_DIR/kineticIo.proto."
    protoc --proto_path=$PROTO_DIR --java_out=$PROTO_COMPILE_DIR $PROTO_DIR/kineticIo.proto

    echo "Compile finished."
}

if [ -f "$PROTO_FILE" ]; then
    echo "$PROTO_FILE exists, does not sync from repo."
else
    echo "$PROTO_FILE does not exists, sync from repo"
syncFromProtoRepo
fi

compileProto

exit 0
 No newline at end of file
+19 −18
Original line number Diff line number Diff line
@@ -3,29 +3,30 @@ BASE_DIR=`dirname "$0"`/..
BASE_DIR=`cd "$BASE_DIR"; pwd`
#echo "BASE_DIR=$BASE_DIR"

PROTO_REPO_URL=https://github.com/Seagate/Kinetic-Protocol.git
PROTO_FILE=$BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto/kinetic.proto
CLONE_DIR=$BASE_DIR/bin/Kinetic-ProtocoL
PROTO_COMMIT_HASH=bdfe223648ca13df2db0dabe328980025b8278e4

function syncFromProtoRepo(){
    if [ -d "$CLONE_DIR" ]; then
        rm -rf "$CLONE_DIR"
    fi

    if [ $# -eq 0 ]; then
    echo "Clone protocol file from github:"
    git clone https://github.com/Seagate/kinetic-protocol.git $CLONE_DIR
fi

if [ $# -eq 1 ]; then
    echo "Clone protocol file $1 from github:"
    git clone https://github.com/Seagate/kinetic-protocol.git $CLONE_DIR
        echo "Clone protocol file from github, the commit hash is: $PROTO_COMMIT_HASH"
        git clone $PROTO_REPO_URL $CLONE_DIR
        cd $CLONE_DIR
    git checkout $1
    echo "$1"
        git checkout $PROTO_COMMIT_HASH
    fi

cp $CLONE_DIR/kinetic.proto $BASE_DIR/kinetic-common/src/main/java/com/seagate/kinetic/proto/kinetic.proto
    cp $CLONE_DIR/kinetic.proto $PROTO_FILE

    rm -rf "$CLONE_DIR"

    echo "Sync protocol file finished."
}

syncFromProtoRepo

exit 0
 No newline at end of file
+2 −2
Original line number Diff line number Diff line
@@ -15,13 +15,13 @@ https://developers.google.com/protocol-buffers/docs/javatutorial

2. Obtain a copy of kinetic.proto from https://github.com/Seagate/kinetic-protocol.git repository.  

"syncProtoFromRepo.sh" script is provided to facilitate the work:
"forceSyncLatestProtoFromRepo.sh" script is provided to facilitate the work:

//cd to project root
2.1 cd <kinetic-java>

//run syncProtoFromRepo.sh to get the latest kinetic.proto file.
2.2 sh ./bin/syncProtoFromRepo.sh
2.2 sh ./bin/forceSyncLatestProtoFromRepo.sh

3. Compile protocol buffer files and generate Java files into com.seagate.kinetic.proto package. 
The package is under <kinetic-java>/kinetic-common/src/main/java folder.  
+16 −3
Original line number Diff line number Diff line
<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">
<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">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.seagate.kinetic</groupId>
@@ -10,6 +11,7 @@
	<packaging>jar</packaging>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<skipProtoSync>false</skipProtoSync>
	</properties>
	<build>
		<plugins>
@@ -47,13 +49,24 @@
				<version>1.1.1</version>
				<executions>
					<execution>
						<id>sync-build-protocol</id>
						<id>sync-protocol</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<executable>${project.parent.basedir}/bin/syncProtoFromRepoAndBuild.sh</executable>
							<skip>${skipProtoSync}</skip>
							<executable>${project.parent.basedir}/bin/syncProtoFromRepo.sh</executable>
						</configuration>
					</execution>
					<execution>
						<id>build-protocol</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<executable>${project.parent.basedir}/bin/buildProto.sh</executable>
						</configuration>
					</execution>
				</executions>
Loading