You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by he...@apache.org on 2019/10/18 11:35:19 UTC

[flink] branch release-1.9 updated: [FLINK-14445][python] Fix python module build failed when making sdist.

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

hequn pushed a commit to branch release-1.9
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.9 by this push:
     new ab48243  [FLINK-14445][python] Fix python module build failed when making sdist.
ab48243 is described below

commit ab48243e10a83c57d1c3c39c3ef08a25a26cc429
Author: Wei Zhong <we...@gmail.com>
AuthorDate: Fri Oct 18 15:10:22 2019 +0800

    [FLINK-14445][python] Fix python module build failed when making sdist.
    
    This closes #9932.
---
 flink-python/setup.py | 112 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 69 insertions(+), 43 deletions(-)

diff --git a/flink-python/setup.py b/flink-python/setup.py
index 4854bfa..c49dcac 100644
--- a/flink-python/setup.py
+++ b/flink-python/setup.py
@@ -62,6 +62,10 @@ README_FILE_TEMP_PATH = os.path.join("pyflink", "README.txt")
 in_flink_source = os.path.isfile("../flink-java/src/main/java/org/apache/flink/api/java/"
                                  "ExecutionEnvironment.java")
 
+# Due to changes in FLINK-14008, the licenses directory and NOTICE file may not exist in
+# build-target folder. Just ignore them in this case.
+exist_licenses = None
+exist_notice = None
 try:
     if in_flink_source:
 
@@ -97,6 +101,9 @@ run sdist.
         NOTICE_FILE_PATH = os.path.join(FLINK_HOME, "NOTICE")
         README_FILE_PATH = os.path.join(FLINK_HOME, "README.txt")
 
+        exist_licenses = os.path.exists(LICENSES_PATH)
+        exist_notice = os.path.exists(NOTICE_FILE_PATH)
+
         if not os.path.isdir(LIB_PATH):
             print(incorrect_invocation_message, file=sys.stderr)
             sys.exit(-1)
@@ -106,22 +113,26 @@ run sdist.
             os.symlink(OPT_PATH, OPT_TEMP_PATH)
             os.symlink(CONF_PATH, CONF_TEMP_PATH)
             os.symlink(EXAMPLES_PATH, EXAMPLES_TEMP_PATH)
-            os.symlink(LICENSES_PATH, LICENSES_TEMP_PATH)
+            if exist_licenses:
+                os.symlink(LICENSES_PATH, LICENSES_TEMP_PATH)
             os.symlink(PLUGINS_PATH, PLUGINS_TEMP_PATH)
             os.symlink(SCRIPTS_PATH, SCRIPTS_TEMP_PATH)
             os.symlink(LICENSE_FILE_PATH, LICENSE_FILE_TEMP_PATH)
-            os.symlink(NOTICE_FILE_PATH, NOTICE_FILE_TEMP_PATH)
+            if exist_notice:
+                os.symlink(NOTICE_FILE_PATH, NOTICE_FILE_TEMP_PATH)
             os.symlink(README_FILE_PATH, README_FILE_TEMP_PATH)
         else:
             copytree(LIB_PATH, LIB_TEMP_PATH)
             copytree(OPT_PATH, OPT_TEMP_PATH)
             copytree(CONF_PATH, CONF_TEMP_PATH)
             copytree(EXAMPLES_PATH, EXAMPLES_TEMP_PATH)
-            copytree(LICENSES_PATH, LICENSES_TEMP_PATH)
+            if exist_licenses:
+                copytree(LICENSES_PATH, LICENSES_TEMP_PATH)
             copytree(PLUGINS_PATH, PLUGINS_TEMP_PATH)
             copytree(SCRIPTS_PATH, SCRIPTS_TEMP_PATH)
             copy(LICENSE_FILE_PATH, LICENSE_FILE_TEMP_PATH)
-            copy(NOTICE_FILE_PATH, NOTICE_FILE_TEMP_PATH)
+            if exist_notice:
+                copy(NOTICE_FILE_PATH, NOTICE_FILE_TEMP_PATH)
             copy(README_FILE_PATH, README_FILE_TEMP_PATH)
         os.mkdir(LOG_TEMP_PATH)
         with open(os.path.join(LOG_TEMP_PATH, "empty.txt"), 'w') as f:
@@ -134,50 +145,61 @@ run sdist.
                   "is complete, or do this in the flink-python directory of the flink source "
                   "directory.")
             sys.exit(-1)
+        exist_licenses = os.path.exists(LICENSES_TEMP_PATH)
+        exist_notice = os.path.exists(NOTICE_FILE_TEMP_PATH)
 
     script_names = ["pyflink-shell.sh", "find-flink-home.sh"]
     scripts = [os.path.join(SCRIPTS_TEMP_PATH, script) for script in script_names]
     scripts.append("pyflink/find_flink_home.py")
 
+    PACKAGES = ['pyflink',
+                'pyflink.table',
+                'pyflink.util',
+                'pyflink.datastream',
+                'pyflink.dataset',
+                'pyflink.common',
+                'pyflink.lib',
+                'pyflink.opt',
+                'pyflink.conf',
+                'pyflink.log',
+                'pyflink.examples',
+                'pyflink.plugins',
+                'pyflink.bin']
+
+    PACKAGE_DIR = {
+        'pyflink.lib': TEMP_PATH + '/lib',
+        'pyflink.opt': TEMP_PATH + '/opt',
+        'pyflink.conf': TEMP_PATH + '/conf',
+        'pyflink.log': TEMP_PATH + '/log',
+        'pyflink.examples': TEMP_PATH + '/examples',
+        'pyflink.plugins': TEMP_PATH + '/plugins',
+        'pyflink.bin': TEMP_PATH + '/bin'}
+
+    PACKAGE_DATA = {
+        'pyflink': ['LICENSE', 'README.txt'],
+        'pyflink.lib': ['*.jar'],
+        'pyflink.opt': ['*.*', '*/*'],
+        'pyflink.conf': ['*'],
+        'pyflink.log': ['*'],
+        'pyflink.examples': ['*.py', '*/*.py'],
+        'pyflink.plugins': ['*', '*/*'],
+        'pyflink.bin': ['*']}
+
+    if exist_licenses:
+        PACKAGES.append('pyflink.licenses')
+        PACKAGE_DIR['pyflink.licenses'] = TEMP_PATH + '/licenses'
+        PACKAGE_DATA['pyflink.licenses'] = ['*']
+
+    if exist_notice:
+        PACKAGE_DATA['pyflink'].append('NOTICE')
+
     setup(
         name='apache-flink',
         version=VERSION,
-        packages=['pyflink',
-                  'pyflink.table',
-                  'pyflink.util',
-                  'pyflink.datastream',
-                  'pyflink.dataset',
-                  'pyflink.common',
-                  'pyflink.lib',
-                  'pyflink.opt',
-                  'pyflink.conf',
-                  'pyflink.log',
-                  'pyflink.examples',
-                  'pyflink.licenses',
-                  'pyflink.plugins',
-                  'pyflink.bin'],
+        packages=PACKAGES,
         include_package_data=True,
-        package_dir={
-            'pyflink.lib': TEMP_PATH + '/lib',
-            'pyflink.opt': TEMP_PATH + '/opt',
-            'pyflink.conf': TEMP_PATH + '/conf',
-            'pyflink.log': TEMP_PATH + '/log',
-            'pyflink.examples': TEMP_PATH + '/examples',
-            'pyflink.licenses': TEMP_PATH + '/licenses',
-            'pyflink.plugins': TEMP_PATH + '/plugins',
-            'pyflink.bin': TEMP_PATH + '/bin'
-        },
-        package_data={
-            'pyflink': ['LICENSE', 'NOTICE', 'README.txt'],
-            'pyflink.lib': ['*.jar'],
-            'pyflink.opt': ['*.*', '*/*'],
-            'pyflink.conf': ['*'],
-            'pyflink.log': ['*'],
-            'pyflink.examples': ['*.py', '*/*.py'],
-            'pyflink.licenses': ['*'],
-            'pyflink.plugins': ['*', '*/*'],
-            'pyflink.bin': ['*']
-        },
+        package_dir=PACKAGE_DIR,
+        package_data=PACKAGE_DATA,
         scripts=scripts,
         url='http://flink.apache.org',
         license='http://www.apache.org/licenses/LICENSE-2.0',
@@ -203,22 +225,26 @@ finally:
             os.remove(OPT_TEMP_PATH)
             os.remove(CONF_TEMP_PATH)
             os.remove(EXAMPLES_TEMP_PATH)
-            os.remove(LICENSES_TEMP_PATH)
+            if exist_licenses:
+                os.remove(LICENSES_TEMP_PATH)
             os.remove(PLUGINS_TEMP_PATH)
             os.remove(SCRIPTS_TEMP_PATH)
             os.remove(LICENSE_FILE_TEMP_PATH)
-            os.remove(NOTICE_FILE_TEMP_PATH)
+            if exist_notice:
+                os.remove(NOTICE_FILE_TEMP_PATH)
             os.remove(README_FILE_TEMP_PATH)
         else:
             rmtree(LIB_TEMP_PATH)
             rmtree(OPT_TEMP_PATH)
             rmtree(CONF_TEMP_PATH)
             rmtree(EXAMPLES_TEMP_PATH)
-            rmtree(LICENSES_TEMP_PATH)
+            if exist_licenses:
+                rmtree(LICENSES_TEMP_PATH)
             rmtree(PLUGINS_TEMP_PATH)
             rmtree(SCRIPTS_TEMP_PATH)
             os.remove(LICENSE_FILE_TEMP_PATH)
-            os.remove(NOTICE_FILE_TEMP_PATH)
+            if exist_notice:
+                os.remove(NOTICE_FILE_TEMP_PATH)
             os.remove(README_FILE_TEMP_PATH)
         rmtree(LOG_TEMP_PATH)
         os.rmdir(TEMP_PATH)