#!/usr/bin/env python import sys import glob import os from distutils.core import setup, Extension import distutils.sysconfig sys.path.append("./gerbmerge") from gerbmerge.__version_info__ import __version__ if sys.version_info < (2,4,0): print('*'*73) print('GerbMerge version %d.%d requires Python 2.4 or higher' % (VERSION_MAJOR, VERSION_MINOR)) print('*'*73) sys.exit(1) if 0: for key,val in list(distutils.sysconfig.get_config_vars().items()): print(key) print('***********************') print(' ', val) print() print() sys.exit(0) SampleFiles = glob.glob('testdata/*') DocFiles = glob.glob('doc/*') AuxFiles = ['LICENSE'] if sys.platform == 'win32' or ('bdist_wininst' in sys.argv): #DestLib = distutils.sysconfig.get_config_var('prefix') #DestDir = os.path.join(DestLib, 'gerbmerge') #BinDir = DestLib DestLib = distutils.sysconfig.get_python_lib() DestDir = os.path.join(DestLib, 'gerbmerge') BinFiles = ['misc/gerbmerge.bat'] BinDir = '.' # Create top-level invocation program if not os.path.exists('misc'): os.makedirs('misc') fid = open('misc/gerbmerge.bat', 'wt') fid.write( \ r"""@echo off %s %s\gerbmerge\gerbmerge.py %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9 """ % (sys.executable, DestLib) ) fid.close() else: # try to find the library location on this platform DestLib = distutils.sysconfig.get_python_lib() DestDir = os.path.join(DestLib, 'gerbmerge') BinFiles = ['misc/gerbmerge'] BinDir = distutils.sysconfig.get_config_var('BINDIR') # Create top-level invocation program if not os.path.exists('misc'): os.makedirs('misc') fid = open('misc/gerbmerge', 'wt') fid.write( \ r"""#!/bin/sh python %s/gerbmerge/gerbmerge.py $* """ % DestLib) fid.close() dist=setup (name = "gerbmerge", license = "GPL", version = __version__, long_description=\ r"""GerbMerge is a program that combines several Gerber (i.e., RS274-X) and Excellon files into a single set of files. This program is useful for combining multiple printed circuit board layout files into a single job. To run the program, invoke the Python interpreter on the gerbmerge.py file. On Windows, if you installed GerbMerge in C:/Python24, for example, open a command window (DOS box) and type: C:/Python24/gerbmerge.bat For more details on installation or running GerbMerge, see the URL below. """, description = "Merge multiple Gerber/Excellon files", author = "Unwired Devices LLC", author_email = "info@unwds.com", url = "https://github.com/unwireddevices/gerbmerge", packages = ['gerbmerge'], platforms = ['all'], data_files = [ (DestDir, AuxFiles), (os.path.join(DestDir,'testdata'), SampleFiles), (os.path.join(DestDir,'doc'), DocFiles), (BinDir, BinFiles) ], install_requires = ['simpleparse'] ) do_fix_perms = 0 if sys.platform != "win32": for cmd in dist.commands: if cmd[:7]=='install': do_fix_perms = 1 break if do_fix_perms: # Ensure package files and misc/help files are world readable-searchable. # Shouldn't Distutils do this for us? print('Setting permissions on installed files...', end=' ') try: def fixperms(arg, dirname, names): os.chmod(dirname, 0o755) for name in names: fullname = os.path.join(dirname, name) if os.access(fullname, os.X_OK): os.chmod(fullname, 0o755) else: os.chmod(fullname, 0o644) os.path.walk(DestDir, fixperms, 1) os.path.walk(os.path.join(DestLib, 'site-packages/gerbmerge'), fixperms, 1) os.chmod(os.path.join(BinDir, 'gerbmerge'), 0o755) print('done') except: print('FAILED') print() print('*** Please verify that the installed files have correct permissions. On') print("*** systems without permission flags, you don't need to") print('*** worry about it.') if sys.platform != "win32": if cmd[:7]=='install': print() print('******** Installation Complete ******** ') print() print('Sample files and documentation have been installed in:') print(' ', DestDir) print() print('A shortcut to starting the program has been installed as:') print(' ', os.path.join(BinDir, 'gerbmerge')) print()