You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2019/07/18 02:04:50 UTC
[incubator-datasketches-memory] branch master updated: Clean up POM,
add deploy scripts, etc.
This is an automated email from the ASF dual-hosted git repository.
leerho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-datasketches-memory.git
The following commit(s) were added to refs/heads/master by this push:
new 819fe95 Clean up POM, add deploy scripts, etc.
819fe95 is described below
commit 819fe953d5204a704c23311493bc983d5e41459c
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Wed Jul 17 19:04:41 2019 -0700
Clean up POM, add deploy scripts, etc.
---
DISCLAIMER | 10 ++
assembly.xml | 107 ------------
pom.xml | 89 ++--------
scripts/bashDeployToDist.sh | 308 +++++++++++++++++++++++++++++++++
scripts/{PomParams.sh => createZip.sh} | 25 ++-
scripts/pomDeployToDist.sh | 98 +++++++++++
6 files changed, 446 insertions(+), 191 deletions(-)
diff --git a/DISCLAIMER b/DISCLAIMER
new file mode 100644
index 0000000..7f1416f
--- /dev/null
+++ b/DISCLAIMER
@@ -0,0 +1,10 @@
+Apache DataSketches (incubating) is an effort undergoing incubation at the Apache Software
+Foundation (ASF), sponsored by the Apache Incubator PMC.
+
+Incubation is required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects.
+
+While incubation status is not necessarily a reflection of the completeness
+or stability of the code, it does indicate that the project has yet to be
+fully endorsed by the ASF.
diff --git a/assembly.xml b/assembly.xml
deleted file mode 100644
index 4fe17c0..0000000
--- a/assembly.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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.
--->
-
-<!-- Please refer to https://github.com/apache/maven-resources/blob/trunk/apache-source-release-assembly-descriptor/src/main/resources/assemblies/source-shared.xml before making changes to this file. -->
-
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
-
- <id>source</id>
-
- <formats>
- <format>zip</format>
- </formats>
-
- <fileSets>
- <!-- main project directory structure -->
- <fileSet>
- <directory>.</directory>
- <outputDirectory></outputDirectory>
- <useDefaultExcludes>true</useDefaultExcludes>
- <excludes>
- <!-- build output -->
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/).*${project.build.directory}.*]</exclude>
-
- <!-- NOTE: Most of the following excludes should not be required
- if the standard release process is followed. This is because the
- release plugin checks out project sources into a location like
- target/checkout, then runs the build from there. The result is
- a source-release archive that comes from a pretty clean directory
- structure.
-
- HOWEVER, if the release plugin is configured to run extra goals
- or generate a project website, it's definitely possible that some
- of these files will be present. So, it's safer to exclude them.
- -->
-
- <!-- IDEs -->
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?maven-eclipse\.xml]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.project]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.classpath]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iws]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.idea(/.*)?]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?out(/.*)?]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.ipr]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iml]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.settings(/.*)?]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.externalToolBuilders(/.*)?]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.deployables(/.*)?]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.wtpmodules(/.*)?]</exclude>
-
- <!-- misc -->
- <exclude>**/local/**</exclude>
- <exclude>**/tmp/**</exclude>
- <exclude>**/target/**</exclude>
- <exclude>**/test-output/**</exclude>
- <exclude>**/.checkstyle</exclude>
- <exclude>**/.git/**</exclude>
- <exclude>**/.mvn/**</exclude>
-
- <!-- files generated by the Gradle build process. -->
- <exclude>**/.gradle/**</exclude>
- <exclude>**/.gogradle/**</exclude>
- <exclude>**/build/**</exclude>
- <exclude>**/vendor/**</exclude>
- <exclude>**/out/**</exclude>
- <exclude>**/.gradletasknamecache</exclude>
-
- <!-- files generated by the Maven build process. -->
- <exclude>**/bin/**</exclude>
- <exclude>**/dependency-reduced-pom.xml</exclude>
-
- <!-- files generated by the Python build process. -->
- <exclude>**/*.py[cod]</exclude>
- <exclude>**/*.egg-info/</exclude>
- <exclude>**/.eggs/**</exclude>
- <exclude>**/nose-*.egg/**</exclude>
- <exclude>**/.tox/**</exclude>
- <exclude>**/dist/**</exclude>
- <exclude>**/distribute-*/**</exclude>
- <exclude>**/env/**</exclude>
-
- <!-- release-plugin temp files -->
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?pom\.xml\.releaseBackup]</exclude>
- <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?release\.properties]</exclude>
- </excludes>
- </fileSet>
- <!-- license, readme, etc. calculated at build time -->
- <fileSet>
- <directory>${project.build.directory}/maven-shared-archive-resources/META-INF</directory>
- <outputDirectory></outputDirectory>
- </fileSet>
- </fileSets>
-
-</assembly>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f373146..3c5ca73 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@ under the License.
</parent>
<groupId>org.apache.datasketches</groupId>
- <artifactId>memory</artifactId>
+ <artifactId>datasketches-memory</artifactId>
<version>0.12.3-incubating-SNAPSHOT</version>
@@ -114,33 +114,24 @@ under the License.
<testng.version>6.14.3</testng.version>
<slf4j-api.version>1.7.25</slf4j-api.version>
<protobuf-java.version>3.6.0</protobuf-java.version> <!-- Used for UTF8 testing -->
+ <zero-allocation-hashing.version>0.8</zero-allocation-hashing.version>
<!-- org.codehaus.plexus used for strict profile testing-->
<plexus-compiler-javac-errorprone.version>2.8.5</plexus-compiler-javac-errorprone.version>
<!-- Maven Plugins -->
<maven-jar-plugin.version>3.1.2</maven-jar-plugin.version>
-
-
- <!-- External Maven Plugins -->
- <!-- org.eclipse.m2e Plugins -->
- <lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
-
- <!-- org.codehaus.mojo Maven Plugins -->
- <!-- <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version> -->
- <!-- <license-maven-plugin.version>1.19</license-maven-plugin.version> -->
<!-- org.jacoco Maven Plugins -->
<jacoco-maven-plugin.version>0.8.4</jacoco-maven-plugin.version>
- <!-- org.sonatype Maven Plugins -->
- <nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>
-
<!-- org.eluder Maven Plugins -->
<coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
<!-- other -->
<reproducible-build-maven-plugin.version>0.4</reproducible-build-maven-plugin.version>
+ <lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
+ <maven-remote-resources-plugin.version>[1.0,)</maven-remote-resources-plugin.version>
</properties>
<repositories>
@@ -195,38 +186,14 @@ under the License.
<!-- Used for xxHash testing -->
<groupId>net.openhft</groupId>
<artifactId>zero-allocation-hashing</artifactId>
- <version>0.8</version>
+ <version>${zero-allocation-hashing.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
- <!-- Create a source-release artifact that contains the fully buildable
- project directory source structure. This is the artifact which is the
- official subject of any release vote. -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <!-- version in parent -->
- <executions>
- <execution>
- <id>source-release-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- <configuration>
- <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
- <descriptors>
- <descriptor>assembly.xml</descriptor>
- </descriptors>
- <tarLongFileMode>gnu</tarLongFileMode>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!-- We want to deploy the artifact to a staging location for perusal -->
+ <!-- We want to deploy the artifacts to a staging location for perusal -->
<!-- exact duplicate of Parent -->
<plugin>
<inherited>true</inherited>
@@ -322,6 +289,7 @@ under the License.
<!-- ignore licence files-->
<exclude>LICENSE</exclude>
<exclude>NOTICE</exclude>
+ <exclude>DISCLAIMER</exclude>
</excludes>
</configuration>
</plugin>
@@ -395,43 +363,6 @@ under the License.
</execution>
</executions>
</plugin>
- <!-- calculate checksums of source release for Apache dist area -->
- <plugin>
- <groupId>net.nicoulaj.maven.plugins</groupId>
- <artifactId>checksum-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>source-release-checksum</id>
- <goals>
- <goal>files</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <algorithms>
- <algorithm>SHA-512</algorithm>
- </algorithms>
- <csvSummary>false</csvSummary>
- <fileSets>
- <fileSet>
- <directory>${project.build.directory}</directory> <!-- /target -->
- <includes>
- <include>${project.artifactId}-${project.version}-source-release.zip</include>
- <include>${project.artifactId}-${project.version}-source-release.tar*</include>
- <include>${project.artifactId}-${project.version}-javadoc.jar</include>
- <include>${project.artifactId}-${project.version}-source.zip</include>
- <include>${project.artifactId}-${project.version}-sources.jar</include>
- <include>${project.artifactId}-${project.version}-test-sources.jar</include>
- <include>${project.artifactId}-${project.version}-tests.jar</include>
- <include>${project.artifactId}-${project.version}.jar</include>
- <include>${project.artifactId}-${project.version}.pom</include>
- </includes>
- </fileSet>
- </fileSets>
- <failIfNoFiles>false</failIfNoFiles><!-- usually, no file to do checksum: don't consider error -->
- </configuration>
- </plugin>
</plugins>
</build>
@@ -455,7 +386,7 @@ under the License.
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
+ <version>${lifecycle-mapping.version}</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
@@ -463,7 +394,7 @@ under the License.
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
- <versionRange>[1.0,)</versionRange>
+ <versionRange>${maven-remote-resources-plugin.version}</versionRange>
<goals>
<goal>process</goal>
</goals>
@@ -481,7 +412,7 @@ under the License.
</pluginManagement>
</build>
</profile>
-
+
<profile>
<id>strict</id>
<build>
diff --git a/scripts/bashDeployToDist.sh b/scripts/bashDeployToDist.sh
new file mode 100755
index 0000000..8a4cadf
--- /dev/null
+++ b/scripts/bashDeployToDist.sh
@@ -0,0 +1,308 @@
+#!/bin/bash -e
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+# This assumes it is being executed from the project root directory.
+# From the project directory run: scripts/assembleSignVerify.sh
+# This is generic in that it does not assume a POM file and does not use Maven.
+
+
+echo
+echo "================Bash Deploy to Dist================"
+echo " This script must be run from the base directory of the project."
+echo " This script obtains the 'project.artifactId' and the 'project.version' from the \$1 and \$2 input parameters "
+echo " For example: $ scripts/bashDeployToDist.sh datasketches-memory 0.12.3-incubator"
+echo " Refer to the top of the 'pomDeployToDist.sh' for a description of the dist datastructure."
+echo
+echo "===================Check List======================"
+echo "1. Verify that you can successfully read and write to the dist directories using SVN."
+echo
+echo "2. Verify that your GPG keys have been created and stored in:"
+echo " - https://dist.apache.org/repos/dist/dev/incubator/datasketches/KEYS AND"
+echo " - https://dist.apache.org/repos/dist/release/incubator/datasketches/KEYS"
+echo
+echo "3. Verify the POM project.version format is one of:"
+echo " X.Y.Z"
+echo " X.Y.Z-SNAPSHOT"
+echo " X.Y.Z-incubator"
+echo " X.Y.Z-incubator-SNAPSHOT"
+echo
+echo " 'SNAPSHOT', if relevant, is always at the end of the version string and capitalized."
+echo " Note: SNAPSHOT deployments are never relevant for the 'release' branch."
+echo
+echo "Proceed? [y|N]"
+read confirm
+if [[ $confirm != "y" ]];
+then
+ "Please rerun this script when ready."
+ echo
+ exit
+fi
+
+TIME=$(date -u +%Y%m%d.%H%M%S)
+BASE=$(pwd)
+echo
+echo "DateTime: $TIME"
+
+echo
+echo "## Load GPG Agent:"
+eval $(gpg-agent --daemon) > /dev/null
+
+## Extract project.artifactId and project.version from POM:
+
+ProjectArtifactId=$1
+ProjectVersion=$2
+
+# Determine the type of release / deployment we are dealing with
+# and adjust the target directories and file version to be used in the file name accordingly.
+
+Release=false
+Snapshot=false
+ReleaseCandidate=false
+RCNUM=
+ReleaseType=
+FileVersion=
+LeafDir=
+
+if [[ $ProjectVersion =~ .*-SNAPSHOT ]];
+then
+ echo
+ echo "This version is a SNAPSHOT. Do you still want to deploy?"
+ read confirm
+ if [[ $confirm != "y" ]];
+ then
+ echo "Please correct the version string and rerun this script"
+ echo
+ exit
+ fi
+ Snapshot=true
+ ReleaseType="SNAPSHOT"
+ FileVersion=${ProjectVersion%-SNAPSHOT}-$TIME # Remove SNAPSHOT, add date-time
+ LeafDir=$ProjectVersion
+ #continue
+else # NOT a SNAPSHOT
+ Snapshot=false
+ echo
+ echo "Is this a Release Candidate? [y|N]"
+ read confirm
+ if [[ $confirm != "y" ]];
+ then # NOT ReleaseCandidate, could be Final Release
+ ReleaseCandidate=false
+ echo "Please confirm that this the Final Release of $ProjectArtifactId : $ProjectVersion ? [y|N]"
+ read confirm
+ if [[ $confirm != "y" ]];
+ then # NOT Final Release either, bail out
+ Release=false
+ echo "Please correct the input and rerun this script"
+ echo
+ exit
+
+ else # Final Release
+ Release=true
+ ReleaseType="Release"
+ FileVersion="$ProjectVersion"
+ LeafDir=$ProjectVersion
+ #continue
+ fi
+ else # ReleaseCandidate
+ ReleaseCandidate=true
+ echo "What is the Release Candidate Number? NNN"
+ read RCNUM
+ ReleaseType="Release Candidate: RC$RCNUM"
+ FileVersion="$ProjectVersion"
+ LeafDir="$ProjectVersion-RC$RCNUM"
+ #continue
+ fi
+fi
+
+
+
+# extract the SubDir name, e.g., "memory" from the artifactId
+SubDir=$(expr "$ProjectArtifactId" : 'datasketches-\([a-z]*\)')
+
+# Are we still incubating?
+if [[ $ProjectVersion =~ .*-incubating.* ]]
+then
+ Incubating=true
+ Incubator="incubator/"
+else
+ Incubating=false
+ Incubator=""
+fi
+
+# Set up the paths
+
+FilesPath=${SubDir}/${LeafDir}
+LocalPath="target/assy-tmp/dist"
+RemotePath="https://dist.apache.org/repos/dist"
+if ( $Release )
+then
+ LocalSvnBasePath="$LocalPath"/release/"$Incubator"datasketches
+ RemoteSvnBasePath="$RemotePath"/release/"$Incubator"datasketches
+else
+ LocalSvnBasePath="$LocalPath"/dev/"$Incubator"datasketches
+ RemoteSvnBasePath="$RemotePath"/dev/"$Incubator"datasketches
+fi
+
+LocalFilesPath="$LocalSvnBasePath"/"$FilesPath"
+
+# Create target/assy-tmp dir if it doesn't exist
+mkdir -p target
+cd target
+rm -rf assy-tmp
+mkdir -p assy-tmp/dist
+cd ../
+
+ZipName=apache-${ProjectArtifactId}-${FileVersion}-src.zip
+
+echo
+echo "===========SUMMARY OF INPUT PARAMETERS============="
+echo "ProjectArtifactId : $ProjectArtifactId"
+echo "Project Version : $ProjectVersion"
+echo "Release Type : $ReleaseType"
+echo "Incubating : $Incubating"
+echo "File Version String : $FileVersion"
+echo "Target ZIP File Name : $ZipName"
+echo "Target Leaf Dir : $LeafDir"
+echo "SubDir : $SubDir"
+echo "FilesPath : $FilesPath"
+echo "LocalSvnBasePath : $LocalSvnBasePath"
+echo "RemoteSvnBasePath : $RemoteSvnBasePath"
+echo "LocalFilesPath : $LocalFilesPath"
+echo
+echo "Please confirm if the above is correct: [y|N]"
+read confirm
+if [[ $confirm != "y" ]];
+then
+ echo "Please correct the input and rerun this script"
+ echo
+ exit
+fi
+
+# move to base path and checkout
+mkdir -p $LocalSvnBasePath
+
+cd $LocalSvnBasePath
+svn co $RemoteSvnBasePath .
+cd $BASE
+
+if [ -d "$LocalFilesPath" && ! $Snapshot ];
+then
+ echo
+ echo "ERROR!!! $LocalFilesPath already exists."
+ echo
+ exit 1
+fi
+
+echo
+echo "Is the SVN Checkout without conflicts? [y|N]"
+read confirm
+if [[ $confirm != "y" ]];
+then
+ echo
+ echo "Please correct the input and rerun this script"
+ echo
+ exit
+fi
+
+#make the leaf directories
+mkdir -p $LocalFilesPath
+
+echo
+echo "## Zip:"
+
+scripts/createZip.sh $ZipName $LocalFilesPath
+
+echo
+echo "Is the Zip file correct? [y|N]"
+read confirm
+if [[ $confirm != "y" ]];
+then
+ echo "Please correct the input and rerun this script"
+ echo
+ exit
+fi
+
+cd $LocalFilesPath #for signing
+
+if [ ! -f "$ZipName" ]; then
+ echo
+ echo " !!! ERROR: $ZipName file does not exist"
+ echo
+ exit 1;
+fi
+
+echo " * ZIP File = $ZipName"
+
+echo
+echo "## GPG Sign"
+
+ASC=${ZipName}.asc
+gpg -ab "$ZipName"
+
+if [ ! -f ${ASC} ]; then
+ echo
+ echo " !!! ERROR: ${ASC} file does not exist"
+ exit 1;
+fi
+echo " * ASC File = ${ASC}"
+
+echo
+echo "## GPG Verify"
+gpg --verify "$ASC" "$ZipName"
+
+echo
+echo "## SHA512 sign"
+
+SHA512=${ZipName}.sha512
+shasum -a 512 "$ZipName" >> "$SHA512"
+
+if [ ! -f "$SHA512" ]; then
+ echo
+ echo " !!! ERROR: .sha512 file does not exist"
+ exit 1;
+fi
+echo " * SHA512 file = $SHA512"
+
+echo
+echo "## SHA512 Check:"
+shasum -a 512 -c $SHA512
+
+cd $BASE
+
+echo
+echo "=================DEPLOY TO DIST===================="
+echo
+cd $LocalSvnBasePath
+svn add --force .
+svn ci -m "Deploy $FileVersion to DIST"
+
+echo
+echo "Is the dist directory structure and content OK? [y|N]"
+read confirm
+if [[ $confirm != "y" ]];
+then
+ echo "Please correct the input and rerun this script"
+ echo "You may have to manually remove some contents from Dist"
+ echo
+ exit
+fi
+echo
+echo "# SUCCESS"
+echo
+
diff --git a/scripts/PomParams.sh b/scripts/createZip.sh
similarity index 63%
rename from scripts/PomParams.sh
rename to scripts/createZip.sh
index b646143..1c25f85 100755
--- a/scripts/PomParams.sh
+++ b/scripts/createZip.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
@@ -17,7 +17,22 @@
# specific language governing permissions and limitations
# under the License.
-PARAM=$1
-cd ../
-RESULT=$(mvn help:evaluate -Dexpression=$PARAM -q -DforceStdout)
-echo $RESULT
+ZipName=$1
+LocalPath=$2 # target/assy-tmp/dist/dev/incubator/datasketches/memory/<leafDir>
+
+# what should be included is a shorter list that all possible excludes!
+cp .travis.yml $LocalPath
+cp .gitignore $LocalPath
+cp DISCLAIMER $LocalPath
+cp LICENSE $LocalPath
+cp NOTICE $LocalPath
+cp pom.xml $LocalPath
+cp README.md $LocalPath
+cp -R scripts $LocalPath
+cp -R src $LocalPath
+cp -R tools $LocalPath
+
+cd $LocalPath
+
+zip -rqmT "$ZipName" "."
+
diff --git a/scripts/pomDeployToDist.sh b/scripts/pomDeployToDist.sh
new file mode 100755
index 0000000..8e84fc5
--- /dev/null
+++ b/scripts/pomDeployToDist.sh
@@ -0,0 +1,98 @@
+#!/bin/bash -e
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+# This assumes it is being executed from the project root directory.
+# From the project directory run: scripts/assembleSignVerify.sh
+echo
+echo "=============Deploy using POM Metadata============="
+echo " This script must be run from the base directory of the project."
+echo " This script will extract the 'project.artifactId' and the 'project.version' from the pom.xml "
+echo " which must be found in this directory."
+echo " For example: $ scripts/pomDeployToDist.sh"
+echo " If your project does not have a pom, then you should use the 'bashDeployToDist.sh' instead"
+echo
+echo "===========The Dist Deployment Structure==========="
+echo "The DataSketche base directories in https://dist.apache.org/repos/dist/ are:"
+echo " - dev/incubator/datasketches/"
+echo " - release/incubator/datasketches/"
+echo
+echo " Each of these two directories contain a KEYS file, which is where you must have your GPG public key stored."
+echo
+echo "After graduation the base directories will be the same but without the incubator level."
+echo
+echo "For both the dev and the release branches, the root contains sub-directories for each of "
+echo "the datasketches-X repositories as follows:"
+echo " - characterization/"
+echo " - core/"
+echo " - cpp/"
+echo " - hive/"
+echo " - memory/"
+echo " - pig/"
+echo " - postgresql/"
+echo " - vector/"
+echo
+echo "Below these sub=directories is a level of leaf directories that define a particular release or release candidate."
+echo
+echo "Finally the leaf directories contain the zip and signature files for a release or release candidate."
+echo "The full tree will look something like this example:"
+echo " dist/"
+echo " dev/"
+echo " incubator/"
+echo " datasketches/"
+echo " KEYS"
+echo " memory/"
+echo " 0.12.3-incubating-RC1/"
+echo " apache-datasketches-memory-0.12.3-incubating-src.zip"
+echo " apache-datasketches-memory-0.12.3-incubating-src.zip.asc"
+echo " apache-datasketches-memory-0.12.3-incubating-src.zip.sha512"
+echo " etc."
+echo
+echo "===================Check List======================"
+echo "1. Verify that you can successfully read and write to the dist directories using SVN."
+echo
+echo "2. Verify that your GPG keys have been created and stored in:"
+echo " - https://dist.apache.org/repos/dist/dev/incubator/datasketches/KEYS AND"
+echo " - https://dist.apache.org/repos/dist/release/incubator/datasketches/KEYS"
+echo
+echo "3. Verify the POM project.version format is one of:"
+echo " X.Y.Z"
+echo " X.Y.Z-SNAPSHOT"
+echo " X.Y.Z-incubator"
+echo " X.Y.Z-incubator-SNAPSHOT"
+echo
+echo " 'SNAPSHOT', if relevant, is always at the end of the version string and capitalized."
+echo
+echo "4. Note: this script DOES NOT MODIFY POM. You must do that manually."
+echo
+echo "Proceed? [y|N]"
+read confirm
+if [[ $confirm != "y" ]];
+then
+ "Please rerun this script when ready."
+ exit
+fi
+
+# extract the project.artifactId
+ProjectArtifactId=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)
+
+# extract the project.version
+ProjectVersion=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
+
+scripts/bashDeployToDist.sh $ProjectArtifactId $ProjectVersion
+
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org