gerbmerge/setup.py

143 lines
4.2 KiB
Python

#!/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()