From 199db56ade47cf8b10b03b28d329743ebb411d68 Mon Sep 17 00:00:00 2001
From: Chichi Lalescu <clalesc1@jhu.edu>
Date: Fri, 4 Dec 2015 21:14:32 +0100
Subject: [PATCH] library is no longer an extension

I don't like the way that I'm doing it now, but I don't like the old way
more. With a static library, I no longer need to worry about installing
the package while running a simulation, etc.
Also, now I have full control over the arguments.
---
 bfps/__init__.py |  2 +-
 bfps/code.py     |  5 +----
 setup.py         | 16 +++++++++-------
 3 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/bfps/__init__.py b/bfps/__init__.py
index 324c42f6..697cf3f7 100644
--- a/bfps/__init__.py
+++ b/bfps/__init__.py
@@ -41,7 +41,7 @@ try:
         lib_dir = os.path.join(os.path.dirname(here), os.pardir)
         raise DistributionNotFound
     header_dir = os.path.join(os.path.join(dist_loc, 'bfps'), 'cpp')
-    lib_dir = _dist.location
+    lib_dir = os.path.join(dist_loc, 'bfps')
     __version__ = _dist.version
 except DistributionNotFound:
     __version__ = ''
diff --git a/bfps/code.py b/bfps/code.py
index bb4ba3da..e8baced4 100644
--- a/bfps/code.py
+++ b/bfps/code.py
@@ -140,10 +140,7 @@ class code(base):
             raise IOError('header not there:\n' +
                           '{0}\n'.format(os.path.join(bfps.header_dir, 'base.hpp')) +
                           '{0}\n'.format(bfps.dist_loc))
-        if sys.version_info[0] == 2:
-            libraries = ['bfps']
-        else:
-            libraries = ['bfps.cpython-{0}{1}m'.format(sys.version_info[0], sys.version_info[1])]
+        libraries = ['bfps']
         libraries += bfps.install_info['libraries']
 
         command_strings = ['g++']
diff --git a/setup.py b/setup.py
index eeb4d047..094c4fb5 100644
--- a/setup.py
+++ b/setup.py
@@ -62,8 +62,8 @@ src_file_list = ['field_descriptor',
 
 header_list = ['cpp/base.hpp'] + ['cpp/' + fname + '.hpp' for fname in src_file_list]
 
-with open('MANIFEST.in', 'w') as manifest_in_file:
-    manifest_in_file.write('include libbfps.a\n')
+#with open('MANIFEST.in', 'w') as manifest_in_file:
+#    manifest_in_file.write('include libbfps.a\n')
 #    for fname in ['bfps/cpp/' + fname + '.cpp' for fname in src_file_list] + header_list:
 #        manifest_in_file.write('include {0}\n'.format(fname))
 
@@ -84,11 +84,13 @@ pickle.dump(
         open('bfps/install_info.pickle', 'wb'),
         protocol = 2)
 
-from distutils.command.install import install as DistutilsInstall
+from distutils.command.build import build as DistutilsBuild
 
-class CustomInstall(DistutilsInstall):
+class CustomBuild(DistutilsBuild):
     def run(self):
         # compile bfps library
+        if not os.path.isdir('obj'):
+            os.makedirs('obj')
         for fname in src_file_list:
             ifile = 'bfps/cpp/' + fname + '.cpp'
             ofile = 'obj/' + fname + '.o'
@@ -106,14 +108,14 @@ class CustomInstall(DistutilsInstall):
                 command_strings.append('-Ibfps/cpp/')
                 print(' '.join(command_strings))
                 subprocess.call(command_strings)
-        command_strings = ['ar', 'rvs', 'libbfps.a']
+        command_strings = ['ar', 'rvs', 'bfps/libbfps.a']
         command_strings += ['obj/' + fname + '.o' for fname in src_file_list]
         #command_strings += ['-l' + libname for libname in libraries]
         #command_strings += ['-L' + ldir for ldir in library_dirs]
         #command_strings += ['-o', 'libbfps.a']
         print(' '.join(command_strings))
         subprocess.call(command_strings)
-        DistutilsInstall.run(self)
+        DistutilsBuild.run(self)
 
 from setuptools import setup
 
@@ -121,7 +123,7 @@ setup(
         name = 'bfps',
         packages = ['bfps'],
         install_requires = ['numpy>=1.8', 'h5py>=2.2.1'],
-        cmdclass={'install': CustomInstall},
+        cmdclass={'build': CustomBuild},
         package_data = {'bfps': header_list + ['../machine_settings.py',
                                                'libbfps.a',
                                                'install_info.pickle']},
-- 
GitLab