diff --git a/protoc-artifacts/README.md b/protoc-artifacts/README.md
index 2f3ed2186..8768a05b8 100644
--- a/protoc-artifacts/README.md
+++ b/protoc-artifacts/README.md
@@ -54,7 +54,62 @@ Before you can upload artifacts to Maven Central repository, make sure you have
read [this page](http://central.sonatype.org/pages/apache-maven.html) on how to
configure GPG and Sonatype account.
-Use the following command to upload artifacts:
+You need to perform the deployment for every platform that you want to
+suppport. DO NOT close the staging repository until you have done the
+deployment for all platforms.
+
+Remove any ``SNAPSHOT`` or ``pre`` suffix from the version string before
+deploying.
+
+Use the following command to deploy artifacts for the host platform to a
+staging repository.
```
$ mvn clean deploy -P release
```
+It creates a new staging repository. Go to
+https://oss.sonatype.org/#stagingRepositories and find the repository, usually
+in the name like ``comgoogle-123``.
+
+You will want to run this command on a different platform. Remember, in
+subsequent deployments you will need to provide the repository name that you
+have found in the first deployment so that all artifacts go to the same
+repository:
+```
+$ mvn clean deploy -P release -Dstaging.repository=comgoogle-123
+```
+
+A 32-bit artifact can be deployed from a 64-bit host with
+``-Dos.detected.arch=x86_32``
+
+When you have done deployment for all platforms, go to
+https://oss.sonatype.org/#stagingRepositories, verify that the staging
+repository has all the binaries, close and release this repository.
+
+### Tips for deploying on Windows
+Under Windows the following error may occur: ``gpg: cannot open tty `no tty':
+No such file or directory``. This can be fixed by configuring gpg through an
+active profile in ``.m2\settings.xml`` where also the Sonatype password is
+stored:
+```xml
+
+
+
+ ossrh
+ [username]
+ [password]
+
+
+
+
+ gpg
+
+ gpg
+ [password]
+
+
+
+
+ gpg
+
+
+```
diff --git a/protoc-artifacts/build-protoc.sh b/protoc-artifacts/build-protoc.sh
index 50c4b3492..714b1bec7 100755
--- a/protoc-artifacts/build-protoc.sh
+++ b/protoc-artifacts/build-protoc.sh
@@ -71,7 +71,13 @@ checkArch ()
fi
elif [[ "$OS" == osx ]]; then
format="$(file -b "$1" | grep -o "[^ ]*$")"
- assertEq $format "x86_64" $LINENO
+ if [[ "$ARCH" == x86_32 ]]; then
+ assertEq $format "i386" $LINENO
+ elif [[ "$ARCH" == x86_64 ]]; then
+ assertEq $format "x86_64" $LINENO
+ else
+ fail "Unsupported arch: $ARCH"
+ fi
else
fail "Unsupported system: $(uname)"
fi
@@ -120,6 +126,13 @@ elif [[ "$(uname)" == Linux* ]]; then
fi
elif [[ "$(uname)" == Darwin* ]]; then
assertEq "$OS" osx $LINENO
+ if [[ "$ARCH" == x86_64 ]]; then
+ CXXFLAGS="$CXXFLAGS -m64"
+ elif [[ "$ARCH" == x86_32 ]]; then
+ CXXFLAGS="$CXXFLAGS -m32"
+ else
+ fail "Unsupported arch: $ARCH"
+ fi
else
fail "Unsupported system: $(uname)"
fi
diff --git a/protoc-artifacts/pom.xml b/protoc-artifacts/pom.xml
index 7db7b53d0..6cfcf0574 100644
--- a/protoc-artifacts/pom.xml
+++ b/protoc-artifacts/pom.xml
@@ -90,6 +90,9 @@
release
+
+
+
@@ -114,7 +117,9 @@
sonatype-nexus-staging
https://oss.sonatype.org/
+ true
false
+ ${staging.repository}