from setuptools import setup, Extension
import os, sys
import subprocess as sp

here = os.path.abspath(os.path.dirname(__file__))
# README = open(os.path.join(here, 'README.rst')).read()
# NEWS = open(os.path.join(here, 'NEWS.txt')).read()

install_requires = [
    'cffi',
    'numpy<2'
]

SYS_LIBRARIES = {
#    'linux': ['boost_system'],
}
#
# NC_CONFIG = os.environ.get('NC_CONFIG', 'nc-config')
#
# def ncpaths():
#     try:
#         include_dir = sp.check_output([NC_CONFIG, '--includedir']).decode('utf-8').strip()
#         lib_dir = sp.check_output([NC_CONFIG, '--libdir']).decode('utf-8').strip()
#     except FileNotFoundError:
#         raise RuntimeError("nc-config not found; Please ensure NetCDF is installed and nc-config is in PATH.")
#     return include_dir, lib_dir
#
# NC_LIB_NAMES =['netcdf_c++4', 'netcdf', 'hdf5_hl', 'hdf5']

def libraries_for_platform():
    env = os.environ.get('LIBS', None)
    if env is not None:
        import re
        return list(re.split(r'[,\s]+', env))
    zult = SYS_LIBRARIES.get(sys.platform, [])
    return zult

# NC_INCLUDE_DIR, NC_LIB_DIR = ncpaths()

SRCS = "HCastFile.cxx HimawariHSDFile.cxx aHimawariFile.cxx HimawariScene.cxx erfa/erfa.c HimawariResample.cxx HimawariTypes.cxx"
SOURCES = ['src/' + x for x in SRCS.split()]
INCLUDES = [os.path.abspath(x) for x in ['include', 'src/erfa']]


os.environ['CXXFLAGS'] = ' '.join(['-std=c++11'] + os.environ.get('CXXFLAGS', '').split())

# build a stub module which we actually use CFFI to access in bit_untrim.py
_himawari = Extension('_himawari',
                      sources = ['src/py_himawari_stub.c'] + SOURCES,
                      include_dirs=INCLUDES,
                      libraries=libraries_for_platform(),
                      extra_compile_args=["-DNO_LRU_CACHE", "-DNO_SATPYCF"]
                      )


def _git_version():
    try:
        gittyup = '-g' + sp.check_output(['git', 'rev-parse', 'HEAD']).decode('ASCII').strip()[:8]
    except:  # want to use sp.CalledProcessError but under Windows it shows up as WindowsError. because, windows...
        gittyup = ''
    from datetime import datetime
    when = datetime.utcnow().strftime("%Y.%m%d.%H%M")
    # print("WARNING: using current time as version instead of GIT hash")
    return when # + gittyup


setup(name='himawari',
      version=_git_version(),
      description="Access library for Himawari AHI HSD format files",
      # long_description=README + '\n\n' + NEWS,
      classifiers=[
          # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
      ],
      keywords='Himawari-8 Himawari-9 AHI HSD',
      author='R.K.Garcia',
      author_email='rayg@ssec.wisc.edu',
      url='http://www.ssec.wisc.edu',
      license='GPLv3',
      packages=['himawari'],
      # package_dir = {'himawari': 'py'},
      # include_package_data=True,
      # package_data={'himawari': ['data/TD/leapsec.dat']},
      zip_safe=False,
      install_requires=install_requires,
      extras_require = {
          'scmi': ['goesr'],  # https://gitlab.ssec.wisc.edu/rayg/goesr
      },
      ext_modules = [_himawari],
      # entry_points={
      #     'console_scripts':
      #         ['sips_cris_l0l1a=sips_cris_l0l1a:main',
      #          'cris_l1a_lint=sips_cris_l0l1a.lint:main',
      #          'flagpoll=sips_cris_l0l1a.flagpoll:main',
      #          'nc_compare_schema=sips_cris_l0l1a.netcdf_compare:main',
      #          'nc_copy_vars=sips_cris_l0l1a.netcdf:main',
      #          'nc_copy_schema=sips_cris_l0l1a.netcdf_copy_vars:main']
      # }
      )