This is an automated email from the ASF dual-hosted git repository.

mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new f0fba94  Use python xml to parse pom for version instead of xmllint 
(#3562)
f0fba94 is described below

commit f0fba94f85b1ba9785c3a6448c89af497177ad6b
Author: Matteo Merli <[email protected]>
AuthorDate: Tue Feb 12 20:28:10 2019 -0800

    Use python xml to parse pom for version instead of xmllint (#3562)
---
 docker/get-version.sh                               |  4 +---
 pulsar-client-cpp/lib/CMakeLists.txt                |  2 +-
 pulsar-client-cpp/pkg/deb/build-deb.sh              |  2 +-
 pulsar-client-cpp/pkg/rpm/build-rpm.sh              |  2 +-
 pulsar-client-cpp/python/setup.py                   | 15 +++++++--------
 docker/get-version.sh => src/get-project-version.py | 17 ++++++++---------
 src/stage-release.sh                                |  4 ++--
 7 files changed, 21 insertions(+), 25 deletions(-)

diff --git a/docker/get-version.sh b/docker/get-version.sh
index b2318ba..a4607b6 100755
--- a/docker/get-version.sh
+++ b/docker/get-version.sh
@@ -23,8 +23,6 @@ ROOT_DIR=$(git rev-parse --show-toplevel)
 pushd $ROOT_DIR > /dev/null
 
 # Get the project version from the Maven pom.xml
-cat pom.xml | xmllint --format - \
-    | sed "s/xmlns=\".*\"//g" | xmllint --stream --pattern /project/version 
--debug - \
-    | grep -A 2 "matches pattern" | grep text | sed "s/.* [0-9] //g"
+src/get-project-version.py
 
 popd > /dev/null
diff --git a/pulsar-client-cpp/lib/CMakeLists.txt 
b/pulsar-client-cpp/lib/CMakeLists.txt
index 8f74b96..dc71d01 100644
--- a/pulsar-client-cpp/lib/CMakeLists.txt
+++ b/pulsar-client-cpp/lib/CMakeLists.txt
@@ -19,7 +19,7 @@
 
 file(GLOB PULSAR_SOURCES *.cc lz4/*.c checksum/*.cc stats/*.cc c/*.cc 
auth/*.cc auth/athenz/*.cc)
 
-execute_process(COMMAND cat ../pom.xml COMMAND xmllint --format - COMMAND sed 
"s/xmlns=\".*\"//g" COMMAND xmllint --stream --pattern /project/version --debug 
- COMMAND grep -A 2 "matches pattern" COMMAND grep text COMMAND sed "s/.* [0-9] 
//g" OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE PV)
+execute_process(COMMAND ../src/get-project-version.py 
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE PV)
 set (CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -D_PULSAR_VERSION_=\\\"${PV}\\\"")
 
 # Protobuf generation is only supported natively starting from CMake 3.8
diff --git a/pulsar-client-cpp/pkg/deb/build-deb.sh 
b/pulsar-client-cpp/pkg/deb/build-deb.sh
index d1120b8..84f1f81 100755
--- a/pulsar-client-cpp/pkg/deb/build-deb.sh
+++ b/pulsar-client-cpp/pkg/deb/build-deb.sh
@@ -24,7 +24,7 @@ cd /pulsar
 SRC_ROOT_DIR=$(git rev-parse --show-toplevel)
 cd $SRC_ROOT_DIR/pulsar-client-cpp/pkg/deb
 
-POM_VERSION=`cat ../../../pom.xml | xmllint --format - | sed 
"s/xmlns=\".*\"//g" | xmllint --stream --pattern /project/version --debug - |  
grep -A 2 "matches pattern" |  grep text |  sed "s/.* [0-9] //g"`
+POM_VERSION=`$SRC_ROOT_DIR/src/get-project-version.py`
 # Sanitize VERSION by removing `SNAPSHOT` if any since it's not legal in DEB
 VERSION=`echo $POM_VERSION | awk -F-  '{print $1}'`
 
diff --git a/pulsar-client-cpp/pkg/rpm/build-rpm.sh 
b/pulsar-client-cpp/pkg/rpm/build-rpm.sh
index 099a015..f4ef313 100755
--- a/pulsar-client-cpp/pkg/rpm/build-rpm.sh
+++ b/pulsar-client-cpp/pkg/rpm/build-rpm.sh
@@ -24,7 +24,7 @@ cd /pulsar
 ROOT_DIR=$(git rev-parse --show-toplevel)
 cd $ROOT_DIR/pulsar-client-cpp/pkg/rpm
 
-POM_VERSION=`cat ../../../pom.xml | xmllint --format - | sed 
"s/xmlns=\".*\"//g" | xmllint --stream --pattern /project/version --debug - |  
grep -A 2 "matches pattern" |  grep text |  sed "s/.* [0-9] //g"`
+POM_VERSION=`$ROOT_DIR/src/get-project-version.py`
 
 # Sanitize VERSION by removing `-incubating` since it's not legal in RPM
 VERSION=`echo $POM_VERSION | awk -F-  '{print $1}'`
diff --git a/pulsar-client-cpp/python/setup.py 
b/pulsar-client-cpp/python/setup.py
index 7524388..89fc9c1 100644
--- a/pulsar-client-cpp/python/setup.py
+++ b/pulsar-client-cpp/python/setup.py
@@ -24,20 +24,19 @@ import sys
 
 from distutils.command import build_ext
 
+import xml.etree.ElementTree as ET
+from os.path import dirname, realpath, join
 
 def get_version():
     # Get the pulsar version from pom.xml
-    command = '''cat ../../pom.xml | xmllint --format - | \\
-        sed "s/xmlns=\\".*\\"//g" | xmllint --stream --pattern 
/project/version --debug - | \\
-        grep -A 2 "matches pattern" | grep text | sed "s/.* [0-9] //g"'''
-    process = subprocess.Popen(['bash', '-c', command], stdout=subprocess.PIPE)
-    output, error = process.communicate()
-    if error:
-        raise 'Failed to get version: ' + error
+    TOP_LEVEL_PATH = dirname(dirname(dirname(realpath(__file__))))
+    POM_PATH = join(TOP_LEVEL_PATH, 'pom.xml')
+    root = ET.XML(open(POM_PATH).read())
+    version = 
root.find('{http://maven.apache.org/POM/4.0.0}version').text.strip()
 
     # Strip the '-incubating' suffix, since it prevents the packages
     # from being uploaded into PyPI
-    return output.strip().decode('utf-8', 'strict').split('-')[0]
+    return version.split('-')[0]
 
 
 VERSION = get_version()
diff --git a/docker/get-version.sh b/src/get-project-version.py
similarity index 68%
copy from docker/get-version.sh
copy to src/get-project-version.py
index b2318ba..631cd68 100755
--- a/docker/get-version.sh
+++ b/src/get-project-version.py
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env python
 #
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
@@ -18,13 +18,12 @@
 # under the License.
 #
 
-ROOT_DIR=$(git rev-parse --show-toplevel)
+import xml.etree.ElementTree as ET
+from os.path import dirname, realpath, join
 
-pushd $ROOT_DIR > /dev/null
+# Derive the POM path from the current script location
+TOP_LEVEL_PATH = dirname(dirname(realpath(__file__)))
+POM_PATH = join(TOP_LEVEL_PATH, 'pom.xml')
 
-# Get the project version from the Maven pom.xml
-cat pom.xml | xmllint --format - \
-    | sed "s/xmlns=\".*\"//g" | xmllint --stream --pattern /project/version 
--debug - \
-    | grep -A 2 "matches pattern" | grep text | sed "s/.* [0-9] //g"
-
-popd > /dev/null
+root = ET.XML(open(POM_PATH).read())
+print(root.find('{http://maven.apache.org/POM/4.0.0}version').text)
diff --git a/src/stage-release.sh b/src/stage-release.sh
index 1a512d9..db0bc6c 100755
--- a/src/stage-release.sh
+++ b/src/stage-release.sh
@@ -27,9 +27,9 @@ fi
 
 DEST_PATH=$1
 
-pushd $(dirname "$0")/..
+pushd $(dirname "$0")
 PULSAR_PATH=$(git rev-parse --show-toplevel)
-VERSION=`cat pom.xml | xmllint --format - | sed "s/xmlns=\".*\"//g" | xmllint 
--stream --pattern /project/version --debug - |  grep -A 2 "matches pattern" |  
grep text |  sed "s/.* [0-9] //g"`
+VERSION=`./get-project-version.py`
 popd
 
 cp $PULSAR_PATH/distribution/server/target/apache-pulsar-$VERSION-src.tar.gz 
$DEST_PATH

Reply via email to