actions.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Licensed under the GNU General Public License, version 3.
  5. # See the file http://www.gnu.org/licenses/gpl.txt
  6. from pisi.actionsapi import autotools
  7. from pisi.actionsapi import get
  8. from pisi.actionsapi import pisitools
  9. from pisi.actionsapi import shelltools
  10. amd_version = "2.3.1"
  11. amd_version_major = "2"
  12. btf_version = "1.2.0"
  13. btf_version_major = "1"
  14. camd_version = "2.3.1"
  15. camd_version_major = "2"
  16. ccolamd_version = "2.8.0"
  17. ccolamd_version_major = "2"
  18. cholmod_version = "2.0.1"
  19. cholmod_version_major = "2"
  20. colamd_version = "2.8.0"
  21. colamd_version_major = "2"
  22. csparse_version = "3.1.1"
  23. csparse_version_major = "3"
  24. klu_version = "1.2.1"
  25. klu_version_major = "1"
  26. ldl_version = "2.1.0"
  27. ldl_version_major = "2"
  28. umfpack_version = "5.6.1"
  29. umfpack_version_major = "5"
  30. spqr_version = "1.3.1"
  31. spqr_version_major = "1"
  32. rbio_version = "2.1.1"
  33. rbio_version_major = "2"
  34. SuiteSparse_config_ver = "4.2.0"
  35. SuiteSparse_config_major = "4"
  36. def build():
  37. shelltools.export("CFLAGS","%s -fPIC -O3" % get.CFLAGS())
  38. for d in ("AMD", "BTF", "CAMD", "CCOLAMD", "CHOLMOD", "COLAMD", "CSparse", "KLU", "LDL", "UMFPACK", "SPQR", "RBio"):
  39. shelltools.makedirs("Doc/%s" % d)
  40. shelltools.makedirs("Include")
  41. shelltools.makedirs("Lib")
  42. shelltools.cd("SuiteSparse_config")
  43. autotools.make()
  44. shelltools.system("ar x libsuitesparseconfig.a")
  45. shelltools.cd("../Lib")
  46. shelltools.system("gcc -shared -Wl,-soname,libsuitesparseconfig.so.%s -o \
  47. libsuitesparseconfig.so.%s ../SuiteSparse_config/*.o" % (SuiteSparse_config_major, SuiteSparse_config_ver))
  48. shelltools.sym("libsuitesparseconfig.so.%s" % SuiteSparse_config_ver, "libsuitesparseconfig.so.%s" % SuiteSparse_config_major)
  49. shelltools.sym("libsuitesparseconfig.so.%s" % SuiteSparse_config_ver, "libsuitesparseconfig.so")
  50. shelltools.copy("../SuiteSparse_config/*.a", ".")
  51. shelltools.cd("../SuiteSparse_config")
  52. shelltools.copy("*.h", "../Include")
  53. shelltools.cd("../AMD/Lib")
  54. autotools.make()
  55. shelltools.cd("../../Lib")
  56. shelltools.system("gcc -shared -Wl,-soname,libamd.so.%s -o \
  57. libamd.so.%s ../AMD/Lib/*.o -lm -lrt" % (amd_version_major, amd_version))
  58. shelltools.sym("libamd.so.%s" % amd_version, "libamd.so.%s" % amd_version_major)
  59. shelltools.sym("libamd.so.%s" % amd_version, "libamd.so")
  60. shelltools.copy("../AMD/Lib/*.a", ".")
  61. shelltools.cd("../AMD")
  62. shelltools.copy("Include/*.h", "../Include")
  63. for d in ("README.txt", "Doc/License", "Doc/ChangeLog", "Doc/*.pdf"):
  64. shelltools.copy(d, "../Doc/AMD")
  65. shelltools.cd("../BTF/Lib")
  66. autotools.make()
  67. shelltools.cd("../../Lib")
  68. shelltools.system("gcc -shared -Wl,-soname,libbtf.so.%s -o \
  69. libbtf.so.%s ../BTF/Lib/*.o" % (btf_version_major, btf_version))
  70. shelltools.sym("libbtf.so.%s" % btf_version, "libbtf.so.%s" % btf_version_major)
  71. shelltools.sym("libbtf.so.%s" % btf_version, "libbtf.so")
  72. shelltools.copy("../BTF/Lib/*.a", ".")
  73. shelltools.cd("../BTF")
  74. shelltools.copy("Include/*.h", "../Include")
  75. for d in ("README.txt", "Doc/*"):
  76. shelltools.copy(d, "../Doc/BTF")
  77. shelltools.cd("../CAMD/Lib")
  78. autotools.make()
  79. shelltools.cd("../../Lib")
  80. shelltools.system("gcc -shared -Wl,-soname,libcamd.so.%s -o \
  81. libcamd.so.%s ../CAMD/Lib/*.o -lm" % (camd_version_major, camd_version))
  82. shelltools.sym("libcamd.so.%s" % camd_version, "libcamd.so.%s" % camd_version_major)
  83. shelltools.sym("libcamd.so.%s" % camd_version, "libcamd.so")
  84. shelltools.copy("../CAMD/Lib/*.a", ".")
  85. shelltools.cd("../CAMD")
  86. shelltools.copy("Include/*.h", "../Include")
  87. for d in ("README.txt", "Doc/ChangeLog", "Doc/License", "Doc/*.pdf"):
  88. shelltools.copy(d, "../Doc/CAMD")
  89. shelltools.cd("../CCOLAMD/Lib")
  90. autotools.make()
  91. shelltools.cd("../../Lib")
  92. shelltools.system("gcc -shared -Wl,-soname,libccolamd.so.%s -o \
  93. libccolamd.so.%s ../CCOLAMD/Lib/*.o -lm" % (ccolamd_version_major, ccolamd_version))
  94. shelltools.sym("libccolamd.so.%s" % ccolamd_version, "libccolamd.so.%s" % ccolamd_version_major)
  95. shelltools.sym("libccolamd.so.%s" % ccolamd_version, "libccolamd.so")
  96. shelltools.copy("../CCOLAMD/Lib/*.a", ".")
  97. shelltools.cd("../CCOLAMD")
  98. shelltools.copy("Include/*.h", "../Include")
  99. for d in ("README.txt", "Doc/*"):
  100. shelltools.copy(d, "../Doc/CCOLAMD")
  101. shelltools.cd("../COLAMD/Lib")
  102. autotools.make()
  103. shelltools.cd("../../Lib")
  104. shelltools.system("gcc -shared -Wl,-soname,libcolamd.so.%s -o \
  105. libcolamd.so.%s ../COLAMD/Lib/*.o -lm" % (colamd_version_major, colamd_version))
  106. shelltools.sym("libcolamd.so.%s" % colamd_version, "libcolamd.so.%s" % colamd_version_major)
  107. shelltools.sym("libcolamd.so.%s" % colamd_version, "libcolamd.so")
  108. shelltools.copy("../COLAMD/Lib/*.a", ".")
  109. shelltools.cd("../COLAMD")
  110. shelltools.copy("Include/*.h", "../Include")
  111. for d in ("README.txt", "Doc/*"):
  112. shelltools.copy(d, "../Doc/COLAMD")
  113. shelltools.cd("../CHOLMOD/Lib")
  114. autotools.make("-I/usr/include/metis")
  115. shelltools.cd("../../Lib")
  116. shelltools.system("gcc -shared -Wl,-soname,libcholmod.so.%s -o \
  117. libcholmod.so.%s ../CHOLMOD/Lib/*.o \
  118. -L/usr/lib/atlas -llapack libamd.so.%s \
  119. libcamd.so.%s libcolamd.so.%s \
  120. libccolamd.so.%s \
  121. libsuitesparseconfig.so.%s \
  122. -lm" % (cholmod_version_major,
  123. cholmod_version,
  124. amd_version_major,
  125. camd_version_major, colamd_version_major,
  126. ccolamd_version_major,
  127. SuiteSparse_config_major))
  128. shelltools.sym("libcholmod.so.%s" % cholmod_version, "libcholmod.so.%s" % cholmod_version_major)
  129. shelltools.sym("libcholmod.so.%s" % cholmod_version, "libcholmod.so")
  130. shelltools.copy("../CHOLMOD/Lib/*.a", ".")
  131. shelltools.cd("../CHOLMOD")
  132. shelltools.copy("Include/*.h", "../Include")
  133. shelltools.copy("README.txt", "../Doc/CHOLMOD")
  134. shelltools.copy("Doc/*.pdf", "../Doc/CHOLMOD")
  135. shelltools.copy("Cholesky/License.txt", "../Doc/CHOLMOD/Cholesky_License.txt")
  136. shelltools.copy("Core/License.txt", "../Doc/CHOLMOD/Core_License.txt")
  137. shelltools.copy("MatrixOps/License.txt", "../Doc/CHOLMOD/MatrixOps_License.txt")
  138. shelltools.copy("Partition/License.txt", "../Doc/CHOLMOD/Partition_License.txt")
  139. shelltools.copy("Supernodal/License.txt", "../Doc/CHOLMOD/Supernodal_License.txt")
  140. shelltools.cd("../CSparse/Include")
  141. shelltools.copy("cs.h", "../../Include")
  142. shelltools.cd("../Lib")
  143. autotools.make()
  144. shelltools.cd("../../Lib")
  145. shelltools.system("gcc -shared -Wl,-soname,libcsparse.so.%s -o \
  146. libcsparse.so.%s ../CSparse/Lib/*.o -lm" % (csparse_version_major, csparse_version))
  147. shelltools.sym("libcsparse.so.%s" % csparse_version, "libcsparse.so.%s" % csparse_version_major)
  148. shelltools.sym("libcsparse.so.%s" % csparse_version, "libcsparse.so")
  149. shelltools.copy("../CSparse/Lib/*.a", ".")
  150. shelltools.cd("../CSparse")
  151. shelltools.copy("Doc/*", "../Doc/CSparse")
  152. shelltools.cd("../KLU/Lib")
  153. autotools.make()
  154. shelltools.cd("../../Lib")
  155. shelltools.system("gcc -shared -Wl,-soname,libklu.so.%s -o \
  156. libklu.so.%s ../KLU/Lib/*.o \
  157. libamd.so.%s libcolamd.so.%s \
  158. libbtf.so.%s libcholmod.so.%s \
  159. libsuitesparseconfig.so.%s \
  160. " % (klu_version_major,
  161. klu_version,
  162. amd_version_major, colamd_version_major,
  163. btf_version_major, cholmod_version_major,
  164. SuiteSparse_config_major))
  165. shelltools.sym("libklu.so.%s" % klu_version, "libklu.so.%s" % klu_version_major)
  166. shelltools.sym("libklu.so.%s" % klu_version, "libklu.so")
  167. shelltools.copy("../KLU/Lib/*.a", ".")
  168. shelltools.cd("../KLU")
  169. shelltools.copy("Include/*.h", "../Include")
  170. for d in "README.txt Doc/lesser.txt".split(" "):
  171. shelltools.copy(d, "../Doc/KLU")
  172. shelltools.cd("../LDL/Lib")
  173. autotools.make()
  174. shelltools.cd("../../Lib")
  175. shelltools.system("gcc -shared -Wl,-soname,libldl.so.%s -o \
  176. libldl.so.%s ../LDL/Lib/*.o" % (ldl_version_major, ldl_version))
  177. shelltools.sym("libldl.so.%s" % ldl_version, "libldl.so.%s" % ldl_version_major)
  178. shelltools.sym("libldl.so.%s" % ldl_version, "libldl.so")
  179. shelltools.copy("../LDL/Lib/*.a", ".")
  180. shelltools.cd("../LDL")
  181. shelltools.copy("Include/*.h", "../Include")
  182. for d in "README.txt Doc/ChangeLog Doc/lesser.txt Doc/*.pdf".split(" "):
  183. shelltools.copy(d, "../Doc/LDL")
  184. shelltools.cd("../UMFPACK/Lib")
  185. autotools.make()
  186. shelltools.cd("../../Lib")
  187. shelltools.system("gcc -shared -Wl,-soname,libumfpack.so.%s -o \
  188. libumfpack.so.%s ../UMFPACK/Lib/*.o \
  189. -L/usr/lib/atlas -llapack libamd.so.%s \
  190. libcholmod.so.%s \
  191. libsuitesparseconfig.so.%s \
  192. -lm" % (umfpack_version_major,
  193. umfpack_version,
  194. amd_version_major,
  195. cholmod_version_major,
  196. SuiteSparse_config_major))
  197. shelltools.sym("libumfpack.so.%s" % umfpack_version, "libumfpack.so.%s" % umfpack_version_major)
  198. shelltools.sym("libumfpack.so.%s" % umfpack_version, "libumfpack.so")
  199. shelltools.copy("../UMFPACK/Lib/*.a", ".")
  200. shelltools.cd("../UMFPACK")
  201. shelltools.copy("Include/*.h", "../Include")
  202. for d in "README.txt Doc/License Doc/ChangeLog Doc/gpl.txt Doc/*.pdf".split(" "):
  203. shelltools.copy(d, "../Doc/UMFPACK")
  204. shelltools.cd("../SPQR/Lib")
  205. autotools.make('CXXFLAS="%s -DNPARTITION -fPIC -O3"' % get.CXXFLAGS())
  206. shelltools.cd("../../Lib")
  207. shelltools.system("g++ -shared -Wl,-soname,libspqr.so.%s -o \
  208. libspqr.so.%s ../SPQR/Lib/*.o \
  209. -L/usr/lib/atlas -L/usr/lib -llapack \
  210. libcholmod.so.%s \
  211. libsuitesparseconfig.so.%s \
  212. -lm" % (spqr_version_major,
  213. spqr_version,
  214. cholmod_version_major,
  215. SuiteSparse_config_major))
  216. shelltools.sym("libspqr.so.%s" % spqr_version, "libspqr.so.%s" % spqr_version_major)
  217. shelltools.sym("libspqr.so.%s" % spqr_version, "libspqr.so")
  218. shelltools.copy("../SPQR/Lib/*.a", ".")
  219. shelltools.cd("../SPQR")
  220. shelltools.copy("Include/*.h*", "../Include")
  221. shelltools.copy("README.txt", "README_SPQR.txt")
  222. shelltools.copy("README_SPQR.txt", "../Doc/SPQR")
  223. shelltools.copy("Doc/*", "../Doc/SPQR")
  224. shelltools.cd("../RBio/Lib")
  225. autotools.make()
  226. shelltools.cd("../../Lib")
  227. shelltools.system("gcc -shared -Wl,-soname,librbio.so.%s -o \
  228. librbio.so.%s ../RBio/Lib/*.o \
  229. libsuitesparseconfig.so.%s" % (rbio_version_major, rbio_version, SuiteSparse_config_major))
  230. shelltools.sym("librbio.so.%s" % rbio_version, "librbio.so.%s" % rbio_version_major)
  231. shelltools.sym("librbio.so.%s" % rbio_version, "librbio.so")
  232. shelltools.copy("../RBio/Lib/*.a", ".")
  233. shelltools.cd("../RBio")
  234. shelltools.copy("Include/*.h", "../Include")
  235. for d in "README.txt Doc/ChangeLog Doc/License.txt".split(" "):
  236. shelltools.copy(d, "../Doc/RBio")
  237. def install():
  238. pisitools.insinto("/usr/include/%s" % get.srcNAME().lower(), "Include/*.h")
  239. pisitools.dodoc("README.txt")
  240. shelltools.copy("Doc/*", "%s/usr/share/doc/%s" % (get.installDIR(), get.srcNAME()))
  241. shelltools.cd("Lib")
  242. for l in shelltools.ls("*.so*"):
  243. pisitools.insinto("/usr/lib", l)
  244. for l in shelltools.ls("*.a"):
  245. pisitools.insinto("/usr/lib", l)