From 7add16d3d9c06d3a806c165559601056a6269e0e Mon Sep 17 00:00:00 2001 From: John Burwell Date: Sat, 2 Apr 2016 18:31:08 -0400 Subject: [PATCH] CLOUDSTACK-9334: Support jenv and pyenv to manage Java and Python versions * Adds .java-version to specify Java 1.7 as the JDK version to use for CloudStack development. * Adds .python-vresion to specify Python 2.7.11 as the Python to use for CloudStack development. * Adds requirements.txt to specify the default dependencies used for CloudStack development. It does not include Marvin's dependencies because it's bundle already defines the dependencies which are installed with Marvin. * Adds .java-version and .python-version to the RAT excludes because neither jenv or pyenv support comments in these files * Updates INSTALL.md to explain how to utilize jenv and pyenv for CloudStack development --- .java-version | 1 + .python-version | 1 + INSTALL.md | 17 +++++++++++++++++ pom.xml | 2 ++ requirements.txt | 21 +++++++++++++++++++++ 5 files changed, 42 insertions(+) create mode 100644 .java-version create mode 100644 .python-version create mode 100644 requirements.txt diff --git a/.java-version b/.java-version new file mode 100644 index 000000000000..d3bdbdf1fdae --- /dev/null +++ b/.java-version @@ -0,0 +1 @@ +1.7 diff --git a/.python-version b/.python-version new file mode 100644 index 000000000000..564383308e11 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +cloudstack diff --git a/INSTALL.md b/INSTALL.md index 9924ba91f5a4..8a83fb0f7204 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -38,6 +38,23 @@ Start the MySQL service: $ service mysqld start +### Using jenv and/or pyenv for Version Management + +CloudStack is built using Java and Python. To make selection of these tools versions more consistent and ease installation for developers, optional support for [jenv](http://www.jenv.be/) and [pyenv](https://github.com/yyuu/pyenv) with [virtualenv]|(https://github.com/yyuu/pyenv-virtualenv) is provided. jenv installation instructions are available here and pyenv installation instructions are available here. For users of [oh-my-zsh](http://ohmyz.sh/) there is a pyenv plugin available to trigger configuration of pyenv in a shell session. + +Following installation, execute the following commands to configure jenv and pyenv for use with CloudStack development: + +''' + # pyenv install 2.7.11 # Install Python 2.7.11 + # pyenv virtualenv 2.7.11 cloudstack # Create a cloidstack virtualenv using Python 2.7.11 + # pip install -r /requirements.txt # Install cloudstack Python dependencies + # jenv add # Add Java7 to jenv +''' + +*N.B.* If you are running Linux, you may need to install additional packages to allow pyenv to build Python. + +Following these steps, jenv and pyenv will use .java-version and .python-version files in the root of the CloudStack source tree to switch to the correct Java version and the cloudstack Python virtualenv for CloudStack development. + ## Getting the Source Code You may get the source code from the repository hosted on Apache: diff --git a/pom.xml b/pom.xml index c18c377cf226..724aeb1f09c9 100644 --- a/pom.xml +++ b/pom.xml @@ -756,6 +756,8 @@ CONTRIBUTING.md tools/docker/Dockerfile tools/docker/supervisord.conf + .java-version + .python-version .idea/ **/*.log **/*.patch diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000000..f5c766623112 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,21 @@ +# 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. + +# Install the latest version of cloudmonkey +cloudmonkey + +# Marvin dependencies are installed via its bundle