setup.py 4.79 KB
Newer Older
1
2
3
4
5
6
7
8
'''
Author: Zhang Xin zhangx@bao.ac.cn
Date: 2023-08-07 11:23:28
LastEditors: Zhang Xin zhangx@bao.ac.cn
LastEditTime: 2023-10-08 14:44:19
FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/CSST_SIM/CSST_develop/csst-simulation/setup.py
Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
'''
Fang Yuedong's avatar
Fang Yuedong committed
9
10
from setuptools import setup, find_packages

Xin Zhang's avatar
Xin Zhang committed
11
12
from setuptools.extension import Extension
from setuptools.config import read_configuration
13
from distutils.command.build_ext import build_ext
Xin Zhang's avatar
Xin Zhang committed
14
15
16
17
18

from Cython.Build import cythonize

import numpy

19
20
21
22

class CTypes(Extension):
    pass

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

class build_ext(build_ext):

    def build_extension(self, ext):
        self._ctypes = isinstance(ext, CTypes)
        return super().build_extension(ext)

    def get_export_symbols(self, ext):
        if self._ctypes:
            return ext.export_symbols
        return super().get_export_symbols(ext)

    def get_ext_filename(self, ext_name):
        if self._ctypes:
            return ext_name + '.so'
        return super().get_ext_filename(ext_name)

40

Xin Zhang's avatar
Xin Zhang committed
41
42
extensions = [
    Extension("ObservationSim.MockObject.SpecDisperser.disperse_c.interp", ["ObservationSim/MockObject/SpecDisperser/disperse_c/interp.pyx"],
43
44
45
              include_dirs=[numpy.get_include()],
              libraries=["m"]),

Xin Zhang's avatar
Xin Zhang committed
46
    Extension("ObservationSim.MockObject.SpecDisperser.disperse_c.disperse", ["ObservationSim/MockObject/SpecDisperser/disperse_c/disperse.pyx"],
47
48
              include_dirs=[numpy.get_include()],
              libraries=["m"]),
Xin Zhang's avatar
Xin Zhang committed
49
50
]

Wei Chengliang's avatar
Wei Chengliang committed
51
df_module = [CTypes('ObservationSim.Instrument.Chip.libBF.libmoduleBF',
52
53
54
55
56
                    ['ObservationSim/Instrument/Chip/libBF/diffusion_X1.c',
                        'ObservationSim/Instrument/Chip/libBF/nrutil.c'],
                    include_dirs=[
                        'ObservationSim/Instrument/Chip/libBF/', '/usr/include']
                    )]
Wei Chengliang's avatar
Wei Chengliang committed
57
cti_module = [CTypes('ObservationSim.Instrument.Chip.libCTI.libmoduleCTI',
58
59
60
61
62
                     ['ObservationSim/Instrument/Chip/libCTI/src/add_CTI.c', 'ObservationSim/Instrument/Chip/libCTI/src/nrutil.c', 'ObservationSim/Instrument/Chip/libCTI/src/ran1.c', 'ObservationSim/Instrument/Chip/libCTI/src/ran2.c', 'ObservationSim/Instrument/Chip/libCTI/src/poidev.c',
                         'ObservationSim/Instrument/Chip/libCTI/src/gammln.c', 'ObservationSim/Instrument/Chip/libCTI/src/gasdev.c', 'ObservationSim/Instrument/Chip/libCTI/src/sort.c', 'ObservationSim/Instrument/Chip/libCTI/src/creattraps.c'],
                     include_dirs=[
                         'ObservationSim/Instrument/Chip/libCTI/src/', '/usr/include']
                     )]
63

Xin Zhang's avatar
Xin Zhang committed
64
65
66
67
68

# setup(
#     name = "slssim_disperse",
#     ext_modules = cythonize(extensions),
# )
Zhang Xin's avatar
Zhang Xin committed
69
70
71
72
73
74
75
76
# 读取依赖列表requirements.txt
# 忽略#开头或者版本号不明确指定的条目
with open("requirements.txt", "r") as f:
    requirements = [
        req.strip()
        for req in f.readlines()
        if not req.startswith("#") and req.__contains__("==")
    ]
Xin Zhang's avatar
Xin Zhang committed
77

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
setup(name='csst_msc_sim',
      version='3.0.0',
      packages=find_packages(),
      # install_requires=[
      #     # 'numpy>=1.18.5',
      #     # 'galsim>=2.2.4',
      #     # 'pyyaml>=5.3.1',
      #     # 'astropy>=4.0.1',
      #     # 'scipy>=1.5.0',
      #     # 'mpi4py>=3.0.3',
      #     # 'sep>=1.0.3',
      #     # 'healpy>=1.14.0',
      #     # 'h5py>=2.10.0',
      #     # 'Cython>=0.29.21',
      #     # 'numba>=0.50.1'
      # ],

      package_data={
          'ObservationSim.Astrometry.lib': ['libshao.so'],
          'ObservationSim.Instrument.Chip.libBF': ['libmoduleBF.so'],
          'ObservationSim.Instrument.Chip.libCTI': ['libmoduleCTI.so'],
          'ObservationSim.MockObject.data': ['*.dat'],
          'ObservationSim.MockObject.data.led': ['*.fits'],
          'ObservationSim.Instrument.data': ['*.txt', '*.dat', '*.json'],
          'ObservationSim.Instrument.data.field_distortion': ['*.pickle'],
          'ObservationSim.Instrument.data.ccd': ['*.txt', '*.json'],
          'ObservationSim.Instrument.data.filters': ['*.txt', '*.list', '*.dat'],
          'ObservationSim.Instrument.data.throughputs': ['*.txt', '*.dat'],
          'ObservationSim.Instrument.data.sls_conf': ['*.conf', '*.fits'],
          'ObservationSim.Instrument.data.flatCube': ['*.fits'],
          'Catalog.data': ['*.fits', '*.so'],
          'ObservationSim.Config.Header': ['*.fits', '*.lst'],
          'ObservationSim.Straylight.data': ['*.dat'],
          'ObservationSim.Straylight.data.sky': ['*.dat'],
          'ObservationSim.Straylight.lib': ['*'],
      },
      python_requires=">=3.11",  # Python版本要求
      install_requires=requirements,

      ext_modules=cythonize(extensions) + df_module + cti_module,
      cmdclass={'build_ext': build_ext}
      )