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