This is an automated email from the ASF dual-hosted git repository.
oleewere pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new d06469a AMBARI-24558. Add setup.py for ambari python packages (for
using with pip) (#2195)
d06469a is described below
commit d06469a094c9e76c0e9cc6dd490198e24d4965f9
Author: Olivér Szabó <[email protected]>
AuthorDate: Thu Aug 30 19:12:13 2018 +0200
AMBARI-24558. Add setup.py for ambari python packages (for using with pip)
(#2195)
* AMBARI-24558. Add setup.py for ambari-commons (for pip)
* AMBARI-24558 Add /usr/bin/env python
* AMBARI-24558. Find subpackages + rename module + move setup.py to root
* AMBARI-24558. Add descriptions + .gitignore
* AMBARI-24558. Add descriptions + .gitignore
* AMBARI-24558. Extends default version to __version__ in order to replace
that during builds.
* AMBARI-24558. Fix last commit
* AMBARI-24558. Add rat check excludes
---
.gitignore | 3 +++
MANIFEST.in | 14 +++++++++++
pom.xml | 4 ++++
setup.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 98 insertions(+)
diff --git a/.gitignore b/.gitignore
index 63de799..7e5a649 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,3 +29,6 @@ createDDL.jdbc
/contrib/views/storm/src/main/resources/ui/node_modules/
/contrib/views/storm/src/main/resources/ui/public/
/contrib/views/storm/src/main/resources/ui/npm-debug.log
+/dist
+/build
+ambari_python.egg-info
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..243a688
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,14 @@
+# Licensed 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.
+include ambari-common/src/main/python/ambari_commons/resources/*
+include ambari-common/src/main/python/ambari_commons/libs/**/*.so
+include ambari-common/src/main/python/pluggable_stack_definition/configs/*
diff --git a/pom.xml b/pom.xml
index b4d7df9..61300d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -372,6 +372,10 @@
<!-- generated DDL-->
<exclude>**/createDDL.jdbc</exclude>
<exclude>**/yarn.lock</exclude>
+
+ <exclude>ambari_python.egg-info/**</exclude>
+ <exclude>dist/**</exclude>
+ <exclude>build/**</exclude>
</excludes>
</configuration>
<executions>
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..836a58e
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python
+'''
+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.
+'''
+
+import os
+from os.path import dirname
+from setuptools import find_packages, setup
+
+AMBARI_COMMON_PYTHON_FOLDER = "ambari-common/src/main/python"
+AMBARI_SERVER_TEST_PYTHON_FOLDER = "ambari-server/src/test/python"
+
+def get_ambari_common_packages():
+ return find_packages(AMBARI_COMMON_PYTHON_FOLDER, exclude=["*.tests",
"*.tests.*", "tests.*", "tests"])
+
+def get_ambari_server_stack_package():
+ return ["stacks.utils"]
+
+def create_package_dir_map():
+ package_dirs = {}
+ ambari_common_packages = get_ambari_common_packages()
+ for ambari_common_package in ambari_common_packages:
+ package_dirs[ambari_common_package] = AMBARI_COMMON_PYTHON_FOLDER + '/' +
ambari_common_package.replace(".", "/")
+
+ ambari_server_packages = get_ambari_server_stack_package()
+ for ambari_server_package in ambari_server_packages:
+ package_dirs[ambari_server_package] = AMBARI_SERVER_TEST_PYTHON_FOLDER +
'/' + ambari_server_package.replace(".", "/")
+ return package_dirs
+__version__ = "3.0.0.dev0"
+def get_version():
+ ambari_version = os.environ["AMBARI_VERSION"] if "AMBARI_VERSION" in
os.environ else __version__
+ print ambari_version
+ return ambari_version
+
+"""
+Example usage:
+- build package with specific version:
+ python setup.py sdist -d "my/dist/location"
+- build and install package with specific version:
+ python setup.py sdist -d "my/dist/location" install
+- build and upload package with specific version:
+ python setup.py sdist -d "my/dist/location" upload -r "http://localhost:8080"
+
+Installing from pip:
+- pip install --extra-index-url=http://localhost:8080 ambari-python==2.7.1 //
3.0.0.dev0 is the snapshot version
+
+Note: using 'export AMBARI_VERSION=2.7.1' before commands you can redefine the
package version, but you will need this export during the pip install as well
+"""
+setup(
+ name = "ambari-python",
+ version = get_version(),
+ author = "Apache Software Foundation",
+ author_email = "[email protected]",
+ description = ("Framework for provison/manage/monitor Hadoop clusters"),
+ license = "AP2",
+ keywords = "hadoop, ambari",
+ url = "https://ambari.apache.org",
+ packages = get_ambari_common_packages() + get_ambari_server_stack_package(),
+ package_dir = create_package_dir_map(),
+ include_package_data = True,
+ long_description="The Apache Ambari project is aimed at making Hadoop
management simpler by developing software for provisioning, managing, and
monitoring Apache Hadoop clusters. "
+ "Ambari provides an intuitive, easy-to-use Hadoop
management web UI backed by its RESTful APIs."
+)