| 
					
				 | 
			
			
				@@ -7,13 +7,31 @@ build and publish a ``protoc`` executable (a.k.a. artifact) to Maven 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 repositories. The artifact can be used by build automation tools so that users 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 would not need to compile and install ``protoc`` for their systems. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If you would like us to publish protoc artifact for a new platform, please send 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+us a pull request to add support for the new platform. You would need to change 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the following files: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* [build-protoc.sh](build-protoc.sh): script to cross-build the protoc for your 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  platform. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* [pom.xml](pom.xml): script to upload artifacts to maven. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* [build-zip.sh](build-zip.sh): script to package published maven artifacts in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  our release page. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Maven Location 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The published protoc artifacts are available on Maven here: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    http://central.maven.org/maven2/com/google/protobuf/protoc/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ## Versioning 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The version of the ``protoc`` artifact must be the same as the version of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Protobuf project. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ## Artifact name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The name of a published ``protoc`` artifact is in the following format: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``protoc-<version>-<os>-<arch>.exe``, e.g., ``protoc-3.0.0-alpha-3-windows-x86_64.exe``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``protoc-<version>-<os>-<arch>.exe``, e.g., ``protoc-3.6.1-linux-x86_64.exe``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Note that artifacts for linux/macos also have the `.exe` suffix but they are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+not windows binaries. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ## System requirement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Install [Apache Maven](http://maven.apache.org/) if you don't have it. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -29,95 +47,116 @@ generate the configure script. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Under the protobuf project directory: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ ./autogen.sh && ./configure && make 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ ./autogen.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-## To install artifacts locally 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-The following command will install the ``protoc`` artifact to your local Maven repository. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### Build the artifact for each platform 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Run the build-protoc.sh script under this protoc-artifacts directory to build the protoc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+artifact for each platform.  For example: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ mvn install 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ cd protoc-artifacts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ ./build-protoc.sh linux x86_64 protoc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-## Cross-compilation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-The Maven script will try to detect the OS and the architecture from Java 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-system properties. It's possible to build a protoc binary for an architecture 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-that is different from what Java has detected, as long as you have the proper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-compilers installed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The above command will produce a `target/linux/x86_64/protoc` binary under the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+protoc-artifacts directory. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-You can override the Maven properties ``os.detected.name`` and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``os.detected.arch`` to force the script to generate binaries for a specific OS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-and/or architecture. Valid values are defined as the return values of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``normalizeOs()`` and ``normalizeArch()`` of ``Detector`` from 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-[os-maven-plugin](https://github.com/trustin/os-maven-plugin/blob/master/src/main/java/kr/motd/maven/os/Detector.java). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Frequently used values are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- ``os.detected.name``: ``linux``, ``osx``, ``windows``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- ``os.detected.arch``: ``x86_32``, ``x86_64`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+For a list of supported platforms, see the comments in the build-protoc.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+script. We only use this script to build artifacts on Ubuntu and MacOS (both 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+with x86_64, and do cross-compilation for other platforms. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### Tips for building for Linux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+We build on Centos 6.9 to provide a good compatibility for not very new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+systems. We have provided a ``Dockerfile`` under this directory to build the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+environment. It has been tested with Docker 1.6.1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+To build a image: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-For example, MinGW32 only ships with 32-bit compilers, but you can still build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-32-bit protoc under 64-bit Windows, with the following command: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ mvn install -Dos.detected.arch=x86_32 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ docker build -t protoc-artifacts . 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+To run the image: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ docker run -it --rm=true protoc-artifacts bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+To checkout protobuf (run within the container): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ # Replace v3.5.1 with the version you want 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ wget -O - https://github.com/google/protobuf/archive/v3.5.1.tar.gz | tar xvzp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### Windows build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+We no longer use scripts in this directory to build windows artifacts. Instead, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+we use Visual Studio 2015 to build our windows release artifacts. See our 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+[kokoro windows build scripts here](../kokoro/release/protoc/windows/build.bat). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+To upload windows artifacts, copy the built binaries into this directory and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+put it into the target/windows/(x86_64|x86_32) directory the same way as the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+artifacts for other platforms. That will allow the maven script to find and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+upload the artifacts to maven. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ## To push artifacts to Maven Central 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-You need to perform the deployment for every platform that you want to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-support. DO NOT close the staging repository until you have done the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-deployment for all platforms. Currently the following platforms are supported: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Linux (x86_32, x86_64 and cross compiled aarch_64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Windows (x86_32 and x86_64) with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  - Cygwin64 with MinGW compilers (x86_64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  - MSYS with MinGW32 (x86_32) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  - Cross compile in Linux with MinGW-w64 (x86_32, x86_64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- MacOSX (x86_32 and x86_64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-As for MSYS2/MinGW64 for Windows: protoc will build, but it insists on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-adding a dependency of `libwinpthread-1.dll`, which isn't shipped with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Windows. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Before you do the deployment, make sure you have built the protoc artifacts for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+every supported platform and put them under the target directory. Example 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+target directory layout: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    + pom.xml 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    + target 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      + linux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        + x86_64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          protoc.exe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        + x86_32 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          protoc.exe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      + macos 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        + x86_64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          protoc.exe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        + x86_32 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          protoc.exe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      + windows 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        + x86_64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          protoc.exe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        + x86_32 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          protoc.exe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+You will need to build the artifacts on multiple machines and gather them 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+together into one place. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-An arm64 artifact can be deployed from x86 host with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``-Dos.detected.arch=aarch_64`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-A windows artifact can be deployed from a linux machine with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``-Dos.detected.name=windows`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-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. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+in the name like ``comgoogle-123``. Verify that the staging repository has all 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the binaries, close and release this repository. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ## Upload zip packages to github release page. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 After uploading protoc artifacts to Maven Central repository, run the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 build-zip.sh script to bulid zip packages for these protoc binaries 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 and upload these zip packages to the download section of the github 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 release. For example: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ ./build-zip.sh 3.0.0-beta-4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ ./build-zip.sh 3.6.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The above command will create 5 zip files: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 dist/protoc-3.0.0-beta-4-win32.zip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 dist/protoc-3.0.0-beta-4-osx-x86_32.zip 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -125,67 +164,14 @@ dist/protoc-3.0.0-beta-4-osx-x86_64.zip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 dist/protoc-3.0.0-beta-4-linux-x86_32.zip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 dist/protoc-3.0.0-beta-4-linux-x86_64.zip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Before running the script, make sure the artifacts are accessible from: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 http://repo1.maven.org/maven2/com/google/protobuf/protoc/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-### Tips for deploying on Linux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-We build on Centos 6.6 to provide a good compatibility for not very new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-systems. We have provided a ``Dockerfile`` under this directory to build the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-environment. It has been tested with Docker 1.6.1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-To build a image: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ docker build -t protoc-artifacts . 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-To run the image: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ docker run -it --rm=true protoc-artifacts bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-To checkout protobuf (run within the container): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ # Replace v3.5.1 with the version you want 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ wget -O - https://github.com/google/protobuf/archive/v3.5.1.tar.gz | tar xvzp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-### 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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-<settings> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  <servers> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <server> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <id>sonatype-nexus-staging</id> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <username>[username]</username> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <password>[password]</password> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    </server> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  </servers> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  <profiles> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <profile> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <id>gpg</id> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <properties> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <gpg.executable>gpg</gpg.executable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <gpg.passphrase>[password]</gpg.passphrase> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </properties> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    </profile> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  </profiles> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  <activeProfiles> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <activeProfile>gpg</activeProfile> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  </activeProfiles> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-</settings> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-### Tested build environments 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Tested build environments 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 We have successfully built artifacts on the following environments: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 - Linux x86_32 and x86_64: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  - Centos 6.6 (within Docker 1.6.1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  - Ubuntu 14.04.2 64-bit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Linux aarch_64: Cross compiled with `g++-aarch64-linux-gnu` on Ubuntu 14.04.2 64-bit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Windows x86_32: MSYS with ``mingw32-gcc-g++ 4.8.1-4`` on Windows 7 64-bit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Windows x86_32: Cross compile with ``i686-w64-mingw32-g++ 4.8.2`` on Ubuntu 14.04.2 64-bit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Windows x86_64: Cygwin64 with ``mingw64-x86_64-gcc-g++ 4.8.3-1`` on Windows 7 64-bit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Windows x86_64: Cross compile with ``x86_64-w64-mingw32-g++ 4.8.2`` on Ubuntu 14.04.2 64-bit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  - Centos 6.9 (within Docker 1.6.1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  - Ubuntu 14.04.5 64-bit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- Linux aarch_64: Cross compiled with `g++-aarch64-linux-gnu` on Ubuntu 14.04.5 64-bit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 - Mac OS X x86_32 and x86_64: Mac OS X 10.9.5 
			 |