You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by al...@apache.org on 2017/03/27 22:33:24 UTC
[1/2] beam git commit: [BEAM-1693] Detect supported Python & pip
executables in Python-SDK
Repository: beam
Updated Branches:
refs/heads/master 07274bbfe -> affcca669
[BEAM-1693] Detect supported Python & pip executables in Python-SDK
Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/c7c153a5
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/c7c153a5
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/c7c153a5
Branch: refs/heads/master
Commit: c7c153a5945d351c868f6d99f0c809317d16d6b8
Parents: 07274bb
Author: Tibor Kiss <ti...@gmail.com>
Authored: Tue Mar 14 20:51:35 2017 +0100
Committer: Ahmet Altay <al...@google.com>
Committed: Mon Mar 27 15:32:51 2017 -0700
----------------------------------------------------------------------
pom.xml | 1 +
sdks/python/findSupportedPython.groovy | 80 +++++++++++++++++++++++++++++
sdks/python/pom.xml | 31 ++++++++++-
3 files changed, 110 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/beam/blob/c7c153a5/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bf1d4f0..e7ae4ca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -137,6 +137,7 @@
<storage.version>v1-rev71-1.22.0</storage.version>
<woodstox.version>4.4.1</woodstox.version>
<spring.version>4.3.5.RELEASE</spring.version>
+ <groovy-maven-plugin.version>2.0</groovy-maven-plugin.version>
<compiler.error.flag>-Werror</compiler.error.flag>
<compiler.default.pkginfo.flag>-Xpkginfo:always</compiler.default.pkginfo.flag>
http://git-wip-us.apache.org/repos/asf/beam/blob/c7c153a5/sdks/python/findSupportedPython.groovy
----------------------------------------------------------------------
diff --git a/sdks/python/findSupportedPython.groovy b/sdks/python/findSupportedPython.groovy
new file mode 100644
index 0000000..6984132
--- /dev/null
+++ b/sdks/python/findSupportedPython.groovy
@@ -0,0 +1,80 @@
+/**
+ * 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 (groovy-maven-plugin) script finds the supported python interpreter and pip
+ * binary in the path. As there is no strict naming convention exists amongst OSes
+ * for Python & pip (some call it python2.7, others name it python-2.7),
+ * the script tries to execute the candidates and query their version.
+ * The first matching interpreter & pip is assigned to "python.interpreter.bin"
+ * and "python.pip.bin" (maven) properties respectively.
+ */
+
+import org.apache.maven.plugin.MojoFailureException
+
+requiredPythonVersion = /.*[Pp]ython 2\.7.*/
+
+pythonCandidates = ["python2.7", "python-2.7", "python2", "python-2", "python"]
+pipCandidates = ["pip2.7", "pip-2.7", "pip2", "pip-2", "pip"]
+
+def String findExecutable(String[] candidates, versionRegex) {
+ for (candidate in candidates) {
+ try {
+ def exec = "${candidate} --version".execute()
+
+ def consoleSB = new StringBuilder()
+ exec.waitForProcessOutput(consoleSB, consoleSB)
+ consoleStr = consoleSB.toString().replaceAll("\\r|\\n", "")
+
+ if (exec.exitValue() == 0 && consoleStr ==~ versionRegex) {
+ return candidate
+ }
+ } catch (IOException e) {
+ continue
+ }
+ }
+ return null
+}
+
+def Boolean isWindows() {
+ return System.properties['os.name'].toLowerCase(Locale.ROOT).contains('windows');
+}
+
+/* On MS Windows applications with dots in the filename can only be executed
+ * if the .exe suffix is also included. That is 'pip2.7' will cause an execution error,
+ * while 'pip2.7.exe' will succeed (given that pip2.7.exe is an executable in the PATH).
+ * The specializeCandidateForOS closure takes care of this conversion.
+ */
+def specializeCandidateForOS = { it -> isWindows() ? it + '.exe' : it }
+
+pythonBin = findExecutable(pythonCandidates.collect(specializeCandidateForOS) as String[],
+ requiredPythonVersion)
+pipBin = findExecutable(pipCandidates.collect(specializeCandidateForOS) as String[],
+ requiredPythonVersion)
+
+if (pythonBin == null) {
+ throw new MojoFailureException("Unable to find Python 2.7 in path")
+}
+
+if (pipBin == null) {
+ throw new MojoFailureException("Unable to find pip for Python 2.7 in path")
+}
+
+log.info("Using python interpreter binary '" + pythonBin + "' with pip '" + pipBin + "'")
+
+project.properties.setProperty("python.pip.bin", pipBin)
+project.properties.setProperty("python.interpreter.bin", pythonBin)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/beam/blob/c7c153a5/sdks/python/pom.xml
----------------------------------------------------------------------
diff --git a/sdks/python/pom.xml b/sdks/python/pom.xml
index cb8307a..aa19770 100644
--- a/sdks/python/pom.xml
+++ b/sdks/python/pom.xml
@@ -33,8 +33,8 @@
<name>Apache Beam :: SDKs :: Python</name>
<properties>
- <python.interpreter.bin>python2</python.interpreter.bin>
- <python.pip.bin>pip2</python.pip.bin>
+ <!-- python.interpreter.bin & python.pip.bin
+ is set dynamically by findSupportedPython.groovy -->
<python.build.base>${project.build.directory}/build</python.build.base>
<python.user.base>${project.build.directory}/python</python.user.base>
</properties>
@@ -56,6 +56,33 @@
</pluginManagement>
<plugins>
<plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>groovy-maven-plugin</artifactId>
+ <version>${groovy-maven-plugin.version}</version>
+ <executions>
+ <execution>
+ <id>find-supported-python-for-clean</id>
+ <phase>pre-clean</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${project.basedir}/findSupportedPython.groovy</source>
+ </configuration>
+ </execution>
+ <execution>
+ <id>find-supported-python-for-compile</id>
+ <phase>initialize</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${project.basedir}/findSupportedPython.groovy</source>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
[2/2] beam git commit: This closes #2243
Posted by al...@apache.org.
This closes #2243
Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/affcca66
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/affcca66
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/affcca66
Branch: refs/heads/master
Commit: affcca669f2a87b9f6410f99cf9608ab92af5b28
Parents: 07274bb c7c153a
Author: Ahmet Altay <al...@google.com>
Authored: Mon Mar 27 15:33:10 2017 -0700
Committer: Ahmet Altay <al...@google.com>
Committed: Mon Mar 27 15:33:10 2017 -0700
----------------------------------------------------------------------
pom.xml | 1 +
sdks/python/findSupportedPython.groovy | 80 +++++++++++++++++++++++++++++
sdks/python/pom.xml | 31 ++++++++++-
3 files changed, 110 insertions(+), 2 deletions(-)
----------------------------------------------------------------------