Blame 0015-setup.py-On-Unix-install-scripts-without-.py-suffix.patch

Igor Gnatenko 57d01a
From 3a621287b7420fe72b2dbe9f1dd3f38ae1687ed5 Mon Sep 17 00:00:00 2001
Igor Gnatenko 57d01a
From: Patrick Griffis <tingping@tingping.se>
Igor Gnatenko 57d01a
Date: Fri, 30 Sep 2016 23:28:40 -0400
Igor Gnatenko 57d01a
Subject: [PATCH 15/16] setup.py: On Unix install scripts without .py suffix
Igor Gnatenko 57d01a
Igor Gnatenko 57d01a
(cherry picked from commit 999669e8501501d4618588008e4bf4353a1ace2a)
Igor Gnatenko 57d01a
---
Igor Gnatenko 57d01a
 setup.py | 27 +++++++++++++++++++++++++++
Igor Gnatenko 57d01a
 1 file changed, 27 insertions(+)
Igor Gnatenko 57d01a
Igor Gnatenko 57d01a
diff --git a/setup.py b/setup.py
Igor Gnatenko 57d01a
index d5b79ae..42f8d49 100644
Igor Gnatenko 57d01a
--- a/setup.py
Igor Gnatenko 57d01a
+++ b/setup.py
Igor Gnatenko 57d01a
@@ -14,7 +14,9 @@
Igor Gnatenko 57d01a
 # See the License for the specific language governing permissions and
Igor Gnatenko 57d01a
 # limitations under the License.
Igor Gnatenko 57d01a
 
Igor Gnatenko 57d01a
+import os
Igor Gnatenko 57d01a
 import sys
Igor Gnatenko 57d01a
+from os import path
Igor Gnatenko 57d01a
 
Igor Gnatenko 57d01a
 if sys.version_info[0] < 3:
Igor Gnatenko 57d01a
     print('Tried to install with Python 2, Meson only supports Python 3.')
Igor Gnatenko 57d01a
@@ -25,8 +27,32 @@ if sys.version_info[0] < 3:
Igor Gnatenko 57d01a
 # plain distutils when setuptools is not available.
Igor Gnatenko 57d01a
 try:
Igor Gnatenko 57d01a
     from setuptools import setup
Igor Gnatenko 57d01a
+    from setuptools.command.install_scripts import install_scripts as orig
Igor Gnatenko 57d01a
 except ImportError:
Igor Gnatenko 57d01a
     from distutils.core import setup
Igor Gnatenko 57d01a
+    from distutils.command.install_scripts import install_scripts as orig
Igor Gnatenko 57d01a
+
Igor Gnatenko 57d01a
+from distutils.file_util import copy_file
Igor Gnatenko 57d01a
+from distutils.dir_util import mkpath
Igor Gnatenko 57d01a
+from stat import ST_MODE
Igor Gnatenko 57d01a
+
Igor Gnatenko 57d01a
+class install_scripts(orig):
Igor Gnatenko 57d01a
+    def run(self):
Igor Gnatenko 57d01a
+        if sys.platform == 'win32':
Igor Gnatenko 57d01a
+            super().run()
Igor Gnatenko 57d01a
+            return
Igor Gnatenko 57d01a
+
Igor Gnatenko 57d01a
+        self.outfiles = []
Igor Gnatenko 57d01a
+        if not self.dry_run:
Igor Gnatenko 57d01a
+            mkpath(self.install_dir)
Igor Gnatenko 57d01a
+
Igor Gnatenko 57d01a
+        # We want the files to be installed without a suffix on Unix
Igor Gnatenko 57d01a
+        for infile in self.get_inputs():
Igor Gnatenko 57d01a
+            in_stripped = infile[:-3] if infile.endswith('.py') else infile
Igor Gnatenko 57d01a
+            outfile = path.join(self.install_dir, in_stripped)
Igor Gnatenko 57d01a
+            # NOTE: Mode is preserved by default
Igor Gnatenko 57d01a
+            copy_file(infile, outfile, dry_run=self.dry_run)
Igor Gnatenko 57d01a
+            self.outfiles.append(outfile)
Igor Gnatenko 57d01a
 
Igor Gnatenko 57d01a
 from mesonbuild.coredata import version
Igor Gnatenko 57d01a
 
Igor Gnatenko 57d01a
@@ -46,6 +72,7 @@ setup(name='meson',
Igor Gnatenko 57d01a
                'mesonconf.py',
Igor Gnatenko 57d01a
                'mesonintrospect.py',
Igor Gnatenko 57d01a
                'wraptool.py'],
Igor Gnatenko 57d01a
+      cmdclass={'install_scripts': install_scripts},
Igor Gnatenko 57d01a
       data_files=[('share/man/man1', ['man/meson.1',
Igor Gnatenko 57d01a
                                       'man/mesonconf.1',
Igor Gnatenko 57d01a
                                       'man/mesonintrospect.1',
Igor Gnatenko 57d01a
-- 
Igor Gnatenko 57d01a
2.10.1
Igor Gnatenko 57d01a