summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/compilec.py
blob: c05bf24a2d5b2e4c2a39b815cd0b6a7be1e521d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env python

import sys, os
from distutils.core import setup, Extension

assert len(sys.argv) == 1
sys.argv.append("build")

setup(name="CModule",
	  version="0.9.0",
	  description="rdiff-backup's C component",
	  ext_modules=[Extension("C", ["cmodule.c"]),
				   Extension("_librsync", ["_librsyncmodule.c"],
							 libraries=["rsync"])])

def get_libraries():
	"""Return filename of C.so and _librsync.so files"""
	build_files = os.listdir("build")
	lib_dirs = filter(lambda x: x.startswith("lib"), build_files)
	assert len(lib_dirs) == 1, "No library directory or too many"
	libdir = lib_dirs[0]
	if sys.platform == "cygwin" or os.name == "nt": libext = "dll"
	else: libext = "so"
	clib = os.path.join("build", libdir, "C." + libext)
	rsynclib = os.path.join("build", libdir, "_librsync." + libext)
	try:
		os.lstat(clib)
		os.lstat(rsynclib)
	except os.error:
		print "Library file missing"
		sys.exit(1)
	return clib, rsynclib
	
for filename in get_libraries():
	assert not os.system("mv '%s' ." % (filename,))
assert not os.system("rm -rf build")