mirror of
				https://github.com/psycopg/psycopg2.git
				synced 2025-10-31 07:47:30 +03:00 
			
		
		
		
	Print info about the binary package on build failed
The idea is to release a package 'psycopg2-binary' to allow installing binary, and leave the psycopg2 package to be source only, to avoid pushing the unreliability of the wheel pacakge by default (see issue #543). Version number bumped to test with new packages.
This commit is contained in:
		
							parent
							
								
									ac114d2188
								
							
						
					
					
						commit
						76765aeb39
					
				
							
								
								
									
										46
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								setup.py
									
									
									
									
									
								
							|  | @ -39,6 +39,7 @@ except ImportError: | ||||||
| from distutils.command.build_ext import build_ext | from distutils.command.build_ext import build_ext | ||||||
| from distutils.sysconfig import get_python_inc | from distutils.sysconfig import get_python_inc | ||||||
| from distutils.ccompiler import get_default_compiler | from distutils.ccompiler import get_default_compiler | ||||||
|  | from distutils.errors import CompileError | ||||||
| from distutils.util import get_platform | from distutils.util import get_platform | ||||||
| 
 | 
 | ||||||
| try: | try: | ||||||
|  | @ -64,7 +65,7 @@ except ImportError: | ||||||
| # Take a look at http://www.python.org/dev/peps/pep-0440/ | # Take a look at http://www.python.org/dev/peps/pep-0440/ | ||||||
| # for a consistent versioning pattern. | # for a consistent versioning pattern. | ||||||
| 
 | 
 | ||||||
| PSYCOPG_VERSION = '2.7.4.dev1' | PSYCOPG_VERSION = '2.7.4.dev2' | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # note: if you are changing the list of supported Python version please fix | # note: if you are changing the list of supported Python version please fix | ||||||
|  | @ -107,15 +108,23 @@ class PostgresConfig: | ||||||
|         if not self.pg_config_exe: |         if not self.pg_config_exe: | ||||||
|             self.pg_config_exe = self.autodetect_pg_config_path() |             self.pg_config_exe = self.autodetect_pg_config_path() | ||||||
|         if self.pg_config_exe is None: |         if self.pg_config_exe is None: | ||||||
|             sys.stderr.write("""\ |             sys.stderr.write(""" | ||||||
| Error: pg_config executable not found. | Error: pg_config executable not found. | ||||||
| 
 | 
 | ||||||
| Please add the directory containing pg_config to the PATH | pg_config is required to build psycopg2 from source.  Please add the directory | ||||||
| or specify the full executable path with the option: | containing pg_config to the $PATH or specify the full executable path with the | ||||||
|  | option: | ||||||
| 
 | 
 | ||||||
|     python setup.py build_ext --pg-config /path/to/pg_config build ... |     python setup.py build_ext --pg-config /path/to/pg_config build ... | ||||||
| 
 | 
 | ||||||
| or with the pg_config option in 'setup.cfg'. | or with the pg_config option in 'setup.cfg'. | ||||||
|  | 
 | ||||||
|  | If you prefer to avoid building psycopg2 from source, please install the PyPI | ||||||
|  | 'psycopg2-binary' package instead. | ||||||
|  | 
 | ||||||
|  | For further information please check the 'doc/src/install.rst' file (also at | ||||||
|  | <http://initd.org/psycopg/docs/install.html>). | ||||||
|  | 
 | ||||||
| """) | """) | ||||||
|             sys.exit(1) |             sys.exit(1) | ||||||
| 
 | 
 | ||||||
|  | @ -290,8 +299,37 @@ class psycopg_build_ext(build_ext): | ||||||
|         else: |         else: | ||||||
|             return build_ext.get_export_symbols(self, extension) |             return build_ext.get_export_symbols(self, extension) | ||||||
| 
 | 
 | ||||||
|  |     built_files = 0 | ||||||
|  | 
 | ||||||
|     def build_extension(self, extension): |     def build_extension(self, extension): | ||||||
|  |         # Count files compiled to print the binary blurb only if the first fails | ||||||
|  |         compile_orig = getattr(self.compiler, '_compile', None) | ||||||
|  |         if compile_orig is not None: | ||||||
|  |             def _compile(*args, **kwargs): | ||||||
|  |                 rv = compile_orig(*args, **kwargs) | ||||||
|  |                 psycopg_build_ext.built_files += 1 | ||||||
|  |                 return rv | ||||||
|  | 
 | ||||||
|  |             self.compiler._compile = _compile | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|             build_ext.build_extension(self, extension) |             build_ext.build_extension(self, extension) | ||||||
|  |             psycopg_build_ext.built_files += 1 | ||||||
|  |         except CompileError: | ||||||
|  |             if self.built_files == 0: | ||||||
|  |                 sys.stderr.write(""" | ||||||
|  | It appears you are missing some prerequisite to build the package from source. | ||||||
|  | 
 | ||||||
|  | You may install a binary package by installing 'psycopg2-binary' from PyPI. | ||||||
|  | If you want to install psycopg2 from source, please install the packages | ||||||
|  | required for the build and try again. | ||||||
|  | 
 | ||||||
|  | For further information please check the 'doc/src/install.rst' file (also at | ||||||
|  | <http://initd.org/psycopg/docs/install.html>). | ||||||
|  | 
 | ||||||
|  | """) | ||||||
|  |             raise | ||||||
|  | 
 | ||||||
|         sysVer = sys.version_info[:2] |         sysVer = sys.version_info[:2] | ||||||
| 
 | 
 | ||||||
|         # For Python versions that use MSVC compiler 2008, re-insert the |         # For Python versions that use MSVC compiler 2008, re-insert the | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user